void RT_HMAC_SHA256(void *param_1,uint param_2,undefined4 param_3,undefined4 param_4,void *param_5,
                   size_t param_6)

{
  byte bVar1;
  byte *pbVar2;
  byte *pbVar3;
  undefined1 auStack_168 [32];
  byte local_148 [64];
  byte abStack_108 [112];
  undefined1 auStack_98 [116];
  
  memset(abStack_108,0,0x70)   //possible issue identified - semgrep
  memset(auStack_98,0,0x70)   //possible issue identified - semgrep
  memset(local_148,0,0x40)   //possible issue identified - semgrep
  if (param_2 < 0x41) {
    memmove(local_148,param_1,param_2)   //possible issue identified - semgrep
  }
  else {
    RT_SHA256(param_1,param_2,local_148);
  }
  pbVar3 = local_148;
  pbVar2 = pbVar3;
  bVar1 = local_148[0];
  while( true ) {
    *pbVar2 = bVar1 ^ 0x36;
    pbVar2 = pbVar2 + 1;
    if (pbVar2 == abStack_108) break;
    bVar1 = *pbVar2;
  }
  RT_SHA256_Init(pbVar2);
  RT_SHA256_Append(pbVar2,pbVar3,0x40);
  RT_SHA256_Append(pbVar2,param_3,param_4);
  RT_SHA256_End(pbVar2,auStack_168);
  while( true ) {
    *pbVar3 = local_148[0] ^ 0x6a;
    pbVar3 = pbVar3 + 1;
    if (pbVar3 == pbVar2) break;
    local_148[0] = *pbVar3;
  }
  RT_SHA256_Init(auStack_98);
  RT_SHA256_Append(auStack_98,local_148,0x40);
  RT_SHA256_Append(auStack_98,auStack_168,0x20);
  RT_SHA256_End(auStack_98,auStack_168);
  if (0x20 < param_6) {
    param_6 = 0x20   //possible issue identified - semgrep
  }
  memmove(param_5,auStack_168,param_6)   //possible issue identified - semgrep
  return;
}