/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14003ca90 FUN_14003ca90 * Pseudocode, not original source. */ void FUN_14003ca90(longlong param_1) { undefined3 *_Src; int iVar1; int iVar2; ulonglong uVar3; longlong lVar4; ulonglong *puVar5; char *pcVar6; char *pcVar7; undefined8 *puVar8; bool bVar9; undefined1 auStackY_4c8 [32]; ulonglong *local_488; undefined3 local_480; undefined1 local_47d; DWORD local_47c [3]; LPOVERLAPPED local_470; undefined1 local_468 [4]; int iStack_464; undefined1 local_460 [520]; int local_258; int local_254; undefined1 local_250 [512]; undefined4 local_50; undefined4 local_48; undefined1 uStack_44; undefined1 local_43; undefined4 local_40; undefined1 uStack_3c; undefined1 local_3b; ulonglong local_38; local_38 = DAT_14016f5a0 ^ (ulonglong)auStackY_4c8; puVar8 = (undefined8 *)0x0; if (param_1 != 0) { puVar8 = *(undefined8 **)(param_1 + 0x58); } local_47c[0] = 0; local_488 = (ulonglong *)0x0; local_47c[1] = 0; local_470 = (LPOVERLAPPED)0x0; LAB_14003caf0: do { do { while (GetQueuedCompletionStatus (*(HANDLE *)(param_1 + 0x18),local_47c,(PULONG_PTR)&local_488,&local_470, 0xffffffff), puVar5 = local_488, local_47c[0] == 0) { Ordinal_3(*local_488); if (puVar8 != (undefined8 *)0x0) { FUN_14003c270(puVar8,*local_488); } free(local_488); } } while ((LPOVERLAPPED)(local_488 + 7) != local_470); memset(local_460,0,0x200); bVar9 = true; local_47d = 0; _Src = (undefined3 *)puVar5[0x4d]; lVar4 = 4; local_480 = *_Src; pcVar6 = (char *)&local_480; pcVar7 = "PHP"; do { if (lVar4 == 0) break; lVar4 = lVar4 + -1; bVar9 = *pcVar6 == *pcVar7; pcVar6 = pcVar6 + 1; pcVar7 = pcVar7 + 1; } while (bVar9); if (!bVar9) { memcpy(local_468,_Src,0x208); iVar1 = iStack_464; if (iStack_464 == 1) { iStack_464 = 1; memcpy(puVar5 + 0xb,local_468,0x208); *(undefined4 *)(local_488 + 0x4c) = 0x208; local_488[0x4d] = (ulonglong)(local_488 + 0xb); WSASend(*local_488,local_488 + 0x4c,1,0); puVar5 = local_488; iVar1 = 1; } local_47c[1] = 0; LAB_14003cce6: puVar5[7] = 0; puVar5[8] = 0; puVar5[9] = 0; puVar5[10] = 0; *(undefined4 *)(local_488 + 0x4c) = 0x208; local_488[0x4d] = (ulonglong)(local_488 + 0xb); iVar2 = WSARecv(*local_488,local_488 + 0x4c,1); if (iVar2 == -1) { Ordinal_111(); } if ((iVar1 != 0) && (puVar8 != (undefined8 *)0x0)) { memset(local_250,0,0x200); local_258 = 0x20c; uVar3 = FUN_14003c4f0((longlong)puVar8,*local_488); local_50 = (undefined4)uVar3; local_254 = iVar1; memcpy(local_250,local_460,0x200); FUN_14003c950(*(longlong **)(param_1 + 8),&local_258); } goto LAB_14003caf0; } local_3b = 0; local_43 = 0; local_40 = *(undefined4 *)((longlong)_Src + 3); uStack_3c = *(undefined1 *)((longlong)_Src + 7); local_48 = *(undefined4 *)(_Src + 2); uStack_44 = *(undefined1 *)(_Src + 3); iVar1 = atoi((char *)&local_40); iVar2 = atoi((char *)&local_48); puVar5 = local_488; if (iVar2 < 0x401) { iStack_464 = iVar1; memcpy(local_460,(void *)(local_488[0x4d] + 0xd),(longlong)(iVar2 + -1)); iVar1 = iStack_464; goto LAB_14003cce6; } printf("API SERVER - RECEIVE PACKET ERROR (PACKET_SIZE > 1024)\n"); } while( true ); }