PiDevCfgFreeDriverNode
VOID __fastcall PiDevCfgFreeDriverNode(INT64 a1){
_QWORD **v2;
_QWORD *v3;
_QWORD **v4;
_QWORD *v5;
_QWORD **v6;
_QWORD *v7;
void *v8;
void *v9;
void *v10;
void *v11;
_QWORD *v12;
_QWORD *v13;
_QWORD *v14;
v2 = (_QWORD **)(a1 + 224);
while( 1 )
{
v3 = *v2;
if( *v2 == v2 )
break;
if( (_QWORD **)v3[1] != v2 || (v12 = (_QWORD *)*v3, *(_QWORD **)(*v3 + 8i64) != v3) )
LABEL_19:
__fastfail(3u);
*v2 = v12;
v12[1] = v2;
PiDevCfgFreeDriverNode((INT64)v3);
}
v4 = (_QWORD **)(a1 + 208);
while( 1 )
{
v5 = *v4;
if( *v4 == v4 )
break;
if( (_QWORD **)v5[1] != v4 )
goto LABEL_19;
v13 = (_QWORD *)*v5;
if( *(_QWORD **)(*v5 + 8i64) != v5 )
goto LABEL_19;
*v4 = v13;
v13[1] = v4;
PiDevCfgFreeDriverNode((INT64)v5);
}
v6 = (_QWORD **)(a1 + 368);
while( 1 )
{
v7 = *v6;
if( *v6 == v6 )
break;
if( (_QWORD **)v7[1] != v6 )
goto LABEL_19;
v14 = (_QWORD *)*v7;
if( *(_QWORD **)(*v7 + 8i64) != v7 )
goto LABEL_19;
*v6 = v14;
v14[1] = v6;
PiDevCfgFreeDriverNode((INT64)v7);
}
v8 = *(void **)(a1 + 144);
if( v8 )
ExFreePoolWithTag(v8, 0);
v9 = *(void **)(a1 + 16);
if( v9 )
ZwClose(v9);
v10 = *(void **)(a1 + 24);
if( v10 )
ZwClose(v10);
v11 = *(void **)(a1 + 32);
if( v11 )
ZwClose(v11);
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 56));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 40));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 72));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 88));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 128));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 160));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 256));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 272));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 288));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 304));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 320));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 336));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 352));
RtlFreeAnsiString((_UNICODE_STRING *)(a1 + 392));
ExFreePoolWithTag((PVOID)a1, 0);
}Referenced by:
PiDevCfgCheckDeviceNeedsUpdate
PiDevCfgFindDeviceDriver
PiDevCfgFreeDriverNode
PiDevCfgProcessDevice
PiDevCfgQueryDriverNode
PiDevCfgQueryIncludedDriverNode
PpDevCfgProcessDeviceExtensions