/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400de3c0 FUN_1400de3c0 * Pseudocode, not original source. */ undefined8 * FUN_1400de3c0(undefined8 *param_1,undefined8 *param_2) { undefined2 uVar1; undefined4 uVar2; IUnknown *pIVar3; undefined6 uVar4; IUnknown *This; undefined8 uVar5; ULONG UVar6; int iVar7; HRESULT HVar8; undefined4 uVar9; undefined8 *puVar10; undefined8 uVar11; longlong *plVar12; undefined8 uVar13; char *riid; undefined8 *puVar14; char *ppvObject; longlong lVar15; undefined8 *puVar16; uint uVar17; char local_res10 [8]; longlong *local_res18; undefined8 *local_res20; undefined8 local_188; undefined2 uStack_17c; ushort uStack_17a; longlong *local_178; int local_170; int local_16c; LPUNKNOWN local_168; undefined4 local_160; undefined4 local_15c; undefined4 local_158; undefined4 local_154; undefined4 local_150; undefined8 *local_148; IUnknown *local_138; longlong *local_130; undefined4 local_128; undefined1 local_118 [24]; undefined1 local_100 [24]; undefined4 local_e8; undefined1 *local_e0; undefined4 local_d8; undefined8 local_d0; undefined1 *local_c8; undefined8 *local_b8; longlong *local_b0; longlong *local_a8; longlong *local_a0; undefined8 local_98; undefined8 local_90; undefined8 local_88; undefined1 local_78 [16]; undefined1 local_68 [24]; IID local_50; local_88 = 0xfffffffffffffffe; pIVar3 = *(IUnknown **)*param_1; puVar14 = (undefined8 *)0x0; local_148 = param_2; if (pIVar3 == (IUnknown *)0x0) { LAB_1400de439: iVar7 = FUN_1400a80c0(param_1); if (iVar7 == 0) { FUN_1400a8040(param_1,param_2,0); return (undefined8 *)0x0; } } else { local_16c = 0; UVar6 = (*pIVar3->lpVtbl[0xb].AddRef)(pIVar3); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e018); } if (local_16c == 0) goto LAB_1400de439; } uVar2 = *(undefined4 *)(param_2 + 1); local_188 = CONCAT44((int)((ulonglong)*param_2 >> 0x20),0x234e0000); puVar16 = (undefined8 *)0x0; uStack_17c = 0x7b; uStack_17a = 0; uVar17 = 0x10; local_178 = (longlong *)0x0; iVar7 = FUN_140001990(&local_178); if ((iVar7 < 0) && (iVar7 != -0x7fffbffe)) { /* WARNING: Subroutine does not return */ FUN_140218220(iVar7); } local_138 = (IUnknown *)0x0; local_130 = (longlong *)0x0; Ordinal_8(local_118); Ordinal_8(local_100); pIVar3 = local_138; if ((local_138 != (IUnknown *)0x0) && (local_138 = (IUnknown *)0x0, pIVar3 != (IUnknown *)0x0)) { (*pIVar3->lpVtbl->Release)(pIVar3); } local_c8 = &DAT_14029e010; local_e0 = &DAT_14029e010; local_d8 = 0; local_d0 = 0; if (local_138 != (IUnknown *)0x0) { (*local_138->lpVtbl->Release)(local_138); } HVar8 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0, &local_168); if (-1 < HVar8) { HVar8 = OleRun(local_168); if (-1 < HVar8) { HVar8 = (*local_168->lpVtbl->QueryInterface)(local_168,(IID *)&DAT_14029e078,&local_138); } (*local_168->lpVtbl->Release)(local_168); if (-1 < HVar8) goto LAB_1400de5ab; } local_138 = (IUnknown *)0x0; LAB_1400de5ab: local_e8 = 2; local_128 = 1; local_res10[0] = '\x01'; puVar10 = (undefined8 *)FUN_140001f40(*param_1,&local_a0); FUN_140001700(&local_178,*puVar10,"dbo.up_read_all_guild"); if (local_a0 != (longlong *)0x0) { (**(code **)(*local_a0 + 0x10))(); } local_res18 = (longlong *)&local_160; uVar1 = *(undefined2 *)((longlong)param_2 + 0xe); Ordinal_8(&local_160); if ((short)local_160 != 0x12) { iVar7 = Ordinal_9(&local_160); if (iVar7 < 0) { /* WARNING: Subroutine does not return */ FUN_140218220(iVar7); } local_160 = CONCAT22(local_160._2_2_,0x12); } local_158 = CONCAT22(local_158._2_2_,uVar1); puVar10 = operator_new(0x18); local_b8 = puVar14; local_res20 = puVar10; if (puVar10 != (undefined8 *)0x0) { puVar10[1] = 0; *(undefined4 *)(puVar10 + 2) = 1; uVar11 = FUN_1402182d0("server"); *puVar10 = uVar11; local_b8 = puVar10; } if (local_b8 == (undefined8 *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x8007000e); } plVar12 = (longlong *)FUN_140001870(&local_178,local_78,&local_b8,3,1,4,&local_160); local_res18 = plVar12; if (local_178 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } puVar10 = (undefined8 *)FUN_140001650(local_178,&local_b0); pIVar3 = (IUnknown *)*puVar10; if (pIVar3 != (IUnknown *)0x0) { UVar6 = (*pIVar3->lpVtbl[3].AddRef)(pIVar3); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029dfc0); } if (local_b0 != (longlong *)0x0) { (**(code **)(*local_b0 + 0x10))(); } if ((longlong *)*plVar12 != (longlong *)0x0) { (**(code **)(*(longlong *)*plVar12 + 0x10))(); } puVar10 = (undefined8 *)FUN_1400016c0(&local_178,&local_a8); This = local_138; pIVar3 = (IUnknown *)*puVar10; if (local_138 != pIVar3) { local_138 = pIVar3; if (pIVar3 != (IUnknown *)0x0) { (*pIVar3->lpVtbl->AddRef)(pIVar3); } if (This != (IUnknown *)0x0) { (*This->lpVtbl->Release)(This); } } if (local_a8 != (longlong *)0x0) { (**(code **)(*local_a8 + 0x10))(); } pIVar3 = local_138; if (local_138 != (IUnknown *)0x0) { local_res18 = (longlong *)((ulonglong)local_res18 & 0xffffffffffff0000); UVar6 = (*local_138->lpVtbl[6].Release)(local_138); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e038); } if ((short)local_res18 == -1) { uStack_17c = 0x7e; puVar14 = (undefined8 *)0x0; } else { while( true ) { pIVar3 = local_138; if (local_138 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_res20 = (undefined8 *)((ulonglong)local_res20 & 0xffffffffffff0000); UVar6 = (*local_138->lpVtbl[6].Release)(local_138); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e038); } if ((short)local_res20 == -1) break; local_160 = 0; local_15c = 0; local_158 = 0; local_154 = 0; local_150 = 0; uVar11 = FUN_140002290(&local_138,local_68,"guild_id",local_res10); FUN_140063b70(uVar11,&local_98); uVar5 = local_90; uVar11 = local_98; Ordinal_9(local_68); ppvObject = "room_id"; riid = (char *)&local_50; uVar13 = FUN_140002290(&local_138,riid,"room_id",local_res10); FUN_140199590(uVar13); uVar9 = FUN_140063af0(uVar13); Ordinal_9(&local_50); lVar15 = (longlong)(int)uVar17; *(undefined8 *)(lVar15 + 0x130 + (longlong)param_1) = uVar11; *(undefined8 *)(lVar15 + 0x138 + (longlong)param_1) = uVar5; *(undefined4 *)(lVar15 + 0x140 + (longlong)param_1) = uVar9; uVar17 = uVar17 + 0x14; uStack_17a = (short)puVar16 + 1; puVar16 = (undefined8 *)(ulonglong)uStack_17a; if (50000 < uVar17) { uVar4 = local_188._2_6_; local_188 = CONCAT62(local_188._2_6_,(short)uVar17); uVar11 = local_188; riid = (char *)(param_1 + 0x26); local_188._4_2_ = SUB62(uVar4,2); local_188._6_2_ = SUB62(uVar4,4); ((IID *)riid)->Data1 = (undefined4)local_188; ((IID *)riid)->Data2 = local_188._4_2_; ((IID *)riid)->Data3 = local_188._6_2_; param_1[0x27] = CONCAT26(uStack_17a,CONCAT24(0x7b,uVar2)); iVar7 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0)); if (iVar7 == 0) { ppvObject = "DB Result Queue push error"; riid = "DBResultQueue_Error.Log"; FUN_1400a6d80(param_1[0x23]); } uVar17 = 0x10; uStack_17a = 0; puVar16 = puVar14; local_188 = uVar11; } pIVar3 = local_138; if (local_138 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } HVar8 = (*local_138->lpVtbl[0xc].QueryInterface)(local_138,(IID *)riid,(void **)ppvObject) ; if (HVar8 < 0) { _com_issue_errorex(HVar8,pIVar3,(_GUID *)&DAT_14029e038); } } if (local_res10[0] == '\0') { uStack_17c = 0x7c; } else { puVar14 = (undefined8 *)0x1; } } local_188 = CONCAT62(local_188._2_6_,(short)uVar17); param_1[0x26] = local_188; param_1[0x27] = CONCAT26(uStack_17a,CONCAT24(uStack_17c,uVar2)); iVar7 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0)); if (iVar7 == 0) { FUN_1400a6d80(param_1[0x23],"DBResultQueue_Error.Log","DB Result Queue push error"); } pIVar3 = local_138; if (local_138 != (IUnknown *)0x0) { local_170 = 0; UVar6 = (*local_138->lpVtbl[0x12].AddRef)(local_138); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e038); } pIVar3 = local_138; if (local_170 != 0) { if (local_138 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar6 = (*local_138->lpVtbl[10].Release)(local_138); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e038); } } if (local_138 != (IUnknown *)0x0) { (*local_138->lpVtbl->Release)(local_138); local_138 = (IUnknown *)0x0; } } local_d0 = 0; local_c8 = &DAT_14029e010; local_e0 = &DAT_14029e010; local_d8 = 0; local_e8 = 0; Ordinal_9(local_100); Ordinal_9(local_118); if (local_130 != (longlong *)0x0) { (**(code **)(*local_130 + 0x10))(); } if (local_138 != (IUnknown *)0x0) { (*local_138->lpVtbl->Release)(local_138); } if (local_178 != (longlong *)0x0) { (**(code **)(*local_178 + 0x10))(); } return puVar14; } /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); }