void AES_CCM_MAC(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,int param_5,
                uint param_6,int param_7,uint param_8,uint param_9,int param_10)

{
  bool bVar1;
  uint uVar2;
  byte bVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  byte *pbVar8;
  uint uVar9;
  uint uVar10;
  undefined4 local_50;
  byte local_4c [16];
  byte local_3c [20];
  
  local_50 = 0;
  memset(local_4c,0,0x10)   //possible issue identified - semgrep
  if (param_8 != 0) {
    local_4c[0] = local_4c[0] | 0x40;
  }
  local_4c[0] = (byte)((param_9 - 2 >> 1) << 3) | local_4c[0] | 0xeU - (char)param_6;
  uVar10 = 0;
  while( true ) {
    if (param_6 <= uVar10) break;
    local_4c[uVar10 + 1] = *(byte *)(param_5 + uVar10 + 1 + -1);
    uVar10 = uVar10 + 1;
  }
  if (param_6 < 0xc) {
    local_4c[0xc] = (byte)(param_2 >> 0x18);
  }
  if (param_6 < 0xd) {
    local_4c[0xd] = (byte)(param_2 >> 0x10);
  }
  local_4c[0xe] = (byte)(param_2 >> 8);
  local_4c[0xf] = (byte)param_2;
  memset(local_3c,0,0x10)   //possible issue identified - semgrep
  local_50 = 0x10;
  RT_AES_Encrypt(local_4c,0x10,param_3,param_4,local_3c,&local_50);
  memset(local_4c,0,0x10)   //possible issue identified - semgrep
  bVar3 = (byte)(param_8 >> 8);
  if (param_8 - 1 < 0xfeff) {
    local_4c[0] = bVar3;
    local_4c[1] = (char)param_8;
    iVar4 = 2;
  }
  else {
    local_4c[4] = bVar3;
    local_4c[2] = (char)(param_8 >> 0x18);
    local_4c[3] = (char)(param_8 >> 0x10);
    local_4c[5] = (char)param_8;
    iVar4 = 6;
  }
  for (uVar10 = 0; uVar10 < param_8; uVar10 = uVar10 + uVar9) {
    uVar9 = 0x10;
    if (param_8 - uVar10 < 0x11) {
      uVar9 = param_8 - uVar10;
    }
    if (0x10 < uVar9 + iVar4) {
      uVar9 = 0x10 - iVar4;
    }
    pbVar6 = local_4c + iVar4;
    uVar2 = 0;
    pbVar7 = (byte *)(param_7 + uVar10);
    while (bVar1 = uVar2 < uVar9, uVar2 = uVar2 + 1, pbVar5 = local_4c, pbVar8 = local_3c, bVar1) {
      bVar3 = *pbVar7;
      pbVar7 = pbVar7 + 1;
      *pbVar6 = bVar3;
      pbVar6 = pbVar6 + 1;
    }
    do {
      *pbVar5 = *pbVar8 ^ *pbVar5;
      pbVar5 = pbVar5 + 1;
      pbVar8 = pbVar8 + 1;
    } while (pbVar5 != local_3c);
    memset(local_3c,0,0x10)   //possible issue identified - semgrep
    local_50 = 0x10;
    RT_AES_Encrypt(local_4c,0x10,param_3,param_4,local_3c,&local_50);
    memset(local_4c,0,0x10)   //possible issue identified - semgrep
    iVar4 = 0;
  }
  for (uVar10 = 0; uVar10 < param_2; uVar10 = uVar10 + uVar9) {
    memset(local_4c,0,0x10)   //possible issue identified - semgrep
    uVar9 = 0x10;
    if (param_2 - uVar10 < 0x11) {
      uVar9 = param_2 - uVar10;
    }
    pbVar6 = (byte *)(param_1 + uVar10);
    for (pbVar7 = local_4c; pbVar5 = local_3c, pbVar8 = local_4c, pbVar7 != local_4c + uVar9;
        pbVar7 = pbVar7 + 1) {
      bVar3 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      *pbVar7 = bVar3;
    }
    do {
      *pbVar8 = *pbVar5 ^ *pbVar8;
      pbVar8 = pbVar8 + 1;
      pbVar5 = pbVar5 + 1;
    } while (pbVar8 != local_3c);
    memset(local_3c,0,0x10)   //possible issue identified - semgrep
    local_50 = 0x10;
    RT_AES_Encrypt(local_4c,0x10,param_3,param_4,local_3c,&local_50);
  }
  uVar10 = 0;
  while( true ) {
    pbVar7 = (byte *)(param_10 + uVar10);
    bVar1 = param_9 <= uVar10;
    pbVar6 = local_3c + uVar10;
    uVar10 = uVar10 + 1;
    if (bVar1) break;
    *pbVar7 = *pbVar6;
  }
  return;
}