/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401a97e0 FUN_1401a97e0 * Pseudocode, not original source. */ void FUN_1401a97e0(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4) { undefined *puVar1; int *piVar2; undefined *puVar3; undefined8 uVar4; undefined8 uVar5; undefined *local_res8; undefined8 in_stack_ffffffffffffff68; undefined4 uVar6; undefined8 local_70; undefined1 local_68; undefined8 local_60; undefined1 local_58; undefined **local_50; undefined8 local_48; undefined8 local_40; undefined8 local_38; undefined8 local_30; uVar6 = (undefined4)((ulonglong)in_stack_ffffffffffffff68 >> 0x20); if (*(longlong *)(param_1 + 0x148) != 0) { uVar4 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); local_60 = uVar4; FUN_14016db50(uVar4); local_58 = 1; if (DAT_14034c86f != '\0') { (**(code **)(**(longlong **)(param_1 + 0x148) + 200)) (*(longlong **)(param_1 + 0x148), L"Proud::CNetThreads_S::ShowThreadExceptionAndPurgeClient"); } if (param_2 == 0) { if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x758) != 0) { FUN_14016d8c0(); local_res8 = PTR_DAT_1403440a0; FUN_14004c020(&local_res8,&DAT_140282bc0,param_3,param_4); local_48 = 0; local_40 = 0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; uVar5 = FUN_140198f80(&local_70,1,0,&local_res8,&local_50); (**(code **)(**(longlong **)(param_1 + 0x148) + 0x80)) (*(longlong **)(param_1 + 0x148),uVar5); FUN_14019a9e0(&local_50); puVar3 = local_res8; if (((local_res8 != (undefined *)0x0) && (local_res8 != PTR_DAT_1403440a0)) && (puVar1 = local_res8 + -8, puVar1 != (undefined *)0x0)) { uVar5 = FUN_14016d8c0(); local_70 = uVar5; FUN_14016db50(uVar5); local_68 = 1; piVar2 = (int *)(puVar3 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(puVar1); } FUN_14016dbe0(uVar5); } } } else { if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x758) != 0) { FUN_14016d8c0(); local_res8 = PTR_DAT_1403440a0; FUN_14004c020(&local_res8,&DAT_140282c00,param_3,param_4, CONCAT44(uVar6,*(undefined4 *)(param_2 + 0x6f8))); local_48 = 0; local_40 = 0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; uVar5 = FUN_140198f80(&local_70,1,*(undefined4 *)(param_2 + 0x6f8),&local_res8,&local_50); (**(code **)(**(longlong **)(param_1 + 0x148) + 0x80)) (*(longlong **)(param_1 + 0x148),uVar5); FUN_14019a9e0(&local_50); puVar3 = local_res8; if (((local_res8 != (undefined *)0x0) && (local_res8 != PTR_DAT_1403440a0)) && (puVar1 = local_res8 + -8, puVar1 != (undefined *)0x0)) { uVar5 = FUN_14016d8c0(); local_70 = uVar5; FUN_14016db50(uVar5); local_68 = 1; piVar2 = (int *)(puVar3 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(puVar1); } FUN_14016dbe0(uVar5); } } local_48 = 0; local_40 = 0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; FUN_140196230(*(undefined8 *)(param_1 + 0x148),param_2,1,3,&local_50, L"Proud::CNetThreads_S::ShowThreadExceptionAndPurgeClient",0); FUN_14019a9e0(&local_50); } FUN_14016dbe0(uVar4); } return; }