private int length() { int i, i0; int length = 0x10; for (i = 0; i < Array.Length; i++) { ENRSEntry enrs = Array[i]; length += GetSize(i > 0 ? enrs.Offset - Array[i - 1].Offset : enrs.Offset); length += GetSize(enrs.Count); length += GetSize(enrs.Size); length += GetSize(enrs.Repeat); if (enrs.Repeat < 1) { continue; } for (i0 = 0; i0 < enrs.Count; i0++) { if (enrs.Sub[i0].Type <ENRSEntry.Type.WORD || enrs.Sub[i0].Type> ENRSEntry.Type.QWORD) { return(length.A(0x10)); } length += GetSizeType(i0 > 0 ? enrs.Sub[i0].Skip - enrs.Sub[i0 - 1].SizeSkip : enrs.Sub[i0].Skip); length += GetSize(enrs.Sub[i0].Reverse); } } return(length.A(0x10));
private int length() { if (Array == null) { return(0); } int i, i0; int length = 0x10; for (i = 0; i < Array.Length; i++) { ENRSEntry enrs = Array[i]; if (GetSize(enrs.Offset, ref length)) { goto End; } if (GetSize(enrs.Count, ref length)) { goto End; } if (GetSize(enrs.Size, ref length)) { goto End; } if (GetSize(enrs.Repeat, ref length)) { goto End; } if (enrs.Repeat < 1) { continue; } for (i0 = 0; i0 < enrs.Count; i0++) { if (enrs.Sub[i0].Type <ENRSEntry.Type.WORD || enrs.Sub[i0].Type> ENRSEntry.Type.QWORD) { return(length.A(0x10)); } if (GetSizeType(enrs.Sub[i0].Skip, ref length)) { goto End; } if (GetSize(enrs.Sub[i0].Reverse, ref length)) { goto End; } } } End: return(length.A(0x10));
public unsafe byte[] Write() { int i, i0; byte[] data; if (IsNull || Array.Length < 1) { return(new byte[0x20]); } data = new byte[Length]; fixed(byte *ptr = data) { ((int *)ptr)[1] = Array.Length; byte *localPtr = ptr + 0x10; for (i = 0; i < Array.Length; i++) { ENRSEntry enrsEntry = Array[i]; WriteENRSValue(ref localPtr, i > 0 ? enrsEntry.Offset - Array[i - 1].Offset : enrsEntry.Offset); WriteENRSValue(ref localPtr, enrsEntry.Count > enrsEntry.Sub.Length ? enrsEntry.Sub.Length : enrsEntry.Count); WriteENRSValue(ref localPtr, enrsEntry.Size); WriteENRSValue(ref localPtr, enrsEntry.Repeat); if (enrsEntry.Repeat < 1) { continue; } for (i0 = 0; i0 < enrsEntry.Count && i0 < enrsEntry.Sub.Length; i0++) { if (enrsEntry.Sub[i0].Type <ENRSEntry.Type.WORD || enrsEntry.Sub[i0].Type> ENRSEntry.Type.QWORD) { return(data); } WriteENRSValue(ref localPtr, i0 > 0 ? enrsEntry.Sub[i0].Skip - enrsEntry.Sub[i0 - 1].SizeSkip : enrsEntry.Sub[i0].Skip, enrsEntry.Sub[i0].Type); WriteENRSValue(ref localPtr, enrsEntry.Sub[i0].Reverse); } } } return(data); }
public unsafe byte[] Write() { int i, i0; byte[] data; if (IsNull || Array.Length < 1) { return(new byte[0x20]); } data = new byte[Length]; fixed(byte *ptr = data) { ((int *)ptr)[1] = Array.Length; byte *localPtr = ptr + 0x10; for (i = 0; i < Array.Length; i++) { ENRSEntry enrsEntry = Array[i]; if (WriteENRSValue(ref localPtr, enrsEntry.Offset)) { goto End; } if (WriteENRSValue(ref localPtr, enrsEntry.Count)) { goto End; } if (WriteENRSValue(ref localPtr, enrsEntry.Size)) { goto End; } if (WriteENRSValue(ref localPtr, enrsEntry.Repeat)) { goto End; } if (enrsEntry.Repeat < 1) { continue; } for (i0 = 0; i0 < enrsEntry.Count && i0 < enrsEntry.Sub.Length; i0++) { if (enrsEntry.Sub[i0].Type > ENRSEntry.Type.QWORD) { return(data); } if (WriteENRSValue(ref localPtr, enrsEntry.Sub[i0].Skip, enrsEntry.Sub[i0].Type)) { goto End; } if (WriteENRSValue(ref localPtr, enrsEntry.Sub[i0].Reverse)) { goto End; } } } } End: return(data); }