REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			92 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Bra86.c -- Converter for x86 code (BCJ)
 | 
						|
2017-04-03 : Igor Pavlov : Public domain */
 | 
						|
 | 
						|
#include "Precomp.h"
 | 
						|
 | 
						|
#include "Bra.h"
 | 
						|
 | 
						|
#define Test86MSByte(b)  ((((b) + 1) & 0xFE) == 0)
 | 
						|
 | 
						|
SizeT
 | 
						|
x86_Convert (
 | 
						|
  Byte    *data,
 | 
						|
  SizeT   size,
 | 
						|
  UInt32  ip,
 | 
						|
  UInt32  *state,
 | 
						|
  int     encoding
 | 
						|
  )
 | 
						|
{
 | 
						|
  SizeT   pos  = 0;
 | 
						|
  UInt32  mask = *state & 7;
 | 
						|
 | 
						|
  if (size < 5) {
 | 
						|
    return 0;
 | 
						|
  }
 | 
						|
 | 
						|
  size -= 4;
 | 
						|
  ip   += 5;
 | 
						|
 | 
						|
  for ( ; ;) {
 | 
						|
    Byte        *p     = data + pos;
 | 
						|
    const Byte  *limit = data + size;
 | 
						|
    for ( ; p < limit; p++) {
 | 
						|
      if ((*p & 0xFE) == 0xE8) {
 | 
						|
        break;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    {
 | 
						|
      SizeT  d = (SizeT)(p - data - pos);
 | 
						|
      pos = (SizeT)(p - data);
 | 
						|
      if (p >= limit) {
 | 
						|
        *state = (d > 2 ? 0 : mask >> (unsigned)d);
 | 
						|
        return pos;
 | 
						|
      }
 | 
						|
 | 
						|
      if (d > 2) {
 | 
						|
        mask = 0;
 | 
						|
      } else {
 | 
						|
        mask >>= (unsigned)d;
 | 
						|
        if ((mask != 0) && ((mask > 4) || (mask == 3) || Test86MSByte (p[(size_t)(mask >> 1) + 1]))) {
 | 
						|
          mask = (mask >> 1) | 4;
 | 
						|
          pos++;
 | 
						|
          continue;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    if (Test86MSByte (p[4])) {
 | 
						|
      UInt32  v   = ((UInt32)p[4] << 24) | ((UInt32)p[3] << 16) | ((UInt32)p[2] << 8) | ((UInt32)p[1]);
 | 
						|
      UInt32  cur = ip + (UInt32)pos;
 | 
						|
      pos += 5;
 | 
						|
      if (encoding) {
 | 
						|
        v += cur;
 | 
						|
      } else {
 | 
						|
        v -= cur;
 | 
						|
      }
 | 
						|
 | 
						|
      if (mask != 0) {
 | 
						|
        unsigned  sh = (mask & 6) << 2;
 | 
						|
        if (Test86MSByte ((Byte)(v >> sh))) {
 | 
						|
          v ^= (((UInt32)0x100 << sh) - 1);
 | 
						|
          if (encoding) {
 | 
						|
            v += cur;
 | 
						|
          } else {
 | 
						|
            v -= cur;
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        mask = 0;
 | 
						|
      }
 | 
						|
 | 
						|
      p[1] = (Byte)v;
 | 
						|
      p[2] = (Byte)(v >> 8);
 | 
						|
      p[3] = (Byte)(v >> 16);
 | 
						|
      p[4] = (Byte)(0 - ((v >> 24) & 1));
 | 
						|
    } else {
 | 
						|
      mask = (mask >> 1) | 4;
 | 
						|
      pos++;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |