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

405 lines
14 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1400b5f70 FUN_1400b5f70
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001400b6220) */
/* WARNING: Removing unreachable block (ram,0x0001400b622a) */
/* WARNING: Removing unreachable block (ram,0x0001400b6235) */
/* WARNING: Removing unreachable block (ram,0x0001400b6245) */
longlong * FUN_1400b5f70(undefined8 *param_1,undefined8 *param_2)
{
IUnknown *pIVar1;
IUnknown *This;
int iVar2;
HRESULT HVar3;
ULONG UVar4;
undefined4 uVar5;
undefined8 *puVar6;
undefined8 uVar7;
longlong *plVar8;
longlong lVar9;
char local_res18 [8];
longlong *local_res20;
longlong *local_398;
int local_390;
int local_38c;
IUnknown *local_388;
longlong *local_380;
undefined4 local_378;
undefined1 local_368 [24];
undefined1 local_350 [24];
undefined4 local_338;
undefined1 *local_330;
undefined4 local_328;
undefined8 local_320;
undefined1 *local_318;
LPUNKNOWN local_308 [2];
undefined4 local_2f8;
undefined4 uStack_2f4;
undefined4 local_2f0;
undefined2 local_2ec;
undefined8 local_2ea;
undefined8 local_2e2;
undefined8 local_2da;
undefined8 local_2d2;
undefined8 local_2ca;
undefined8 local_2c2;
undefined8 local_2ba;
undefined8 local_2b2;
undefined8 local_2aa;
undefined8 local_2a2;
undefined8 local_29a;
longlong *local_288;
longlong *local_280;
longlong *local_278;
longlong *local_270 [3];
undefined4 local_258;
undefined4 uStack_254;
undefined4 uStack_250;
undefined4 uStack_24c;
undefined1 local_248 [16];
undefined8 local_238;
undefined1 local_230 [24];
undefined1 local_218 [24];
undefined1 local_200 [24];
undefined1 local_1e8 [24];
undefined1 local_1d0 [24];
undefined1 local_1b8 [24];
undefined1 local_1a0 [24];
undefined1 local_188 [24];
undefined1 local_170 [24];
undefined1 local_158 [24];
undefined1 local_140 [24];
undefined1 local_128 [24];
undefined1 local_110 [24];
undefined1 local_f8 [24];
undefined1 local_e0 [24];
undefined1 local_c8 [24];
undefined1 local_b0 [24];
undefined1 local_98 [24];
undefined1 local_80 [24];
undefined1 local_68 [24];
undefined1 local_50 [32];
local_238 = 0xfffffffffffffffe;
local_398 = (longlong *)0x0;
iVar2 = FUN_140001990(&local_398);
if ((iVar2 < 0) && (iVar2 != -0x7fffbffe)) {
/* WARNING: Subroutine does not return */
FUN_140218220(iVar2);
}
local_388 = (IUnknown *)0x0;
local_380 = (longlong *)0x0;
Ordinal_8(local_368);
Ordinal_8(local_350);
pIVar1 = local_388;
if ((local_388 != (IUnknown *)0x0) && (local_388 = (IUnknown *)0x0, pIVar1 != (IUnknown *)0x0)) {
(*pIVar1->lpVtbl->Release)(pIVar1);
}
local_318 = &DAT_14029e010;
local_330 = &DAT_14029e010;
local_328 = 0;
local_320 = 0;
if (local_388 != (IUnknown *)0x0) {
(*local_388->lpVtbl->Release)(local_388);
}
HVar3 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0,local_308
);
if (HVar3 < 0) {
LAB_1400b60aa:
local_388 = (IUnknown *)0x0;
}
else {
HVar3 = OleRun(local_308[0]);
if (-1 < HVar3) {
HVar3 = (*local_308[0]->lpVtbl->QueryInterface)(local_308[0],(IID *)&DAT_14029e078,&local_388)
;
}
(*local_308[0]->lpVtbl->Release)(local_308[0]);
if (HVar3 < 0) goto LAB_1400b60aa;
}
local_338 = 2;
local_378 = 1;
local_res18[0] = '\x01';
local_2ea = 0;
local_2e2 = 0;
local_2da = 0;
local_2d2 = 0;
local_2ca = 0;
local_2c2 = 0;
local_2ba = 0;
local_2b2 = 0;
local_2aa = 0;
local_2a2 = 0;
local_29a = 0;
local_2f0 = *(undefined4 *)(param_2 + 1);
_local_2f8 = CONCAT44((int)((ulonglong)*param_2 >> 0x20),0x23360000);
local_2ec = 1;
_local_2f8 = CONCAT62(stack0xfffffffffffffd0a,0x66);
pIVar1 = *(IUnknown **)*param_1;
if (pIVar1 != (IUnknown *)0x0) {
local_38c = 0;
UVar4 = (*pIVar1->lpVtbl[0xb].AddRef)(pIVar1);
if ((int)UVar4 < 0) {
_com_issue_errorex(UVar4,pIVar1,(_GUID *)&DAT_14029e018);
}
if (local_38c != 0) goto LAB_1400b62e5;
}
iVar2 = FUN_1400a80c0(param_1);
if (iVar2 == 0) {
FUN_1400a8040(param_1,param_2,0);
pIVar1 = local_388;
if (local_388 != (IUnknown *)0x0) {
UVar4 = (*local_388->lpVtbl[0x12].AddRef)(local_388);
if ((int)UVar4 < 0) {
_com_issue_errorex(UVar4,pIVar1,(_GUID *)&DAT_14029e038);
}
if (local_388 != (IUnknown *)0x0) {
(*local_388->lpVtbl->Release)(local_388);
local_388 = (IUnknown *)0x0;
}
}
local_320 = 0;
local_318 = &DAT_14029e010;
local_330 = &DAT_14029e010;
local_328 = 0;
local_338 = 0;
Ordinal_9(local_350);
Ordinal_9(local_368);
if (local_380 != (longlong *)0x0) {
(**(code **)(*local_380 + 0x10))();
}
if (local_388 != (IUnknown *)0x0) {
(*local_388->lpVtbl->Release)(local_388);
}
if (local_398 != (longlong *)0x0) {
(**(code **)(*local_398 + 0x10))();
}
return (longlong *)0x0;
}
LAB_1400b62e5:
puVar6 = (undefined8 *)FUN_140001f40(*param_1,&local_280);
FUN_140001700(&local_398,*puVar6,"dbo.up_get_duel_info");
if (local_280 != (longlong *)0x0) {
(**(code **)(*local_280 + 0x10))();
}
local_res20 = (longlong *)local_1e8;
local_258 = *(undefined4 *)((longlong)param_2 + 0xe);
uStack_254 = *(undefined4 *)((longlong)param_2 + 0x12);
uStack_250 = *(undefined4 *)((longlong)param_2 + 0x16);
uStack_24c = *(undefined4 *)((longlong)param_2 + 0x1a);
uVar7 = FUN_140063820(local_1e8,&local_258);
plVar8 = operator_new(0x18);
local_270[0] = (longlong *)0x0;
local_288 = plVar8;
if (plVar8 != (longlong *)0x0) {
plVar8[1] = 0;
*(undefined4 *)(plVar8 + 2) = 1;
lVar9 = FUN_1402182d0("character_id");
*plVar8 = lVar9;
local_270[0] = plVar8;
}
if (local_270[0] == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x8007000e);
}
plVar8 = (longlong *)FUN_140001870(&local_398,local_248,local_270,0xca,1,0x26,uVar7);
local_res20 = plVar8;
if (local_398 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
puVar6 = (undefined8 *)FUN_140001650(local_398,&local_278);
pIVar1 = (IUnknown *)*puVar6;
if (pIVar1 != (IUnknown *)0x0) {
UVar4 = (*pIVar1->lpVtbl[3].AddRef)(pIVar1);
if ((int)UVar4 < 0) {
_com_issue_errorex(UVar4,pIVar1,(_GUID *)&DAT_14029dfc0);
}
if (local_278 != (longlong *)0x0) {
(**(code **)(*local_278 + 0x10))();
}
if ((longlong *)*plVar8 != (longlong *)0x0) {
(**(code **)(*(longlong *)*plVar8 + 0x10))();
}
puVar6 = (undefined8 *)FUN_1400016c0(&local_398,&local_288);
This = local_388;
pIVar1 = (IUnknown *)*puVar6;
if (local_388 != pIVar1) {
local_388 = pIVar1;
if (pIVar1 != (IUnknown *)0x0) {
(*pIVar1->lpVtbl->AddRef)(pIVar1);
}
if (This != (IUnknown *)0x0) {
(*This->lpVtbl->Release)(This);
}
}
if (local_288 != (longlong *)0x0) {
(**(code **)(*local_288 + 0x10))();
}
pIVar1 = local_388;
if (local_388 != (IUnknown *)0x0) {
local_res20 = (longlong *)((ulonglong)local_res20 & 0xffffffffffff0000);
UVar4 = (*local_388->lpVtbl[6].Release)(local_388);
if ((int)UVar4 < 0) {
_com_issue_errorex(UVar4,pIVar1,(_GUID *)&DAT_14029e038);
}
plVar8 = (longlong *)0x1;
if ((short)local_res20 != -1) {
uVar7 = FUN_140002290(&local_388,local_80,"duel_exp",local_res18);
FUN_140199590(uVar7);
local_2ea = FUN_140199670(uVar7);
Ordinal_9(local_80);
uVar7 = FUN_140002290(&local_388,local_50,"duel_point",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2e2 = CONCAT44(local_2e2._4_4_,uVar5);
Ordinal_9(local_50);
uVar7 = FUN_140002290(&local_388,local_128,"duel_disconnect",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2da._4_4_ = uVar5;
Ordinal_9(local_128);
uVar7 = FUN_140002290(&local_388,local_230,"duel_pannelty_time",local_res18);
FUN_140199590(uVar7);
local_2d2 = FUN_14009f050(uVar7);
Ordinal_9(local_230);
uVar7 = FUN_140002290(&local_388,local_68,"total_win",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2ca = CONCAT44(local_2ca._4_4_,uVar5);
Ordinal_9(local_68);
uVar7 = FUN_140002290(&local_388,local_1b8,"total_lose",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2ca = CONCAT44(uVar5,(undefined4)local_2ca);
Ordinal_9(local_1b8);
uVar7 = FUN_140002290(&local_388,local_f8,"pvp_win",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2c2 = CONCAT44(local_2c2._4_4_,uVar5);
Ordinal_9(local_f8);
uVar7 = FUN_140002290(&local_388,local_188,"pvp_lose",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2c2 = CONCAT44(uVar5,(undefined4)local_2c2);
Ordinal_9(local_188);
uVar7 = FUN_140002290(&local_388,local_98,"team_win",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2ba = CONCAT44(local_2ba._4_4_,uVar5);
Ordinal_9(local_98);
uVar7 = FUN_140002290(&local_388,local_158,"team_lose",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2ba = CONCAT44(uVar5,(undefined4)local_2ba);
Ordinal_9(local_158);
uVar7 = FUN_140002290(&local_388,local_c8,"leader_win",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2b2 = CONCAT44(local_2b2._4_4_,uVar5);
Ordinal_9(local_c8);
uVar7 = FUN_140002290(&local_388,local_218,"leader_lose",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2b2 = CONCAT44(uVar5,(undefined4)local_2b2);
Ordinal_9(local_218);
uVar7 = FUN_140002290(&local_388,local_200,"tag_win",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2aa = CONCAT44(local_2aa._4_4_,uVar5);
Ordinal_9(local_200);
uVar7 = FUN_140002290(&local_388,local_1d0,"tag_lose",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2aa = CONCAT44(uVar5,(undefined4)local_2aa);
Ordinal_9(local_1d0);
uVar7 = FUN_140002290(&local_388,local_1a0,"death_win",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2a2 = CONCAT44(local_2a2._4_4_,uVar5);
Ordinal_9(local_1a0);
uVar7 = FUN_140002290(&local_388,local_170,"death_lose",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2a2 = CONCAT44(uVar5,(undefined4)local_2a2);
Ordinal_9(local_170);
uVar7 = FUN_140002290(&local_388,local_140,"ladder_win",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_29a = CONCAT44(local_29a._4_4_,uVar5);
Ordinal_9(local_140);
uVar7 = FUN_140002290(&local_388,local_110,"ladder_lose",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_29a = CONCAT44(uVar5,(undefined4)local_29a);
Ordinal_9(local_110);
uVar7 = FUN_140002290(&local_388,local_e0,"duel_ladder_exp",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2e2 = CONCAT44(uVar5,(undefined4)local_2e2);
Ordinal_9(local_e0);
uVar7 = FUN_140002290(&local_388,local_b0,"duel_ladder_point",local_res18);
FUN_140199590(uVar7);
uVar5 = FUN_140063af0(uVar7);
local_2da = CONCAT44(local_2da._4_4_,uVar5);
Ordinal_9(local_b0);
if (local_res18[0] == '\0') {
local_2ec = 1;
plVar8 = (longlong *)0x0;
}
}
iVar2 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0),&local_2f8);
if (iVar2 == 0) {
FUN_1400a6d80(param_1[0x23],"DBResultQueue_Error.Log","DB Result Queue push error");
}
pIVar1 = local_388;
if (local_388 != (IUnknown *)0x0) {
local_390 = 0;
UVar4 = (*local_388->lpVtbl[0x12].AddRef)(local_388);
if ((int)UVar4 < 0) {
_com_issue_errorex(UVar4,pIVar1,(_GUID *)&DAT_14029e038);
}
pIVar1 = local_388;
if (local_390 != 0) {
if (local_388 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
UVar4 = (*local_388->lpVtbl[10].Release)(local_388);
if ((int)UVar4 < 0) {
_com_issue_errorex(UVar4,pIVar1,(_GUID *)&DAT_14029e038);
}
}
if (local_388 != (IUnknown *)0x0) {
(*local_388->lpVtbl->Release)(local_388);
local_388 = (IUnknown *)0x0;
}
}
local_320 = 0;
local_318 = &DAT_14029e010;
local_330 = &DAT_14029e010;
local_328 = 0;
local_338 = 0;
Ordinal_9(local_350);
Ordinal_9(local_368);
if (local_380 != (longlong *)0x0) {
(**(code **)(*local_380 + 0x10))();
}
if (local_388 != (IUnknown *)0x0) {
(*local_388->lpVtbl->Release)(local_388);
}
if (local_398 != (longlong *)0x0) {
(**(code **)(*local_398 + 0x10))();
}
return plVar8;
}
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}