/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14008b180 FUN_14008b180 * Pseudocode, not original source. */ void FUN_14008b180(longlong param_1,wchar_t *param_2,longlong param_3,undefined8 param_4) { undefined *puVar1; int *piVar2; undefined *puVar3; int *piVar4; longlong *plVar5; int *piVar6; undefined ***pppuVar7; wchar_t *pwVar8; longlong lVar9; undefined8 uVar10; undefined **ppuVar11; undefined *local_res8; int *local_70; undefined1 local_68; int *local_60; undefined1 local_58; undefined **local_50; undefined8 local_48; undefined8 local_40; undefined8 local_38; undefined8 local_30; if (*(longlong *)(param_1 + 0x148) != 0) { pwVar8 = param_2; lVar9 = param_3; uVar10 = param_4; piVar4 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); local_60 = piVar4; FUN_14002e6e0(piVar4); local_58 = 1; plVar5 = *(longlong **)(param_1 + 0x148); if (DAT_14015bfcf != '\0') { lVar9 = *plVar5; pwVar8 = L"Proud::CNetThreads_S::ShowThreadExceptionAndPurgeClient"; (**(code **)(lVar9 + 200))(); } if (param_2 == (wchar_t *)0x0) { if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x758) != 0) { FUN_140030200(plVar5,pwVar8,lVar9,uVar10); local_res8 = PTR_DAT_140155010; FUN_14001b7a0((longlong *)&local_res8, L"%s에서 %s 오류가 발생했으나 클라이언트를 식별 불가.", param_3,param_4); local_48 = 0; local_40 = 0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; ppuVar11 = &local_res8; plVar5 = FUN_14003c120((longlong *)&local_70,1,0,(longlong *)ppuVar11,(longlong)&local_50); lVar9 = **(longlong **)(param_1 + 0x148); (**(code **)(lVar9 + 0x80))(); pppuVar7 = &local_50; FUN_14003b870(pppuVar7); puVar3 = local_res8; if (((local_res8 != (undefined *)0x0) && (local_res8 != PTR_DAT_140155010)) && (puVar1 = local_res8 + -8, puVar1 != (undefined *)0x0)) { piVar6 = (int *)FUN_140030200(pppuVar7,plVar5,lVar9,ppuVar11); local_70 = piVar6; FUN_14002e6e0(piVar6); local_68 = 1; piVar2 = (int *)(puVar3 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_1400302f0(puVar1); } FUN_14002e770((longlong)piVar6); } } } else { if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x758) != 0) { FUN_140030200(plVar5,pwVar8,lVar9,uVar10); local_res8 = PTR_DAT_140155010; FUN_14001b7a0((longlong *)&local_res8, L"%s에서 %s 이유로 클라이언트 %d를 추방합니다.",param_3, param_4); local_48 = 0; local_40 = 0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; ppuVar11 = &local_res8; plVar5 = FUN_14003c120((longlong *)&local_70,1,(ulonglong)*(uint *)(param_2 + 0x37c), (longlong *)ppuVar11,(longlong)&local_50); lVar9 = **(longlong **)(param_1 + 0x148); (**(code **)(lVar9 + 0x80))(); pppuVar7 = &local_50; FUN_14003b870(pppuVar7); puVar3 = local_res8; if (((local_res8 != (undefined *)0x0) && (local_res8 != PTR_DAT_140155010)) && (puVar1 = local_res8 + -8, puVar1 != (undefined *)0x0)) { piVar6 = (int *)FUN_140030200(pppuVar7,plVar5,lVar9,ppuVar11); local_70 = piVar6; FUN_14002e6e0(piVar6); local_68 = 1; piVar2 = (int *)(puVar3 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_1400302f0(puVar1); } FUN_14002e770((longlong)piVar6); } } local_48 = 0; local_40 = 0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; FUN_140061820(*(SIZE_T **)(param_1 + 0x148),(uint *)param_2,1,3,(longlong)&local_50, L"Proud::CNetThreads_S::ShowThreadExceptionAndPurgeClient",0); FUN_14003b870(&local_50); } FUN_14002e770((longlong)piVar4); } return; }