LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/p2p.c
// Function: p2pTestMain
int p2pTestMain()
{
    p2pInit();

    p2pSetS( "test123", "string1" );
    p2pSetS( "test123", "string2" );
    p2pSetS( "test123", "string3" );
    p2pSetS( "test123", "string123" );
    printf("\n::%s::\n", p2pGetS( "test123", "default" ));

    p2pSetF( "test3210", 3.141 );
    p2pSetF( "test3210", 3.142 );
    p2pSetF( "test3210", 3.143 );
    p2pSetF( "test3210", 3.14 );
    printf("\n::%lf::\n", p2pGetF( "test321", 2.17 ));

    p2pDebugDump();

    return 0;
}

// Assembly:
pushq %rbx
callq 0x182c0
leaq 0x7637(%rip), %rbx      # 0x1f99a
leaq 0x7638(%rip), %rsi      # 0x1f9a2
movq %rbx, %rdi
callq 0x18108
leaq 0x7631(%rip), %rsi      # 0x1f9aa
movq %rbx, %rdi
callq 0x18108
leaq 0x762a(%rip), %rsi      # 0x1f9b2
movq %rbx, %rdi
callq 0x18108
leaq 0x7623(%rip), %rsi      # 0x1f9ba
movq %rbx, %rdi
callq 0x18108
leaq 0x83b1(%rip), %rsi      # 0x20757
movq %rbx, %rdi
callq 0x18256
leaq 0x760f(%rip), %rdi      # 0x1f9c4
leaq 0x21c5d4(%rip), %rsi    # 0x234990
xorl %eax, %eax
callq 0x8180
leaq 0x7603(%rip), %rbx      # 0x1f9cd
movsd 0x758e(%rip), %xmm0     # 0x1f960
movq %rbx, %rdi
callq 0x17f94
movsd 0x7586(%rip), %xmm0     # 0x1f968
movq %rbx, %rdi
callq 0x17f94
movsd 0x757e(%rip), %xmm0     # 0x1f970
movq %rbx, %rdi
callq 0x17f94
movsd 0x7576(%rip), %xmm0     # 0x1f978
movq %rbx, %rdi
callq 0x17f94
leaq 0x75cf(%rip), %rdi      # 0x1f9e0
movsd 0x7567(%rip), %xmm0     # 0x1f980
callq 0x18162
leaq 0x75b1(%rip), %rdi      # 0x1f9d6
movb $0x1, %al
callq 0x8180
callq 0x182fa
xorl %eax, %eax
popq %rbx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001InitConfig
int pit001InitConfig( void )
{
    cfsPtr cP;

    cP = cfsCreate( sissmGetConfigPath() );

    // read "pit001.pluginstate" variable from the .cfg file
    pit001Config.pluginState = (int) cfsFetchNum( cP, "pit001.pluginState", 0.0 );  // disabled by default

    // read "pit001.StringParameterExample" variable from the .cfg file
    strlcpy( pit001Config.stringParameterExample,  cfsFetchStr( cP, "pit001.StringParameterExample",  "game starting!" ), CFS_FETCH_MAX);
    strlcpy( pit001Config.stringParameterExample2, cfsFetchStr( cP, "pit001.StringParameterExample2", "round starting!" ), CFS_FETCH_MAX);
    strlcpy( pit001Config.stringParameterExample3, cfsFetchStr( cP, "pit001.StringParameterExample3", "to the next objective!" ), CFS_FETCH_MAX);

    // read "pit001.NumericParameterExample" variable from the .cfg file
    pit001Config.numericParameterExample = (int) cfsFetchNum( cP, "pit001.NumericParameterExample", 3.1415926 );

    cfsDestroy( cP );
    return 0;
}

