void FUN_00402ef0(int *param_1,int param_2,uint param_3)
{
int iVar1;
int iVar2;
uint uVar3;
undefined4 local_30;
int local_2c;
int local_28;
if ((param_2 == 0) || (uVar3 = 0, param_3 == 0)) {
if ((*param_1 != 0) && (iVar1 = sobj_empty(param_1[1]), iVar1 == 0)) {
sobj_unescape_uri(param_1[1]);
sobj_unescape_uri(param_1[2]);
local_2c = param_1[1];
local_28 = param_1[2];
local_30 = 0;
(*(code *)param_1[3])(param_1[4],&local_30);
}
sobj_free(param_1[1]);
sobj_free(param_1[2]);
*param_1 = 0;
}
else {
for (; uVar3 < param_3; uVar3 = uVar3 + 1) {
iVar1 = (int)*(char *)(param_2 + uVar3);
if (*param_1 == 0) {
if (iVar1 != 0x3d) {
iVar2 = param_1[1];
goto LAB_00403054;
}
*param_1 = 1;
}
else if (iVar1 == 0x26) {
FUN_00402ef0(param_1,0,0);
}
else {
iVar2 = param_1[2];
LAB_00403054:
sobj_add_char(iVar2,iVar1);
}
}
}
return;
}