97 lines
3.5 KiB
C
97 lines
3.5 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x14004eb00 FUN_14004eb00
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 FUN_14004eb00(longlong param_1,uint param_2,undefined8 param_3,char *param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
uint uVar2;
|
|
longlong lVar3;
|
|
short *psVar4;
|
|
int *piVar5;
|
|
ulonglong uVar6;
|
|
int *piVar7;
|
|
undefined8 uVar8;
|
|
uint *puVar9;
|
|
longlong lVar10;
|
|
short *psVar11;
|
|
ulonglong uVar12;
|
|
short *local_res8;
|
|
longlong local_48 [2];
|
|
int *local_38;
|
|
undefined1 local_30;
|
|
int *local_28;
|
|
undefined1 local_20;
|
|
|
|
local_48[1] = 0xfffffffffffffffe;
|
|
piVar5 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))();
|
|
local_38 = piVar5;
|
|
FUN_14002e6e0(piVar5);
|
|
local_30 = 1;
|
|
if (DAT_14015bfcf != '\0') {
|
|
(**(code **)(**(longlong **)(param_1 + 0x20) + 200))();
|
|
}
|
|
uVar12 = (ulonglong)*(uint *)(*(longlong *)(param_1 + 0x20) + 0xca0);
|
|
uVar6 = (ulonglong)param_2 % uVar12;
|
|
lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0xc80);
|
|
if ((lVar3 != 0) && (puVar9 = *(uint **)(lVar3 + uVar6 * 8), puVar9 != (uint *)0x0)) {
|
|
while (uVar2 = puVar9[8], (int)uVar6 == (int)((ulonglong)uVar2 % uVar12)) {
|
|
if (*puVar9 == param_2) {
|
|
lVar3 = *(longlong *)(puVar9 + 2);
|
|
if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x228) == 0)) {
|
|
*(undefined1 *)(lVar3 + 0x701) = 0;
|
|
if (*param_4 == '\0') {
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0) != 0) {
|
|
FUN_140030200(puVar9,(ulonglong)uVar2 % uVar12,uVar6,uVar12);
|
|
local_res8 = (short *)PTR_DAT_140155010;
|
|
uVar6 = 0;
|
|
if (*(longlong *)(lVar3 + 0x740) != 0) {
|
|
uVar6 = *(ulonglong *)(*(longlong *)(lVar3 + 0x740) + 8);
|
|
piVar5 = local_38;
|
|
}
|
|
uVar6 = uVar6 & 0xffffffff;
|
|
FUN_14001b7a0((longlong *)&local_res8,
|
|
L"클라이언트의 udp socket 생성실패. HostID=%d, udpSocketRefCount=%d"
|
|
,(ulonglong)*(uint *)(lVar3 + 0x6f8),uVar6);
|
|
psVar4 = local_res8;
|
|
psVar11 = local_res8;
|
|
if (local_res8 == (short *)0x0) {
|
|
psVar11 = (short *)PTR_DAT_140155010;
|
|
}
|
|
uVar8 = 0;
|
|
lVar10 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0);
|
|
FUN_14008f2e0(lVar10,0,psVar11,uVar6);
|
|
if (((psVar4 != (short *)0x0) && (psVar4 != (short *)PTR_DAT_140155010)) &&
|
|
(psVar4 + -4 != (short *)0x0)) {
|
|
piVar7 = (int *)FUN_140030200(lVar10,uVar8,psVar11,uVar6);
|
|
local_28 = piVar7;
|
|
FUN_14002e6e0(piVar7);
|
|
local_20 = 1;
|
|
piVar1 = (int *)(psVar4 + -2);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_1400302f0(psVar4 + -4);
|
|
}
|
|
FUN_14002e770((longlong)piVar7);
|
|
}
|
|
}
|
|
*(undefined1 *)(lVar3 + 0x700) = 0;
|
|
*(undefined1 *)(lVar3 + 0x702) = 1;
|
|
local_48[0] = 0;
|
|
FUN_1400ad4b0((longlong *)(lVar3 + 0x740),local_48);
|
|
}
|
|
else {
|
|
FUN_14004d470(*(undefined8 *)(param_1 + 0x20),lVar3,uVar6,uVar12);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
puVar9 = *(uint **)(puVar9 + 4);
|
|
if (puVar9 == (uint *)0x0) break;
|
|
}
|
|
}
|
|
uVar8 = FUN_14002e770((longlong)piVar5);
|
|
return CONCAT71((int7)((ulonglong)uVar8 >> 8),1);
|
|
}
|
|
|