/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14000fdd0 FUN_14000fdd0 * Pseudocode, not original source. */ longlong * FUN_14000fdd0(longlong *param_1,LPCSTR param_2) { int *piVar1; longlong *plVar2; int iVar3; longlong lVar4; if (param_2 != (LPCSTR)0x0) { iVar3 = MultiByteToWideChar(3,0,param_2,-1,(LPWSTR)0x0,0); iVar3 = iVar3 + -1; if (0 < iVar3) { if ((int)(1U - *(int *)(*param_1 + -8) | *(int *)(*param_1 + -0xc) - iVar3) < 0) { FUN_140011520(param_1,iVar3); } MultiByteToWideChar(3,0,param_2,-1,(LPWSTR)*param_1,iVar3); if (iVar3 <= *(int *)(*param_1 + -0xc)) { *(int *)(*param_1 + -0x10) = iVar3; *(undefined2 *)(*param_1 + (longlong)iVar3 * 2) = 0; return param_1; } /* WARNING: Subroutine does not return */ FUN_1400050d0(0x80070057); } } lVar4 = *param_1; plVar2 = *(longlong **)(lVar4 + -0x18); if (*(int *)(lVar4 + -0x10) != 0) { if (*(int *)(lVar4 + -8) < 0) { if (*(int *)(lVar4 + -0xc) < 0) { /* WARNING: Subroutine does not return */ FUN_1400050d0(0x80070057); } *(undefined4 *)(lVar4 + -0x10) = 0; *(undefined2 *)*param_1 = 0; } else { LOCK(); piVar1 = (int *)(lVar4 + -8); iVar3 = *piVar1; *piVar1 = *piVar1 + -1; UNLOCK(); if (iVar3 + -1 < 1) { (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); } lVar4 = (**(code **)(*plVar2 + 0x18))(plVar2); *param_1 = lVar4 + 0x18; } } return param_1; }