/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400d0cd0 FUN_1400d0cd0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_1400d0cd0(longlong *param_1,uint *param_2,undefined8 param_3,undefined8 param_4) { int *piVar1; undefined8 *puVar2; longlong lVar3; int iVar4; undefined8 uVar5; ulonglong uVar6; longlong *plVar7; longlong *plVar8; longlong *plVar9; longlong *plVar10; int *piVar11; longlong lVar12; undefined8 uVar13; undefined *puVar14; wchar_t *pwVar15; bool bVar16; undefined1 auStack_1b8 [32]; undefined4 *local_198; undefined ***local_190; undefined ***local_188; undefined ***local_180; undefined ***local_178; uint local_168 [2]; longlong *local_160; undefined **local_158; undefined4 local_150; undefined2 local_14c; undefined **local_148; undefined4 local_140; undefined2 local_13c; undefined **local_138; undefined4 local_130; undefined2 local_12c; undefined *local_128; longlong local_120; undefined *local_118; undefined *local_110; undefined **local_108; uint local_100; undefined2 local_fc; undefined *local_f8; longlong *local_f0; undefined1 local_e8; longlong *local_e0; undefined1 local_d8; undefined8 local_d0; longlong *local_c8; undefined1 local_c0; int *local_b8; undefined1 local_b0; undefined8 local_a8; undefined8 uStack_a0; undefined8 local_98; ulonglong uStack_90; undefined8 local_88; undefined8 uStack_80; undefined8 local_78; undefined8 uStack_70; undefined4 local_68; undefined4 uStack_64; undefined4 uStack_60; undefined4 uStack_5c; undefined4 local_58; undefined4 uStack_54; undefined4 uStack_50; undefined4 uStack_4c; ulonglong local_48; ulonglong uStack_40; ulonglong local_38; ulonglong uStack_30; ulonglong local_28; local_d0 = 0xfffffffffffffffe; local_28 = DAT_14016f5a0 ^ (ulonglong)auStack_1b8; local_148 = Proud::AddrPort::vftable; lVar12 = 0; local_140 = 0; local_13c = 0; local_158 = Proud::AddrPort::vftable; local_150 = 0; local_14c = 0; local_138 = Proud::AddrPort::vftable; local_130 = 0; local_12c = 0; local_48 = 0; uStack_40 = 0; uVar13 = 0x10; uVar5 = FUN_140074ee0(param_2,&local_48,0x10); if ((char)uVar5 != '\0') { local_38 = local_48; uStack_30 = uStack_40; uVar5 = FUN_140075970(param_2,local_168,uVar13,param_4); if (((((char)uVar5 != '\0') && (uVar6 = FUN_140075910(param_2,(longlong)&local_148), (char)uVar6 != '\0')) && (uVar6 = FUN_140075910(param_2,(longlong)&local_158), (char)uVar6 != '\0')) && (uVar6 = FUN_140075910(param_2,(longlong)&local_138), (char)uVar6 != '\0')) { local_108 = Proud::AddrPort::vftable; local_100 = param_2[0xe]; local_fc = (undefined2)param_2[0xf]; plVar7 = FUN_1400a7920(param_1,(longlong *)&local_160,local_168[0]); if ((longlong *)*plVar7 != (longlong *)0x0) { lVar12 = *(longlong *)*plVar7; } if ((local_160 != (longlong *)0x0) && (local_160[1] = local_160[1] + -1, local_160[1] == 0)) { puVar2 = (undefined8 *)*local_160; if (puVar2 != (undefined8 *)0x0) { (**(code **)*puVar2)(puVar2,1); } FUN_14003e8b0(local_160); } if (((lVar12 != 0) && (*(char *)(lVar12 + 0x684) == '\0')) && ((*(longlong **)(lVar12 + 0x28) != (longlong *)0x0 && (lVar3 = **(longlong **)(lVar12 + 0x28), lVar3 != 0)))) { bVar16 = *(ulonglong *)(lVar12 + 0x30) < local_38; if ((*(ulonglong *)(lVar12 + 0x30) == local_38) && (bVar16 = *(ulonglong *)(lVar12 + 0x38) < uStack_30, *(ulonglong *)(lVar12 + 0x38) == uStack_30)) { iVar4 = 0; } else { iVar4 = (1 - (uint)bVar16) - (uint)(bVar16 != 0); } if (((iVar4 == 0) && (*(longlong *)(lVar3 + 0x10) != 0)) && (*(int *)(*(longlong *)(lVar3 + 0x10) + 8) == 1)) { local_120 = 0; FUN_1400a9130((longlong *)(lVar12 + 0x28),&local_120); FUN_1400a8ff0(&local_120); local_a8 = _DAT_140177f90; uStack_a0 = uRam0000000140177f98; local_98 = _DAT_140177fa0; local_88 = _DAT_140177fb0; uStack_80 = _DAT_140177fb8; local_78 = _DAT_140177fc0; uStack_70 = _DAT_140177fc8; local_68 = _DAT_140177fd0; uStack_64 = uRam0000000140177fd4; uStack_60 = _DAT_140177fd8; uStack_5c = uRam0000000140177fdc; local_58 = _DAT_140177fe0; uStack_54 = _DAT_140177fe4; uStack_50 = uRam0000000140177fe8; uStack_4c = uRam0000000140177fec; uStack_90 = _DAT_140177fa8 & 0xffffffff00000000; (**(code **)(param_1[0x2fa] + 0x30)) (param_1 + 0x2fa,*(undefined4 *)(lVar12 + 0x56c),&local_a8); plVar7 = param_1 + 0x2af; local_178 = &local_108; local_180 = &local_138; local_188 = &local_158; local_190 = &local_148; puVar14 = &DAT_140177f90; local_198 = (undefined4 *)(lVar12 + 0x56c); (**(code **)(param_1[0x303] + 0x70))(param_1 + 0x303,1); if (((char)param_1[0x2f2] != '\0') || ((int)param_1[0xd9] != 0)) { plVar8 = FUN_1400420f0((longlong)&local_108,(longlong *)&local_f8,puVar14,plVar7); plVar9 = FUN_1400420f0((longlong)&local_138,(longlong *)&local_118,puVar14,plVar7); plVar10 = FUN_1400420f0((longlong)&local_158,(longlong *)&local_128,puVar14,plVar7); plVar7 = FUN_1400420f0((longlong)&local_148,(longlong *)&local_110,puVar14,plVar7); local_188 = (undefined ***)*plVar8; if ((undefined *)*plVar8 == (undefined *)0x0) { local_188 = (undefined ***)PTR_DAT_14016f010; } local_190 = (undefined ***)*plVar9; if ((undefined *)*plVar9 == (undefined *)0x0) { local_190 = (undefined ***)PTR_DAT_14016f010; } local_198 = (undefined4 *)*plVar10; if ((undefined *)*plVar10 == (undefined *)0x0) { local_198 = (undefined4 *)PTR_DAT_14016f010; } puVar14 = (undefined *)*plVar7; if ((undefined *)*plVar7 == (undefined *)0x0) { puVar14 = PTR_DAT_14016f010; } pwVar15 = L"HolepunchAck OK. ABS=%s ABR=%s BAS=%s BAR=%s"; FUN_1400a9f70((longlong)param_1,1,L"HolepunchAck OK. ABS=%s ABR=%s BAS=%s BAR=%s", puVar14); if (((local_110 != (undefined *)0x0) && (local_110 != PTR_DAT_14016f010)) && (local_110 + -8 != (undefined *)0x0)) { param_1 = (longlong *)FUN_14003e7c0(param_1,PTR_DAT_14016f010,pwVar15,puVar14); local_f0 = param_1; FUN_14003d040((int *)param_1); local_e8 = 1; piVar1 = (int *)(local_110 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14003e8b0(local_110 + -8); } FUN_14003d0d0((longlong)param_1); } local_110 = PTR_DAT_14016f010; if (((local_128 != (undefined *)0x0) && (local_128 != PTR_DAT_14016f010)) && (local_128 + -8 != (undefined *)0x0)) { param_1 = (longlong *)FUN_14003e7c0(param_1,PTR_DAT_14016f010,pwVar15,puVar14); local_e0 = param_1; FUN_14003d040((int *)param_1); local_d8 = 1; piVar1 = (int *)(local_128 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14003e8b0(local_128 + -8); } FUN_14003d0d0((longlong)param_1); } local_128 = PTR_DAT_14016f010; if (((local_118 != (undefined *)0x0) && (local_118 != PTR_DAT_14016f010)) && (local_118 + -8 != (undefined *)0x0)) { param_1 = (longlong *)FUN_14003e7c0(param_1,PTR_DAT_14016f010,pwVar15,puVar14); local_c8 = param_1; FUN_14003d040((int *)param_1); local_c0 = 1; piVar1 = (int *)(local_118 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14003e8b0(local_118 + -8); } FUN_14003d0d0((longlong)param_1); } if (((local_f8 != (undefined *)0x0) && (local_f8 != PTR_DAT_14016f010)) && (local_f8 + -8 != (undefined *)0x0)) { local_118 = PTR_DAT_14016f010; piVar11 = (int *)FUN_14003e7c0(param_1,PTR_DAT_14016f010,pwVar15,puVar14); local_b8 = piVar11; FUN_14003d040(piVar11); local_b0 = 1; piVar1 = (int *)(local_f8 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14003e8b0(local_f8 + -8); } FUN_14003d0d0((longlong)piVar11); } } } } } } return; }