server-re/decomp/Agent_Release_x64/full/functions/0x14003a880.c
2026-10-14 16:45:19 -04:00

53 lines
1.5 KiB
C

/* 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;
}