/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14003a880 FUN_14003a880 * Pseudocode, not original source. */ LPSTR FUN_14003a880(LPCWSTR param_1) { WCHAR WVar1; int iVar2; uint uVar3; LPSTR lpMultiByteStr; longlong lVar4; LPCWSTR pWVar5; lpMultiByteStr = (LPSTR)0x0; if (param_1 != (LPCWSTR)0x0) { lVar4 = -1; pWVar5 = param_1; do { if (lVar4 == 0) break; lVar4 = lVar4 + -1; WVar1 = *pWVar5; pWVar5 = pWVar5 + 1; } while (WVar1 != L'\0'); iVar2 = WideCharToMultiByte(0,0,param_1,~(uint)lVar4,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0); if (iVar2 == 0) { uVar3 = GetLastError(); if (0 < (int)uVar3) { uVar3 = uVar3 & 0xffff | 0x80070000; } /* WARNING: Subroutine does not return */ FUN_14003a870((ulonglong)uVar3); } lpMultiByteStr = operator_new((longlong)iVar2); if (lpMultiByteStr == (LPSTR)0x0) { /* WARNING: Subroutine does not return */ FUN_14003a870(0x8007000e); } iVar2 = WideCharToMultiByte(0,0,param_1,~(uint)lVar4,lpMultiByteStr,iVar2,(LPCSTR)0x0, (LPBOOL)0x0); if (iVar2 == 0) { operator_delete(lpMultiByteStr); uVar3 = GetLastError(); if (0 < (int)uVar3) { uVar3 = uVar3 & 0xffff | 0x80070000; } /* WARNING: Subroutine does not return */ FUN_14003a870((ulonglong)uVar3); } } return lpMultiByteStr; }