/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14002f4b0 FUN_14002f4b0 * Pseudocode, not original source. */ exception * FUN_14002f4b0(exception *param_1,longlong param_2,undefined8 param_3,undefined8 param_4) { undefined8 *puVar1; longlong *plVar2; LPSTR pCVar3; exception *peVar4; longlong lVar5; char *pcVar6; longlong *local_res10; peVar4 = param_1; lVar5 = param_2; std::exception::exception(param_1); *(undefined ***)param_1 = Proud::Exception::vftable; FUN_140030200(peVar4,lVar5,param_3,param_4); *(undefined **)(param_1 + 0x40) = PTR_DAT_140155008; plVar2 = FUN_14002ef50(param_2,&local_res10,param_3,param_4); puVar1 = (undefined8 *)*plVar2; if (puVar1 == (undefined8 *)0x0) { pcVar6 = (char *)0x0; } else { if (puVar1[1] == 0) { pCVar3 = FUN_14003a880((LPCWSTR)*puVar1); puVar1[1] = pCVar3; } pcVar6 = (char *)puVar1[1]; } FUN_14002efe0((longlong *)(param_1 + 0x40),pcVar6); if (local_res10 != (longlong *)0x0) { LOCK(); plVar2 = local_res10 + 2; lVar5 = *plVar2; *(int *)plVar2 = (int)*plVar2 + -1; UNLOCK(); if (((int)lVar5 == 1) && (local_res10 != (longlong *)0x0)) { if (*local_res10 != 0) { Ordinal_6(); } if ((void *)local_res10[1] != (void *)0x0) { operator_delete__((void *)local_res10[1]); } operator_delete(local_res10); } } *(longlong *)(param_1 + 0x30) = param_2; *(undefined4 *)(param_1 + 0x18) = 0; *(undefined4 *)(param_1 + 0x38) = 3; return param_1; }