InboxCryptSIPVerifyIndirectData

https://www.secrss.com/articles/26290
BOOL __stdcall InboxCryptSIPVerifyIndirectData(SIP_SUBJECTINFO *pSubjectInfo, SIP_INDIRECT_DATA *pIndirectData)
{
  struct SIPObject_ *SubjectObject; // ebx
  struct MS_ADDINFO_FLAT_ *psFlat; // eax
  _DWORD *cbStruct; // eax
  DWORD dwIntVersion; // eax
  int v6; // edi
  const struct _GUID *v8; // [esp+0h] [ebp-10h]
  DWORD pdwPolicyFlags; // [esp+Ch] [ebp-4h] BYREF

  if ( pSubjectInfo && pSubjectInfo->cbSize >= 0x34 )
  {
    SubjectObject = mssip_CreateSubjectObject(v8);
    if ( SubjectObject )
    {
      if ( pSubjectInfo->cbSize >= 0x4C && pSubjectInfo->dwUnionChoice == 2 )
      {
        psFlat = pSubjectInfo->psFlat;
        if ( psFlat )
        {
          if ( psFlat->cbStruct == 12 )
          {
            cbStruct = (_DWORD *)psFlat[1].cbStruct;
            if ( cbStruct )
            {
              if ( *cbStruct == 64 )
                pSubjectInfo->dwIntVersion = cbStruct[9];
            }
          }
        }
      }
      dwIntVersion = pSubjectInfo->dwIntVersion;
      *((_DWORD *)SubjectObject + 10) = dwIntVersion;
      if ( dwIntVersion < 0x100 )
      {
        *((_DWORD *)SubjectObject + 10) = 512;
LABEL_13:
        v6 = (*(int (__thiscall **)(struct SIPObject_ *, SIP_SUBJECTINFO *, SIP_INDIRECT_DATA *))(*(_DWORD *)SubjectObject
                                                                                                + 28))(
               SubjectObject,
               pSubjectInfo,
               pIndirectData);
        (**(void (__thiscall ***)(struct SIPObject_ *, int))SubjectObject)(SubjectObject, 1);
        return v6;
      }
      if ( dwIntVersion >= 0x200 )
        goto LABEL_13;
      WintrustGetRegPolicyFlags(&pdwPolicyFlags);
      if ( (pdwPolicyFlags & 0x10000) == 0 )
        goto LABEL_13;
      (**(void (__thiscall ***)(struct SIPObject_ *, int))SubjectObject)(SubjectObject, 1);
      SetLastError(0x80092026);
    }
  }
  else
  {
    SetLastError(0x57u);
  }
  return 0;
}

int __stdcall DbgUiContinue(int a1, int a2)
{
return ZwDebugContinue((int)NtCurrentTeb()->DbgSsReserved[1], a1, a2);
}