AuthzBasepCopyoutSecurityAttributeValues
INT64 __fastcall AuthzBasepCopyoutSecurityAttributeValues(INT64 a1, INT64 a2, UINT64 a3, INT64 a4, INT64 pSizeUsed){
unsigned int v5;
UINT64 v6;
unsigned __int16 v9;
__int64 v10;
UINT64 v11;
INT64 v12;
_QWORD *v13;
unsigned int v14;
__int64 v15;
UINT8 *v16;
__int64 v18;
UINT64 v19;
INT64 v20;
__int64 *v21;
UINT64 v22;
unsigned int v23;
UINT64 v24;
UINT8 *v25;
__int64 v26;
__int64 v27;
UINT64 v28;
INT64 v29;
__int64 *v30;
UINT64 v31;
unsigned int v32;
UINT64 v33;
UINT8 *v34;
__int64 v35;
UINT64 v36;
__int64 v37;
INT64 v38;
__int64 *v39;
UINT64 v40;
unsigned int v41;
UINT64 v42;
UINT8 *v43;
__int64 v44;
v5 = 0;
v6 = a3 + a4;
if( a3 + a4 < a3 )
return(unsigned int)-2147483643;
*(_QWORD *)pSizeUsed = 0i64;
v9 = *(_WORD *)(a1 + 48);
if( !v9 )
return(unsigned int)-1073741811;
if( v9 <= 2u )
goto LABEL_4;
switch( v9 )
{
case 3u:
v18 = 16i64 * *(unsigned int *)(a1 + 60);
v19 = (a3 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
if( v19 + v18 <= v6 )
{
*(_QWORD *)(a2 + 32) = v19;
v20 = a1 + 72;
v21 = *(__int64 **)(a1 + 72);
v22 = (a3 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
v16 = (UINT8 *)(v18 + v19);
v23 = 0;
while( v21 != (__int64 *)v20 )
{
v24 = *((unsigned __int16 *)v21 + 20);
v25 = &v16[v24];
if( (unsigned __int64)&v16[v24] > v6 )
return(unsigned int)-2147483643;
v26 = 2i64 * v23;
*(_WORD *)(v22 + 8 * v26) = v24;
*(_WORD *)(v22 + 8 * v26 + 2) = v24;
*(_QWORD *)(v22 + 8 * v26 + 8) = v16;
memmove(v16, (UINT8 *)v21[6], v24);
v21 = (__int64 *)*v21;
v16 = v25;
++v23;
}
goto LABEL_9;
}
return(unsigned int)-2147483643;
case 4u:
v36 = (a3 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
v37 = 24i64 * *(unsigned int *)(a1 + 60);
if( v36 + v37 <= v6 )
{
*(_QWORD *)(a2 + 32) = v36;
v38 = a1 + 72;
v39 = *(__int64 **)(a1 + 72);
v40 = (a3 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
v16 = (UINT8 *)(v37 + v36);
v41 = 0;
while( v39 != (__int64 *)v38 )
{
v42 = *((unsigned __int16 *)v39 + 24);
v43 = &v16[v42];
if( (unsigned __int64)&v16[v42] > v6 )
return(unsigned int)-2147483643;
v44 = 3i64 * v41;
*(_QWORD *)(v40 + 8 * v44) = v39[5];
*(_WORD *)(v40 + 8 * v44 + 8) = v42;
*(_WORD *)(v40 + 8 * v44 + 10) = v42;
*(_QWORD *)(v40 + 8 * v44 + 16) = v16;
memmove(v16, (UINT8 *)v39[7], v42);
v39 = (__int64 *)*v39;
v16 = v43;
++v41;
}
goto LABEL_9;
}
return(unsigned int)-2147483643;
case 5u:
LABEL_22:
v27 = 16i64 * *(unsigned int *)(a1 + 60);
v28 = (a3 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
if( v28 + v27 <= v6 )
{
*(_QWORD *)(a2 + 32) = v28;
v29 = a1 + 72;
v30 = *(__int64 **)(a1 + 72);
v31 = (a3 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
v16 = (UINT8 *)(v27 + v28);
v32 = 0;
while( v30 != (__int64 *)v29 )
{
v33 = *((unsigned int *)v30 + 12);
v34 = &v16[v33];
if( (unsigned __int64)&v16[v33] > v6 )
return(unsigned int)-2147483643;
v35 = 2i64 * v32;
*(_QWORD *)(v31 + 8 * v35) = v16;
*(_DWORD *)(v31 + 8 * v35 + 8) = v33;
memmove(v16, (UINT8 *)v30[5], v33);
v30 = (__int64 *)*v30;
v16 = v34;
++v32;
}
goto LABEL_9;
}
return(unsigned int)-2147483643;
}
if( v9 != 6 )
{
if( v9 == 16 )
goto LABEL_22;
return(unsigned int)-1073741811;
}
LABEL_4:
v10 = 8i64 * *(unsigned int *)(a1 + 60);
v11 = (a3 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
if( v11 + v10 > v6 )
return(unsigned int)-2147483643;
v12 = a1 + 72;
*(_QWORD *)(a2 + 32) = v11;
v13 = *(_QWORD **)(a1 + 72);
v14 = 0;
while( v13 != (_QWORD *)v12 )
{
v15 = v14++;
*(_QWORD *)(v11 + 8 * v15) = v13[5];
v13 = (_QWORD *)*v13;
}
v16 = (UINT8 *)(v10 + v11);
LABEL_9:
*(_QWORD *)pSizeUsed = &v16[-a3];
return v5;
}Referenced by:
AuthzBasepCopyoutSecurityAttributes