RtlCreateRetpolineStubsFunctionTable

__int64 __fastcall RtlCreateRetpolineStubsFunctionTable(__int64 a1, _DWORD *a2, unsigned int a3){
  __int64 v3; 
  _DWORD *v5; 
  _DWORD *v6; 
  __int64 result; 
  int v8; 
  int v9; 
  _DWORD *v10; 
  __int64 v11; 
  int v12; 
  int v13; 
  int v14; 
  INT64 v15; 

  HIDWORD(v15) = HIDWORD(a1);
  v3 = PsNtosImageBase;
  LODWORD(v15) = 0;
  LODWORD(v5) = RtlpGetRetpolineStubsFunctionTable((VOID *)PsNtosImageBase, PsNtosImageBase, (INT64)a2, a3, &v15);
  v6 = v5;
  if( !v5 )
    return 3221226021i64;
  v8 = v15;
  if( (unsigned int)v15 > 0x32 )
    return 2147483653i64;
  v9 = (_DWORD)a2 + *a2;
  if( (_DWORD)v15 )
  {
    v10 = &unk_140E01A74;
    v11 = (unsigned int)v15;
    do
    {
      v12 = v3 + v6[1];
      *(v10 - 1) = v3 + *v6 - (_DWORD)a2;
      *v10 = v12 - (_DWORD)a2;
      v10[1] = v9 - (_DWORD)a2;
      v13 = RtlCalculateUnwindInfoSizeForRetpoline(v3, (__int64)v6, 0i64);
      v10 += 3;
      v9 = v13 + v14;
      v6 += 3;
      --v11;
    }
    while( v11 );
  }
  RtlRetpolineStubsFunctionTableSize = 12 * v8;
  dword_140C00E90 = 12 * v8;
  result = 0i64;
  qword_140C00E88 = (__int64)&RtlRetpolineStubsFunctionTable;
  return result;
}

Referenced by:

MiInitializeRetpoline