147 lines
5.5 KiB
C
147 lines
5.5 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x1400a5210 FUN_1400a5210
|
|
* 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_1400a5210(longlong param_1,uint *param_2,undefined8 param_3,longlong param_4)
|
|
|
|
{
|
|
longlong *plVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
undefined8 uVar4;
|
|
ulonglong uVar5;
|
|
longlong lVar6;
|
|
undefined8 *puVar7;
|
|
longlong lVar8;
|
|
longlong *plVar9;
|
|
int *piVar10;
|
|
undefined1 *puVar11;
|
|
SIZE_T SVar12;
|
|
wchar_t *pwVar13;
|
|
bool bVar14;
|
|
undefined1 auStack_19c8 [32];
|
|
undefined **local_19a8;
|
|
undefined4 local_19a0;
|
|
undefined2 local_199c;
|
|
int local_1998 [2];
|
|
longlong local_1990;
|
|
longlong local_1988;
|
|
int local_197c;
|
|
int *local_1970;
|
|
undefined1 local_1968;
|
|
undefined8 local_1960;
|
|
longlong *local_1958;
|
|
longlong *plStack_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 = 0x1400a5226;
|
|
local_1960 = 0xfffffffffffffffe;
|
|
local_28 = DAT_1401555a0 ^ (ulonglong)auStack_19c8;
|
|
local_19a8 = Proud::AddrPort::vftable;
|
|
lVar8 = 0;
|
|
local_19a0 = 0;
|
|
local_199c = 0;
|
|
local_1958 = (longlong *)0x0;
|
|
plStack_1950 = (longlong *)0x0;
|
|
uVar4 = FUN_140080600(param_2,&local_1958,0x10);
|
|
if (((char)uVar4 != '\0') &&
|
|
(uVar5 = FUN_140081030(param_2,(longlong)&local_19a8), (char)uVar5 != '\0')) {
|
|
SVar12 = *(SIZE_T *)(param_1 + 0x108);
|
|
lVar6 = lVar8;
|
|
if (*(longlong **)(SVar12 + 0x1570) != (longlong *)0x0) {
|
|
lVar6 = **(longlong **)(SVar12 + 0x1570);
|
|
}
|
|
bVar14 = local_1958 < *(longlong **)(lVar6 + 8);
|
|
iVar3 = 0;
|
|
plVar9 = local_1958;
|
|
if ((local_1958 != *(longlong **)(lVar6 + 8)) ||
|
|
(bVar14 = plStack_1950 < *(longlong **)(lVar6 + 0x10), plVar9 = plStack_1950,
|
|
plStack_1950 != *(longlong **)(lVar6 + 0x10))) {
|
|
iVar3 = (1 - (uint)bVar14) - (uint)(bVar14 != 0);
|
|
}
|
|
if (iVar3 == 0) {
|
|
lVar6 = lVar8;
|
|
if (*(longlong **)(SVar12 + 0x1570) != (longlong *)0x0) {
|
|
lVar6 = **(longlong **)(SVar12 + 0x1570);
|
|
}
|
|
if ((*(uint *)(lVar6 + 0xd0) == param_2[0xe]) &&
|
|
(*(short *)(lVar6 + 0xd4) == (short)param_2[0xf])) {
|
|
FUN_1400806d0(local_1998);
|
|
FUN_1400801a0((longlong)local_1998,plVar9,SVar12,param_4);
|
|
FUN_140080830(local_1998,0x800,SVar12,param_4);
|
|
uVar4 = 0;
|
|
FUN_140080830(local_1998,0,SVar12,param_4);
|
|
FUN_14001ba80((longlong)local_1998,CONCAT71((int7)((ulonglong)uVar4 >> 8),0xe),SVar12,
|
|
param_4);
|
|
plVar9 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x1570);
|
|
if (plVar9 != (longlong *)0x0) {
|
|
lVar8 = *plVar9;
|
|
}
|
|
local_1958 = *(longlong **)(lVar8 + 8);
|
|
plStack_1950 = *(longlong **)(lVar8 + 0x10);
|
|
FUN_140044710((longlong)local_1998,&local_1958,SVar12,param_4);
|
|
puVar7 = FUN_140064cd0(*(longlong *)(param_1 + 0x108),&local_1970);
|
|
FUN_1400812d0((longlong)local_1998,(longlong)puVar7,SVar12,param_4);
|
|
FUN_1400812d0((longlong)local_1998,(longlong)&local_19a8,SVar12,param_4);
|
|
local_cbc = 200;
|
|
local_cc0 = 0;
|
|
local_cc8 = local_1948;
|
|
FUN_140041760((longlong)local_cb8,(longlong)local_1998,SVar12);
|
|
puVar11 = local_cb8;
|
|
FUN_140040a60((longlong)local_1948,(longlong)puVar11,SVar12,param_4);
|
|
FUN_140040950((longlong)local_cb8,puVar11,SVar12,param_4);
|
|
lVar8 = FUN_140064bc0(*(longlong *)(param_1 + 0x108));
|
|
*(undefined4 *)(lVar8 + 0x140) = local_19a0;
|
|
*(undefined2 *)(lVar8 + 0x144) = local_199c;
|
|
local_1958 = (longlong *)0x0;
|
|
plStack_1950 = (longlong *)CONCAT71(plStack_1950._1_7_,1);
|
|
lVar8 = FUN_140064be0(*(longlong *)(param_1 + 0x108));
|
|
pwVar13 = (wchar_t *)&local_1958;
|
|
puVar11 = local_1948;
|
|
FUN_1400b2d20(lVar8,(longlong)puVar11,(SIZE_T *)pwVar13,param_4);
|
|
if ((*(char *)(*(longlong *)(param_1 + 0x108) + 0x1790) != '\0') ||
|
|
(*(int *)(*(longlong *)(param_1 + 0x108) + 0x6c8) != 0)) {
|
|
plVar9 = FUN_140033b30((longlong)&local_19a8,(longlong *)&local_1958,pwVar13,param_4);
|
|
param_4 = *plVar9;
|
|
pwVar13 = L"Message_ServerHolepunchAck. AddrOfHereAtServer=%s";
|
|
puVar11 = (undefined1 *)0x1;
|
|
lVar8 = *(longlong *)(param_1 + 0x108);
|
|
FUN_140072eb0(lVar8,1,L"Message_ServerHolepunchAck. AddrOfHereAtServer=%s",param_4);
|
|
plVar9 = local_1958;
|
|
if ((local_1958 != (longlong *)0x0) &&
|
|
((local_1958 != (longlong *)PTR_DAT_140155010 &&
|
|
(plVar1 = local_1958 + -1, plVar1 != (longlong *)0x0)))) {
|
|
piVar10 = (int *)FUN_140030200(lVar8,puVar11,pwVar13,param_4);
|
|
local_1970 = piVar10;
|
|
FUN_14002e6e0(piVar10);
|
|
local_1968 = 1;
|
|
piVar2 = (int *)((longlong)plVar9 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_1400302f0(plVar1);
|
|
}
|
|
FUN_14002e770((longlong)piVar10);
|
|
}
|
|
}
|
|
FUN_140040950((longlong)local_1948,puVar11,pwVar13,param_4);
|
|
local_1958 = &local_1990;
|
|
FUN_140095270(&local_1990);
|
|
if ((local_1988 != 0) && (local_197c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f590();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|