/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400a3800 FUN_1400a3800 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined4 FUN_1400a3800(undefined8 *param_1,undefined8 param_2) { IUnknown *pIVar1; undefined8 *puVar2; undefined8 *puVar3; IUnknown *This; int iVar4; HRESULT HVar5; ULONG UVar6; longlong lVar7; undefined8 *puVar8; undefined8 uVar9; IID *riid; ulonglong uVar10; undefined8 *puVar11; longlong lVar12; char *ppvObject; ulonglong *puVar13; undefined4 uVar14; undefined1 auStackY_198 [32]; char local_168 [4]; uint local_164; short local_160; int local_158; undefined4 uStack_154; 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; IID local_c0; undefined8 local_a8; IID local_90; undefined8 *local_78; ulonglong local_70; undefined1 local_60; longlong local_58; undefined4 local_50; undefined8 local_48; undefined8 local_40; ulonglong local_38; local_a8 = 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); pIVar1 = local_148; if ((local_148 != (IUnknown *)0x0) && (local_148 = (IUnknown *)0x0, pIVar1 != (IUnknown *)0x0)) { (*pIVar1->lpVtbl->Release)(pIVar1); } 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 (HVar5 < 0) { LAB_1400a3948: local_148 = (IUnknown *)0x0; } else { HVar5 = OleRun((LPUNKNOWN)CONCAT44(uStack_154,local_158)); if (-1 < HVar5) { HVar5 = (*(code *)**(undefined8 **)CONCAT44(uStack_154,local_158)) ((undefined8 *)CONCAT44(uStack_154,local_158),&DAT_14029e078,&local_148); } (**(code **)(*(longlong *)CONCAT44(uStack_154,local_158) + 0x10))(); if (HVar5 < 0) goto LAB_1400a3948; } local_f8 = 2; local_138 = 1; local_168[0] = '\x01'; pIVar1 = *(IUnknown **)*param_1; if (pIVar1 != (IUnknown *)0x0) { local_164 = 0; UVar6 = (*pIVar1->lpVtbl[0xb].AddRef)(pIVar1); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar1,(_GUID *)&DAT_14029e018); } if (local_164 != 0) goto LAB_1400a3ad9; } iVar4 = FUN_1400a80c0(param_1); if (iVar4 == 0) { FUN_1400a8040(param_1,param_2,0); pIVar1 = local_148; if (local_148 != (IUnknown *)0x0) { local_164 = 0; UVar6 = (*local_148->lpVtbl[0x12].AddRef)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar1,(_GUID *)&DAT_14029e038); } pIVar1 = local_148; if (local_164 != 0) { if (local_148 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar6 = (*local_148->lpVtbl[10].Release)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar1,(_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 0; } LAB_1400a3ad9: 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 = (undefined8 *)0x0; local_60 = 0; local_58 = 0; local_50 = 0x3f800000; local_48 = 0; local_40 = 0; local_164 = 0; puVar8 = (undefined8 *)FUN_140001f40(*param_1,&local_158); FUN_140001700(&local_150,*puVar8,"dbo.up_read_dungeon_rank_statistics"); if ((longlong *)CONCAT44(uStack_154,local_158) != (longlong *)0x0) { (**(code **)(*(longlong *)CONCAT44(uStack_154,local_158) + 0x10))(); } puVar8 = (undefined8 *)FUN_1400016c0(&local_150,&local_158); This = local_148; pIVar1 = (IUnknown *)*puVar8; if (local_148 != pIVar1) { local_148 = pIVar1; if (pIVar1 != (IUnknown *)0x0) { (*pIVar1->lpVtbl->AddRef)(pIVar1); } if (This != (IUnknown *)0x0) { (*This->lpVtbl->Release)(This); } } if ((longlong *)CONCAT44(uStack_154,local_158) != (longlong *)0x0) { (**(code **)(*(longlong *)CONCAT44(uStack_154,local_158) + 0x10))(); } pIVar1 = 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,pIVar1,(_GUID *)&DAT_14029e038); } uVar14 = 1; if (local_160 != -1) { while( true ) { pIVar1 = 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,pIVar1,(_GUID *)&DAT_14029e038); } if (local_160 == -1) break; uVar9 = FUN_140002290(&local_148,&local_90,"world_id",local_168); FUN_140199590(uVar9); iVar4 = FUN_140063af0(uVar9); Ordinal_9(&local_90); uVar9 = FUN_140002290(&local_148,&local_c0,"difficulty",local_168); FUN_140199590(uVar9); FUN_140063af0(uVar9); Ordinal_9(&local_c0); uVar9 = FUN_140002290(&local_148,&local_c0,"rank_normal",local_168); FUN_140199590(uVar9); FUN_140063af0(uVar9); Ordinal_9(&local_c0); uVar9 = FUN_140002290(&local_148,&local_c0,"rank_hard",local_168); FUN_140199590(uVar9); FUN_140063af0(uVar9); Ordinal_9(&local_c0); ppvObject = "rank_veryhard"; riid = &local_c0; uVar9 = FUN_140002290(&local_148,riid,"rank_veryhard",local_168); FUN_140199590(uVar9); FUN_140063af0(uVar9); Ordinal_9(&local_c0); 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_1400a3e7e; } break; } } } uStack_154 = 1; ppvObject = (char *)&local_158; local_158 = iVar4; if (local_58 == 0) { riid = &local_90; FUN_1400a4e00(&local_78); } else { riid = &local_c0; FUN_1400a4c80(&local_78,riid,ppvObject,&local_158); } } LAB_1400a3e7e: pIVar1 = local_148; local_164 = (int)uVar10 + 1; uVar10 = (ulonglong)local_164; 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,pIVar1,(_GUID *)&DAT_14029e038); } } uVar14 = 1; if (local_168[0] == '\0') { uVar14 = 0; } } FUN_14009f190("Dungeon",&local_78); printf("Completed %s Report_Dungeon\n","Dungeon"); printf("Total Dungeon Count : %d\n",uVar10); if (local_78 != (undefined8 *)0x0) { puVar8 = local_78 + local_70; for (puVar11 = local_78; puVar11 != puVar8; puVar11 = puVar11 + 1) { puVar2 = (undefined8 *)*puVar11; *puVar11 = 0; while (puVar2 != (undefined8 *)0x0) { puVar3 = (undefined8 *)*puVar2; operator_delete(puVar2); puVar2 = puVar3; } } operator_delete(local_78); local_78 = (undefined8 *)0x0; } pIVar1 = local_148; if (local_148 != (IUnknown *)0x0) { local_164 = 0; UVar6 = (*local_148->lpVtbl[0x12].AddRef)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar1,(_GUID *)&DAT_14029e038); } pIVar1 = local_148; if (local_164 != 0) { if (local_148 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar6 = (*local_148->lpVtbl[10].Release)(local_148); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar1,(_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; }