/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400a3070 FUN_1400a3070 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x0001400a3717) */ /* WARNING: Removing unreachable block (ram,0x0001400a3721) */ /* WARNING: Removing unreachable block (ram,0x0001400a372c) */ /* WARNING: Removing unreachable block (ram,0x0001400a373c) */ /* WARNING: Removing unreachable block (ram,0x0001400a327e) */ /* WARNING: Removing unreachable block (ram,0x0001400a3288) */ /* WARNING: Removing unreachable block (ram,0x0001400a3293) */ /* WARNING: Removing unreachable block (ram,0x0001400a32a3) */ undefined4 FUN_1400a3070(undefined8 *param_1,undefined8 param_2) { longlong *plVar1; IUnknown *pIVar2; undefined8 *puVar3; IUnknown *This; int iVar4; HRESULT HVar5; ULONG UVar6; longlong lVar7; undefined8 *puVar8; undefined8 uVar9; IID *riid; ulonglong uVar10; longlong *plVar11; longlong lVar12; char *ppvObject; ulonglong *puVar13; undefined4 uVar14; undefined1 auStackY_198 [32]; char local_164 [4]; short local_160; undefined8 local_158; longlong *local_150; IUnknown *local_148; longlong *local_140; undefined4 local_138; undefined1 local_128 [24]; undefined1 local_110 [24]; undefined4 local_f8; undefined1 *local_f0; undefined4 local_e8; undefined8 local_e0; undefined1 *local_d8; undefined8 *local_c8; undefined8 local_c0; IID local_b8 [2]; IID local_90; longlong *local_78; ulonglong local_70; undefined1 local_60; longlong local_58; undefined4 local_50; undefined8 local_48; undefined8 local_40; ulonglong local_38; local_c0 = 0xfffffffffffffffe; local_38 = DAT_1403463c0 ^ (ulonglong)auStackY_198; uVar10 = 0; local_150 = (longlong *)0x0; local_c8 = param_1; iVar4 = FUN_140001990(&local_150); if ((iVar4 < 0) && (iVar4 != -0x7fffbffe)) { /* WARNING: Subroutine does not return */ FUN_140218220(iVar4); } local_148 = (IUnknown *)0x0; local_140 = (longlong *)0x0; Ordinal_8(local_128); Ordinal_8(local_110); pIVar2 = local_148; if ((local_148 != (IUnknown *)0x0) && (local_148 = (IUnknown *)0x0, pIVar2 != (IUnknown *)0x0)) { (*pIVar2->lpVtbl->Release)(pIVar2); } local_d8 = &DAT_14029e010; local_f0 = &DAT_14029e010; local_e8 = 0; local_e0 = 0; if (local_148 != (IUnknown *)0x0) { (*local_148->lpVtbl->Release)(local_148); } HVar5 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0, (LPVOID *)&local_158); if (-1 < HVar5) { HVar5 = OleRun((LPUNKNOWN)CONCAT44(local_158._4_4_,(int)local_158)); if (-1 < HVar5) { HVar5 = (*(code *)**(undefined8 **)CONCAT44(local_158._4_4_,(int)local_158)) ((undefined8 *)CONCAT44(local_158._4_4_,(int)local_158),&DAT_14029e078, &local_148); } (**(code **)(*(longlong *)CONCAT44(local_158._4_4_,(int)local_158) + 0x10))(); if (-1 < HVar5) goto LAB_1400a31bb; } local_148 = (IUnknown *)0x0; LAB_1400a31bb: local_f8 = 2; local_138 = 1; local_164[0] = '\x01'; pIVar2 = *(IUnknown **)*param_1; if ((pIVar2 != (IUnknown *)0x0) && (UVar6 = (*pIVar2->lpVtbl[0xb].AddRef)(pIVar2), (int)UVar6 < 0) ) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e018); } iVar4 = FUN_1400a80c0(param_1); if (iVar4 == 0) { FUN_1400a8040(param_1,param_2,0); pIVar2 = local_148; if (local_148 != (IUnknown *)0x0) { UVar6 = (*local_148->lpVtbl[0x12].AddRef)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } if (local_148 != (IUnknown *)0x0) { (*local_148->lpVtbl->Release)(local_148); local_148 = (IUnknown *)0x0; } } local_e0 = 0; local_d8 = &DAT_14029e010; local_f0 = &DAT_14029e010; local_e8 = 0; local_f8 = 0; Ordinal_9(local_110); Ordinal_9(local_128); if (local_140 != (longlong *)0x0) { (**(code **)(*local_140 + 0x10))(); } if (local_148 != (IUnknown *)0x0) { (*local_148->lpVtbl->Release)(local_148); } if (local_150 != (longlong *)0x0) { (**(code **)(*local_150 + 0x10))(); } uVar14 = 0; } else { puVar13 = &DAT_1402a81a0; lVar12 = 0x28; do { lVar7 = lVar12 / 2; if (puVar13[lVar7] < 0xb) { puVar13 = puVar13 + lVar7 + 1; lVar7 = lVar12 + (-1 - lVar7); } lVar12 = lVar7; } while (0 < lVar7); if (puVar13 == (ulonglong *)"dbo.up_read_realtimeevent") { puVar13 = (ulonglong *)&UNK_1402a82d8; } local_70 = *puVar13; local_78 = (longlong *)0x0; local_60 = 0; local_58 = 0; local_50 = 0x3f800000; local_48 = 0; local_40 = 0; puVar8 = (undefined8 *)FUN_140001f40(*param_1,&local_158); FUN_140001700(&local_150,*puVar8,"dbo.up_read_quest_statistics"); if ((longlong *)CONCAT44(local_158._4_4_,(int)local_158) != (longlong *)0x0) { (**(code **)(*(longlong *)CONCAT44(local_158._4_4_,(int)local_158) + 0x10))(); } puVar8 = (undefined8 *)FUN_1400016c0(&local_150,&local_158); This = local_148; pIVar2 = (IUnknown *)*puVar8; if (local_148 != pIVar2) { local_148 = pIVar2; if (pIVar2 != (IUnknown *)0x0) { (*pIVar2->lpVtbl->AddRef)(pIVar2); } if (This != (IUnknown *)0x0) { (*This->lpVtbl->Release)(This); } } if ((longlong *)CONCAT44(local_158._4_4_,(int)local_158) != (longlong *)0x0) { (**(code **)(*(longlong *)CONCAT44(local_158._4_4_,(int)local_158) + 0x10))(); } pIVar2 = local_148; if (local_148 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_160 = 0; UVar6 = (*local_148->lpVtbl[6].Release)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } uVar14 = 1; if (local_160 != -1) { while( true ) { pIVar2 = local_148; if (local_148 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_160 = 0; UVar6 = (*local_148->lpVtbl[6].Release)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } if (local_160 == -1) break; ppvObject = "quest_code"; riid = local_b8; uVar9 = FUN_140002290(&local_148,riid,"quest_code",local_164); FUN_140199590(uVar9); iVar4 = FUN_140063af0(uVar9); Ordinal_9(local_b8); if (0 < iVar4) { if (local_58 != 0) { riid = (IID *)((ulonglong)(longlong)iVar4 % local_70); for (puVar8 = (undefined8 *)local_78[(longlong)riid]; puVar8 != (undefined8 *)0x0; puVar8 = (undefined8 *)*puVar8) { if (iVar4 == *(int *)(puVar8 + 1)) { if (puVar8 != (undefined8 *)0x0) { *(int *)((longlong)puVar8 + 0xc) = *(int *)((longlong)puVar8 + 0xc) + 1; goto LAB_1400a35d2; } break; } } } local_158._4_4_ = 1; ppvObject = (char *)&local_158; local_158._0_4_ = iVar4; if (local_58 == 0) { riid = &local_90; FUN_1400a4e00(&local_78); } else { riid = local_b8; FUN_1400a4c80(&local_78,riid,ppvObject,&local_158); } } LAB_1400a35d2: pIVar2 = local_148; uVar10 = (ulonglong)((int)uVar10 + 1); if (local_148 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } HVar5 = (*local_148->lpVtbl[0xc].QueryInterface)(local_148,riid,(void **)ppvObject); if (HVar5 < 0) { _com_issue_errorex(HVar5,pIVar2,(_GUID *)&DAT_14029e038); } } uVar14 = 1; if (local_164[0] == '\0') { uVar14 = 0; } } FUN_14009f190("Quest",&local_78); printf("Completed %s Report_Quest\n","Quest"); printf("Total Quest Count : %d\n",uVar10); if (local_78 != (longlong *)0x0) { plVar1 = local_78 + local_70; for (plVar11 = local_78; plVar11 != plVar1; plVar11 = plVar11 + 1) { puVar8 = (undefined8 *)*plVar11; *plVar11 = 0; while (puVar8 != (undefined8 *)0x0) { puVar3 = (undefined8 *)*puVar8; operator_delete(puVar8); puVar8 = puVar3; } } operator_delete(local_78); local_78 = (longlong *)0x0; } pIVar2 = local_148; if (local_148 != (IUnknown *)0x0) { UVar6 = (*local_148->lpVtbl[0x12].AddRef)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } if (local_148 != (IUnknown *)0x0) { (*local_148->lpVtbl->Release)(local_148); local_148 = (IUnknown *)0x0; } } local_e0 = 0; local_d8 = &DAT_14029e010; local_f0 = &DAT_14029e010; local_e8 = 0; local_f8 = 0; Ordinal_9(local_110); Ordinal_9(local_128); if (local_140 != (longlong *)0x0) { (**(code **)(*local_140 + 0x10))(); } if (local_148 != (IUnknown *)0x0) { (*local_148->lpVtbl->Release)(local_148); } if (local_150 != (longlong *)0x0) { (**(code **)(*local_150 + 0x10))(); } } return uVar14; }