Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __thiscall CATHODE::ResourceRegistry::initialise(ResourceRegistry *this,char *param_1)
- {
- long *plVar1;
- int iVar2;
- char cVar3;
- bool bVar4;
- MemoryPool *pMVar5;
- uint *puVar6;
- long lVar7;
- void *pvVar8;
- long *plVar9;
- int iVar10;
- int *piVar11;
- uint uVar12;
- uint *puVar13;
- uint uVar14;
- uint uVar15;
- uint uVar16;
- long *local_78;
- uint *local_70 [2];
- uint *local_60;
- int local_58;
- undefined local_54;
- uninitialise(this);
- local_54 = 0;
- CA::MemFileIn::open((MemFileIn *)local_70,param_1);
- pMVar5 = MemoryManager::m_instance;
- if (local_58 != 0) goto LAB_10180b168;
- if (local_60 < local_70[0] + 1) {
- local_58 = 1;
- puVar13 = local_70[0] + 1;
- if (local_70[0] + 1 <= local_60) goto LAB_10180ae00;
- LAB_10180ae48:
- local_58 = 1;
- puVar13 = local_70[0] + 1;
- if (local_60 < puVar13) goto LAB_10180ae5c;
- LAB_10180ae14:
- uVar16 = *local_70[0];
- }
- else {
- puVar13 = local_70[0] + 2;
- local_70[0] = local_70[0] + 1;
- if (local_60 < puVar13) goto LAB_10180ae48;
- LAB_10180ae00:
- local_70[0] = puVar13;
- puVar13 = local_70[0] + 1;
- if (puVar13 <= local_60) goto LAB_10180ae14;
- LAB_10180ae5c:
- uVar16 = 0;
- local_58 = 1;
- puVar13 = local_70[0];
- }
- local_70[0] = puVar13 + 1;
- if (local_60 < local_70[0]) {
- local_58 = 1;
- local_70[0] = puVar13;
- }
- uVar14 = uVar16 * 0xc;
- local_78 = (long *)MemoryPool::pr_allocate(MemoryManager::m_instance,uVar14);
- if (local_78 == (long *)0x0) {
- pvVar8 = (void *)0x0;
- local_78 = (long *)0x0;
- }
- else {
- lVar7 = (**(code **)(*local_78 + 0x18))(local_78);
- (**(code **)*local_78)(local_78);
- plVar9 = local_78 + 1;
- *(int *)plVar9 = 0;
- *(uint *)((long)local_78 + 0xc) = uVar14 / 0xc;
- *local_78 = (long)(PTR_vtable_101f157d0 + 0x10);
- local_78[2] = lVar7;
- MemoryTracker::set_owner
- ((MemoryTracker *)&MemoryAllocation<CATHODE::ResourceRegistry::ResourceKey>::m_tracker
- ,pMVar5);
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(plVar9,0x10);
- if (bVar4) {
- *(int *)plVar9 = *(int *)plVar9 + 1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (local_78 == (long *)0x0) {
- pvVar8 = (void *)0x0;
- }
- else {
- pvVar8 = (void *)local_78[2];
- }
- }
- __stubs::_bzero(pvVar8,(ulong)uVar14);
- plVar9 = *(long **)(this + 8);
- if (plVar9 != (long *)0x0) {
- if ((*(int *)(plVar9 + 1) == 1) && (piVar11 = (int *)((long)plVar9 + 0xc), *piVar11 != 0)) {
- iVar2 = *(int *)((long)plVar9 + 0xc);
- if (iVar2 != 0) {
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar11,0x10);
- if (bVar4) {
- *piVar11 = *piVar11 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (iVar2 != 1) {
- iVar10 = 1;
- do {
- piVar11 = (int *)(*(long *)(this + 8) + 0xc);
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar11,0x10);
- if (bVar4) {
- *piVar11 = *piVar11 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- iVar10 = iVar10 + 1;
- } while (iVar10 != iVar2);
- }
- plVar9 = *(long **)(this + 8);
- }
- (**(code **)(*plVar9 + 0x40))(plVar9,0);
- plVar9 = *(long **)(this + 8);
- }
- plVar1 = plVar9 + 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 *)plVar9);
- }
- *(undefined8 *)(this + 8) = 0;
- }
- if (local_78 != (long *)0x0) {
- *(long **)(this + 8) = local_78;
- plVar9 = local_78 + 1;
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(plVar9,0x10);
- if (bVar4) {
- *(int *)plVar9 = *(int *)plVar9 + 1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- }
- if (local_78 != (long *)0x0) {
- if ((*(int *)(local_78 + 1) == 1) && (piVar11 = (int *)((long)local_78 + 0xc), *piVar11 != 0)) {
- iVar2 = *(int *)((long)local_78 + 0xc);
- if (iVar2 != 0) {
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar11,0x10);
- if (bVar4) {
- *piVar11 = *piVar11 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (iVar2 != 1) {
- iVar10 = 1;
- do {
- piVar11 = (int *)((long)local_78 + 0xc);
- do {
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(piVar11,0x10);
- if (bVar4) {
- *piVar11 = *piVar11 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- iVar10 = iVar10 + 1;
- } while (iVar10 != iVar2);
- }
- }
- (**(code **)(*local_78 + 0x40))(local_78,0);
- }
- plVar9 = local_78 + 1;
- do {
- iVar2 = *(int *)plVar9;
- cVar3 = '\x01';
- bVar4 = (bool)ExclusiveMonitorPass(plVar9,0x10);
- if (bVar4) {
- *(int *)plVar9 = iVar2 + -1;
- cVar3 = ExclusiveMonitorsStatus();
- }
- } while (cVar3 != '\0');
- if (iVar2 + -1 == 0) {
- MemoryAllocationBase::release((MemoryAllocationBase *)local_78);
- }
- }
- if (uVar16 != 0) {
- lVar7 = 0;
- uVar12 = 0;
- uVar14 = 0;
- uVar15 = 0;
- do {
- puVar13 = local_70[0] + 1;
- if (local_60 < puVar13) {
- local_58 = 1;
- puVar13 = local_70[0];
- puVar6 = local_70[0] + 1;
- if (local_70[0] + 1 <= local_60) goto LAB_10180b114;
- LAB_10180b148:
- local_58 = 1;
- puVar13 = local_70[0] + 1;
- if (puVar13 <= local_60) goto LAB_10180b0c8;
- LAB_10180b158:
- local_58 = 1;
- }
- else {
- uVar12 = *local_70[0];
- puVar6 = local_70[0] + 2;
- local_70[0] = puVar13;
- if (local_60 < puVar6) goto LAB_10180b148;
- LAB_10180b114:
- local_70[0] = puVar6;
- uVar15 = *puVar13;
- puVar13 = local_70[0] + 1;
- if (local_60 < puVar13) goto LAB_10180b158;
- LAB_10180b0c8:
- uVar14 = *local_70[0];
- local_70[0] = puVar13;
- }
- puVar13 = (uint *)(*(long *)(*(long *)(this + 8) + 0x10) + lVar7);
- *puVar13 = uVar15;
- puVar13[1] = uVar12;
- puVar13[2] = uVar14;
- lVar7 = lVar7 + 0xc;
- } while ((ulong)uVar16 * 0xc - lVar7 != 0);
- }
- ResourceDatabase::initialise((ResourceDatabase *)this);
- LAB_10180b168:
- CA::MemFileIn::_MemFileIn((MemFileIn *)local_70);
- return;
- }
Advertisement
Advertisement
Advertisement
RAW Paste Data
Copied
Advertisement