decompiled agent_release

This commit is contained in:
Benjamin Palko 2026-10-14 16:45:19 -04:00
parent baac905ef2
commit 11a3488883
6439 changed files with 229565 additions and 1 deletions

View file

@ -0,0 +1,502 @@
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x14007f1f0 FUN_14007f1f0
* Pseudocode, not original source. */
void FUN_14007f1f0(longlong *param_1,uint param_2,SIZE_T param_3,undefined *param_4)
{
undefined8 *puVar1;
char cVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
int iVar7;
longlong *plVar8;
longlong *plVar9;
ulonglong uVar10;
uint *puVar11;
int *piVar12;
int *piVar13;
undefined **ppuVar14;
undefined ***pppuVar15;
longlong lVar16;
longlong **pplVar17;
uint *puVar18;
undefined8 uVar19;
uint *puVar20;
uint uVar21;
undefined *puVar22;
undefined *puVar23;
ulonglong uVar24;
short *psVar25;
longlong *plVar26;
longlong *local_res8;
uint local_res10;
uint *local_res18;
longlong *local_res20;
undefined **local_228;
undefined4 local_220;
undefined2 local_21c;
undefined *local_218;
undefined *local_210;
undefined *local_208;
undefined *local_200;
longlong *local_1f8;
undefined1 local_1f0;
undefined *local_1e8;
undefined *local_1e0;
undefined4 local_1d8 [2];
ulonglong local_1d0 [2];
longlong local_1c0 [2];
undefined **local_1b0;
undefined8 local_1a8;
undefined8 local_1a0;
undefined8 local_198;
undefined8 local_190;
longlong local_188;
longlong local_180;
ulonglong local_178;
undefined4 local_168;
undefined **local_160;
undefined8 local_158;
undefined8 local_150;
undefined8 local_148;
undefined8 local_140;
undefined **local_130;
undefined4 local_128;
undefined2 local_124;
undefined **local_118;
undefined8 local_110;
undefined8 local_108;
undefined8 local_100;
undefined8 local_f8;
int *local_e8;
undefined1 local_e0;
int *local_d8;
undefined1 local_d0;
longlong *local_c8;
undefined1 local_c0;
undefined8 local_b8;
longlong *local_b0;
undefined1 local_a8;
int *local_a0;
undefined1 local_98;
int *local_90;
undefined1 local_88;
undefined **local_80;
undefined1 local_78;
longlong *local_70;
local_b8 = 0xfffffffffffffffe;
plVar26 = (longlong *)0x0;
uVar5 = 0;
plVar8 = plVar26;
if ((undefined8 *)param_1[0x2ae] != (undefined8 *)0x0) {
plVar8 = *(longlong **)param_1[0x2ae];
}
if ((char)plVar8[0x10] != '\x01') {
return;
}
plVar8 = plVar26;
if ((undefined8 *)param_1[0x2ae] != (undefined8 *)0x0) {
plVar8 = *(longlong **)param_1[0x2ae];
}
uVar19 = 0;
local_res10 = param_2;
FUN_1400ac730(plVar8,'\0');
local_1d0[0] = 0;
local_1c0[0] = 0;
local_1c0[1] = 0;
local_1a8 = 0;
local_1a0 = 0;
local_198 = 0;
local_190 = 0;
local_1b0 = Proud::ByteArray::vftable;
local_178 = 0;
local_180 = 0;
local_188 = 0;
local_158 = 0;
local_150 = 0;
local_148 = 0;
local_140 = 0;
local_160 = Proud::ByteArray::vftable;
local_130 = Proud::AddrPort::vftable;
local_128 = 0;
local_124 = 0;
local_110 = 0;
local_108 = 0;
local_100 = 0;
local_f8 = 0;
local_118 = Proud::ByteArray::vftable;
local_res20 = (longlong *)FUN_140030280(0x60);
plVar8 = plVar26;
if (local_res20 != (longlong *)0x0) {
plVar8 = FUN_14003bef0(local_res20,uVar19,param_3,param_4);
}
if (plVar8 == (longlong *)0x0) {
local_res20 = (longlong *)0x0;
plVar9 = plVar26;
}
else {
plVar9 = (longlong *)FUN_140030280(0x48);
local_70 = plVar9;
if (plVar9 != (longlong *)0x0) {
local_res20 = plVar9;
uVar10 = FUN_14002e790();
param_3 = CONCAT71((int7)(param_3 >> 8),1);
FUN_14002e600((undefined4 *)plVar9,uVar10 & 0xffffffff,param_3,param_4);
}
local_res20 = plVar9;
FUN_14002e6e0((int *)plVar9);
plVar9[8] = 1;
plVar9[7] = (longlong)plVar8;
FUN_14002e770((longlong)plVar9);
}
pplVar17 = &local_res20;
FUN_14003bff0(local_1d0,(ulonglong *)pplVar17,param_3,param_4);
if (plVar9 != (longlong *)0x0) {
local_1f8 = plVar9;
FUN_14002e6e0((int *)plVar9);
local_1f0 = 1;
plVar8 = plVar9 + 8;
*plVar8 = *plVar8 + -1;
if (*plVar8 == 0) {
FUN_14002e770((longlong)plVar9);
local_1f0 = 0;
FUN_14002b500((undefined4 *)plVar9,pplVar17,param_3,param_4);
}
else {
FUN_14002e770((longlong)plVar9);
local_1f0 = 0;
}
}
local_1d8[0] = 0xd;
plVar8 = plVar26;
if (local_1d0[0] != 0) {
plVar8 = *(longlong **)(local_1d0[0] + 0x38);
}
*(undefined4 *)plVar8 = 0x1c;
local_168 = 1;
FUN_14007af60(param_1,local_1d8,param_3,param_4);
plVar8 = plVar26;
if ((undefined8 *)param_1[0x2ae] != (undefined8 *)0x0) {
plVar8 = *(longlong **)param_1[0x2ae];
}
puVar1 = (undefined8 *)param_1[0x2ae];
if ((int)plVar8[0x28] < DAT_140155088) {
plVar8 = plVar26;
if (puVar1 != (undefined8 *)0x0) {
plVar8 = (longlong *)*puVar1;
}
plVar8[0x20] = DAT_14015c010;
plVar8 = plVar26;
if ((undefined8 *)param_1[0x2ae] != (undefined8 *)0x0) {
plVar8 = *(longlong **)param_1[0x2ae];
}
*(int *)(plVar8 + 0x28) = (int)plVar8[0x28] + 1;
}
else {
plVar8 = plVar26;
if (puVar1 != (undefined8 *)0x0) {
plVar8 = (longlong *)*puVar1;
}
plVar8[0x20] = DAT_140155078;
}
if (((char)param_1[0x2f2] == '\0') && ((int)param_1[0xd9] == 0)) goto LAB_14007fb42;
FUN_140071a20((longlong)param_1,(longlong *)&local_210,param_3,param_4);
plVar8 = param_1 + 0xe;
(**(code **)(*plVar8 + 0x1c0))(plVar8);
if (((longlong *)param_1[0x2a4] != (longlong *)0x0) &&
((lVar16 = *(longlong *)param_1[0x2a4], lVar16 != 0 && (lVar16 != 0x40)))) {
(**(code **)(*plVar8 + 0x1c0))(plVar8);
}
if ((((longlong *)param_1[0x2a4] == (longlong *)0x0) ||
(lVar16 = *(longlong *)param_1[0x2a4], lVar16 == 0)) || (lVar16 == 0x40)) {
local_220 = DAT_1401553d0;
local_21c = DAT_1401553d4;
}
else {
plVar9 = plVar26;
if (lVar16 != 0) {
plVar9 = (longlong *)(lVar16 + -0x40);
}
local_220 = (undefined4)plVar9[0x26];
local_21c = *(undefined2 *)((longlong)plVar9 + 0x134);
}
local_228 = Proud::AddrPort::vftable;
ppuVar14 = &local_200;
pppuVar15 = &local_228;
plVar9 = FUN_140033b30((longlong)pppuVar15,(longlong *)ppuVar14,param_3,param_4);
psVar25 = (short *)*plVar9;
if ((short *)*plVar9 == (short *)0x0) {
psVar25 = (short *)PTR_DAT_140155010;
}
FUN_140030200(pppuVar15,ppuVar14,param_3,param_4);
puVar20 = (uint *)PTR_DAT_140155010;
local_res18 = (uint *)PTR_DAT_140155010;
uVar3 = FUN_140030080(psVar25);
plVar9 = plVar26;
if ((puVar20 != (uint *)0x0) && (plVar9 = (longlong *)0x0, puVar20 != (uint *)PTR_DAT_140155010))
{
plVar9 = (longlong *)(ulonglong)*(uint *)((longlong)puVar20 + -8);
}
uVar4 = uVar3;
if ((((int)uVar3 <= (int)plVar9) && (uVar4 = uVar5, puVar20 != (uint *)0x0)) &&
(puVar20 != (uint *)PTR_DAT_140155010)) {
uVar4 = *(uint *)((longlong)puVar20 + -8);
}
uVar21 = 1;
if (1 < (int)uVar4) {
uVar21 = uVar4;
}
uVar4 = uVar5;
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140155010)) {
uVar4 = *(uint *)((longlong)puVar20 + -8);
}
uVar6 = 0;
if ((int)uVar4 < (int)uVar21) {
if (puVar20 == (uint *)0x0) {
puVar20 = (uint *)PTR_DAT_140155010;
}
local_res18 = puVar20;
if ((int)uVar21 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
if (uVar21 == 0) {
FUN_140003240((longlong *)&local_res18,plVar9,param_3,param_4);
}
else {
uVar4 = uVar6;
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140155010)) {
uVar4 = puVar20[-2];
}
if (uVar21 != uVar4) {
puVar11 = (uint *)FUN_140030280((longlong)(int)uVar21 * 2 + 10);
if (puVar11 != (uint *)0x0) {
*puVar11 = 0;
puVar11[1] = 1;
}
*puVar11 = uVar21;
uVar4 = uVar6;
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140155010)) {
uVar4 = puVar20[-2];
}
puVar18 = (uint *)PTR_DAT_140155010;
if ((int)uVar21 < (int)uVar4) {
LAB_14007f68a:
if (puVar20 != (uint *)0x0) {
puVar18 = puVar20;
}
}
else {
uVar21 = uVar5;
if (puVar20 != (uint *)0x0) {
if (puVar20 != (uint *)PTR_DAT_140155010) {
uVar21 = puVar20[-2];
}
goto LAB_14007f68a;
}
}
uVar10 = (ulonglong)uVar21;
FUN_1400300b0(puVar11 + 2,puVar18,uVar21);
FUN_140003240((longlong *)&local_res18,puVar18,uVar10,param_4);
local_res18 = puVar11 + 2;
}
}
}
FUN_140002ea0((longlong *)&local_res18);
puVar20 = local_res18;
puVar11 = local_res18;
if (local_res18 == (uint *)0x0) {
puVar11 = (uint *)PTR_DAT_140155010;
}
puVar18 = (uint *)(ulonglong)uVar3;
FUN_1400300b0(puVar11,psVar25,uVar3);
puVar11 = puVar20;
if (puVar20 == (uint *)0x0) {
puVar11 = (uint *)PTR_DAT_140155010;
}
uVar5 = FUN_140030080((short *)puVar11);
plVar9 = plVar26;
if (0 < (int)uVar5) {
plVar9 = (longlong *)(ulonglong)uVar5;
}
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140155010)) {
uVar6 = puVar20[-2];
}
if (((int)plVar9 < (int)uVar6) || (plVar9 = plVar26, puVar20 == (uint *)0x0)) {
LAB_14007f726:
if (((puVar20 != (uint *)PTR_DAT_140155010) && (puVar20 != (uint *)0x0)) &&
(puVar18 = puVar20 + -2, puVar18 != (uint *)0x0)) {
*puVar18 = (uint)plVar9;
*(undefined2 *)((longlong)puVar20 + (longlong)(int)(uint)plVar9 * 2) = 0;
}
}
else if (puVar20 != (uint *)PTR_DAT_140155010) {
plVar9 = (longlong *)(ulonglong)puVar20[-2];
goto LAB_14007f726;
}
if (((local_200 != (undefined *)0x0) && (local_200 != PTR_DAT_140155010)) &&
(local_200 + -8 != (undefined *)0x0)) {
piVar12 = (int *)FUN_140030200(PTR_DAT_140155010,plVar9,puVar18,param_4);
local_a0 = piVar12;
FUN_14002e6e0(piVar12);
local_98 = 1;
piVar13 = (int *)(local_200 + -4);
*piVar13 = *piVar13 + -1;
if (*piVar13 == 0) {
FUN_1400302f0(local_200 + -8);
}
FUN_14002e770((longlong)piVar12);
}
local_res8 = (longlong *)((ulonglong)local_res8 & 0xffffffffffffff00);
local_200 = PTR_DAT_140155010;
cVar2 = (**(code **)(*plVar8 + 0x158))(plVar8,&local_res8);
uVar5 = 1;
if (cVar2 != '\0') {
uVar5 = 1;
if ((char)local_res8 == '\0') {
uVar5 = 2;
}
}
plVar8 = (longlong *)(**(code **)(*plVar8 + 0xb0))(plVar8,&local_1e8);
piVar13 = (int *)*plVar8;
if (piVar13 == (int *)0x0) {
iVar7 = 0;
}
else if (piVar13 == (int *)PTR_DAT_140155010) {
iVar7 = 0;
}
else {
iVar7 = piVar13[-2];
}
puVar23 = PTR_DAT_140155010;
if (((local_1e8 != (undefined *)0x0) && (local_1e8 != PTR_DAT_140155010)) &&
(local_1e8 + -8 != (undefined *)0x0)) {
piVar13 = (int *)FUN_140030200(piVar13,PTR_DAT_140155010,puVar18,param_4);
local_e8 = piVar13;
FUN_14002e6e0(piVar13);
local_e0 = 1;
piVar12 = (int *)(local_1e8 + -4);
*piVar12 = *piVar12 + -1;
if (*piVar12 == 0) {
FUN_1400302f0(local_1e8 + -8);
}
FUN_14002e770((longlong)piVar13);
}
if (iVar7 != 0) {
uVar5 = uVar5 + 1;
}
FUN_140030200(piVar13,puVar23,puVar18,param_4);
local_218 = PTR_DAT_140155010;
FUN_14002ff30((longlong *)&local_1e0,puVar23,puVar18,param_4);
(**(code **)(param_1[0xe] + 0xb0))();
if (param_1[0xbb] == 0) {
lVar16 = 0;
}
else {
lVar16 = *(longlong *)(param_1[0xbb] + 0x38);
}
uVar24 = (ulonglong)*(uint *)(lVar16 + 0x2a8);
uVar10 = (ulonglong)local_res10;
ppuVar14 = &local_218;
FUN_14001b7a0((longlong *)ppuVar14,
L"(first chance) to-server UDP punch lost##Reason:%d##CliInstCount=%d##RecentElapTime=%3.3f##DisconnedCount=%d##recv count=%d##last ok recv interval=%3.3f##Recurred:%d##LocalIP:%s##UDP kept time:%3.3f##Time diff since RecvIssue:%3.3f##NAT name=%s##%s##Process=%s"
,uVar10,uVar24);
if (((local_208 != (undefined *)0x0) && (local_208 != PTR_DAT_140155010)) &&
(local_208 + -8 != (undefined *)0x0)) {
ppuVar14 = (undefined **)FUN_140030200(ppuVar14,PTR_DAT_140155010,uVar10,uVar24);
local_80 = ppuVar14;
FUN_14002e6e0((int *)ppuVar14);
local_78 = 1;
piVar13 = (int *)(local_208 + -4);
*piVar13 = *piVar13 + -1;
if (*piVar13 == 0) {
FUN_1400302f0(local_208 + -8);
}
FUN_14002e770((longlong)ppuVar14);
}
local_208 = PTR_DAT_140155010;
if (((local_1e0 != (undefined *)0x0) && (local_1e0 != PTR_DAT_140155010)) &&
(local_1e0 + -8 != (undefined *)0x0)) {
piVar12 = (int *)FUN_140030200(ppuVar14,PTR_DAT_140155010,uVar10,uVar24);
local_d8 = piVar12;
FUN_14002e6e0(piVar12);
local_d0 = 1;
piVar13 = (int *)(local_1e0 + -4);
*piVar13 = *piVar13 + -1;
if (*piVar13 == 0) {
FUN_1400302f0(local_1e0 + -8);
}
FUN_14002e770((longlong)piVar12);
}
puVar23 = local_218;
puVar22 = &DAT_14011ae80;
uVar10 = (ulonglong)uVar5;
plVar8 = param_1;
param_4 = local_218;
FUN_140073400((longlong)param_1,uVar10,L"%s",local_218);
if (((puVar23 != (undefined *)0x0) && (puVar23 != PTR_DAT_140155010)) &&
(puVar23 + -8 != (undefined *)0x0)) {
plVar8 = (longlong *)FUN_140030200(plVar8,uVar10,puVar22,param_4);
local_c8 = plVar8;
FUN_14002e6e0((int *)plVar8);
local_c0 = 1;
piVar13 = (int *)(puVar23 + -4);
*piVar13 = *piVar13 + -1;
if (*piVar13 == 0) {
FUN_1400302f0(puVar23 + -8);
}
FUN_14002e770((longlong)plVar8);
}
puVar20 = local_res18;
if (((local_res18 != (uint *)0x0) && (local_res18 != (uint *)PTR_DAT_140155010)) &&
(puVar11 = local_res18 + -2, puVar11 != (uint *)0x0)) {
plVar8 = (longlong *)FUN_140030200(plVar8,uVar10,puVar22,param_4);
local_b0 = plVar8;
FUN_14002e6e0((int *)plVar8);
local_a8 = 1;
puVar20 = puVar20 + -1;
*puVar20 = *puVar20 - 1;
if (*puVar20 == 0) {
FUN_1400302f0(puVar11);
}
FUN_14002e770((longlong)plVar8);
}
if (((local_210 != (undefined *)0x0) && (local_210 != PTR_DAT_140155010)) &&
(local_210 + -8 != (undefined *)0x0)) {
piVar12 = (int *)FUN_140030200(plVar8,uVar10,puVar22,param_4);
local_90 = piVar12;
FUN_14002e6e0(piVar12);
local_88 = 1;
piVar13 = (int *)(local_210 + -4);
*piVar13 = *piVar13 + -1;
if (*piVar13 == 0) {
FUN_1400302f0(local_210 + -8);
}
FUN_14002e770((longlong)piVar12);
}
LAB_14007fb42:
puVar23 = &DAT_14015de10;
uVar19 = 1;
(**(code **)(param_1[0x303] + 0x50))();
FUN_14003b870(&local_118);
FUN_14003b870(&local_160);
local_res8 = &local_188;
FUN_140095270(&local_188);
if (local_180 != 0) {
if ((longlong)local_178 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
local_178 = local_178 & 0xffffffff00000000;
}
FUN_14003b870(&local_1b0);
FUN_140056b00(local_1c0 + 1,uVar19,puVar23,param_4);
FUN_140056a80(local_1c0,uVar19,puVar23,param_4);
FUN_14002b570((longlong *)local_1d0,uVar19,puVar23,param_4);
return;
}