Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed int __fastcall Aska::TriListComp::DecodeByHighWatermark(__int64 this, unsigned __int16 *a3, unsigned int a4, unsigned int a5, unsigned __int16 a6)
- {
- const signed __int8 *v5; // r6
- unsigned int v6; // r4
- int v7; // r5
- unsigned int v8; // r7
- signed int v9; // r4
- unsigned int v10; // r6
- int v11; // r5
- unsigned int v12; // r8
- unsigned int v13; // r0
- unsigned int v14; // r6
- int *v15; // r1
- unsigned int *v16; // r0
- unsigned int *v17; // r0
- unsigned __int16 v19; // [sp+2h] [bp-7Eh]
- _DWORD (__fastcall **v20)(Aska::StaticStream *__hidden); // [sp+4h] [bp-7Ch]
- __int64 v21; // [sp+8h] [bp-78h]
- __int64 v22; // [sp+10h] [bp-70h]
- int v23; // [sp+18h] [bp-68h]
- int (**v24)(); // [sp+2Ch] [bp-54h]
- __int64 v25; // [sp+30h] [bp-50h]
- __int64 v26; // [sp+38h] [bp-48h]
- int v27; // [sp+40h] [bp-40h]
- int v28; // [sp+44h] [bp-3Ch]
- v5 = (const signed __int8 *)HIDWORD(this);
- v6 = a4;
- v24 = &off_1FE0FC0;
- v25 = 0LL;
- v26 = 0LL;
- v27 = 8;
- v28 = 0;
- HIDWORD(this) = (unsigned int)a3 >> 1;
- if ( (_DWORD)this )
- {
- v25 = this;
- LODWORD(v26) = (unsigned int)a3 >> 1;
- }
- else
- {
- Aska::TArray<unsigned short,false>::Resize(&v24, HIDWORD(this), 0);
- }
- v7 = 0;
- v20 = off_1FE09A0;
- v21 = 0LL;
- v22 = 0LL;
- v23 = 0;
- Aska::StaticStream::Open((Aska::StaticStream *)&v20, v5, v6);
- v8 = v26;
- v9 = 1;
- if ( a5 == 0xFFFF )
- {
- if ( (_DWORD)v26 )
- {
- v14 = 0;
- do
- {
- v19 = *(_WORD *)(v25 + v7);
- v9 = 0;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v20, &v19, 2u, 1u) != 1 )
- break;
- ++v14;
- v7 += 2;
- v9 = 1;
- }
- while ( v14 < v8 );
- }
- }
- else if ( (_DWORD)v26 )
- {
- LOWORD(v10) = a5 - 1;
- v11 = 0;
- v12 = 0;
- v9 = 1;
- while ( 1 )
- {
- v19 = v10 - *(_WORD *)(v25 + v11);
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v20, &v19, 2u, 1u) != 1 )
- break;
- v13 = (unsigned __int16)v10;
- v11 += 2;
- ++v12;
- v10 = v19 + a5;
- if ( v13 > v10 )
- LOWORD(v10) = v13;
- if ( v12 >= v8 )
- goto LABEL_18;
- }
- v9 = 0;
- }
- LABEL_18:
- v15 = (int *)0xFFFFB888;
- v20 = off_1FE09A0;
- v16 = (unsigned int *)HIDWORD(v22);
- if ( !HIDWORD(v22) )
- goto LABEL_37;
- __dmb(0xBu);
- do
- v15 = (int *)__ldrex(v16);
- while ( __strex((unsigned int)v15 - 1, v16) );
- __dmb(0xBu);
- if ( v15 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_37:
- if ( (_DWORD)v22 )
- operator delete[]((void *)v22);
- if ( HIDWORD(v22) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v22), v15);
- }
- v22 = 0LL;
- v17 = (unsigned int *)HIDWORD(v21);
- if ( !HIDWORD(v21) )
- goto LABEL_38;
- __dmb(0xBu);
- do
- v15 = (int *)__ldrex(v17);
- while ( __strex((unsigned int)v15 - 1, v17) );
- __dmb(0xBu);
- if ( v15 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_38:
- if ( (_DWORD)v21 )
- operator delete[]((void *)v21);
- if ( HIDWORD(v21) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v21), v15);
- }
- return v9;
- }
Add Comment
Please, Sign In to add comment