server-re/decomp/AgentManager_Release_x64/full/functions/0x14003cdd0.c
2026-10-15 09:58:24 -04:00

73 lines
2.1 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14003cdd0 FUN_14003cdd0
* Pseudocode, not original source. */
/* WARNING: Type propagation algorithm not settling */
void FUN_14003cdd0(longlong param_1)
{
int *piVar1;
longlong lVar2;
HANDLE FileHandle;
longlong *plVar3;
undefined8 *puVar4;
undefined1 auStack_d8 [32];
int *local_b8;
longlong *local_b0;
undefined8 local_a8;
int local_98 [4];
longlong *local_88;
undefined8 local_78;
int *local_70;
undefined1 local_68;
longlong local_60 [3];
undefined8 local_48 [3];
undefined1 local_30 [16];
ulonglong local_20;
local_78 = 0xfffffffffffffffe;
local_20 = DAT_14016f5a0 ^ (ulonglong)auStack_d8;
puVar4 = (undefined8 *)0x0;
if (param_1 != 0) {
puVar4 = *(undefined8 **)(param_1 + 0x58);
}
do {
local_98[0] = 0x10;
FileHandle = (HANDLE)Ordinal_1(*(undefined8 *)(param_1 + 0x20),local_30,local_98);
plVar3 = malloc(0x270);
*plVar3 = (longlong)FileHandle;
memcpy(plVar3 + 1,local_30,(longlong)local_98[0]);
CreateIoCompletionPort(FileHandle,*(HANDLE *)(param_1 + 0x18),(ulonglong)plVar3 & 0xffffffff,0);
local_b0 = plVar3 + 7;
*local_b0 = 0;
plVar3[8] = 0;
plVar3[9] = 0;
plVar3[10] = 0;
*(undefined4 *)(plVar3 + 0x4c) = 0x208;
plVar3[0x4d] = (longlong)(plVar3 + 0xb);
local_98[1] = 0;
local_a8 = 0;
local_b8 = local_98 + 1;
WSARecv(*plVar3,plVar3 + 0x4c,1);
lVar2 = *plVar3;
piVar1 = (int *)(puVar4 + 0xe);
local_70 = piVar1;
FUN_14003d040(piVar1);
local_68 = 1;
*(int *)(puVar4 + 0x15) = *(int *)(puVar4 + 0x15) + 1;
local_88 = FUN_14003c690(puVar4);
*local_88 = (longlong)*(int *)(puVar4 + 0x15);
local_88[1] = lVar2;
local_98[2] = *(int *)(puVar4 + 0x15);
if (puVar4[10] == 0) {
FUN_14003c840(puVar4 + 6,local_60,local_98 + 2);
}
else {
FUN_14000e3f0(puVar4 + 6,local_48,local_98 + 2,local_98 + 2);
}
printf("ApiSocket Join [Now:%d] !!!\n");
FUN_14003d0d0((longlong)piVar1);
} while( true );
}