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