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

432 lines
14 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1400d2760 FUN_1400d2760
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
longlong * FUN_1400d2760(longlong *param_1,undefined8 *param_2)
{
IUnknown *pIVar1;
IUnknown *pIVar2;
ULONG UVar3;
int iVar4;
HRESULT HVar5;
undefined8 *puVar6;
longlong *plVar7;
longlong lVar8;
undefined8 uVar9;
longlong *plVar10;
longlong *plVar11;
undefined1 auStackY_308 [32];
char local_2c8 [4];
short local_2c4;
longlong *local_2c0;
longlong *local_2b8;
longlong *local_2b0;
int local_2a8;
int local_2a4;
longlong *local_2a0;
LPUNKNOWN local_298;
longlong *local_290;
longlong *local_288;
undefined8 *local_280;
longlong *local_278 [2];
IUnknown *local_268;
longlong *local_260;
undefined4 local_258;
undefined1 local_248 [24];
undefined1 local_230 [24];
undefined4 local_218;
undefined1 *local_210;
undefined4 local_208;
undefined8 local_200;
undefined1 *local_1f8;
undefined1 *local_1e8;
longlong *local_1e0;
longlong *local_1d8;
longlong *local_1d0;
longlong *local_1c8;
undefined1 *local_1c0;
longlong *local_1b8;
undefined1 *local_1b0;
longlong *local_1a8;
undefined1 *local_1a0;
longlong *local_198;
longlong *local_190;
undefined1 local_188 [16];
undefined4 local_178;
undefined4 uStack_174;
undefined4 uStack_170;
undefined4 uStack_16c;
undefined1 local_160 [8];
undefined4 local_158;
undefined4 uStack_154;
undefined4 uStack_150;
undefined4 uStack_14c;
undefined1 local_148 [16];
undefined4 local_138;
undefined4 uStack_134;
undefined4 uStack_130;
undefined4 uStack_12c;
undefined1 local_128 [8];
undefined1 local_120 [16];
undefined8 local_110;
longlong local_108 [3];
undefined1 local_f0 [24];
undefined1 local_d8 [24];
undefined1 local_c0 [24];
undefined1 local_a8 [24];
longlong local_90 [3];
undefined1 local_78 [24];
undefined4 local_60;
undefined4 uStack_5c;
undefined4 local_58;
undefined2 local_54;
undefined1 local_52;
wchar_t local_51 [12];
ulonglong local_39;
ulonglong local_30;
local_110 = 0xfffffffffffffffe;
local_30 = DAT_1403463c0 ^ (ulonglong)auStackY_308;
local_52 = 0;
local_51[0] = L'\0';
local_51[1] = L'\0';
local_51[2] = L'\0';
local_51[3] = L'\0';
local_51[4] = L'\0';
local_51[5] = L'\0';
local_51[6] = L'\0';
local_51[7] = L'\0';
local_51[8] = L'\0';
local_51[9] = L'\0';
local_51[10] = L'\0';
local_51[0xb] = L'\0';
local_39 = 0;
local_58 = *(undefined4 *)(param_2 + 1);
_local_60 = CONCAT44((int)((ulonglong)*param_2 >> 0x20),0x243f0000);
local_54 = 1;
_local_60 = CONCAT62(stack0xffffffffffffffa2,0x2f);
pIVar1 = *(IUnknown **)*param_1;
plVar10 = (longlong *)0x0;
local_2c0 = param_1;
local_290 = param_1;
local_280 = param_2;
if (pIVar1 == (IUnknown *)0x0) {
LAB_1400d2840:
iVar4 = FUN_1400a80c0(param_1);
if (iVar4 == 0) {
FUN_1400a8040(param_1,param_2,0);
return (longlong *)0x0;
}
}
else {
local_2a8 = 0;
UVar3 = (*pIVar1->lpVtbl[0xb].AddRef)(pIVar1);
if ((int)UVar3 < 0) {
_com_issue_errorex(UVar3,pIVar1,(_GUID *)&DAT_14029e018);
}
if (local_2a8 == 0) goto LAB_1400d2840;
}
local_2b8 = (longlong *)0x0;
iVar4 = FUN_140001990(&local_2b8);
if ((iVar4 < 0) && (iVar4 != -0x7fffbffe)) {
/* WARNING: Subroutine does not return */
FUN_140218220(iVar4);
}
local_268 = (IUnknown *)0x0;
local_260 = (longlong *)0x0;
Ordinal_8(local_248);
Ordinal_8(local_230);
pIVar1 = local_268;
if ((local_268 != (IUnknown *)0x0) && (local_268 = (IUnknown *)0x0, pIVar1 != (IUnknown *)0x0)) {
(*pIVar1->lpVtbl->Release)(pIVar1);
}
local_1f8 = &DAT_14029e010;
local_210 = &DAT_14029e010;
local_208 = 0;
local_200 = 0;
if (local_268 != (IUnknown *)0x0) {
(*local_268->lpVtbl->Release)(local_268);
}
HVar5 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0,
&local_298);
if (-1 < HVar5) {
HVar5 = OleRun(local_298);
if (-1 < HVar5) {
HVar5 = (*local_298->lpVtbl->QueryInterface)(local_298,(IID *)&DAT_14029e078,&local_268);
}
(*local_298->lpVtbl->Release)(local_298);
if (-1 < HVar5) goto LAB_1400d297e;
}
local_268 = (IUnknown *)0x0;
LAB_1400d297e:
local_218 = 2;
local_258 = 1;
local_2c8[0] = '\x01';
puVar6 = (undefined8 *)FUN_140001f40(*param_1,&local_1a8);
FUN_140001700(&local_2b8,*puVar6,"dbo.up_update_character_name");
if (local_1a8 != (longlong *)0x0) {
(**(code **)(*local_1a8 + 0x10))();
}
local_2a0 = local_108;
local_158 = *(undefined4 *)((longlong)param_2 + 0xe);
uStack_154 = *(undefined4 *)((longlong)param_2 + 0x12);
uStack_150 = *(undefined4 *)((longlong)param_2 + 0x16);
uStack_14c = *(undefined4 *)((longlong)param_2 + 0x1a);
FUN_140063820(local_108,&local_158);
plVar7 = operator_new(0x18);
local_1b8 = plVar10;
local_288 = plVar7;
if (plVar7 != (longlong *)0x0) {
plVar7[1] = 0;
*(undefined4 *)(plVar7 + 2) = 1;
lVar8 = FUN_1402182d0("character_id");
*plVar7 = lVar8;
local_1b8 = plVar7;
}
if (local_1b8 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x8007000e);
}
plVar7 = (longlong *)FUN_140001870(&local_2b8,local_278,&local_1b8,0xca);
local_2a0 = plVar7;
if (local_2b8 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
puVar6 = (undefined8 *)FUN_140001650(local_2b8,&local_1e0);
pIVar1 = (IUnknown *)*puVar6;
if (pIVar1 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
UVar3 = (*pIVar1->lpVtbl[3].AddRef)(pIVar1);
if ((int)UVar3 < 0) {
_com_issue_errorex(UVar3,pIVar1,(_GUID *)&DAT_14029dfc0);
}
if (local_1e0 != (longlong *)0x0) {
(**(code **)(*local_1e0 + 0x10))();
}
if ((longlong *)*plVar7 != (longlong *)0x0) {
(**(code **)(*(longlong *)*plVar7 + 0x10))();
}
local_278[0] = local_90;
FUN_140063990(local_90,(longlong)param_2 + 0x1e);
plVar7 = operator_new(0x18);
local_1d0 = plVar10;
local_2a0 = plVar7;
if (plVar7 != (longlong *)0x0) {
plVar7[1] = 0;
*(undefined4 *)(plVar7 + 2) = 1;
lVar8 = FUN_1402182d0("character_name");
*plVar7 = lVar8;
local_1d0 = plVar7;
}
if (local_1d0 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x8007000e);
}
plVar7 = (longlong *)FUN_140001870(&local_2b8,&local_1e8,&local_1d0,0xca);
local_278[0] = plVar7;
if (local_2b8 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
puVar6 = (undefined8 *)FUN_140001650(local_2b8,&local_1d8);
pIVar1 = (IUnknown *)*puVar6;
if (pIVar1 != (IUnknown *)0x0) {
UVar3 = (*pIVar1->lpVtbl[3].AddRef)(pIVar1);
if ((int)UVar3 < 0) {
_com_issue_errorex(UVar3,pIVar1,(_GUID *)&DAT_14029dfc0);
}
if (local_1d8 != (longlong *)0x0) {
(**(code **)(*local_1d8 + 0x10))();
}
if ((longlong *)*plVar7 != (longlong *)0x0) {
(**(code **)(*(longlong *)*plVar7 + 0x10))();
}
puVar6 = (undefined8 *)FUN_1400016c0(&local_2b8,&local_190);
pIVar2 = local_268;
pIVar1 = (IUnknown *)*puVar6;
if (local_268 != pIVar1) {
local_268 = pIVar1;
if (pIVar1 != (IUnknown *)0x0) {
(*pIVar1->lpVtbl->AddRef)(pIVar1);
}
if (pIVar2 != (IUnknown *)0x0) {
(*pIVar2->lpVtbl->Release)(pIVar2);
}
}
if (local_190 != (longlong *)0x0) {
(**(code **)(*local_190 + 0x10))();
}
pIVar1 = local_268;
if (local_268 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
local_2c4 = 0;
UVar3 = (*local_268->lpVtbl[6].Release)(local_268);
if ((int)UVar3 < 0) {
_com_issue_errorex(UVar3,pIVar1,(_GUID *)&DAT_14029e038);
}
if (local_2c4 == -1) {
local_54 = 0x72;
plVar7 = local_2c0;
plVar11 = plVar10;
}
else {
uVar9 = FUN_140002290(&local_268,local_d8,"UPDATE_CHARACTER_NAME",local_2c8);
FUN_140199590(uVar9);
iVar4 = FUN_140063af0(uVar9);
Ordinal_9(local_d8);
plVar7 = local_2c0;
if (iVar4 != 0) {
local_52 = 1;
wcsncpy(local_51,(wchar_t *)((longlong)param_2 + 0x1e),0x10);
local_39 = local_39 & 0xffffffffffff;
local_2b0 = (longlong *)0x0;
iVar4 = FUN_140001990(&local_2b0);
plVar7 = local_2c0;
if ((iVar4 < 0) && (iVar4 != -0x7fffbffe)) {
/* WARNING: Subroutine does not return */
FUN_140218220(iVar4);
}
puVar6 = (undefined8 *)FUN_140001f40(*local_2c0,&local_198);
FUN_140001700(&local_2b0,*puVar6,"dbo.up_update_friend_name");
if (local_198 != (longlong *)0x0) {
(**(code **)(*local_198 + 0x10))();
}
local_1e8 = local_78;
local_138 = *(undefined4 *)((longlong)param_2 + 0xe);
uStack_134 = *(undefined4 *)((longlong)param_2 + 0x12);
uStack_130 = *(undefined4 *)((longlong)param_2 + 0x16);
uStack_12c = *(undefined4 *)((longlong)param_2 + 0x1a);
FUN_140063820(local_78,&local_138);
uVar9 = FUN_140001000(local_160,"character_id");
uVar9 = FUN_140001870(&local_2b0,&local_1c0,uVar9,0xca);
FUN_1400017d0(&local_2b0,uVar9);
local_1c0 = local_a8;
FUN_140063990(local_a8,(longlong)param_2 + 0x1e);
uVar9 = FUN_140001000(local_128,"character_name");
uVar9 = FUN_140001870(&local_2b0,&local_1b0,uVar9,0xca);
FUN_1400017d0(&local_2b0,uVar9);
puVar6 = (undefined8 *)FUN_1400016c0(&local_2b0,&local_1c8);
pIVar2 = local_268;
pIVar1 = (IUnknown *)*puVar6;
if (local_268 != pIVar1) {
local_268 = pIVar1;
if (pIVar1 != (IUnknown *)0x0) {
(*pIVar1->lpVtbl->AddRef)(pIVar1);
}
if (pIVar2 != (IUnknown *)0x0) {
(*pIVar2->lpVtbl->Release)(pIVar2);
}
}
if (local_1c8 != (longlong *)0x0) {
(**(code **)(*local_1c8 + 0x10))();
}
if (local_2b0 != (longlong *)0x0) {
(**(code **)(*local_2b0 + 0x10))();
}
local_2c0 = (longlong *)0x0;
iVar4 = FUN_140001990(&local_2c0);
if ((iVar4 < 0) && (iVar4 != -0x7fffbffe)) {
/* WARNING: Subroutine does not return */
FUN_140218220(iVar4);
}
puVar6 = (undefined8 *)FUN_140001f40(*plVar7,&local_288);
FUN_140001700(&local_2c0,*puVar6,"dbo.up_update_guild_member_name");
if (local_288 != (longlong *)0x0) {
(**(code **)(*local_288 + 0x10))();
}
local_1b0 = local_f0;
local_178 = *(undefined4 *)((longlong)param_2 + 0xe);
uStack_174 = *(undefined4 *)((longlong)param_2 + 0x12);
uStack_170 = *(undefined4 *)((longlong)param_2 + 0x16);
uStack_16c = *(undefined4 *)((longlong)param_2 + 0x1a);
FUN_140063820(local_f0,&local_178);
uVar9 = FUN_140001000(local_120,"character_id");
uVar9 = FUN_140001870(&local_2c0,&local_1a0,uVar9,0xca);
FUN_1400017d0(&local_2c0,uVar9);
local_1a0 = local_c0;
FUN_140063990(local_c0,(longlong)param_2 + 0x1e);
uVar9 = FUN_140001000(local_188,"character_name");
uVar9 = FUN_140001870(&local_2c0,local_148,uVar9,0xca);
FUN_1400017d0(&local_2c0,uVar9);
puVar6 = (undefined8 *)FUN_1400016c0(&local_2c0,&local_2a0);
pIVar2 = local_268;
pIVar1 = (IUnknown *)*puVar6;
if (local_268 != pIVar1) {
local_268 = pIVar1;
if (pIVar1 != (IUnknown *)0x0) {
(*pIVar1->lpVtbl->AddRef)(pIVar1);
}
if (pIVar2 != (IUnknown *)0x0) {
(*pIVar2->lpVtbl->Release)(pIVar2);
}
}
if (local_2a0 != (longlong *)0x0) {
(**(code **)(*local_2a0 + 0x10))();
}
if (local_2c0 != (longlong *)0x0) {
(**(code **)(*local_2c0 + 0x10))();
}
}
plVar11 = (longlong *)0x1;
if (local_2c8[0] == '\0') {
local_54 = 0x70;
plVar11 = plVar10;
}
}
iVar4 = FUN_1400a7630(*(undefined8 *)(plVar7[0x22] + 0xf0),&local_60);
if (iVar4 == 0) {
FUN_1400a6d80(plVar7[0x23],"DBResultQueue_Error.Log","DB Result Queue push error");
}
pIVar1 = local_268;
if (local_268 != (IUnknown *)0x0) {
local_2a4 = 0;
UVar3 = (*local_268->lpVtbl[0x12].AddRef)(local_268);
if ((int)UVar3 < 0) {
_com_issue_errorex(UVar3,pIVar1,(_GUID *)&DAT_14029e038);
}
pIVar1 = local_268;
if (local_2a4 != 0) {
if (local_268 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
UVar3 = (*local_268->lpVtbl[10].Release)(local_268);
if ((int)UVar3 < 0) {
_com_issue_errorex(UVar3,pIVar1,(_GUID *)&DAT_14029e038);
}
}
if (local_268 != (IUnknown *)0x0) {
(*local_268->lpVtbl->Release)(local_268);
local_268 = (IUnknown *)0x0;
}
}
local_200 = 0;
local_1f8 = &DAT_14029e010;
local_210 = &DAT_14029e010;
local_208 = 0;
local_218 = 0;
Ordinal_9(local_230);
Ordinal_9(local_248);
if (local_260 != (longlong *)0x0) {
(**(code **)(*local_260 + 0x10))();
}
if (local_268 != (IUnknown *)0x0) {
(*local_268->lpVtbl->Release)(local_268);
}
if (local_2b8 != (longlong *)0x0) {
(**(code **)(*local_2b8 + 0x10))();
}
return plVar11;
}
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}