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