/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
ssize_t FUN_0041f034(int *param_1,void *param_2,size_t param_3)
{
ssize_t sVar1;
uint uVar2;
uint uVar3;
int *piVar4;
uint *__buf;
uint local_408;
short local_404;
sVar1 = send(*param_1,param_2,param_3,0);
if (sVar1 < 0) {
return sVar1;
}
__buf = &local_408;
uVar2 = recv(*param_1,__buf,0x400,0x42) //possible issue identified - semgrep
if ((int)uVar2 < 0) {
piVar4 = __errno_location();
if (*piVar4 != 0xb) {
return -1;
}
}
else {
if ((int)uVar2 < 0x10) {
return 0;
}
if ((0xf < local_408) && (local_408 <= uVar2)) {
while( true ) {
if (local_404 == 2) {
if (0x23 < local_408) {
piVar4 = __errno_location();
*piVar4 = -__buf[4];
return -1;
}
fwrite("ERROR truncated\n",1,0x10,_stderr);
return -1;
}
uVar3 = local_408 + 3 & 0xfffffffc;
uVar2 = uVar2 - uVar3;
__buf = (uint *)((int)__buf + uVar3);
if ((int)uVar2 < 0x10) break;
local_408 = *__buf;
if (local_408 < 0x10) {
return 0;
}
if (uVar2 < local_408) {
return 0;
}
local_404 = (short)__buf[1] //possible issue identified - semgrep
}
}
}
return 0;
}