x86BiosTranslateAddress

INT64 *__fastcall x86BiosTranslateAddress(UINT16 a1, UINT16 a2){
  unsigned int v2; 
  __int64 v4; 
  unsigned int v5; 
  INT64 *v6; 
  v2 = (a2 + 16 * a1) & 0xFFFFF;
  if( v2 > 0x8FFFF && v2 - 655360 > 0x1FFFF )
    return(INT64 *)(x86BiosIoMemory + v2);
  if( v2 >= 0xA0000 )
  {
    v4 = x86BiosFrameBuffer;
    v6 = (INT64 *)v2;
    if( !x86BiosFrameBuffer )
      v4 = x86BiosIoMemory;
    return(INT64 *)((char *)v6 + v4);
  }
  v4 = (unsigned __int16)(a2 + 16 * a1);
  v5 = HIWORD(v2);
  if( v5 )
  {
    if( v5 != 1 && v5 <= 3 && (unsigned int)v4 < x86BiosTransferLength )
      return(INT64 *)(x86BiosTransferMemory + v4);
  }
  else if( (unsigned int)v4 <= 0x800 )
  {
    v6 = &x86BiosLowMemory;
    return(INT64 *)((char *)v6 + v4);
  }
  x86BiosScratchMemory = 0;
  return(INT64 *)&x86BiosScratchMemory;
}

Referenced by:

HalInitializeBios
XmEmulateInterrupt
XmEvaluateAddressSpecifier
XmGetCodeByte
XmGetLongImmediate
XmGetOffsetAddress
XmGetStringAddress
XmGetStringAddressRange
XmGetWordImmediate
XmInitializeEmulator
XmIntOp
XmPopStack
XmPushStack
x86BiosReadMemory
x86BiosWriteMemory