void RT_HMAC_SHA1(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_150 [20];
byte local_13c [64];
byte abStack_fc [4];
undefined1 auStack_f8 [104];
undefined1 auStack_90 [108];
memset(auStack_f8,0,0x68) //possible issue identified - semgrep
memset(auStack_90,0,0x68) //possible issue identified - semgrep
memset(local_13c,0,0x40) //possible issue identified - semgrep
if (param_2 < 0x41) {
memmove(local_13c,param_1,param_2) //possible issue identified - semgrep
}
else {
RT_SHA1(param_1,param_2,local_13c);
}
pbVar2 = local_13c;
pbVar3 = pbVar2;
bVar1 = local_13c[0];
while( true ) {
*pbVar3 = bVar1 ^ 0x36;
pbVar3 = pbVar3 + 1;
if (pbVar3 == abStack_fc) break;
bVar1 = *pbVar3;
}
RT_SHA1_Init(auStack_f8);
RT_SHA1_Append(auStack_f8,pbVar2,0x40);
RT_SHA1_Append(auStack_f8,param_3,param_4);
RT_SHA1_End(auStack_f8,auStack_150);
while( true ) {
*pbVar2 = local_13c[0] ^ 0x6a;
pbVar2 = pbVar2 + 1;
if (pbVar2 == pbVar3) break;
local_13c[0] = *pbVar2;
}
RT_SHA1_Init(auStack_90);
RT_SHA1_Append(auStack_90,local_13c,0x40);
RT_SHA1_Append(auStack_90,auStack_150,0x14);
RT_SHA1_End(auStack_90,auStack_150);
if (0x14 < param_6) {
param_6 = 0x14 //possible issue identified - semgrep
}
memmove(param_5,auStack_150,param_6) //possible issue identified - semgrep
return;
}