// Assembly:
pushq %rbx
callq 0x8970
movq %rax, %rdi
callq 0x8ffc
movq %rax, %rbx
leaq 0x75e0(%rip), %rsi      # 0x1fa30
xorpd %xmm0, %xmm0
movq %rax, %rdi
callq 0x926a
cvttsd2si %xmm0, %eax
movl %eax, 0x21c5aa(%rip)    # 0x234a10
leaq 0x75d6(%rip), %rsi      # 0x1fa43
leaq 0x75ed(%rip), %rdx      # 0x1fa61
movq %rbx, %rdi
callq 0x9073
leaq 0x21c591(%rip), %rdi    # 0x234a14
movl $0x400, %edx            # imm = 0x400
movq %rax, %rsi
callq 0xf384
leaq 0x75d9(%rip), %rsi      # 0x1fa70
leaq 0x75f1(%rip), %rdx      # 0x1fa8f
movq %rbx, %rdi
callq 0x9073
leaq 0x21c967(%rip), %rdi    # 0x234e14
movl $0x400, %edx            # imm = 0x400
movq %rax, %rsi
callq 0xf384
leaq 0x75de(%rip), %rsi      # 0x1fa9f
leaq 0x75f6(%rip), %rdx      # 0x1fabe
movq %rbx, %rdi
callq 0x9073
leaq 0x21cd3d(%rip), %rdi    # 0x235214
movl $0x400, %edx            # imm = 0x400
movq %rax, %rsi
callq 0xf384
leaq 0x75ea(%rip), %rsi      # 0x1fad5
movsd 0x750d(%rip), %xmm0     # 0x1fa00
movq %rbx, %rdi
callq 0x926a
cvttsd2si %xmm0, %eax
movl %eax, 0x21d10f(%rip)    # 0x235614
movq %rbx, %rdi
callq 0x9054
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001ClientAddCB
int pit001ClientAddCB( char *strIn )
{
    char playerName[256], playerGUID[256], playerIP[256];

    rosterParsePlayerConn( strIn, 256, playerName, playerGUID, playerIP );
    logPrintf( LOG_LEVEL_INFO, "pit001", "Add Client ::%s::%s::%s::", playerName, playerGUID, playerIP );

    if ( apiPlayersGetCount() >= 8 ) {   // if the last connect player is #8 (last slot if 8 port server)
        if ( 0 != strcmp(playerGUID, "76561000000000000" )) {    // check if this is the server owner 
	    apiKickOrBan( 0, playerGUID, "Sorry the last port reserved for server owner only" );
            apiSay ( "pit001: Player %s kicked server full", playerName );
	}
        apiSay ( "pit001: Welcome server owner %s", playerName );
    }
    else {
        apiSay ( "pit001: Welcome %s", playerName );
    }

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x300, %rsp            # imm = 0x300
leaq 0x100(%rsp), %rbx
movq %rsp, %r14
leaq 0x200(%rsp), %r15
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x15427
leaq 0x75aa(%rip), %rsi      # 0x1faf4
leaq 0x7e21(%rip), %rdx      # 0x20372
movl $0x2, %edi
movq %rbx, %rcx
movq %r14, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0x1a3e3
callq 0x13853
cmpl $0x8, %eax
jl 0x185cd
movdqa (%rsp), %xmm0
movzwl 0x10(%rsp), %eax
movd %eax, %xmm1
pcmpeqb 0x748a(%rip), %xmm0     # 0x1fa10
pcmpeqb 0x7492(%rip), %xmm1     # 0x1fa20
pand %xmm0, %xmm1
pmovmskb %xmm1, %eax
leaq 0x75c8(%rip), %rbx      # 0x1fb65
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x185d4
leaq 0x7562(%rip), %rdx      # 0x1fb0d
movq %rsp, %rsi
xorl %edi, %edi
callq 0x13676
leaq 0x7584(%rip), %rdi      # 0x1fb40
leaq 0x100(%rsp), %rsi
xorl %eax, %eax
callq 0x13337
jmp 0x185d4
leaq 0x75b1(%rip), %rbx      # 0x1fb85
leaq 0x100(%rsp), %rsi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001ClientDelCB
int pit001ClientDelCB( char *strIn )
{
    char playerName[256], playerGUID[256], playerIP[256];

    rosterParsePlayerDisConn( strIn, 256, playerName, playerGUID, playerIP );
    logPrintf( LOG_LEVEL_INFO, "pit001", "Del Client ::%s::%s::%s::", playerName, playerGUID, playerIP );

    apiSay ( "pit001: Good bye %s", playerName );

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x300, %rsp            # imm = 0x300
leaq 0x200(%rsp), %rbx
leaq 0x100(%rsp), %r14
movq %rsp, %r15
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x154b3
leaq 0x74c6(%rip), %rsi      # 0x1faf4
leaq 0x7563(%rip), %rdx      # 0x1fb98
movl $0x2, %edi
movq %rbx, %rcx
movq %r14, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0x1a3e3
leaq 0x7561(%rip), %rdi      # 0x1fbb2
movq %rbx, %rsi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001MapChangeCB
int pit001MapChangeCB( char *strIn )
{
    char mapName[256];

    logPrintf( LOG_LEVEL_INFO, "pit001", "Map Change Event ::%s::", strIn );
    rosterParseMapname( strIn, 256, mapName );
    logPrintf( LOG_LEVEL_INFO, "pit001", "Map name ::%s::", mapName );
    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movq %rdi, %rbx
leaq 0x7430(%rip), %r14      # 0x1faf4
leaq 0x7522(%rip), %rdx      # 0x1fbed
movl $0x2, %edi
movq %r14, %rsi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x1a3e3
movq %rsp, %r15
movq %rbx, %rdi
movl $0x100, %esi            # imm = 0x100
movq %r15, %rdx
callq 0x15720
leaq 0x750e(%rip), %rdx      # 0x1fc05
movl $0x2, %edi
movq %r14, %rsi
movq %r15, %rcx
xorl %eax, %eax
callq 0x1a3e3
xorl %eax, %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001GameStartCB
int pit001GameStartCB( char *strIn )
{
    char newCount[256];

    logPrintf( LOG_LEVEL_INFO, "pit001", "Game Start Event ::%s::", strIn );

    apiGameModePropertySet( "minimumenemies", "4" );
    apiGameModePropertySet( "maximumenemies", "4" );

    strlcpy( newCount, apiGameModePropertyGet( "minimumenemies" ), 256) ;

    // in-game announcement start of game
    apiSay( "pit001: %s -- 2 waves of %s bots", pit001Config.stringParameterExample, newCount );  

    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, %rcx
leaq 0x73c8(%rip), %rsi      # 0x1faf4
leaq 0x74e2(%rip), %rdx      # 0x1fc15
movl $0x2, %edi
xorl %eax, %eax
callq 0x1a3e3
leaq 0x32f5(%rip), %rbx      # 0x1ba3b
leaq 0x6fca(%rip), %r14      # 0x1f717
movq %rbx, %rdi
movq %r14, %rsi
callq 0x131ed
leaq 0x32eb(%rip), %rdi      # 0x1ba4a
movq %r14, %rsi
callq 0x131ed
movq %rbx, %rdi
callq 0x131f2
movq %rsp, %rbx
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
movq %rax, %rsi
callq 0xf384
leaq 0x74a4(%rip), %rdi      # 0x1fc2d
leaq 0x21c284(%rip), %rsi    # 0x234a14
movq %rbx, %rdx
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001CapturedCB
int pit001CapturedCB( char *strIn )
{
    static unsigned long int lastTimeCaptured = 0L;
    // logPrintf( LOG_LEVEL_INFO, "pit001", "Captured Objective Event ::%s::", strIn );
    logPrintf( LOG_LEVEL_INFO, "pit001", "Captured Objective Event" );

    // system generates multiple 'captured' report, so it is necessary
    // to add a 10-second window filter to make sure only one gets fired off.
    //
    if ( lastTimeCaptured + 10L < apiTimeGet() ) {

	apiSay( pit001Config.stringParameterExample3 );
        lastTimeCaptured = apiTimeGet();
	// apiServerRestart();

    }

    return 0;
}

// Assembly:
pushq %rbx
leaq 0x72b5(%rip), %rsi      # 0x1faf4
leaq 0x745e(%rip), %rdx      # 0x1fca4
movl $0x2, %edi
xorl %eax, %eax
callq 0x1a3e3
movq 0x21cdbf(%rip), %rbx    # 0x235618
addq $0xa, %rbx
callq 0x117c0
cmpq %rax, %rbx
jae 0x18881
leaq 0x21c9a6(%rip), %rdi    # 0x235214
xorl %eax, %eax
callq 0x13337
callq 0x117c0
movq %rax, 0x21cd97(%rip)    # 0x235618
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001ClientSynthDelCB
int pit001ClientSynthDelCB( char *strIn )
{
    static char playerName[256], playerGUID[256], playerIP[256];

    rosterParsePlayerSynthDisConn( strIn, 256, playerName, playerGUID, playerIP );
    logPrintf( LOG_LEVEL_INFO, "pit001", "Synthetic DEL Callback Name ::%s:: IP ::%s:: GUID ::%s::", playerName, playerIP, playerGUID );
    apiSay( "pit001: Disconnect %s", playerName );

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
leaq 0x21cd4b(%rip), %rbx    # 0x235620
leaq 0x21ce44(%rip), %r14    # 0x235720
leaq 0x21cf3d(%rip), %r15    # 0x235820
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x15362
leaq 0x71f7(%rip), %rsi      # 0x1faf4
leaq 0x73eb(%rip), %rdx      # 0x1fcef
movl $0x2, %edi
movq %rbx, %rcx
movq %r15, %r8
movq %r14, %r9
xorl %eax, %eax
callq 0x1a3e3
leaq 0x7408(%rip), %rdi      # 0x1fd28
movq %rbx, %rsi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001ClientSynthAddCB
int pit001ClientSynthAddCB( char *strIn )
{
    static char playerName[256], playerGUID[256], playerIP[256];

    rosterParsePlayerSynthConn( strIn, 256, playerName, playerGUID, playerIP );
    logPrintf( LOG_LEVEL_INFO, "pit001", "Synthetic ADD Callback Name ::%s:: IP ::%s:: GUID ::%s::", playerName, playerIP, playerGUID );
    apiSay( "pit001: Connected %s", playerName );

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
leaq 0x21cfe2(%rip), %rbx    # 0x235920
leaq 0x21d0db(%rip), %r14    # 0x235a20
leaq 0x21d1d4(%rip), %r15    # 0x235b20
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x1526b
leaq 0x718e(%rip), %rsi      # 0x1faf4
leaq 0x73d1(%rip), %rdx      # 0x1fd3e
movl $0x2, %edi
movq %rbx, %rcx
movq %r15, %r8
movq %r14, %r9
xorl %eax, %eax
callq 0x1a3e3
leaq 0x73ee(%rip), %rdi      # 0x1fd77
movq %rbx, %rsi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001WinLose
int pit001WinLose( char *strIn )
{
    int isTeam0, humanSide;
    char outStr[256];

    humanSide = rosterGetCoopSide();
    isTeam0   = (NULL != strstr( strIn, "Team 0" ));

    switch ( humanSide ) {
    case 0:
        if ( !isTeam0 ) strlcpy( outStr, "Co-op Humans Win", 256 );
        break;
    case 1:
        if (  isTeam0 ) strlcpy( outStr, "Co-opHumans Lose", 256 );
        break;
    default:
        strlcpy( outStr, "PvP WinLose", 256 );
        break;
    }

    apiSay( "pit001: %s", outStr );
    logPrintf( LOG_LEVEL_INFO, "pit001", outStr );

    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, %r14
callq 0x1459b
movl %eax, %ebx
leaq 0x73aa(%rip), %rsi      # 0x1fda1
movq %r14, %rdi
callq 0x83b0
cmpl $0x1, %ebx
je 0x18a16
testl %ebx, %ebx
jne 0x18a2d
testq %rax, %rax
jne 0x18a43
movups 0x7394(%rip), %xmm0     # 0x1fda8
jmp 0x18a22
testq %rax, %rax
je 0x18a43
movups 0x7397(%rip), %xmm0     # 0x1fdb9
movaps %xmm0, (%rsp)
movb $0x0, 0x10(%rsp)
jmp 0x18a43
movabsq $0x4c6e695720507650, %rax # imm = 0x4C6E695720507650
movq %rax, (%rsp)
movl $0x65736f, 0x8(%rsp)    # imm = 0x65736F
leaq 0x738c(%rip), %rdi      # 0x1fdd6
movq %rsp, %rbx
movq %rbx, %rsi
xorl %eax, %eax
callq 0x13337
leaq 0x7096(%rip), %rsi      # 0x1faf4
movl $0x2, %edi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x1a3e3
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001Travel
int pit001Travel( char *strIn )
{
    char *mapName, *scenario, *mutator;
    int humanSide;

    mapName = rosterGetMapName();
    scenario = rosterGetScenario();
    mutator = rosterGetMutator();
    humanSide = rosterGetCoopSide();

    logPrintf( LOG_LEVEL_INFO, "pit001", "Change map to ::%s:: Scenario ::%s:: Mutator ::%s:: Human ::%d::", 
        mapName, scenario, mutator, humanSide );
    apiSay( "pit001: Test Map-Scenario %s::%s::%s::%d::", mapName, scenario, mutator, humanSide );

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
callq 0x1457f
movq %rax, %rbx
callq 0x14711
movq %rax, %r14
callq 0x14739
movq %rax, %r15
callq 0x1459b
movl %eax, %ebp
movl %eax, (%rsp)
leaq 0x704a(%rip), %rsi      # 0x1faf4
leaq 0x7330(%rip), %rdx      # 0x1fde1
movl $0x2, %edi
movq %rbx, %rcx
movq %r14, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0x1a3e3
leaq 0x7355(%rip), %rdi      # 0x1fe22
movq %rbx, %rsi
movq %r14, %rdx
movq %r15, %rcx
movl %ebp, %r8d
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001SessionLog
int pit001SessionLog( char *strIn )
{
    char *sessionID;

    sessionID = rosterGetSessionID();

    logPrintf( LOG_LEVEL_INFO, "pit001", "Session ID ::%s::", sessionID );
    apiSay( "pit001: Session ID %s", sessionID );

    return 0;
}

// Assembly:
pushq %rbx
callq 0x14526
movq %rax, %rbx
leaq 0x6ff7(%rip), %rsi      # 0x1faf4
leaq 0x7349(%rip), %rdx      # 0x1fe4d
movl $0x2, %edi
movq %rax, %rcx
xorl %eax, %eax
callq 0x1a3e3
leaq 0x7345(%rip), %rdi      # 0x1fe5f
movq %rbx, %rsi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pit001.c
// Function: pit001ObjectSynth
int pit001ObjectSynth( char *strIn )
{
    char *obj, *typ; 

    obj = rosterGetObjective();
    typ = rosterGetObjectiveType();

    logPrintf( LOG_LEVEL_INFO, "pit001", "Roster Objective is ::%s::, Type is ::%s::", obj, typ ); 
    apiSay( "pit001: Roster Objective is ::%s::, Type is ::%s::", obj, typ ); 

    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
callq 0x1455b
movq %rax, %rbx
callq 0x14563
movq %rax, %r14
leaq 0x6fb1(%rip), %rsi      # 0x1faf4
leaq 0x7333(%rip), %rdx      # 0x1fe7d
movl $0x2, %edi
movq %rbx, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x1a3e3
leaq 0x7312(%rip), %rdi      # 0x1fe75
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: pigreetingsClientSynthDelCB
int pigreetingsClientSynthDelCB( char *strIn )
{
    char playerName[256], playerGUID[256], playerIP[256];


    rosterParsePlayerSynthDisConn( strIn, 256, playerName, playerGUID, playerIP );
    // rosterParsePlayerDisConn( strIn, playerName, playerGUID, playerIP );
    // logPrintf( LOG_LEVEL_CRITICAL, "pigreetings", "SynDel Raw ::%s::", strIn );
    logPrintf( LOG_LEVEL_CRITICAL, "pigreetings", "SynDel Client ::%s:: GUID ::%s:: IP ::%s::", playerName, playerGUID, playerIP );
    // 
    if (!_isIncognito( playerGUID ) && !_isMaskDisconnect() ) {
        if ( 0 != strlen( pigreetingsConfig.disconnected ) ) 
            apiSay( "%s%s%s %s [%d]", 
                pigreetingsConfig.disconnectedPrefix,
                playerName, 
                pigreetingsConfig.disconnectedPostfix,
                pigreetingsConfig.disconnected, apiPlayersGetCount() );
        logPrintf( LOG_LEVEL_CRITICAL, "pigreetings", "%s disconnected [%d]", playerName, apiPlayersGetCount() );
    }

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x300, %rsp            # imm = 0x300
movq %rsp, %rbx
leaq 0x200(%rsp), %r14
leaq 0x100(%rsp), %r15
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x15362
leaq 0x6f24(%rip), %rsi      # 0x20314
leaq 0x6f29(%rip), %rdx      # 0x20320
xorl %edi, %edi
movq %rbx, %rcx
movq %r14, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0x1a3e3
leaq 0x22202c(%rip), %rdi    # 0x23b43c
movq %r14, %rsi
callq 0x83b0
testq %rax, %rax
jne 0x19497
cmpl $0x0, 0x21c804(%rip)    # 0x235c28
je 0x1943e
callq 0x117c0
subq 0x22541e(%rip), %rax    # 0x23e850
movslq 0x21c7ef(%rip), %rcx    # 0x235c28
cmpq %rcx, %rax
jb 0x19497
cmpb $0x0, 0x222bf7(%rip)    # 0x23c03c
je 0x19475
callq 0x13853
leaq 0x6ef8(%rip), %rdi      # 0x2034b
leaq 0x223fe2(%rip), %rsi    # 0x23d43c
leaq 0x2243db(%rip), %rcx    # 0x23d83c
leaq 0x222bd4(%rip), %r8     # 0x23c03c
movq %rsp, %rdx
movl %eax, %r9d
xorl %eax, %eax
callq 0x13337
callq 0x13853
leaq 0x6e93(%rip), %rsi      # 0x20314
leaq 0x6ed2(%rip), %rdx      # 0x2035a
movq %rsp, %rcx
xorl %edi, %edi
movl %eax, %r8d
xorl %eax, %eax
callq 0x1a3e3
xorl %eax, %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: pigreetingsClientSynthAddCB
int pigreetingsClientSynthAddCB( char *strIn )
{
    char playerName[256], playerGUID[256], playerIP[256];

    rosterParsePlayerSynthConn( strIn, 256, playerName, playerGUID, playerIP );
    if (!_isIncognito( playerGUID )) {
        if ( (apiTimeGet() - timeRestarted) > PIGREETINGS_RESTART_LOCKOUT_SEC ) {   // check if we are restarting
       
           if  ( apiIsAdmin( playerGUID ) && (0 != strlen( pigreetingsConfig.connectedAsAdmin)) ) 
               apiSay( "%s%s%s %s [%d]", 
                    pigreetingsConfig.connectedAsAdminPrefix,
                    playerName, 
                    pigreetingsConfig.connectedAsAdminPostfix,
                    pigreetingsConfig.connectedAsAdmin, apiPlayersGetCount() );
           else if ( 0 != strlen( pigreetingsConfig.connected ))
               apiSay( "%s%s%s %s [%d]", 
                    pigreetingsConfig.connectedPrefix,
                    playerName, 
                    pigreetingsConfig.connectedPostfix,
                    pigreetingsConfig.connected, apiPlayersGetCount() );
        }
        logPrintf( LOG_LEVEL_CRITICAL, "pigreetings", "SynAdd Client ::%s::%s::%s::", playerName, playerGUID, playerIP );
    }
    else {
        logPrintf( LOG_LEVEL_CRITICAL, "pigreetings", "SynAdd Client [incognito] ::%s::%s::%s::", playerName, playerGUID, playerIP );
    }
    return 0;
}

// Assembly:
pushq %rbx
subq $0x300, %rsp            # imm = 0x300
movq %rsp, %rdx
leaq 0x100(%rsp), %rbx
leaq 0x200(%rsp), %r8
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rcx
callq 0x1526b
leaq 0x221f67(%rip), %rdi    # 0x23b43c
movq %rbx, %rsi
callq 0x83b0
testq %rax, %rax
je 0x194ee
leaq 0x6ea3(%rip), %rbx      # 0x2038c
jmp 0x1957b
callq 0x117c0
subq 0x225346(%rip), %rax    # 0x23e840
leaq 0x6e6e(%rip), %rbx      # 0x2036f
cmpq $0x1f, %rax
jb 0x1957b
leaq 0x100(%rsp), %rdi
callq 0x13db5
testl %eax, %eax
je 0x19544
cmpb $0x0, 0x22271d(%rip)    # 0x23bc3c
je 0x19544
callq 0x13853
leaq 0x6e1e(%rip), %rdi      # 0x2034b
leaq 0x223708(%rip), %rsi    # 0x23cc3c
leaq 0x223b01(%rip), %rcx    # 0x23d03c
leaq 0x2226fa(%rip), %r8     # 0x23bc3c
jmp 0x1956e
cmpb $0x0, 0x2222f1(%rip)    # 0x23b83c
je 0x1957b
callq 0x13853
leaq 0x6df2(%rip), %rdi      # 0x2034b
leaq 0x222edc(%rip), %rsi    # 0x23c43c
leaq 0x2232d5(%rip), %rcx    # 0x23c83c
leaq 0x2222ce(%rip), %r8     # 0x23b83c
movq %rsp, %rdx
movl %eax, %r9d
xorl %eax, %eax
callq 0x13337
leaq 0x6d92(%rip), %rsi      # 0x20314
movq %rsp, %rcx
leaq 0x100(%rsp), %r8
leaq 0x200(%rsp), %r9
xorl %edi, %edi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x1a3e3
xorl %eax, %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: pigreetingsRoundStartCB
int pigreetingsRoundStartCB( char *strIn )
{
    if ( 0 != strlen(pigreetingsConfig.serverGreetings[0] )) 
        apiSay( "%s", pigreetingsConfig.serverGreetings[0] );
    if ( 0 != strlen(pigreetingsConfig.serverGreetings[1] )) 
        apiSay( "%s", pigreetingsConfig.serverGreetings[1] );

    // start the 'ads' periodic printing service
    //
    if ( 0 != pigreetingsConfig.adsDelay )
        alarmReset( alarmAds, pigreetingsConfig.adsDelay );

    return 0;
}

// Assembly:
pushq %rax
cmpb $0x0, 0x21c679(%rip)    # 0x235c3c
je 0x195da
leaq 0x56a0(%rip), %rdi      # 0x1ec6c
leaq 0x21c669(%rip), %rsi    # 0x235c3c
xorl %eax, %eax
callq 0x13337
cmpb $0x0, 0x21ca5b(%rip)    # 0x23603c
je 0x195f8
leaq 0x5682(%rip), %rdi      # 0x1ec6c
leaq 0x21ca4b(%rip), %rsi    # 0x23603c
xorl %eax, %eax
callq 0x13337
movslq 0x21c635(%rip), %rsi    # 0x235c34
testq %rsi, %rsi
je 0x19610
movq 0x22523d(%rip), %rdi    # 0x23e848
callq 0xfc98
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: pigreetingsRoundEndCB
int pigreetingsRoundEndCB( char *strIn )
{
    // cancel the 'ads' alarm
    //
    alarmCancel( alarmAds );
    lastRoundEndTime = apiTimeGet();
    logPrintf( LOG_LEVEL_INFO, "pigreetings", "Round End Event" );
    // apiSay("pigreeting Test: End of Round");
    return 0;
}

// Assembly:
pushq %rax
movq 0x22522c(%rip), %rdi    # 0x23e848
callq 0xfcb9
callq 0x117c0
movq %rax, 0x225223(%rip)    # 0x23e850
leaq 0x6ce0(%rip), %rsi      # 0x20314
leaq 0x6d7a(%rip), %rdx      # 0x203b5
movl $0x2, %edi
xorl %eax, %eax
callq 0x1a3e3
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: pigreetingsCapturedCB
int pigreetingsCapturedCB( char *strIn )
{
    static unsigned long int lastTimeCaptured = 0L;
    static int lastIndex = 0;

    // only display rules when enabled (commonly disabled for private servers
    //
    if ( pigreetingsConfig.showRules ) {

        // system generates multiple 'captured' report, so it is necessary
        // to add a 10-second window filter to make sure only one gets fired off.
        //
        if ( lastTimeCaptured + 10L < apiTimeGet() ) {
            if ( 0 != strlen(pigreetingsConfig.serverRules[lastIndex] )) 
                apiSay( "%s", pigreetingsConfig.serverRules[lastIndex] );
	    lastIndex = ( lastIndex + 1 ) % 10;
            lastTimeCaptured = apiTimeGet();
        }
    }

    // start the 'ads' periodic printing service
    //
    if ( 0 != pigreetingsConfig.adsDelay )
        alarmReset( alarmAds, pigreetingsConfig.adsDelay );

    return 0;
}

// Assembly:
pushq %rbx
cmpl $0x0, 0x21c5d9(%rip)    # 0x235c2c
je 0x196cf
movq 0x2251fc(%rip), %rbx    # 0x23e858
addq $0xa, %rbx
callq 0x117c0
cmpq %rax, %rbx
jae 0x196cf
movl 0x2251f0(%rip), %eax    # 0x23e860
movq %rax, %rcx
shlq $0xa, %rcx
leaq 0x21c5a2(%rip), %rdx    # 0x235c20
cmpb $0x0, 0x81c(%rcx,%rdx)
je 0x196a7
leaq (%rcx,%rdx), %rsi
addq $0x81c, %rsi            # imm = 0x81C
leaq 0x55d2(%rip), %rdi      # 0x1ec6c
xorl %eax, %eax
callq 0x13337
movl 0x2251b9(%rip), %eax    # 0x23e860
incl %eax
movl $0xcccccccd, %ecx       # imm = 0xCCCCCCCD
imulq %rax, %rcx
shrq $0x23, %rcx
addl %ecx, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
movl %eax, 0x22519d(%rip)    # 0x23e860
callq 0x117c0
movq %rax, 0x225189(%rip)    # 0x23e858
movslq 0x21c55e(%rip), %rsi    # 0x235c34
testq %rsi, %rsi
je 0x196e7
movq 0x225166(%rip), %rdi    # 0x23e848
callq 0xfc98
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: pigreetingsWinLoseCB
int pigreetingsWinLoseCB( char *strIn )
{
    int isTeam0, humanSide;
    char outStr[256];

    humanSide = rosterGetCoopSide();
    isTeam0   = (NULL != strstr( strIn, "Team 0" ));
    strlcpy( outStr, pigreetingsConfig.roundWinMsg, 256 );

    switch ( humanSide ) {
    case 0: 
        if ( !isTeam0 ) strlcpy( outStr, pigreetingsConfig.roundLoseMsg, 256 );
        break;
    case 1:
        if (  isTeam0 ) strlcpy( outStr, pigreetingsConfig.roundLoseMsg, 256 );
        break;
    default:
        strlcpy( outStr, pigreetingsConfig.roundPvPMsg, 256 );
        break;
    }

    apiSay( outStr );

    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, %r14
callq 0x1459b
movl %eax, %ebx
leaq 0x6698(%rip), %rsi      # 0x1fda1
movq %r14, %rdi
callq 0x83b0
movq %rax, %r14
leaq 0x224921(%rip), %rsi    # 0x23e03c
movq %rsp, %rdi
movl $0x100, %edx            # imm = 0x100
callq 0xf384
cmpl $0x1, %ebx
je 0x19738
testl %ebx, %ebx
jne 0x19746
testq %r14, %r14
jne 0x1975a
jmp 0x1973d
testq %r14, %r14
je 0x1975a
leaq 0x2244f8(%rip), %rsi    # 0x23dc3c
jmp 0x1974d
leaq 0x224cef(%rip), %rsi    # 0x23e43c
movq %rsp, %rdi
movl $0x100, %edx            # imm = 0x100
callq 0xf384
movq %rsp, %rdi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: pigreetingsAlarmCB
int pigreetingsAlarmCB( char *alarmMsg )
{
    static int lastIndex = 0;

    if ( 0 != pigreetingsConfig.adsInterval )
        alarmReset( alarmAds, (unsigned long) pigreetingsConfig.adsInterval );

    // only display rules when enabled (commonly disabled for private servers
    //
    if ( pigreetingsConfig.showAds ) {
        if ( 0 != strlen(pigreetingsConfig.serverAds[lastIndex] )) 
            apiSay( "%s", pigreetingsConfig.serverAds[lastIndex] );
        lastIndex = ( lastIndex + 1 ) % 10;
    }
    return 0;
}

// Assembly:
pushq %rax
movslq 0x21c4bf(%rip), %rsi    # 0x235c38
testq %rsi, %rsi
je 0x1978a
movq 0x2250c3(%rip), %rdi    # 0x23e848
callq 0xfc98
cmpl $0x0, 0x21c49f(%rip)    # 0x235c30
je 0x197ec
movl 0x2250cb(%rip), %eax    # 0x23e864
movq %rax, %rcx
shlq $0xa, %rcx
leaq 0x21c479(%rip), %rdx    # 0x235c20
cmpb $0x0, 0x301c(%rcx,%rdx)
je 0x197d0
leaq (%rcx,%rdx), %rsi
addq $0x301c, %rsi           # imm = 0x301C
leaq 0x54a9(%rip), %rdi      # 0x1ec6c
xorl %eax, %eax
callq 0x13337
movl 0x225094(%rip), %eax    # 0x23e864
incl %eax
movl $0xcccccccd, %ecx       # imm = 0xCCCCCCCD
imulq %rax, %rcx
shrq $0x23, %rcx
addl %ecx, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
movl %eax, 0x225078(%rip)    # 0x23e864
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayClientSynthDelCB
int pigatewayClientSynthDelCB( char *strIn )
{
    // if there are no players, unlock the server
    //
    if ( 0 == apiPlayersGetCount() ) {
        // Unlcok the server - restore to normal operation
        // Do not unlock if the variable state is "perm" (=2L) 
        // 
        if ( ( 0 == pigatewayConfig.lockServerOnIdle ) && ( 1L == p2pGetL( "pigateway.p2p.lockOut", 0L ) )) {
            p2pSetL( "pigateway.p2p.lockOut", 0L );
            apiSaySys( "Unlocking the server due to zero players" );
            logPrintf( LOG_LEVEL_INFO, "pigateway", "Unlocking the server due to zero players DelCB" );
        }
    }
    return 0;
}

// Assembly:
pushq %rax
callq 0x13853
orl 0x2251e1(%rip), %eax    # 0x23f078
jne 0x19ee3
leaq 0x18de(%rip), %rdi      # 0x1b77e
xorl %esi, %esi
callq 0x181e1
cmpq $0x1, %rax
jne 0x19ee3
leaq 0x18ca(%rip), %rdi      # 0x1b77e
xorl %esi, %esi
callq 0x180a5
leaq 0x681f(%rip), %rdi      # 0x206e1
xorl %eax, %eax
callq 0x134e5
leaq 0x6510(%rip), %rsi      # 0x203e0
leaq 0x6833(%rip), %rdx      # 0x2070a
movl $0x2, %edi
xorl %eax, %eax
callq 0x1a3e3
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayRoundStartCB
int pigatewayRoundStartCB( char *strIn )
{
    if ( 1L ==  p2pGetL( "pigateway.p2p.lockOut", 0L )) {
        apiSay( "REMINDER: Server is locked by Access Control." );
    }
    else if ( 2L ==  p2pGetL( "pigateway.p2p.lockOut", 0L )) {
        apiSay( "!!Server PERM-LOCKED by Access Control!!" );
    }
    else if ( 3L ==  p2pGetL( "pigateway.p2p.lockOut", 0L )) {
        apiSay( "!!Server PERM-LOCKED by Clan List!!" );
    }

    return 0;
}

// Assembly:
pushq %rax
leaq 0x17dd(%rip), %rdi      # 0x1b77e
xorl %esi, %esi
callq 0x181e1
cmpq $0x1, %rax
jne 0x19fb7
leaq 0x67e9(%rip), %rdi      # 0x2079e
jmp 0x19fef
leaq 0x17c0(%rip), %rdi      # 0x1b77e
xorl %esi, %esi
callq 0x181e1
cmpq $0x2, %rax
jne 0x19fd4
leaq 0x67fa(%rip), %rdi      # 0x207cc
jmp 0x19fef
leaq 0x17a3(%rip), %rdi      # 0x1b77e
xorl %esi, %esi
callq 0x181e1
cmpq $0x3, %rax
jne 0x19ff6
leaq 0x6806(%rip), %rdi      # 0x207f5
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayCapturedCB
int pigatewayCapturedCB( char *strIn )
{
    static char rosterBuf[ PIGATEWAY_MAXROSTER ];
    char   *w;
    int    i, myLen;
    char   name[256], guid[256];

    if ( pigatewayConfig.minPlayerNameLength > 0 ) {

        strlcpy( rosterBuf, apiPlayersRoster( 1, "\011" ), PIGATEWAY_MAXROSTER );
 
        for ( i=0 ; ; i++ ){
            w = getWord( rosterBuf, i, "\011" );  // Fetch one player: "abcd[76560000000000005]"
            if ( w == NULL ) break;

            myLen = (int) strlen( w );
            if ( myLen == 0 ) break;

            if ( myLen < (PIGATEWAY_STEAMIDLEN + 2 + pigatewayConfig.minPlayerNameLength) ) {

                strlcpy( name, w, myLen-( PIGATEWAY_STEAMIDLEN+2)+1 );
                strlcpy( guid, & w[ strlen( name ) + 1], PIGATEWAY_STEAMIDLEN+1 );
            
                apiKickOrBan( 0, guid,  pigatewayConfig.minPlayerNameMsg ); 
                logPrintf( LOG_LEVEL_INFO, "pigateway", "Short Name Auto-kick ::%s::%s", name, guid );

            }
        }
    }
    return 0;
}

// Assembly:
cmpl $0x0, 0x225080(%rip)    # 0x23f084
jle 0x1a124
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
leaq 0x4a10(%rip), %r14      # 0x1ea32
movl $0x1, %ebx
movl $0x1, %edi
movq %r14, %rsi
callq 0x13858
leaq 0x225b75(%rip), %r15    # 0x23fbb0
movl $0x4000, %edx           # imm = 0x4000
movq %r15, %rdi
movq %rax, %rsi
callq 0xf384
movq %r15, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0xf82d
testq %rax, %rax
je 0x1a113
movq %rax, %rbp
leaq 0x100(%rsp), %r14
movq %rsp, %r15
leaq 0x225b3a(%rip), %r12    # 0x23fbb0
leaq 0x49b5(%rip), %r13      # 0x1ea32
movq %rbp, %rdi
callq 0x8120
testl %eax, %eax
je 0x1a113
movl 0x224ff1(%rip), %ecx    # 0x23f084
addl $0x13, %ecx
cmpl %eax, %ecx
jle 0x1a0f8
addl $-0x12, %eax
movslq %eax, %rdx
movq %r14, %rdi
movq %rbp, %rsi
callq 0xf384
movq %r14, %rdi
callq 0x8120
leaq (%rax,%rbp), %rsi
incq %rsi
movl $0x12, %edx
movq %r15, %rdi
callq 0xf384
xorl %edi, %edi
movq %r15, %rsi
leaq 0x224fb5(%rip), %rdx    # 0x23f088
callq 0x13676
movl $0x2, %edi
leaq 0x62fc(%rip), %rsi      # 0x203e0
leaq 0x672e(%rip), %rdx      # 0x20819
movq %r14, %rcx
movq %r15, %r8
xorl %eax, %eax
callq 0x1a3e3
movq %r12, %rdi
movl %ebx, %esi
movq %r13, %rdx
callq 0xf82d
movq %rax, %rbp
incl %ebx
testq %rax, %rax
jne 0x1a07d
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayPeriodicCB
int pigatewayPeriodicCB( char *strIn )
{
    static int tenSecondPolling = 0;

    if ( ++tenSecondPolling > 10 ) {
        // This is a redundant, safety code duplicated from DelCB callback.
        // if there are no players, unlock the server
        //
        tenSecondPolling = 0;
        if ( 0 == apiPlayersGetCount() ) {
            if ( pigatewayConfig.lockServerOnIdle )  {
                // Lcok the server when no players are present 
                //
                apiClanClear();
                p2pSetL( "pigateway.p2p.lockOut", 2L );
                // apiSaySys( "Unlocking the server due to zero players" );
                logPrintf( LOG_LEVEL_DEBUG, "pigateway", "Continue locking the empty server due to default in PeriodicCB " );
            } 
            else {
                // Unlock the server - restore to normal operation
                //
                logPrintf( LOG_LEVEL_DEBUG, "pigateway", "Unlocking the server due to zero players at PeriodicCB " );
                apiClanClear();
                p2pSetL( "pigateway.p2p.lockOut", 0L );
                // apiSaySys( "Unlocking the server due to zero players" );
                logPrintf( LOG_LEVEL_DEBUG, "pigateway", "Clanlist cleared on empty server @ periodic loop" );
            }
        }
    }

    return 0;
}

// Assembly:
movl 0x229a83(%rip), %eax    # 0x243bb0
leal 0x1(%rax), %ecx
movl %ecx, 0x229a7a(%rip)    # 0x243bb0
cmpl $0xa, %eax
jl 0x1a1c3
pushq %r14
pushq %rbx
pushq %rax
movl $0x0, 0x229a63(%rip)    # 0x243bb0
callq 0x13853
testl %eax, %eax
jne 0x1a1bc
cmpl $0x0, 0x224f1b(%rip)    # 0x23f078
je 0x1a16e
leaq 0x66d1(%rip), %rbx      # 0x20837
movl $0x2, %r14d
jmp 0x1a192
leaq 0x626b(%rip), %rsi      # 0x203e0
leaq 0x66fb(%rip), %rdx      # 0x20877
xorl %r14d, %r14d
movl $0x3, %edi
xorl %eax, %eax
callq 0x1a3e3
leaq 0x671d(%rip), %rbx      # 0x208af
callq 0x142c5
leaq 0x15e0(%rip), %rdi      # 0x1b77e
movq %r14, %rsi
callq 0x180a5
leaq 0x6233(%rip), %rsi      # 0x203e0
movl $0x3, %edi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x1a3e3
addq $0x8, %rsp
popq %rbx
popq %r14
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayChatCB
int pigatewayChatCB( char *strIn )
{
    char clientID[512], chatLine[512], *w;
    int errCode, i = 0;

    if ( 0 != strlen( pigatewayConfig.chatTrollWords ) ) {
        if ( 0 == (errCode = rosterParsePlayerChat( strIn, 512, clientID, chatLine ))) {
            while (1 == 1 ) {
               w = getWord( pigatewayConfig.chatTrollWords, i++, " " );
               if ( w == NULL ) break;
               if ( 0 == strlen( w ) ) break;
               if (NULL != strcasestr( chatLine, w )) {
                    apiKickOrBan( 0, clientID, "Troll Detect: Generating Report" );
                    logPrintf( LOG_LEVEL_INFO, "pigateway", "Troll Detect Auto-kick ::%s::'%s'", clientID, chatLine );
               }
            }
        }
    }
    return 0;
}

// Assembly:
cmpb $0x0, 0x2252bb(%rip)    # 0x23f488
je 0x1a20a
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x408, %rsp            # imm = 0x408
leaq 0x200(%rsp), %rdx
movq %rsp, %rcx
movl $0x200, %esi            # imm = 0x200
callq 0x1554c
testl %eax, %eax
je 0x1a20d
addq $0x408, %rsp            # imm = 0x408
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
leaq 0x225274(%rip), %rdi    # 0x23f488
leaq 0x1f33(%rip), %rdx      # 0x1c14e
xorl %esi, %esi
callq 0xf82d
testq %rax, %rax
je 0x1a1f9
movl $0x1, %ebp
movq %rsp, %rbx
leaq 0x225252(%rip), %r14    # 0x23f488
leaq 0x1f11(%rip), %r15      # 0x1c14e
leaq 0x200(%rsp), %r13
cmpb $0x0, (%rax)
je 0x1a1f9
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8350
testq %rax, %rax
je 0x1a28b
xorl %edi, %edi
movq %r13, %rsi
leaq 0x667a(%rip), %rdx      # 0x208e0
callq 0x13676
movl $0x2, %edi
leaq 0x6169(%rip), %rsi      # 0x203e0
leaq 0x6682(%rip), %rdx      # 0x20900
movq %r13, %rcx
movq %rbx, %r8
xorl %eax, %eax
callq 0x1a3e3
leal 0x1(%rbp), %r12d
movq %r14, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0xf82d
movl %r12d, %ebp
testq %rax, %rax
jne 0x1a245
jmp 0x1a1f9
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayInstallPlugin
int pigatewayInstallPlugin( void )
{
    // Read the plugin-specific variables from the .cfg file 
    // 
    pigatewayInitConfig();

    // if plugin is disabled in the .cfg file then do not activate
    //
    if ( pigatewayConfig.pluginState == 0 ) return 0;

    // Install Event-driven CallBack hooks so the plugin gets
    // notified for various happenings.  A complete list is here,
    // but comment out what is not needed for your plug-in.
    // 
    eventsRegister( SISSM_EV_CLIENT_ADD,           pigatewayClientAddCB );
    eventsRegister( SISSM_EV_CLIENT_DEL,           pigatewayClientDelCB );
    eventsRegister( SISSM_EV_INIT,                 pigatewayInitCB );
    eventsRegister( SISSM_EV_RESTART,              pigatewayRestartCB );
    eventsRegister( SISSM_EV_MAPCHANGE,            pigatewayMapChangeCB );
    eventsRegister( SISSM_EV_GAME_START,           pigatewayGameStartCB );
    eventsRegister( SISSM_EV_GAME_END,             pigatewayGameEndCB );
    eventsRegister( SISSM_EV_ROUND_START,          pigatewayRoundStartCB );
    eventsRegister( SISSM_EV_ROUND_END,            pigatewayRoundEndCB );
    eventsRegister( SISSM_EV_OBJECTIVE_CAPTURED,   pigatewayCapturedCB );
    eventsRegister( SISSM_EV_PERIODIC,             pigatewayPeriodicCB );
    eventsRegister( SISSM_EV_CLIENT_ADD_SYNTH,     pigatewayClientSynthAddCB );
    eventsRegister( SISSM_EV_CLIENT_DEL_SYNTH,     pigatewayClientSynthDelCB );
    eventsRegister( SISSM_EV_CHAT,                 pigatewayChatCB     );

    timeRestarted = apiTimeGet();
    return 0;
}

// Assembly:
pushq %rax
callq 0x19933
cmpl $0x0, 0x2245ba(%rip)    # 0x23e870
je 0x1a3b3
leaq -0x3dc(%rip), %rsi      # 0x19ee7
movl $0x3, %edi
callq 0xd40c
leaq -0x3ea(%rip), %rsi      # 0x19eea
movl $0x4, %edi
callq 0xd40c
leaq -0x3f8(%rip), %rsi      # 0x19eed
movl $0x1, %edi
callq 0xd40c
leaq -0x406(%rip), %rsi      # 0x19ef0
movl $0x2, %edi
callq 0xd40c
leaq -0x3ca(%rip), %rsi      # 0x19f3d
movl $0x5, %edi
callq 0xd40c
leaq -0x3b4(%rip), %rsi      # 0x19f64
movl $0x6, %edi
callq 0xd40c
leaq -0x3c2(%rip), %rsi      # 0x19f67
movl $0x7, %edi
callq 0xd40c
leaq -0x3a1(%rip), %rsi      # 0x19f99
movl $0x8, %edi
callq 0xd40c
leaq -0x351(%rip), %rsi      # 0x19ffa
movl $0x9, %edi
callq 0xd40c
leaq -0x35f(%rip), %rsi      # 0x19ffd
movl $0xa, %edi
callq 0xd40c
leaq -0x246(%rip), %rsi      # 0x1a127
movl $0xb, %edi
callq 0xd40c
leaq -0x865(%rip), %rsi      # 0x19b19
movl $0xc, %edi
callq 0xd40c
leaq -0x504(%rip), %rsi      # 0x19e8b
movl $0xd, %edi
callq 0xd40c
leaq -0x1da(%rip), %rsi      # 0x1a1c6
xorl %edi, %edi
callq 0xd40c
callq 0x117c0
movq %rax, 0x2257ed(%rip)    # 0x23fba0
xorl %eax, %eax
popq %rcx
retq
nop
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/log.c
// Function: logPrintfInit
void logPrintfInit( int logLevel, char *logFileName, int echoToConsole )
{
    strlcpy( _logFileName, logFileName, sizeof( _logFileName) );
    _logEchoToConsole = echoToConsole;
    _logLevel = logLevel;
    return;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %edx, %ebx
movl %edi, %ebp
leaq 0x2297fa(%rip), %rdi    # 0x243bc0
movl $0xff, %edx
callq 0xf384
movl %ebx, 0x2298ea(%rip)    # 0x243cc0
movl %ebp, 0x2298e8(%rip)    # 0x243cc4
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsInitConfig
int pistatsInitConfig( void )
{
    cfsPtr cP;

    cP = cfsCreate( sissmGetConfigPath() );

    // read "pistats.pluginstate" variable from the .cfg file
    pistatsConfig.pluginState = (int) cfsFetchNum( cP, "pistats.pluginState", 0.0 );  // disabled by default

    // read "pistats.StringParameterExample" variable from the .cfg file
    strlcpy( pistatsConfig.stringParameterExample,  cfsFetchStr( cP, "pistats.StringParameterExample",  "game starting!" ), CFS_FETCH_MAX);
    strlcpy( pistatsConfig.stringParameterExample2, cfsFetchStr( cP, "pistats.StringParameterExample2", "round starting!" ), CFS_FETCH_MAX);
    strlcpy( pistatsConfig.stringParameterExample3, cfsFetchStr( cP, "pistats.StringParameterExample3", "to the next objective!" ), CFS_FETCH_MAX);

    // read "pistats.NumericParameterExample" variable from the .cfg file
    pistatsConfig.numericParameterExample = (int) cfsFetchNum( cP, "pistats.NumericParameterExample", 3.1415926 );

    cfsDestroy( cP );
    return 0;
}

// Assembly:
pushq %rbx
callq 0x8970
movq %rax, %rdi
callq 0x8ffc
movq %rax, %rbx
leaq 0x640f(%rip), %rsi      # 0x209c7
xorpd %xmm0, %xmm0
movq %rax, %rdi
callq 0x926a
cvttsd2si %xmm0, %eax
movl %eax, 0x22a712(%rip)    # 0x244ce0
leaq 0x6406(%rip), %rsi      # 0x209db
leaq 0x5485(%rip), %rdx      # 0x1fa61
movq %rbx, %rdi
callq 0x9073
leaq 0x22a6f9(%rip), %rdi    # 0x244ce4
movl $0x400, %edx            # imm = 0x400
movq %rax, %rsi
callq 0xf384
leaq 0x63fb(%rip), %rsi      # 0x209fa
leaq 0x5489(%rip), %rdx      # 0x1fa8f
movq %rbx, %rdi
callq 0x9073
leaq 0x22aacf(%rip), %rdi    # 0x2450e4
movl $0x400, %edx            # imm = 0x400
movq %rax, %rsi
callq 0xf384
leaq 0x63f1(%rip), %rsi      # 0x20a1a
leaq 0x548e(%rip), %rdx      # 0x1fabe
movq %rbx, %rdi
callq 0x9073
leaq 0x22aea5(%rip), %rdi    # 0x2454e4
movl $0x400, %edx            # imm = 0x400
movq %rax, %rsi
callq 0xf384
leaq 0x63e7(%rip), %rsi      # 0x20a3a
movsd 0x53a5(%rip), %xmm0     # 0x1fa00
movq %rbx, %rdi
callq 0x926a
cvttsd2si %xmm0, %eax
movl %eax, 0x22b277(%rip)    # 0x2458e4
movq %rbx, %rdi
callq 0x9054
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsClientAddCB
int pistatsClientAddCB( char *strIn )
{
    char playerName[256], playerGUID[256], playerIP[256];

    rosterParsePlayerConn( strIn, 256, playerName, playerGUID, playerIP );
    logPrintf( LOG_LEVEL_INFO, "pistats", "Add Client ::%s::%s::%s::", playerName, playerGUID, playerIP );

    if ( apiPlayersGetCount() >= 8 ) {   // if the last connect player is #8 (last slot if 8 port server)
        if ( 0 != strcmp(playerGUID, "76561000000000000" )) {    // check if this is the server owner 
	    apiKickOrBan( 0, playerGUID, "Sorry the last port reserved for server owner only" );
            apiSay ( "pistats: Player %s kicked server full", playerName );
	}
        apiSay ( "pistats: Welcome server owner %s", playerName );
    }
    else {
        apiSay ( "pistats: Welcome %s", playerName );
    }

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x300, %rsp            # imm = 0x300
leaq 0x100(%rsp), %rbx
movq %rsp, %r14
leaq 0x200(%rsp), %r15
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x15427
leaq 0x63a8(%rip), %rsi      # 0x20a5a
leaq 0x5cb9(%rip), %rdx      # 0x20372
movl $0x2, %edi
movq %rbx, %rcx
movq %r14, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0x1a3e3
callq 0x13853
cmpl $0x8, %eax
jl 0x1a735
movdqa (%rsp), %xmm0
movzwl 0x10(%rsp), %eax
movd %eax, %xmm1
pcmpeqb 0x5322(%rip), %xmm0     # 0x1fa10
pcmpeqb 0x532a(%rip), %xmm1     # 0x1fa20
pand %xmm0, %xmm1
pmovmskb %xmm1, %eax
leaq 0x6383(%rip), %rbx      # 0x20a88
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x1a73c
leaq 0x53fa(%rip), %rdx      # 0x1fb0d
movq %rsp, %rsi
xorl %edi, %edi
callq 0x13676
leaq 0x633e(%rip), %rdi      # 0x20a62
leaq 0x100(%rsp), %rsi
xorl %eax, %eax
callq 0x13337
jmp 0x1a73c
leaq 0x636d(%rip), %rbx      # 0x20aa9
leaq 0x100(%rsp), %rsi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsClientDelCB
int pistatsClientDelCB( char *strIn )
{
    char playerName[256], playerGUID[256], playerIP[256];

    rosterParsePlayerDisConn( strIn, 256, playerName, playerGUID, playerIP );
    logPrintf( LOG_LEVEL_INFO, "pistats", "Del Client ::%s::%s::%s::", playerName, playerGUID, playerIP );

    apiSay ( "pistats: Good bye %s", playerName );

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x300, %rsp            # imm = 0x300
leaq 0x200(%rsp), %rbx
leaq 0x100(%rsp), %r14
movq %rsp, %r15
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x154b3
leaq 0x62c4(%rip), %rsi      # 0x20a5a
leaq 0x53fb(%rip), %rdx      # 0x1fb98
movl $0x2, %edi
movq %rbx, %rcx
movq %r14, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0x1a3e3
leaq 0x6304(%rip), %rdi      # 0x20abd
movq %rbx, %rsi
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x300, %rsp            # imm = 0x300
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsGameStartCB
int pistatsGameStartCB( char *strIn )
{
    char newCount[256];

    logPrintf( LOG_LEVEL_INFO, "pistats", "Game Start Event ::%s::", strIn );

    apiGameModePropertySet( "minimumenemies", "4" );
    apiGameModePropertySet( "maximumenemies", "4" );

    strlcpy( newCount, apiGameModePropertyGet( "minimumenemies" ), 256) ;

    // in-game announcement start of game
    apiSay( "pistats: %s -- 2 waves of %s bots", pistatsConfig.stringParameterExample, newCount );  

    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, %rcx
leaq 0x61c6(%rip), %rsi      # 0x20a5a
leaq 0x537a(%rip), %rdx      # 0x1fc15
movl $0x2, %edi
xorl %eax, %eax
callq 0x1a3e3
leaq 0x118d(%rip), %rbx      # 0x1ba3b
leaq 0x4e62(%rip), %r14      # 0x1f717
movq %rbx, %rdi
movq %r14, %rsi
callq 0x131ed
leaq 0x1183(%rip), %rdi      # 0x1ba4a
movq %r14, %rsi
callq 0x131ed
movq %rbx, %rdi
callq 0x131f2
movq %rsp, %rbx
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
movq %rax, %rsi
callq 0xf384
leaq 0x61e1(%rip), %rdi      # 0x20ad2
leaq 0x22a3ec(%rip), %rsi    # 0x244ce4
movq %rbx, %rdx
xorl %eax, %eax
callq 0x13337
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r14
retq