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

159 lines
4.3 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14013c010 FUN_14013c010
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
int FUN_14013c010(longlong param_1,undefined4 param_2,ushort param_3,undefined4 param_4,
undefined8 *param_5,undefined8 *param_6,char *param_7,wchar_t *param_8,
wchar_t *param_9,undefined4 param_10,short *param_11,undefined8 param_12)
{
short sVar1;
longlong lVar2;
int iVar3;
short *psVar4;
undefined1 auStack_1a8 [32];
ushort local_188;
longlong local_180;
undefined4 local_178;
undefined4 local_174;
undefined4 local_170;
undefined2 local_16c;
undefined8 local_16a;
undefined8 local_162;
undefined8 local_15a;
undefined8 local_152;
undefined4 local_14a;
undefined8 local_146;
char local_13e [51];
wchar_t local_10b [32];
short local_cb [50];
undefined2 local_67;
ulonglong local_58;
local_58 = DAT_1403463c0 ^ (ulonglong)auStack_1a8;
local_16c = 0;
local_10b[0] = L'\0';
local_10b[1] = L'\0';
local_10b[2] = L'\0';
local_10b[3] = L'\0';
local_10b[4] = L'\0';
local_10b[5] = L'\0';
local_10b[6] = L'\0';
local_10b[7] = L'\0';
local_10b[8] = L'\0';
local_10b[9] = L'\0';
local_10b[10] = L'\0';
local_10b[0xb] = L'\0';
local_10b[0xc] = L'\0';
local_10b[0xd] = L'\0';
local_10b[0xe] = L'\0';
local_10b[0xf] = L'\0';
local_10b[0x10] = L'\0';
local_10b[0x11] = L'\0';
local_10b[0x12] = L'\0';
local_10b[0x13] = L'\0';
local_10b[0x14] = L'\0';
local_10b[0x15] = L'\0';
local_10b[0x16] = L'\0';
local_10b[0x17] = L'\0';
local_10b[0x18] = L'\0';
local_10b[0x19] = L'\0';
local_10b[0x1a] = L'\0';
local_10b[0x1b] = L'\0';
local_10b[0x1c] = L'\0';
local_10b[0x1d] = L'\0';
local_10b[0x1e] = L'\0';
local_10b[0x1f] = L'\0';
local_13e[0] = '\0';
local_13e[1] = '\0';
local_13e[2] = '\0';
local_13e[3] = '\0';
local_13e[4] = '\0';
local_13e[5] = '\0';
local_13e[6] = '\0';
local_13e[7] = '\0';
local_13e[8] = '\0';
local_13e[9] = '\0';
local_13e[10] = '\0';
local_13e[0xb] = '\0';
local_13e[0xc] = '\0';
local_13e[0xd] = '\0';
local_13e[0xe] = '\0';
local_13e[0xf] = '\0';
local_13e[0x10] = '\0';
local_13e[0x11] = '\0';
local_13e[0x12] = '\0';
local_13e[0x13] = '\0';
local_13e[0x14] = '\0';
local_13e[0x15] = '\0';
local_13e[0x16] = '\0';
local_13e[0x17] = '\0';
local_13e[0x18] = '\0';
local_13e[0x19] = '\0';
local_13e[0x1a] = '\0';
local_13e[0x1b] = '\0';
local_13e[0x1c] = '\0';
local_13e[0x1d] = '\0';
local_13e[0x1e] = '\0';
local_13e[0x1f] = '\0';
local_13e[0x20] = '\0';
local_13e[0x21] = '\0';
local_13e[0x22] = '\0';
local_13e[0x23] = '\0';
local_13e[0x24] = '\0';
local_13e[0x25] = '\0';
local_13e[0x26] = '\0';
local_13e[0x27] = '\0';
local_13e[0x28] = '\0';
local_13e[0x29] = '\0';
local_13e[0x2a] = '\0';
local_13e[0x2b] = '\0';
local_13e[0x2c] = '\0';
local_13e[0x2d] = '\0';
local_13e[0x2e] = '\0';
local_13e[0x2f] = '\0';
local_13e[0x30] = '\0';
local_13e[0x31] = '\0';
local_13e[0x32] = 0;
local_188 = param_3;
local_180 = param_1;
memset(local_cb,0,0x66);
local_16a = *param_5;
local_146 = param_12;
local_162 = param_5[1];
local_15a = *param_6;
local_152 = param_6[1];
local_178 = 0x5020113;
local_14a = param_10;
local_174 = param_4;
local_170 = param_2;
strncpy(local_13e,param_7,0x32);
wcsncpy(local_10b,param_9,0xf);
wcsncpy(local_10b + 0x10,param_8,0xf);
psVar4 = param_11;
do {
sVar1 = *psVar4;
psVar4 = psVar4 + 1;
*(short *)((longlong)local_cb + (-2 - (longlong)param_11) + (longlong)psVar4) = sVar1;
} while (sVar1 != 0);
local_67 = 0;
if (local_188 < 1000) {
lVar2 = *(longlong *)(*(longlong *)(local_180 + 200) + (longlong)(short)local_188 * 8);
if (lVar2 != 0) {
EnterCriticalSection((LPCRITICAL_SECTION)(lVar2 + 0x38));
iVar3 = FUN_1400a7630(*(undefined8 *)(lVar2 + 0x18),&local_178);
if (iVar3 != 0) {
ReleaseSemaphore(*(HANDLE *)(lVar2 + 0x10),1,(LPLONG)0x0);
}
LeaveCriticalSection((LPCRITICAL_SECTION)(lVar2 + 0x38));
return iVar3;
}
}
else {
wprintf(L"Invalid Queue Index\n");
}
return 0;
}