RtlpConstructSwitchJumpRelocationFixup

__int64 __fastcall RtlpConstructSwitchJumpRelocationFixup(
        int a1,
        _DWORD *a2,
        __int64 a3,
        _WORD *a4,
        int a5,
        __int64 a6){
  __int64 v6; 
  unsigned __int64 v7; 
  unsigned int v8; 
  __int64 result; 
  __int64 v10; 

  v6 = 0i64;
  *(_WORD *)a6 = 0;
  *(_QWORD *)(a6 + 2) = 0xCCCCCCCCCCCCCCCCui64;
  *(_DWORD *)(a6 + 10) = -858993460;
  v7 = (unsigned __int16)*a4;
  if( a5 )
  {
    v8 = *a2 + *(_DWORD *)(a3 + 4 * (v7 >> 12) + 4) - (a1 + 5);
    *(_WORD *)a6 = 63;
    *(_BYTE *)(a6 + 4) = BYTE1(v8);
    result = HIWORD(v8);
    *(_BYTE *)(a6 + 3) = v8;
    *(_BYTE *)(a6 + 6) = HIBYTE(v8);
    *(_BYTE *)(a6 + 2) = -24;
    *(_BYTE *)(a6 + 5) = BYTE2(v8);
    *(_BYTE *)(a6 + 7) = -52;
  }
  else
  {
    v10 = 0i64;
    if( (v7 & 0xF000) >= 0x8000 )
    {
      v6 = 1i64;
      *(_BYTE *)(a6 + 2) = 65;
      v10 = 1i64;
    }
    *(_BYTE *)(v10 + a6 + 2) = -1;
    *(_BYTE *)(v6 + a6 + 3) = (*a4 >> 12) & 7 | 0xE0;
    result = 63i64;
    *(_WORD *)a6 = 63;
  }
  return result;
}

Referenced by:

RtlApplySwitchJumpRelocationToPage
RtlPerformRetpolineRelocationsOnImageEx