XmEmulateStream
INT64 __fastcall XmEmulateStream(INT64 a1, INT16 a2, UINT16 a3, INT64 a4){
unsigned int v4;
VOID *v5;
INT64 v6;
unsigned __int8 CodeByte;
__int16 v8;
dword_140CED138 = *(_DWORD *)a4;
dword_140CED13C = *(_DWORD *)(a4 + 4);
dword_140CED140 = *(_DWORD *)(a4 + 8);
dword_140CED144 = *(_DWORD *)(a4 + 12);
dword_140CED14C = *(_DWORD *)(a4 + 16);
dword_140CED150 = *(_DWORD *)(a4 + 20);
dword_140CED154 = *(_DWORD *)(a4 + 24);
word_140CED15E = *(_WORD *)(a4 + 28);
word_140CED158 = *(_WORD *)(a4 + 30);
word_140CED15A = a2;
dword_140CED134 = a3;
v4 = setjmp(Buf);
v6 = v4;
for( XmStatus = v4; !XmStatus; v6 = (unsigned int)XmStatus )
{
*((_DWORD *)&XmContext + 29) = 3;
*(&XmContext + 17) = 0i64;
XmContext = (INT64)XmOpcodeControlTable1;
do
{
CodeByte = XmGetCodeByte((INT64)&XmContext, v6, v5);
*((_DWORD *)&XmContext + 28) = CodeByte;
v8 = *(_WORD *)(XmContext + 2i64 * CodeByte);
*((_WORD *)&XmContext + 40) = v8;
*((_DWORD *)&XmContext + 31) = (unsigned __int8)v8;
}
while( !((unsigned int(__fastcall *)(INT64 *))XmOperandDecodeTable[*((unsigned __int8 *)&XmContext + 81)])(&XmContext) );
((void(__fastcall *)(INT64 *))XmOpcodeFunctionTable[*((unsigned int *)&XmContext + 31)])(&XmContext);
}
*(_DWORD *)a4 = *((_DWORD *)&XmContext + 6);
*(_DWORD *)(a4 + 4) = *((_DWORD *)&XmContext + 7);
*(_DWORD *)(a4 + 8) = *((_DWORD *)&XmContext + 8);
*(_DWORD *)(a4 + 12) = *((_DWORD *)&XmContext + 9);
*(_DWORD *)(a4 + 16) = *((_DWORD *)&XmContext + 11);
*(_DWORD *)(a4 + 20) = *((_DWORD *)&XmContext + 12);
*(_DWORD *)(a4 + 24) = *((_DWORD *)&XmContext + 13);
return(unsigned int)v6;
}Referenced by:
XmEmulateInterrupt