server-re/decomp/DBCServer_Release_x64/full/functions/0x140001200.c

54 lines
1.5 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x140001200 FUN_140001200
* Pseudocode, not original source. */
longlong FUN_140001200(longlong param_1)
{
longlong *lpBuffer;
longlong lVar1;
int iVar2;
char *_DstBuf;
longlong lVar3;
char *_Format;
lpBuffer = (longlong *)(param_1 + 0x18);
if (*(longlong *)(param_1 + 0x18) == 0) {
FormatMessageA(0x1300,(LPCVOID)0x0,*(DWORD *)(param_1 + 8),0x400,(LPSTR)lpBuffer,0,
(va_list *)0x0);
if ((LPCSTR)*lpBuffer == (LPCSTR)0x0) {
_DstBuf = LocalAlloc(0,0x20);
*lpBuffer = (longlong)_DstBuf;
if (_DstBuf == (char *)0x0) {
return 0;
}
if ((*(int *)(param_1 + 8) + 0x7ffbfe00U < 0xfe00) && ((short)*(int *)(param_1 + 8) != 0x200))
{
_Format = "IDispatch error #%d";
}
else {
_Format = "Unknown error 0x%0lX";
}
sprintf_s(_DstBuf,0x20,_Format);
}
else {
iVar2 = lstrlenA((LPCSTR)*lpBuffer);
if (1 < iVar2) {
lVar3 = (longlong)iVar2;
lVar1 = *lpBuffer;
if (*(char *)(lVar3 + -1 + lVar1) != '\n') {
return lVar1;
}
*(undefined1 *)(lVar3 + -1 + lVar1) = 0;
lVar1 = *lpBuffer;
if (*(char *)(lVar3 + -2 + lVar1) != '\r') {
return lVar1;
}
*(undefined1 *)(lVar3 + -2 + lVar1) = 0;
return *lpBuffer;
}
}
}
return *lpBuffer;
}