SecureDump_Init

INT64 __fastcall SecureDump_Init(){
  int v0; 
  v0 = 0;
  if( SecureDmpEncryptionContext == 1 )
  {
    if( !DWORD1(xmmword_140C4C598) )
    {
      byte_140C4C594 = 0;
LABEL_4:
      SecureDmpEncryptionContext = 2;
      goto LABEL_5;
    }
    byte_140C4C594 = 1;
    v0 = SecureDump_SymmetricEncryptionSetup();
    if( v0 >= 0 )
    {
      v0 = SecureDump_EncryptSymmetricKeyWithPublicKey();
      if( v0 >= 0 )
      {
        dword_140C4C5E0 = (*((_DWORD *)dwFlags + 1) + pcbResult + 8279) & 0xFFFFF000;
        goto LABEL_4;
      }
    }
  }
LABEL_5:
  switch( SecureDmpEncryptionContext )
  {
    case 3:
      v0 = -1073741823;
      break;
    case 2:
      return 0i64;
    case 0:
      return 3221225488i64;
    default:
      if( v0 < 0 )
      {
        byte_140C4C594 = 0;
        if( hAlgorithm )
        {
          BCryptCloseAlgorithmProvider(hAlgorithm);
          hAlgorithm = 0i64;
        }
        if( hObject )
        {
          BCryptDestroyKey(hObject);
          hObject = 0i64;
        }
        if( qword_140C4C5B8 )
        {
          ExFreePoolWithTag(qword_140C4C5B8, 0);
          qword_140C4C5B8 = 0i64;
        }
        if( *((_QWORD *)dwFlags + 1) )
        {
          ExFreePoolWithTag(*(&dwFlags + 1), 0);
          *((_QWORD *)dwFlags + 1) = 0i64;
        }
        if( *((_QWORD *)&xmmword_140C4C598 + 1) )
        {
          ExFreePoolWithTag(*((PVOID *)&xmmword_140C4C598 + 1), 0);
          *((_QWORD *)&xmmword_140C4C598 + 1) = 0i64;
        }
        SecureDmpEncryptionContext = 3;
      }
      break;
  }
  return(unsigned int)v0;
}

Referenced by:

IopInitCrashDumpDuringSysInit