/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400b9160 FUN_1400b9160 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_1400b9160(undefined8 *param_1,undefined8 *param_2) { short sVar1; IUnknown *pIVar2; undefined6 uVar3; IUnknown *This; int iVar4; HRESULT HVar5; ULONG UVar6; undefined8 *puVar7; wchar_t *pwVar8; longlong lVar9; longlong *plVar10; undefined8 uVar11; undefined8 uVar12; char *riid; wchar_t *pwVar13; char *ppvObject; short sVar14; wchar_t *pwVar15; uint uVar16; undefined1 auStackY_2b8 [32]; undefined1 local_278 [4]; uint local_274; short local_270; short local_26c; undefined8 local_268; undefined4 local_260; undefined2 uStack_25c; undefined2 uStack_25a; ushort local_258; longlong *local_250; int local_248; int local_244; wchar_t *local_240; undefined8 *local_238; LPUNKNOWN local_230; longlong *local_228 [2]; IUnknown *local_218; longlong *local_210; undefined4 local_208; undefined1 local_1f8 [24]; undefined1 local_1e0 [24]; undefined4 local_1c8; undefined1 *local_1c0; undefined4 local_1b8; undefined8 local_1b0; undefined1 *local_1a8; undefined8 *local_198; wchar_t *local_190; undefined8 local_188; undefined1 local_180; undefined8 local_178; undefined1 local_170; undefined8 local_168; undefined1 local_160; longlong *local_158; wchar_t *local_150; undefined8 local_148; undefined1 local_140; longlong local_138 [3]; undefined1 local_120 [16]; undefined8 local_110; undefined1 local_100 [24]; undefined1 local_e8 [24]; IID local_d0; undefined1 local_b8 [24]; undefined1 local_a0 [24]; undefined1 local_88 [24]; undefined2 local_70; undefined6 uStack_6e; undefined2 uStack_68; undefined6 uStack_66; undefined2 uStack_60; undefined6 local_5e; undefined2 uStack_58; undefined6 local_56; undefined2 uStack_50; undefined2 local_4e; undefined4 local_4c; undefined4 uStack_48; undefined4 local_44; undefined4 uStack_40; ulonglong local_38; local_110 = 0xfffffffffffffffe; local_38 = DAT_1403463c0 ^ (ulonglong)auStackY_2b8; pwVar15 = (wchar_t *)0x0; local_250 = (longlong *)0x0; local_238 = param_1; local_198 = param_2; iVar4 = FUN_140001990(&local_250); if ((iVar4 < 0) && (iVar4 != -0x7fffbffe)) { /* WARNING: Subroutine does not return */ FUN_140218220(iVar4); } local_218 = (IUnknown *)0x0; local_210 = (longlong *)0x0; Ordinal_8(local_1f8); Ordinal_8(local_1e0); pIVar2 = local_218; if ((local_218 != (IUnknown *)0x0) && (local_218 = (IUnknown *)0x0, pIVar2 != (IUnknown *)0x0)) { (*pIVar2->lpVtbl->Release)(pIVar2); } local_1a8 = &DAT_14029e010; local_1c0 = &DAT_14029e010; local_1b8 = 0; local_1b0 = 0; if (local_218 != (IUnknown *)0x0) { (*local_218->lpVtbl->Release)(local_218); } HVar5 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0, &local_230); if (HVar5 < 0) { LAB_1400b92d4: local_218 = (IUnknown *)0x0; } else { HVar5 = OleRun(local_230); if (-1 < HVar5) { HVar5 = (*local_230->lpVtbl->QueryInterface)(local_230,(IID *)&DAT_14029e078,&local_218); } (*local_230->lpVtbl->Release)(local_230); if (HVar5 < 0) goto LAB_1400b92d4; } local_1c8 = 2; local_208 = 1; local_278[0] = 1; local_260 = *(undefined4 *)(param_2 + 1); local_268._4_4_ = (undefined4)((ulonglong)*param_2 >> 0x20); local_268._0_4_ = CONCAT22(0x2335,(short)*param_2); uStack_25c = 1; uStack_25a = *(undefined2 *)((longlong)param_2 + 0xe); sVar14 = 0; pwVar13 = (wchar_t *)0x0; local_258 = 0; uVar16 = 0x12; local_274 = 0x12; pIVar2 = *(IUnknown **)*param_1; if (pIVar2 != (IUnknown *)0x0) { local_248 = 0; UVar6 = (*pIVar2->lpVtbl[0xb].AddRef)(pIVar2); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e018); } if (local_248 != 0) goto LAB_1400b94c3; } iVar4 = FUN_1400a80c0(param_1); if (iVar4 == 0) { FUN_1400a8040(param_1,param_2,0); pIVar2 = local_218; if (local_218 != (IUnknown *)0x0) { local_274 = 0; UVar6 = (*local_218->lpVtbl[0x12].AddRef)(local_218); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } pIVar2 = local_218; if (local_274 != 0) { if (local_218 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar6 = (*local_218->lpVtbl[10].Release)(local_218); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } } if (local_218 != (IUnknown *)0x0) { (*local_218->lpVtbl->Release)(local_218); local_218 = (IUnknown *)0x0; } } local_1b0 = 0; local_1a8 = &DAT_14029e010; local_1c0 = &DAT_14029e010; local_1b8 = 0; local_1c8 = 0; Ordinal_9(local_1e0); Ordinal_9(local_1f8); if (local_210 != (longlong *)0x0) { (**(code **)(*local_210 + 0x10))(); } if (local_218 != (IUnknown *)0x0) { (*local_218->lpVtbl->Release)(local_218); } if (local_250 != (longlong *)0x0) { (**(code **)(*local_250 + 0x10))(); } return 0; } LAB_1400b94c3: puVar7 = (undefined8 *)FUN_140001f40(*param_1,&local_158); FUN_140001700(&local_250,*puVar7,"dbo.up_select_battle_rank"); if (local_158 != (longlong *)0x0) { (**(code **)(*local_158 + 0x10))(); } local_228[0] = local_138; sVar1 = *(short *)((longlong)param_2 + 0xe); Ordinal_8(local_138); FUN_140063620(local_138,(int)sVar1); pwVar8 = operator_new(0x18); local_150 = pwVar15; local_190 = pwVar8; if (pwVar8 != (wchar_t *)0x0) { pwVar8[4] = L'\0'; pwVar8[5] = L'\0'; pwVar8[6] = L'\0'; pwVar8[7] = L'\0'; pwVar8[8] = L'\x01'; pwVar8[9] = L'\0'; lVar9 = FUN_1402182d0("rank_type"); *(longlong *)pwVar8 = lVar9; local_150 = pwVar8; } if (local_150 == (wchar_t *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x8007000e); } plVar10 = (longlong *)FUN_140001870(&local_250,local_120,&local_150,3); local_228[0] = plVar10; if (local_250 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } puVar7 = (undefined8 *)FUN_140001650(local_250,&local_190); pIVar2 = (IUnknown *)*puVar7; if (pIVar2 != (IUnknown *)0x0) { UVar6 = (*pIVar2->lpVtbl[3].AddRef)(pIVar2); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029dfc0); } if (local_190 != (wchar_t *)0x0) { (**(code **)(*(longlong *)local_190 + 0x10))(); } if ((longlong *)*plVar10 != (longlong *)0x0) { (**(code **)(*(longlong *)*plVar10 + 0x10))(); } puVar7 = (undefined8 *)FUN_1400016c0(&local_250,local_228); This = local_218; pIVar2 = (IUnknown *)*puVar7; if (local_218 != pIVar2) { local_218 = pIVar2; if (pIVar2 != (IUnknown *)0x0) { (*pIVar2->lpVtbl->AddRef)(pIVar2); } if (This != (IUnknown *)0x0) { (*This->lpVtbl->Release)(This); } } if (local_228[0] != (longlong *)0x0) { (**(code **)(*local_228[0] + 0x10))(); } pIVar2 = local_218; if (local_218 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_26c = 0; UVar6 = (*local_218->lpVtbl[6].Release)(local_218); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } if (local_26c != -1) { while( true ) { pIVar2 = local_218; sVar14 = (short)pwVar13; if (local_218 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } local_270 = 0; UVar6 = (*local_218->lpVtbl[6].Release)(local_218); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } if (local_270 == -1) break; local_70 = 0; local_4e = 0; local_4c = 0; uStack_48 = 0; local_44 = 0; uStack_40 = 0; uStack_6e = 0; uStack_68 = 0; uStack_66 = 0; uStack_60 = 0; local_5e = 0; uStack_58 = 0; local_56 = 0; uStack_50 = 0; uVar11 = FUN_140002290(&local_218,local_88,"grade",local_278); FUN_140199590(uVar11); local_70 = FUN_140063af0(uVar11); Ordinal_9(local_88); uVar11 = FUN_140002290(&local_218,local_a0,"char_name",local_278); FUN_140063de0(uVar11,&local_240); FUN_14016d8c0(); pwVar13 = (wchar_t *)PTR_DAT_1403440a0; if (PTR_DAT_1403440a0 == (undefined *)0x0) { pwVar13 = pwVar15; } if (local_240 != (wchar_t *)PTR_DAT_1403440a0) { uVar11 = FUN_14016d8c0(); local_180 = 0; local_188 = uVar11; FUN_14016db50(uVar11); local_180 = 1; if (((pwVar13 != (wchar_t *)0x0) && (pwVar13 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar13 + -4 != (wchar_t *)0x0)) { uVar12 = FUN_14016d8c0(); local_140 = 0; local_148 = uVar12; FUN_14016db50(uVar12); local_140 = 1; pwVar8 = pwVar13 + -2; *(int *)pwVar8 = *(int *)pwVar8 + -1; if (*(int *)pwVar8 == 0) { FUN_14016d970(pwVar13 + -4); } FUN_14016dbe0(uVar12); local_140 = 0; } pwVar13 = local_240; if (((local_240 != (wchar_t *)PTR_DAT_1403440a0) && (local_240 != (wchar_t *)0x0)) && (local_240 != (wchar_t *)0x8)) { *(int *)(local_240 + -2) = *(int *)(local_240 + -2) + 1; } FUN_14016dbe0(uVar11); local_180 = 0; } pwVar8 = pwVar13; if (pwVar13 == (wchar_t *)0x0) { pwVar8 = (wchar_t *)PTR_DAT_1403440a0; } wcsncpy((wchar_t *)&uStack_6e,pwVar8,0xf); if (((pwVar13 != (wchar_t *)0x0) && (pwVar13 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar13 + -4 != (wchar_t *)0x0)) { uVar11 = FUN_14016d8c0(); local_170 = 0; local_178 = uVar11; FUN_14016db50(uVar11); local_170 = 1; pwVar8 = pwVar13 + -2; *(int *)pwVar8 = *(int *)pwVar8 + -1; if (*(int *)pwVar8 == 0) { FUN_14016d970(pwVar13 + -4); } FUN_14016dbe0(uVar11); local_170 = 0; } pwVar13 = local_240; if (((local_240 != (wchar_t *)0x0) && (local_240 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar8 = local_240 + -4, pwVar8 != (wchar_t *)0x0)) { uVar11 = FUN_14016d8c0(); local_160 = 0; local_168 = uVar11; FUN_14016db50(uVar11); local_160 = 1; pwVar13 = pwVar13 + -2; *(int *)pwVar13 = *(int *)pwVar13 + -1; if (*(int *)pwVar13 == 0) { FUN_14016d970(pwVar8); } FUN_14016dbe0(uVar11); local_160 = 0; } local_240 = (wchar_t *)PTR_DAT_1403440a0; Ordinal_9(local_a0); uStack_50 = 0; uVar11 = FUN_140002290(&local_218,local_100,"char_class",local_278); FUN_140199590(uVar11); local_4e = FUN_140063af0(uVar11); Ordinal_9(local_100); uVar11 = FUN_140002290(&local_218,local_b8,"duel_exp",local_278); FUN_140199590(uVar11); uVar11 = FUN_140199670(uVar11); local_4c = (undefined4)uVar11; uStack_48 = (undefined4)((ulonglong)uVar11 >> 0x20); Ordinal_9(local_b8); uVar11 = FUN_140002290(&local_218,local_e8,"total_win",local_278); FUN_140199590(uVar11); local_44 = FUN_140063af0(uVar11); Ordinal_9(local_e8); ppvObject = "total_lose"; riid = (char *)&local_d0; uVar11 = FUN_140002290(&local_218,riid,"total_lose",local_278); FUN_140199590(uVar11); uStack_40 = FUN_140063af0(uVar11); Ordinal_9(&local_d0); lVar9 = (longlong)(int)uVar16; *(ulonglong *)(lVar9 + 0x130 + (longlong)param_1) = CONCAT62(uStack_6e,local_70); *(ulonglong *)(lVar9 + 0x138 + (longlong)param_1) = CONCAT62(uStack_66,uStack_68); *(ulonglong *)(lVar9 + 0x140 + (longlong)param_1) = CONCAT62(local_5e,uStack_60); *(ulonglong *)(lVar9 + 0x148 + (longlong)param_1) = CONCAT62(local_56,uStack_58); *(ulonglong *)(lVar9 + 0x150 + (longlong)param_1) = CONCAT44(local_4c,CONCAT22(local_4e,uStack_50)); *(ulonglong *)(lVar9 + 0x158 + (longlong)param_1) = CONCAT44(local_44,uStack_48); *(undefined4 *)(lVar9 + 0x160 + (longlong)param_1) = uStack_40; local_274 = uVar16 + 0x34; local_258 = sVar14 + 1; pwVar13 = (wchar_t *)(ulonglong)local_258; if (50000 < local_274) { uVar3 = local_268._2_6_; local_268 = CONCAT62(local_268._2_6_,(short)local_274); uVar11 = local_268; riid = (char *)(param_1 + 0x26); local_268._4_2_ = SUB62(uVar3,2); local_268._6_2_ = SUB62(uVar3,4); ((IID *)riid)->Data1 = (undefined4)local_268; ((IID *)riid)->Data2 = local_268._4_2_; ((IID *)riid)->Data3 = local_268._6_2_; param_1[0x27] = CONCAT26(uStack_25a,CONCAT24(uStack_25c,local_260)); *(ushort *)(param_1 + 0x28) = local_258; local_268 = uVar11; iVar4 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0)); if (iVar4 == 0) { ppvObject = "DB Result Queue push error"; riid = "DBResultQueue_Error.Log"; FUN_1400a6d80(param_1[0x23]); } local_274 = 0x12; local_258 = 0; pwVar13 = pwVar15; } pIVar2 = local_218; uVar16 = local_274; if (local_218 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } HVar5 = (*local_218->lpVtbl[0xc].QueryInterface)(local_218,(IID *)riid,(void **)ppvObject); if (HVar5 < 0) { _com_issue_errorex(HVar5,pIVar2,(_GUID *)&DAT_14029e038); } } } local_268 = CONCAT62(local_268._2_6_,(short)uVar16); param_1[0x26] = local_268; param_1[0x27] = CONCAT26(uStack_25a,CONCAT24(uStack_25c,local_260)); *(short *)(param_1 + 0x28) = sVar14; iVar4 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0)); if (iVar4 == 0) { FUN_1400a6d80(param_1[0x23],"DBResultQueue_Error.Log","DB Result Queue push error"); } pIVar2 = local_218; if (local_218 != (IUnknown *)0x0) { local_244 = 0; UVar6 = (*local_218->lpVtbl[0x12].AddRef)(local_218); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } pIVar2 = local_218; if (local_244 != 0) { if (local_218 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar6 = (*local_218->lpVtbl[10].Release)(local_218); if ((int)UVar6 < 0) { _com_issue_errorex(UVar6,pIVar2,(_GUID *)&DAT_14029e038); } } if (local_218 != (IUnknown *)0x0) { (*local_218->lpVtbl->Release)(local_218); local_218 = (IUnknown *)0x0; } } local_1b0 = 0; local_1a8 = &DAT_14029e010; local_1c0 = &DAT_14029e010; local_1b8 = 0; local_1c8 = 0; Ordinal_9(local_1e0); Ordinal_9(local_1f8); if (local_210 != (longlong *)0x0) { (**(code **)(*local_210 + 0x10))(); } if (local_218 != (IUnknown *)0x0) { (*local_218->lpVtbl->Release)(local_218); } if (local_250 != (longlong *)0x0) { (**(code **)(*local_250 + 0x10))(); } return 1; } /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); }