191 lines
6.2 KiB
C
191 lines
6.2 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14007c350 FUN_14007c350
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_14007c350(longlong param_1,uint *param_2,longlong param_3,longlong param_4)
|
|
|
|
{
|
|
undefined **ppuVar1;
|
|
int *piVar2;
|
|
short *psVar3;
|
|
undefined **ppuVar4;
|
|
ushort uVar5;
|
|
undefined8 uVar6;
|
|
int *piVar7;
|
|
longlong *plVar8;
|
|
int *piVar9;
|
|
ulonglong *puVar10;
|
|
short **ppsVar11;
|
|
longlong lVar12;
|
|
undefined ***pppuVar13;
|
|
longlong lVar14;
|
|
wchar_t *pwVar15;
|
|
SIZE_T SVar16;
|
|
ulonglong uVar17;
|
|
undefined *puVar18;
|
|
short *psVar19;
|
|
undefined1 auStackY_db8 [32];
|
|
short *local_d88;
|
|
int local_d80 [2];
|
|
undefined *local_d78;
|
|
longlong local_d70;
|
|
uint local_d68;
|
|
int local_d64;
|
|
int *local_d58;
|
|
undefined8 local_d50;
|
|
undefined1 local_d48;
|
|
undefined4 local_d44;
|
|
undefined1 local_d40;
|
|
undefined1 local_d3f;
|
|
int *local_d38;
|
|
undefined1 local_d30;
|
|
undefined8 local_d28;
|
|
exception local_d20 [72];
|
|
undefined **local_cd8;
|
|
undefined8 uStack_cd0;
|
|
longlong local_cc8;
|
|
undefined8 uStack_cc0;
|
|
longlong *local_48;
|
|
undefined4 local_40;
|
|
int local_3c;
|
|
ulonglong local_38;
|
|
|
|
local_d28 = 0xfffffffffffffffe;
|
|
local_38 = DAT_14016f5a0 ^ (ulonglong)auStackY_db8;
|
|
lVar12 = param_4;
|
|
FUN_140079c10();
|
|
local_cd8 = (undefined **)0x0;
|
|
uStack_cd0 = 0;
|
|
SVar16 = 0x10;
|
|
pppuVar13 = &local_cd8;
|
|
uVar6 = FUN_140074ee0(param_2,pppuVar13,0x10);
|
|
if ((char)uVar6 != '\0') {
|
|
FUN_140074fb0(local_d80);
|
|
FUN_140074a40((longlong)local_d80,pppuVar13,SVar16,lVar12);
|
|
FUN_140075110(local_d80,0x800,SVar16,lVar12);
|
|
uVar6 = 0;
|
|
FUN_140075110(local_d80,0,SVar16,lVar12);
|
|
FUN_140029d80((longlong)local_d80,CONCAT71((int7)((ulonglong)uVar6 >> 8),0xd),SVar16,lVar12);
|
|
FUN_140051cf0((longlong)local_d80,&local_cd8,SVar16,lVar12);
|
|
lVar14 = param_3;
|
|
FUN_140075bb0((longlong)local_d80,param_3,SVar16,lVar12);
|
|
uVar6 = uStack_cd0;
|
|
local_3c = 200;
|
|
local_40 = 0;
|
|
local_48 = &local_cc8;
|
|
if (local_d78 == (undefined *)0x0) {
|
|
if (local_d70 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14008a420(0,lVar14,0,lVar12);
|
|
}
|
|
}
|
|
else {
|
|
local_d68 = *(uint *)(local_d78 + 0x18);
|
|
}
|
|
local_cc8 = local_d70;
|
|
if (local_d70 == 0) {
|
|
if (local_d78 == (undefined *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14008a420(0,(ulonglong)local_d68,0,lVar12);
|
|
}
|
|
local_cc8 = 0;
|
|
if (*(int *)(local_d78 + 0x18) != 0) {
|
|
local_cc8 = *(longlong *)(local_d78 + 0x10);
|
|
}
|
|
}
|
|
uStack_cd0 = CONCAT44(uStack_cd0._4_4_,local_d68);
|
|
local_40 = 1;
|
|
uStack_cc0 = uStack_cd0;
|
|
local_d58 = (int *)CONCAT44(local_d58._4_4_,5);
|
|
local_d50 = 0;
|
|
local_d48 = 1;
|
|
local_d44 = 0xffffffff;
|
|
local_d40 = 1;
|
|
local_d3f = DAT_14016f1cc;
|
|
local_cd8 = Proud::AddrPort::vftable;
|
|
uStack_cd0 = CONCAT26(SUB82(uVar6,6),*(undefined6 *)(param_3 + 8));
|
|
uVar5 = FUN_14008be40(1,0);
|
|
uVar17 = (ulonglong)uVar5;
|
|
pppuVar13 = &local_cd8;
|
|
pwVar15 = (wchar_t *)0x0;
|
|
FUN_140091760(param_4,0,uVar5,(longlong)pppuVar13,(longlong)&local_cc8,(uint *)&local_d58);
|
|
if (local_48 == (longlong *)0x0) {
|
|
FUN_14003db10(local_d20,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_140170368,uVar17,
|
|
pppuVar13);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_d20,(ThrowInfo *)&DAT_14016c210);
|
|
}
|
|
if (local_3c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
piVar7 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
|
|
local_d38 = piVar7;
|
|
FUN_14003d040(piVar7);
|
|
local_d30 = 1;
|
|
puVar10 = *(ulonglong **)(param_1 + 0x148);
|
|
if (DAT_14017614f != '\0') {
|
|
uVar17 = *puVar10;
|
|
pwVar15 = L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_ServerHolepunch";
|
|
(**(code **)(uVar17 + 200))();
|
|
}
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0) {
|
|
FUN_14003e7c0(puVar10,pwVar15,uVar17,pppuVar13);
|
|
local_d88 = (short *)PTR_DAT_14016f010;
|
|
plVar8 = FUN_1400420f0(param_3,(longlong *)&local_cd8,uVar17,pppuVar13);
|
|
puVar18 = (undefined *)*plVar8;
|
|
if ((undefined *)*plVar8 == (undefined *)0x0) {
|
|
puVar18 = PTR_DAT_14016f010;
|
|
}
|
|
pwVar15 = L"MessageType_ServerHolepunch from %s";
|
|
ppsVar11 = &local_d88;
|
|
FUN_140029b80((longlong *)ppsVar11,L"MessageType_ServerHolepunch from %s",puVar18,pppuVar13);
|
|
ppuVar4 = local_cd8;
|
|
if (((local_cd8 != (undefined **)0x0) && (local_cd8 != (undefined **)PTR_DAT_14016f010)) &&
|
|
(ppuVar1 = local_cd8 + -1, ppuVar1 != (undefined **)0x0)) {
|
|
piVar9 = (int *)FUN_14003e7c0(ppsVar11,pwVar15,puVar18,pppuVar13);
|
|
local_d58 = piVar9;
|
|
FUN_14003d040(piVar9);
|
|
local_d50 = CONCAT71(local_d50._1_7_,1);
|
|
piVar2 = (int *)((longlong)ppuVar4 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14003e8b0(ppuVar1);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar9);
|
|
}
|
|
psVar3 = local_d88;
|
|
psVar19 = local_d88;
|
|
if (local_d88 == (short *)0x0) {
|
|
psVar19 = (short *)PTR_DAT_14016f010;
|
|
}
|
|
uVar6 = 1;
|
|
lVar12 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0);
|
|
FUN_1400843d0(lVar12,1,psVar19,pppuVar13);
|
|
if (((psVar3 != (short *)0x0) && (psVar3 != (short *)PTR_DAT_14016f010)) &&
|
|
(psVar3 + -4 != (short *)0x0)) {
|
|
piVar9 = (int *)FUN_14003e7c0(lVar12,uVar6,psVar19,pppuVar13);
|
|
local_d58 = piVar9;
|
|
FUN_14003d040(piVar9);
|
|
local_d50 = CONCAT71(local_d50._1_7_,1);
|
|
piVar2 = (int *)(psVar3 + -2);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14003e8b0(psVar3 + -4);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar9);
|
|
}
|
|
}
|
|
FUN_14003d0d0((longlong)piVar7);
|
|
local_cd8 = &local_d78;
|
|
FUN_14008a320((longlong *)&local_d78);
|
|
if ((local_d70 != 0) && (local_d64 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|