Code:
void __thiscall DbQuestCache__Unpack(QuestCacheEntry *this, CDataStore *msg)
{
int *v2; // ebx@1
QuestCacheEntry *_this; // edi@1
CDataStore *_msg; // esi@1
int *v6; // ebx@3
int *v8; // ebx@5
int *v10; // ebx@7
int *v12; // ebx@9
int *v14; // ebx@11
int *v16; // ebx@13
signed int v18; // ebx@15
char *v19; // edi@15
signed int v20; // [sp+14h] [bp+8h]@1
signed int v21; // [sp+14h] [bp+8h]@3
signed int v22; // [sp+14h] [bp+8h]@5
signed int v23; // [sp+14h] [bp+8h]@7
signed int v24; // [sp+14h] [bp+8h]@9
signed int v25; // [sp+14h] [bp+8h]@11
signed int v26; // [sp+14h] [bp+8h]@13
_msg = msg;
_this = this;
CDataStore__GetInt(msg, &this->Id);
CDataStore__GetInt(msg, &_this->Method);
CDataStore__GetInt(msg, &_this->Level);
CDataStore__GetInt(msg, &_this->RequiredLevel);
CDataStore__GetInt(msg, &_this->AreaIdOrSortId);
CDataStore__GetInt(msg, &_this->InfoId);
CDataStore__GetInt(msg, &_this->SuggestedPlayers);
CDataStore__GetInt(msg, &_this->FriendlyFactionID);
CDataStore__GetInt(msg, &_this->FriendlyFactionAmount);
CDataStore__GetInt(msg, &_this->HostileFactionID);
CDataStore__GetInt(msg, &_this->HostileFactionAmount);
CDataStore__GetInt(msg, &_this->NextQuestId);
CDataStore__GetInt(msg, &_this->XPId);
CDataStore__GetInt(msg, &_this->RewardMoney);
CDataStore__GetInt(msg, &_this->RewardMoneyInsteadOfXp);
CDataStore__GetInt(msg, &_this->RewardSpellId);
CDataStore__GetInt(msg, &_this->EffectOnPlayer);
CDataStore__GetInt(msg, &_this->RewardHonor);
CDataStore__GetFloat(msg, &_this->RewardHonorBonus);
CDataStore__GetInt(msg, &_this->StartingItemId);
CDataStore__GetInt(msg, &_this->Flags);
CDataStore__GetInt(msg, &_this->RewardTitleId);
CDataStore__GetInt(msg, &_this->RequiredPlayersKilled);
CDataStore__GetInt(msg, &_this->RewardTalentPoints);
CDataStore__GetInt(msg, &_this->RewardArenaPoints);
CDataStore__GetInt(msg, &_this->Unk17); // What the hell is this for?
v2 = _this->RewardItemCount;
v20 = 4;
do
{
CDataStore__GetInt(_msg, v2 - 4);
CDataStore__GetInt(_msg, v2);
++v2;
}
while ( v20-- != 1 );
v6 = _this->RewardChoiceItemCount;
v21 = 6;
do
{
CDataStore__GetInt(_msg, v6 - 6);
CDataStore__GetInt(_msg, v6);
++v6;
}
while ( v21-- != 1 );
v8 = _this->RewardReputationFaction;
v22 = 5;
do
{
CDataStore__GetInt(_msg, v8);
++v8;
}
while ( v22-- != 1 );
v10 = _this->FactionRewardID;
v23 = 5;
do
{
CDataStore__GetInt(_msg, v10);
++v10;
}
while ( v23-- != 1 );
v12 = _this->RewardReputationOverride;
v24 = 5;
do
{
CDataStore__GetInt(_msg, v12);
++v12;
}
while ( v24-- != 1 );
CDataStore__GetInt(_msg, &_this->PointMapID);
CDataStore__GetFloat(_msg, &_this->PointX);
CDataStore__GetFloat(_msg, &_this->PointY);
CDataStore__GetInt(_msg, &_this->PointOptional);
CDataStore__GetString(_msg, _this->Name, 512u);
CDataStore__GetString(_msg, _this->ObjectiveText, 3000u);
CDataStore__GetString(_msg, _this->Description, 3000u);
CDataStore__GetString(_msg, _this->EndText, 512u);
CDataStore__GetString(_msg, _this->CompletionText, 0x7FFFFFFFu);
v14 = _this->ObjectiveRequiredCount;
v25 = 4;
do
{
CDataStore__GetInt(_msg, v14 - 4);
CDataStore__GetInt(_msg, v14);
CDataStore__GetInt(_msg, v14 + 16);
CDataStore__GetInt(_msg, v14 + 20);
++v14;
}
while ( v25-- != 1 );
v16 = _this->CollectItemCount;
v26 = 6;
do
{
CDataStore__GetInt(_msg, v16 - 6);
CDataStore__GetInt(_msg, v16);
++v16;
}
while ( v26-- != 1 );
v19 = (char *)_this->ObjectiveText;
v18 = 4;
do
{
CDataStore__GetString(_msg, v19, 0x7FFFFFFFu);
v19 += 256;
--v18;
}
while ( v18 );
}