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;
}