/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400ceb70 FUN_1400ceb70 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x0001400cfa2c) */ /* WARNING: Removing unreachable block (ram,0x0001400cfa3a) */ /* WARNING: Removing unreachable block (ram,0x0001400cfa41) */ /* WARNING: Removing unreachable block (ram,0x0001400cfa46) */ /* WARNING: Removing unreachable block (ram,0x0001400cfa50) */ /* WARNING: Removing unreachable block (ram,0x0001400cfa85) */ /* WARNING: Removing unreachable block (ram,0x0001400cfaa0) */ /* WARNING: Removing unreachable block (ram,0x0001400cfac4) */ /* WARNING: Removing unreachable block (ram,0x0001400cfade) */ /* WARNING: Removing unreachable block (ram,0x0001400cfaef) */ /* WARNING: Removing unreachable block (ram,0x0001400cfafb) */ /* WARNING: Removing unreachable block (ram,0x0001400cfb08) */ /* WARNING: Removing unreachable block (ram,0x0001400cfb13) */ /* WARNING: Removing unreachable block (ram,0x0001400cfb23) */ /* WARNING: Removing unreachable block (ram,0x0001400cfb34) */ /* WARNING: Removing unreachable block (ram,0x0001400cfb41) */ /* WARNING: Removing unreachable block (ram,0x0001400cfb4f) */ /* WARNING: Removing unreachable block (ram,0x0001400cfba2) */ /* WARNING: Removing unreachable block (ram,0x0001400cfba9) */ /* WARNING: Removing unreachable block (ram,0x0001400cfbb6) */ /* WARNING: Removing unreachable block (ram,0x0001400cfbbd) */ /* WARNING: Removing unreachable block (ram,0x0001400cfbc7) */ /* WARNING: Removing unreachable block (ram,0x0001400cfbcf) */ undefined4 FUN_1400ceb70(undefined8 *param_1,undefined8 *param_2) { undefined4 uVar1; IUnknown *pIVar2; undefined6 uVar3; IUnknown *This; undefined1 uVar4; int iVar5; HRESULT HVar6; ULONG UVar7; undefined8 *puVar8; undefined8 uVar9; undefined8 uVar10; wchar_t *pwVar11; char *riid; wchar_t *pwVar12; char *ppvObject; wchar_t *pwVar13; uint uVar14; ushort uVar15; wchar_t *pwVar16; undefined1 auStackY_628 [32]; char local_5f8 [4]; undefined8 local_5e8; longlong *local_5d0; int local_5c4; wchar_t *local_5c0; wchar_t *local_5b8; wchar_t *local_5b0; LPUNKNOWN local_5a8 [2]; IUnknown *local_598; longlong *local_590; undefined4 local_588; undefined1 local_578 [24]; undefined1 local_560 [24]; undefined4 local_548; undefined1 *local_540; undefined4 local_538; undefined8 local_530; undefined1 *local_528; undefined8 *local_518; undefined8 *local_510; undefined4 local_508; undefined4 local_504; undefined4 local_500; undefined4 local_4fc; undefined4 local_4f8; uchar local_4f4 [4]; uchar local_4f0 [4]; undefined4 local_4ec; undefined8 local_4e8; undefined1 local_4e0; undefined8 local_4d8; undefined1 local_4d0; longlong *local_4c8; undefined8 local_4c0; undefined1 local_4b8; undefined8 local_4b0; undefined1 local_4a8; undefined8 local_4a0; undefined1 local_498; undefined8 local_490; undefined1 local_488; undefined8 local_480; undefined1 local_478; undefined8 local_470; undefined1 local_468; undefined8 local_460; undefined1 local_458; undefined8 local_450; undefined1 local_448; undefined8 local_440; undefined1 local_438; longlong *local_430; undefined8 local_428; undefined1 local_420; undefined8 local_418; undefined1 local_400 [24]; undefined1 local_3e8 [24]; undefined1 local_3d0 [24]; undefined1 local_3b8 [24]; undefined1 local_3a0 [24]; undefined1 local_388 [24]; undefined1 local_370 [24]; undefined1 local_358 [24]; undefined1 local_340 [24]; undefined1 local_328 [32]; IID local_308; undefined4 local_2f8; undefined4 local_2f4; undefined4 local_2f0; undefined4 local_2ec; undefined4 local_2e8; undefined2 local_2e4; undefined1 local_2e2; wchar_t local_2e1 [12]; ulonglong local_2c9; wchar_t local_2c1 [49]; undefined2 local_25f; wchar_t local_25d [254]; undefined2 local_61; undefined8 local_5f; ulonglong local_48; local_418 = 0xfffffffffffffffe; local_48 = DAT_1403463c0 ^ (ulonglong)auStackY_628; pwVar13 = (wchar_t *)0x0; local_5d0 = (longlong *)0x0; local_518 = param_2; local_510 = param_1; iVar5 = FUN_140001990(&local_5d0); if ((iVar5 < 0) && (iVar5 != -0x7fffbffe)) { /* WARNING: Subroutine does not return */ FUN_140218220(iVar5); } local_598 = (IUnknown *)0x0; local_590 = (longlong *)0x0; Ordinal_8(local_578); Ordinal_8(local_560); pIVar2 = local_598; if ((local_598 != (IUnknown *)0x0) && (local_598 = (IUnknown *)0x0, pIVar2 != (IUnknown *)0x0)) { (*pIVar2->lpVtbl->Release)(pIVar2); } local_528 = &DAT_14029e010; local_540 = &DAT_14029e010; local_538 = 0; local_530 = 0; if (local_598 != (IUnknown *)0x0) { (*local_598->lpVtbl->Release)(local_598); } HVar6 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0,local_5a8 ); if (-1 < HVar6) { HVar6 = OleRun(local_5a8[0]); if (-1 < HVar6) { HVar6 = (*local_5a8[0]->lpVtbl->QueryInterface)(local_5a8[0],(IID *)&DAT_14029e078,&local_598) ; } (*local_5a8[0]->lpVtbl->Release)(local_5a8[0]); if (-1 < HVar6) goto LAB_1400cecf0; } local_598 = (IUnknown *)0x0; LAB_1400cecf0: local_548 = 2; local_588 = 1; local_5f8[0] = '\x01'; pwVar16 = (wchar_t *)0x0; uVar1 = *(undefined4 *)(param_2 + 1); local_5e8 = CONCAT44((int)((ulonglong)*param_2 >> 0x20),0x24010000); uVar14 = 0x10; pIVar2 = *(IUnknown **)*param_1; if ((pIVar2 != (IUnknown *)0x0) && (UVar7 = (*pIVar2->lpVtbl[0xb].AddRef)(pIVar2), (int)UVar7 < 0) ) { _com_issue_errorex(UVar7,pIVar2,(_GUID *)&DAT_14029e018); } iVar5 = FUN_1400a80c0(param_1); if (iVar5 != 0) { puVar8 = (undefined8 *)FUN_140001f40(*param_1,&local_4c8); FUN_140001700(&local_5d0,*puVar8,"dbo.up_read_Inquiry"); if (local_4c8 != (longlong *)0x0) { (**(code **)(*local_4c8 + 0x10))(); } puVar8 = (undefined8 *)FUN_1400016c0(&local_5d0,&local_430); This = local_598; pIVar2 = (IUnknown *)*puVar8; if (local_598 != pIVar2) { local_598 = pIVar2; if (pIVar2 != (IUnknown *)0x0) { (*pIVar2->lpVtbl->AddRef)(pIVar2); } if (This != (IUnknown *)0x0) { (*This->lpVtbl->Release)(This); } } if (local_430 != (longlong *)0x0) { (**(code **)(*local_430 + 0x10))(); } pIVar2 = local_598; if (local_598 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar7 = (*local_598->lpVtbl[6].Release)(local_598); if ((int)UVar7 < 0) { _com_issue_errorex(UVar7,pIVar2,(_GUID *)&DAT_14029e038); } while( true ) { pIVar2 = local_598; if (local_598 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar7 = (*local_598->lpVtbl[6].Release)(local_598); if ((int)UVar7 < 0) { _com_issue_errorex(UVar7,pIVar2,(_GUID *)&DAT_14029e038); } local_308.Data1 = 0; local_308.Data2 = 0; local_308.Data3 = 0; local_308.Data4[0] = '\0'; local_308.Data4[1] = '\0'; local_308.Data4[2] = '\0'; local_308.Data4[3] = '\0'; local_308.Data4[4] = '\0'; local_308.Data4[5] = '\0'; local_308.Data4[6] = '\0'; local_308.Data4[7] = '\0'; local_2f8 = 0; local_2f4 = 0; local_2f0 = 0; local_2ec = 0; local_2e8 = 0; local_2e4 = 0; local_2e2 = 0; local_5f = 0; local_2e1[0] = L'\0'; local_2e1[1] = L'\0'; local_2e1[2] = L'\0'; local_2e1[3] = L'\0'; local_2e1[4] = L'\0'; local_2e1[5] = L'\0'; local_2e1[6] = L'\0'; local_2e1[7] = L'\0'; local_2e1[8] = L'\0'; local_2e1[9] = L'\0'; local_2e1[10] = L'\0'; local_2e1[0xb] = L'\0'; local_2c9 = 0; memset(local_2c1,0,100); memset(local_25d,0,0x1fe); uVar9 = FUN_140002290(&local_598,local_388,"inquiry_id",local_5f8); FUN_140199590(uVar9); local_308.Data1 = FUN_1400dc990(uVar9); Ordinal_9(local_388); uVar9 = FUN_140002290(&local_598,local_340,"auth_id",local_5f8); FUN_140063b70(uVar9,&local_4f8); local_308.Data2 = (ushort)local_4f8; local_308.Data3 = local_4f8._2_2_; local_308.Data4[0] = local_4f4[0]; local_308.Data4[1] = local_4f4[1]; local_308.Data4[2] = local_4f4[2]; local_308.Data4[3] = local_4f4[3]; local_308.Data4[4] = local_4f0[0]; local_308.Data4[5] = local_4f0[1]; local_308.Data4[6] = local_4f0[2]; local_308.Data4[7] = local_4f0[3]; local_2f8 = local_4ec; Ordinal_9(local_340); uVar9 = FUN_140002290(&local_598,local_328,"character_id",local_5f8); FUN_140063b70(uVar9,&local_508); local_2f4 = local_508; local_2f0 = local_504; local_2ec = local_500; local_2e8 = local_4fc; Ordinal_9(local_328); uVar9 = FUN_140002290(&local_598,local_3b8,&DAT_1402aa2b4,local_5f8); FUN_140199590(uVar9); uVar4 = FUN_140063a70(uVar9); local_2e4 = CONCAT11(local_2e4._1_1_,uVar4); Ordinal_9(local_3b8); uVar9 = FUN_140002290(&local_598,local_358,"count",local_5f8); FUN_140199590(uVar9); uVar4 = FUN_140063a70(uVar9); local_2e4 = CONCAT11(uVar4,(undefined1)local_2e4); Ordinal_9(local_358); uVar9 = FUN_140002290(&local_598,local_400,"compulsion",local_5f8); FUN_140199590(uVar9); local_2e2 = FUN_140063a70(uVar9); Ordinal_9(local_400); uVar9 = FUN_140002290(&local_598,local_3e8,&DAT_1402a6210,local_5f8); FUN_140199590(uVar9); local_5f = FUN_14009f050(uVar9); Ordinal_9(local_3e8); uVar9 = FUN_140002290(&local_598,local_3d0,"character_name",local_5f8); FUN_140063de0(uVar9,&local_5c0); FUN_14016d8c0(); pwVar12 = (wchar_t *)PTR_DAT_1403440a0; if (PTR_DAT_1403440a0 == (undefined *)0x0) { pwVar12 = pwVar13; } if (local_5c0 != (wchar_t *)PTR_DAT_1403440a0) { uVar9 = FUN_14016d8c0(); local_488 = 0; local_490 = uVar9; FUN_14016db50(uVar9); local_488 = 1; if (((pwVar12 != (wchar_t *)0x0) && (pwVar12 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar12 + -4 != (wchar_t *)0x0)) { uVar10 = FUN_14016d8c0(); local_4e0 = 0; local_4e8 = uVar10; FUN_14016db50(uVar10); local_4e0 = 1; pwVar11 = pwVar12 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar12 + -4); } FUN_14016dbe0(uVar10); local_4e0 = 0; } pwVar12 = local_5c0; if (((local_5c0 != (wchar_t *)PTR_DAT_1403440a0) && (local_5c0 != (wchar_t *)0x0)) && (local_5c0 != (wchar_t *)0x8)) { *(int *)(local_5c0 + -2) = *(int *)(local_5c0 + -2) + 1; } FUN_14016dbe0(uVar9); local_488 = 0; } pwVar11 = pwVar12; if (pwVar12 == (wchar_t *)0x0) { pwVar11 = (wchar_t *)PTR_DAT_1403440a0; } wcsncpy(local_2e1,pwVar11,0xf); if (((pwVar12 != (wchar_t *)0x0) && (pwVar12 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar12 + -4 != (wchar_t *)0x0)) { uVar9 = FUN_14016d8c0(); local_448 = 0; local_450 = uVar9; FUN_14016db50(uVar9); local_448 = 1; pwVar11 = pwVar12 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar12 + -4); } FUN_14016dbe0(uVar9); local_448 = 0; } pwVar12 = local_5c0; if (((local_5c0 != (wchar_t *)0x0) && (local_5c0 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar11 = local_5c0 + -4, pwVar11 != (wchar_t *)0x0)) { uVar9 = FUN_14016d8c0(); local_468 = 0; local_470 = uVar9; FUN_14016db50(uVar9); local_468 = 1; pwVar12 = pwVar12 + -2; *(int *)pwVar12 = *(int *)pwVar12 + -1; if (*(int *)pwVar12 == 0) { FUN_14016d970(pwVar11); } FUN_14016dbe0(uVar9); local_468 = 0; } local_5c0 = (wchar_t *)PTR_DAT_1403440a0; Ordinal_9(local_3d0); uVar9 = FUN_140002290(&local_598,local_3a0,"bcust_id",local_5f8); FUN_140063de0(uVar9,&local_5b0); FUN_14016d8c0(); pwVar12 = (wchar_t *)PTR_DAT_1403440a0; if (PTR_DAT_1403440a0 == (undefined *)0x0) { pwVar12 = pwVar13; } if (local_5b0 != (wchar_t *)PTR_DAT_1403440a0) { uVar9 = FUN_14016d8c0(); local_498 = 0; local_4a0 = uVar9; FUN_14016db50(uVar9); local_498 = 1; if (((pwVar12 != (wchar_t *)0x0) && (pwVar12 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar12 + -4 != (wchar_t *)0x0)) { uVar10 = FUN_14016d8c0(); local_4a8 = 0; local_4b0 = uVar10; FUN_14016db50(uVar10); local_4a8 = 1; pwVar11 = pwVar12 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar12 + -4); } FUN_14016dbe0(uVar10); local_4a8 = 0; } pwVar12 = local_5b0; if (((local_5b0 != (wchar_t *)PTR_DAT_1403440a0) && (local_5b0 != (wchar_t *)0x0)) && (local_5b0 != (wchar_t *)0x8)) { *(int *)(local_5b0 + -2) = *(int *)(local_5b0 + -2) + 1; } FUN_14016dbe0(uVar9); local_498 = 0; } pwVar11 = pwVar12; if (pwVar12 == (wchar_t *)0x0) { pwVar11 = (wchar_t *)PTR_DAT_1403440a0; } wcsncpy(local_2c1,pwVar11,0x31); if (((pwVar12 != (wchar_t *)0x0) && (pwVar12 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar12 + -4 != (wchar_t *)0x0)) { uVar9 = FUN_14016d8c0(); local_478 = 0; local_480 = uVar9; FUN_14016db50(uVar9); local_478 = 1; pwVar11 = pwVar12 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar12 + -4); } FUN_14016dbe0(uVar9); local_478 = 0; } pwVar12 = local_5b0; if (((local_5b0 != (wchar_t *)0x0) && (local_5b0 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar11 = local_5b0 + -4, pwVar11 != (wchar_t *)0x0)) { uVar9 = FUN_14016d8c0(); local_458 = 0; local_460 = uVar9; FUN_14016db50(uVar9); local_458 = 1; pwVar12 = pwVar12 + -2; *(int *)pwVar12 = *(int *)pwVar12 + -1; if (*(int *)pwVar12 == 0) { FUN_14016d970(pwVar11); } FUN_14016dbe0(uVar9); local_458 = 0; } local_5b0 = (wchar_t *)PTR_DAT_1403440a0; Ordinal_9(local_3a0); uVar9 = FUN_140002290(&local_598,local_370,&DAT_1402aa6c8,local_5f8); FUN_140063de0(uVar9,&local_5b8); FUN_14016d8c0(); pwVar12 = (wchar_t *)PTR_DAT_1403440a0; if (PTR_DAT_1403440a0 == (undefined *)0x0) { pwVar12 = pwVar13; } if (local_5b8 != (wchar_t *)PTR_DAT_1403440a0) { uVar9 = FUN_14016d8c0(); local_420 = 0; local_428 = uVar9; FUN_14016db50(uVar9); local_420 = 1; if (((pwVar12 != (wchar_t *)0x0) && (pwVar12 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar12 + -4 != (wchar_t *)0x0)) { uVar10 = FUN_14016d8c0(); local_438 = 0; local_440 = uVar10; FUN_14016db50(uVar10); local_438 = 1; pwVar11 = pwVar12 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar12 + -4); } FUN_14016dbe0(uVar10); local_438 = 0; } pwVar12 = local_5b8; if (((local_5b8 != (wchar_t *)PTR_DAT_1403440a0) && (local_5b8 != (wchar_t *)0x0)) && (local_5b8 != (wchar_t *)0x8)) { *(int *)(local_5b8 + -2) = *(int *)(local_5b8 + -2) + 1; } FUN_14016dbe0(uVar9); local_420 = 0; } pwVar11 = pwVar12; if (pwVar12 == (wchar_t *)0x0) { pwVar11 = (wchar_t *)PTR_DAT_1403440a0; } wcsncpy(local_25d,pwVar11,0xfe); if (((pwVar12 != (wchar_t *)0x0) && (pwVar12 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar12 + -4 != (wchar_t *)0x0)) { uVar9 = FUN_14016d8c0(); local_4d0 = 0; local_4d8 = uVar9; FUN_14016db50(uVar9); local_4d0 = 1; pwVar11 = pwVar12 + -2; *(int *)pwVar11 = *(int *)pwVar11 + -1; if (*(int *)pwVar11 == 0) { FUN_14016d970(pwVar12 + -4); } FUN_14016dbe0(uVar9); local_4d0 = 0; } pwVar12 = local_5b8; if (((local_5b8 != (wchar_t *)0x0) && (local_5b8 != (wchar_t *)PTR_DAT_1403440a0)) && (pwVar11 = local_5b8 + -4, pwVar11 != (wchar_t *)0x0)) { uVar9 = FUN_14016d8c0(); local_4b8 = 0; local_4c0 = uVar9; FUN_14016db50(uVar9); local_4b8 = 1; pwVar12 = pwVar12 + -2; *(int *)pwVar12 = *(int *)pwVar12 + -1; if (*(int *)pwVar12 == 0) { FUN_14016d970(pwVar11); } FUN_14016dbe0(uVar9); local_4b8 = 0; } local_5b8 = (wchar_t *)PTR_DAT_1403440a0; Ordinal_9(local_370); local_2c9 = local_2c9 & 0xffffffffffff; local_25f = 0; local_61 = 0; riid = (char *)&local_308; ppvObject = (char *)0x2b1; memcpy((void *)((longlong)(int)uVar14 + 0x130 + (longlong)param_1),riid,0x2b1); uVar14 = uVar14 + 0x2b1; uVar15 = (short)pwVar16 + 1; pwVar16 = (wchar_t *)(ulonglong)uVar15; if (50000 < uVar14) { uVar3 = local_5e8._2_6_; local_5e8 = CONCAT62(local_5e8._2_6_,(short)uVar14); uVar9 = local_5e8; riid = (char *)(param_1 + 0x26); local_5e8._4_2_ = SUB62(uVar3,2); local_5e8._6_2_ = SUB62(uVar3,4); ((IID *)riid)->Data1 = (undefined4)local_5e8; ((IID *)riid)->Data2 = local_5e8._4_2_; ((IID *)riid)->Data3 = local_5e8._6_2_; param_1[0x27] = CONCAT26(uVar15,CONCAT24(0x11e,uVar1)); iVar5 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0)); if (iVar5 == 0) { ppvObject = "DB Result Queue push error"; riid = "DBResultQueue_Error.Log"; FUN_1400a6d80(param_1[0x23]); } uVar14 = 0x10; pwVar16 = pwVar13; local_5e8 = uVar9; } pIVar2 = local_598; if (local_598 == (IUnknown *)0x0) break; HVar6 = (*local_598->lpVtbl[0xc].QueryInterface)(local_598,(IID *)riid,(void **)ppvObject); if (HVar6 < 0) { _com_issue_errorex(HVar6,pIVar2,(_GUID *)&DAT_14029e038); } } /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } FUN_1400a8040(param_1,param_2,0); pIVar2 = local_598; if (local_598 != (IUnknown *)0x0) { local_5c4 = 0; UVar7 = (*local_598->lpVtbl[0x12].AddRef)(local_598); if ((int)UVar7 < 0) { _com_issue_errorex(UVar7,pIVar2,(_GUID *)&DAT_14029e038); } pIVar2 = local_598; if (local_5c4 != 0) { if (local_598 == (IUnknown *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } UVar7 = (*local_598->lpVtbl[10].Release)(local_598); if ((int)UVar7 < 0) { _com_issue_errorex(UVar7,pIVar2,(_GUID *)&DAT_14029e038); } } if (local_598 != (IUnknown *)0x0) { (*local_598->lpVtbl->Release)(local_598); local_598 = (IUnknown *)0x0; } } local_530 = 0; local_528 = &DAT_14029e010; local_540 = &DAT_14029e010; local_538 = 0; local_548 = 0; Ordinal_9(local_560); Ordinal_9(local_578); if (local_590 != (longlong *)0x0) { (**(code **)(*local_590 + 0x10))(); } if (local_598 != (IUnknown *)0x0) { (*local_598->lpVtbl->Release)(local_598); } if (local_5d0 != (longlong *)0x0) { (**(code **)(*local_5d0 + 0x10))(); } return 0; }