VOID *__fastcall HalpExtractGenericErrorData(__int64 a1){
_DWORD *v1;
__int64 v3;
size_t v4;
VOID *v5;
VOID *result;
v1 = *(_DWORD **)(a1 + 56);
v3 = *(_QWORD *)(a1 + 24);
v4 = *(_DWORD *)(a1 + 48);
v5 = (VOID *)(v3 + *(unsigned int *)(v3 + 64));
*(_DWORD *)(v3 + 20) = v1[4];
result = memmove(v5, v1, v4);
if( *(_DWORD *)(a1 + 96) == 12 && !*(_DWORD *)(v3 + 20) && !*(_QWORD *)(v3 + 48) )
*(_QWORD *)(v3 + 48) = v3;
return result;
}