WbHeapExecuteCall
__int64 __fastcall WbHeapExecuteCall(_EX_PUSH_LOCK *a1, _QWORD *a2, char *a3, size_t a4){
int HeapExecutedBlock;
INT64 v9;
_EWOW64PROCESS *WoW64Process;
_EWOW64PROCESS *v11;
unsigned __int16 Machine;
_EWOW64PROCESS *v14;
unsigned __int16 v15;
unsigned __int16 v16;
_EWOW64PROCESS *v17;
INT64 v18;
INT64 *v19;
INT64 v20[2];
__int64 v21;
INT64 v22[42];
v19 = 0i64;
v18 = 0i64;
v21 = 0i64;
*(_OWORD *)v20 = 0i64;
memset(v22, 0i64, sizeof(v22));
HeapExecutedBlock = WbValidateHeapExecuteCallArguments((INT64)a2, a4, (INT64)v22);
if( HeapExecutedBlock >= 0 )
{
HeapExecutedBlock = WbGetHeapExecutedBlock((UINT64 *)a1, (INT64)v22, &v19);
if( HeapExecutedBlock >= 0 )
{
HeapExecutedBlock = WbGetWarbirdThread((INT64)a1, v9, (INT64 **)&v18);
if( HeapExecutedBlock >= 0 )
{
HeapExecutedBlock = WbGetTrapFrame(v18, (INT64)v20);
if( HeapExecutedBlock >= 0 )
{
HeapExecutedBlock = sub_14065F400(v18, (__int64)v19, v20[1], v20[0], v21);
if( HeapExecutedBlock >= 0 )
{
HeapExecutedBlock = WbUpdateHeapExecutedCallArgumentList((__int64)v22, (__int64)v19, v20, a2, a3, a4);
if( HeapExecutedBlock >= 0 )
{
WoW64Process = KeGetCurrentThread()->ApcState.Process->WoW64Process;
if( !WoW64Process )
goto LABEL_8;
Machine = WoW64Process->Machine;
if( Machine != 332 && Machine != 452 )
goto LABEL_8;
v14 = KeGetCurrentThread()->ApcState.Process->WoW64Process;
if( !v14 )
goto LABEL_18;
v15 = v14->Machine;
if( !v15 )
goto LABEL_18;
if( v15 != 332 )
{
if( v15 != 452 )
{
LABEL_18:
HeapExecutedBlock = -1073741637;
goto LABEL_11;
}
}
else
{
LABEL_8:
LODWORD(v21) = v21 & 0xFFFFFEFF;
}
v20[1] = v19[3];
HeapExecutedBlock = WbSetTrapFrame(v18, (INT64)v20);
if( HeapExecutedBlock >= 0 )
{
v11 = KeGetCurrentThread()->ApcState.Process->WoW64Process;
if( v11 )
{
v16 = v11->Machine;
if( v16 == 332 || v16 == 452 )
{
v17 = KeGetCurrentThread()->ApcState.Process->WoW64Process;
if( v17 && v17->Machine == 332 )
HeapExecutedBlock = v20[1];
}
}
}
}
}
}
}
}
}
LABEL_11:
sub_14065E6C8(a1, v18);
sub_14065EF2C(a1, (__int64)v19);
return(unsigned int)HeapExecutedBlock;
}Referenced by:
WbDispatchOperation