Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int __cdecl qsReadMFT(int hPtree, int pPTNode)
- {
- int v2; // eax@2
- int v3; // eax@5
- int rc; // eax@7
- int v5; // ebx@8
- int v6; // ecx@8
- char v7; // al@9
- int v8; // edi@11
- const void *v9; // esi@11
- int v10; // ecx@11
- int v11; // esi@11
- char *v12; // ebx@11
- __int16 v13; // ax@11
- signed int v14; // eax@11
- int v15; // ecx@11
- signed int v16; // ebx@11
- int v17; // edi@11
- int v18; // edx@12
- int v19; // esi@15
- int v20; // edx@15
- int v21; // eax@15
- int v22; // ebx@16
- signed int v23; // eax@16
- char *v24; // ebx@19
- char v25; // zf@19
- int v26; // [sp+Ch] [bp-38h]@13
- int v27; // [sp+Ch] [bp-38h]@15
- int v28; // [sp+10h] [bp-34h]@13
- int v29; // [sp+10h] [bp-34h]@15
- unsigned int v30; // [sp+18h] [bp-2Ch]@10
- int v31; // [sp+1Ch] [bp-28h]@10
- const void *v32; // [sp+20h] [bp-24h]@8
- char v33[16]; // [sp+24h] [bp-20h]@4
- unsigned int pResFSRec; // [sp+34h] [bp-10h]@7
- int v35; // [sp+38h] [bp-Ch]@4
- char *pFSRec; // [sp+3Ch] [bp-8h]@4
- int v37; // [sp+40h] [bp-4h]@7
- if ( PGEnabled )
- v2 = TKSSBase;
- else
- v2 = TKSSBase1;
- v35 = 0;
- pFSRec = &v33[v2];
- if ( PGEnabled )
- v3 = TKSSBase;
- else
- v3 = TKSSBase1;
- rc = qsReserveCache((char **)((char *)&pResFSRec + v3), 0x10u);
- v37 = rc;
- if ( !rc )
- {
- v5 = pPTNode + 42;
- *(_DWORD *)pFSRec = 8;
- v32 = (const void *)(pPTNode + 42);
- v6 = pPTNode + 42;
- do
- v7 = *(_BYTE *)v6++;
- while ( v7 );
- v31 = v6 - v5;
- v30 = (v6 - v5 + 3) & 0xFFFFFFFC;
- rc = qsCheckCache(v30);
- v37 = rc;
- if ( !rc )
- {
- v8 = pCurCache;
- qmemcpy((void *)pCurCache, v32, 4 * ((unsigned int)v31 >> 2));
- v9 = (char *)v32 + 4 * ((unsigned int)v31 >> 2);
- v10 = v31 & 3;
- qmemcpy((void *)(v8 + 4 * ((unsigned int)v31 >> 2)), v9, v10);
- v11 = (int)((char *)v9 + v10);
- pCurCache += v30;
- v12 = &pRecStart[v30];
- v13 = (signed __int16)pFSRec;
- pRecStart = v12;
- *((_DWORD *)pFSRec + 3) = v12;
- LOWORD(v11) = *(_WORD *)(pPTNode + 16);
- v14 = SELConvertToLaddr(v13, v31, (int)v12, 0, v11);
- v15 = v11;
- v16 = v14;
- v17 = v14 + *(_WORD *)(pPTNode + 14);
- if ( v17 == -1 )
- {
- LABEL_19:
- v24 = pFSRec;
- v25 = v37 == 0;
- *((_DWORD *)pFSRec + 2) = v35;
- *((_DWORD *)v24 + 1) = pRecStart;
- if ( v25 )
- v37 = qsFlushResCache(pResFSRec, v24, 0x10u);
- rc = v37;
- }
- else
- {
- v18 = v35;
- while ( 1 )
- {
- v26 = v18;
- v28 = v15;
- rc = qsCheckCache(0x16u);
- v37 = rc;
- if ( rc )
- break;
- v19 = pCurCache;
- v20 = v26 + 1;
- v27 = v28;
- *(_WORD *)pCurCache = *(_WORD *)(v17 + 111);
- v29 = v20;
- *(_WORD *)(v19 + 2) = *(_WORD *)v17;
- *(_WORD *)(v19 + 4) = *(_WORD *)(v17 + 5);
- *(_WORD *)(v19 + 6) = *(_WORD *)(v17 + 7);
- *(_WORD *)(v19 + 8) = *(_WORD *)(v17 + 79);
- *(_WORD *)(v19 + 10) = *(_WORD *)(v17 + 81);
- *(_DWORD *)(v19 + 12) = *(_DWORD *)(v17 + 97);
- *(_WORD *)(v19 + 16) = *(_WORD *)(v17 + 83);
- *(_WORD *)(v19 + 18) = *(_BYTE *)(v17 + 120);
- qsUpdatePtrs(v19 + 22);
- v15 = v27;
- LOWORD(v21) = *(_WORD *)(v17 + 23);
- v18 = v29;
- if ( (_WORD)v27 != (_WORD)v21 )
- {
- v22 = v21;
- v23 = SELConvertToLaddr(v21, v29, v21, v27, v21);
- v15 = v22;
- v18 = v29;
- v16 = v23;
- }
- v17 = v16 + *(_WORD *)(v17 + 21);
- if ( v17 == -1 )
- {
- v35 = v18;
- goto LABEL_19;
- }
- }
- }
- }
- }
- return rc;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement