RtlAssert
VOID __stdcall RtlAssert(PVOID VoidFailedAssertion, PVOID VoidFileName, ULONG LineNumber, PSTR MutableMessage){
PSTR v8;
INT64 v9;
bool v10;
int v11;
int v12;
__int64 v13;
char Response[16];
CONTEXT ContextRecord;
RtlCaptureContext(&ContextRecord);
while( 1 )
{
LODWORD(v13) = LineNumber;
v8 = (PSTR)File;
if( MutableMessage )
v8 = MutableMessage;
DbgPrintEx(
0x65u,
0,
"\n*** Assertion failed: %s%s\n*** Source File: %s, line %ld\n\n",
v8,
VoidFailedAssertion,
VoidFileName,
v13);
if( (KUSER_SHARED_DATA.KdDebuggerEnabled & 3) != 3 )
break;
if( !(unsigned int)DbgPrompt(
(PSTR)"Break repeatedly, break Once, Ignore, terminate Process, or terminate Thread(boipt)? ",
Response,
2ui64) )
{
__debugbreak();
LABEL_18:
RtlpTerminateCurrentProcess(v9);
return;
}
if( Response[0] > 98 )
{
v11 = Response[0] - 105;
v10 = Response[0] == 105;
}
else
{
if( Response[0] == 98 || Response[0] == 66 )
goto LABEL_16;
v11 = Response[0] - 73;
v10 = Response[0] == 73;
}
if( v10 )
return;
v12 = v11 - 6;
if( !v12 )
{
LABEL_16:
DbgPrintEx(0x65u, 0, "Execute '.cxr %p' to dump context\n", &ContextRecord);
__debugbreak();
}
v9 = (unsigned int)(v12 - 1);
if( !(_DWORD)v9 )
goto LABEL_18;
if( (_DWORD)v9 == 4 )
ZwTerminateThread((PVOID)0xFFFFFFFFFFFFFFFEi64, 3221225473i64);
}
}Referenced by:
KseDriverUnloadImage
KseShimDatabaseBootInitialize
KseShimDatabaseClose
KsepEngineInitialize
KsepEngineReadFlags
KsepEngineUninitialize
KsepGetShimCallbacksForDriver
KsepRegistryCreateKey
KsepRegistryOpenKey
KsepRegistryQueryDWORD
KsepRegistryQuerySZ
KsepRegistryQueryValue
KsepStringConcatenate
KsepStringDuplicate
KsepStringDuplicateUnicode
KsepStringFree
KsepStringSplitMultiString
KsepStringTransform