HalpHvStartProcessor

INT64 __fastcall HalpHvStartProcessor(INT64 a1, INT64 a2, INT64 a3){
  int v4; 
  int v5; 
  UINT16 v6; 
  INT64 v7; 
  INT64 v8; 
  INT64 v9; 
  INT64 v10; 
  INT64 v11; 
  INT64 v12; 
  UINT16 v13; 
  INT64 v14; 
  __int64 v15; 
  __int64 v16; 
  UINT64 v18[2]; 
  INT64(__stdcall *v19)(); 
  __int64 v20; 
  __int64 v21; 
  INT64 result[2]; 
  INT64 v23[2]; 
  INT64 v24[2]; 
  INT64 v25[2]; 
  INT64 v26[2]; 
  INT64 v27[2]; 
  INT64 v28; 
  __int16 v29; 
  INT64 v30[2]; 
  __int16 v31; 
  __int64 v32; 
  __int16 v33; 
  __int64 v34; 
  __int64 v35; 
  __int64 v36; 
  __int64 v37; 
  __int64 v38; 
  __int64 v39; 
  LODWORD(v18[0]) = 0;
  if( qword_140C4A200 )
  {
    v4 = qword_140C4A200(a1, v18);
  }
  else if( HalpIsXboxNanovisorPresent() )
  {
    LODWORD(v18[0]) = v5;
    v4 = 0;
  }
  if( v4 >= 0 )
  {
    memset((INT64)result, 0i64);
    v6 = *(_WORD *)(a3 + 440);
    v19 = HalpLMStubForVM;
    v20 = *(_QWORD *)(a3 + 120);
    v21 = 2i64;
    HalpHvInitSegRegister(a3 + 224, v6, (INT64)result);
    HalpHvInitSegRegister(v7, *(_WORD *)(a3 + 442), (INT64)v23);
    HalpHvInitSegRegister(v8, *(_WORD *)(a3 + 444), (INT64)v24);
    HalpHvInitSegRegister(v9, *(_WORD *)(a3 + 446), (INT64)v25);
    HalpHvInitSegRegister(v10, *(_WORD *)(a3 + 448), (INT64)v26);
    HalpHvInitSegRegister(v11, *(_WORD *)(a3 + 450), (INT64)v27);
    HalpHvInitSegRegister(v12, *(_WORD *)(a3 + 256), (INT64)&v28);
    v13 = *(_WORD *)(a3 + 258);
    v29 |= 2u;
    HalpHvInitSegRegister(v14, v13, (INT64)v30);
    v15 = *(_QWORD *)(a3 + 248);
    v31 = *(_WORD *)(a3 + 246);
    v34 = *(_QWORD *)(v16 + 8);
    v33 = *(_WORD *)(v16 + 6);
    v36 = *(_QWORD *)(a3 + 144);
    v37 = *(_QWORD *)(a3 + 160);
    v38 = *(_QWORD *)(a3 + 168);
    v35 = *(_QWORD *)(a3 + 136);
    v39 = *(_QWORD *)(a3 + 128);
    v32 = v15;
    return(unsigned int)HalpHvStartVirtualProcessor(LODWORD(v18[0]));
  }
  return(unsigned int)v4;
}

Referenced by:

HalpInterruptStartProcessor