Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ResourceRegistry * __thiscall CATHODE::ResourceRegistry::ResourceRegistry(ResourceRegistry *this)
- {
- long *plVar1;
- int iVar2;
- char cVar3;
- bool bVar4;
- MemoryPool *pMVar5;
- long lVar6;
- long *plVar7;
- int iVar8;
- int *piVar9;
- long *local_48;
- lVar6 = ResourceDatabase::ResourceDatabase((ResourceDatabase *)this);
- *(undefined8 *)(lVar6 + 8) = 0;
- pMVar5 = MemoryManager::m_instance;
- local_48 = (long *)MemoryPool::pr_allocate(MemoryManager::m_instance,0);
- if (local_48 == (long *)0x0) {
- local_48 = (long *)0x0;
- plVar7 = *(long **)(this + 8);
- }
- else {
- lVar6 = (**(code **)(*local_48 + 0x18))(local_48);
- (**(code **)*local_48)(local_48);
- plVar7 = local_48 + 1;
- *(int *)plVar7 = 0;
- *(undefined4 *)((long)local_48 + 0xc) = 0;
- *local_48 = (long)(PTR_vtable_101f157d0 + 0x10);
- local_48[2] = lVar6;
- MemoryTracker::set_owner
- ((MemoryTracker *)&MemoryAllocation<CATHODE::ResourceRegistry::ResourceKey>::m_tracker
- ,pMVar5);
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(plVar7,0x10);
- if (bVar4) {
- *(int *)plVar7 = *(int *)plVar7 + 1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- plVar7 = *(long **)(this + 8);
- }
- if (plVar7 != (long *)0x0) {
- if ((*(int *)(plVar7 + 1) == 1) && (piVar9 = (int *)((long)plVar7 + 0xc), *piVar9 != 0)) {
- iVar2 = *(int *)((long)plVar7 + 0xc);
- if (iVar2 != 0) {
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10);
- if (bVar4) {
- *piVar9 = *piVar9 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (iVar2 != 1) {
- iVar8 = 1;
- do {
- piVar9 = (int *)(*(long *)(this + 8) + 0xc);
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10);
- if (bVar4) {
- *piVar9 = *piVar9 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- iVar8 = iVar8 + 1;
- } while (iVar8 != iVar2);
- }
- plVar7 = *(long **)(this + 8);
- }
- (**(code **)(*plVar7 + 0x40))(plVar7,0);
- plVar7 = *(long **)(this + 8);
- }
- plVar1 = plVar7 + 1;
- do {
- iVar2 = *(int *)plVar1;
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(plVar1,0x10);
- if (bVar4) {
- *(int *)plVar1 = iVar2 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (iVar2 + -1 == 0) {
- MemoryAllocationBase::release((MemoryAllocationBase *)plVar7);
- }
- *(undefined8 *)(this + 8) = 0;
- }
- if (local_48 != (long *)0x0) {
- *(long **)(this + 8) = local_48;
- plVar7 = local_48 + 1;
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(plVar7,0x10);
- if (bVar4) {
- *(int *)plVar7 = *(int *)plVar7 + 1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- }
- if (local_48 != (long *)0x0) {
- if ((*(int *)(local_48 + 1) == 1) && (piVar9 = (int *)((long)local_48 + 0xc), *piVar9 != 0)) {
- iVar2 = *(int *)((long)local_48 + 0xc);
- if (iVar2 != 0) {
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10);
- if (bVar4) {
- *piVar9 = *piVar9 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (iVar2 != 1) {
- iVar8 = 1;
- do {
- piVar9 = (int *)((long)local_48 + 0xc);
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10);
- if (bVar4) {
- *piVar9 = *piVar9 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- iVar8 = iVar8 + 1;
- } while (iVar8 != iVar2);
- }
- }
- (**(code **)(*local_48 + 0x40))(local_48,0);
- }
- plVar7 = local_48 + 1;
- do {
- iVar2 = *(int *)plVar7;
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(plVar7,0x10);
- if (bVar4) {
- *(int *)plVar7 = iVar2 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (iVar2 + -1 == 0) {
- MemoryAllocationBase::release((MemoryAllocationBase *)local_48);
- }
- }
- m_instance = this;
- return this;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement