Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed int __fastcall Aska::TriListComp::DecompressTriangleList(Aska::TriListComp *this, const signed __int8 *a2, unsigned __int16 *a3, unsigned int a4, unsigned int a5)
- {
- int v5; // r6
- unsigned int v6; // r4
- unsigned int v7; // r1
- signed int v8; // r11
- int v9; // r7
- unsigned int v10; // r9
- unsigned int v11; // r8
- int v12; // r2
- unsigned __int16 v13; // r0
- unsigned int v14; // r3
- unsigned __int16 v15; // r1
- unsigned int v16; // r5
- __int16 v17; // r2
- unsigned __int16 v18; // r2
- __int16 v19; // r3
- unsigned __int16 v20; // r5
- unsigned int v21; // r0
- int v22; // r6
- unsigned int v23; // r7
- int v24; // r2
- __int16 v25; // r2
- __int16 v26; // r3
- unsigned int *v27; // r0
- unsigned int *v28; // r0
- unsigned __int16 v30; // [sp+6h] [bp-3Ah]
- unsigned __int16 v31; // [sp+8h] [bp-38h]
- __int16 v32; // [sp+Ah] [bp-36h]
- unsigned __int16 v33; // [sp+Ch] [bp-34h]
- __int16 v34; // [sp+Eh] [bp-32h]
- unsigned __int16 v35; // [sp+10h] [bp-30h]
- unsigned __int16 v36; // [sp+12h] [bp-2Eh]
- unsigned __int16 v37; // [sp+14h] [bp-2Ch]
- __int16 v38; // [sp+16h] [bp-2Ah]
- _DWORD (__fastcall **v39)(Aska::StaticStream *__hidden); // [sp+18h] [bp-28h]
- __int64 v40; // [sp+1Ch] [bp-24h]
- __int64 v41; // [sp+24h] [bp-1Ch]
- int v42; // [sp+2Ch] [bp-14h]
- int v43; // [sp+3Ch] [bp-4h]
- int (**v44)(); // [sp+40h] [bp+0h]
- __int64 v45; // [sp+44h] [bp+4h]
- __int64 v46; // [sp+4Ch] [bp+Ch]
- int v47; // [sp+54h] [bp+14h]
- __int16 v48; // [sp+58h] [bp+18h]
- __int16 v49; // [sp+5Ah] [bp+1Ah]
- v5 = *(unsigned __int16 *)this;
- v44 = &off_1FE0FC0;
- v47 = 8;
- v48 = 0;
- v49 = 0;
- v45 = (unsigned int)this + 2;
- v6 = ((unsigned int)a3 >> 1) - 1;
- v39 = off_1FE09A0;
- HIDWORD(v45) = ((unsigned int)a3 >> 1) - 1;
- v46 = v6;
- v40 = 0LL;
- v41 = 0LL;
- v42 = 0;
- Aska::StaticStream::Open((Aska::StaticStream *)&v39, a2, a4);
- v8 = 1;
- if ( v5 == 0xFFFF )
- {
- if ( v6 )
- {
- v22 = v45;
- v23 = 0;
- do
- {
- v24 = v22 + 2 * v23;
- v36 = *(_WORD *)(v22 + 2 * v23);
- v37 = *(_WORD *)(v24 + 2);
- v25 = *(_WORD *)(v24 + 4);
- v38 = v25;
- if ( v36 >= (unsigned int)v37 )
- {
- v23 += 3;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v39, &v36, 2u, 3u) != 3 )
- {
- LABEL_26:
- v43 = 0;
- v8 = 0;
- break;
- }
- }
- else
- {
- v26 = *(_WORD *)(v22 + 2 * (v23 + 3));
- v30 = v36;
- v31 = v37;
- v32 = v25;
- v33 = v36;
- v34 = v26;
- v35 = v37;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v39, &v30, 2u, 6u) != 6 )
- goto LABEL_26;
- v23 += 4;
- }
- }
- while ( v23 < v6 );
- }
- }
- else if ( v6 )
- {
- v9 = v45;
- LOWORD(v10) = v5 - 1;
- v11 = 0;
- do
- {
- v12 = v9 + 2 * v11;
- v13 = v10 - *(_WORD *)(v9 + 2 * v11);
- v36 = v13;
- v14 = v5 + v13;
- if ( (unsigned __int16)v10 > v14 )
- LOWORD(v14) = v10;
- v15 = v14 - *(_WORD *)(v12 + 2);
- v37 = v15;
- v16 = v5 + v15;
- v17 = *(_WORD *)(v12 + 4);
- if ( (unsigned __int16)v14 > v16 )
- LOWORD(v16) = v14;
- v18 = v16 - v17;
- v38 = v18;
- v10 = v5 + v18;
- if ( (unsigned __int16)v16 > v10 )
- LOWORD(v10) = v16;
- if ( v13 >= (unsigned int)v15 )
- {
- v11 += 3;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v39, &v36, 2u, 3u) != 3 )
- goto LABEL_26;
- }
- else
- {
- v19 = *(_WORD *)(v9 + 2 * (v11 + 3));
- v30 = v13;
- v31 = v15;
- v20 = v10 - v19;
- v32 = v18;
- v33 = v13;
- v34 = v10 - v19;
- v35 = v15;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v39, &v30, 2u, 6u) != 6 )
- goto LABEL_26;
- v21 = v5 + v20;
- v7 = (unsigned __int16)v10;
- v11 += 4;
- if ( (unsigned __int16)v10 > v21 )
- LOWORD(v21) = v10;
- LOWORD(v10) = v21;
- }
- }
- while ( v11 < v6 );
- v8 = 1;
- }
- v39 = off_1FE09A0;
- v27 = (unsigned int *)HIDWORD(v41);
- if ( !HIDWORD(v41) )
- goto LABEL_46;
- __dmb(0xBu);
- do
- v7 = __ldrex(v27);
- while ( __strex(v7 - 1, v27) );
- __dmb(0xBu);
- if ( v7 == 1 )
- {
- LABEL_46:
- if ( (_DWORD)v41 )
- operator delete[]((void *)v41);
- if ( HIDWORD(v41) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v41), (int *)v7);
- }
- v41 = 0LL;
- v28 = (unsigned int *)HIDWORD(v40);
- if ( !HIDWORD(v40) )
- goto LABEL_47;
- __dmb(0xBu);
- do
- v7 = __ldrex(v28);
- while ( __strex(v7 - 1, v28) );
- __dmb(0xBu);
- if ( v7 == 1 )
- {
- LABEL_47:
- if ( (_DWORD)v40 )
- operator delete[]((void *)v40);
- if ( HIDWORD(v40) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v40), (int *)v7);
- }
- return v8;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement