server-re/decomp/Agent_Release_x64/full/functions/0x1400b37d0.c
2026-10-14 16:45:19 -04:00

154 lines
5.7 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400b37d0 FUN_1400b37d0
* Pseudocode, not original source. */
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1400b37d0(SIZE_T *param_1,undefined *param_2,ulonglong *param_3,longlong param_4)
{
longlong *plVar1;
int *piVar2;
SIZE_T SVar3;
uint uVar4;
int iVar5;
longlong lVar6;
longlong *plVar7;
int *piVar8;
short sVar9;
ulonglong uVar10;
undefined8 uVar11;
undefined1 *puVar12;
SIZE_T SVar13;
wchar_t *pwVar14;
bool bVar15;
undefined1 auStack_19b8 [32];
longlong *local_1998;
undefined1 local_1990;
int local_1988 [2];
longlong local_1980;
longlong local_1978;
int local_196c;
int *local_1960;
undefined1 local_1958;
undefined8 local_1950;
undefined1 local_1948 [3200];
undefined1 *local_cc8;
undefined4 local_cc0;
undefined4 local_cbc;
undefined1 local_cb8 [3216];
ulonglong local_28;
undefined8 uStack_20;
uStack_20 = 0x1400b37e6;
local_1950 = 0xfffffffffffffffe;
local_28 = DAT_1401555a0 ^ (ulonglong)auStack_19b8;
SVar3 = param_1[2];
if ((SVar3 != 0) && (*(int *)(SVar3 + 8) == 0)) {
bVar15 = *param_3 < *(ulonglong *)(SVar3 + 0x1c);
if ((*param_3 == *(ulonglong *)(SVar3 + 0x1c)) &&
(bVar15 = param_3[1] < *(ulonglong *)(SVar3 + 0x24),
param_3[1] == *(ulonglong *)(SVar3 + 0x24))) {
iVar5 = 0;
}
else {
iVar5 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
}
if ((iVar5 == 0) && (*(int *)(SVar3 + 0x18) < 1)) {
SVar13 = *param_1;
plVar7 = *(longlong **)(*(longlong *)(SVar13 + 0x670) + 0x1570);
sVar9 = DAT_1401553d4;
uVar4 = DAT_1401553d0;
if ((plVar7 != (longlong *)0x0) && (*plVar7 != 0)) {
lVar6 = 0;
if (plVar7 != (longlong *)0x0) {
lVar6 = *plVar7;
}
sVar9 = *(short *)(lVar6 + 0xd4);
uVar4 = *(uint *)(lVar6 + 0xd0);
}
uVar10 = (ulonglong)uVar4;
if ((((uVar4 == *(uint *)(param_2 + 0x38)) && (sVar9 == *(short *)(param_2 + 0x3c))) &&
(*(longlong **)(SVar13 + 0x18) != (longlong *)0x0)) &&
(**(longlong **)(SVar13 + 0x18) != 0)) {
FUN_1400806d0(local_1988);
FUN_1400801a0((longlong)local_1988,uVar10,SVar13,param_2);
FUN_140080830(local_1988,0x800,SVar13,param_2);
uVar11 = 0;
FUN_140080830(local_1988,0,SVar13,param_2);
FUN_14001ba80((longlong)local_1988,CONCAT71((int7)((ulonglong)uVar11 >> 8),0x12),SVar13,
param_2);
if ((*(longlong **)(*param_1 + 0x18) == (longlong *)0x0) ||
(lVar6 = **(longlong **)(*param_1 + 0x18), lVar6 == 0)) {
lVar6 = 0;
}
else {
lVar6 = lVar6 + -0x40;
}
FUN_1400812d0((longlong)local_1988,lVar6 + 0x128,SVar13,param_2);
FUN_1400812d0((longlong)local_1988,param_4,SVar13,param_2);
FUN_140021e80((longlong)local_1988,(ulonglong)*(uint *)(*param_1 + 0x56c),SVar13,param_2);
local_cbc = 200;
local_cc0 = 0;
local_cc8 = local_1948;
FUN_140041760((longlong)local_cb8,(longlong)local_1988,SVar13);
puVar12 = local_cb8;
FUN_140040a60((longlong)local_1948,(longlong)puVar12,SVar13,param_2);
FUN_140040950((longlong)local_cb8,puVar12,SVar13,param_2);
if ((*(longlong **)(*param_1 + 0x18) == (longlong *)0x0) ||
(lVar6 = **(longlong **)(*param_1 + 0x18), lVar6 == 0)) {
lVar6 = 0;
}
else {
lVar6 = lVar6 + -0x40;
}
*(undefined4 *)(lVar6 + 0x140) = *(undefined4 *)(param_4 + 8);
*(undefined2 *)(lVar6 + 0x144) = *(undefined2 *)(param_4 + 0xc);
local_1998 = (longlong *)0x0;
local_1990 = 1;
lVar6 = FUN_140064be0(*(longlong *)(*param_1 + 0x670));
pwVar14 = (wchar_t *)&local_1998;
puVar12 = local_1948;
FUN_1400b2d20(lVar6,(longlong)puVar12,(SIZE_T *)pwVar14,param_2);
if ((*(char *)(*(longlong *)(*param_1 + 0x670) + 0x1790) != '\0') ||
(*(int *)(*(longlong *)(*param_1 + 0x670) + 0x6c8) != 0)) {
plVar7 = FUN_140033b30(param_4,(longlong *)&local_1998,pwVar14,param_2);
param_2 = (undefined *)*plVar7;
if (param_2 == (undefined *)0x0) {
param_2 = PTR_DAT_140155010;
}
pwVar14 = L"Message_PeerUdp_ServerHolepunchAck. AddrOfHereAtServer=%s";
puVar12 = (undefined1 *)0x1;
lVar6 = *(longlong *)(*param_1 + 0x670);
FUN_140072eb0(lVar6,1,L"Message_PeerUdp_ServerHolepunchAck. AddrOfHereAtServer=%s",param_2
);
plVar7 = local_1998;
if (((local_1998 != (longlong *)0x0) && (local_1998 != (longlong *)PTR_DAT_140155010)) &&
(plVar1 = local_1998 + -1, plVar1 != (longlong *)0x0)) {
piVar8 = (int *)FUN_140030200(lVar6,puVar12,pwVar14,param_2);
local_1960 = piVar8;
FUN_14002e6e0(piVar8);
local_1958 = 1;
piVar2 = (int *)((longlong)plVar7 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_1400302f0(plVar1);
}
FUN_14002e770((longlong)piVar8);
}
}
*(int *)(SVar3 + 0x18) = *(int *)(SVar3 + 0x18) + 1;
FUN_140040950((longlong)local_1948,puVar12,pwVar14,param_2);
local_1998 = &local_1980;
FUN_140095270(&local_1980);
if ((local_1978 != 0) && (local_196c < 0)) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
}
}
}
return;
}