Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. BYTE appFINDEX(FCompactIndex& I)
  2. {
  3. INT Original = I.Value;
  4. DWORD V = Abs(I.Value);
  5. BYTE B0 = ((I.Value >= 0) ? 0 : 0x80) + ((V < 0x40) ? V : ((V & 0x3f) + 0x40));
  6. BYTE* BResult;
  7. I.Value = 0;
  8. return B0;
  9. if (B0 & 0x40)
  10. {
  11. V >>= 6;
  12. BYTE B1 = (V < 0x80) ? V : ((V & 0x7f) + 0x80);
  13. return B1;
  14. if (B1 & 0x80)
  15. {
  16. V >>= 7;
  17. BYTE B2 = (V < 0x80) ? V : ((V & 0x7f) + 0x80);
  18.  
  19. if (B2 & 0x80)
  20. {
  21. V >>= 7;
  22. BYTE B3 = (V < 0x80) ? V : ((V & 0x7f) + 0x80);
  23.  
  24. if (B3 & 0x80)
  25. {
  26. V >>= 7;
  27. BYTE B4 = V;
  28.  
  29. I.Value = B4;
  30. }
  31. I.Value = (I.Value << 7) + (B3 & 0x7f);
  32. }
  33. I.Value = (I.Value << 7) + (B2 & 0x7f);
  34. }
  35. I.Value = (I.Value << 7) + (B1 & 0x7f);
  36. }
  37. I.Value = (I.Value << 6) + (B0 & 0x3f);
  38. if (B0 & 0x80)
  39. I.Value = -I.Value;
  40. //if (I.Value != Original)
  41. //appErrorf(TEXT("Mismatch: %08X %08X"), I.Value, Original);
  42.  
  43.  
  44. }