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;
}