/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401a4dd0 FUN_1401a4dd0 * Pseudocode, not original source. */ void FUN_1401a4dd0(longlong param_1,longlong param_2,longlong param_3) { int *piVar1; bool bVar2; undefined *puVar3; int iVar4; undefined8 uVar5; undefined8 uVar6; undefined *puVar7; longlong lVar8; undefined *local_res10; undefined1 local_res18 [16]; undefined8 in_stack_ffffffffffffff10; undefined4 uVar9; 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; undefined8 local_78; undefined1 local_70; undefined8 local_68; undefined1 local_60; undefined8 local_58; undefined1 local_50; undefined8 local_48; uVar9 = (undefined4)((ulonglong)in_stack_ffffffffffffff10 >> 0x20); local_48 = 0xfffffffffffffffe; lVar8 = param_3 + 0xc0; if (param_3 == 0) { lVar8 = 0; } FUN_1401baa30(local_res18,lVar8); uVar5 = (**(code **)(*(longlong *)(param_3 + 0x108) + 0x10))(); FUN_14016db50(uVar5); bVar2 = true; **(undefined1 **)(param_3 + 0x748) = 0; if (*(int *)(param_2 + 8) < 0) { FUN_14016dbe0(uVar5); bVar2 = false; FUN_14016d8c0(); local_res10 = PTR_DAT_1403440a0; FUN_14004c020(&local_res10,L"%s:%d", L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase", *(undefined4 *)(param_2 + 0xc)); local_68 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); FUN_14016db50(local_68); local_60 = 1; if (DAT_14034c86f != '\0') { (**(code **)(**(longlong **)(param_1 + 0x148) + 200)) (*(longlong **)(param_1 + 0x148), L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase"); } puVar3 = 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_1403440a0; } FUN_140196230(*(undefined8 *)(param_1 + 0x148),param_3,0xb,3,&local_a0,puVar7, *(undefined4 *)(param_2 + 0xc)); FUN_14019a9e0(&local_a0); FUN_14016dbe0(local_68); if (((puVar3 != (undefined *)0x0) && (puVar3 != PTR_DAT_1403440a0)) && (puVar3 + -8 != (undefined *)0x0)) { uVar6 = FUN_14016d8c0(); local_58 = uVar6; FUN_14016db50(uVar6); local_50 = 1; piVar1 = (int *)(puVar3 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar3 + -8); } FUN_14016dbe0(uVar6); } } else { FUN_1401bf1d0(*(longlong *)(param_3 + 0x748) + 0x48); iVar4 = FUN_1401ba6e0(*(undefined8 *)(param_3 + 0x748)); if (iVar4 != 0) { FUN_14016dbe0(uVar5); bVar2 = false; uVar6 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); local_78 = uVar6; FUN_14016db50(uVar6); local_70 = 1; if (DAT_14034c86f != '\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 + 0xa0) + 0x38)) (param_3 + 0xa0,0xb,3,&local_c8, L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase", CONCAT44(uVar9,iVar4)); FUN_14019a9e0(&local_c8); (**(code **)(*(longlong *)(param_3 + 0xa0) + 0x40)) (param_3 + 0xa0,L"Proud::CNetThreads_S::NetWorkerThread_TcpSendCompletionCase"); FUN_14016dbe0(uVar6); 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 (bVar2) { FUN_14016dbe0(uVar5); } FUN_1401baa40(local_res18); return; }