void RT_AES_Encrypt(int param_1,uint param_2,undefined4 param_3,uint param_4,int param_5,
                   uint *param_6)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  char cVar5;
  int iVar6;
  code *pcVar7;
  byte *pbVar8;
  char *pcVar9;
  int iVar10;
  char *pcVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  char *local_20 [2];
  
  local_20[0] = (char *)0x0;
  if (param_2 == 0x10) {
    if (((param_4 != 0x10) && (param_4 != 0x18)) && (param_4 != 0x20)) {
      if (RTDebugLevel == 0) {
        return;
      }
      printk("RT_AES_Encrypt: key length is %d bytes, it must be %d, %d, or %d bytes(128, 192, or 256 bits).\n"
             ,param_4,0x10,0x18,0x20);
      return;
    }
    param_2 = *param_6;
    if (0xf < param_2) {
      os_alloc_mem(0,local_20,0x100);
      iVar13 = 0;
      if (local_20[0] == (char *)0x0) {
        if (RTDebugLevel == 0) {
          return;
        }
        pcVar11 = "%s: Allocate memory fail!!!\n";
        pcVar9 = "RT_AES_Encrypt";
        pcVar7 = printk;
      }
      else {
        do {
          pcVar9 = (char *)(param_1 + iVar13);
          iVar12 = 0;
          do {
            iVar6 = iVar13 * 4 + iVar12;
            iVar12 = iVar12 + 1;
            local_20[0][iVar6] = *pcVar9;
            pcVar9 = pcVar9 + 4;
          } while (iVar12 != 4);
          iVar13 = iVar13 + 1;
        } while (iVar13 != 4);
        RT_AES_KeyExpansion(param_3,param_4,local_20[0]);
        iVar13 = 0;
        do {
          iVar12 = 0;
          do {
            iVar10 = iVar13 * 4 + iVar12;
            iVar6 = iVar12 + iVar13 * 0x3c;
            iVar12 = iVar12 + 1;
            local_20[0][iVar10] = local_20[0][iVar6 + 0x10] ^ local_20[0][iVar10];
          } while (iVar12 != 4);
          iVar13 = iVar13 + 1;
        } while (iVar13 != 4);
        iVar13 = 5;
        for (uVar14 = 1; iVar12 = 0, uVar14 < (param_4 >> 2) + 6; uVar14 = uVar14 + 1) {
          do {
            iVar6 = iVar12 * 4;
            iVar12 = iVar12 + 1;
            local_20[0][iVar6] = aes_sbox_enc[(byte)local_20[0][iVar6]];
            local_20[0][iVar6 + 1] = aes_sbox_enc[(byte)local_20[0][iVar6 + 1]];
            local_20[0][iVar6 + 2] = aes_sbox_enc[(byte)local_20[0][iVar6 + 2]];
            local_20[0][iVar6 + 3] = aes_sbox_enc[(byte)local_20[0][iVar6 + 3]];
          } while (iVar12 != 4);
          cVar5 = local_20[0][4]   //possible issue identified - semgrep
          local_20[0][4] = local_20[0][5];
          local_20[0][5] = local_20[0][6];
          local_20[0][6] = local_20[0][7];
          local_20[0][7] = cVar5;
          cVar5 = local_20[0][8]   //possible issue identified - semgrep
          local_20[0][8] = local_20[0][10];
          local_20[0][10] = cVar5;
          cVar5 = local_20[0][9]   //possible issue identified - semgrep
          local_20[0][9] = local_20[0][0xb];
          local_20[0][0xb] = cVar5;
          cVar5 = local_20[0][0xf]   //possible issue identified - semgrep
          local_20[0][0xf] = local_20[0][0xe];
          local_20[0][0xe] = local_20[0][0xd];
          local_20[0][0xd] = local_20[0][0xc];
          local_20[0][0xc] = cVar5;
          iVar12 = 0;
          do {
            pbVar8 = (byte *)(local_20[0] + iVar12);
            bVar1 = *pbVar8;
            bVar2 = pbVar8[4];
            bVar3 = pbVar8[8];
            bVar4 = pbVar8[0xc];
            *pbVar8 = bVar4 ^ bVar3 ^ aes_mul_2[bVar1] ^ aes_mul_3[bVar2];
            local_20[0][iVar12 + 4] = bVar4 ^ bVar1 ^ aes_mul_2[bVar2] ^ aes_mul_3[bVar3];
            local_20[0][iVar12 + 8] = bVar2 ^ bVar1 ^ aes_mul_2[bVar3] ^ aes_mul_3[bVar4];
            iVar6 = iVar12 + 1;
            local_20[0][iVar12 + 0xc] = bVar3 ^ bVar2 ^ aes_mul_3[bVar1] ^ aes_mul_2[bVar4];
            iVar12 = iVar6;
          } while (iVar6 != 4);
          iVar12 = 0;
          do {
            iVar10 = iVar12 * 4;
            iVar6 = iVar12 * 0x3c;
            local_20[0][iVar10] = local_20[0][(iVar12 * 0xf + uVar14 + 4) * 4] ^ local_20[0][iVar10]
            ;
            iVar12 = iVar12 + 1;
            local_20[0][iVar10 + 1] = local_20[0][iVar13 + iVar6 + 0x10] ^ local_20[0][iVar10 + 1];
            local_20[0][iVar10 + 2] = local_20[0][iVar13 + iVar6 + 0x11] ^ local_20[0][iVar10 + 2];
            local_20[0][iVar10 + 3] = local_20[0][iVar13 + iVar6 + 0x12] ^ local_20[0][iVar10 + 3];
          } while (iVar12 != 4);
          iVar13 = iVar13 + 4;
        }
        do {
          iVar13 = iVar12 * 4;
          iVar12 = iVar12 + 1;
          local_20[0][iVar13] = aes_sbox_enc[(byte)local_20[0][iVar13]];
          local_20[0][iVar13 + 1] = aes_sbox_enc[(byte)local_20[0][iVar13 + 1]];
          local_20[0][iVar13 + 2] = aes_sbox_enc[(byte)local_20[0][iVar13 + 2]];
          local_20[0][iVar13 + 3] = aes_sbox_enc[(byte)local_20[0][iVar13 + 3]];
        } while (iVar12 != 4);
        iVar12 = uVar14 * 4;
        cVar5 = local_20[0][4]   //possible issue identified - semgrep
        local_20[0][4] = local_20[0][5];
        iVar13 = 0;
        local_20[0][5] = local_20[0][6];
        local_20[0][6] = local_20[0][7];
        local_20[0][7] = cVar5;
        cVar5 = local_20[0][8]   //possible issue identified - semgrep
        local_20[0][8] = local_20[0][10];
        local_20[0][10] = cVar5;
        cVar5 = local_20[0][9]   //possible issue identified - semgrep
        local_20[0][9] = local_20[0][0xb];
        local_20[0][0xb] = cVar5;
        cVar5 = local_20[0][0xf]   //possible issue identified - semgrep
        local_20[0][0xf] = local_20[0][0xe];
        local_20[0][0xe] = local_20[0][0xd];
        local_20[0][0xd] = local_20[0][0xc];
        local_20[0][0xc] = cVar5;
        do {
          iVar6 = iVar13 * 0x3c;
          iVar10 = iVar13 * 4;
          local_20[0][iVar10] = local_20[0][iVar12 + iVar6 + 0x10] ^ local_20[0][iVar10];
          iVar13 = iVar13 + 1;
          local_20[0][iVar10 + 1] = local_20[0][iVar12 + iVar6 + 0x11] ^ local_20[0][iVar10 + 1];
          local_20[0][iVar10 + 2] = local_20[0][iVar12 + iVar6 + 0x12] ^ local_20[0][iVar10 + 2];
          local_20[0][iVar10 + 3] = local_20[0][iVar12 + iVar6 + 0x13] ^ local_20[0][iVar10 + 3];
        } while (iVar13 != 4);
        iVar13 = 0;
        do {
          pcVar9 = (char *)(param_5 + iVar13);
          iVar12 = 0;
          do {
            iVar6 = iVar13 * 4 + iVar12;
            iVar12 = iVar12 + 1;
            *pcVar9 = local_20[0][iVar6];
            pcVar9 = pcVar9 + 4;
          } while (iVar12 != 4);
          iVar13 = iVar13 + 1;
        } while (iVar13 != 4);
        *param_6 = 0x10;
        if (local_20[0] == (char *)0x0) {
          return;
        }
        pcVar11 = (char *)0x0;
        pcVar7 = os_free_mem;
        pcVar9 = local_20[0];
      }
      (*pcVar7)(pcVar11,pcVar9);
      return;
    }
    if (RTDebugLevel == 0) {
      return;
    }
    pcVar9 = "RT_AES_Encrypt: cipher block size is %d bytes, it must be %d bytes(128 bits).\n";
  }
  else {
    if (RTDebugLevel == 0) {
      return;
    }
    pcVar9 = "RT_AES_Encrypt: plain block size is %d bytes, it must be %d bytes(128 bits).\n";
  }
  printk(pcVar9,param_2,0x10);
  return;
}