void RT_HMAC_MD5(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_138 [16];
byte local_128 [64];
byte abStack_e8 [96];
undefined1 auStack_88 [100];
memset(abStack_e8,0,0x60) //possible issue identified - semgrep
memset(auStack_88,0,0x60) //possible issue identified - semgrep
memset(local_128,0,0x40) //possible issue identified - semgrep
if (param_2 < 0x41) {
memmove(local_128,param_1,param_2) //possible issue identified - semgrep
}
else {
RT_MD5(param_1,param_2,local_128);
}
pbVar3 = local_128;
pbVar2 = pbVar3;
bVar1 = local_128[0];
while( true ) {
*pbVar2 = bVar1 ^ 0x36;
pbVar2 = pbVar2 + 1;
if (pbVar2 == abStack_e8) break;
bVar1 = *pbVar2;
}
RT_MD5_Init(pbVar2);
RT_MD5_Append(pbVar2,pbVar3,0x40);
RT_MD5_Append(pbVar2,param_3,param_4);
RT_MD5_End(pbVar2,auStack_138);
while( true ) {
*pbVar3 = local_128[0] ^ 0x6a;
pbVar3 = pbVar3 + 1;
if (pbVar3 == pbVar2) break;
local_128[0] = *pbVar3;
}
RT_MD5_Init(auStack_88);
RT_MD5_Append(auStack_88,local_128,0x40);
RT_MD5_Append(auStack_88,auStack_138,0x10);
RT_MD5_End(auStack_88,auStack_138);
if (0x10 < param_6) {
param_6 = 0x10 //possible issue identified - semgrep
}
memmove(param_5,auStack_138,param_6) //possible issue identified - semgrep
return;
}