undefined4
AES_CCM_Encrypt(int param_1,uint param_2,undefined4 param_3,int param_4,int param_5,uint param_6,
               undefined4 param_7,undefined4 param_8,int param_9,int param_10,uint *param_11)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  undefined4 uVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint uVar8;
  byte *pbVar9;
  byte *pbVar10;
  undefined4 local_68;
  byte local_64 [16];
  byte local_54 [15];
  char local_45;
  byte local_44 [20];
  uint local_30;
  
  local_68 = 0;
  if (param_4 == 0x10) {
    if (param_6 - 7 < 7) {
      if ((((param_9 == 4) || (param_9 == 6)) || (param_9 == 8)) ||
         (((param_9 == 10 || (param_9 == 0xc)) || (param_9 == 0xe)))) {
        uVar3 = *param_11;
      }
      else {
        if (param_9 != 0x10) {
          if (RTDebugLevel == 0) {
            return 0xfffffffd;
          }
          printk("AES_CCM_Encrypt: The MAC length  must be 4, 6, 8, 10, 12, 14, or 16 bytes\n");
          return 0xfffffffd;
        }
        uVar3 = *param_11;
      }
      local_30 = param_9 + param_2;
      if (uVar3 < local_30) {
        uVar4 = 0xfffffffc;
        if (RTDebugLevel != 0) {
          printk("AES_CCM_Encrypt: The CipherTextLength is not enough.\n");
          uVar4 = 0xfffffffc;
        }
      }
      else {
        memset(local_54,0,0x10)   //possible issue identified - semgrep
        local_54[0] = 0xeU - (char)param_6 | local_54[0];
        uVar3 = 0;
        while( true ) {
          bVar2 = param_6 <= uVar3;
          uVar3 = uVar3 + 1;
          if (bVar2) break;
          local_54[uVar3] = *(byte *)(param_5 + uVar3 + -1);
        }
        pbVar10 = local_64;
        AES_CCM_MAC(param_1,param_2,param_3,0x10,param_5,param_6,param_7,param_8,param_9,pbVar10);
        local_68 = 0x10;
        RT_AES_Encrypt(local_54,0x10,param_3,0x10,local_44,&local_68);
        pbVar5 = local_44;
        for (pbVar9 = pbVar10; pbVar9 != pbVar10 + param_9; pbVar9 = pbVar9 + 1) {
          bVar1 = *pbVar5;
          pbVar5 = pbVar5 + 1;
          *pbVar9 = bVar1 ^ *pbVar9;
        }
        for (uVar3 = 0; uVar3 < param_2; uVar3 = uVar3 + uVar8) {
          local_45 = local_45 + '\x01';
          local_68 = 0x10;
          RT_AES_Encrypt(local_54,0x10,param_3,0x10,local_44,&local_68);
          uVar8 = 0x10;
          if (param_2 - uVar3 < 0x11) {
            uVar8 = param_2 - uVar3;
          }
          pbVar7 = (byte *)(param_1 + uVar3);
          pbVar6 = (byte *)(param_10 + uVar3);
          for (pbVar5 = local_44; pbVar5 != local_44 + uVar8; pbVar5 = pbVar5 + 1) {
            bVar1 = *pbVar7;
            pbVar7 = pbVar7 + 1;
            *pbVar6 = *pbVar5 ^ bVar1;
            pbVar6 = pbVar6 + 1;
          }
        }
        pbVar5 = (byte *)(param_10 + param_2);
        for (; pbVar10 != pbVar9; pbVar10 = pbVar10 + 1) {
          *pbVar5 = *pbVar10;
          pbVar5 = pbVar5 + 1;
        }
        *param_11 = local_30;
        uVar4 = 0;
      }
    }
    else {
      uVar4 = 0xfffffffe;
      if (RTDebugLevel != 0) {
        printk("AES_CCM_Encrypt: A valid nonce length is 7-13 bytes\n");
        uVar4 = 0xfffffffe;
      }
    }
  }
  else {
    uVar4 = 0xffffffff;
    if (RTDebugLevel != 0) {
      printk("AES_CCM_Encrypt: The key length must be %d bytes\n",0x10);
      uVar4 = 0xffffffff;
    }
  }
  return uVar4;
}