Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed int __fastcall Aska::TriListComp::EncodeByHighWatermark(Aska::TriListComp *this, const unsigned __int16 *a2, signed __int8 *a3, unsigned __int16 *a4, unsigned int a5, unsigned int *a6)
- {
- Aska::TriListComp *v6; // r8
- const unsigned __int16 *v7; // r4
- unsigned __int16 *v8; // r7
- signed __int8 *v9; // r5
- signed int v10; // r6
- int *v11; // r1
- bool v12; // zf
- unsigned int *v13; // r0
- unsigned int *v14; // r0
- signed int v16; // r0
- Aska::TriListComp *v17; // r12
- int v18; // r1
- int v19; // r2
- unsigned __int16 *v20; // r3
- signed int v21; // r7
- unsigned __int16 v22; // r5
- unsigned __int16 v23; // r6
- int v24; // t1
- int v25; // r5
- int v26; // r7
- unsigned __int16 *v27; // r3
- signed int v28; // r6
- int v29; // r2
- int v30; // t1
- int v31; // r5
- unsigned int v32; // r6
- int v33; // r7
- int v34; // r8
- __int16 v35; // [sp+0h] [bp-80h]
- unsigned __int16 v36; // [sp+2h] [bp-7Eh]
- int (**v37)(); // [sp+4h] [bp-7Ch]
- unsigned __int64 v38; // [sp+8h] [bp-78h]
- __int64 v39; // [sp+10h] [bp-70h]
- int v40; // [sp+18h] [bp-68h]
- int v41; // [sp+1Ch] [bp-64h]
- _DWORD (__fastcall **v42)(Aska::StaticStream *__hidden); // [sp+20h] [bp-60h]
- __int64 v43; // [sp+24h] [bp-5Ch]
- __int64 v44; // [sp+2Ch] [bp-54h]
- int v45; // [sp+34h] [bp-4Ch]
- v6 = this;
- v7 = a2;
- v8 = a4;
- v9 = a3;
- v10 = 0;
- v42 = off_1FE09A0;
- v43 = 0LL;
- v44 = 0LL;
- v45 = 0;
- Aska::StaticStream::Open((Aska::StaticStream *)&v42, a3, (unsigned int)a4);
- v12 = v9 == 0;
- if ( !v9 )
- v12 = v8 == 0;
- if ( v12 )
- {
- v10 = 1;
- *(_DWORD *)a5 = 2 * (_DWORD)v7 + 2;
- }
- else
- {
- v11 = (int *)((unsigned int)v8 >> 1);
- if ( (unsigned int)v8 >> 1 >= (unsigned int)v7 + 1 )
- {
- v37 = &off_1FE0FC0;
- v38 = 0LL;
- v39 = 0LL;
- v40 = 8;
- v41 = 0;
- if ( v6 )
- {
- v16 = (signed int)v7;
- v17 = v6;
- v38 = __PAIR__((unsigned int)v7, (unsigned int)v6);
- LODWORD(v39) = v7;
- }
- else
- {
- Aska::TArray<unsigned short,false>::Resize(&v37, v7, 0);
- v17 = (Aska::TriListComp *)v38;
- v16 = v39;
- }
- if ( v16 >= 2 )
- {
- v18 = 0;
- v20 = (unsigned __int16 *)((char *)v17 + 2);
- v19 = *(unsigned __int16 *)v17;
- v21 = 1;
- v22 = *(_WORD *)v17;
- do
- {
- v24 = *v20;
- ++v20;
- v23 = v24;
- ++v21;
- v25 = v22 - v24;
- if ( v25 < 0 )
- v25 = -v25;
- if ( v25 > v18 )
- v18 = v25;
- v22 = v23;
- }
- while ( v16 != v21 );
- v26 = v18 - 1;
- if ( (unsigned int)(v18 - 1) <= 0xFFFD )
- {
- if ( v16 < 1 )
- {
- LABEL_47:
- v36 = v18;
- if ( (unsigned __int16)v18 != 0xFFFF )
- {
- v10 = 0;
- if ( ((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), unsigned __int16 *, signed int, signed int))v42[6])(
- &v42,
- &v36,
- 2,
- 1) != 1 )
- {
- LABEL_57:
- LODWORD(v39) = 0;
- goto LABEL_6;
- }
- if ( !v7 )
- {
- LABEL_55:
- *(_DWORD *)a5 = v42[3]((Aska::StaticStream *)&v42);
- v10 = 1;
- goto LABEL_57;
- }
- v31 = 0;
- v32 = 0;
- v33 = v36 - 1;
- while ( 1 )
- {
- v34 = *(unsigned __int16 *)(v38 + v31);
- v35 = v33 - v34;
- if ( ((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), __int16 *, signed int, signed int, _DWORD, int (**)()))v42[6])(
- &v42,
- &v35,
- 2,
- 1,
- *(_DWORD *)&v35,
- v37) != 1 )
- break;
- v31 += 2;
- ++v32;
- if ( v33 <= v36 + v34 )
- v33 = v36 + v34;
- if ( v32 >= (unsigned int)v7 )
- goto LABEL_55;
- }
- LABEL_56:
- v10 = 0;
- goto LABEL_57;
- }
- LABEL_44:
- v35 = -1;
- if ( ((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), __int16 *, signed int, signed int, _DWORD, int (**)()))v42[6])(
- &v42,
- &v35,
- 2,
- 1,
- *(_DWORD *)&v35,
- v37) == 1 )
- {
- v10 = 0;
- if ( (const unsigned __int16 *)((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), Aska::TriListComp *, signed int, const unsigned __int16 *))v42[6])(
- &v42,
- v6,
- 2,
- v7) != v7 )
- goto LABEL_57;
- goto LABEL_55;
- }
- goto LABEL_56;
- }
- if ( v19 <= v26 )
- {
- v27 = (unsigned __int16 *)((char *)v17 + 2);
- v28 = 1;
- do
- {
- v29 = v19 + v18;
- if ( v26 <= v29 )
- v26 = v29;
- if ( v26 >= 0x10000 )
- break;
- if ( v28 >= v16 )
- goto LABEL_47;
- v30 = *v27;
- ++v27;
- v19 = v30;
- ++v28;
- }
- while ( v30 <= v26 );
- }
- }
- }
- v36 = -1;
- goto LABEL_44;
- }
- }
- LABEL_6:
- v42 = off_1FE09A0;
- v13 = (unsigned int *)HIDWORD(v44);
- if ( !HIDWORD(v44) )
- goto LABEL_60;
- __dmb(0xBu);
- do
- v11 = (int *)__ldrex(v13);
- while ( __strex((unsigned int)v11 - 1, v13) );
- __dmb(0xBu);
- if ( v11 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_60:
- if ( (_DWORD)v44 )
- operator delete[]((void *)v44);
- if ( HIDWORD(v44) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v44), v11);
- }
- v44 = 0LL;
- v14 = (unsigned int *)HIDWORD(v43);
- if ( !HIDWORD(v43) )
- goto LABEL_61;
- __dmb(0xBu);
- do
- v11 = (int *)__ldrex(v14);
- while ( __strex((unsigned int)v11 - 1, v14) );
- __dmb(0xBu);
- if ( v11 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_61:
- if ( (_DWORD)v43 )
- operator delete[]((void *)v43);
- if ( HIDWORD(v43) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v43), v11);
- }
- LODWORD(v43) = 0;
- return v10;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement