server-re/decomp/DBCServer_Release_x64/full/functions/0x1400b9160.c

497 lines
16 KiB
C

/* 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);
}