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; // r7
- unsigned int v6; // r11
- int *v7; // r1
- signed int v8; // r6
- int v9; // r9
- unsigned int v10; // r8
- int v11; // r3
- unsigned __int16 v12; // r0
- int v13; // r5
- unsigned __int16 v14; // r2
- int v15; // r6
- __int16 v16; // r3
- unsigned __int16 v17; // r3
- __int16 v18; // r1
- unsigned __int16 v19; // r5
- int v20; // r0
- unsigned int v21; // r7
- int v22; // r3
- __int16 v23; // r3
- __int16 v24; // r2
- unsigned int *v25; // r0
- unsigned int *v26; // r0
- unsigned __int16 v28; // [sp+4h] [bp-8Ch]
- unsigned __int16 v29; // [sp+6h] [bp-8Ah]
- __int16 v30; // [sp+8h] [bp-88h]
- unsigned __int16 v31; // [sp+Ah] [bp-86h]
- __int16 v32; // [sp+Ch] [bp-84h]
- unsigned __int16 v33; // [sp+Eh] [bp-82h]
- unsigned __int16 v34; // [sp+10h] [bp-80h]
- unsigned __int16 v35; // [sp+12h] [bp-7Eh]
- __int16 v36; // [sp+14h] [bp-7Ch]
- unsigned __int16 v37; // [sp+16h] [bp-7Ah]
- unsigned __int16 v38; // [sp+18h] [bp-78h]
- unsigned __int16 v39; // [sp+1Ah] [bp-76h]
- unsigned __int16 v40; // [sp+1Ch] [bp-74h]
- __int16 v41; // [sp+1Eh] [bp-72h]
- unsigned __int16 v42; // [sp+20h] [bp-70h]
- unsigned __int16 v43; // [sp+22h] [bp-6Eh]
- unsigned __int16 v44; // [sp+24h] [bp-6Ch]
- unsigned __int16 v45; // [sp+26h] [bp-6Ah]
- _DWORD (__fastcall **v46)(Aska::StaticStream *__hidden); // [sp+28h] [bp-68h]
- __int64 v47; // [sp+2Ch] [bp-64h]
- void *v48[2]; // [sp+34h] [bp-5Ch]
- int v49; // [sp+3Ch] [bp-54h]
- int v50; // [sp+4Ch] [bp-44h]
- int (**v51)(); // [sp+50h] [bp-40h]
- Aska::TriListComp *v52; // [sp+54h] [bp-3Ch]
- char v53[12]; // [sp+58h] [bp-38h]
- int v54; // [sp+64h] [bp-2Ch]
- __int16 v55; // [sp+68h] [bp-28h]
- __int16 v56; // [sp+6Ah] [bp-26h]
- v5 = *(unsigned __int16 *)this;
- v51 = &off_1E27E1C;
- *(_QWORD *)&v53[4] = 0LL;
- v54 = 8;
- v55 = 0;
- v56 = 0;
- v52 = (Aska::TriListComp *)((char *)this + 2);
- v6 = ((unsigned int)a3 >> 1) - 1;
- v46 = off_1DD55AC;
- *(_QWORD *)v53 = v6;
- *(_DWORD *)&v53[4] = ((unsigned int)a3 >> 1) - 1;
- v47 = 0LL;
- *(_QWORD *)v48 = 0LL;
- v49 = 0;
- Aska::StaticStream::Open((Aska::StaticStream *)&v46, a2, a4);
- v8 = 1;
- if ( v5 == 0xFFFF )
- {
- if ( v6 )
- {
- v21 = 0;
- do
- {
- v22 = (int)v52 + 2 * v21;
- v34 = *((_WORD *)v52 + v21);
- v35 = *(_WORD *)(v22 + 2);
- v23 = *(_WORD *)(v22 + 4);
- v36 = v23;
- if ( v34 >= (unsigned int)v35 )
- {
- v21 += 3;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v46, &v34, 2u, 3u) != 3 )
- {
- LABEL_26:
- v8 = 0;
- v50 = 0;
- break;
- }
- }
- else
- {
- v24 = *((_WORD *)v52 + v21 + 3);
- v28 = v34;
- v29 = v35;
- v30 = v23;
- v31 = v34;
- v32 = v24;
- v33 = v35;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v46, &v28, 2u, 6u) != 6 )
- goto LABEL_26;
- v21 += 4;
- }
- }
- while ( v21 < v6 );
- }
- }
- else if ( v6 )
- {
- LOWORD(v9) = v5 - 1;
- v10 = 0;
- do
- {
- v11 = (int)v52 + 2 * v10;
- v12 = v9 - *((_WORD *)v52 + v10);
- v43 = v12;
- v13 = v5 + v12;
- if ( (unsigned __int16)v9 > v13 )
- LOWORD(v13) = v9;
- v14 = v13 - *(_WORD *)(v11 + 2);
- v44 = v14;
- v15 = v5 + v14;
- v16 = *(_WORD *)(v11 + 4);
- if ( (unsigned __int16)v13 > v15 )
- LOWORD(v15) = v13;
- v17 = v15 - v16;
- v45 = v17;
- v9 = v5 + v17;
- if ( (unsigned __int16)v15 > v9 )
- LOWORD(v9) = v15;
- if ( v12 >= (unsigned int)v14 )
- {
- v10 += 3;
- if ( Aska::StaticStream::Write((Aska::StaticStream *)&v46, &v43, 2u, 3u) != 3 )
- goto LABEL_26;
- }
- else
- {
- v18 = *((_WORD *)v52 + v10 + 3);
- v37 = v12;
- v38 = v14;
- v19 = v9 - v18;
- v39 = v17;
- v40 = v12;
- v41 = v9 - v18;
- v42 = v14;
- v20 = Aska::StaticStream::Write((Aska::StaticStream *)&v46, &v37, 2u, 6u);
- v7 = (int *)(v5 + v19);
- if ( (unsigned __int16)v9 <= (signed int)v7 )
- LOWORD(v9) = v5 + v19;
- if ( v20 != 6 )
- goto LABEL_26;
- v10 += 4;
- }
- }
- while ( v10 < v6 );
- v8 = 1;
- }
- v46 = off_1DD55AC;
- v25 = (unsigned int *)v48[1];
- if ( !v48[1] )
- goto LABEL_46;
- __dmb(0xBu);
- do
- v7 = (int *)__ldrex(v25);
- while ( __strex((unsigned int)v7 - 1, v25) );
- __dmb(0xBu);
- if ( v7 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_46:
- if ( v48[0] )
- operator delete[](v48[0]);
- if ( v48[1] )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)v48[1], v7);
- }
- *(_QWORD *)v48 = 0LL;
- v26 = (unsigned int *)HIDWORD(v47);
- if ( !HIDWORD(v47) )
- goto LABEL_47;
- __dmb(0xBu);
- do
- v7 = (int *)__ldrex(v26);
- while ( __strex((unsigned int)v7 - 1, v26) );
- __dmb(0xBu);
- if ( v7 == (int *)((char *)&dword_0 + 1) )
- {
- LABEL_47:
- if ( (_DWORD)v47 )
- operator delete[]((void *)v47);
- if ( HIDWORD(v47) )
- Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v47), v7);
- }
- return v8;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement