void FUN_00448a80(uint *param_1,uint *param_2,uint param_3,undefined4 param_4,uint *param_5,
int param_6)
{
char cVar1;
char cVar2;
char cVar3;
char cVar4;
char cVar5;
byte bVar6;
byte bVar7;
byte bVar8;
byte bVar9;
byte bVar10;
byte bVar11;
byte bVar12;
byte bVar13;
byte bVar14;
byte bVar15;
uint uVar16;
uint in_v1;
uint *puVar17;
byte *pbVar18;
byte *pbVar19;
uint *puVar20;
int iVar21;
uint uVar22;
byte *pbVar23;
uint uVar24;
byte *pbVar25;
uint uVar26;
uint uVar27;
uint uVar28;
int iVar29;
undefined4 local_80;
undefined4 local_7c;
undefined4 local_78;
undefined4 local_74;
uint local_70 [4];
int local_60;
int local_5c;
uint local_58;
int local_54;
uint local_50;
int local_4c;
uint local_48;
int local_44;
uint local_40;
int local_3c;
uint local_38;
int local_34;
uint *local_30;
if (0x7f < param_3 - 1) {
return;
}
uVar26 = (int)param_5 + 7U & 3;
local_80 = *param_5;
local_78 = param_5[2];
local_74 = param_5[3];
uVar27 = (uint)(param_5 + 1) & 3;
local_7c = (*(int *)((byte *)((int)param_5 + 7U) + -uVar26) << (3 - uVar26) * 8 |
in_v1 & 0xffffffffU >> (uVar26 + 1) * 8) & -1 << (4 - uVar27) * 8 |
*(uint *)((int)(param_5 + 1) - uVar27) >> uVar27 * 8;
local_30 = param_5;
FUN_0044acac(param_5,param_5,param_4);
uVar27 = param_3 + 7;
uVar26 = uVar27;
if ((int)uVar27 < 0) {
uVar26 = param_3 + 0xe;
}
uVar26 = (int)uVar26 >> 3;
if (param_6 == 0) {
if (0 < (int)uVar26) {
puVar20 = local_70 + 1;
puVar17 = param_2 + 1;
if ((((((uVar26 < 4) || ((((uint)local_30 | (uint)param_2 | (uint)param_1) & 3) != 0)) ||
((local_70 <= param_1 + 1 && (param_1 <= puVar20)))) ||
((param_2 <= param_1 + 1 && (param_1 <= puVar17)))) ||
((local_30 <= puVar20 && (local_70 <= local_30 + 1)))) ||
(((param_2 <= puVar20 && (local_70 <= puVar17)) ||
((param_2 <= local_30 + 1 && (local_30 <= puVar17)))))) {
iVar29 = 0;
do {
bVar15 = *(byte *)((int)param_1 + iVar29);
iVar21 = iVar29 + 1;
*(byte *)((int)param_2 + iVar29) = bVar15 ^ *(byte *)((int)local_30 + iVar29);
*(byte *)((int)local_70 + iVar29) = bVar15;
iVar29 = iVar21;
} while (iVar21 < (int)uVar26);
}
else {
uVar24 = uVar26 >> 2;
uVar28 = uVar24 << 2;
uVar22 = 0;
if (uVar24 == 0) {
uVar28 = 0;
}
else {
iVar29 = 0;
do {
uVar16 = *(uint *)((int)param_1 + iVar29);
uVar22 = uVar22 + 1;
*(uint *)((int)param_2 + iVar29) = uVar16 ^ *(uint *)((int)local_30 + iVar29);
*(uint *)((int)local_70 + iVar29) = uVar16;
iVar29 = iVar29 + 4;
} while (uVar22 < uVar24);
if (uVar26 == uVar28) goto LAB_00448bd4;
}
pbVar25 = (byte *)((int)param_1 + uVar28);
pbVar23 = (byte *)((int)local_70 + uVar28);
pbVar18 = (byte *)((int)param_2 + uVar28);
pbVar19 = (byte *)((int)local_30 + uVar28);
do {
bVar15 = *pbVar25;
uVar28 = uVar28 + 1;
*pbVar18 = bVar15 ^ *pbVar19;
pbVar25 = pbVar25 + 1;
*pbVar23 = bVar15;
pbVar19 = pbVar19 + 1;
pbVar23 = pbVar23 + 1;
pbVar18 = pbVar18 + 1;
} while ((int)uVar28 < (int)uVar26);
}
}
}
else if (0 < (int)uVar26) {
puVar20 = local_70 + 1;
puVar17 = param_2 + 1;
if (((((uVar26 < 4) || ((((uint)local_30 | (uint)param_2 | (uint)param_1) & 3) != 0)) ||
((local_70 <= param_1 + 1 && (param_1 <= puVar20)))) ||
((param_2 <= param_1 + 1 && (param_1 <= puVar17)))) ||
(((local_70 <= local_30 + 1 && (local_30 <= puVar20)) ||
(((param_2 <= local_30 + 1 && (local_30 <= puVar17)) ||
((param_2 <= puVar20 && (local_70 <= puVar17)))))))) {
iVar29 = 0;
do {
bVar15 = *(byte *)((int)local_30 + iVar29) ^ *(byte *)((int)param_1 + iVar29);
iVar21 = iVar29 + 1;
*(byte *)((int)param_2 + iVar29) = bVar15;
*(byte *)((int)local_70 + iVar29) = bVar15;
iVar29 = iVar21;
} while (iVar21 < (int)uVar26);
}
else {
uVar24 = uVar26 >> 2;
uVar28 = uVar24 << 2;
uVar22 = 0;
if (uVar24 == 0) {
uVar28 = 0;
}
else {
iVar29 = 0;
do {
uVar22 = uVar22 + 1;
uVar16 = *(uint *)((int)param_1 + iVar29) ^ *(uint *)((int)local_30 + iVar29);
*(uint *)((int)param_2 + iVar29) = uVar16;
*(uint *)((int)local_70 + iVar29) = uVar16;
iVar29 = iVar29 + 4;
} while (uVar22 < uVar24);
if (uVar26 == uVar28) goto LAB_00448bd4;
}
pbVar25 = (byte *)((int)param_1 + uVar28);
pbVar19 = (byte *)((int)local_70 + uVar28);
pbVar18 = (byte *)((int)param_2 + uVar28);
pbVar23 = (byte *)((int)local_30 + uVar28);
do {
bVar15 = *pbVar25;
bVar6 = *pbVar23;
uVar28 = uVar28 + 1;
*pbVar18 = bVar6 ^ bVar15;
pbVar25 = pbVar25 + 1;
*pbVar19 = bVar6 ^ bVar15;
pbVar23 = pbVar23 + 1;
pbVar19 = pbVar19 + 1;
pbVar18 = pbVar18 + 1;
} while ((int)uVar28 < (int)uVar26);
}
}
LAB_00448bd4:
uVar26 = param_3 & 0x80000007;
if ((int)uVar26 < 0) {
uVar26 = (uVar26 - 1 | 0xfffffff8) + 1;
}
if ((int)param_3 < 0) {
param_3 = uVar27;
}
iVar29 = (int)param_3 >> 3;
if (uVar26 == 0) {
uVar26 = *(uint *)((int)&local_7c + iVar29);
*local_30 = *(uint *)((int)&local_80 + iVar29);
uVar27 = *(uint *)((int)&local_78 + iVar29);
local_30[1] = uVar26;
uVar26 = *(uint *)((int)&local_74 + iVar29);
local_30[2] = uVar27;
local_30[3] = uVar26;
}
else {
local_58 = (uint)*(byte *)((int)&local_7c + iVar29 + 3);
bVar15 = *(byte *)((int)&local_80 + iVar29 + 2);
cVar1 = *(char *)((int)&local_80 + iVar29 + 2) //possible issue identified - semgrep
cVar2 = *(char *)((int)&local_80 + iVar29 + 3) //possible issue identified - semgrep
cVar3 = *(char *)((int)&local_7c + iVar29) //possible issue identified - semgrep
cVar4 = *(char *)((int)&local_7c + iVar29 + 1) //possible issue identified - semgrep
cVar5 = *(char *)((int)&local_7c + iVar29 + 2) //possible issue identified - semgrep
local_50 = (uint)*(byte *)((int)&local_78 + iVar29);
local_48 = (uint)*(byte *)((int)&local_78 + iVar29 + 1);
local_40 = (uint)*(byte *)((int)&local_78 + iVar29 + 2);
local_38 = (uint)*(byte *)((int)&local_78 + iVar29 + 3);
uVar28 = (uint)*(byte *)((int)&local_80 + iVar29 + 1);
uVar27 = 8 - uVar26;
bVar6 = *(byte *)((int)&local_7c + iVar29);
local_5c = (int)(uint)*(byte *)((int)&local_80 + iVar29 + 3) >> (uVar27 & 0x1f);
bVar7 = *(byte *)((int)&local_7c + iVar29 + 2);
bVar8 = *(byte *)((int)&local_78 + iVar29);
bVar9 = *(byte *)((int)&local_78 + iVar29 + 2);
local_60 = uVar28 << (uVar26 & 0x1f);
bVar10 = *(byte *)((int)&local_7c + iVar29 + 1);
bVar11 = *(byte *)((int)&local_74 + iVar29);
bVar12 = *(byte *)((int)&local_7c + iVar29 + 3);
bVar13 = *(byte *)((int)&local_78 + iVar29 + 1);
bVar14 = *(byte *)((int)&local_78 + iVar29 + 3);
local_4c = (uint)*(byte *)((int)&local_78 + iVar29) << (uVar26 & 0x1f);
local_54 = local_58 << (uVar26 & 0x1f);
local_44 = local_48 << (uVar26 & 0x1f);
local_3c = local_40 << (uVar26 & 0x1f);
local_34 = local_38 << (uVar26 & 0x1f);
*(byte *)local_30 =
(byte)((int)uVar28 >> (uVar27 & 0x1f)) |
*(char *)((int)&local_80 + iVar29) << (uVar26 & 0x1f);
*(byte *)((int)local_30 + 1) = (byte)((int)(uint)bVar15 >> (uVar27 & 0x1f)) | (byte)local_60;
*(byte *)((int)local_30 + 2) = (byte)local_5c | cVar1 << (uVar26 & 0x1f);
*(byte *)((int)local_30 + 3) =
(byte)((int)(uint)bVar6 >> (uVar27 & 0x1f)) | cVar2 << (uVar26 & 0x1f);
*(byte *)(local_30 + 1) =
(byte)((int)(uint)bVar10 >> (uVar27 & 0x1f)) | cVar3 << (uVar26 & 0x1f);
*(byte *)((int)local_30 + 5) =
(byte)((int)(uint)bVar7 >> (uVar27 & 0x1f)) | cVar4 << (uVar26 & 0x1f);
*(byte *)((int)local_30 + 6) =
(byte)((int)(uint)bVar12 >> (uVar27 & 0x1f)) | cVar5 << (uVar26 & 0x1f);
*(byte *)((int)local_30 + 7) = (byte)((int)(uint)bVar8 >> (uVar27 & 0x1f)) | (byte)local_54;
*(byte *)(local_30 + 2) = (byte)((int)(uint)bVar13 >> (uVar27 & 0x1f)) | (byte)local_4c;
*(byte *)((int)local_30 + 9) = (byte)((int)(uint)bVar9 >> (uVar27 & 0x1f)) | (byte)local_44;
*(byte *)((int)local_30 + 10) = (byte)((int)(uint)bVar14 >> (uVar27 & 0x1f)) | (byte)local_3c;
*(byte *)((int)local_30 + 0xb) = (byte)((int)(uint)bVar11 >> (uVar27 & 0x1f)) | (byte)local_34;
cVar1 = *(char *)((int)&local_74 + iVar29) //possible issue identified - semgrep
bVar15 = *(byte *)((int)&local_74 + iVar29 + 1);
cVar2 = *(char *)((int)&local_74 + iVar29 + 1) //possible issue identified - semgrep
cVar3 = *(char *)((int)&local_74 + iVar29 + 2) //possible issue identified - semgrep
bVar6 = *(byte *)((int)&local_74 + iVar29 + 2);
bVar7 = *(byte *)((int)&local_74 + iVar29 + 3);
*(byte *)((int)local_30 + 0xf) =
(byte)((int)(uint)*(byte *)((int)local_70 + iVar29) >> (uVar27 & 0x1f)) |
*(char *)((int)&local_74 + iVar29 + 3) << (uVar26 & 0x1f);
*(byte *)(local_30 + 3) =
(byte)((int)(uint)bVar15 >> (uVar27 & 0x1f)) | cVar1 << (uVar26 & 0x1f);
*(byte *)((int)local_30 + 0xd) =
(byte)((int)(uint)bVar6 >> (uVar27 & 0x1f)) | cVar2 << (uVar26 & 0x1f);
*(byte *)((int)local_30 + 0xe) =
(byte)((int)(uint)bVar7 >> (uVar27 & 0x1f)) | cVar3 << (uVar26 & 0x1f);
}
return;
}