Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed int __fastcall Aska::TriListComp::DecodeBySimpleLossLessCompression(Aska::TriListComp *this, const unsigned __int16 *a2, unsigned __int16 *a3, unsigned int a4, unsigned int a5)
- {
- const signed __int8 *v5; // r6
- unsigned int v6; // r8
- unsigned int v7; // r7
- int *v8; // r1
- unsigned int v9; // r6
- signed int v10; // r8
- int v11; // r0
- unsigned int v12; // r9
- __int16 v13; // r1
- unsigned int v14; // r8
- __int16 v15; // r0
- unsigned int *v16; // r0
- unsigned int *v17; // r0
- __int16 v19; // [sp+0h] [bp-88h]
- __int16 v20; // [sp+2h] [bp-86h]
- __int16 v21; // [sp+4h] [bp-84h]
- __int16 v22; // [sp+6h] [bp-82h]
- __int16 v23; // [sp+8h] [bp-80h]
- __int16 v24; // [sp+Ah] [bp-7Eh]
- _DWORD (__fastcall **v25)(Aska::StaticStream *__hidden); // [sp+Ch] [bp-7Ch]
- __int64 v26; // [sp+10h] [bp-78h]
- void *v27[2]; // [sp+18h] [bp-70h]
- int v28; // [sp+20h] [bp-68h]
- int v29; // [sp+30h] [bp-58h]
- int (**v30)(); // [sp+34h] [bp-54h]
- __int64 v31; // [sp+38h] [bp-50h]
- __int64 v32; // [sp+40h] [bp-48h]
- int v33; // [sp+48h] [bp-40h]
- __int16 v34; // [sp+4Ch] [bp-3Ch]
- __int16 v35; // [sp+4Eh] [bp-3Ah]
- v5 = (const signed __int8 *)a2;
- v6 = a4;
- v30 = &off_1E27E1C;
- v31 = 0LL;
- v32 = 0LL;
- v33 = 8;
- v34 = 0;
- v35 = 0;
- if ( this )
- {
- LODWORD(v31) = this;
- HIDWORD(v31) = (unsigned int)a3 >> 1;
- LODWORD(v32) = (unsigned int)a3 >> 1;
- }
- else
- {
- Aska::TArray<unsigned short,false>::Resize(&v30, (unsigned int)a3 >> 1, 0);
- }
- v7 = 0;
- v25 = off_1DD55AC;
- v26 = 0LL;
- *(_QWORD *)v27 = 0LL;
- v28 = 0;
- Aska::StaticStream::Open((Aska::StaticStream *)&v25, v5, v6);
- v9 = v32;
- v10 = 1;
- if ( (_DWORD)v32 )
- {
- while ( 1 )
- {
- v11 = v31 + 2 * v7;
- v12 = *(unsigned __int16 *)(v31 + 2 * v7);
- v13 = *(_WORD *)(v11 + 4);
- v14 = *(unsigned __int16 *)(v11 + 2);
- v22 = *(_WORD *)(v31 + 2 * v7);
- v23 = v14;
- v24 = v13;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v25, &v22, 2u, 3u) != 3 )
- break;
- if ( v12 >= v14 )
- {
- v7 += 3;
- }
- else
- {
- v15 = *(_WORD *)(v31 + 2 * (v7 + 3));
- v19 = v12;
- v20 = v15;
- v21 = v14;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v25, &v19, 2u, 3u) != 3 )
- break;
- v7 += 4;
- }
- if ( v7 >= v9 )
- {
- v10 = 1;
- goto LABEL_13;
- }
- }
- v10 = 0;
- v29 = 0;
- }
- LABEL_13:
- v25 = off_1DD55AC;
- v16 = (unsigned int *)v27[1];
- if ( !v27[1] )
- goto LABEL_32;
- __dmb(0xBu);
- do
- v8 = (int *)__ldrex(v16);
- while ( __strex((unsigned int)v8 - 1, v16) );
- __dmb(0xBu);
- if ( v8 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_32:
- if ( v27[0] )
- operator delete[](v27[0]);
- if ( v27[1] )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)v27[1], v8);
- }
- *(_QWORD *)v27 = 0LL;
- v17 = (unsigned int *)HIDWORD(v26);
- if ( !HIDWORD(v26) )
- goto LABEL_33;
- __dmb(0xBu);
- do
- v8 = (int *)__ldrex(v17);
- while ( __strex((unsigned int)v8 - 1, v17) );
- __dmb(0xBu);
- if ( v8 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_33:
- if ( (_DWORD)v26 )
- operator delete[]((void *)v26);
- if ( HIDWORD(v26) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v26), v8);
- }
- return v10;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement