/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

size_t FUN_00405670(undefined4 param_1,undefined4 param_2,char *param_3,char *param_4,
                   ushort *param_5)

{
  int iVar1;
  size_t sVar2;
  char *pcVar3;
  undefined1 auStack_258 [240];
  byte local_168;
  
  iVar1 = strncmp(param_3,"l:",2);
  if (iVar1 == 0) {
    sVar2 = strlen(param_3 + 2)   //possible issue identified - semgrep
    sVar2 = sVar2 + 1   //possible issue identified - semgrep
    if (0x20 < (int)sVar2) {
      sVar2 = 0x20   //possible issue identified - semgrep
    }
    memcpy(param_4,param_3 + 2,sVar2)   //possible issue identified - semgrep
    pcVar3 = strchr(param_4,0x3a);
    if (pcVar3 == (char *)0x0) {
      fputs("Error: Invalid login format\n",_stderr);
      sVar2 = 0xffffffff   //possible issue identified - semgrep
    }
    else {
      *pcVar3 = '\0';
      printf("flags = %X, index = %X\n",(uint)*param_5,(uint)local_168);
      if ((char)*param_5 == '\0') {
        iVar1 = FUN_004050a8(param_1,param_2,auStack_258);
        if (iVar1 < 0) {
          memset(auStack_258,0,0x234)   //possible issue identified - semgrep
        }
        printf("flags = %X, index = %X\n",(uint)*param_5,(uint)local_168);
        *param_5 = *param_5 | (ushort)local_168;
      }
      printf("flags = %X, index = %X\n",(uint)*param_5,(uint)local_168);
    }
  }
  else {
    sVar2 = FUN_004053c8(param_3,param_4);
  }
  return sVar2;
}