sub_1402001A0
void __fastcall sub_1402001A0(__int64 a1, _BYTE *a2, char *a3, unsigned int a4, __int64 a5, unsigned int a6, _BYTE *a7){
unsigned int v7;
__int64 v10;
unsigned int v11;
unsigned int v12;
unsigned int v13;
unsigned int v14;
unsigned int v15;
unsigned int v16;
unsigned int v17;
unsigned int v18;
unsigned int v19;
unsigned int v20;
int v21;
int v22;
__int64 v23;
unsigned int v24;
char *v25;
signed __int64 v26;
__int64 v27;
unsigned int v28;
unsigned int v29;
unsigned int v30;
unsigned int v31;
unsigned int v32;
unsigned int v33;
unsigned int v34;
unsigned int v35;
unsigned int v36;
unsigned int v37;
int v38;
int v39;
char *v40;
bool v41;
char *Src;
__int64 v43;
__int64 v44;
char *v46;
unsigned int Size;
if( a4 )
{
v46 = a3;
v7 = a6;
v10 = a1;
v11 = ~a6;
*a7 = a2[a4 - 1];
Size = a4 & 7;
if( (a4 & 7) != 0 )
{
v12 = v11 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 9u, a5, a6);
v13 = a6 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(v10, 8u, a5, v12);
v14 = v12 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(v10, 7u, a5, v13);
v15 = v13 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(v10, 6u, a5, v14);
v16 = v14 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 5u, a5, v15);
v17 = v15 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 4u, a5, v16);
v10 = a1;
v18 = v16 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 3u, a5, v17);
v19 = v17 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 2u, a5, v18);
v20 = WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 1u, a5, v19) ^ v18;
v43 = 0i64;
v21 = v19 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 0, a5, v20);
memmove(&v43, a2, Size);
v22 = v43;
LODWORD(Src) = v43 ^ v20;
HIDWORD(Src) = v21 ^ HIDWORD(v43);
v23 = Size;
memset((char *)&Src + Size, 0i64, 8 - Size);
memmove(v46, &Src, Size);
a3 = v46;
v7 = HIDWORD(Src);
v11 = (unsigned int)Src;
}
else
{
v22 = 0;
v43 = 0i64;
v23 = 0i64;
}
v24 = a4 >> 3;
v25 = &a3[v23];
Src = &a3[v23];
if( v24 )
{
v26 = a2 - a3;
v44 = v24;
do
{
v27 = *(_QWORD *)&v25[v26];
v28 = v27 ^ v11;
v29 = HIDWORD(v27) ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(v10, 0, a5, v28) ^ v7;
v30 = v28 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(v10, 1u, a5, v29);
v31 = v29 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 2u, a5, v30);
v32 = v30 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 3u, a5, v31);
v33 = v31 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 4u, a5, v32);
v34 = v32 ^ WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 5u, a5, v33);
v35 = WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 6u, a5, v34) ^ v33;
v36 = WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 7u, a5, v35) ^ v34;
v37 = WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 8u, a5, v36) ^ v35;
v38 = WarbirdCrypto::CCipherFeistel64::CallRoundFunction(a1, 9u, a5, v37);
v7 = HIDWORD(v43) ^ v37;
v39 = v38;
v40 = Src;
v11 = v22 ^ v36 ^ v39;
v43 = v27;
v22 = v27;
*(_DWORD *)Src = v11;
*((_DWORD *)v40 + 1) = v7;
v25 = v40 + 8;
Src = v25;
v41 = v44-- == 1;
v10 = a1;
}
while( !v41 );
}
}
}Referenced by:
sub_14065F78C