/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_00402e60(int *param_1,int param_2,uint param_3)
{
int iVar1;
int iVar2;
int iVar3;
int *piVar4;
int iVar5;
int *piVar6;
byte bVar7;
uint uVar8;
int *piVar9;
uint uVar10;
uint uVar11;
undefined4 *puVar12;
int *piVar13;
undefined4 *puVar14;
if ((((*(char *)(param_2 + 8) != -1) &&
((((*(uint *)(param_2 + 8) != 0 || (*(int *)(param_2 + 0xc) != 0)) ||
(*(int *)(param_2 + 0x10) != 0)) || (*(int *)(param_2 + 0x14) != 0)))) &&
((((*(int *)(param_2 + 0x18) != 0 || (*(int *)(param_2 + 0x1c) != 0)) ||
(*(int *)(param_2 + 0x20) != 0)) || (*(int *)(param_2 + 0x24) != 0)))) &&
((*(uint *)(param_2 + 8) & 0xc0ff) != 0x80fe)) {
if (*(char *)(param_2 + 0x18) == -1) {
bVar7 = *(byte *)(param_2 + 0x19) & 0xf;
if (bVar7 == 1) {
return;
}
if (bVar7 == 2) {
return;
}
if ((*(byte *)(param_2 + 0x19) & 0xf) == 0) {
return;
}
}
iVar5 = group_find(param_2 + 0x18);
if (iVar5 != 0) {
uVar8 = *(uint *)(iVar5 + 0x20);
uVar10 = *(uint *)(iVar5 + 0x18) + (param_3 & 0xffff);
uVar11 = uVar8 + 1;
*(uint *)(iVar5 + 0x1c) = (uint)(uVar10 < *(uint *)(iVar5 + 0x18)) + *(int *)(iVar5 + 0x1c);
piVar4 = __Jv_RegisterClasses;
*(uint *)(iVar5 + 0x18) = uVar10;
*(uint *)(iVar5 + 0x20) = uVar11;
*(uint *)(iVar5 + 0x24) = (uint)(uVar11 < uVar8) + *(int *)(iVar5 + 0x24);
iVar3 = ___register_frame_info;
iVar2 = _stderr;
iVar1 = _in6addr_any;
for (puVar14 = (undefined4 *)**(undefined4 **)(iVar5 + 0x10); puVar14 != (undefined4 *)0x0;
puVar14 = (undefined4 *)*puVar14) {
piVar13 = (int *)puVar14[2];
if ((piVar13 != (int *)0x0) && (*param_1 != *piVar13)) {
piVar6 = param_1;
for (puVar12 = *(undefined4 **)piVar13[1]; puVar12 != (undefined4 *)0x0;
puVar12 = (undefined4 *)*puVar12) {
piVar9 = (int *)puVar12[2];
if ((piVar9 != (int *)0x0) &&
((((((*piVar9 == iVar1 && (piVar9[1] == iVar2)) && (piVar9[2] == iVar3)) &&
(piVar6 = piVar4, (int *)piVar9[3] == piVar4)) ||
(((*piVar9 == *(int *)(param_2 + 8) && (piVar9[1] == *(int *)(param_2 + 0xc))) &&
((piVar9[2] == *(int *)(param_2 + 0x10) && (piVar9[3] == *(int *)(param_2 + 0x14))
))))) &&
((piVar9[4] == 1 &&
(piVar6 = (int *)int_find(*piVar13,piVar6), piVar6 != (int *)0x0)))))) {
FUN_00402b0c(param_1,piVar6,param_2,param_3 & 0xffff);
break;
}
}
}
}
}
}
return;
}