XmGetStringAddress
INT64 *__stdcall XmGetStringAddress(INT64 a1, UINT64 a2, UINT64 a3){
__int64 v4;
int v5;
unsigned int v6;
VOID *v7;
v4 = (unsigned int)a2;
v5 = *(_DWORD *)(a1 + 120) + 1;
if( (*(_DWORD *)(a1 + 16) & 0x400) != 0 )
v5 = -v5;
if( *(_BYTE *)(a1 + 137) )
{
v6 = *(_DWORD *)(a1 + 4i64 * (unsigned int)a3 + 24);
*(_DWORD *)(a1 + 4i64 * (unsigned int)a3 + 24) = v6 + v5;
}
else
{
v6 = *(unsigned __int16 *)(a1 + 4i64 * (unsigned int)a3 + 24);
*(_WORD *)(a1 + 4i64 * (unsigned int)a3 + 24) = v5 + v6;
}
v7 = (VOID *)*(unsigned __int16 *)(a1 + 2 * v4 + 68);
if( v6 > (unsigned int)v7 || v6 + *(_DWORD *)(a1 + 120) > (unsigned int)v7 )
longjmp((unsigned __int64 *)(a1 + 160), (VOID *)0xE, v7);
return x86BiosTranslateAddress(*(_WORD *)(a1 + 2 * v4 + 56), v6);
}Referenced by:
XmCmpsOp
XmInsOp
XmLodsOp
XmMovsOp
XmOutsOp
XmScasOp
XmStosOp