/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14007b6d0 FUN_14007b6d0 * Pseudocode, not original source. */ void FUN_14007b6d0(longlong param_1,longlong param_2,uint *param_3,undefined8 param_4) { bool bVar1; undefined *puVar2; uint uVar3; int *piVar4; int *piVar5; int *piVar6; undefined *puVar7; uint *puVar8; ulonglong uVar9; uint *puVar10; undefined8 uVar11; undefined8 uVar12; undefined *local_res10; longlong local_res18 [2]; undefined8 in_stack_ffffffffffffff10; undefined4 uVar13; undefined **local_c8; undefined8 local_c0; undefined8 local_b8; undefined8 local_b0; undefined8 local_a8; undefined **local_a0; undefined8 local_98; undefined8 local_90; undefined8 local_88; undefined8 local_80; int *local_78; undefined1 local_70; int *local_68; undefined1 local_60; int *local_58; undefined1 local_50; undefined8 local_48; uVar13 = (undefined4)((ulonglong)in_stack_ffffffffffffff10 >> 0x20); local_48 = 0xfffffffffffffffe; puVar8 = param_3 + 0x30; if (param_3 == (uint *)0x0) { puVar8 = (uint *)0x0; } puVar10 = param_3; FUN_140091260(local_res18,(longlong)puVar8); piVar4 = (int *)(**(code **)(*(longlong *)(param_3 + 0x42) + 0x10))(); FUN_14003d040(piVar4); bVar1 = true; **(undefined1 **)(param_3 + 0x1d2) = 0; uVar3 = *(uint *)(param_2 + 8); uVar9 = (ulonglong)uVar3; if ((int)uVar3 < 0) { piVar6 = piVar4; FUN_14003d0d0((longlong)piVar4); bVar1 = false; FUN_14003e7c0(piVar6,uVar9,puVar10,param_4); local_res10 = PTR_DAT_14016f010; FUN_140029b80((longlong *)&local_res10,L"%s:%d", L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase", (ulonglong)*(uint *)(param_2 + 0xc)); local_68 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); FUN_14003d040(local_68); local_60 = 1; if (DAT_14017614f != '\0') { (**(code **)(**(longlong **)(param_1 + 0x148) + 200)) (*(longlong **)(param_1 + 0x148), L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase"); } puVar2 = local_res10; local_98 = 0; local_90 = 0; local_88 = 0; local_80 = 0; local_a0 = Proud::ByteArray::vftable; puVar7 = local_res10; if (local_res10 == (undefined *)0x0) { puVar7 = PTR_DAT_14016f010; } uVar12 = 3; uVar11 = 0xb; FUN_14006ef00(*(SIZE_T **)(param_1 + 0x148),param_3,0xb,3,(longlong)&local_a0,puVar7, *(undefined4 *)(param_2 + 0xc)); FUN_140049e40(&local_a0); piVar6 = local_68; FUN_14003d0d0((longlong)local_68); if (((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_14016f010)) && (puVar2 + -8 != (undefined *)0x0)) { piVar5 = (int *)FUN_14003e7c0(piVar6,param_3,uVar11,uVar12); local_58 = piVar5; FUN_14003d040(piVar5); local_50 = 1; piVar6 = (int *)(puVar2 + -4); *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_14003e8b0(puVar2 + -8); } FUN_14003d0d0((longlong)piVar5); } } else { FUN_140093c10((longlong *)(*(longlong *)(param_3 + 0x1d2) + 0x48),uVar3); uVar3 = FUN_140090f10(*(char **)(param_3 + 0x1d2),uVar9,puVar10,param_4); if (uVar3 != 0) { FUN_14003d0d0((longlong)piVar4); bVar1 = false; piVar6 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); local_78 = piVar6; FUN_14003d040(piVar6); local_70 = 1; if (DAT_14017614f != '\0') { (**(code **)(**(longlong **)(param_1 + 0x148) + 200)) (*(longlong **)(param_1 + 0x148), L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase"); } local_c0 = 0; local_b8 = 0; local_b0 = 0; local_a8 = 0; local_c8 = Proud::ByteArray::vftable; (**(code **)(*(longlong *)(param_3 + 0x28) + 0x38)) (param_3 + 0x28,0xb,3,&local_c8, L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase", CONCAT44(uVar13,uVar3)); FUN_140049e40(&local_c8); (**(code **)(*(longlong *)(param_3 + 0x28) + 0x40)) (param_3 + 0x28,L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase"); FUN_14003d0d0((longlong)piVar6); local_70 = 0; } *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x580) = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x580) + 1; *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x5c0) = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x5c0) + (longlong)*(int *)(param_2 + 8); } if (bVar1) { FUN_14003d0d0((longlong)piVar4); } FUN_140091270(local_res18); return; }