Помогите понять, что делает эта функция. Зачем она нужна.
a1 вход, на выходе получаются два int a2 и a3
int a1 это указатель на массив
{0x8A,0xA0,0x3D,0x2E,0x7E,0xD8,0xDA,0x17}
а byte_6B4E7360 это массив
{0x3a,0x32,0x2A,0x22,0x1A,0x12,0x0A,0x2
0x3C,0x34,0x2C,0x24,0x1C,0x14,0x0C,0x04,
0x3E,0x36,0x2E,0x26,0x1E,0x16,0x0E,0x06,
0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,
0x39,0x31,0x29,0x21,0x19,0x11,0x09,0x01,
0x3B,0x33,0x2B,0x23,0x1B,0x13,0x0B,0x03,
0x3D,0x35,0x2D,0x25,0x1D,0x15,0X0D,0x05,
0x3F,0x37,0x2F,0x27,0x1F,0x17,0x0F,0x07,0x0E}
int __stdcall sub_6B4BFFA0(int a1, _DWORD * a2, _DWORD * a3) inta1 = 82 bece4 {
int v3; // esi
int result; // eax
v3 = 0;
* a3 = 0;
* a2 = 0;
do {
if (((unsigned __int8)(128 >> ((byte_6B4E7360[v3] - 1) & 7)) & * (_BYTE * )((((unsigned __int8) byte_6B4E7360[v3] - 1) >> 3) +
a1) != 0) *
a2 |= 1 << (31 - v3); a2 = 0xA659A096
++v3;
}
while (v3 < 32);
for (result = 32; result < 64; ++result) {
if (((unsigned __int8)(128 >> ((byte_6B4E7360[result](0x20) - 1) & 7)) & * (_BYTE * )((((unsigned __int8) byte_6B4E7360[result] - 1) >> 3) + a1)) != 0)
*
a3 |= 1 << (63 - result);
a3 = 0x690150
}
return result; = 0x40
}