/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400fd820 FUN_1400fd820 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x0001400fde0c) */ /* WARNING: Removing unreachable block (ram,0x0001400fde19) */ /* WARNING: Removing unreachable block (ram,0x0001400fde24) */ /* WARNING: Removing unreachable block (ram,0x0001400fde34) */ undefined4 FUN_1400fd820(undefined8 *param_1,undefined8 *param_2) { undefined4 uVar1; IUnknown *pIVar2; undefined6 uVar3; IUnknown *This; ULONG UVar4; int iVar5; HRESULT HVar6; undefined4 uVar7; undefined8 *puVar8; undefined8 uVar9; char *riid; char *ppvObject; uint uVar10; char local_res10 [8]; short local_res18; short local_res20; undefined8 local_178; undefined2 uStack_16c; short sStack_16a; undefined4 uVar11; longlong *local_158; LPUNKNOWN local_150; undefined8 local_148; undefined4 local_140; undefined8 *local_138; IUnknown *local_128; longlong *local_120; undefined4 local_118; undefined1 local_108 [24]; undefined1 local_f0 [24]; undefined4 local_d8; undefined1 *local_d0; undefined4 local_c8; undefined8 local_c0; undefined1 *local_b8; longlong *local_a8; longlong *local_a0; undefined8 local_98; undefined1 local_80 [24]; IID local_68; undefined1 local_50 [24]; local_98 = 0xfffffffffffffffe; uVar11 = 1; pIVar2 = *(IUnknown **)*param_1; local_138 = param_2; if ((pIVar2 != (IUnknown *)0x0) && (UVar4 = (*pIVar2->lpVtbl[0xb].AddRef)(pIVar2), (int)UVar4 < 0) ) { _com_issue_errorex(UVar4,pIVar2,(_GUID *)&DAT_14029e018); } iVar5 = FUN_1400a80c0(param_1); if (iVar5 == 0) { FUN_1400a8040(param_1,param_2,0); return 0; } local_158 = (longlong *)0x0; iVar5 = FUN_140001990(&local_158); if ((iVar5 < 0) && (iVar5 != -0x7fffbffe)) { /* WARNING: Subroutine does not return */ FUN_140218220(iVar5); } local_128 = (IUnknown *)0x0; local_120 = (longlong *)0x0; Ordinal_8(local_108); Ordinal_8(local_f0); pIVar2 = local_128; if ((local_128 != (IUnknown *)0x0) && (local_128 = (IUnknown *)0x0, pIVar2 != (IUnknown *)0x0)) { (*pIVar2->lpVtbl->Release)(pIVar2); } local_b8 = &DAT_14029e010; local_d0 = &DAT_14029e010; local_c8 = 0; local_c0 = 0; if (local_128 != (IUnknown *)0x0) { (*local_128->lpVtbl->Release)(local_128); } HVar6 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0, &local_150); if (HVar6 < 0) { LAB_1400fd9d1: local_128 = (IUnknown *)0x0; } else { HVar6 = OleRun(local_150); if (-1 < HVar6) { HVar6 = (*local_150->lpVtbl->QueryInterface)(local_150,(IID *)&DAT_14029e078,&local_128); } (*local_150->lpVtbl->Release)(local_150); if (HVar6 < 0) goto LAB_1400fd9d1; } local_d8 = 2; local_118 = 1; local_res10[0] = '\x01'; uVar1 = *(undefined4 *)(param_2 + 1); local_178 = CONCAT44((int)((ulonglong)*param_2 >> 0x20),0x234f0000); uStack_16c = 0x73; sStack_16a = 0; uVar10 = 0x10; puVar8 = (undefined8 *)FUN_140001f40(*param_1,&local_a8); FUN_140001700(&local_158,*puVar8,"dbo.up_read_all_item_dropgroup"); if (local_a8 != (longlong *)0x0) { (**(code **)(*local_a8 + 0x10))(); } puVar8 = (undefined8 *)FUN_1400016c0(&local_158,&local_a0); This = local_128; pIVar2 = (IUnknown *)*puVar8; if (local_128 != pIVar2) { local_128 = pIVar2; if (pIVar2 != (IUnknown *)0x0) { (*pIVar2->lpVtbl->AddRef)(pIVar2); } if (This != (IUnknown *)0x0) { (*This->lpVtbl->Release)(This); } } if (local_a0 != (longlong *)0x0) { (**(code **)(*local_a0 + 0x10))(); } pIVar2 = local_128; if (local_128 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_res18 = 0; UVar4 = (*local_128->lpVtbl[6].Release)(local_128); if ((int)UVar4 < 0) { _com_issue_errorex(UVar4,pIVar2,(_GUID *)&DAT_14029e038); } if (local_res18 == -1) { uStack_16c = 0x76; } else { while( true ) { pIVar2 = local_128; if (local_128 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_res20 = 0; UVar4 = (*local_128->lpVtbl[6].Release)(local_128); if ((int)UVar4 < 0) { _com_issue_errorex(UVar4,pIVar2,(_GUID *)&DAT_14029e038); } if (local_res20 == -1) break; local_148 = 0; local_140 = 0; uVar9 = FUN_140002290(&local_128,local_50,"dropgrouptype",local_res10); FUN_140199590(uVar9); uVar7 = FUN_140063af0(uVar9); local_148 = CONCAT44(local_148._4_4_,uVar7); Ordinal_9(local_50); uVar9 = FUN_140002290(&local_128,local_80,"item_dropgroup_id",local_res10); FUN_140199590(uVar9); uVar7 = FUN_140063af0(uVar9); local_148 = CONCAT44(uVar7,(undefined4)local_148); Ordinal_9(local_80); ppvObject = "item_range"; riid = (char *)&local_68; uVar9 = FUN_140002290(&local_128,riid,"item_range",local_res10); FUN_140199590(uVar9); uVar7 = FUN_140063af0(uVar9); Ordinal_9(&local_68); *(undefined8 *)((longlong)(int)uVar10 + 0x130 + (longlong)param_1) = local_148; *(undefined4 *)((longlong)(int)uVar10 + 0x138 + (longlong)param_1) = uVar7; uVar10 = uVar10 + 0xc; sStack_16a = sStack_16a + 1; if (50000 < uVar10) { uVar3 = local_178._2_6_; local_178 = CONCAT62(local_178._2_6_,(short)uVar10); uVar9 = local_178; riid = (char *)(param_1 + 0x26); local_178._4_2_ = SUB62(uVar3,2); local_178._6_2_ = SUB62(uVar3,4); ((IID *)riid)->Data1 = (undefined4)local_178; ((IID *)riid)->Data2 = local_178._4_2_; ((IID *)riid)->Data3 = local_178._6_2_; param_1[0x27] = CONCAT26(sStack_16a,CONCAT24(0x73,uVar1)); 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]); } uVar10 = 0x10; sStack_16a = 0; local_178 = uVar9; } pIVar2 = local_128; if (local_128 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } HVar6 = (*local_128->lpVtbl[0xc].QueryInterface)(local_128,(IID *)riid,(void **)ppvObject); if (HVar6 < 0) { _com_issue_errorex(HVar6,pIVar2,(_GUID *)&DAT_14029e038); } } if (local_res10[0] != '\0') goto LAB_1400fdd61; uStack_16c = 0x74; } uVar11 = 0; LAB_1400fdd61: local_178 = CONCAT62(local_178._2_6_,(short)uVar10); param_1[0x26] = local_178; param_1[0x27] = CONCAT26(sStack_16a,CONCAT24(uStack_16c,uVar1)); iVar5 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0)); if (iVar5 == 0) { FUN_1400a6d80(param_1[0x23],"DBResultQueue_Error.Log","DB Result Queue push error"); } pIVar2 = local_128; if (local_128 != (IUnknown *)0x0) { UVar4 = (*local_128->lpVtbl[0x12].AddRef)(local_128); if ((int)UVar4 < 0) { _com_issue_errorex(UVar4,pIVar2,(_GUID *)&DAT_14029e038); } if (local_128 != (IUnknown *)0x0) { (*local_128->lpVtbl->Release)(local_128); local_128 = (IUnknown *)0x0; } } local_c0 = 0; local_b8 = &DAT_14029e010; local_d0 = &DAT_14029e010; local_c8 = 0; local_d8 = 0; Ordinal_9(local_f0); Ordinal_9(local_108); if (local_120 != (longlong *)0x0) { (**(code **)(*local_120 + 0x10))(); } if (local_128 != (IUnknown *)0x0) { (*local_128->lpVtbl->Release)(local_128); } if (local_158 != (longlong *)0x0) { (**(code **)(*local_158 + 0x10))(); } return uVar11; }