/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14004f490 FUN_14004f490 * Pseudocode, not original source. */ /* WARNING: Function: __chkstk replaced with injection: alloca_probe */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x00014004f97b) */ /* WARNING: Removing unreachable block (ram,0x00014004f81f) */ /* WARNING: Removing unreachable block (ram,0x00014004fadb) */ void FUN_14004f490(SIZE_T *param_1,wchar_t *param_2,SIZE_T param_3,undefined *param_4) { code *pcVar1; longlong lVar2; int *piVar3; longlong lVar4; ulonglong uVar5; undefined4 *puVar6; longlong *plVar7; ulonglong uVar8; longlong lVar9; undefined1 *puVar10; undefined1 *puVar11; undefined1 *puVar12; undefined1 *puVar13; int iVar14; longlong lVar15; SIZE_T SVar16; undefined8 *puVar17; longlong *plVar18; double dVar19; undefined1 auStack_a8 [32]; int *local_88; bool local_80; longlong *local_78; int *local_70; undefined1 local_68; SIZE_T local_60; SIZE_T local_58; undefined8 local_50; ulonglong local_48; puVar10 = auStack_a8; puVar13 = auStack_a8; local_50 = 0xfffffffffffffffe; local_48 = DAT_14016f5a0 ^ (ulonglong)&local_88; piVar3 = (int *)(**(code **)(*param_1 + 0x58))(); local_70 = piVar3; FUN_14003d040(piVar3); local_68 = 1; if (DAT_14017614f != '\0') { param_3 = *param_1; param_2 = L"Proud::CNetServerImpl::TcpAndUdp_DoForLongInterval"; (**(code **)(param_3 + 200))(param_1); } lVar4 = (longlong)(int)param_1[0xdc]; puVar17 = (undefined8 *)0x0; if (0 < (int)param_1[0xdc]) { uVar8 = lVar4 * 8 + 0x10; if (uVar8 < 0x401) { uVar5 = lVar4 * 8 + 0x1f; if (uVar5 <= uVar8) { uVar5 = 0xffffffffffffff0; } lVar9 = -(uVar5 & 0xfffffffffffffff0); puVar10 = auStack_a8 + lVar9; puVar6 = (undefined4 *)((longlong)&local_88 + lVar9); puVar17 = (undefined8 *)0x0; puVar13 = auStack_a8 + lVar9; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xcccc; LAB_14004f57e: puVar17 = (undefined8 *)(puVar6 + 4); puVar13 = puVar10; } } else { puVar6 = malloc(uVar8); puVar17 = (undefined8 *)0x0; puVar13 = auStack_a8; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xdddd; goto LAB_14004f57e; } } iVar14 = 0; lVar9 = 0; piVar3 = local_70; if (0 < lVar4) { do { if ((lVar9 < 0) || ((int)param_1[0xdc] <= iVar14)) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar13 + -8) = &UNK_14004f5cf; FUN_14003def0(uVar8,param_2,param_3,param_4); } plVar18 = *(longlong **)(param_1[0xdb] + lVar9 * 8); lVar15 = 0; if (plVar18 != (longlong *)0x0) { lVar15 = *plVar18; } uVar8 = lVar15 + 0x40; *(undefined8 *)(puVar13 + -8) = 0x14004f5ba; FUN_140091240(uVar8); puVar17[lVar9] = lVar15; iVar14 = iVar14 + 1; lVar9 = lVar9 + 1; piVar3 = local_70; } while (lVar9 < lVar4); } } local_58 = param_1[0x193]; plVar18 = (longlong *)0x0; if (0 < (int)local_58) { lVar9 = (longlong)(int)local_58 * 8; uVar8 = lVar9 + 0x10; if (uVar8 < 0x401) { uVar5 = lVar9 + 0x1f; if (uVar5 <= uVar8) { uVar5 = 0xffffffffffffff0; } *(undefined8 *)(puVar13 + -8) = 0x14004f61c; lVar9 = -(uVar5 & 0xfffffffffffffff0); puVar11 = puVar13 + lVar9; puVar6 = (undefined4 *)(puVar13 + lVar9 + 0x20); plVar18 = (longlong *)0x0; puVar13 = puVar13 + lVar9; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xcccc; puVar13 = puVar11; LAB_14004f646: plVar18 = (longlong *)(puVar6 + 4); } } else { *(undefined8 *)(puVar13 + -8) = 0x14004f638; puVar6 = malloc(uVar8); plVar18 = (longlong *)0x0; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xdddd; goto LAB_14004f646; } } plVar7 = plVar18; if (param_1[0x193] == 0) { SVar16 = 0; } else { SVar16 = param_1[0x191]; } for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x10)) { lVar9 = *(longlong *)(SVar16 + 8); *(undefined8 *)(puVar13 + -8) = 0x14004f677; FUN_140091240(lVar9 + 0xc0); *plVar7 = lVar9; plVar7 = plVar7 + 1; } } local_60 = param_1[0x2e1]; local_78 = (longlong *)0x0; if ((int)local_60 < 1) goto LAB_14004f746; lVar9 = (longlong)(int)local_60 * 8; uVar8 = lVar9 + 0x10; if (uVar8 < 0x401) { uVar5 = lVar9 + 0x1f; if (uVar5 <= uVar8) { uVar5 = 0xffffffffffffff0; } *(undefined8 *)(puVar13 + -8) = 0x14004f6d1; lVar9 = -(uVar5 & 0xfffffffffffffff0); puVar12 = puVar13 + lVar9; plVar7 = (longlong *)(puVar13 + lVar9 + 0x20); puVar13 = puVar13 + lVar9; local_78 = plVar7; if (plVar7 != (longlong *)0x0) { *(undefined4 *)plVar7 = 0xcccc; puVar13 = puVar12; LAB_14004f6ff: local_78 = plVar7 + 2; } } else { *(undefined8 *)(puVar13 + -8) = 0x14004f6f0; plVar7 = malloc(uVar8); local_78 = plVar7; if (plVar7 != (longlong *)0x0) { *(undefined4 *)plVar7 = 0xdddd; goto LAB_14004f6ff; } } plVar7 = local_78; if (param_1[0x2e1] == 0) { SVar16 = 0; } else { SVar16 = param_1[0x2df]; } for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x18)) { lVar9 = *(longlong *)(SVar16 + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14004f735; FUN_140091240(lVar9 + 0xc0); *plVar7 = lVar9; plVar7 = plVar7 + 1; } LAB_14004f746: pcVar1 = *(code **)(param_1[0x23] + 8); *(undefined8 *)(puVar13 + -8) = 0x14004f753; dVar19 = (double)(*pcVar1)(); *(undefined8 *)(puVar13 + -8) = 0x14004f75f; FUN_14003d0d0((longlong)piVar3); local_68 = 0; if (puVar17 != (undefined8 *)0x0) { while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) { do { lVar15 = puVar17[lVar9]; pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x88) + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14004f791; piVar3 = (int *)(*pcVar1)(); local_80 = false; local_88 = piVar3; if (lVar9 == 0) { local_80 = true; *(undefined8 *)(puVar13 + -8) = 0x14004f7eb; FUN_14003d040(piVar3); *(undefined8 *)(puVar13 + -8) = 0x14004f7f7; FUN_1400915d0(lVar15,param_2,param_3,param_4); *(undefined8 *)(puVar13 + -8) = 0x14004f7ff; FUN_14003d0d0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14004f80f; FUN_140091250(lVar15 + 0x40); *puVar17 = puVar17[lVar4 + -1]; LAB_14004f817: lVar4 = lVar4 + -1; } else { *(undefined8 *)(puVar13 + -8) = 0x14004f7a9; local_80 = FUN_14003d090(piVar3); if (local_80) { *(undefined8 *)(puVar13 + -8) = 0x14004f7bf; FUN_1400915d0(lVar15,param_2,param_3,param_4); *(undefined8 *)(puVar13 + -8) = 0x14004f7c7; FUN_14003d0d0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14004f7d7; FUN_140091250(lVar15 + 0x40); puVar17[lVar9] = puVar17[lVar4 + -1]; goto LAB_14004f817; } } lVar9 = lVar9 + 1; } while (lVar9 < lVar4); } if (*(int *)(puVar17 + -2) == 0xdddd) { *(undefined8 *)(puVar13 + -8) = 0x14004f852; free(puVar17 + -2); } } if (plVar18 != (longlong *)0x0) { lVar4 = (longlong)(int)local_58; while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) { do { lVar15 = plVar18[lVar9]; pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14004f892; piVar3 = (int *)(*pcVar1)(); local_80 = false; local_88 = piVar3; if (lVar9 == 0) { local_80 = true; *(undefined8 *)(puVar13 + -8) = 0x14004f91c; FUN_14003d040(piVar3); lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14004f92d; FUN_140090cc0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14004f952; FUN_14008e5f0(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14004f95a; FUN_14003d0d0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14004f96c; FUN_140091250(lVar15 + 0xc0); *plVar18 = plVar18[lVar4 + -1]; LAB_14004f974: lVar4 = lVar4 + -1; } else { *(undefined8 *)(puVar13 + -8) = 0x14004f8aa; local_80 = FUN_14003d090(piVar3); if (local_80) { lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14004f8c9; FUN_140090cc0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14004f8ee; FUN_14008e5f0(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14004f8f6; FUN_14003d0d0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14004f908; FUN_140091250(lVar15 + 0xc0); plVar18[lVar9] = plVar18[lVar4 + -1]; goto LAB_14004f974; } } lVar9 = lVar9 + 1; } while (lVar9 < lVar4); } if ((int)plVar18[-2] == 0xdddd) { *(undefined8 *)(puVar13 + -8) = 0x14004f9ae; free(plVar18 + -2); } } plVar18 = local_78; if (local_78 != (longlong *)0x0) { lVar4 = (longlong)(int)local_60; while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) { do { lVar15 = plVar18[lVar9]; pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14004f9f2; piVar3 = (int *)(*pcVar1)(); local_80 = false; local_88 = piVar3; if (lVar9 == 0) { local_80 = true; *(undefined8 *)(puVar13 + -8) = 0x14004fa7c; FUN_14003d040(piVar3); lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14004fa8d; FUN_140090cc0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14004fab2; FUN_14008e5f0(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14004faba; FUN_14003d0d0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14004facc; FUN_140091250(lVar15 + 0xc0); *plVar18 = plVar18[lVar4 + -1]; LAB_14004fad4: lVar4 = lVar4 + -1; } else { *(undefined8 *)(puVar13 + -8) = 0x14004fa0a; local_80 = FUN_14003d090(piVar3); if (local_80) { lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14004fa29; FUN_140090cc0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14004fa4e; FUN_14008e5f0(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14004fa56; FUN_14003d0d0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14004fa68; FUN_140091250(lVar15 + 0xc0); plVar18[lVar9] = plVar18[lVar4 + -1]; goto LAB_14004fad4; } } lVar9 = lVar9 + 1; } while (lVar9 < lVar4); } if ((int)plVar18[-2] == 0xdddd) { *(undefined8 *)(puVar13 + -8) = 0x14004fb0e; free(plVar18 + -2); } } *(undefined8 *)(puVar13 + -8) = 0x14004fb1b; return; }