/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14002ac70 FUN_14002ac70 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x00014002b060) */ /* WARNING: Removing unreachable block (ram,0x00014002b067) */ /* WARNING: Removing unreachable block (ram,0x00014002b080) */ /* WARNING: Removing unreachable block (ram,0x00014002b08c) */ /* WARNING: Removing unreachable block (ram,0x00014002b084) */ /* WARNING: Removing unreachable block (ram,0x00014002b092) */ /* WARNING: Removing unreachable block (ram,0x00014002b0a4) */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_14002ac70(undefined8 *param_1,undefined8 param_2,longlong param_3,longlong param_4) { uint uVar1; int *piVar2; int *piVar3; ulonglong *puVar4; undefined *puVar5; int *piVar6; undefined4 *puVar7; undefined4 *puVar8; undefined4 **ppuVar9; LPCWSTR pWVar10; longlong lVar11; int iVar12; undefined4 *puVar13; undefined *puVar14; undefined4 *puVar15; longlong lVar16; longlong *plVar17; int iVar18; undefined1 auStack_178 [32]; int *local_158; int *local_150; undefined1 local_148; int *local_140; undefined1 local_138; undefined8 local_128; undefined4 **local_120; longlong *local_118; undefined4 *local_110; uint local_108; undefined4 uStack_104; undefined4 uStack_100; undefined4 local_fc; undefined *local_f8; undefined4 *local_f0; uint local_e8; undefined **local_e0; longlong *local_d8; undefined4 *local_d0; int local_c8; undefined4 local_b8; undefined4 local_b4; undefined4 local_b0; undefined4 local_ac; undefined4 local_a8; undefined8 local_a4; undefined4 local_9c; undefined1 local_91; undefined1 local_80; undefined **local_70; longlong *local_68; undefined4 *local_60; ulonglong local_38; local_128 = 0xfffffffffffffffe; local_38 = DAT_1401555a0 ^ (ulonglong)auStack_178; (**(code **)(*(longlong *)*param_1 + 0x178))((longlong *)*param_1,0x406e000000000000); FUN_14003b670(&local_f8,param_2,param_3,param_4); if (*(char *)(DAT_140162d68 + 0x151) == '\0') { if (local_f0 == (undefined4 *)0x0) { local_f0 = (undefined4 *)PTR_DAT_140155010; } if ((undefined4 *)param_1[1] != local_f0) { puVar5 = PTR_DAT_140155010; piVar2 = (int *)FUN_140030200(local_f0,PTR_DAT_140155010,param_3,param_4); piVar6 = piVar2; local_150 = piVar2; FUN_14002e6e0(piVar2); puVar7 = local_f0; local_148 = 1; if (((local_f0 != (undefined4 *)0x0) && (local_f0 != (undefined4 *)PTR_DAT_140155010)) && (puVar13 = local_f0 + -2, puVar13 != (undefined4 *)0x0)) { piVar3 = (int *)FUN_140030200(piVar6,puVar5,param_3,param_4); local_140 = piVar3; FUN_14002e6e0(piVar3); local_138 = 1; piVar6 = puVar7 + -1; *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_1400302f0(puVar13); } FUN_14002e770((longlong)piVar3); } local_f0 = (undefined4 *)param_1[1]; if (((local_f0 != (undefined4 *)PTR_DAT_140155010) && (local_f0 != (undefined4 *)0x0)) && (local_f0 != (undefined4 *)0x8)) { local_f0[-1] = local_f0[-1] + 1; } FUN_14002e770((longlong)piVar2); } puVar5 = PTR_DAT_140155010; puVar7 = (undefined4 *)param_1[1]; if ((undefined4 *)param_1[1] == (undefined4 *)0x0) { puVar7 = (undefined4 *)PTR_DAT_140155010; } param_1[1] = puVar7; if (local_f0 == puVar7) goto LAB_14002af7d; piVar6 = (int *)FUN_140030200(local_f0,puVar5,param_3,param_4); local_150 = piVar6; FUN_14002e6e0(piVar6); local_148 = 1; FUN_140003240(param_1 + 1,puVar5,param_3,param_4); param_1[1] = local_f0; if (((local_f0 != (undefined4 *)PTR_DAT_140155010) && (local_f0 != (undefined4 *)0x0)) && (local_f0 != (undefined4 *)0x8)) { local_f0[-1] = local_f0[-1] + 1; } } else { if (local_f8 == (undefined *)0x0) { local_f8 = PTR_DAT_140155010; } if ((undefined *)param_1[1] != local_f8) { piVar2 = (int *)FUN_140030200(PTR_DAT_140155010,param_2,param_3,param_4); piVar6 = piVar2; local_140 = piVar2; FUN_14002e6e0(piVar2); puVar5 = local_f8; local_138 = 1; if (((local_f8 != (undefined *)0x0) && (local_f8 != PTR_DAT_140155010)) && (puVar14 = local_f8 + -8, puVar14 != (undefined *)0x0)) { piVar3 = (int *)FUN_140030200(piVar6,param_2,param_3,param_4); local_150 = piVar3; FUN_14002e6e0(piVar3); local_148 = 1; piVar6 = (int *)(puVar5 + -4); *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_1400302f0(puVar14); } FUN_14002e770((longlong)piVar3); } local_f8 = (undefined *)param_1[1]; if (((local_f8 != PTR_DAT_140155010) && (local_f8 != (undefined *)0x0)) && (local_f8 != (undefined *)0x8)) { *(int *)(local_f8 + -4) = *(int *)(local_f8 + -4) + 1; } FUN_14002e770((longlong)piVar2); } pWVar10 = (LPCWSTR)param_1[1]; if ((LPCWSTR)param_1[1] == (LPCWSTR)0x0) { pWVar10 = (LPCWSTR)PTR_DAT_140155010; } puVar4 = FUN_140026050((ulonglong *)&local_120,pWVar10); if (7 < puVar4[3]) { puVar4 = (ulonglong *)*puVar4; } ppuVar9 = &local_f0; FUN_140006c60((longlong *)ppuVar9,(short *)puVar4,param_3,param_4); if (7 < CONCAT44(uStack_104,local_108)) { ppuVar9 = local_120; operator_delete(local_120); } puVar5 = (undefined *)param_1[1]; if ((undefined *)param_1[1] == (undefined *)0x0) { puVar5 = PTR_DAT_140155010; } param_1[1] = puVar5; if (local_f8 == puVar5) goto LAB_14002af7d; piVar6 = (int *)FUN_140030200(ppuVar9,puVar4,param_3,param_4); local_150 = piVar6; FUN_14002e6e0(piVar6); local_148 = 1; FUN_140003240(param_1 + 1,puVar4,param_3,param_4); param_1[1] = local_f8; if (((local_f8 != PTR_DAT_140155010) && (local_f8 != (undefined *)0x0)) && (local_f8 != (undefined *)0x8)) { *(int *)(local_f8 + -4) = *(int *)(local_f8 + -4) + 1; } } FUN_14002e770((longlong)piVar6); LAB_14002af7d: local_e8 = *(uint *)(param_1 + 2); local_b4 = DAT_140162d38; local_b0 = _DAT_140162d3c; local_ac = _DAT_140162d40; local_a8 = _DAT_140162d44; local_80 = 0; local_9c = 0x80; puVar7 = (undefined4 *)0x0; local_a4 = 0; local_91 = 1; iVar18 = *(int *)((longlong)param_1 + 0x14); if ((iVar18 < 1) || (*(int *)(param_1 + 3) < 1)) { (**(code **)(*(longlong *)*param_1 + 0x180))((longlong *)*param_1,2); } else { local_120 = (undefined4 **)Proud::CFastArray::vftable; local_118 = (longlong *)0x0; local_fc = 0; local_110 = (undefined4 *)0x0; local_108 = 0; uStack_104 = 0; uStack_100 = 0; local_b8 = 1; puVar13 = puVar7; if (iVar18 < *(int *)(param_1 + 3) + iVar18) { do { iVar12 = (int)puVar13; if (iVar12 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } FUN_14002d430((longlong)&local_120,iVar12 + 1,param_3,param_4); param_4 = (longlong)iVar12; puVar13 = (undefined4 *)(ulonglong)local_108; puVar8 = local_110; if (local_108 == 0) { puVar8 = puVar7; } puVar8[param_4] = iVar18; iVar18 = iVar18 + 1; } while (iVar18 < *(int *)(param_1 + 3) + *(int *)((longlong)param_1 + 0x14)); if ((int)local_108 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } } uVar1 = local_108; puVar13 = local_110; plVar17 = local_118; FUN_14002d430((longlong)&local_e0,local_108,param_3,param_4); puVar8 = local_d0; if (local_c8 == 0) { puVar8 = puVar7; } puVar15 = puVar13; if (uVar1 == 0) { puVar15 = puVar7; } lVar11 = (longlong)(int)uVar1; if (0 < (int)uVar1) { lVar16 = (longlong)puVar15 - (longlong)puVar8; do { *puVar8 = *(undefined4 *)(lVar16 + (longlong)puVar8); puVar8 = puVar8 + 1; lVar11 = lVar11 + -1; } while (lVar11 != 0); } if (puVar13 != (undefined4 *)0x0) { if (plVar17 == (longlong *)0x0) { FUN_1400302f0(puVar13); } else { (**(code **)(*plVar17 + 0x18))(plVar17,puVar13); } } } local_158 = (int *)0x0; (**(code **)(*(longlong *)*param_1 + 0x138))((longlong *)*param_1,&local_f8,&local_158); puVar7 = local_f0; if (local_f0 == (undefined4 *)0x0) { puVar7 = (undefined4 *)PTR_DAT_140155010; } plVar17 = (longlong *)(ulonglong)local_e8; FUN_140010960(L"Server Start : ADDRESS[%s] PORT[%d]",puVar7,plVar17,param_4); piVar6 = local_158; if (local_158 != (int *)0x0) { local_140 = local_158; FUN_14002e6e0(local_158); local_138 = 1; *(longlong *)(local_158 + 0x10) = *(longlong *)(local_158 + 0x10) + -1; if (*(longlong *)(local_158 + 0x10) == 0) { FUN_14002e770((longlong)piVar6); local_138 = 0; FUN_14002b500(local_158,puVar7,plVar17,param_4); } else { FUN_14002e770((longlong)piVar6); } } local_70 = Proud::CFastArray::vftable; if (local_60 != (undefined4 *)0x0) { if (local_68 == (longlong *)0x0) { FUN_1400302f0(local_60); plVar17 = local_68; } else { (**(code **)(*local_68 + 0x18))(local_68); puVar7 = local_60; plVar17 = local_68; } } local_e0 = Proud::CFastArray::vftable; if (local_d0 != (undefined4 *)0x0) { if (local_d8 == (longlong *)0x0) { FUN_1400302f0(local_d0); plVar17 = local_d8; } else { (**(code **)(*local_d8 + 0x18))(local_d8); puVar7 = local_d0; plVar17 = local_d8; } } ppuVar9 = &local_f0; FUN_140003240((longlong *)ppuVar9,puVar7,plVar17,param_4); puVar5 = local_f8; if (((local_f8 != (undefined *)0x0) && (local_f8 != PTR_DAT_140155010)) && (puVar14 = local_f8 + -8, puVar14 != (undefined *)0x0)) { piVar2 = (int *)FUN_140030200(ppuVar9,puVar7,plVar17,param_4); local_150 = piVar2; FUN_14002e6e0(piVar2); local_148 = 1; piVar6 = (int *)(puVar5 + -4); *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_1400302f0(puVar14); } FUN_14002e770((longlong)piVar2); } return; }