/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400d6500 FUN_1400d6500 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_1400d6500(undefined8 *param_1,undefined8 *param_2) { undefined4 *puVar1; short sVar2; IUnknown *pIVar3; undefined6 uVar4; IUnknown *This; undefined1 uVar5; ULONG UVar6; int iVar7; HRESULT HVar8; undefined4 uVar9; undefined8 *puVar10; wchar_t *pwVar11; longlong lVar12; longlong *plVar13; undefined8 uVar14; undefined8 uVar15; char *riid; wchar_t *pwVar16; char *ppvObject; short sVar17; wchar_t *pwVar18; uint uVar19; undefined1 auStackY_328 [32]; undefined1 local_2e8 [4]; uint local_2e4; short local_2e0; short local_2dc; longlong *local_2d8; undefined8 local_2d0; undefined4 local_2c8; undefined2 uStack_2c4; undefined2 uStack_2c2; ushort local_2c0; int local_2b8; undefined8 *local_2b0; wchar_t *local_2a8; wchar_t *local_2a0; LPUNKNOWN local_298; wchar_t *local_290; longlong *local_288; undefined8 *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; undefined4 local_1f8; undefined4 local_1f4; undefined4 local_1f0; undefined4 local_1ec; longlong *local_1e8; undefined8 local_1e0; undefined1 local_1d8; wchar_t *local_1d0; undefined8 local_1c8; undefined1 local_1c0; undefined8 local_1b8; undefined1 local_1b0; wchar_t *local_1a8; longlong *local_1a0; undefined8 local_198; undefined1 local_190; wchar_t local_188 [12]; longlong local_170 [3]; undefined1 local_158 [24]; undefined8 local_140; undefined1 local_138 [24]; undefined1 local_120 [24]; undefined1 local_108 [24]; IID local_f0; undefined1 local_d8 [24]; undefined1 local_c0 [24]; undefined1 local_a8 [32]; undefined4 local_88; undefined4 uStack_84; undefined4 uStack_80; undefined4 uStack_7c; undefined4 local_78; undefined4 uStack_74; undefined4 uStack_70; undefined4 uStack_6c; undefined4 uStack_68; undefined8 uStack_64; undefined8 uStack_5c; undefined8 uStack_54; undefined4 local_4c; undefined1 uStack_48; ulonglong local_38; local_140 = 0xfffffffffffffffe; local_38 = DAT_1403463c0 ^ (ulonglong)auStackY_328; local_2c8 = *(undefined4 *)(param_2 + 1); local_2d0._4_4_ = (undefined4)((ulonglong)*param_2 >> 0x20); local_2d0._0_4_ = CONCAT22(0x2449,(short)*param_2); uStack_2c4 = 1; uStack_2c2 = *(undefined2 *)(param_2 + 2); pwVar18 = (wchar_t *)0x0; sVar17 = 0; pwVar16 = (wchar_t *)0x0; local_2c0 = 0; uVar19 = 0x12; local_2e4 = 0x12; pIVar3 = *(IUnknown **)*param_1; local_2b0 = param_1; local_280 = param_2; if (pIVar3 == (IUnknown *)0x0) { LAB_1400d65db: iVar7 = FUN_1400a80c0(param_1); if (iVar7 == 0) { FUN_1400a8040(param_1,param_2,0); return 0; } } else { local_2b8 = 0; UVar6 = (*pIVar3->lpVtbl[0xb].AddRef)(pIVar3); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e018); } if (local_2b8 == 0) goto LAB_1400d65db; } local_2d8 = (longlong *)0x0; iVar7 = FUN_140001990(&local_2d8); if ((iVar7 < 0) && (iVar7 != -0x7fffbffe)) { /* WARNING: Subroutine does not return */ FUN_140218220(iVar7); } 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); } HVar8 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0, &local_298); if (-1 < HVar8) { HVar8 = OleRun(local_298); if (-1 < HVar8) { HVar8 = (*local_298->lpVtbl->QueryInterface)(local_298,(IID *)&DAT_14029e078,&local_278); } (*local_298->lpVtbl->Release)(local_298); if (-1 < HVar8) goto LAB_1400d6726; } local_278 = (IUnknown *)0x0; LAB_1400d6726: local_228 = 2; local_268 = 1; local_2e8[0] = 1; puVar10 = (undefined8 *)FUN_140001f40(*param_1,&local_1a0); FUN_140001700(&local_2d8,*puVar10,"dbo.up_read_reward"); if (local_1a0 != (longlong *)0x0) { (**(code **)(*local_1a0 + 0x10))(); } local_2a8 = local_188; sVar2 = *(short *)(param_2 + 2); Ordinal_8(local_188); FUN_140063620(local_188,(int)sVar2); pwVar11 = operator_new(0x18); local_1d0 = pwVar18; local_290 = pwVar11; if (pwVar11 != (wchar_t *)0x0) { pwVar11[4] = L'\0'; pwVar11[5] = L'\0'; pwVar11[6] = L'\0'; pwVar11[7] = L'\0'; pwVar11[8] = L'\x01'; pwVar11[9] = L'\0'; lVar12 = FUN_1402182d0(&DAT_1402aa2b4); *(longlong *)pwVar11 = lVar12; local_1d0 = pwVar11; } if (local_1d0 == (wchar_t *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x8007000e); } pwVar11 = (wchar_t *)FUN_140001870(&local_2d8,&local_288,&local_1d0,3); local_2a8 = pwVar11; if (local_2d8 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } puVar10 = (undefined8 *)FUN_140001650(local_2d8,&local_1e8); 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_1e8 != (longlong *)0x0) { (**(code **)(*local_1e8 + 0x10))(); } if (*(longlong **)pwVar11 != (longlong *)0x0) { (**(code **)(**(longlong **)pwVar11 + 0x10))(); } local_288 = local_170; sVar2 = *(short *)((longlong)param_2 + 0xe); Ordinal_8(local_170); FUN_140063620(local_170,(int)sVar2); pwVar11 = operator_new(0x18); local_1a8 = pwVar18; local_2a8 = pwVar11; if (pwVar11 != (wchar_t *)0x0) { pwVar11[4] = L'\0'; pwVar11[5] = L'\0'; pwVar11[6] = L'\0'; pwVar11[7] = L'\0'; pwVar11[8] = L'\x01'; pwVar11[9] = L'\0'; lVar12 = FUN_1402182d0("grade"); *(longlong *)pwVar11 = lVar12; local_1a8 = pwVar11; } if (local_1a8 == (wchar_t *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x8007000e); } plVar13 = (longlong *)FUN_140001870(&local_2d8,local_158,&local_1a8,3); local_288 = plVar13; if (local_2d8 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } puVar10 = (undefined8 *)FUN_140001650(local_2d8,&local_290); 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_290 != (wchar_t *)0x0) { (**(code **)(*(longlong *)local_290 + 0x10))(); } if ((longlong *)*plVar13 != (longlong *)0x0) { (**(code **)(*(longlong *)*plVar13 + 0x10))(); } puVar10 = (undefined8 *)FUN_1400016c0(&local_2d8,&local_2a8); This = local_278; pIVar3 = (IUnknown *)*puVar10; 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_2a8 != (wchar_t *)0x0) { (**(code **)(*(longlong *)local_2a8 + 0x10))(); } pIVar3 = local_278; if (local_278 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_2dc = 0; UVar6 = (*local_278->lpVtbl[6].Release)(local_278); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e038); } if (local_2dc != -1) { while( true ) { pIVar3 = local_278; sVar17 = (short)pwVar16; if (local_278 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_2e0 = 0; UVar6 = (*local_278->lpVtbl[6].Release)(local_278); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e038); } if (local_2e0 == -1) break; local_88 = 0; uStack_84 = 0; uStack_80 = 0; uStack_7c = 0; local_78 = 0; uStack_54 = 0; local_4c = 0; uStack_48 = 0; uStack_74 = 0; uStack_70 = 0; uStack_6c = 0; uStack_68 = 0; uStack_64 = 0; uStack_5c = 0; uVar14 = FUN_140002290(&local_278,local_a8,"character_name",local_2e8); FUN_140063de0(uVar14,&local_2a0); FUN_14016d8c0(); pwVar16 = (wchar_t *)PTR_DAT_1403440a0; if (PTR_DAT_1403440a0 == (undefined *)0x0) { pwVar16 = pwVar18; } if (local_2a0 != (wchar_t *)PTR_DAT_1403440a0) { uVar14 = FUN_14016d8c0(); local_190 = 0; local_198 = uVar14; FUN_14016db50(uVar14); local_190 = 1; if (((pwVar16 != (wchar_t *)0x0) && (pwVar16 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar16 + -4 != (wchar_t *)0x0)) { uVar15 = FUN_14016d8c0(); local_1b0 = 0; local_1b8 = uVar15; FUN_14016db50(uVar15); local_1b0 = 1; pwVar11 = pwVar16 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar16 + -4); } FUN_14016dbe0(uVar15); local_1b0 = 0; } pwVar16 = local_2a0; if (((local_2a0 != (wchar_t *)PTR_DAT_1403440a0) && (local_2a0 != (wchar_t *)0x0)) && (local_2a0 != (wchar_t *)0x8)) { *(int *)(local_2a0 + -2) = *(int *)(local_2a0 + -2) + 1; } FUN_14016dbe0(uVar14); local_190 = 0; } pwVar11 = pwVar16; if (pwVar16 == (wchar_t *)0x0) { pwVar11 = (wchar_t *)PTR_DAT_1403440a0; } wcsncpy((wchar_t *)&uStack_74,pwVar11,0xf); if (((pwVar16 != (wchar_t *)0x0) && (pwVar16 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar16 + -4 != (wchar_t *)0x0)) { uVar14 = FUN_14016d8c0(); local_1d8 = 0; local_1e0 = uVar14; FUN_14016db50(uVar14); local_1d8 = 1; pwVar11 = pwVar16 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar16 + -4); } FUN_14016dbe0(uVar14); local_1d8 = 0; } pwVar16 = local_2a0; if (((local_2a0 != (wchar_t *)0x0) && (local_2a0 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar11 = local_2a0 + -4, pwVar11 != (wchar_t *)0x0)) { uVar14 = FUN_14016d8c0(); local_1c0 = 0; local_1c8 = uVar14; FUN_14016db50(uVar14); local_1c0 = 1; pwVar16 = pwVar16 + -2; *(int *)pwVar16 = *(int *)pwVar16 + -1; if (*(int *)pwVar16 == 0) { FUN_14016d970(pwVar11); } FUN_14016dbe0(uVar14); local_1c0 = 0; } local_2a0 = (wchar_t *)PTR_DAT_1403440a0; Ordinal_9(local_a8); uStack_5c = uStack_5c & 0xffffffffffff; uVar14 = FUN_140002290(&local_278,local_c0,"reward_type",local_2e8); FUN_140199590(uVar14); local_88 = FUN_140063af0(uVar14); Ordinal_9(local_c0); uVar14 = FUN_140002290(&local_278,local_108,"character_id",local_2e8); FUN_140063b70(uVar14,&local_1f8); uStack_84 = local_1f8; uStack_80 = local_1f4; uStack_7c = local_1f0; local_78 = local_1ec; Ordinal_9(local_108); uVar14 = FUN_140002290(&local_278,local_138,"reward_code",local_2e8); FUN_140199590(uVar14); uVar9 = FUN_140063af0(uVar14); uStack_54 = CONCAT44(uStack_54._4_4_,uVar9); Ordinal_9(local_138); uVar14 = FUN_140002290(&local_278,local_d8,"reward_count",local_2e8); FUN_140199590(uVar14); uVar9 = FUN_140063af0(uVar14); uStack_54 = CONCAT44(uVar9,(undefined4)uStack_54); Ordinal_9(local_d8); uVar14 = FUN_140002290(&local_278,local_120,"reward_grade",local_2e8); FUN_140199590(uVar14); uVar9 = FUN_140063af0(uVar14); local_4c._1_3_ = (undefined3)uVar9; uStack_48 = (undefined1)((uint)uVar9 >> 0x18); Ordinal_9(local_120); ppvObject = "reward"; riid = (char *)&local_f0; uVar14 = FUN_140002290(&local_278,riid,"reward",local_2e8); FUN_140199590(uVar14); uVar5 = FUN_1400dc910(uVar14); local_4c = CONCAT31(local_4c._1_3_,uVar5); Ordinal_9(&local_f0); lVar12 = (longlong)(int)uVar19; puVar10 = (undefined8 *)(lVar12 + 0x130 + (longlong)param_1); *puVar10 = CONCAT44(uStack_84,local_88); puVar10[1] = CONCAT44(uStack_7c,uStack_80); puVar10 = (undefined8 *)(lVar12 + 0x140 + (longlong)param_1); *puVar10 = CONCAT44(uStack_74,local_78); puVar10[1] = CONCAT44(uStack_6c,uStack_70); puVar1 = (undefined4 *)(lVar12 + 0x150 + (longlong)param_1); *puVar1 = uStack_68; puVar1[1] = (undefined4)uStack_64; puVar1[2] = uStack_64._4_4_; puVar1[3] = (undefined4)uStack_5c; puVar1 = (undefined4 *)(lVar12 + 0x160 + (longlong)param_1); *puVar1 = uStack_5c._4_4_; puVar1[1] = (undefined4)uStack_54; puVar1[2] = uStack_54._4_4_; puVar1[3] = local_4c; *(undefined1 *)(lVar12 + 0x170 + (longlong)param_1) = uStack_48; local_2e4 = uVar19 + 0x41; local_2c0 = sVar17 + 1; pwVar16 = (wchar_t *)(ulonglong)local_2c0; if (50000 < local_2e4) { uVar4 = local_2d0._2_6_; local_2d0 = CONCAT62(local_2d0._2_6_,(short)local_2e4); uVar14 = local_2d0; riid = (char *)(param_1 + 0x26); local_2d0._4_2_ = SUB62(uVar4,2); local_2d0._6_2_ = SUB62(uVar4,4); ((IID *)riid)->Data1 = (undefined4)local_2d0; ((IID *)riid)->Data2 = local_2d0._4_2_; ((IID *)riid)->Data3 = local_2d0._6_2_; param_1[0x27] = CONCAT26(uStack_2c2,CONCAT24(uStack_2c4,local_2c8)); *(ushort *)(param_1 + 0x28) = local_2c0; local_2d0 = uVar14; 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]); } local_2e4 = 0x12; local_2c0 = 0; pwVar16 = pwVar18; } pIVar3 = local_278; uVar19 = local_2e4; if (local_278 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } HVar8 = (*local_278->lpVtbl[0xc].QueryInterface)(local_278,(IID *)riid,(void **)ppvObject) ; if (HVar8 < 0) { _com_issue_errorex(HVar8,pIVar3,(_GUID *)&DAT_14029e038); } } } local_2d0 = CONCAT62(local_2d0._2_6_,(short)uVar19); param_1[0x26] = local_2d0; param_1[0x27] = CONCAT26(uStack_2c2,CONCAT24(uStack_2c4,local_2c8)); *(short *)(param_1 + 0x28) = sVar17; 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_278; if (local_278 != (IUnknown *)0x0) { local_2e4 = 0; UVar6 = (*local_278->lpVtbl[0x12].AddRef)(local_278); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar3,(_GUID *)&DAT_14029e038); } pIVar3 = local_278; if (local_2e4 != 0) { if (local_278 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar6 = (*local_278->lpVtbl[10].Release)(local_278); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,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_2d8 != (longlong *)0x0) { (**(code **)(*local_2d8 + 0x10))(); } return 1; } /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); }