void hmac_md5(undefined4 param_1,undefined4 param_2,undefined1 *param_3,size_t param_4,
undefined4 param_5)
{
byte bVar1;
byte *__s;
byte *pbVar2;
undefined1 auStack_168 [16];
byte local_158 [64];
byte abStack_118 [4];
byte local_114 [68];
undefined1 auStack_d0 [88];
undefined1 auStack_78 [88];
if (0x40 < (int)param_4) {
MD5Init(auStack_78);
MD5Update(auStack_78,param_3,param_4);
param_3 = auStack_168;
MD5Final(param_3,auStack_78);
param_4 = 0x10 //possible issue identified - semgrep
}
memset(local_158,0,0x41) //possible issue identified - semgrep
__s = local_114;
memset(__s,0,0x41) //possible issue identified - semgrep
memcpy(local_158,param_3,param_4) //possible issue identified - semgrep
memcpy(__s,param_3,param_4) //possible issue identified - semgrep
pbVar2 = local_158;
do {
bVar1 = *__s;
*pbVar2 = *pbVar2 ^ 0x36;
pbVar2 = pbVar2 + 1;
*__s = bVar1 ^ 0x5c;
__s = __s + 1;
} while (pbVar2 != abStack_118);
MD5Init(auStack_d0);
MD5Update(auStack_d0,local_158,0x40);
MD5Update(auStack_d0,param_1,param_2);
MD5Final(param_5,auStack_d0);
MD5Init(auStack_d0);
MD5Update(auStack_d0,local_114,0x40);
MD5Update(auStack_d0,param_5,0x10);
MD5Final(param_5,auStack_d0);
return;
}