decomp DBCServer_Release and inspect/document database

This commit is contained in:
Benjamin Palko 2026-10-14 23:22:03 -04:00
parent 4b267cbe05
commit 7834b98bf0
28222 changed files with 843300 additions and 144 deletions

View file

@ -0,0 +1,609 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1400ea420 FUN_1400ea420
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
IID * FUN_1400ea420(undefined8 *param_1,undefined8 *param_2)
{
uchar *puVar1;
undefined4 *puVar2;
IUnknown *pIVar3;
undefined6 uVar4;
IUnknown *This;
int iVar5;
HRESULT HVar6;
ULONG UVar7;
undefined8 *puVar8;
IID *pIVar9;
longlong lVar10;
longlong *plVar11;
undefined8 uVar12;
undefined8 uVar13;
IID *pIVar14;
char *riid;
IID *pIVar15;
char *ppvObject;
uint uVar16;
undefined1 auStackY_328 [32];
char local_2e8 [4];
int local_2e4;
uint local_2e0;
short local_2dc;
short local_2d8;
longlong *local_2d0;
int local_2c8;
undefined8 local_2c0;
undefined4 local_2b8;
undefined2 uStack_2b4;
undefined2 uStack_2b2;
undefined6 uStack_2b0;
undefined2 uStack_2aa;
undefined6 uStack_2a8;
short local_2a2;
IID *local_2a0;
undefined8 *local_298;
IID *local_290;
LPUNKNOWN local_288;
longlong *local_280;
IUnknown *local_278;
longlong *local_270;
undefined4 local_268;
undefined1 local_258 [24];
undefined1 local_240 [24];
undefined4 local_228;
undefined1 *local_220;
undefined4 local_218;
undefined8 local_210;
undefined1 *local_208;
undefined8 *local_1f8;
IID *local_1f0;
longlong *local_1e8;
undefined8 local_1e0;
undefined1 local_1d8;
undefined8 local_1d0;
undefined1 local_1c8;
undefined8 local_1c0;
undefined1 local_1b8;
undefined8 local_1b0;
undefined1 local_1a8;
undefined8 local_1a0;
undefined1 local_198;
undefined8 local_190;
undefined1 local_188;
undefined8 local_180;
undefined1 local_178;
undefined8 local_170;
undefined1 local_168;
IID *local_160 [2];
undefined4 local_150;
undefined4 uStack_14c;
undefined4 uStack_148;
undefined4 uStack_144;
undefined1 local_140 [8];
undefined8 local_138;
undefined4 local_128;
undefined4 uStack_124;
undefined4 uStack_120;
undefined4 uStack_11c;
undefined1 local_110 [24];
undefined1 local_f8 [24];
undefined1 local_e0 [24];
longlong local_c8 [3];
undefined1 local_b0 [24];
undefined8 local_98;
undefined8 uStack_90;
undefined4 local_88;
undefined4 uStack_84;
undefined8 uStack_80;
undefined8 local_78;
undefined8 uStack_70;
undefined8 local_68;
ushort uStack_60;
undefined2 uStack_5e;
undefined4 uStack_5c;
undefined4 uStack_58;
undefined8 uStack_54;
undefined4 uStack_4c;
undefined4 uStack_48;
undefined4 local_44;
ushort uStack_40;
undefined2 uStack_3e;
ulonglong local_38;
local_138 = 0xfffffffffffffffe;
local_38 = DAT_1403463c0 ^ (ulonglong)auStackY_328;
pIVar15 = (IID *)0x0;
local_2d0 = (longlong *)0x0;
local_298 = param_1;
local_1f8 = param_2;
iVar5 = FUN_140001990(&local_2d0);
if ((iVar5 < 0) && (iVar5 != -0x7fffbffe)) {
/* WARNING: Subroutine does not return */
FUN_140218220(iVar5);
}
local_278 = (IUnknown *)0x0;
local_270 = (longlong *)0x0;
Ordinal_8(local_258);
Ordinal_8(local_240);
pIVar3 = local_278;
if ((local_278 != (IUnknown *)0x0) && (local_278 = (IUnknown *)0x0, pIVar3 != (IUnknown *)0x0)) {
(*pIVar3->lpVtbl->Release)(pIVar3);
}
local_208 = &DAT_14029e010;
local_220 = &DAT_14029e010;
local_218 = 0;
local_210 = 0;
if (local_278 != (IUnknown *)0x0) {
(*local_278->lpVtbl->Release)(local_278);
}
HVar6 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0,
&local_288);
if (HVar6 < 0) {
LAB_1400ea599:
local_278 = (IUnknown *)0x0;
}
else {
HVar6 = OleRun(local_288);
if (-1 < HVar6) {
HVar6 = (*local_288->lpVtbl->QueryInterface)(local_288,(IID *)&DAT_14029e078,&local_278);
}
(*local_288->lpVtbl->Release)(local_288);
if (HVar6 < 0) goto LAB_1400ea599;
}
local_228 = 2;
local_268 = 1;
local_2e8[0] = '\x01';
local_2b8 = *(undefined4 *)(param_2 + 1);
local_2c0._4_4_ = (undefined4)((ulonglong)*param_2 >> 0x20);
local_2c0._0_4_ = CONCAT22(0x23c8,(short)*param_2);
uStack_2b4 = 0x85;
uStack_2b2 = (undefined2)*(undefined8 *)((longlong)param_2 + 0xe);
uStack_2b0 = (undefined6)((ulonglong)*(undefined8 *)((longlong)param_2 + 0xe) >> 0x10);
uStack_2aa = (undefined2)*(undefined8 *)((longlong)param_2 + 0x16);
uStack_2a8 = (undefined6)((ulonglong)*(undefined8 *)((longlong)param_2 + 0x16) >> 0x10);
local_2e4 = 0;
local_2a2 = 0;
uVar16 = 0x20;
local_2e0 = 0x20;
pIVar3 = *(IUnknown **)*param_1;
if (pIVar3 != (IUnknown *)0x0) {
local_2c8 = 0;
UVar7 = (*pIVar3->lpVtbl[0xb].AddRef)(pIVar3);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029e018);
}
if (local_2c8 != 0) goto LAB_1400ea798;
}
iVar5 = FUN_1400a80c0(param_1);
if (iVar5 == 0) {
FUN_1400a8040(param_1,param_2,0);
pIVar3 = local_278;
if (local_278 != (IUnknown *)0x0) {
local_2e4 = 0;
UVar7 = (*local_278->lpVtbl[0x12].AddRef)(local_278);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029e038);
}
pIVar3 = local_278;
if (local_2e4 != 0) {
if (local_278 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
UVar7 = (*local_278->lpVtbl[10].Release)(local_278);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029e038);
}
}
if (local_278 != (IUnknown *)0x0) {
(*local_278->lpVtbl->Release)(local_278);
local_278 = (IUnknown *)0x0;
}
}
local_210 = 0;
local_208 = &DAT_14029e010;
local_220 = &DAT_14029e010;
local_218 = 0;
local_228 = 0;
Ordinal_9(local_240);
Ordinal_9(local_258);
if (local_270 != (longlong *)0x0) {
(**(code **)(*local_270 + 0x10))();
}
if (local_278 != (IUnknown *)0x0) {
(*local_278->lpVtbl->Release)(local_278);
}
if (local_2d0 != (longlong *)0x0) {
(**(code **)(*local_2d0 + 0x10))();
}
return (IID *)0x0;
}
LAB_1400ea798:
puVar8 = (undefined8 *)FUN_140001f40(*param_1,&local_1e8);
FUN_140001700(&local_2d0,*puVar8,"dbo.up_get_guild_increase_exp");
if (local_1e8 != (longlong *)0x0) {
(**(code **)(*local_1e8 + 0x10))();
}
local_280 = local_c8;
local_128 = *(undefined4 *)((longlong)param_2 + 0xe);
uStack_124 = *(undefined4 *)((longlong)param_2 + 0x12);
uStack_120 = *(undefined4 *)((longlong)param_2 + 0x16);
uStack_11c = *(undefined4 *)((longlong)param_2 + 0x1a);
FUN_140063820(local_c8,&local_128);
pIVar9 = operator_new(0x18);
local_160[0] = pIVar15;
local_1f0 = pIVar9;
if (pIVar9 != (IID *)0x0) {
pIVar9->Data4[0] = '\0';
pIVar9->Data4[1] = '\0';
pIVar9->Data4[2] = '\0';
pIVar9->Data4[3] = '\0';
pIVar9->Data4[4] = '\0';
pIVar9->Data4[5] = '\0';
pIVar9->Data4[6] = '\0';
pIVar9->Data4[7] = '\0';
pIVar9[1].Data1 = 1;
lVar10 = FUN_1402182d0("guild_id");
pIVar9->Data1 = (int)lVar10;
pIVar9->Data2 = (short)((ulonglong)lVar10 >> 0x20);
pIVar9->Data3 = (short)((ulonglong)lVar10 >> 0x30);
local_160[0] = pIVar9;
}
if (local_160[0] == (IID *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x8007000e);
}
plVar11 = (longlong *)FUN_140001870(&local_2d0,local_140,local_160,0xca);
local_280 = plVar11;
if (local_2d0 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
puVar8 = (undefined8 *)FUN_140001650(local_2d0,&local_1f0);
pIVar3 = (IUnknown *)*puVar8;
if (pIVar3 != (IUnknown *)0x0) {
UVar7 = (*pIVar3->lpVtbl[3].AddRef)(pIVar3);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029dfc0);
}
if (local_1f0 != (IID *)0x0) {
(**(code **)(*(longlong *)local_1f0 + 0x10))();
}
if ((longlong *)*plVar11 != (longlong *)0x0) {
(**(code **)(*(longlong *)*plVar11 + 0x10))();
}
puVar8 = (undefined8 *)FUN_1400016c0(&local_2d0,&local_280);
This = local_278;
pIVar3 = (IUnknown *)*puVar8;
if (local_278 != pIVar3) {
local_278 = pIVar3;
if (pIVar3 != (IUnknown *)0x0) {
(*pIVar3->lpVtbl->AddRef)(pIVar3);
}
if (This != (IUnknown *)0x0) {
(*This->lpVtbl->Release)(This);
}
}
if (local_280 != (longlong *)0x0) {
(**(code **)(*local_280 + 0x10))();
}
pIVar3 = local_278;
if (local_278 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
local_2d8 = 0;
UVar7 = (*local_278->lpVtbl[6].Release)(local_278);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029e038);
}
if (local_2d8 == -1) {
uStack_2b4 = 0x86;
pIVar15 = (IID *)0x0;
}
else {
while( true ) {
pIVar3 = local_278;
if (local_278 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
local_2dc = 0;
UVar7 = (*local_278->lpVtbl[6].Release)(local_278);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029e038);
}
if (local_2dc == -1) break;
local_98 = 0;
uStack_90 = 0;
local_88 = 0;
memset(&uStack_84,0,0x28);
uStack_5c = 0;
uStack_58 = 0;
uStack_54 = 0;
uStack_4c = 0;
uStack_48 = 0;
local_44 = 0;
uStack_40 = 0;
uStack_3e = 0;
uVar12 = FUN_140002290(&local_278,local_f8,"character_id",local_2e8);
FUN_140063b70(uVar12,&local_150);
local_98 = CONCAT44(uStack_14c,local_150);
uStack_90 = CONCAT44(uStack_144,uStack_148);
Ordinal_9(local_f8);
uVar12 = FUN_140002290(&local_278,local_110,&DAT_1402ab9d0,local_2e8);
FUN_140199590(uVar12);
local_88 = FUN_140063af0(uVar12);
Ordinal_9(local_110);
uVar12 = FUN_140002290(&local_278,local_e0,&DAT_1402a5b5c,local_2e8);
FUN_140063de0(uVar12,&local_2a0);
FUN_14016d8c0();
pIVar9 = (IID *)PTR_DAT_1403440a0;
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
pIVar9 = pIVar15;
}
if (local_2a0 != (IID *)PTR_DAT_1403440a0) {
uVar12 = FUN_14016d8c0();
local_188 = 0;
local_190 = uVar12;
FUN_14016db50(uVar12);
local_188 = 1;
if (((pIVar9 != (IID *)0x0) && (pIVar9 != (IID *)PTR_DAT_1403440a0)) &&
(pIVar9[-1].Data4 != (uchar *)0x0)) {
uVar13 = FUN_14016d8c0();
local_1c8 = 0;
local_1d0 = uVar13;
FUN_14016db50(uVar13);
local_1c8 = 1;
puVar1 = pIVar9[-1].Data4 + 4;
*(int *)puVar1 = *(int *)puVar1 + -1;
if (*(int *)puVar1 == 0) {
FUN_14016d970(pIVar9[-1].Data4);
}
FUN_14016dbe0(uVar13);
local_1c8 = 0;
}
pIVar9 = local_2a0;
if (((local_2a0 != (IID *)PTR_DAT_1403440a0) && (local_2a0 != (IID *)0x0)) &&
(local_2a0 != (IID *)0x8)) {
*(int *)(local_2a0[-1].Data4 + 4) = *(int *)(local_2a0[-1].Data4 + 4) + 1;
}
FUN_14016dbe0(uVar12);
local_188 = 0;
}
pIVar14 = pIVar9;
if (pIVar9 == (IID *)0x0) {
pIVar14 = (IID *)PTR_DAT_1403440a0;
}
wcsncpy((wchar_t *)&uStack_84,(wchar_t *)pIVar14,0x13);
if (((pIVar9 != (IID *)0x0) && (pIVar9 != (IID *)PTR_DAT_1403440a0)) &&
(pIVar9[-1].Data4 != (uchar *)0x0)) {
uVar12 = FUN_14016d8c0();
local_1a8 = 0;
local_1b0 = uVar12;
FUN_14016db50(uVar12);
local_1a8 = 1;
puVar1 = pIVar9[-1].Data4 + 4;
*(int *)puVar1 = *(int *)puVar1 + -1;
if (*(int *)puVar1 == 0) {
FUN_14016d970(pIVar9[-1].Data4);
}
FUN_14016dbe0(uVar12);
local_1a8 = 0;
}
pIVar9 = local_2a0;
if (((local_2a0 != (IID *)0x0) && (local_2a0 != (IID *)PTR_DAT_1403440a0)) &&
(pIVar14 = local_2a0 + -1, pIVar14->Data4 != (uchar *)0x0)) {
uVar12 = FUN_14016d8c0();
local_168 = 0;
local_170 = uVar12;
FUN_14016db50(uVar12);
local_168 = 1;
puVar1 = pIVar9[-1].Data4 + 4;
*(int *)puVar1 = *(int *)puVar1 + -1;
if (*(int *)puVar1 == 0) {
FUN_14016d970(pIVar14->Data4);
}
FUN_14016dbe0(uVar12);
local_168 = 0;
}
local_2a0 = (IID *)PTR_DAT_1403440a0;
Ordinal_9(local_e0);
uVar12 = FUN_140002290(&local_278,local_b0,"character_name",local_2e8);
FUN_140063de0(uVar12,&local_290);
FUN_14016d8c0();
pIVar9 = (IID *)PTR_DAT_1403440a0;
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
pIVar9 = pIVar15;
}
if (local_290 != (IID *)PTR_DAT_1403440a0) {
uVar12 = FUN_14016d8c0();
local_1b8 = 0;
local_1c0 = uVar12;
FUN_14016db50(uVar12);
local_1b8 = 1;
if (((pIVar9 != (IID *)0x0) && (pIVar9 != (IID *)PTR_DAT_1403440a0)) &&
(pIVar9[-1].Data4 != (uchar *)0x0)) {
uVar13 = FUN_14016d8c0();
local_1d8 = 0;
local_1e0 = uVar13;
FUN_14016db50(uVar13);
local_1d8 = 1;
puVar1 = pIVar9[-1].Data4 + 4;
*(int *)puVar1 = *(int *)puVar1 + -1;
if (*(int *)puVar1 == 0) {
FUN_14016d970(pIVar9[-1].Data4);
}
FUN_14016dbe0(uVar13);
local_1d8 = 0;
}
pIVar9 = local_290;
if (((local_290 != (IID *)PTR_DAT_1403440a0) && (local_290 != (IID *)0x0)) &&
(local_290 != (IID *)0x8)) {
*(int *)(local_290[-1].Data4 + 4) = *(int *)(local_290[-1].Data4 + 4) + 1;
}
FUN_14016dbe0(uVar12);
local_1b8 = 0;
}
riid = (char *)pIVar9;
if (pIVar9 == (IID *)0x0) {
riid = PTR_DAT_1403440a0;
}
ppvObject = (char *)0xf;
wcsncpy((wchar_t *)&uStack_5c,(wchar_t *)riid,0xf);
if (((pIVar9 != (IID *)0x0) && (pIVar9 != (IID *)PTR_DAT_1403440a0)) &&
(pIVar9[-1].Data4 != (uchar *)0x0)) {
uVar12 = FUN_14016d8c0();
local_198 = 0;
local_1a0 = uVar12;
FUN_14016db50(uVar12);
local_198 = 1;
puVar1 = pIVar9[-1].Data4 + 4;
*(int *)puVar1 = *(int *)puVar1 + -1;
if (*(int *)puVar1 == 0) {
FUN_14016d970(pIVar9[-1].Data4);
}
FUN_14016dbe0(uVar12);
local_198 = 0;
}
pIVar9 = local_290;
if (((local_290 != (IID *)0x0) && (local_290 != (IID *)PTR_DAT_1403440a0)) &&
(pIVar14 = local_290 + -1, pIVar14->Data4 != (uchar *)0x0)) {
uVar12 = FUN_14016d8c0();
local_178 = 0;
local_180 = uVar12;
FUN_14016db50(uVar12);
local_178 = 1;
puVar1 = pIVar9[-1].Data4 + 4;
*(int *)puVar1 = *(int *)puVar1 + -1;
if (*(int *)puVar1 == 0) {
FUN_14016d970(pIVar14->Data4);
}
FUN_14016dbe0(uVar12);
local_178 = 0;
}
local_290 = (IID *)PTR_DAT_1403440a0;
Ordinal_9(local_b0);
uStack_5e = 0;
uStack_3e = 0;
lVar10 = (longlong)(int)uVar16;
puVar8 = (undefined8 *)(lVar10 + 0x130 + (longlong)param_1);
*puVar8 = local_98;
puVar8[1] = uStack_90;
puVar8 = (undefined8 *)(lVar10 + 0x140 + (longlong)param_1);
*puVar8 = CONCAT44(uStack_84,local_88);
puVar8[1] = uStack_80;
puVar8 = (undefined8 *)(lVar10 + 0x150 + (longlong)param_1);
*puVar8 = local_78;
puVar8[1] = uStack_70;
puVar8 = (undefined8 *)(lVar10 + 0x160 + (longlong)param_1);
*puVar8 = local_68;
puVar8[1] = CONCAT44(uStack_5c,(uint)uStack_60);
puVar2 = (undefined4 *)(lVar10 + 0x170 + (longlong)param_1);
*puVar2 = uStack_58;
puVar2[1] = (undefined4)uStack_54;
puVar2[2] = uStack_54._4_4_;
puVar2[3] = uStack_4c;
*(ulonglong *)(lVar10 + 0x180 + (longlong)param_1) = CONCAT44(local_44,uStack_48);
*(uint *)(lVar10 + 0x188 + (longlong)param_1) = (uint)uStack_40;
local_2e0 = uVar16 + 0x5c;
local_2a2 = (short)local_2e4 + 1;
local_2e4 = CONCAT22((short)((uint)local_2e4 >> 0x10),local_2a2);
if (50000 < local_2e0) {
uVar4 = local_2c0._2_6_;
local_2c0 = CONCAT62(local_2c0._2_6_,(short)local_2e0);
uVar12 = local_2c0;
riid = (char *)(param_1 + 0x26);
local_2c0._4_2_ = SUB62(uVar4,2);
local_2c0._6_2_ = SUB62(uVar4,4);
((IID *)riid)->Data1 = (undefined4)local_2c0;
((IID *)riid)->Data2 = local_2c0._4_2_;
((IID *)riid)->Data3 = local_2c0._6_2_;
param_1[0x27] = CONCAT26(uStack_2b2,CONCAT24(uStack_2b4,local_2b8));
param_1[0x28] = CONCAT26(uStack_2aa,uStack_2b0);
param_1[0x29] = CONCAT26(local_2a2,uStack_2a8);
local_2c0 = uVar12;
iVar5 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0));
if (iVar5 == 0) {
ppvObject = "DB Result Queue push error";
riid = "DBResultQueue_Error.Log";
FUN_1400a6d80(param_1[0x23]);
}
local_2e0 = 0x20;
local_2e4 = 0;
local_2a2 = 0;
}
pIVar3 = local_278;
uVar16 = local_2e0;
if (local_278 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
HVar6 = (*local_278->lpVtbl[0xc].QueryInterface)(local_278,(IID *)riid,(void **)ppvObject);
if (HVar6 < 0) {
_com_issue_errorex(HVar6,pIVar3,(_GUID *)&DAT_14029e038);
}
}
if (local_2e8[0] == '\0') {
uStack_2b4 = 0x87;
}
else {
pIVar15 = (IID *)0x1;
}
}
local_2c0 = CONCAT62(local_2c0._2_6_,(short)uVar16);
param_1[0x26] = local_2c0;
param_1[0x27] = CONCAT26(uStack_2b2,CONCAT24(uStack_2b4,local_2b8));
param_1[0x28] = CONCAT26(uStack_2aa,uStack_2b0);
param_1[0x29] = CONCAT26(local_2a2,uStack_2a8);
iVar5 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0));
if (iVar5 == 0) {
FUN_1400a6d80(param_1[0x23],"DBResultQueue_Error.Log","DB Result Queue push error");
}
pIVar3 = local_278;
if (local_278 != (IUnknown *)0x0) {
local_2e0 = 0;
UVar7 = (*local_278->lpVtbl[0x12].AddRef)(local_278);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029e038);
}
pIVar3 = local_278;
if (local_2e0 != 0) {
if (local_278 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
UVar7 = (*local_278->lpVtbl[10].Release)(local_278);
if ((int)UVar7 < 0) {
_com_issue_errorex(UVar7,pIVar3,(_GUID *)&DAT_14029e038);
}
}
if (local_278 != (IUnknown *)0x0) {
(*local_278->lpVtbl->Release)(local_278);
local_278 = (IUnknown *)0x0;
}
}
local_210 = 0;
local_208 = &DAT_14029e010;
local_220 = &DAT_14029e010;
local_218 = 0;
local_228 = 0;
Ordinal_9(local_240);
Ordinal_9(local_258);
if (local_270 != (longlong *)0x0) {
(**(code **)(*local_270 + 0x10))();
}
if (local_278 != (IUnknown *)0x0) {
(*local_278->lpVtbl->Release)(local_278);
}
if (local_2d0 != (longlong *)0x0) {
(**(code **)(*local_2d0 + 0x10))();
}
return pIVar15;
}
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}