/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14015ca50 FUN_14015ca50 * Pseudocode, not original source. */ void FUN_14015ca50(longlong param_1) { char cVar1; int iVar2; longlong lVar3; longlong lVar4; longlong lVar5; longlong *plVar6; longlong *plVar7; char *pcVar8; char *pcVar9; char *pcVar10; bool bVar11; undefined **local_98 [5]; longlong *local_70; undefined8 *local_60; void *local_58; undefined8 *local_38; void *local_30; undefined8 local_18; local_18 = 0xfffffffffffffffe; plVar6 = (longlong *)(param_1 + 0x18); if (0xf < *(ulonglong *)(param_1 + 0x30)) { plVar6 = (longlong *)*plVar6; } FUN_140162110(local_98,plVar6); DAT_140349a98 = 0; cVar1 = FUN_1401621e0(local_98,local_60 + 2); if (cVar1 == '\0') { local_98[0] = TiXmlDocument::vftable; if (local_38 != &DAT_140352f70) { operator_delete__(local_30); } local_98[0] = TiXmlNode::vftable; while (local_70 != (longlong *)0x0) { plVar6 = (longlong *)local_70[10]; (**(code **)*local_70)(local_70,1); local_70 = plVar6; } if (local_60 != &DAT_140352f70) { operator_delete__(local_58); return; } return; } plVar6 = local_70; if (local_70 != (longlong *)0x0) { do { bVar11 = (char *)(plVar6[7] + 0x10) == (char *)0x0; lVar3 = 4; pcVar8 = (char *)(plVar6[7] + 0x10); pcVar9 = "log"; do { if (lVar3 == 0) break; lVar3 = lVar3 + -1; bVar11 = *pcVar8 == *pcVar9; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } while (bVar11); if (bVar11) goto LAB_14015cb66; plVar6 = (longlong *)plVar6[10]; plVar7 = local_70; } while (plVar6 != (longlong *)0x0); goto joined_r0x00014015ce23; } goto LAB_14015d22b; LAB_14015cb66: while (lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6), lVar3 == 0) { do { plVar6 = (longlong *)plVar6[10]; plVar7 = local_70; if (plVar6 == (longlong *)0x0) goto joined_r0x00014015ce23; bVar11 = (char *)(plVar6[7] + 0x10) == (char *)0x0; lVar3 = 4; pcVar8 = (char *)(plVar6[7] + 0x10); pcVar9 = "log"; do { if (lVar3 == 0) break; lVar3 = lVar3 + -1; bVar11 = *pcVar8 == *pcVar9; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } while (bVar11); } while (!bVar11); } lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); plVar7 = local_70; if (lVar3 != 0) { for (plVar6 = *(longlong **)(lVar3 + 0x28); plVar7 = local_70, plVar6 != (longlong *)0x0; plVar6 = (longlong *)plVar6[10]) { lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); if (lVar3 != 0) { lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); goto joined_r0x00014015cbeb; } } } joined_r0x00014015ce23: do { if (plVar7 == (longlong *)0x0) goto LAB_14015d22b; bVar11 = (char *)(plVar7[7] + 0x10) == (char *)0x0; lVar3 = 8; pcVar8 = (char *)(plVar7[7] + 0x10); pcVar9 = "connect"; do { if (lVar3 == 0) break; lVar3 = lVar3 + -1; bVar11 = *pcVar8 == *pcVar9; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } while (bVar11); if (bVar11) goto LAB_14015ce56; plVar7 = (longlong *)plVar7[10]; } while( true ); joined_r0x00014015cbeb: plVar7 = local_70; if (lVar3 != 0) { pcVar8 = (char *)(*(longlong *)(lVar3 + 0x38) + 0x10); if (pcVar8 != (char *)0x0) { for (lVar4 = *(longlong *)(lVar3 + 0xa0); lVar4 != lVar3 + 0x58; lVar4 = *(longlong *)(lVar4 + 0x48)) { pcVar9 = (char *)(*(longlong *)(lVar4 + 0x20) + 0x10); bVar11 = pcVar9 == (char *)0x0; lVar5 = 6; pcVar10 = "print"; do { if (lVar5 == 0) break; lVar5 = lVar5 + -1; bVar11 = *pcVar9 == *pcVar10; pcVar9 = pcVar9 + 1; pcVar10 = pcVar10 + 1; } while (bVar11); if (bVar11) { pcVar9 = (char *)(*(longlong *)(lVar4 + 0x30) + 0x10); if (pcVar9 != (char *)0x0) { lVar4 = -1; pcVar10 = pcVar8; goto code_r0x00014015cc4d; } break; } } } goto LAB_14015cde9; } goto joined_r0x00014015ce23; while( true ) { lVar4 = lVar4 + -1; cVar1 = *pcVar10; pcVar10 = pcVar10 + 1; if (cVar1 == '\0') break; code_r0x00014015cc4d: if (lVar4 == 0) break; } if (lVar4 != -2) { iVar2 = _stricmp(pcVar8,"log_account"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x41) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"log_item"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x40) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"log_pet"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x42) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"log_loginout"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x43) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agentmanagers"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x44) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agent"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x45) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"api"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x46) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"pvp"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x47) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"serveroption"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x48) = iVar2 == 1; } } } } } } } } } } LAB_14015cde9: plVar6 = *(longlong **)(lVar3 + 0x50); while( true ) { plVar7 = local_70; if (plVar6 == (longlong *)0x0) goto joined_r0x00014015ce23; lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); if (lVar3 != 0) break; plVar6 = (longlong *)plVar6[10]; } lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); goto joined_r0x00014015cbeb; LAB_14015ce56: while (lVar3 = (**(code **)(*plVar7 + 0x30))(plVar7), lVar3 == 0) { do { plVar7 = (longlong *)plVar7[10]; if (plVar7 == (longlong *)0x0) goto LAB_14015d22b; bVar11 = (char *)(plVar7[7] + 0x10) == (char *)0x0; lVar3 = 8; pcVar8 = (char *)(plVar7[7] + 0x10); pcVar9 = "connect"; do { if (lVar3 == 0) break; lVar3 = lVar3 + -1; bVar11 = *pcVar8 == *pcVar9; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } while (bVar11); } while (!bVar11); } lVar3 = (**(code **)(*plVar7 + 0x30))(plVar7); if (lVar3 != 0) { for (plVar6 = *(longlong **)(lVar3 + 0x28); plVar6 != (longlong *)0x0; plVar6 = (longlong *)plVar6[10]) { lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); if (lVar3 != 0) { lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); while (lVar3 != 0) { pcVar8 = (char *)(*(longlong *)(lVar3 + 0x38) + 0x10); if (pcVar8 != (char *)0x0) { for (lVar4 = *(longlong *)(lVar3 + 0xa0); lVar4 != lVar3 + 0x58; lVar4 = *(longlong *)(lVar4 + 0x48)) { pcVar9 = (char *)(*(longlong *)(lVar4 + 0x20) + 0x10); bVar11 = pcVar9 == (char *)0x0; lVar5 = 8; pcVar10 = "connect"; do { if (lVar5 == 0) break; lVar5 = lVar5 + -1; bVar11 = *pcVar9 == *pcVar10; pcVar9 = pcVar9 + 1; pcVar10 = pcVar10 + 1; } while (bVar11); if (bVar11) { pcVar9 = (char *)(*(longlong *)(lVar4 + 0x30) + 0x10); if (pcVar9 != (char *)0x0) { iVar2 = _stricmp(pcVar8,"dbc_game"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 8) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dbc_log"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 9) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dbc_chat"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 10) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dbc_emergency"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0xb) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"auction"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0xc) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"msg"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0xd) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"manager"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0xe) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"match"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0xf) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"gm"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x10) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"gate"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x11) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"lobby"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x12) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dungeon"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x13) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"pvp"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x14) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"guild"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x15) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agent"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x16) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agentmanager"); if (iVar2 == 0) { iVar2 = atoi(pcVar9); *(bool *)(param_1 + 0x17) = iVar2 == 1; } } } } } } } } } } } } } } } } } break; } } } plVar6 = *(longlong **)(lVar3 + 0x50); while( true ) { if (plVar6 == (longlong *)0x0) goto LAB_14015d22b; lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); if (lVar3 != 0) break; plVar6 = (longlong *)plVar6[10]; } lVar3 = (**(code **)(*plVar6 + 0x30))(plVar6); } break; } } } LAB_14015d22b: printf("//////////////////////////////////////////////////////////////////////////\n"); if (*(char *)(param_1 + 0x40) != '\0') { printf("LOGVIEWER Option [%d] - LogItem View.\n"); } if (*(char *)(param_1 + 0x41) != '\0') { printf("LOGVIEWER Option [%d] - LogAccount View.\n"); } if (*(char *)(param_1 + 0x44) != '\0') { printf("LOGVIEWER Option [%d] - LogAgentManagers View.\n"); } if (*(char *)(param_1 + 0x45) != '\0') { printf("LOGVIEWER Option [%d] - LogAgent View.\n"); } if (*(char *)(param_1 + 0x46) != '\0') { printf("LOGVIEWER Option [%d] - LogApi View.\n"); } if (*(char *)(param_1 + 0x47) != '\0') { printf("LOGVIEWER Option [%d] - LogPvp View.\n"); } if (*(char *)(param_1 + 0x48) != '\0') { printf("LOGVIEWER Option [%d] - LogServerOption View.\n"); } if (*(char *)(param_1 + 0x42) != '\0') { printf("LOGVIEWER Option [%d] - LogPet View.\n"); } if (*(char *)(param_1 + 8) != '\0') { printf("Connect Option [%d] - DBC_GAME. \n"); } if (*(char *)(param_1 + 9) != '\0') { printf("Connect Option [%d] - DBC_LOG. \n"); } if (*(char *)(param_1 + 0xc) != '\0') { printf("Connect Option [%d] - Auction. \n"); } if (*(char *)(param_1 + 0xd) != '\0') { printf("Connect Option [%d] - Msg. \n"); } if (*(char *)(param_1 + 0xe) != '\0') { printf("Connect Option [%d] - Manager. \n"); } if (*(char *)(param_1 + 0xf) != '\0') { printf("Connect Option [%d] - Match. \n"); } if (*(char *)(param_1 + 0x10) != '\0') { printf("Connect Option [%d] - Gm. \n"); } if (*(char *)(param_1 + 0x11) != '\0') { printf("Connect Option [%d] - Gate. \n"); } if (*(char *)(param_1 + 0x12) != '\0') { printf("Connect Option [%d] - Lobby. \n"); } if (*(char *)(param_1 + 0x13) != '\0') { printf("Connect Option [%d] - Dungeon. \n"); } if (*(char *)(param_1 + 0x14) != '\0') { printf("Connect Option [%d] - Pvp. \n"); } if (*(char *)(param_1 + 0x15) != '\0') { printf("Connect Option [%d] - Guild. \n"); } if (*(char *)(param_1 + 0x16) != '\0') { printf("Connect Option [%d] - Agent. \n"); } if (*(char *)(param_1 + 0x17) != '\0') { printf("Connect Option [%d] - AgentManager. \n"); } printf("//////////////////////////////////////////////////////////////////////////\n"); local_98[0] = TiXmlDocument::vftable; if (local_38 != &DAT_140352f70) { operator_delete__(local_30); } local_98[0] = TiXmlNode::vftable; while (local_70 != (longlong *)0x0) { plVar6 = (longlong *)local_70[10]; (**(code **)*local_70)(local_70,1); local_70 = plVar6; } if (local_60 != &DAT_140352f70) { operator_delete__(local_58); } return; }