/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401f8570 FUN_1401f8570 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1401f8570(longlong *param_1,longlong param_2) { longlong *plVar1; int *piVar2; ushort uVar3; longlong *plVar4; char cVar5; uint uVar6; uint uVar7; uint uVar8; int iVar9; void *_Dst; uint *puVar10; uint *puVar11; undefined8 uVar12; uint *puVar13; undefined1 *puVar14; undefined8 uVar15; longlong lVar16; undefined *puVar17; void *_Src; uint *puVar18; longlong lVar19; uint *puVar20; uint uVar21; undefined *puVar22; undefined1 auStack_a38 [32]; uint local_a18; uint *local_a08; uint *local_a00; uint *local_9f8; uint *local_9f0; uint local_9e8 [2]; longlong *local_9e0; undefined *local_9d8; undefined *local_9d0; undefined *local_9c8; undefined *local_9c0; undefined *local_9b8; undefined8 local_9b0; undefined **local_9a8; undefined4 local_9a0; undefined2 local_99c; int local_998; undefined8 local_990; undefined **local_988; undefined4 local_980; undefined2 local_97c; int local_978; undefined8 local_970; undefined **local_968; undefined4 local_960; undefined2 local_95c; undefined4 local_958; undefined8 local_950; undefined1 local_948; undefined8 local_940; undefined1 local_938; undefined8 local_930; undefined1 local_928; undefined8 local_920; undefined1 local_918; undefined8 local_910; undefined1 local_908; undefined8 local_900; undefined1 local_8f8; undefined8 local_8f0; undefined1 local_8e8; undefined8 local_8e0; undefined8 local_8d8; undefined1 local_8d0; undefined8 local_8c8; undefined1 local_8c0; undefined8 local_8b8; undefined1 local_8b0; undefined8 local_8a8; undefined1 local_8a0; undefined1 *local_898; undefined1 local_890 [136]; undefined1 *local_808; undefined1 local_800 [136]; undefined1 *local_778; undefined1 local_770 [264]; undefined1 local_668 [1568]; ulonglong local_48; local_8e0 = 0xfffffffffffffffe; local_48 = DAT_1403463c0 ^ (ulonglong)auStack_a38; iVar9 = *(int *)(param_2 + 0x2490); local_9e0 = param_1; if (iVar9 == 0) { lVar19 = 0; if (*(int *)(param_2 + 0x2494) == 0) { local_9d8 = (undefined *)FUN_14016d940(0x400); lVar16 = lVar19; if (local_9d8 != (undefined *)0x0) { lVar16 = FUN_14019cad0(local_9d8,0,param_2); } if (lVar16 == 0) { local_9e0 = (longlong *)0x0; } else { local_9e0 = (longlong *)FUN_14016d940(0x10); local_9e0[1] = 1; *local_9e0 = lVar16; } plVar1 = local_9e0; FUN_1401786c0(param_2 + 0x2480,&local_9e0); plVar4 = local_9e0; if (plVar1 != (longlong *)0x0) { plVar1 = plVar1 + 1; *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { lVar16 = *local_9e0; if (lVar16 != 0) { FUN_14019c9e0(lVar16); FUN_14016d970(lVar16); } FUN_14016d970(plVar4); } } lVar16 = lVar19; if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) { lVar16 = **(longlong **)(param_2 + 0x2480); } FUN_14019e650(lVar16); lVar16 = lVar19; if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) { lVar16 = **(longlong **)(param_2 + 0x2480); } FUN_14019be10(lVar16,0); cVar5 = FUN_1401f58d0(param_1,param_2); if (cVar5 == '\0') goto LAB_1401f96ba; } FUN_14019be90(local_668); lVar16 = lVar19; if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) { lVar16 = **(longlong **)(param_2 + 0x2480); } FUN_14019beb0(local_668,lVar16); lVar16 = lVar19; if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) { lVar16 = **(longlong **)(param_2 + 0x2480); } FUN_14019bf10(local_668,lVar16); FUN_14019bf70(local_668,0); if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) { lVar19 = **(longlong **)(param_2 + 0x2480); } cVar5 = FUN_14019bfd0(local_668,lVar19,local_9e8); if (cVar5 != '\0') { if (local_9e8[0] == 0) { if (0 < *(int *)(param_2 + 0x2490)) { return; } *(undefined8 *)(param_2 + 0x2490) = 1; return; } cVar5 = FUN_1401f58d0(param_1,param_2); if (cVar5 != '\0') goto LAB_1401f978c; goto LAB_1401f96ba; } goto LAB_1401f978c; } if (iVar9 == 1) { uVar12 = 0; iVar9 = 0; if (*(int *)(param_2 + 0x2494) == 0) { uVar15 = uVar12; if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar15 = **(undefined8 **)(param_2 + 0x2480); } FUN_14019be10(uVar15,1); local_808 = local_800; FUN_14016ac90(&local_808,param_2 + 0x52,3); local_898 = local_890; FUN_14016ac90(&local_898,param_2 + 0x458,3); local_a18 = (uint)*(ushort *)(param_2 + 0x245c); FUN_140170320(param_2 + 0x2488, "GET %s HTTP/1.1\r\n\r\nHost: %s:%d\r\n\r\nConnection: Keep-Alive\r\n\r\n", local_898,local_808); if (local_898 != local_890) { free(local_898); } if (local_808 != local_800) { free(local_808); } cVar5 = FUN_1401f41e0(param_1,param_2); if (cVar5 == '\0') goto LAB_1401f96ba; } local_988 = Proud::AddrPort::vftable; local_978 = 0; local_990 = 0; local_980 = DAT_140344450; local_97c = DAT_140344454; if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar12 = **(undefined8 **)(param_2 + 0x2480); } cVar5 = FUN_14019c560(uVar12,0,&local_990); if (cVar5 != '\0') { *(undefined1 *)(param_2 + 0x24c0) = 0; if (local_978 == 0) goto LAB_1401f96ba; *(int *)(param_2 + 0x2504) = *(int *)(param_2 + 0x2504) + local_978; puVar22 = *(undefined **)(param_2 + 0x2488); if (puVar22 != (undefined *)0x0) { if (puVar22 == PTR_DAT_140344098) { iVar9 = 0; } else { iVar9 = *(int *)(puVar22 + -8); } } if ((iVar9 - *(int *)(param_2 + 0x2504)) + 1 < 1) { if (1 < *(int *)(param_2 + 0x2490)) { return; } *(undefined8 *)(param_2 + 0x2490) = 2; return; } FUN_1401f41e0(param_1,param_2); } goto LAB_1401f978c; } if (iVar9 == 2) { uVar12 = 0; if (*(int *)(param_2 + 0x2494) == 0) { *(undefined1 *)(param_2 + 0x2500) = 1; uVar15 = uVar12; if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar15 = **(undefined8 **)(param_2 + 0x2480); } iVar9 = FUN_14019d400(uVar15,0x8000); if (iVar9 == 0) goto LAB_1401f9327; } else { LAB_1401f9327: local_9a8 = Proud::AddrPort::vftable; local_998 = 0; local_9b0 = 0; local_9a0 = DAT_140344450; local_99c = DAT_140344454; uVar15 = uVar12; if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar15 = **(undefined8 **)(param_2 + 0x2480); } cVar5 = FUN_14019c2f0(uVar15,0,&local_9b0); if (cVar5 == '\0') { LAB_1401f978c: *(int *)(param_2 + 0x2494) = *(int *)(param_2 + 0x2494) + 1; return; } *(undefined1 *)(param_2 + 0x2500) = 0; if (local_998 == 0) { LAB_1401f96ba: if (2 < *(int *)(param_2 + 0x2490)) { return; } *(undefined8 *)(param_2 + 0x2490) = 3; return; } uVar15 = uVar12; if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar15 = **(undefined8 **)(param_2 + 0x2480); } uVar15 = FUN_14019c8b0(uVar15); FUN_1401f4260(param_2 + 0x2510,uVar15,local_998); *(int *)(param_2 + 0x2508) = *(int *)(param_2 + 0x2508) + local_998; iVar9 = 0x8000 - *(int *)(param_2 + 0x2508); if (iVar9 < 1) goto LAB_1401f96ba; *(undefined1 *)(param_2 + 0x2500) = 1; if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar12 = **(undefined8 **)(param_2 + 0x2480); } iVar9 = FUN_14019d400(uVar12,iVar9); if (iVar9 == 0) goto LAB_1401f978c; } *(undefined1 *)(param_2 + 0x2500) = 0; goto LAB_1401f93fd; } if (iVar9 != 3) { if (iVar9 == 4) { if (((*(int *)(param_2 + 0x2494) == 0) && (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0)) && (**(longlong **)(param_2 + 0x2480) != 0)) { FUN_14019c630(); } local_968 = Proud::AddrPort::vftable; uVar12 = 0; local_958 = 0; local_970 = 0; local_960 = DAT_140344450; local_95c = DAT_140344454; uVar15 = uVar12; if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar15 = **(undefined8 **)(param_2 + 0x2480); } cVar5 = FUN_14019c2f0(uVar15,0,&local_970); if (cVar5 != '\0') { *(undefined1 *)(param_2 + 0x2500) = 0; } if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) { uVar12 = **(undefined8 **)(param_2 + 0x2480); } cVar5 = FUN_14019c560(uVar12,0,&local_970); if (cVar5 != '\0') { *(undefined1 *)(param_2 + 0x24c0) = 0; } if ((*(char *)(param_2 + 0x2500) == '\0') && (*(char *)(param_2 + 0x24c0) == '\0')) { if (4 < *(int *)(param_2 + 0x2490)) { return; } *(undefined8 *)(param_2 + 0x2490) = 5; return; } } goto LAB_1401f978c; } uVar8 = 0; if (*(int *)(param_2 + 0x2528) == 0) goto LAB_1401f93fd; _Dst = (void *)FUN_14013c6f0(param_2 + 0x2538); memset(_Dst,0,(longlong)(*(int *)(param_2 + 0x2528) + 1)); _Src = (void *)0x0; if (*(int *)(param_2 + 0x2528) != 0) { _Src = *(void **)(param_2 + 0x2520); } memcpy(_Dst,_Src,(longlong)*(int *)(param_2 + 0x2528)); FUN_14013c7e0(param_2 + 0x2538); FUN_14016d8c0(); puVar22 = PTR_DAT_140344098; local_9d8 = PTR_DAT_140344098; FUN_1401f4f10(param_2 + 0x2538); FUN_14016d8c0(); puVar20 = (uint *)PTR_DAT_140344098; local_9f0 = (uint *)PTR_DAT_140344098; uVar6 = FUN_14016d7e0("MODELDESCRIPTION"); iVar9 = 0; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) { iVar9 = *(int *)((longlong)puVar20 + -8); } uVar7 = uVar6; if ((int)uVar6 <= iVar9) { uVar7 = 0; if ((puVar20 != (uint *)0x0) && (uVar7 = 0, puVar20 != (uint *)PTR_DAT_140344098)) { uVar7 = *(uint *)((longlong)puVar20 + -8); } } uVar21 = 1; if (1 < (int)uVar7) { uVar21 = uVar7; } iVar9 = 0; if ((puVar20 != (uint *)0x0) && (iVar9 = 0, puVar20 != (uint *)PTR_DAT_140344098)) { iVar9 = *(int *)((longlong)puVar20 + -8); } if (iVar9 < (int)uVar21) { if (puVar20 == (uint *)0x0) { puVar20 = (uint *)PTR_DAT_140344098; } local_9f0 = puVar20; if ((int)uVar21 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (uVar21 == 0) { FUN_14004f5a0(&local_9f0); } else { uVar7 = 0; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) { uVar7 = puVar20[-2]; } if (uVar21 != uVar7) { puVar13 = (uint *)FUN_14016d940((longlong)(int)uVar21 + 9); if (puVar13 != (uint *)0x0) { *puVar13 = 0; puVar13[1] = 1; } *puVar13 = uVar21; uVar7 = 0; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) { uVar7 = puVar20[-2]; } puVar10 = (uint *)PTR_DAT_140344098; if ((int)uVar21 < (int)uVar7) { LAB_1401f8835: if (puVar20 != (uint *)0x0) { puVar10 = puVar20; } } else { uVar21 = uVar8; if (puVar20 != (uint *)0x0) { if (puVar20 != (uint *)PTR_DAT_140344098) { uVar21 = puVar20[-2]; } goto LAB_1401f8835; } } FUN_14016d810(puVar13 + 2,puVar10,uVar21); FUN_14004f5a0(&local_9f0); local_9f0 = puVar13 + 2; } } } FUN_14013c600(&local_9f0); puVar20 = local_9f0; puVar13 = local_9f0; if (local_9f0 == (uint *)0x0) { puVar13 = (uint *)PTR_DAT_140344098; } FUN_14016d810(puVar13,"MODELDESCRIPTION",uVar6); puVar13 = puVar20; if (puVar20 == (uint *)0x0) { puVar13 = (uint *)PTR_DAT_140344098; } uVar7 = FUN_14016d7e0(puVar13); uVar6 = 0; if (0 < (int)uVar7) { uVar6 = uVar7; } uVar7 = 0; if ((puVar20 != (uint *)0x0) && (uVar7 = 0, puVar20 != (uint *)PTR_DAT_140344098)) { uVar7 = puVar20[-2]; } if (((int)uVar6 < (int)uVar7) || (uVar6 = 0, puVar20 == (uint *)0x0)) { LAB_1401f88cd: if (((puVar20 != (uint *)PTR_DAT_140344098) && (puVar20 != (uint *)0x0)) && (puVar13 = puVar20 + -2, puVar13 != (uint *)0x0)) { *puVar13 = uVar6; *(undefined1 *)((longlong)(int)uVar6 + 8 + (longlong)puVar13) = 0; } } else if (puVar20 != (uint *)PTR_DAT_140344098) { uVar6 = puVar20[-2]; goto LAB_1401f88cd; } FUN_14016d8c0(); puVar13 = (uint *)PTR_DAT_140344098; local_a00 = (uint *)PTR_DAT_140344098; uVar6 = FUN_14016d7e0("FRIENDLYNAME"); iVar9 = 0; if ((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) { iVar9 = *(int *)((longlong)puVar13 + -8); } uVar7 = uVar6; if ((int)uVar6 <= iVar9) { uVar7 = 0; if ((puVar13 != (uint *)0x0) && (uVar7 = 0, puVar13 != (uint *)PTR_DAT_140344098)) { uVar7 = *(uint *)((longlong)puVar13 + -8); } } uVar21 = 1; if (1 < (int)uVar7) { uVar21 = uVar7; } iVar9 = 0; if ((puVar13 != (uint *)0x0) && (iVar9 = 0, puVar13 != (uint *)PTR_DAT_140344098)) { iVar9 = *(int *)((longlong)puVar13 + -8); } if (iVar9 < (int)uVar21) { if (puVar13 == (uint *)0x0) { puVar13 = (uint *)PTR_DAT_140344098; } local_a00 = puVar13; if ((int)uVar21 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (uVar21 == 0) { FUN_14004f5a0(&local_a00); } else { uVar7 = 0; if ((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) { uVar7 = puVar13[-2]; } if (uVar21 != uVar7) { puVar10 = (uint *)FUN_14016d940((longlong)(int)uVar21 + 9); if (puVar10 != (uint *)0x0) { *puVar10 = 0; puVar10[1] = 1; } *puVar10 = uVar21; uVar7 = 0; if ((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) { uVar7 = puVar13[-2]; } puVar11 = (uint *)PTR_DAT_140344098; if ((int)uVar21 < (int)uVar7) { LAB_1401f89da: if (puVar13 != (uint *)0x0) { puVar11 = puVar13; } } else { uVar21 = uVar8; if (puVar13 != (uint *)0x0) { if (puVar13 != (uint *)PTR_DAT_140344098) { uVar21 = puVar13[-2]; } goto LAB_1401f89da; } } FUN_14016d810(puVar10 + 2,puVar11,uVar21); FUN_14004f5a0(&local_a00); local_a00 = puVar10 + 2; } } } FUN_14013c600(&local_a00); puVar13 = local_a00; puVar10 = local_a00; if (local_a00 == (uint *)0x0) { puVar10 = (uint *)PTR_DAT_140344098; } FUN_14016d810(puVar10,"FRIENDLYNAME",uVar6); puVar10 = puVar13; if (puVar13 == (uint *)0x0) { puVar10 = (uint *)PTR_DAT_140344098; } uVar7 = FUN_14016d7e0(puVar10); uVar6 = 0; if (0 < (int)uVar7) { uVar6 = uVar7; } uVar7 = 0; if ((puVar13 != (uint *)0x0) && (uVar7 = 0, puVar13 != (uint *)PTR_DAT_140344098)) { uVar7 = puVar13[-2]; } if (((int)uVar6 < (int)uVar7) || (uVar6 = 0, puVar13 == (uint *)0x0)) { LAB_1401f8a72: if (((puVar13 != (uint *)PTR_DAT_140344098) && (puVar13 != (uint *)0x0)) && (puVar10 = puVar13 + -2, puVar10 != (uint *)0x0)) { *puVar10 = uVar6; *(undefined1 *)((longlong)(int)uVar6 + 8 + (longlong)puVar10) = 0; } } else if (puVar13 != (uint *)PTR_DAT_140344098) { uVar6 = puVar13[-2]; goto LAB_1401f8a72; } local_a08 = (uint *)FUN_1401f5bd0(local_9e0,&local_9d0,param_2 + 0x2538,&local_9f0); FUN_14016d8c0(); puVar10 = (uint *)PTR_DAT_140344098; local_9f8 = (uint *)PTR_DAT_140344098; local_9e8[0] = FUN_14016d7e0(&DAT_140294450); iVar9 = 0; if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) { iVar9 = *(int *)((longlong)puVar10 + -8); } uVar6 = local_9e8[0]; if ((int)local_9e8[0] <= iVar9) { uVar6 = 0; if ((puVar10 != (uint *)0x0) && (uVar6 = 0, puVar10 != (uint *)PTR_DAT_140344098)) { uVar6 = *(uint *)((longlong)puVar10 + -8); } } uVar7 = 1; if (1 < (int)uVar6) { uVar7 = uVar6; } iVar9 = 0; if ((puVar10 != (uint *)0x0) && (iVar9 = 0, puVar10 != (uint *)PTR_DAT_140344098)) { iVar9 = *(int *)((longlong)puVar10 + -8); } if (iVar9 < (int)uVar7) { if (puVar10 == (uint *)0x0) { puVar10 = (uint *)PTR_DAT_140344098; } local_9f8 = puVar10; if ((int)uVar7 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (uVar7 == 0) { FUN_14004f5a0(&local_9f8); } else { uVar6 = 0; if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) { uVar6 = puVar10[-2]; } if (uVar7 != uVar6) { puVar11 = (uint *)FUN_14016d940((longlong)(int)uVar7 + 9); if (puVar11 != (uint *)0x0) { *puVar11 = 0; puVar11[1] = 1; } *puVar11 = uVar7; uVar6 = 0; if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) { uVar6 = puVar10[-2]; } puVar18 = (uint *)PTR_DAT_140344098; if ((int)uVar7 < (int)uVar6) { LAB_1401f8ba9: if (puVar10 != (uint *)0x0) { puVar18 = puVar10; } } else { uVar7 = uVar8; if (puVar10 != (uint *)0x0) { if (puVar10 != (uint *)PTR_DAT_140344098) { uVar7 = puVar10[-2]; } goto LAB_1401f8ba9; } } FUN_14016d810(puVar11 + 2,puVar18,uVar7); FUN_14004f5a0(&local_9f8); local_9f8 = puVar11 + 2; } } } FUN_14013c600(&local_9f8); puVar10 = local_9f8; puVar11 = local_9f8; if (local_9f8 == (uint *)0x0) { puVar11 = (uint *)PTR_DAT_140344098; } FUN_14016d810(puVar11,&DAT_140294450,local_9e8[0]); puVar11 = puVar10; if (puVar10 == (uint *)0x0) { puVar11 = (uint *)PTR_DAT_140344098; } uVar7 = FUN_14016d7e0(puVar11); uVar6 = 0; if (0 < (int)uVar7) { uVar6 = uVar7; } uVar7 = 0; if ((puVar10 != (uint *)0x0) && (uVar7 = 0, puVar10 != (uint *)PTR_DAT_140344098)) { uVar7 = puVar10[-2]; } if (((int)uVar6 < (int)uVar7) || (uVar6 = 0, puVar10 == (uint *)0x0)) { LAB_1401f8c43: if (((puVar10 != (uint *)PTR_DAT_140344098) && (puVar10 != (uint *)0x0)) && (puVar11 = puVar10 + -2, puVar11 != (uint *)0x0)) { *puVar11 = uVar6; *(undefined1 *)((longlong)(int)uVar6 + 8 + (longlong)puVar11) = 0; } } else if (puVar10 != (uint *)PTR_DAT_140344098) { uVar6 = puVar10[-2]; goto LAB_1401f8c43; } uVar12 = FUN_1401f5bd0(local_9e0,&local_9b8,param_2 + 0x2538,&local_a00); uVar12 = FUN_1401bd540(&local_9c0,uVar12,&local_9f8); local_a08 = (uint *)FUN_1401bd540(&local_9c8,uVar12,local_a08); if (puVar22 == (undefined *)0x0) { puVar22 = PTR_DAT_140344098; } local_9d8 = puVar22; if (*(undefined **)local_a08 != puVar22) { uVar12 = FUN_14016d8c0(); local_920 = uVar12; FUN_14016db50(uVar12); local_918 = 1; if (((puVar22 != (undefined *)0x0) && (puVar22 != PTR_DAT_140344098)) && (puVar22 + -8 != (undefined *)0x0)) { uVar12 = FUN_14016d8c0(); local_8a8 = uVar12; FUN_14016db50(uVar12); local_8a0 = 1; piVar2 = (int *)(puVar22 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(puVar22 + -8); } FUN_14016dbe0(uVar12); uVar12 = local_920; } puVar22 = *(undefined **)local_a08; if (((puVar22 != PTR_DAT_140344098) && (puVar22 != (undefined *)0x0)) && (puVar22 != (undefined *)0x8)) { *(int *)(puVar22 + -4) = *(int *)(puVar22 + -4) + 1; } local_9d8 = puVar22; FUN_14016dbe0(uVar12); } if (((local_9c8 != (undefined *)0x0) && (local_9c8 != PTR_DAT_140344098)) && (local_9c8 + -8 != (undefined *)0x0)) { local_930 = FUN_14016d8c0(); FUN_14016db50(local_930); local_928 = 1; piVar2 = (int *)(local_9c8 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(local_9c8 + -8); } FUN_14016dbe0(local_930); } local_9c8 = PTR_DAT_140344098; if (((local_9c0 != (undefined *)0x0) && (local_9c0 != PTR_DAT_140344098)) && (local_9c0 + -8 != (undefined *)0x0)) { local_950 = FUN_14016d8c0(); FUN_14016db50(local_950); local_948 = 1; piVar2 = (int *)(local_9c0 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(local_9c0 + -8); } FUN_14016dbe0(local_950); } local_9c0 = PTR_DAT_140344098; if (((local_9b8 != (undefined *)0x0) && (local_9b8 != PTR_DAT_140344098)) && (local_9b8 + -8 != (undefined *)0x0)) { local_940 = FUN_14016d8c0(); FUN_14016db50(local_940); local_938 = 1; piVar2 = (int *)(local_9b8 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(local_9b8 + -8); } FUN_14016dbe0(local_940); } local_9b8 = PTR_DAT_140344098; if (((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) && (puVar10 + -2 != (uint *)0x0)) { uVar12 = FUN_14016d8c0(); local_8b8 = uVar12; FUN_14016db50(uVar12); local_8b0 = 1; puVar11 = puVar10 + -1; *puVar11 = *puVar11 - 1; if (*puVar11 == 0) { FUN_14016d970(puVar10 + -2); } FUN_14016dbe0(uVar12); } if (((local_9d0 != (undefined *)0x0) && (local_9d0 != PTR_DAT_140344098)) && (local_9d0 + -8 != (undefined *)0x0)) { uVar12 = FUN_14016d8c0(); local_900 = uVar12; FUN_14016db50(uVar12); local_8f8 = 1; piVar2 = (int *)(local_9d0 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(local_9d0 + -8); } FUN_14016dbe0(uVar12); } local_9d0 = PTR_DAT_140344098; if (((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) && (puVar13 + -2 != (uint *)0x0)) { uVar12 = FUN_14016d8c0(); local_8f0 = uVar12; FUN_14016db50(uVar12); local_8e8 = 1; puVar10 = puVar13 + -1; *puVar10 = *puVar10 - 1; if (*puVar10 == 0) { FUN_14016d970(puVar13 + -2); } FUN_14016dbe0(uVar12); } if (((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) && (puVar20 + -2 != (uint *)0x0)) { uVar12 = FUN_14016d8c0(); local_8c8 = uVar12; FUN_14016db50(uVar12); local_8c0 = 1; puVar13 = puVar20 + -1; *puVar13 = *puVar13 - 1; if (*puVar13 == 0) { FUN_14016d970(puVar20 + -2); } FUN_14016dbe0(uVar12); } if (((puVar22 != (undefined *)0x0) && (puVar22 != PTR_DAT_140344098)) && (2 < *(int *)(puVar22 + -8))) { local_778 = local_770; FUN_14015b060(&local_778,puVar22,3); puVar14 = local_778; FUN_14016d8c0(); puVar20 = (uint *)PTR_DAT_1403440a0; local_a08 = (uint *)PTR_DAT_1403440a0; uVar6 = FUN_14016d740(puVar14); iVar9 = 0; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) { iVar9 = *(int *)((longlong)puVar20 + -8); } uVar7 = uVar6; if ((int)uVar6 <= iVar9) { uVar7 = 0; if ((puVar20 != (uint *)0x0) && (uVar7 = 0, puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar7 = *(uint *)((longlong)puVar20 + -8); } } uVar21 = 1; if (1 < (int)uVar7) { uVar21 = uVar7; } iVar9 = 0; if ((puVar20 != (uint *)0x0) && (iVar9 = 0, puVar20 != (uint *)PTR_DAT_1403440a0)) { iVar9 = *(int *)((longlong)puVar20 + -8); } if (iVar9 < (int)uVar21) { if (puVar20 == (uint *)0x0) { puVar20 = (uint *)PTR_DAT_1403440a0; } local_a08 = puVar20; if ((int)uVar21 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (uVar21 == 0) { FUN_14004eb70(&local_a08); } else { uVar7 = 0; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar7 = puVar20[-2]; } if (uVar21 != uVar7) { puVar13 = (uint *)FUN_14016d940((longlong)(int)uVar21 * 2 + 10); if (puVar13 != (uint *)0x0) { *puVar13 = 0; puVar13[1] = 1; } *puVar13 = uVar21; uVar7 = 0; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar7 = puVar20[-2]; } puVar10 = (uint *)PTR_DAT_1403440a0; if ((int)uVar21 < (int)uVar7) { LAB_1401f90ac: if (puVar20 != (uint *)0x0) { puVar10 = puVar20; } } else { uVar21 = uVar8; if (puVar20 != (uint *)0x0) { if (puVar20 != (uint *)PTR_DAT_1403440a0) { uVar21 = puVar20[-2]; } goto LAB_1401f90ac; } } FUN_14016d770(puVar13 + 2,puVar10,uVar21); FUN_14004eb70(&local_a08); local_a08 = puVar13 + 2; } } } FUN_14004e850(&local_a08); puVar20 = local_a08; puVar13 = local_a08; if (local_a08 == (uint *)0x0) { puVar13 = (uint *)PTR_DAT_1403440a0; } FUN_14016d770(puVar13,puVar14,uVar6); puVar13 = puVar20; if (puVar20 == (uint *)0x0) { puVar13 = (uint *)PTR_DAT_1403440a0; } uVar6 = FUN_14016d740(puVar13); plVar1 = local_9e0; uVar8 = 0; if (0 < (int)uVar6) { uVar8 = uVar6; } uVar6 = 0; if ((puVar20 != (uint *)0x0) && (uVar6 = 0, puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar6 = puVar20[-2]; } if (((int)uVar8 < (int)uVar6) || (uVar8 = 0, puVar20 == (uint *)0x0)) { LAB_1401f9140: if (((puVar20 != (uint *)PTR_DAT_1403440a0) && (puVar20 != (uint *)0x0)) && (puVar20 + -2 != (uint *)0x0)) { puVar20[-2] = uVar8; *(ushort *)((longlong)puVar20 + (longlong)(int)uVar8 * 2) = 0; } } else if (puVar20 != (uint *)PTR_DAT_1403440a0) { uVar8 = puVar20[-2]; goto LAB_1401f9140; } puVar13 = puVar20; if (puVar20 == (uint *)0x0) { puVar13 = (uint *)PTR_DAT_1403440a0; } if (puVar13 == (uint *)0x0) { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80004005); } uVar8 = 0; puVar13 = puVar20; if (puVar20 == (uint *)0x0) { puVar13 = (uint *)PTR_DAT_1403440a0; } uVar3 = (ushort)*puVar13; while (uVar3 != 0) { uVar8 = uVar8 * 0x21 + (uint)uVar3; puVar13 = (uint *)((longlong)puVar13 + 2); uVar3 = *(ushort *)puVar13; } uVar6 = *(uint *)(local_9e0 + 0x1a); if (local_9e0[0x16] != 0) { plVar4 = *(longlong **)(local_9e0[0x16] + ((ulonglong)uVar8 % (ulonglong)uVar6) * 8); while( true ) { if ((plVar4 == (longlong *)0x0) || ((uint)((ulonglong)uVar8 % (ulonglong)uVar6) != *(uint *)(plVar4 + 4) % *(uint *)(plVar1 + 0x1a))) goto LAB_1401f9224; puVar17 = (undefined *)*plVar4; if ((undefined *)*plVar4 == (undefined *)0x0) { puVar17 = PTR_DAT_1403440a0; } iVar9 = FUN_14016d780(puVar17); if (iVar9 == 0) break; plVar4 = (longlong *)plVar4[2]; } if (plVar4 != (longlong *)0x0) goto LAB_1401f9238; } LAB_1401f9224: puVar14 = (undefined1 *)FUN_1401f7660(plVar1 + 0x15,&local_a08); *puVar14 = 0; LAB_1401f9238: if (((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) && (puVar20 + -2 != (uint *)0x0)) { uVar12 = FUN_14016d8c0(); local_8d8 = uVar12; FUN_14016db50(uVar12); local_8d0 = 1; puVar13 = puVar20 + -1; *puVar13 = *puVar13 - 1; if (*puVar13 == 0) { FUN_14016d970(puVar20 + -2); } FUN_14016dbe0(uVar12); } if (local_778 != local_770) { free(local_778); } } if (((puVar22 != (undefined *)0x0) && (puVar22 != PTR_DAT_140344098)) && (puVar22 + -8 != (undefined *)0x0)) { uVar12 = FUN_14016d8c0(); local_910 = uVar12; FUN_14016db50(uVar12); local_908 = 1; piVar2 = (int *)(puVar22 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(puVar22 + -8); } FUN_14016dbe0(uVar12); } LAB_1401f93fd: if (3 < *(int *)(param_2 + 0x2490)) { return; } *(undefined8 *)(param_2 + 0x2490) = 4; return; }