void FUN_004023dc(char *param_1,char *param_2)

{
  size_t sVar1;
  byte *pbVar2;
  char *pcVar3;
  char *pcVar4;
  byte *pbVar5;
  char *pcVar6;
  byte local_190 [16];
  undefined1 auStack_180 [88];
  char acStack_128 [32];
  char local_108 [228];
  
  memset(acStack_128,0,0x100)   //possible issue identified - semgrep
  MD5Init(auStack_180);
  pbVar5 = local_190;
  sVar1 = strlen(param_1);
  MD5Update(auStack_180,param_1,sVar1);
  MD5Final(pbVar5,auStack_180);
  pbVar2 = pbVar5;
  pcVar3 = acStack_128;
  do {
    pcVar6 = pcVar3 + 2;
    sprintf(pcVar3,"%02x",(uint)*pbVar2)   //possible issue identified - semgrep
    pbVar2 = pbVar2 + 1;
    pcVar3 = pcVar6;
  } while (pcVar6 != local_108);
  strcat(acStack_128,".")   //possible issue identified - semgrep
  strcat(acStack_128,param_2)   //possible issue identified - semgrep
  MD5Init(auStack_180);
  sVar1 = strlen(acStack_128);
  MD5Update(auStack_180,acStack_128,sVar1);
  MD5Final(local_190,auStack_180);
  pcVar3 = acStack_128;
  do {
    pcVar4 = pcVar3 + 2;
    sprintf(pcVar3,"%02x",(uint)*pbVar5)   //possible issue identified - semgrep
    pbVar5 = pbVar5 + 1;
    pcVar3 = pcVar4;
  } while (pcVar4 != pcVar6);
  local_108[0] = '\0';
  if (param_1 != (char *)0x0) {
    free(param_1);
  }
  strdup(acStack_128);
  return;
}