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