Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed __int64 __fastcall sub_14086C5D0(ObjReadSystem::Work *a1)
- {
- int v1; // edx
- ObjReadSystem::Work *v2; // rbx
- signed int v3; // esi
- ObjectIdConvert *v4; // rdi
- int v5; // edx
- unsigned int v6; // eax
- ObjectIdConvert *v7; // r9
- unsigned int v8; // ecx
- __int64 v10; // rcx
- unsigned __int64 v11; // rax
- __int64 v12; // rdx
- __int64 v13; // rcx
- int v14; // eax
- signed __int64 v15; // rax
- int v16; // edx
- unsigned int v17; // eax
- __int64 v18; // rdx
- __int64 v19; // rcx
- __int64 v20; // rcx
- unsigned __int64 v21; // rax
- int v22; // eax
- signed __int64 v23; // rax
- signed __int64 v24; // rax
- __int64 v25; // rcx
- signed __int64 v26; // rax
- __int64 v27; // rcx
- __int64 v28; // [rsp+28h] [rbp-C0h]
- __int64 v29; // [rsp+40h] [rbp-A8h]
- int v30; // [rsp+48h] [rbp-A0h]
- __int64 v31; // [rsp+50h] [rbp-98h]
- int v32; // [rsp+58h] [rbp-90h]
- int v33; // [rsp+60h] [rbp-88h]
- void *v34; // [rsp+68h] [rbp-80h]
- void *v35; // [rsp+70h] [rbp-78h]
- char szStr; // [rsp+78h] [rbp-70h]
- char szDest[20]; // [rsp+90h] [rbp-58h]
- char szObjectName[16]; // [rsp+A8h] [rbp-40h]
- char Dest; // [rsp+B8h] [rbp-30h]
- v1 = *(_DWORD *)a1->gap30;
- v2 = a1;
- v3 = 0;
- v4 = &g_ConvertObjectIds;
- if ( v1 )
- {
- v15 = FIND_sub_14086B0E0((__int64)a1, v1);
- v13 = v15;
- if ( v15 )
- {
- _InterlockedCompareExchange((volatile signed __int32 *)(v15 + 40), 1, 0);
- _InterlockedIncrement((volatile signed __int32 *)(v15 + 32));
- }
- }
- else
- {
- v5 = a1->objectId;
- v6 = 0;
- v7 = &g_ConvertObjectIds;
- v8 = a1->objectId & 0xFFFF0000;
- while ( v7->m_ObjectIdBase != v8 )
- {
- ++v6;
- ++v7;
- if ( v6 >= 12 )
- return 0i64;
- }
- LODWORD(v28) = (unsigned __int16)v5;
- snprintf(szDest, 20i64, "%s\\%s%04x%s", v7->m_szPrefix, v7->m_szPrefix, v28, ".dat");
- sub_140574ED0(&v29, (unsigned int)v2->objectId, 0i64);
- if ( !v29 )
- {
- ObjectIdToObjectName(&Dest, 0x10ui64, v2->objectId);
- return 0i64;
- }
- v11 = FileReadManager::PreloadFile(v10, 3, szDest, v29, v30, (__int64)v2);
- v13 = v11;
- if ( v11 )
- {
- _InterlockedCompareExchange((volatile signed __int32 *)(v11 + 40), 1, 0);
- _InterlockedIncrement((volatile signed __int32 *)(v11 + 32));
- v14 = *(_DWORD *)(v11 + 116);
- }
- else
- {
- v14 = 0;
- }
- *(_DWORD *)v2->gap30 = v14;
- if ( !v14 )
- return 0i64;
- v3 = 1;
- }
- if ( v2->gap28[0] & 2 )
- {
- LABEL_32:
- if ( !v3 )
- return 1i64;
- goto LABEL_33;
- }
- v16 = *(_DWORD *)&v2->gap30[4];
- if ( v16 )
- {
- v23 = FIND_sub_14086B0E0(v13, v16);
- if ( v23 )
- {
- _InterlockedCompareExchange((volatile signed __int32 *)(v23 + 40), 1, 0);
- _InterlockedIncrement((volatile signed __int32 *)(v23 + 32));
- }
- goto LABEL_32;
- }
- v17 = 0;
- while ( v4->m_ObjectIdBase != (v2->objectId & 0xFFFF0000) )
- {
- ++v17;
- ++v4;
- if ( v17 >= 0xC )
- return 0i64;
- }
- LODWORD(v28) = (unsigned __int16)v2->objectId;
- snprintf(&szStr, 20i64, "%s\\%s%04x%s", v4->m_szPrefix, v4->m_szPrefix, v28, ".dtt");
- if ( !SanitizeFilePath(&szStr) )
- {
- *(_DWORD *)v2->gap28 |= 2u;
- goto LABEL_32;
- }
- v18 = (unsigned int)v2->objectId;
- *(_DWORD *)v2->gap28 |= 1u;
- sub_140574ED0(&v31, v18, 1i64);
- if ( v31 )
- {
- v21 = FileReadManager::PreloadFile(v19, 3, &szStr, v31, v32, (__int64)v2);
- v20 = v21;
- if ( v21 )
- {
- _InterlockedCompareExchange((volatile signed __int32 *)(v21 + 40), 1, 0);
- _InterlockedIncrement((volatile signed __int32 *)(v21 + 32));
- v22 = *(_DWORD *)(v21 + 116);
- }
- else
- {
- v22 = 0;
- }
- *(_DWORD *)&v2->gap30[4] = v22;
- if ( !v22 )
- goto LABEL_39;
- LABEL_33:
- v33 = v2->objectId;
- v34 = v2->m_pDatPtr;
- v35 = v2->m_pDatPtr2;
- if ( !(unsigned int)sub_14086C2A0(&v33, v12) )
- {
- if ( !(v2->gap28[0] & 2) )
- {
- v24 = FIND_sub_14086B0E0(v20, *(_DWORD *)&v2->gap30[4]);
- if ( v24 )
- {
- if ( *(ObjReadSystem::Work **)(v24 + 0xA8) == v2 )
- *(_QWORD *)(v24 + 0xA8) = 0i64;
- }
- sub_14086A730(v25, *(unsigned int *)&v2->gap30[4]);
- *(_DWORD *)&v2->gap30[4] = 0;
- }
- goto LABEL_39;
- }
- return 1i64;
- }
- ObjectIdToObjectName(szObjectName, 16ui64, v2->objectId);
- LABEL_39:
- v26 = FIND_sub_14086B0E0(v20, *(_DWORD *)v2->gap30);
- if ( v26 )
- {
- if ( *(ObjReadSystem::Work **)(v26 + 168) == v2 )
- *(_QWORD *)(v26 + 168) = 0i64;
- }
- sub_14086A730(v27, *(unsigned int *)v2->gap30);
- *(_DWORD *)v2->gap30 = 0;
- return 0i64;
- }
- // write access to const memory has been detected, the output may be wrong!
- signed __int64 __fastcall BannedWord::LoadBlackLists(__int64 a1, __int64 a2, int a3)
- {
- int v3; // ebx
- unsigned __int64 v4; // rax
- signed __int64 result; // rax
- v3 = a3;
- off_14147B498 = (__int64)&qword_1418F64E8;
- off_14147B490 = (__int64)&g_pGlobalWorkHeap;
- v4 = FileReadManager::PreloadFile(a1, 5, "core/coreban.dat", (__int64)&qword_1418F64E8, 0, 0i64);
- if ( v4 )
- {
- _InterlockedCompareExchange((volatile signed __int32 *)(v4 + 40), 1, 0);
- _InterlockedIncrement((volatile signed __int32 *)(v4 + 32));
- LODWORD(v4) = *(_DWORD *)(v4 + 116);
- }
- g_dword_14147B48C = v4;
- if ( (_DWORD)v4 )
- {
- dword_14147B4A0 = v3;
- dword_14147B4A8 = 1;
- dword_14147B4A4 = 0;
- result = 1i64;
- }
- else
- {
- sub_140606BE0();
- result = 0i64;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement