1. int __thiscall sub_6A66D0(void *this, int a2, int a3)
  2. {
  3. int v3; // edi@1
  4. void *v4; // esi@1
  5. unsigned __int8 v5; // al@1
  6. unsigned int v6; // ecx@1
  7. unsigned int v7; // ecx@1
  8. unsigned int v8; // ecx@1
  9. unsigned int v9; // ecx@1
  10. unsigned int v10; // ecx@1
  11. int result; // eax@13
  12. unsigned __int8 v12; // [sp+Fh] [bp-1h]@1
  13. v3 = a2;
  14. v4 = this;
  15. v12 = 0;
  16. CDataStore::GetInt8(a2, (int)&v12);
  17. v5 = v12;
  18. *((_BYTE *)v4 + 16) = (unsigned int)v12 >> 7;
  19. v5 *= 2;
  20. *((_BYTE *)v4 + 19) = (unsigned int)v5 >> 7;
  21. v5 *= 2;
  22. v6 = (unsigned int)v5 >> 7;
  23. v5 *= 2;
  24. *((_BYTE *)v4 + 22) = v6;
  25. v7 = (unsigned int)v5 >> 7;
  26. v5 *= 2;
  27. *((_BYTE *)v4 + 23) = v7;
  28. v8 = (unsigned int)v5 >> 7;
  29. v5 *= 2;
  30. *((_BYTE *)v4 + 18) = v8;
  31. v9 = (unsigned int)v5 >> 7;
  32. v5 *= 2;
  33. *((_BYTE *)v4 + 21) = v9;
  34. v10 = (unsigned int)v5 >> 7;
  35. *((_BYTE *)v4 + 17) = v10;
  36. *((_BYTE *)v4 + 20) = (unsigned __int8)(2 * v5) >> 7;
  37. if ( (_BYTE)v10 )
  38. {
  39. BYTE3(a2) = 0;
  40. CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  41. *((_BYTE *)v4 + 17) ^= BYTE3(a2);
  42. }
  43. a2 = 0;
  44. CDataStore::GetFloat(&a2);
  45. *((_DWORD *)v4 + 10) = a2;
  46. a2 = 0;
  47. CDataStore::GetInt32(&a2);
  48. *((_DWORD *)v4 + 7) = a2;
  49. if ( *((_BYTE *)v4 + 22) )
  50. {
  51. BYTE3(a2) = 0;
  52. CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  53. *((_BYTE *)v4 + 22) ^= BYTE3(a2);
  54. }
  55. if ( *((_BYTE *)v4 + 23) )
  56. {
  57. BYTE3(a2) = 0;
  58. CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  59. *((_BYTE *)v4 + 23) ^= BYTE3(a2);
  60. }
  61. a2 = 0;
  62. CDataStore::GetFloat(&a2);
  63. *((_DWORD *)v4 + 6) = a2;
  64. if ( *((_BYTE *)v4 + 20) )
  65. {
  66. BYTE3(a2) = 0;
  67. CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  68. *((_BYTE *)v4 + 20) ^= BYTE3(a2);
  69. }
  70. if ( *((_BYTE *)v4 + 21) )
  71. {
  72. BYTE3(a2) = 0;
  73. CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  74. *((_BYTE *)v4 + 21) ^= BYTE3(a2);
  75. }
  76. if ( *((_BYTE *)v4 + 19) )
  77. {
  78. BYTE3(a2) = 0;
  79. CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  80. *((_BYTE *)v4 + 19) ^= BYTE3(a2);
  81. }
  82. a2 = 0;
  83. CDataStore::GetFloat(&a2);
  84. *((_DWORD *)v4 + 8) = a2;
  85. a2 = 0;
  86. result = CDataStore::GetFloat(&a2);
  87. *((_DWORD *)v4 + 9) = a2;
  88. if ( *((_BYTE *)v4 + 18) )
  89. {
  90. BYTE3(a2) = 0;
  91. result = CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  92. *((_BYTE *)v4 + 18) ^= BYTE3(a2);
  93. }
  94. if ( *((_BYTE *)v4 + 16) )
  95. {
  96. BYTE3(a2) = 0;
  97. result = CDataStore::GetInt8(v3, (int)((char *)&a2 + 3));
  98. *((_BYTE *)v4 + 16) ^= BYTE3(a2);
  99. }
  100. return result;
  101. }