[TR] "The Repopulation" Since you guys won't make a subforum. This is the best place. menu

User Tag List

Results 1 to 3 of 3
  1. #1
    BitHacker's Avatar Master Sergeant
    Reputation
    13
    Join Date
    May 2012
    Posts
    114
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [TR] "The Repopulation" Since you guys won't make a subforum. This is the best place.

    "The Repopulation" is based off of the Hero Engine. You can buy it off of Steam.

    Silver Edition is 19.99, Gold Edition 29.99 or something.

    Homepage:
    https://www.therepopulation.com/

    Current Build Notes:
    https://www.therepopulation.com/inde...-1-build-notes

    While doing some work on this game for the last few days I ran into a few information road blocks.
    I would like some help in understanding how the GOM works and how to parse it.
    Refs used so far:
    http://www.ownedcore.com/forums/mmo/...ding-info.html <-- Good thread, I wish I was apart of it in 2012. However I was in the working mans land.
    Reversing Microsoft Visual C++ - sun_kang - ???
    https://www.blackhat.com/presentatio...l_Yason-WP.pdf
    http://www.ownedcore.com/forums/mmo/...g-started.html
    http://www.ownedcore.com/forums/mmo/...gom-nodes.html <-- The offset he speaks of I'm not sure how to find it in "The Repopulation".
    The Gom has a Pointer at Offset 654h
    GOM - HEWIKI
    Node - HEWIKI
    System nodes - HEWIKI
    Javelin Interface - HEWIKI
    Archetypes - HEWIKI
    Prototypes - HEWIKI

    I think I am coming up with the vftable correctly. I hope someone can chim in with some input. I'm currently working on finding all the functions of the GOM. I heard it was similar to a hashmap.

    I found this walkthrough on hashmaps which is pretty good. I suggest you be a advanced c/c++ programmer to understand it. I understand it fine. No questions there.
    Learn C The Hard Way

    Now recreating it from memory addresses might be a bit of problem. I might need help with that.
    So, I will be requiring help in rebuilding the hashtable structure and node structure. Most likely.
    I might be able to get it on my own.

    Here is what I have found:

    Using tools you can find the GOM RTTI Information. The tool states 3 methods which I think is wrong.
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-rtti_gom-jpg

    As we go into the information we see the GOM Class layout for RTTI Information:
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-class_gom-jpg

    As we go into the first RTTI Structure which is "_RTTICompleteObjectLocator" it looks like:
    struct RTTICompleteObjectLocator
    {
    DWORD signature; //always zero ?
    DWORD offset; //offset of this vtable in the complete class
    DWORD cdOffset; //constructor displacement offset
    struct TypeDescriptor* pTypeDescriptor; //TypeDescriptor of the complete class
    struct RTTIClassHierarchyDescriptor* pClassDescriptor; //describes inheritance hierarchy
    };
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-_rtticompleteobjectlocator_capture-jpg

    signature is 0, offset is 0, cdOffset is 0, pTypeDescriptor is offset ??_R0?AVGOM@@@8, pClassDescriptor is offset ??_R3GOM@@8

    Moving onto the "RTTI Type Descriptor":
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-typedescriptor_capture-jpg
    We have a name of .?AVGOM@@ which is the class name GOM.

    Moving onto the "_RTTIClassHierarchyDescriptor":
    struct RTTIClassHierarchyDescriptor
    {
    DWORD signature; //always zero?
    DWORD attributes; //bit 0 set = multiple inheritance, bit 1 set = virtual inheritance
    DWORD numBaseClasses; //number of classes in pBaseClassArray
    struct RTTIBaseClassArray* pBaseClassArray;
    };
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-_rtticlasshierarchydescriptor_capture-jpg

    signature is 0, attributes is 0, numBaseClasses is 1, pBaseClassArray is offset ??_R2GOM@@8

    As we look at the "_RTTIBaseClassArray" which is "_RTTIBaseClassDescriptor" :
    struct RTTIBaseClassDescriptor
    {
    struct TypeDescriptor* pTypeDescriptor; //type descriptor of the class
    DWORD numContainedBases; //number of nested classes following in the Base Class Array
    struct PMD where; //pointer-to-member displacement info
    DWORD attributes; //flags, usually 0
    };
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-_rttibaseclassdescriptor_capture-jpg

    pTypeDescriptor is offset ??_R0?VGGOM@@@8, numContainedBases is 0, PMD where is ( 0, 0FFFFFFFFh, 0 ), attributes are 40h.

    Looking at the PMD:
    struct PMD
    {
    int mdisp; //member displacement
    int pdisp; //vbtable displacement
    int vdisp; //displacement inside vbtable
    };

    mdisp is 0, pdisp is 0FFFFFFFFh, vdisp is 0

    So, there is the walkthrough of the GOM RTTI.

    The thing I'm having trouble with is the GOM vftable would be @ address: 105A6E00 correct?

    While looking at the Class GOM:
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-class_gom-jpg

    We see 2 xrefs on the address 105A6E00 for the vftable:

    1. sub_1062b380+21:
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-1062b380_capture-jpg

    and

    2. sub_1062F840+2B:
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-1062f840_capture-jpg


    Now if I use address 105A6E00 as my vftable address do I use the ESI offset addresses within the xrefs? To pin point the methods and other structure data?

    Example on xref 1062B380:
    mov dword ptr [esi], offset ??_7GOM@@6B@ ; const GOM::`vftable'
    mov ecx, [esi+474h]
    mov eax, [esi+47Ch]
    mov ecx, [esi+458h]
    mov eax, [esi+460h]
    lea edi, [esi+440h]
    lea edi, [esi+428h]
    lea edi, [esi+410h]

    So, we know the vftable is within "offset ??_7GOM@@6B@" which is put into esi. Then esi is being moved around and loaded a few times withing the function.
    This is how we pin point the methods correct or other data within reclass?

    So, as I open the game and attach reclass and go to 105A6E00 I see this:
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-vftable_capture-jpg

    Looks like 50 or so functions in the GOM. Can anyone confirm?


    All GOM Functions: ( 528 total ) ( Unordered List )
    Code:
    GOM::disposeContext
    GOM::checkAllConstraintsOnFields
    GOM::checkAllConstraintsOnPrototypeOrganizer
    GOM::checkAllConstraintsOnScriptOrganizer
    GOM::checkAllConstraintsOnNamedPackageGroupOrganizer
    GOM::loadArea
    GOM::activateNodes
    GOM::modifyRootCreateAccountEntry
    GOM::lookupPlayerAccount
    GOM::lookupPlayerAccountNameByAccountID
    GOM::lookupPlayerAccountByAccountName
    GOM::lookupCharacterNameByCharacterId
    GOM::lookupCharacterByName
    GOM::changeCharacterName
    GOM::setNodeAsLoaded
    GOM::unsetNodeAsLoaded
    GOM::Cleanup
    GOM::verifyMailbox
    GOM::listMail
    GOM::VerifyNodeSerializationVersion
    GOM::initializeMemoryAnalyzer
    GOM::getDistributionPackageOfPrototype
    GOM::getNamedPackageGroupOfPrototype
    GOM::getNamedPackageGroupsOfPrototype
    GOM::getNumNamedPackageGroupsOfPrototype
    GOM::getNamedPackageGroupOfDefinition
    GOM::getNamedPackageGroupsOfDefinition
    GOM::getNumNamedPackageGroupsOfDefinition
    GOM::getNumNamedPackageGroupsOfArea
    GOM::getNamedPackageGroupOfArea
    GOM::checkMailChange
    GOM::checkNodeFieldChange
    GOM::checkDefinitionChange
    GOM::enableInMemoryAlterationUndo
    GOM::disableInMemoryAlterationUndo
    GOM::undoInMemoryAlterations
    GOM::listGUIXMLOrganizedEntries
    GOM::moveChildGUIXMLOrganization
    GOM::addChildGUIXMLOrganizationFromDB
    GOM::changeGUIXMLOrganizerName
    GOM::changeGUIXMLOrganizerDescription
    GOM::describeGUIXMLOrganizedEntry
    GOM::checkGUIXMLOrganizerChange
    GOM::verifyRootNode
    GOM::queryRootNodeParent
    GOM::queryRootNodeChildren
    GOM::queryRootNodeCharacters
    GOM::queryRootNodeAccounts
    GOM::queryRootNodeAreas
    GOM::queryRootNodes
    GOM::queryArbitraryRootNodes
    GOM::reparentRootNode
    GOM::rootNodeLoaded
    GOM::rootNodeUnloaded
    GOM::reapDeletedRootNodes
    GOM::reapSpecificRootNode
    GOM::listLoadedDeletedRoots
    GOM::applyAdjustmentToNode
    GOM::lookupClassFromScript
    GOM::lookupScriptFromClass
    GOM::setMethodConflictChecking
    GOM::lookupDefinitionName
    GOM::lookupDefinitionDescription
    GOM::lookupScriptDefName
    GOM::lookupEnumDefID
    GOM::lookupEnumDefName
    GOM::lookupClassDefID
    GOM::lookupClassDefName
    GOM::lookupFieldDefID
    GOM::getConfigVariableReference
    GOM::lookupFieldDefName
    GOM::lookupAssociationDefID
    GOM::lookupAssociationDefName
    GOM::lookupAssociationGroupDefID
    GOM::lookupAssociationGroupDefName
    GOM::lookupPrototypeID
    GOM::lookupPrototypeName
    GOM::lookupPrototypeDescription
    GOM::lookupScriptDefID
    GOM::lookupKeywordDefID
    GOM::isEnumDef
    GOM::isClassDef
    GOM::isFieldDef
    GOM::isKeywordDef
    GOM::isScriptDef
    GOM::isAssociationDef
    GOM::isAssociationGroupDef
    GOM::isPrototype
    GOM::isNamedPackageGroup
    GOM::changeDescriptionOfKeywordDef
    GOM::changeNamedPackageGroupsOfKeywordDef
    GOM::findKeywordDef
    GOM::changeDescriptionOfNamedPackageGroup
    GOM::findNamedPackageGroup
    GOM::describeNamedPackageGroup
    GOM::changeDescriptionOfEnumDef
    GOM::changeNamedPackageGroupsOfEnumDef
    GOM::findEnumDef
    GOM::addEnumDefValue
    GOM::findEnumDefValue
    GOM::listEnumDefValues
    GOM::getEnumDefValuesLength
    GOM::changeDescriptionOfFieldDef
    GOM::changeNamedPackageGroupsOfFieldDef
    GOM::changeReflectionOfFieldDef
    GOM::changeWriteStrategyOfFieldDef
    GOM::changeWatchingScriptOfFieldDef
    GOM::changePrivateStatusOfFieldDef
    GOM::describeFieldDef
    GOM::getFieldDefModifiers
    GOM::isFieldDefLightWeight
    GOM::getFieldWriteStrategy
    GOM::findFieldDef
    GOM::addFieldDefReplicationFromDB
    GOM::describeFieldDefReplication
    GOM::doesFieldHaveReplicationData
    GOM::setFieldDefReplication
    GOM::checkFieldReplicationChange
    GOM::applyFieldReplicationChange
    GOM::checkAddParentForInheritanceConflict
    GOM::removeFieldFromClassDef
    GOM::enumerateIncompatibilitiesOfClass
    GOM::areClassesCompatible
    GOM::removeParentFromClassDef
    GOM::describeClassDef
    GOM::enumerateParentsOfClass
    GOM::enumerateAncestorsOfClass
    GOM::enumerateFieldsOfThisClass
    GOM::enumerateFieldsOfClass
    GOM::findClassDef
    GOM::changeDescriptionOfClassDef
    GOM::changeArchetypeOfClassDef
    GOM::addClassDefReplicationFromDB
    GOM::addClassFieldReplicationFromDB
    GOM::addClassFieldAtomicFromDB
    GOM::setClassDefReplicationForUndo
    GOM::describeClassDefReplication
    GOM::addFieldToClassDefReplication
    GOM::removeFieldFromClassDefReplication
    GOM::addAtomicSetToClassDefReplication
    GOM::removeAtomicSetFromClassDefReplication
    GOM::changeNamedPackageGroupsOfClassDef
    GOM::checkClassReplicationChange
    GOM::checkClassFieldReplicationChange
    GOM::applyClassFieldReplicationChange
    GOM::applyClassReplicationAtomicSetChange
    GOM::changeDescriptionOfAssociationGroupDef
    GOM::changeNamedPackageGroupsOfAssociationGroupDef
    GOM::listAssociationsInAssociationGroup
    GOM::describeAssociationGroup
    GOM::changeDescriptionOfAssociationDef
    GOM::changeNamedPackageGroupsOfAssociationDef
    GOM::modifyAssociationGroupDefAddAssociationDef
    GOM::modifyAssociationGroupDefRemoveAssociationDef
    GOM::modifyAssociationGroupDefSetMutuallyExclusive
    GOM::validateHardAssociationGroup
    GOM::setHardAssociationGroup
    GOM::listAssociationDef
    GOM::createAssociationQueryObject
    GOM::queryAssociations
    GOM::queryAssociationsInList
    GOM::describeAssociation
    GOM::getAssociationSource
    GOM::getAssociationTarget
    GOM::fixCyclicHardAssociations
    GOM::changeDescriptionOfScriptDef
    GOM::changeNamedPackageGroupsOfScriptDef
    GOM::modifyScriptDefAddParent
    GOM::modifyScriptDefRemoveParent
    GOM::modifyScriptDefSetOwner
    GOM::modifyScriptDefSetTeam
    GOM::setLocalScriptDefModified
    GOM::modifyScriptDefSetModified
    GOM::getScriptDefCode
    GOM::getScriptDefRevision
    GOM::getScriptDefIntermRevision
    GOM::modifyScriptRevisionComment
    GOM::describeScriptDef
    GOM::describeScriptDefRevision
    GOM::getScriptLastRevisionNumber
    GOM::updateScriptDefRevisions
    GOM::checkRemoveScript
    GOM::whatIs
    GOM::whereUsed
    GOM::lookupHeroValueType
    GOM::lookupScriptCodeType
    GOM::lookupClassUberType
    GOM::lookupFieldType
    GOM::lookupFieldWriteStrategy
    GOM::lookupDefinitionType
    GOM::lookupDistributionPackage
    GOM::lookupNamedPackageGroupName
    GOM::lookupNamedPackageGroupID
    GOM::lookupNamedPackageGroupContents
    GOM::queryDefinitionsByType
    GOM::queryNamedPackageGroups
    GOM::stringFromVariable
    GOM::addNodeFromPrototype
    GOM::createNodeFromNode
    GOM::addNodeFromClassDef
    GOM::addNodeFromClassDefFromDB
    GOM::finalizeAddNodeFromClassDefFromDB
    GOM::enumerateIncompatibilitiesOfNodeAndClass
    GOM::doesNodeHaveClass
    GOM::getVariableReferenceFromNode
    GOM::describeNode
    GOM::setPropertyInterfaceOnNode
    GOM::getPropertyFromNode
    GOM::setPropertyOnNode
    GOM::modifyNodeAddClass
    GOM::modifyNodeRemoveClass
    GOM::modifyNodePersist
    GOM::modifyNodeSetLightweightFieldPointer
    GOM::clearLightWeightFieldsFromNode
    GOM::clearPropertyInterfaceOnNode
    GOM::modifyNodeSetWhetherReflecting
    GOM::modifyNodeSetIndestructible
    GOM::modifyNodeFieldValue
    GOM::checkRemoveNode
    GOM::queryNodes
    GOM::findParentsOfNode
    GOM::findChildrenOfNode
    GOM::findHardChildrenOfNode
    GOM::getNodeTimerSuspension
    GOM::suspendTimers
    GOM::unsuspendTimers
    GOM::AscribeNodeForStatistics
    GOM::GetNodeStatisticsAscription
    GOM::QueryNodesForStatisticsAscription
    GOM::addPrototypeFromClassDefFromDB
    GOM::finalizeAddPrototypeFromClassDefFromDB
    GOM::addPrototypeHeaderFromDB
    GOM::modifyPrototypeAddClassFromDB
    GOM::changePrototypeName
    GOM::changePrototypeDescription
    GOM::modifyPrototypeAddClass
    GOM::modifyPrototypeRemoveClass
    GOM::modifyPrototypeFieldValue
    GOM::describePrototype
    GOM::enumerateIncompatibilitiesOfPrototypeAndClass
    GOM::getVariableReferenceFromPrototype
    GOM::modifyPrototypeSetIndestructible
    GOM::removePrototype
    GOM::reinsertPrototype
    GOM::queryPrototypes
    GOM::checkPrototypeFieldChange
    GOM::applyPrototypeFieldChange
    GOM::addPrototypeToOrganization
    GOM::listProtoOrganizedEntries
    GOM::moveChildProtoOrganization
    GOM::addChildProtoOrganization
    GOM::addChildProtoOrganizationFromDB
    GOM::changeProtoOrganizerName
    GOM::changeProtoOrganizerDescription
    GOM::describeProtoOrganizedEntry
    GOM::removeProtoOrganizedEntry
    GOM::removeProtoOrganizedEntryItem
    GOM::checkPrototypeOrganizerChange
    GOM::applyPrototypeOrganizerChange
    GOM::addScriptToOrganization
    GOM::listScriptOrganizedEntries
    GOM::moveChildScriptOrganization
    GOM::addChildScriptOrganization
    GOM::addChildScriptOrganizationFromDB
    GOM::changeScriptOrganizerName
    GOM::changeScriptOrganizerDescription
    GOM::describeScriptOrganizedEntry
    GOM::removeScriptOrganizedEntry
    GOM::removeScriptOrganizedEntryItem
    GOM::checkScriptOrganizerChange
    GOM::applyScriptOrganizerChange
    GOM::addNamedPackageGroupToOrganization
    GOM::listNamedPackageGroupOrganizedEntries
    GOM::moveChildNamedPackageGroupOrganization
    GOM::addChildNamedPackageGroupOrganization
    GOM::addChildNamedPackageGroupOrganizationFromDB
    GOM::changeNamedPackageGroupOrganizerName
    GOM::changeNamedPackageGroupOrganizerDescription
    GOM::describeNamedPackageGroupOrganizedEntry
    GOM::removeNamedPackageGroupOrganizedEntry
    GOM::removeNamedPackageGroupOrganizedEntryItem
    GOM::checkNamedPackageGroupOrganizerChange
    GOM::applyNamedPackageGroupOrganizerChange
    GOM::checkChangeNamedPackageGroupsChange
    GOM::areaOrganizedIDList
    GOM::loadAreaOrganizer
    GOM::unloadAreaOrganizer
    GOM::addAreaFromDB
    GOM::addSegmentFromDB
    GOM::addMapsetFromDB
    GOM::listSegments
    GOM::listMapsets
    GOM::listMapsetsOfSegment
    GOM::getSegmentName
    GOM::getSegmentID
    GOM::getSegmentForMapset
    GOM::getMapsetName
    GOM::newSegment
    GOM::newMapset
    GOM::canAreaBeAdded
    GOM::newArea
    GOM::areaInstances
    GOM::listAllAreas
    GOM::listAreasOfMapset
    GOM::getAreaFQN
    GOM::getAreaRootID
    GOM::getAreaNumberByRoot
    GOM::addAreaToOrganization
    GOM::listAreaOrganizedEntries
    GOM::moveChildAreaOrganization
    GOM::addChildAreaOrganization
    GOM::addChildAreaOrganizationFromDB
    GOM::changeAreaOrganizerName
    GOM::changeAreaOrganizerDescription
    GOM::describeAreaOrganizedEntry
    GOM::removeAreaOrganizedEntry
    GOM::removeAreaEntryItem
    GOM::getAreaOrganizedName
    GOM::getAreaOrganizedNameAndSegment
    GOM::getAreaOrganizedID
    GOM::getAreaOrganizedDescription
    GOM::whoAreYou
    GOM::whoAreYouPlainly
    GOM::isClassUsedInNodes
    GOM::checkAddKeywordDefinition
    GOM::checkAddEnumDefinition
    GOM::checkAddFieldDefinition
    GOM::checkAddClassDefinition
    GOM::checkAddAssociationGroupDefinition
    GOM::checkAddScriptDefinition
    GOM::checkAddNamedPackageGroup
    GOM::addKeywordDefinition
    GOM::addEnumDefinition
    GOM::addFieldDefinition
    GOM::addAssociationGroupDefinition
    GOM::addNamedPackageGroup
    GOM::checkChangeKeywordDefinitionName
    GOM::checkChangeEnumDefinitionName
    GOM::checkChangeFieldDefinitionName
    GOM::checkChangeClassDefinitionName
    GOM::checkChangeAssociationDefinitionName
    GOM::checkChangeAssociationGroupDefinitionName
    GOM::checkChangeScriptDefinitionName
    GOM::checkChangeNamedPackageGroupName
    GOM::changeNamedPackageGroupName
    GOM::checkRemoveDefinition
    GOM::checkRemoveNamedPackageGroup
    GOM::removeDefinition
    GOM::removeNamedPackageGroup
    GOM::createContext
    GOM::loadGOMbyRootNode
    GOM::setAreaRoot
    GOM::changeAreaRoot
    GOM::changeAreaName
    GOM::changeAreaDescription
    GOM::changeAreaDistributionPackage
    GOM::changeAreaLastEditTime
    GOM::deleteAreaRoot
    GOM::deleteAccountEntryFromRoot
    GOM::deleteCharacterEntryFromRoot
    GOM::unloadNode
    GOM::Pump
    GOM::unloadGOM
    GOM::createMailbox
    GOM::removeMailbox
    GOM::DeserializeNodeFromStream
    GOM::changeDistributionPackageOfPrototype
    GOM::getDistributionPackageOfDefinition
    GOM::checkAreaChange
    GOM::checkNodeChange
    GOM::applyNodeFieldChange
    GOM::checkNodeAssociationChange
    GOM::persistAssociationRemoval
    GOM::persistAssociationAddition
    GOM::notifyAssociationRemoval
    GOM::notifyAssociationAddition
    GOM::addNamedPackageGroupsToDefinition
    GOM::removeNamedPackageGroupsFromDefinition
    GOM::addChildGUIXMLOrganization
    GOM::removeGUIXMLOrganizedEntry
    GOM::createRootNode
    GOM::destroyRootNode
    GOM::addKeywordDef
    GOM::addKeywordDefFromDB
    GOM::removeKeywordDef
    GOM::reinsertKeywordDef
    GOM::checkKeywordDefChange
    GOM::addNamedPackageGroupFromDB
    GOM::changeNameOfNamedPackageGroup
    GOM::reinsertNamedPackageGroup
    GOM::checkNamedPackageGroupChange
    GOM::applyNamedPackageGroupChange
    GOM::addEnumDef
    GOM::addEnumDefFromDB
    GOM::removeEnumDef
    GOM::reinsertEnumDef
    GOM::checkEnumDefChange
    GOM::reinsertEnumDefValue
    GOM::changeEnumDefValue
    GOM::removeEnumDefValue
    GOM::_addFieldDef
    GOM::addFieldDefFromDB
    GOM::removeFieldDef
    GOM::reinsertFieldDef
    GOM::checkFieldDefChange
    GOM::addFieldToClassDef
    GOM::inheritParentToClassDef
    GOM::addClassDefIncompatibility
    GOM::removeClassDefIncompatibility
    GOM::removeClassDef
    GOM::addAssociationGroupDef
    GOM::addAssociationGroupDefFromDB
    GOM::removeAssociationGroupDef
    GOM::reinsertAssociationGroupDef
    GOM::validateAssociationAdd
    GOM::removeAssociationDef
    GOM::describeAssociationDef
    GOM::checkAssociationGroupDefChange
    GOM::addAssociationFromDB
    GOM::modifyScriptDefSetDeleted
    GOM::modifyScriptDefSetCode
    GOM::describeScriptDefRevisions
    GOM::removeScriptDef
    GOM::checkScriptDefChange
    GOM::createNodeFromClassDef
    GOM::createNodeFromPrototype
    GOM::enumeratePropertiesOnNode
    GOM::removeNodeFromJavelin
    GOM::removeNodeFromMemory
    GOM::getDefIDsUsedByNode
    GOM::addPrototypeFromPrototype
    GOM::createPrototypeFromNode
    GOM::addPrototypeFromClassDef
    GOM::removePrototypesOfUberType
    GOM::checkPrototypeChange
    GOM::createChildProtoOrganization
    GOM::createChildScriptOrganization
    GOM::createChildNamedPackageGroupOrganization
    GOM::applyChangeNamedPackageGroupsChange
    GOM::createChildAreaOrganization
    GOM::checkAddAssociationDefinition
    GOM::addClassDefinition
    GOM::addAssociationDefinition
    GOM::addScriptDefinition
    GOM::changeDefinitionName
    GOM::checkAllConstraintsOnClasses
    GOM::sendMail
    GOM::changeDistributionPackageOfDefinition
    GOM::applyAreaChange
    GOM::applyDefinitionChange
    GOM::addGUIXMLToOrganization
    GOM::createChildGUIXMLOrganization
    GOM::removeGUIXMLOrganizedEntryItem
    GOM::applyGUIXMLOrganizerChange
    GOM::createKeywordDef
    GOM::changeNameOfKeywordDef
    GOM::applyKeywordDefChange
    GOM::createNamedPackageGroup
    GOM::createNewEnumDef
    GOM::changeNameOfEnumDef
    GOM::applyEnumDefChange
    GOM::changeNameOfFieldDef
    GOM::changeTypeOfFieldDef
    GOM::applyFieldDefChange
    GOM::addClassDef
    GOM::addClassDefFromDB
    GOM::reinsertClassDef
    GOM::changeNameOfClassDef
    GOM::createNewAssociationGroupDef
    GOM::changeNameOfAssociationGroupDef
    GOM::changeNameOfAssociationDef
    GOM::addAssociationDef
    GOM::addAssociationDefFromDB
    GOM::reinsertAssociationDef
    GOM::applyAssociationGroupDefChange
    GOM::checkAssociationDefChange
    GOM::applyAssociationDefChange
    GOM::addAssociation
    GOM::removeAssociation
    GOM::removeAssociations
    GOM::removeAssociationsOf
    GOM::removeAssociationByReference
    GOM::addScriptDef
    GOM::addScriptDefFromDB
    GOM::changeNameOfScriptDef
    GOM::reinsertScriptDef
    GOM::applyScriptDefChange
    GOM::whereNotUsed
    GOM::removeNode
    GOM::createPrototypeFromClassDef
    GOM::createPrototypeFromPrototype
    GOM::changePrototypeNamedPackageGroups
    GOM::addNamedPackageGroupsToPrototype
    GOM::removeNamedPackageGroupsFromPrototype
    GOM::applyPrototypeChange
    GOM::cloneHard
    GOM::cloneNodeTree
    GOM::getMail
    GOM::getNamedPackageGroupsOfArea
    GOM::addNamedPackageGroupsToArea
    GOM::removeNamedPackageGroupsFromArea
    GOM::applyNodeChange
    GOM::applyNodeAssociationChange
    GOM::createNewFieldDef
    GOM::createNewLightweightFieldDef
    GOM::createNewClassDef
    GOM::swapParentsOfClassDef
    GOM::checkClassDefChange
    GOM::applyClassDefChange
    GOM::describeClassInheritanceChain
    GOM::createNewAssociationDef
    GOM::createScriptDef
    GOM::removeMail
    GOM::applyMailChange
    GOM::describeClassDefFieldAtomicSets
    GOM::setClassDefReplication
    GOM::applyClassReplicationChange
    GOM::checkClassReplicationAtomicSetChange
    GOM::buildDefinitionStream
    GOM::checkBundleChange
    GOM::applyBundleChange
    GOM::describeClassDefFieldReplication
    GOM::checkCoordinatedMessageChange
    GOM::applyCoordinatedMessageChange
    GOM::persistToStream
    GOM::readDefinitionStream
    GOM::initializeFromStream
    GOM::HD_FIELD
    There are 528 functions that I've found so far in the Class GOM.
    Blew my 50 function theory out of the water.
    The HD_FIELD might not be a function. So, the total becomes 527 functions.
    Lookup Reference after finding the function you want to use:
    GOM- and DOM-related functions - HEWIKI


    All ID Functions: ( 4 Total ):
    Code:
    GOM::getSegmentID
    GOM::getAreaRootID
    GOM::getAreaOrganizedID
    GOM::getDefIDsUsedByNode


    All Query Functions: ( 15 Total )
    Code:
    GOM::queryRootNodeParent
    GOM::queryRootNodeChildren
    GOM::queryRootNodeCharacters
    GOM::queryRootNodeAccounts
    GOM::queryRootNodeAreas
    GOM::queryRootNodes
    GOM::queryArbitraryRootNodes
    GOM::createAssociationQueryObject
    GOM::queryAssociations
    GOM::queryAssociationsInList
    GOM::queryDefinitionsByType
    GOM::queryNamedPackageGroups
    GOM::queryNodes
    GOM::QueryNodesForStatisticsAscription
    GOM::queryPrototypes


    All SET Functions: ( 33 total )
    Code:
    GOM::setNodeAsLoaded
    GOM::unsetNodeAsLoaded
    GOM::setMethodConflictChecking
    GOM::setFieldDefReplication
    GOM::setClassDefReplicationForUndo
    GOM::addAtomicSetToClassDefReplication
    GOM::removeAtomicSetFromClassDefReplication
    GOM::applyClassReplicationAtomicSetChange
    GOM::modifyAssociationGroupDefSetMutuallyExclusive
    GOM::setHardAssociationGroup
    GOM::modifyScriptDefSetOwner
    GOM::modifyScriptDefSetTeam
    GOM::setLocalScriptDefModified
    GOM::modifyScriptDefSetModified
    GOM::setPropertyInterfaceOnNode
    GOM::setPropertyOnNode
    GOM::modifyNodeSetLightweightFieldPointer
    GOM::modifyNodeSetWhetherReflecting
    GOM::modifyNodeSetIndestructible
    GOM::modifyPrototypeSetIndestructible
    GOM::addMapsetFromDB
    GOM::listMapsets
    GOM::listMapsetsOfSegment
    GOM::getSegmentForMapset
    GOM::getMapsetName
    GOM::newMapset
    GOM::listAreasOfMapset
    GOM::setAreaRoot
    GOM::modifyScriptDefSetDeleted
    GOM::modifyScriptDefSetCode
    GOM::describeClassDefFieldAtomicSets
    GOM::setClassDefReplication
    GOM::checkClassReplicationAtomicSetChange


    All GET Functions: ( 41 total )
    Code:
    GOM::getDistributionPackageOfPrototype
    GOM::getNamedPackageGroupOfPrototype
    GOM::getNamedPackageGroupsOfPrototype
    GOM::getNumNamedPackageGroupsOfPrototype
    GOM::getNamedPackageGroupOfDefinition
    GOM::getNamedPackageGroupsOfDefinition
    GOM::getNumNamedPackageGroupsOfDefinition
    GOM::getNumNamedPackageGroupsOfArea
    GOM::getNamedPackageGroupOfArea
    GOM::getConfigVariableReference
    GOM::getEnumDefValuesLength
    GOM::getFieldDefModifiers
    GOM::getFieldWriteStrategy
    GOM::getAssociationSource
    GOM::getAssociationTarget
    GOM::getAssociationTarget
    GOM::getScriptDefCode
    GOM::getScriptDefRevision
    GOM::getScriptDefIntermRevision
    GOM::getScriptLastRevisionNumber
    GOM::getVariableReferenceFromNode
    GOM::getPropertyFromNode
    GOM::getNodeTimerSuspension
    GOM::GetNodeStatisticsAscription
    GOM::getVariableReferenceFromPrototype
    GOM::getSegmentName
    GOM::getSegmentID
    GOM::getSegmentForMapset
    GOM::getMapsetName
    GOM::getAreaFQN
    GOM::getAreaRootID
    GOM::getAreaNumberByRoot
    GOM::getAreaOrganizedName
    GOM::getAreaOrganizedNameAndSegment
    GOM::getAreaOrganizedID
    GOM::getAreaOrganizedDescription
    GOM::getDistributionPackageOfDefinition
    GOM::getDefIDsUsedByNode
    GOM::changeTypeOfFieldDef
    GOM::getMail
    GOM::getNamedPackageGroupsOfArea


    All List Functions: ( 17 Total )
    Code:
    GOM::listMail
    GOM::listGUIXMLOrganizedEntries
    GOM::listLoadedDeletedRoots
    GOM::listEnumDefValues
    GOM::listAssociationsInAssociationGroup
    GOM::listAssociationDef
    GOM::queryAssociationsInList
    GOM::listProtoOrganizedEntries
    GOM::listScriptOrganizedEntries
    GOM::listNamedPackageGroupOrganizedEntries
    GOM::areaOrganizedIDList
    GOM::listSegments
    GOM::listMapsets
    GOM::listMapsetsOfSegment
    GOM::listAllAreas
    GOM::listAreasOfMapset
    GOM::listAreaOrganizedEntries


    All Lookup Functions: ( 35 Total )
    Code:
    GOM::lookupPlayerAccount
    GOM::lookupPlayerAccountNameByAccountID
    GOM::lookupPlayerAccountByAccountName
    GOM::lookupCharacterNameByCharacterId
    GOM::lookupCharacterByName
    GOM::lookupClassFromScript
    GOM::lookupScriptFromClass
    GOM::lookupDefinitionName
    GOM::lookupDefinitionDescription
    GOM::lookupScriptDefName
    GOM::lookupEnumDefID
    GOM::lookupEnumDefName
    GOM::lookupClassDefID
    GOM::lookupClassDefName
    GOM::lookupFieldDefID
    GOM::lookupFieldDefName
    GOM::lookupAssociationDefID
    GOM::lookupAssociationDefName
    GOM::lookupAssociationGroupDefID
    GOM::lookupAssociationGroupDefName
    GOM::lookupPrototypeID
    GOM::lookupPrototypeName
    GOM::lookupPrototypeDescription
    GOM::lookupScriptDefID
    GOM::lookupKeywordDefID
    GOM::lookupHeroValueType
    GOM::lookupScriptCodeType
    GOM::lookupClassUberType
    GOM::lookupFieldType
    GOM::lookupFieldWriteStrategy
    GOM::lookupDefinitionType
    GOM::lookupDistributionPackage
    GOM::lookupNamedPackageGroupName
    GOM::lookupNamedPackageGroupID
    GOM::lookupNamedPackageGroupContents


    All Root Functions: ( 25 Total )
    Code:
    GOM::modifyRootCreateAccountEntry
    GOM::verifyRootNode
    GOM::queryRootNodeParent
    GOM::queryRootNodeChildren
    GOM::queryRootNodeCharacters
    GOM::queryRootNodeAccounts
    GOM::queryRootNodeAreas
    GOM::queryRootNodes
    GOM::queryArbitraryRootNodes
    GOM::reparentRootNode
    GOM::rootNodeLoaded
    GOM::rootNodeUnloaded
    GOM::reapDeletedRootNodes
    GOM::reapSpecificRootNode
    GOM::listLoadedDeletedRoots
    GOM::getAreaRootID
    GOM::getAreaNumberByRoot
    GOM::loadGOMbyRootNode
    GOM::setAreaRoot
    GOM::changeAreaRoot
    GOM::deleteAreaRoot
    GOM::deleteAccountEntryFromRoot
    GOM::deleteCharacterEntryFromRoot
    GOM::createRootNode
    GOM::destroyRootNode

    Create Functions: (25 Functions)
    Code:
    GOM::modifyRootCreateAccountEntry
    GOM::createAssociationQueryObject
    GOM::createNodeFromNode
    GOM::createContext
    GOM::createMailbox
    GOM::createRootNode
    GOM::createNodeFromClassDef
    GOM::createNodeFromPrototype
    GOM::createPrototypeFromNode
    GOM::createChildProtoOrganization
    GOM::createChildScriptOrganization
    GOM::createChildNamedPackageGroupOrganization
    GOM::createChildAreaOrganization
    GOM::createChildGUIXMLOrganization
    GOM::createKeywordDef
    GOM::createNamedPackageGroup
    GOM::createNewEnumDef
    GOM::createNewAssociationGroupDef
    GOM::createPrototypeFromClassDef
    GOM::createPrototypeFromPrototype
    GOM::createNewFieldDef
    GOM::createNewLightweightFieldDef
    GOM::createNewClassDef
    GOM::createNewAssociationDef
    GOM::createScriptDef

    Looking at the xref from the GOM Class above 1062B380 we see:
    Code:
    void __thiscall sub_1062B380(void *this)
    {
      void *v1; // esi@1
      int v2; // ecx@1
      int v3; // ecx@3
      void *v4; // edi@29
      void *v5; // edi@31
      void *v6; // edi@33
      void *v7; // edi@35
      int v8; // ecx@67
      int v9; // esi@75
    
      v1 = this;
      *(_DWORD *)this = &GOM::`vftable';
      sub_105B6210((int)this);
      v2 = *((_DWORD *)v1 + 285);
      if ( v2 )
        stlp_std::__node_alloc::deallocate(v2, 4 * ((*((_DWORD *)v1 + 287) - v2) >> 2));
      v3 = *((_DWORD *)v1 + 278);
      if ( v3 )
        stlp_std::__node_alloc::deallocate(v3, 4 * ((*((_DWORD *)v1 + 280) - v3) >> 2));
      if ( *((_DWORD *)v1 + 276) )
      {
        sub_10177160(*((_DWORD *)v1 + 273));
        *((_DWORD *)v1 + 274) = (char *)v1 + 1088;
        *((_DWORD *)v1 + 273) = 0;
        *((_DWORD *)v1 + 275) = (char *)v1 + 1088;
        *((_DWORD *)v1 + 276) = 0;
      }
      if ( *((_DWORD *)v1 + 270) )
      {
        sub_10158580(*((_DWORD *)v1 + 267));
        *((_DWORD *)v1 + 268) = (char *)v1 + 1064;
        *((_DWORD *)v1 + 267) = 0;
        *((_DWORD *)v1 + 269) = (char *)v1 + 1064;
        *((_DWORD *)v1 + 270) = 0;
      }
      if ( *((_DWORD *)v1 + 264) )
      {
        sub_10158580(*((_DWORD *)v1 + 261));
        *((_DWORD *)v1 + 262) = (char *)v1 + 1040;
        *((_DWORD *)v1 + 261) = 0;
        *((_DWORD *)v1 + 263) = (char *)v1 + 1040;
        *((_DWORD *)v1 + 264) = 0;
      }
      if ( *((_DWORD *)v1 + 258) )
      {
        sub_10158580(*((_DWORD *)v1 + 255));
        *((_DWORD *)v1 + 256) = (char *)v1 + 1016;
        *((_DWORD *)v1 + 255) = 0;
        *((_DWORD *)v1 + 257) = (char *)v1 + 1016;
        *((_DWORD *)v1 + 258) = 0;
      }
      if ( *((_DWORD *)v1 + 252) )
      {
        sub_10158580(*((_DWORD *)v1 + 249));
        *((_DWORD *)v1 + 250) = (char *)v1 + 992;
        *((_DWORD *)v1 + 249) = 0;
        *((_DWORD *)v1 + 251) = (char *)v1 + 992;
        *((_DWORD *)v1 + 252) = 0;
      }
      if ( *((_DWORD *)v1 + 246) )
      {
        sub_10158580(*((_DWORD *)v1 + 243));
        *((_DWORD *)v1 + 244) = (char *)v1 + 968;
        *((_DWORD *)v1 + 243) = 0;
        *((_DWORD *)v1 + 245) = (char *)v1 + 968;
        *((_DWORD *)v1 + 246) = 0;
      }
      if ( *((_DWORD *)v1 + 240) )
      {
        sub_10158580(*((_DWORD *)v1 + 237));
        *((_DWORD *)v1 + 238) = (char *)v1 + 944;
        *((_DWORD *)v1 + 237) = 0;
        *((_DWORD *)v1 + 239) = (char *)v1 + 944;
        *((_DWORD *)v1 + 240) = 0;
      }
      if ( *((_DWORD *)v1 + 227) )
      {
        sub_100A6F90(*((_DWORD *)v1 + 224));
        *((_DWORD *)v1 + 225) = (char *)v1 + 892;
        *((_DWORD *)v1 + 224) = 0;
        *((_DWORD *)v1 + 226) = (char *)v1 + 892;
        *((_DWORD *)v1 + 227) = 0;
      }
      stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>((char *)v1 + 852);
      stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>((char *)v1 + 812);
      stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>((char *)v1 + 772);
      stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>((char *)v1 + 732);
      if ( *((_DWORD *)v1 + 180) )
      {
        sub_10177160(*((_DWORD *)v1 + 177));
        *((_DWORD *)v1 + 178) = (char *)v1 + 704;
        *((_DWORD *)v1 + 177) = 0;
        *((_DWORD *)v1 + 179) = (char *)v1 + 704;
        *((_DWORD *)v1 + 180) = 0;
      }
      if ( *((_DWORD *)v1 + 174) )
      {
        sub_10177160(*((_DWORD *)v1 + 171));
        *((_DWORD *)v1 + 172) = (char *)v1 + 680;
        *((_DWORD *)v1 + 171) = 0;
        *((_DWORD *)v1 + 173) = (char *)v1 + 680;
        *((_DWORD *)v1 + 174) = 0;
      }
      if ( *((_DWORD *)v1 + 168) )
      {
        sub_10177160(*((_DWORD *)v1 + 165));
        *((_DWORD *)v1 + 166) = (char *)v1 + 656;
        *((_DWORD *)v1 + 165) = 0;
        *((_DWORD *)v1 + 167) = (char *)v1 + 656;
        *((_DWORD *)v1 + 168) = 0;
      }
      if ( *((_DWORD *)v1 + 162) )
      {
        sub_10177160(*((_DWORD *)v1 + 159));
        *((_DWORD *)v1 + 160) = (char *)v1 + 632;
        *((_DWORD *)v1 + 159) = 0;
        *((_DWORD *)v1 + 161) = (char *)v1 + 632;
        *((_DWORD *)v1 + 162) = 0;
      }
      v4 = (void *)*((_DWORD *)v1 + 157);
      if ( v4 )
      {
        sub_106A3870(v4);
        operator delete(v4);
      }
      v5 = (void *)*((_DWORD *)v1 + 154);
      if ( v5 )
      {
        sub_106A47A0(v5);
        operator delete(v5);
      }
      v6 = (void *)*((_DWORD *)v1 + 153);
      if ( v6 )
      {
        sub_106A3870(v6);
        operator delete(v6);
      }
      v7 = (void *)*((_DWORD *)v1 + 152);
      if ( v7 )
      {
        sub_106A3870(v7);
        operator delete(v7);
      }
      if ( *((_DWORD *)v1 + 147) )
      {
        sub_106450D0(*((_DWORD *)v1 + 144));
        *((_DWORD *)v1 + 145) = (char *)v1 + 572;
        *((_DWORD *)v1 + 144) = 0;
        *((_DWORD *)v1 + 146) = (char *)v1 + 572;
        *((_DWORD *)v1 + 147) = 0;
      }
      if ( *((_DWORD *)v1 + 141) )
      {
        sub_100A7040(*((_DWORD *)v1 + 138));
        *((_DWORD *)v1 + 139) = (char *)v1 + 548;
        *((_DWORD *)v1 + 138) = 0;
        *((_DWORD *)v1 + 140) = (char *)v1 + 548;
        *((_DWORD *)v1 + 141) = 0;
      }
      if ( *((_DWORD *)v1 + 135) )
      {
        sub_1067DD00(*((_DWORD *)v1 + 132));
        *((_DWORD *)v1 + 133) = (char *)v1 + 524;
        *((_DWORD *)v1 + 132) = 0;
        *((_DWORD *)v1 + 134) = (char *)v1 + 524;
        *((_DWORD *)v1 + 135) = 0;
      }
      if ( *((_DWORD *)v1 + 129) )
      {
        sub_1067DD00(*((_DWORD *)v1 + 126));
        *((_DWORD *)v1 + 127) = (char *)v1 + 500;
        *((_DWORD *)v1 + 126) = 0;
        *((_DWORD *)v1 + 128) = (char *)v1 + 500;
        *((_DWORD *)v1 + 129) = 0;
      }
      if ( *((_DWORD *)v1 + 123) )
      {
        sub_1067DD00(*((_DWORD *)v1 + 120));
        *((_DWORD *)v1 + 121) = (char *)v1 + 476;
        *((_DWORD *)v1 + 120) = 0;
        *((_DWORD *)v1 + 122) = (char *)v1 + 476;
        *((_DWORD *)v1 + 123) = 0;
      }
      if ( *((_DWORD *)v1 + 117) )
      {
        sub_100A7040(*((_DWORD *)v1 + 114));
        *((_DWORD *)v1 + 115) = (char *)v1 + 452;
        *((_DWORD *)v1 + 114) = 0;
        *((_DWORD *)v1 + 116) = (char *)v1 + 452;
        *((_DWORD *)v1 + 117) = 0;
      }
      if ( *((_DWORD *)v1 + 111) )
      {
        sub_1067DD00(*((_DWORD *)v1 + 108));
        *((_DWORD *)v1 + 109) = (char *)v1 + 428;
        *((_DWORD *)v1 + 108) = 0;
        *((_DWORD *)v1 + 110) = (char *)v1 + 428;
        *((_DWORD *)v1 + 111) = 0;
      }
      stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>((char *)v1 + 388);
      if ( *((_DWORD *)v1 + 95) )
      {
        sub_100A7040(*((_DWORD *)v1 + 92));
        *((_DWORD *)v1 + 93) = (char *)v1 + 364;
        *((_DWORD *)v1 + 92) = 0;
        *((_DWORD *)v1 + 94) = (char *)v1 + 364;
        *((_DWORD *)v1 + 95) = 0;
      }
      if ( *((_DWORD *)v1 + 89) )
      {
        sub_100A7040(*((_DWORD *)v1 + 86));
        *((_DWORD *)v1 + 87) = (char *)v1 + 340;
        *((_DWORD *)v1 + 86) = 0;
        *((_DWORD *)v1 + 88) = (char *)v1 + 340;
        *((_DWORD *)v1 + 89) = 0;
      }
      if ( *((_DWORD *)v1 + 83) )
      {
        sub_100A7040(*((_DWORD *)v1 + 80));
        *((_DWORD *)v1 + 81) = (char *)v1 + 316;
        *((_DWORD *)v1 + 80) = 0;
        *((_DWORD *)v1 + 82) = (char *)v1 + 316;
        *((_DWORD *)v1 + 83) = 0;
      }
      if ( *((_DWORD *)v1 + 77) )
      {
        sub_100A7040(*((_DWORD *)v1 + 74));
        *((_DWORD *)v1 + 75) = (char *)v1 + 292;
        *((_DWORD *)v1 + 74) = 0;
        *((_DWORD *)v1 + 76) = (char *)v1 + 292;
        *((_DWORD *)v1 + 77) = 0;
      }
      if ( *((_DWORD *)v1 + 71) )
      {
        sub_100A7040(*((_DWORD *)v1 + 68));
        *((_DWORD *)v1 + 69) = (char *)v1 + 268;
        *((_DWORD *)v1 + 68) = 0;
        *((_DWORD *)v1 + 70) = (char *)v1 + 268;
        *((_DWORD *)v1 + 71) = 0;
      }
      if ( *((_DWORD *)v1 + 65) )
      {
        sub_100A7040(*((_DWORD *)v1 + 62));
        *((_DWORD *)v1 + 63) = (char *)v1 + 244;
        *((_DWORD *)v1 + 62) = 0;
        *((_DWORD *)v1 + 64) = (char *)v1 + 244;
        *((_DWORD *)v1 + 65) = 0;
      }
      if ( *((_DWORD *)v1 + 59) )
      {
        sub_100A7040(*((_DWORD *)v1 + 56));
        *((_DWORD *)v1 + 57) = (char *)v1 + 220;
        *((_DWORD *)v1 + 56) = 0;
        *((_DWORD *)v1 + 58) = (char *)v1 + 220;
        *((_DWORD *)v1 + 59) = 0;
      }
      if ( *((_DWORD *)v1 + 53) )
      {
        sub_1067DD00(*((_DWORD *)v1 + 50));
        *((_DWORD *)v1 + 51) = (char *)v1 + 196;
        *((_DWORD *)v1 + 50) = 0;
        *((_DWORD *)v1 + 52) = (char *)v1 + 196;
        *((_DWORD *)v1 + 53) = 0;
      }
      v8 = *((_DWORD *)v1 + 48);
      if ( v8 )
        (**(void (__stdcall ***)(_DWORD))v8)(1);
      if ( *((_DWORD *)v1 + 26) )
      {
        sub_10177160(*((_DWORD *)v1 + 23));
        *((_DWORD *)v1 + 24) = (char *)v1 + 88;
        *((_DWORD *)v1 + 23) = 0;
        *((_DWORD *)v1 + 25) = (char *)v1 + 88;
        *((_DWORD *)v1 + 26) = 0;
      }
      if ( *((_DWORD *)v1 + 20) )
      {
        sub_10177160(*((_DWORD *)v1 + 17));
        *((_DWORD *)v1 + 18) = (char *)v1 + 64;
        *((_DWORD *)v1 + 17) = 0;
        *((_DWORD *)v1 + 19) = (char *)v1 + 64;
        *((_DWORD *)v1 + 20) = 0;
      }
      if ( *((_DWORD *)v1 + 14) )
      {
        sub_10177160(*((_DWORD *)v1 + 11));
        *((_DWORD *)v1 + 12) = (char *)v1 + 40;
        *((_DWORD *)v1 + 11) = 0;
        *((_DWORD *)v1 + 13) = (char *)v1 + 40;
        *((_DWORD *)v1 + 14) = 0;
      }
      v9 = (int)((char *)v1 + 12);
      if ( *(_DWORD *)(v9 + 16) )
      {
        sub_10177160(*(_DWORD *)(v9 + 4));
        *(_DWORD *)(v9 + 8) = v9;
        *(_DWORD *)(v9 + 4) = 0;
        *(_DWORD *)(v9 + 12) = v9;
        *(_DWORD *)(v9 + 16) = 0;
      }
    }
    take a look at the v1 = this; and *(_DWORD *)this = &GOM::vftable;

    We notice there is actuall another object/structure/class within v1. Lets trace it backward and see what the hell it is.
    We get two xrefs leading to sub_1062B380.
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-trace-jpg

    Lets take a look at the one in the top most memory, which is the top 1 in the window.
    Code:
    void __usercall sub_100CE090(int a1@<esi>, int a2, int a3)
    {
      size_t v3; // ebx@1
      char v4; // al@6
      char v5; // al@17
      int v6; // eax@19
      char v7; // al@24
      int v8; // eax@25
      int v9; // eax@25
      int v10; // eax@25
      size_t v11; // eax@28
      unsigned int v12; // esi@28
      size_t v13; // edi@28
      int v14; // eax@28
      int v15; // ebx@28
      int v16; // eax@28
      void *v17; // eax@28
      int v18; // eax@28
      const void *v19; // esi@32
      int v20; // eax@33
      int v21; // eax@33
      size_t v22; // esi@33
      void *v23; // ebx@49
      char v24; // al@66
      char v25; // al@72
      char v26; // bl@73
      int v27; // esi@73
      int v28; // eax@73
      int v29; // eax@73
      int v30; // eax@73
      int v31; // eax@73
      int v32; // eax@73
      int v33; // eax@73
      char *v34; // ecx@73
      char v35; // al@79
      char v36; // al@85
      char v37; // al@91
      char v38; // al@97
      int v39; // esi@100
      __int64 v40; // ST3C_8@100
      int v41; // edi@100
      __int64 v42; // ST34_8@100
      int v43; // ebx@100
      int v44; // eax@100
      int v45; // eax@100
      int v46; // eax@100
      int v47; // eax@100
      int v48; // eax@100
      int v49; // eax@100
      int v50; // eax@100
      int v51; // eax@100
      int v52; // eax@100
      int v53; // eax@100
      int v54; // eax@100
      int v55; // eax@100
      char v56; // al@106
      char v57; // al@113
      char v58; // ST44_1@119
      int v59; // esi@125
      int v60; // edi@125
      int v61; // eax@125
      int v62; // eax@125
      int v63; // eax@125
      int v64; // eax@125
      int v65; // eax@125
      int v66; // eax@125
      __int64 v67; // [sp-8h] [bp-77Ch]@7
      char v68; // [sp+0h] [bp-774h]@0
      char v69; // [sp+8h] [bp-76Ch]@25
      char v70; // [sp+30h] [bp-744h]@28
      int v71; // [sp+58h] [bp-71Ch]@25
      int v72; // [sp+80h] [bp-6F4h]@100
      char v73; // [sp+A8h] [bp-6CCh]@125
      char v74; // [sp+D0h] [bp-6A4h]@100
      char v75; // [sp+F8h] [bp-67Ch]@125
      int v76; // [sp+120h] [bp-654h]@25
      char v77; // [sp+148h] [bp-62Ch]@125
      char v78; // [sp+170h] [bp-604h]@100
      int v79; // [sp+198h] [bp-5DCh]@125
      char v80; // [sp+1C0h] [bp-5B4h]@100
      int v81; // [sp+1E8h] [bp-58Ch]@125
      char v82; // [sp+210h] [bp-564h]@73
      char v83; // [sp+238h] [bp-53Ch]@125
      int v84; // [sp+260h] [bp-514h]@73
      int v85; // [sp+288h] [bp-4ECh]@125
      int v86; // [sp+2B0h] [bp-4C4h]@100
      char v87; // [sp+2D8h] [bp-49Ch]@125
      int v88; // [sp+300h] [bp-474h]@100
      char v89; // [sp+328h] [bp-44Ch]@100
      int v90; // [sp+350h] [bp-424h]@100
      char v91; // [sp+378h] [bp-3FCh]@100
      int v92; // [sp+3A0h] [bp-3D4h]@100
      char v93; // [sp+3C8h] [bp-3ACh]@100
      char v94; // [sp+3F0h] [bp-384h]@73
      char v95; // [sp+418h] [bp-35Ch]@100
      int v96; // [sp+440h] [bp-334h]@73
      char v97; // [sp+468h] [bp-30Ch]@100
      char v98; // [sp+490h] [bp-2E4h]@73
      int v99; // [sp+4B8h] [bp-2BCh]@100
      int v100; // [sp+4E0h] [bp-294h]@73
      int v101; // [sp+508h] [bp-26Ch]@100
      int v102; // [sp+530h] [bp-244h]@28
      char v103; // [sp+558h] [bp-21Ch]@100
      int v104; // [sp+580h] [bp-1F4h]@73
      char v105; // [sp+5A8h] [bp-1CCh]@32
      char v106; // [sp+5D4h] [bp-1A0h]@33
      int v107; // [sp+5FCh] [bp-178h]@25
      char v108; // [sp+624h] [bp-150h]@33
      char v109; // [sp+64Ch] [bp-128h]@25
      char v110; // [sp+6FCh] [bp-78h]@30
      int v111; // [sp+700h] [bp-74h]@19
      char v112; // [sp+728h] [bp-4Ch]@43
      int v113; // [sp+730h] [bp-44h]@31
      int v114; // [sp+734h] [bp-40h]@31
      int v115; // [sp+738h] [bp-3Ch]@43
      void *v116; // [sp+73Ch] [bp-38h]@32
      int v117; // [sp+740h] [bp-34h]@108
      int v118; // [sp+744h] [bp-30h]@74
      size_t v119; // [sp+748h] [bp-2Ch]@32
      int v120; // [sp+74Ch] [bp-28h]@12
      int v121; // [sp+750h] [bp-24h]@1
      size_t v122; // [sp+754h] [bp-20h]@26
      int v123; // [sp+758h] [bp-1Ch]@27
      char v124; // [sp+75Dh] [bp-17h]@19
      char v125; // [sp+75Eh] [bp-16h]@33
      char v126; // [sp+75Fh] [bp-15h]@33
      size_t v127; // [sp+760h] [bp-14h]@27
      size_t v128; // [sp+764h] [bp-10h]@1
      int v129; // [sp+770h] [bp-4h]@19
    
      v3 = 0;
      v128 = 0;
      initializeReceivedMsg(a2, 0);
      if ( receivedMsgGetInt32(&v121, 32) != 1 )
      {
        if ( dword_10B9AB64 || (unsigned __int8)sub_10002540() )
        {
          if ( sub_10002730() )
          {
            if ( sub_10002750() <= 10 )
            {
              v4 = getLastError();
              sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v4);
            }
          }
        }
        return;
      }
      HIDWORD(v67) = a1;
      if ( v121 > 411 )
      {
        if ( v121 == 429 )
          goto LABEL_12;
        if ( v121 == 517 )
        {
          if ( receivedMsgGetInt32(&v118, 32) == 1 )
          {
            if ( receivedMsgGetString(&v122) == 1 )
            {
              if ( receivedMsgGetUInt32(&v128, 32) == 1 )
              {
                if ( receivedMsgGetUInt32(&v123, 32) == 1 )
                {
                  if ( receivedMsgGetInt32(&v127, 32) != 1 )
                    v127 = 0;
                  stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
                    &v109,
                    16,
                    1);
                  v129 = 0;
                  v39 = sub_106465C0((unsigned int)&v91, v127);
                  LODWORD(v40) = v123;
                  LOBYTE(v129) = 1;
                  v41 = sub_10646630(&v93, v40);
                  LODWORD(v42) = v128;
                  LOBYTE(v129) = 2;
                  v43 = sub_10646630(&v95, v42);
                  LOBYTE(v129) = 3;
                  v120 = sub_106465C0((unsigned int)&v97, v118);
                  LOBYTE(v129) = 4;
                  v44 = sub_100093E0((int)&v99, (size_t)L"ORGANIZERMSG ", a3);
                  LOBYTE(v129) = 5;
                  v45 = sub_10006520((int)&v101, v44, (size_t)L"COMPILEERRORS ");
                  LOBYTE(v129) = 6;
                  v46 = sub_10005ED0(&v103, v45, v120);
                  LOBYTE(v129) = 7;
                  v47 = sub_10006520((int)&v86, v46, (size_t)L" ");
                  LOBYTE(v129) = 8;
                  v48 = sub_10005ED0(&v78, v47, v43);
                  LOBYTE(v129) = 9;
                  v49 = sub_10006520((int)&v88, v48, (size_t)L" ");
                  LOBYTE(v129) = 10;
                  v50 = sub_10005ED0(&v74, v49, v41);
                  LOBYTE(v129) = 11;
                  v51 = sub_10006520((int)&v90, v50, (size_t)L" ");
                  LOBYTE(v129) = 12;
                  v52 = sub_10005ED0(&v80, v51, v39);
                  LOBYTE(v129) = 13;
                  v53 = sub_10006520((int)&v92, v52, (size_t)L" ");
                  LOBYTE(v129) = 14;
                  v54 = sub_10006520((int)&v72, v53, v122);
                  LOBYTE(v129) = 15;
                  sub_10010DD0(&v109, v54);
                  LOBYTE(v129) = 14;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v72);
                  LOBYTE(v129) = 13;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v92);
                  LOBYTE(v129) = 12;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v80);
                  LOBYTE(v129) = 11;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v90);
                  LOBYTE(v129) = 10;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v74);
                  LOBYTE(v129) = 9;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v88);
                  LOBYTE(v129) = 8;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v78);
                  LOBYTE(v129) = 7;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v86);
                  LOBYTE(v129) = 6;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v103);
                  LOBYTE(v129) = 5;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v101);
                  LOBYTE(v129) = 4;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v99);
                  LOBYTE(v129) = 3;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v97);
                  LOBYTE(v129) = 2;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v95);
                  LOBYTE(v129) = 1;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v93);
                  LOBYTE(v129) = 0;
                  stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v91);
                  v55 = stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::str(
                          &v109,
                          &v89);
                  LOBYTE(v129) = 16;
                  sub_100F7B70(v55);
                  LOBYTE(v129) = 0;
                  v34 = &v89;
                  goto LABEL_127;
                }
                if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
                {
                  v38 = getLastError();
                  sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v38);
                }
              }
              else if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
              {
                v37 = getLastError();
                sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v37);
              }
            }
            else if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
            {
              v36 = getLastError();
              sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v36);
            }
          }
          else if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
          {
            v35 = getLastError();
            sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v35);
          }
        }
        else
        {
          if ( v121 != 611 )
          {
    LABEL_56:
            if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
              sub_10003480(10, 0, -1, (int)L"System", L"Unknown message type from Compiler Server: %d.", v121);
            return;
          }
          if ( receivedMsgGetInt32(&v123, 32) == 1 )
          {
            if ( receivedMsgGetString(&v127) == 1 )
            {
              stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
                &v109,
                16,
                1);
              v26 = 17;
              v129 = 17;
              v27 = sub_106465C0((unsigned int)&v82, v123);
              LOBYTE(v129) = 18;
              v28 = sub_100093E0((int)&v96, (size_t)L"ORGANIZERMSG ", a3);
              LOBYTE(v129) = 19;
              v29 = sub_10006520((int)&v104, v28, (size_t)L"COMPILERESULTS ");
              LOBYTE(v129) = 20;
              v30 = sub_10005ED0(&v98, v29, v27);
              LOBYTE(v129) = 21;
              v31 = sub_10006520((int)&v84, v30, (size_t)L" ");
              LOBYTE(v129) = 22;
              v32 = sub_10006520((int)&v100, v31, v127);
              LOBYTE(v129) = 23;
              sub_10010DD0(&v109, v32);
              LOBYTE(v129) = 22;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v100);
              LOBYTE(v129) = 21;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v84);
              LOBYTE(v129) = 20;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v98);
              LOBYTE(v129) = 19;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v104);
              LOBYTE(v129) = 18;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v96);
              LOBYTE(v129) = 17;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v82);
              v33 = stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::str(
                      &v109,
                      &v94);
              LOBYTE(v129) = 24;
              sub_100F7B70(v33);
              v34 = &v94;
    LABEL_126:
              LOBYTE(v129) = v26;
    LABEL_127:
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(v34);
              v129 = -1;
              stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::`vbase destructor(&v109);
              return;
            }
            if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
            {
              v25 = getLastError();
              sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v25);
            }
          }
          else if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
          {
            v24 = getLastError();
            sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v24);
          }
        }
      }
      else
      {
        if ( v121 != 411 )
        {
          if ( v121 == 302 )
          {
            if ( receivedMsgGetInt32(&v122, 32) == 1 && receivedMsgGetBytes(&v123, &v127) == 1 )
            {
              v11 = sub_1052CE60(v123, v127, &v128);
              v12 = v128;
              v13 = v11;
              v14 = sub_100093E0((int)&v102, (size_t)L"HSE2 ", a3);
              v129 = 34;
              sub_10006520((int)&v111, v14, (size_t)L"_DECL ");
              LOBYTE(v129) = 36;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v102);
              v15 = stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::size(&v111);
              v16 = stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::size(&v111);
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::resize(
                &v111,
                (v12 >> 1) + v16);
              v17 = (void *)stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::operator[](&v111);
              memcpy(v17, (const void *)v15, v13);
              sub_1052D520(v13);
              stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
                &v109,
                16,
                1);
              LOBYTE(v129) = 37;
              sub_10010DD0(&v109, &v111);
              v18 = stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::str(
                      &v109,
                      &v70);
              LOBYTE(v129) = 38;
              sub_100F7B70(v18);
              LOBYTE(v129) = 37;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v70);
              LOBYTE(v129) = 36;
              stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::`vbase destructor(&v109);
    LABEL_29:
              v129 = -1;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v111);
              return;
            }
          }
          else
          {
            if ( v121 != 404 )
            {
              if ( v121 == 409 )
              {
    LABEL_12:
                if ( receivedMsgGetInt32(&v120, 32) != 1 )
                {
                  if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
                  {
                    v5 = getLastError();
                    sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v5);
                  }
                  return;
                }
                if ( receivedMsgGetUInt32(&v127, 32) != 1 )
                {
                  if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
                  {
                    v56 = getLastError();
                    sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v56);
                  }
                  return;
                }
                if ( v121 == 429 )
                {
                  v117 = 0;
                  v118 = 0;
                  if ( receivedMsgGetUInt64(&v117, 64) != 1 )
                  {
                    if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
                    {
                      v57 = getLastError();
                      sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v57);
                    }
                    return;
                  }
                  v128 = 0;
                  if ( receivedMsgGetBytes(&v122, &v128) != 1 )
                    goto LABEL_115;
                  if ( (signed int)v128 > 0 && (unsigned __int8)sub_10003710(a3, L"CLIENT") && v127 > 1 )
                    sub_100A23A0(dword_10BCD048, v122, v128);
                }
                stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
                  &v109,
                  16,
                  1);
                LODWORD(v67) = v127;
                v26 = 25;
                v129 = 25;
                v59 = sub_10646630(&v75, v67);
                LOBYTE(v129) = 26;
                v60 = sub_106465C0((unsigned int)&v77, v120);
                LOBYTE(v129) = 27;
                v61 = sub_100093E0((int)&v79, (size_t)L"ORGANIZERMSG ", a3);
                LOBYTE(v129) = 28;
                v62 = sub_10006520((int)&v81, v61, (size_t)L"SUBMITSUCCEEDED ");
                LOBYTE(v129) = 29;
                v63 = sub_10005ED0(&v83, v62, v60);
                LOBYTE(v129) = 30;
                v64 = sub_10006520((int)&v85, v63, (size_t)L" ");
                LOBYTE(v129) = 31;
                v65 = sub_10005ED0(&v87, v64, v59);
                LOBYTE(v129) = 32;
                sub_10010DD0(&v109, v65);
                LOBYTE(v129) = 31;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v87);
                LOBYTE(v129) = 30;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v85);
                LOBYTE(v129) = 29;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v83);
                LOBYTE(v129) = 28;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v81);
                LOBYTE(v129) = 27;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v79);
                LOBYTE(v129) = 26;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v77);
                LOBYTE(v129) = 25;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v75);
                v66 = stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::str(
                        &v109,
                        &v73);
                LOBYTE(v129) = 33;
                sub_100F7B70(v66);
                v34 = &v73;
                goto LABEL_126;
              }
              goto LABEL_56;
            }
            if ( receivedMsgGetString(&v128) == 1 )
            {
              v6 = stlp_std::allocator<wchar_t>::allocator<wchar_t>(&v124);
              v129 = 39;
              stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
                &v111,
                v128,
                v6);
              LOBYTE(v129) = 41;
              stlp_std::allocator<wchar_t>::~allocator<wchar_t>(&v124);
              if ( receivedMsgGetString(&v128) == 1 )
              {
                v8 = sub_100093E0((int)&v71, (size_t)L"HSE2 FIND_DEF ", (int)&v111);
                LOBYTE(v129) = 42;
                v9 = sub_10006520((int)&v76, v8, (size_t)L"\t");
                LOBYTE(v129) = 43;
                sub_10006520((int)&v107, v9, v128);
                LOBYTE(v129) = 45;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v76);
                LOBYTE(v129) = 46;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v71);
                stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
                  &v109,
                  16,
                  1);
                LOBYTE(v129) = 47;
                sub_10010DD0(&v109, &v107);
                v10 = stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::str(
                        &v109,
                        &v69);
                LOBYTE(v129) = 48;
                sub_100F7B70(v10);
                LOBYTE(v129) = 47;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v69);
                LOBYTE(v129) = 46;
                stlp_std::basic_ostringstream<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::`vbase destructor(&v109);
                LOBYTE(v129) = 41;
                stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v107);
              }
              else if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
              {
                v7 = getLastError();
                sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v7);
              }
              goto LABEL_29;
            }
          }
    LABEL_115:
          if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
          {
            v58 = getLastError();
            sub_10003480(10, 0, -1, (int)L"System", L"FireStormAPI Error: %s", v58);
          }
          return;
        }
        if ( receivedMsgGetInt32(&v110, 32) != 1 || receivedMsgGetBytes(&v114, &v113) != 1 )
          goto LABEL_115;
        v19 = (const void *)sub_1052CE60(v114, v113, &v119);
        sub_100D3C00(v119);
        v129 = 49;
        memcpy(v116, v19, v119);
        sub_1052D520(v19);
        sub_100D41B0(&v116);
        LOBYTE(v129) = 50;
        sub_10647620(&v105);
        LOBYTE(v129) = 51;
        v122 = (size_t)operator new(0x488u);
        if ( v122 )
        {
          v20 = stlp_std::allocator<wchar_t>::allocator<wchar_t>(&v126);
          v128 = 1;
          LOBYTE(v129) = 53;
          stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
            &v106,
            &word_108E5944,
            v20);
          v21 = stlp_std::allocator<wchar_t>::allocator<wchar_t>(&v125);
          v129 = 55;
          v128 = 7;
          stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(
            &v108,
            &word_108E5944,
            v21);
          v3 = 15;
          v129 = 56;
          v128 = 15;
          v22 = sub_1062F840(0, &v108, &v106);
        }
        else
        {
          v22 = 0;
        }
        v127 = v22;
        v129 = 62;
        if ( v3 & 8 )
        {
          v3 &= 0xFFFFFFF7;
          v128 = v3;
          stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v108);
        }
        if ( v3 & 4 )
        {
          v3 &= 0xFFFFFFFB;
          stlp_std::allocator<wchar_t>::~allocator<wchar_t>(&v125);
        }
        LOBYTE(v129) = 64;
        if ( v3 & 2 )
        {
          v3 &= 0xFFFFFFFD;
          v128 = v3;
          stlp_std::basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>::~basic_string<wchar_t,stlp_std::char_traits<wchar_t>,stlp_std::allocator<wchar_t>>(&v106);
        }
        LOBYTE(v129) = 65;
        if ( v3 & 1 )
          stlp_std::allocator<wchar_t>::~allocator<wchar_t>(&v126);
        sub_10639EE0(&v115, &v112, 0);
        if ( v115 == dword_10C0253C )
        {
          v23 = dword_10BCD74C;
          if ( dword_10BCD74C )
          {
            sub_1062B380(dword_10BCD74C);
            operator delete(v23);
          }
          v127 = 0;
          dword_10BCD74C = (void *)v22;
        }
        else if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
        {
          sub_10003480(10, 0, -1, (int)L"System", L"failed to deserialize server DOM", v68);
        }
        sub_100D2830(&v127);
        LOBYTE(v129) = 50;
        sub_10647C20(&v112);
        LOBYTE(v129) = 49;
        sub_100A07D0(&v105);
        v129 = -1;
        sub_103A2DF0(&v116);
      }
    }
    We end up here: sub_1062B380(dword_10BCD74C); while tracing backward.


    We notice that this is probably the DOM because of this if statement:
    Code:
        if ( v115 == dword_10C0253C )
        {
          v23 = dword_10BCD74C;
          if ( dword_10BCD74C )
          {
            sub_1062B380(dword_10BCD74C);
            operator delete(v23);
          }
          v127 = 0;
          dword_10BCD74C = (void *)v22;
        }
        else if ( (dword_10B9AB64 || (unsigned __int8)sub_10002540()) && sub_10002730() && sub_10002750() <= 10 )
        {
          sub_10003480(10, 0, -1, (int)L"System", L"failed to deserialize server DOM", v68);
        }

    dword_10C0253C most likely DOM vftable: ( I found bonez for the character inside )
    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.-dom-jpg


    I think I'm understanding the GOM and DOM now. I just need to figure out its data structure and parse through it now. More studying

    I'm hoping someone will join me soon

    Feel free to post some more references I haven't looked at above. Any information helps. Thanks.

    Kind Regards,
    -BitHacker
    Last edited by BitHacker; 05-21-2015 at 01:07 PM.

    [TR] &quot;The Repopulation&quot; Since you guys won't make a subforum. This is the best place.
  2. #2
    hackerlol's Avatar Admin(kind of) ShoutBox Dweller
    Authenticator enabled
    Reputation
    1028
    Join Date
    Oct 2008
    Posts
    1,017
    Thanks G/R
    1191/297
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    I read your post on the other thread. So this is similar to SWG?
    I loves SWG. Crafting system...player housing etc.

    Will have a look...

  3. #3
    Confucius's Avatar Panda of Worlds The Idiot

    CoreCoins Purchaser Authenticator enabled
    Reputation
    1389
    Join Date
    Oct 2007
    Posts
    2,591
    Thanks G/R
    267/283
    Trade Feedback
    7 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by hackerlol View Post
    I read your post on the other thread. So this is similar to SWG?
    I loves SWG. Crafting system...player housing etc.

    Will have a look...
    It's basically like SWG 2.0 but without the star wars aspect. I will probably try it out sometime, will probably wait until it's no longer in alpha though.

Similar Threads

  1. What do you guys use for making custom models?
    By Catface in forum WoW ME Questions and Requests
    Replies: 4
    Last Post: 08-28-2008, 03:25 PM
  2. Zangarmarsh, the best place for herbalists (300-400g+/hour)
    By gilbaron in forum World of Warcraft Guides
    Replies: 1
    Last Post: 06-16-2008, 12:47 PM
  3. Where Is the Best Place To Sell Gold
    By Captin_55 in forum World of Warcraft General
    Replies: 1
    Last Post: 02-06-2008, 03:28 PM
  4. Where can I sell my account now that Ebay isint the best place anymore
    By Keeper in forum World of Warcraft General
    Replies: 4
    Last Post: 08-09-2007, 12:47 PM
  5. Where is the best place to sell an account?
    By kakaio in forum Community Chat
    Replies: 1
    Last Post: 01-21-2007, 06:05 PM
All times are GMT -5. The time now is 05:44 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search