undefined4 iptc_commit(int *param_1)
{
ushort uVar1;
char *__dest;
void *pvVar2;
size_t __size;
char *__dest_00;
int iVar3;
int iVar4;
uint *puVar5;
char *pcVar6;
int iVar7;
int *__src;
uint uVar8;
uint uVar9;
uint uVar10;
uint uVar11;
int *piVar12;
int *piVar13;
int *piVar14;
int iVar15;
iptc_fn = iptc_commit;
if (param_1[1] == 0) {
iptc_fn = iptc_commit;
return 1;
}
iVar3 = 0;
iVar7 = 0;
for (piVar14 = (int *)param_1[2]; iVar15 = iVar3 + 1, piVar14 != param_1 + 2;
piVar14 = (int *)*piVar14) {
piVar14[0x18] = iVar7;
if (piVar14[10] == 0) {
iVar7 = iVar7 + 0xb0;
iVar3 = iVar3 + 1;
}
iVar15 = iVar3;
for (piVar13 = (int *)piVar14[0x15]; iVar3 = iVar15 + 1, piVar13 != piVar14 + 0x15;
piVar13 = (int *)*piVar13) {
piVar13[5] = iVar15;
piVar13[6] = iVar7;
iVar7 = iVar7 + piVar13[9];
iVar15 = iVar3;
}
piVar14[0x19] = iVar15;
piVar14[0x1a] = iVar7;
iVar7 = iVar7 + 0x98;
}
if (-1 < iVar15) {
__dest = (char *)malloc(iVar7 + 0x110U) //possible issue identified - semgrep
if (__dest != (char *)0x0) {
memset(__dest,0,iVar7 + 0x110U) //possible issue identified - semgrep
pvVar2 = malloc(param_1[0x1d] << 4) //possible issue identified - semgrep
*(void **)(__dest + 0x58) = pvVar2;
if (pvVar2 == (void *)0x0) {
piVar14 = __errno_location();
*piVar14 = 0xc;
}
else {
__size = iVar15 * 0x10 + 0x28 //possible issue identified - semgrep
__dest_00 = (char *)malloc(__size) //possible issue identified - semgrep
if (__dest_00 == (char *)0x0) {
piVar14 = __errno_location();
*piVar14 = 0xc;
}
else {
memset(__dest_00,0,__size);
strcpy(__dest,(char *)(param_1 + 10)) //possible issue identified - semgrep
iVar3 = param_1[0x1d];
iVar4 = param_1[0x12];
*(int *)(__dest + 0x28) = iVar7 + 0xb0;
*(int *)(__dest + 0x54) = iVar3;
*(int *)(__dest + 0x20) = iVar4;
*(int *)(__dest + 0x24) = iVar15;
for (piVar13 = (int *)param_1[2]; piVar13 != piVar14; piVar13 = (int *)*piVar13) {
iVar3 = piVar13[0x18];
if (piVar13[10] == 0) {
(__dest + iVar3 + 0xba)[0] = -0x50;
(__dest + iVar3 + 0xba)[1] = '\0';
(__dest + iVar3 + 0xb8)[0] = 'p';
(__dest + iVar3 + 0xb8)[1] = '\0';
strcpy(__dest + iVar3 + 0xd2,(char *)0x5130) //possible issue identified - semgrep
(__dest + iVar3 + 0xd0)[0] = '@';
(__dest + iVar3 + 0xd0)[1] = '\0';
strcpy(__dest + iVar3 + 0xf0,(char *)(piVar13 + 2)) //possible issue identified - semgrep
}
else {
*(int *)(__dest + (piVar13[10] + 9) * 4 + 4) = iVar3;
*(int *)(__dest + (piVar13[10] + 0xf) * 4) = piVar13[0x1a];
}
for (piVar12 = (int *)piVar13[0x15]; piVar12 != piVar13 + 0x15;
piVar12 = (int *)*piVar12) {
if (piVar12[7] == 3) {
uVar1 = *(ushort *)(piVar12 + 0x20);
pcVar6 = (char *)((int)piVar12 + uVar1 + 0x2a);
memset(pcVar6,0,0x1e) //possible issue identified - semgrep
strcpy(pcVar6,(char *)0x52a0) //possible issue identified - semgrep
*(int *)((int)piVar12 + uVar1 + 0x48) = *(int *)(piVar12[8] + 0x60) + 0xb0;
}
else if (piVar12[7] == 2) {
*(int *)((int)piVar12 + *(ushort *)(piVar12 + 0x20) + 0x48) =
piVar12[9] + piVar12[6];
}
memcpy(__dest + piVar12[6] + 0x60,piVar12 + 10,piVar12[9]) //possible issue identified - semgrep
}
iVar3 = piVar13[0x1a];
(__dest + iVar3 + 0xba)[0] = -0x68;
(__dest + iVar3 + 0xba)[1] = '\0';
(__dest + iVar3 + 0xb8)[0] = 'p';
(__dest + iVar3 + 0xb8)[1] = '\0';
strcpy(__dest + iVar3 + 0xd2,(char *)0x52a0) //possible issue identified - semgrep
(__dest + iVar3 + 0xd0)[0] = '(';
(__dest + iVar3 + 0xd0)[1] = '\0';
if (piVar13[10] == 0) {
pcVar6 = __dest + iVar3 + 0xf0;
pcVar6[0] = -5;
pcVar6[1] = -1;
pcVar6[2] = -1;
pcVar6[3] = -1;
}
else {
*(int *)(__dest + iVar3 + 0xf0) = piVar13[0xc];
}
memcpy(__dest + iVar3 + 0xc0,piVar13 + 0xe,0x10) //possible issue identified - semgrep
}
iVar3 = *(int *)(__dest + 0x28);
(__dest + iVar3 + 8)[0] = 'p';
(__dest + iVar3 + 8)[1] = '\0';
(__dest + iVar3 + 10)[0] = -0x50;
(__dest + iVar3 + 10)[1] = '\0';
(__dest + iVar3 + 0x20)[0] = '@';
(__dest + iVar3 + 0x20)[1] = '\0';
strcpy(__dest + iVar3 + 0x22,(char *)0x5130) //possible issue identified - semgrep
strcpy(__dest + iVar3 + 0x40,(char *)0x5130) //possible issue identified - semgrep
iVar3 = setsockopt(*param_1,0,0x40,__dest,*(int *)(__dest + 0x28) + 0x60);
if (-1 < iVar3) {
strcpy(__dest_00,(char *)(param_1 + 10)) //possible issue identified - semgrep
*(int *)(__dest_00 + 0x20) = iVar15;
for (piVar14 = (int *)param_1[2]; piVar14 != piVar13; piVar14 = (int *)*piVar14) {
if (piVar14[10] == 0) goto LAB_00011a14;
iVar3 = piVar14[0x12];
if (iVar3 == 1) {
piVar12 = (int *)(*(int *)(__dest + 0x58) + piVar14[0x13] * 0x10);
pcVar6 = __dest_00 + piVar14[0x19] * 0x10 + 0x28;
LAB_00011a08:
memcpy(pcVar6,piVar12,0x10) //possible issue identified - semgrep
}
else {
if (iVar3 == 0) {
pcVar6 = __dest_00 + piVar14[0x19] * 0x10 + 0x28;
piVar12 = (int *)0x56b0;
goto LAB_00011a08;
}
if (iVar3 == 2) {
puVar5 = (uint *)(*(int *)(__dest + 0x58) + piVar14[0x13] * 0x10);
uVar9 = puVar5[2];
iVar3 = piVar14[0x19];
iVar7 = piVar14[0x11];
uVar8 = puVar5[3];
uVar10 = *puVar5 - piVar14[0xe];
uVar11 = uVar9 - piVar14[0x10];
*(uint *)(__dest_00 + iVar3 * 0x10 + 0x2c) =
(puVar5[1] - piVar14[0xf]) - (uint)(*puVar5 < uVar10);
*(uint *)((int)(__dest_00 + (iVar3 + 3) * 0x10) + 4) =
(uVar8 - iVar7) - (uint)(uVar9 < uVar11);
*(uint *)(__dest_00 + iVar3 * 0x10 + 0x28) = uVar10;
*(uint *)(__dest_00 + (iVar3 + 3) * 0x10) = uVar11;
}
else {
piVar12 = piVar14 + 0xe;
if (iVar3 == 3) {
pcVar6 = __dest_00 + piVar14[0x19] * 0x10 + 0x28;
goto LAB_00011a08;
}
}
}
LAB_00011a14:
for (piVar12 = (int *)piVar14[0x15]; piVar12 != piVar14 + 0x15;
piVar12 = (int *)*piVar12) {
iVar3 = piVar12[3];
if (iVar3 == 1) {
__src = (int *)(*(int *)(__dest + 0x58) + piVar12[4] * 0x10);
pcVar6 = __dest_00 + piVar12[5] * 0x10 + 0x28;
LAB_00011b28:
memcpy(pcVar6,__src,0x10) //possible issue identified - semgrep
}
else {
if (iVar3 == 0) {
pcVar6 = __dest_00 + piVar12[5] * 0x10 + 0x28;
__src = (int *)0x56b0;
goto LAB_00011b28;
}
if (iVar3 == 2) {
puVar5 = (uint *)(*(int *)(__dest + 0x58) + piVar12[4] * 0x10);
uVar9 = puVar5[2];
iVar3 = piVar12[5];
iVar7 = piVar12[0x25];
uVar8 = puVar5[3];
uVar10 = *puVar5 - piVar12[0x22];
uVar11 = uVar9 - piVar12[0x24];
*(uint *)(__dest_00 + iVar3 * 0x10 + 0x2c) =
(puVar5[1] - piVar12[0x23]) - (uint)(*puVar5 < uVar10);
*(uint *)((int)(__dest_00 + (iVar3 + 3) * 0x10) + 4) =
(uVar8 - iVar7) - (uint)(uVar9 < uVar11);
*(uint *)(__dest_00 + iVar3 * 0x10 + 0x28) = uVar10;
*(uint *)(__dest_00 + (iVar3 + 3) * 0x10) = uVar11;
}
else {
__src = piVar12 + 0x22;
if (iVar3 == 3) {
pcVar6 = __dest_00 + piVar12[5] * 0x10 + 0x28;
goto LAB_00011b28;
}
}
}
}
}
iVar3 = setsockopt(*param_1,0,0x41,__dest_00,__size) //possible issue identified - semgrep
if (-1 < iVar3) {
free(*(void **)(__dest + 0x58));
free(__dest);
free(__dest_00);
return 1;
}
}
free(__dest_00);
}
free(*(void **)(__dest + 0x58));
}
free(__dest);
return 0;
}
}
piVar14 = __errno_location();
*piVar14 = 0xc;
return 0;
}