void FUN_00403f78(int *param_1,char *param_2,uint param_3)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  __pid_t _Var4;
  FILE *pFVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  char *pcVar10;
  undefined4 *puVar11;
  uint uVar12;
  int iVar13;
  int *piVar14;
  uint uVar15;
  int local_80;
  int local_7c;
  int local_78;
  int local_74;
  char acStack_70 [64];
  void *local_30;
  
  if ((param_2 != (char *)0x0) && (local_30 = (void *)((int)param_1 + 0x16), param_3 != 0)) {
    piVar14 = param_1 + 5;
    for (uVar15 = 0; uVar15 < param_3; uVar15 = uVar15 + 1) {
      iVar13 = param_1[0x46];
      if (iVar13 < 1) {
        bVar2 = false;
        goto LAB_004040b8;
      }
      if (*param_2 == '\n') {
        uVar12 = param_1[0x45];
        bVar1 = uVar12 < 0x100;
        if ((uVar12 == 0) ||
           (bVar1 = uVar12 < 0x100, *(char *)((int)param_1 + uVar12 + 0x13) != '\r'))
        goto LAB_00404090;
        *(undefined1 *)((int)param_1 + uVar12 + 0x13) = 0;
        param_1[0x45] = uVar12 - 1;
        if (iVar13 != 2) {
          bVar2 = true;
          goto LAB_004040b8;
        }
        bVar2 = true;
        if (uVar12 - 1 < param_1[2] + 2U) goto LAB_004040b8;
        bVar1 = false;
        if ((short)param_1[5] == 0x2d2d) {
          iVar13 = memcmp(local_30,(void *)param_1[1],param_1[2]);
          bVar1 = true;
          if (iVar13 != 0) goto LAB_004040b8;
        }
LAB_004040bc:
        iVar13 = *param_1;
        if (iVar13 == 1) {
          if (param_1[0x46] < 1) {
            if (*param_2 != '\n') {
              if (*param_2 == '\r') {
                FUN_00403874(param_1,piVar14,param_1[0x45]);
                param_1[0x45] = 1;
                *(undefined1 *)(param_1 + 5) = 0xd;
              }
              else {
                FUN_00403874(param_1,piVar14,param_1[0x45]);
                param_1[0x45] = 0;
                FUN_0040393c(param_1,(int)*param_2);
              }
              goto LAB_00404744;
            }
            if ((param_1[0x45] == 0) || (*(char *)((int)param_1 + param_1[0x45] + 0x13) != '\r')) {
              FUN_00403874(param_1,piVar14);
              FUN_0040393c(param_1,10);
            }
            else {
              param_1[0x46] = 2;
            }
          }
          else {
            if (!bVar1) {
              FUN_0040393c(param_1,0xd);
              FUN_0040393c(param_1,10);
              FUN_00403874(param_1,piVar14,param_1[0x45]);
              if (bVar2) {
                FUN_0040393c(param_1,0xd);
              }
              FUN_0040393c(param_1,(int)*param_2);
              goto LAB_00404694;
            }
            iVar6 = sobj_empty(param_1[0x4a]);
            local_7c = param_1[0x47];
            if (iVar6 == 0) {
              local_80 = iVar13;
              if (param_1[0x4b] == 0) {
                local_78 = 0;
              }
              else {
                local_78 = param_1[0x4a];
                pcVar10 = (char *)sobj_get_string(local_78);
                puVar11 = (undefined4 *)malloc(0xc)   //possible issue identified - semgrep
                if (puVar11 != (undefined4 *)0x0) {
                  *puVar11 = 0;
                  puVar11[1] = 0;
                  puVar11[2] = 0;
                  pcVar10 = strdup(pcVar10)   //possible issue identified - semgrep
                  puVar3 = PTR_LOOP_00430414;
                  *puVar11 = &PTR_LOOP_00430410;
                  PTR_LOOP_00430414 = (undefined *)puVar11;
                  puVar11[2] = pcVar10;
                  *(undefined4 **)puVar3 = puVar11;
                  puVar11[1] = puVar3;
                }
              }
              local_74 = param_1[0x48];
            }
            else {
              local_78 = param_1[0x49];
              local_80 = 0;
            }
            (*(code *)param_1[3])(param_1[4],&local_80);
            if ((FILE *)param_1[0x4b] != (FILE *)0x0) {
              fclose((FILE *)param_1[0x4b]);
            }
            sobj_free(param_1[0x47]);
            sobj_free(param_1[0x4a]);
            sobj_free(param_1[0x49]);
            sobj_free(param_1[0x48]);
            param_1[0x46] = 1;
            param_1[0x4b] = 0;
            param_1[0x4c] = 0;
            *param_1 = 0;
          }
        }
        else {
          if (iVar13 != 0) {
            if (iVar13 == 2) {
              return;
            }
            goto LAB_00404744;
          }
          if (param_1[0x46] < 2) {
            if (bVar2) {
              if (param_1[0x45] == 0) {
                *param_1 = 1;
                param_1[0x46] = 0;
                iVar13 = sobj_empty(param_1[0x4a]);
                if (iVar13 == 0) {
                  _Var4 = getpid();
                  DAT_00430dd0 = DAT_00430dd0 + 1;
                  sprintf(acStack_70,"/var/run/mpfd_%d_%d.bin",_Var4)   //possible issue identified - semgrep
                  pFVar5 = fopen(acStack_70,"w+")   //possible issue identified - semgrep
                  param_1[0x4b] = (int)pFVar5;
                  if (pFVar5 != (FILE *)0x0) {
                    sobj_free(param_1[0x4a]);
                    sobj_add_string(param_1[0x4a],acStack_70);
                  }
                }
                goto LAB_00404718;
              }
              iVar13 = sobj_new();
              if ((iVar13 == 0) || (iVar6 = xs_bopen(piVar14,param_1[0x45]), iVar6 == 0)) {   //possible issue identified - semgrep
LAB_0040440c:
                sobj_free(iVar13);
                sobj_add_string(iVar13,"Unknown content-type message:<br>");
                uVar12 = 0;
                while (uVar12 < (uint)param_1[0x45]) {
                  sobj_add_char(iVar13,(int)*(char *)((int)param_1 + uVar12 + 0x14));
                  uVar12 = uVar12 + 1;
                }
                uVar9 = sobj_get_string();
                cgibin_print_http_status(200,"MULTIPART INVALID CONTENT TYPE",uVar9);
                *param_1 = 2;
                if (iVar13 == 0) goto LAB_00404718;
              }
              else {
                iVar7 = sobj_xstream_read(iVar6,iVar13,0,0)   //possible issue identified - semgrep
                bVar2 = false;
                if (iVar7 != -1) {
                  iVar7 = sobj_strcasecmp(iVar13,"content-type:");
                  if (iVar7 == 0) {
                    bVar2 = true;
                    sobj_free(param_1[0x48]);
                    sobj_xstream_read(iVar6,param_1[0x48],0,0)   //possible issue identified - semgrep
                  }
                  else {
                    iVar7 = sobj_strcasecmp(iVar13,"content-disposition:");
                    bVar2 = false;
                    if ((iVar7 == 0) && (iVar7 = sobj_new(), iVar7 != 0)) {
                      iVar8 = sobj_xstream_read_esc(iVar6,iVar7,0,0,0);
                      if ((iVar8 == -1) || (iVar8 = sobj_strcasecmp(iVar7,"form-data;"), iVar8 != 0)
                         ) {
                        bVar2 = false;
                      }
                      else {
                        sobj_free(iVar7);
                        while (iVar8 = sobj_xstream_read_esc(iVar6,iVar7,0,0,0), iVar8 != -1) {
                          iVar8 = sobj_strcasecmp(iVar7,"name=");
                          if (iVar8 == 0) {
                            sobj_free(param_1[0x47]);
                            iVar8 = param_1[0x47];
LAB_00404394:
                            bVar2 = true;
                            sobj_xstream_read_esc(iVar6,iVar8,&DAT_0041fec4,0,0);
                          }
                          else {
                            iVar8 = sobj_strcasecmp(iVar7,"filename=");
                            if (iVar8 == 0) {
                              sobj_free(param_1[0x4a]);
                              iVar8 = param_1[0x4a];
                              goto LAB_00404394;
                            }
                          }
                          sobj_free(iVar7);
                        }
                      }
                      sobj_del(iVar7);
                    }
                  }
                }
                xs_close(iVar6);
                if (!bVar2) goto LAB_0040440c;
              }
              sobj_del(iVar13);
              goto LAB_00404718;
            }
          }
          else if (bVar1) {
            param_1[0x46] = 1;
            goto LAB_00404718;
          }
          *param_1 = 2;
LAB_00404694:
          param_1[0x46] = 0;
        }
LAB_00404718:
        param_1[0x45] = 0;
      }
      else {
        uVar12 = param_1[0x45];
        bVar1 = uVar12 < 0x100;
LAB_00404090:
        bVar2 = false;
        if (!bVar1) {
LAB_004040b8:
          bVar1 = false;
          goto LAB_004040bc;
        }
        *(char *)((int)param_1 + uVar12 + 0x14) = *param_2;
        param_1[0x45] = uVar12 + 1;
      }
LAB_00404744:
      param_2 = param_2 + 1;
    }
  }
  return;
}