Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const unsigned __int16 *__fastcall Aska::IdxBufComp::GenerateCompressedIndices(Aska::IdxBufComp *this, const unsigned __int16 *a2, unsigned int a3, unsigned __int8 *a4, unsigned int a5, unsigned int *a6)
- {
- Aska::IdxBufComp *v6; // r5
- unsigned __int8 *v7; // r4
- const unsigned __int16 *v8; // r6
- unsigned __int8 *v9; // r7
- Aska::BitStreamWriter *v10; // r0
- signed int v11; // r9
- unsigned int v12; // r7
- unsigned int v13; // r11
- unsigned int v14; // r10
- int v15; // r1
- signed int v16; // r2
- int v17; // r0
- int v18; // r1
- signed int v19; // r3
- signed int v20; // r0
- int v21; // r0
- unsigned __int16 *v22; // r4
- int v23; // t1
- unsigned __int16 *v24; // r1
- int v25; // r3
- signed int v26; // r0
- bool v27; // cf
- unsigned int v29; // [sp+4h] [bp-64h]
- unsigned __int8 v30[4]; // [sp+8h] [bp-60h]
- unsigned __int8 v31[4]; // [sp+Ch] [bp-5Ch]
- unsigned __int8 v32[4]; // [sp+10h] [bp-58h]
- char v33; // [sp+14h] [bp-54h]
- unsigned __int8 v34[4]; // [sp+40h] [bp-28h]
- v6 = this;
- v7 = (unsigned __int8 *)a3;
- v8 = a2;
- v9 = a4;
- v29 = a3;
- *(_DWORD *)v34 = a2;
- v10 = (Aska::BitStreamWriter *)Aska::BitStreamWriter::BitStreamWriter((Aska::BitStreamWriter *)&v33);
- Aska::BitStreamWriter::Borrow(v10, v7, (unsigned int)v9);
- if ( v7 )
- {
- v8 = 0;
- if ( Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v34, 0x20u) != 1
- || Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, (const unsigned __int8 *)v6, 0x10u) != 1 )
- {
- goto LABEL_37;
- }
- v8 = *(const unsigned __int16 **)v34;
- }
- v11 = 48;
- *(_DWORD *)v32 = *(unsigned __int16 *)v6;
- if ( (unsigned int)v8 < 2 )
- {
- LABEL_36:
- v8 = (_WORD *)(&dword_0 + 1);
- *(_DWORD *)a5 = (unsigned int)(v11 + 7) >> 3;
- }
- else
- {
- v11 = 48;
- v12 = 3;
- v13 = 1;
- while ( 1 )
- {
- v14 = v13;
- if ( v13 < (unsigned int)v8 )
- {
- v15 = *(_DWORD *)v32;
- v14 = v13;
- do
- {
- v16 = 64;
- v17 = *((unsigned __int16 *)v6 + v14);
- v18 = (v17 - v15) ^ ((v17 - v15) >> 31);
- do
- {
- v19 = 0;
- if ( !v16 )
- break;
- v19 = --v16;
- }
- while ( !(v18 & (1 << v16)) );
- if ( v19 + 2 > v12 )
- break;
- ++v14;
- v15 = v17;
- }
- while ( v14 < (unsigned int)v8 );
- }
- v11 += 16;
- *(_DWORD *)v31 = v14 - v13;
- v20 = v11;
- if ( v7 )
- v20 = Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v31, 0x10u);
- v8 = 0;
- if ( !v20 )
- break;
- if ( v14 > v13 )
- {
- v21 = *(_DWORD *)v32;
- if ( v7 )
- {
- v22 = (unsigned __int16 *)((char *)v6 + 2 * v13);
- while ( 1 )
- {
- *(_DWORD *)v30 = *v22 - v21;
- if ( Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v30, v12) != 1 )
- break;
- v23 = *v22;
- ++v22;
- v21 = v23;
- ++v13;
- v11 += v12;
- *(_DWORD *)v32 = v23;
- if ( v13 >= v14 )
- goto LABEL_26;
- }
- }
- else
- {
- v24 = (unsigned __int16 *)((char *)v6 + 2 * v13);
- while ( 1 )
- {
- v25 = *v24;
- *(_DWORD *)v30 = v25 - v21;
- if ( -v12 == v11 )
- break;
- ++v13;
- v11 += v12;
- ++v24;
- v21 = v25;
- *(_DWORD *)v32 = v25;
- if ( v13 >= v14 )
- goto LABEL_26;
- }
- }
- break;
- }
- LABEL_26:
- if ( v12 < 5 )
- {
- v7 = (unsigned __int8 *)v29;
- }
- else
- {
- v7 = (unsigned __int8 *)v29;
- v11 += 16;
- *(_DWORD *)v32 = *((unsigned __int16 *)v6 + v13);
- v26 = v11;
- if ( v29 )
- v26 = Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v32, 0x10u);
- if ( !v26 )
- break;
- ++v13;
- v12 = 2;
- }
- v27 = ++v12 >= 0x1F;
- if ( v12 <= 0x1F )
- {
- v8 = *(const unsigned __int16 **)v34;
- v27 = v13 >= *(_DWORD *)v34;
- }
- if ( v27 )
- goto LABEL_36;
- }
- }
- LABEL_37:
- Aska::BitStreamWriter::~BitStreamWriter((Aska::BitStreamWriter *)&v33);
- return v8;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement