LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
callq 0x19410
movq %rax, -0x10(%rbp)
callq 0x19670
movq %rax, -0x18(%rbp)
callq 0x196c0
movq %rax, -0x20(%rbp)
callq 0x19450
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %r8
movq -0x20(%rbp), %r9
movl -0x24(%rbp), %eax
movl $0x2, %edi
leaq 0x81b2(%rip), %rsi      # 0x27aec
leaq 0x8498(%rip), %rdx      # 0x27dd9
movl %eax, (%rsp)
movb $0x0, %al
callq 0x21bf0
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl -0x24(%rbp), %r8d
leaq 0x84b8(%rip), %rdi      # 0x27e1a
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
callq 0x19370
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rcx
movl $0x2, %edi
leaq 0x8147(%rip), %rsi      # 0x27aec
leaq 0x8499(%rip), %rdx      # 0x27e45
movb $0x0, %al
callq 0x21bf0
movq -0x10(%rbp), %rsi
leaq 0x8499(%rip), %rdi      # 0x27e57
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
callq 0x193c0
movq %rax, -0x10(%rbp)
callq 0x193d0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %r8
movl $0x2, %edi
leaq 0x80ea(%rip), %rsi      # 0x27aec
leaq 0x846c(%rip), %rdx      # 0x27e75
movb $0x0, %al
callq 0x21bf0
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq 0x844e(%rip), %rdi      # 0x27e6d
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x320, %rsp            # imm = 0x320
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x110(%rbp), %rdx
leaq -0x210(%rbp), %rcx
leaq -0x310(%rbp), %r8
movl $0x100, %esi            # imm = 0x100
callq 0x1abd0
leaq -0x110(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x310(%rbp), %r9
xorl %edi, %edi
leaq 0x7dec(%rip), %rsi      # 0x2830c
leaq 0x7df1(%rip), %rdx      # 0x28318
movb $0x0, %al
callq 0x21bf0
leaq -0x210(%rbp), %rdi
callq 0x20600
cmpl $0x0, %eax
jne 0x205e8
callq 0x20650
cmpl $0x0, %eax
jne 0x205e8
leaq 0x223ae4(%rip), %rdi    # 0x24403c
callq 0x8110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x205b4
leaq -0x110(%rbp), %rax
movq %rax, -0x318(%rbp)
callq 0x17fe0
movq -0x318(%rbp), %rdx
movl %eax, %r9d
leaq 0x7db8(%rip), %rdi      # 0x28343
leaq 0x21d68e(%rip), %r8     # 0x23dc20
movq %r8, %rsi
addq $0x781c, %rsi           # imm = 0x781C
movq %r8, %rcx
addq $0x7c1c, %rcx           # imm = 0x7C1C
addq $0x641c, %r8            # imm = 0x641C
movb $0x0, %al
callq 0x178d0
leaq -0x110(%rbp), %rax
movq %rax, -0x320(%rbp)
callq 0x17fe0
movq -0x320(%rbp), %rcx
movl %eax, %r8d
xorl %edi, %edi
leaq 0x7d32(%rip), %rsi      # 0x2830c
leaq 0x7d71(%rip), %rdx      # 0x28352
movb $0x0, %al
callq 0x21bf0
xorl %eax, %eax
addq $0x320, %rsp            # imm = 0x320
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pigreetings.c
// Function: isMaskDisconnect
static int _isMaskDisconnect( void )
{
    int isMaskDisconnect = 0;
 
    if (pigreetingsConfig.maskdisconnsec != 0) {
        if ( (apiTimeGet() - lastRoundEndTime) < (unsigned long) pigreetingsConfig.maskdisconnsec ) {
            isMaskDisconnect = 1;
        }
    } 
    return( isMaskDisconnect );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x0, -0x4(%rbp)
cmpl $0x0, 0x21d5c2(%rip)    # 0x23dc28
je 0x20689
callq 0x150c0
subq 0x2261dc(%rip), %rax    # 0x246850
movslq 0x21d5ad(%rip), %rcx    # 0x23dc28
cmpq %rcx, %rax
jae 0x20687
movl $0x1, -0x4(%rbp)
jmp 0x20689
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x21d399(%rip), %rdi    # 0x23dc3c
callq 0x8110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x208cb
leaq 0x63d3(%rip), %rdi      # 0x26c8c
leaq 0x21d360(%rip), %rsi    # 0x23dc20
addq $0x1c, %rsi
movb $0x0, %al
callq 0x178d0
leaq 0x21d76a(%rip), %rdi    # 0x23e03c
callq 0x8110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x20901
leaq 0x63a4(%rip), %rdi      # 0x26c8c
leaq 0x21d331(%rip), %rsi    # 0x23dc20
addq $0x1c, %rsi
addq $0x400, %rsi            # imm = 0x400
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
cmpl 0x21d32b(%rip), %eax    # 0x23dc34
je 0x2091e
movq 0x225f36(%rip), %rdi    # 0x246848
movslq 0x21d31b(%rip), %rsi    # 0x23dc34
callq 0x12a40
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq 0x225f05(%rip), %rdi    # 0x246848
callq 0x12a80
callq 0x150c0
movq %rax, 0x225efc(%rip)    # 0x246850
movl $0x2, %edi
leaq 0x79ac(%rip), %rsi      # 0x2830c
leaq 0x7a46(%rip), %rdx      # 0x283ad
movb $0x0, %al
callq 0x21bf0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpl $0x0, 0x21d299(%rip)    # 0x23dc2c
je 0x20a33
movq 0x225eb8(%rip), %rax    # 0x246858
addq $0xa, %rax
movq %rax, -0x10(%rbp)
callq 0x150c0
movq %rax, %rcx
movq -0x10(%rbp), %rax
cmpq %rcx, %rax
jae 0x20a31
movslq 0x225ea0(%rip), %rax    # 0x246860
leaq 0x21d259(%rip), %rdi    # 0x23dc20
addq $0x81c, %rdi            # imm = 0x81C
shlq $0xa, %rax
addq %rax, %rdi
callq 0x8110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x20a0e
movslq 0x225e75(%rip), %rax    # 0x246860
leaq 0x21d22e(%rip), %rsi    # 0x23dc20
addq $0x81c, %rsi            # imm = 0x81C
shlq $0xa, %rax
addq %rax, %rsi
leaq 0x6285(%rip), %rdi      # 0x26c8c
movb $0x0, %al
callq 0x178d0
movl 0x225e4c(%rip), %eax    # 0x246860
addl $0x1, %eax
movl $0xa, %ecx
cltd
idivl %ecx
movl %edx, 0x225e3b(%rip)    # 0x246860
callq 0x150c0
movq %rax, 0x225e27(%rip)    # 0x246858
jmp 0x20a33
xorl %eax, %eax
cmpl 0x21d1f9(%rip), %eax    # 0x23dc34
je 0x20a50
movq 0x225e04(%rip), %rdi    # 0x246848
movslq 0x21d1e9(%rip), %rsi    # 0x23dc34
callq 0x12a40
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
callq 0x19450
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x7307(%rip), %rsi      # 0x27d99
callq 0x8390
testq %rax, %rax
setne %al
movzbl %al, %eax
movl %eax, -0xc(%rbp)
leaq 0x225592(%rip), %rsi    # 0x24603c
leaq -0x110(%rbp), %rdi
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
movl -0x10(%rbp), %eax
movl %eax, -0x114(%rbp)
testl %eax, %eax
je 0x20ad7
jmp 0x20aca
movl -0x114(%rbp), %eax
subl $0x1, %eax
je 0x20afe
jmp 0x20b25
cmpl $0x0, -0xc(%rbp)
jne 0x20afc
leaq -0x110(%rbp), %rdi
leaq 0x21d135(%rip), %rsi    # 0x23dc20
addq $0x801c, %rsi           # imm = 0x801C
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
jmp 0x20b44
cmpl $0x0, -0xc(%rbp)
je 0x20b23
leaq -0x110(%rbp), %rdi
leaq 0x21d10e(%rip), %rsi    # 0x23dc20
addq $0x801c, %rsi           # imm = 0x801C
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
jmp 0x20b44
leaq -0x110(%rbp), %rdi
leaq 0x21d0ed(%rip), %rsi    # 0x23dc20
addq $0x881c, %rsi           # imm = 0x881C
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
leaq -0x110(%rbp), %rdi
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
xorl %eax, %eax
cmpl 0x21d0c4(%rip), %eax    # 0x23dc38
je 0x20b89
movq 0x225ccb(%rip), %rdi    # 0x246848
movslq 0x21d0b4(%rip), %rsi    # 0x23dc38
callq 0x12a40
cmpl $0x0, 0x21d0a0(%rip)    # 0x23dc30
je 0x20bfe
movslq 0x225ccb(%rip), %rax    # 0x246864
leaq 0x21d080(%rip), %rdi    # 0x23dc20
addq $0x301c, %rdi           # imm = 0x301C
shlq $0xa, %rax
addq %rax, %rdi
callq 0x8110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x20be7
movslq 0x225ca0(%rip), %rax    # 0x246864
leaq 0x21d055(%rip), %rsi    # 0x23dc20
addq $0x301c, %rsi           # imm = 0x301C
shlq $0xa, %rax
addq %rax, %rsi
leaq 0x60ac(%rip), %rdi      # 0x26c8c
movb $0x0, %al
callq 0x178d0
movl 0x225c77(%rip), %eax    # 0x246864
addl $0x1, %eax
movl $0xa, %ecx
cltd
idivl %ecx
movl %edx, 0x225c66(%rip)    # 0x246864
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pigateway.c
// Function: allowInExemption
static int _allowInExemption( char *playerName )
{
    unsigned long timeMarked;
    int allowIn = 0;
    char *allowSubstring;

    timeMarked = p2pGetL( "picladmin.p2p.allowTimeStart", 0L );
    allowSubstring = p2pGetS( "picladmin.p2p.allowInPattern", "" );

    if (( apiTimeGet() - timeMarked ) < pigatewayConfig.allowInWindowTimeSec ) {
        if (0 == strcmp( allowSubstring, "*" )) 
            allowIn = 1;
        else if ( NULL != strcasestr( playerName, allowSubstring )) 
            allowIn = 1;
    }

    return( allowIn );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0x14(%rbp)
leaq 0x2bdf(%rip), %rdi      # 0x23e79
xorl %eax, %eax
movl %eax, %esi
callq 0x1eda0
movq %rax, -0x10(%rbp)
leaq 0x2bae(%rip), %rdi      # 0x23e5c
leaq 0x245c(%rip), %rsi      # 0x23711
callq 0x1ee50
movq %rax, -0x20(%rbp)
callq 0x150c0
subq -0x10(%rbp), %rax
movl 0x2265bb(%rip), %ecx    # 0x247888
cmpq %rcx, %rax
jae 0x21315
movq -0x20(%rbp), %rdi
leaq 0x291f(%rip), %rsi      # 0x23bfc
callq 0x8200
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x212f3
movl $0x1, -0x14(%rbp)
jmp 0x21313
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x8340
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x21311
movl $0x1, -0x14(%rbp)
jmp 0x21313
jmp 0x21315
movl -0x14(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pigateway.c
// Function: isPriority
static int _isPriority( char *connectID, char *connectName )
{
    int isMatch = 0;

    // 1. check if player has "priport" attribute
    //
    isMatch = apiAuthIsAttribute( connectID, "priport" );
    logPrintf( LOG_LEVEL_INFO, "pigateway", "isPriority priport user ::%d::", isMatch );

    // 2. check if player is "clan", overwrite the priport check
    //
    if ( 3L == p2pGetL( "pigateway.p2p.lockOut", 0L ) ) {
        if ( 0 == ( isMatch = apiIsClan( connectID ) ))  {
            isMatch = apiIsClan( connectName ); 
            logPrintf( LOG_LEVEL_INFO, "pigateway", "isPriority clan user ::%d::", isMatch );
        }
    }

    // 3. check if player is "root" - overwrites everyting else
    //
    if ( 0 == strcmp( "root", apiAuthGetRank( connectID ) )) {
        isMatch = 1;
        logPrintf( LOG_LEVEL_INFO, "pigateway", "isPriority root user" );
    }

    // 4. Simple but CPU efficient anti-spoof check - disqualify priority 
    // 
    if ( NULL != strstr( connectName, "7656" ) ) {
        // in the future use this inside apiIsClan
        // int rosterIsValidGUID( char *testGUID )
        isMatch = 0;
    }

    return( isMatch );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x75d8(%rip), %rsi      # 0x2891a
callq 0x185c0
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %ecx
movl $0x2, %edi
leaq 0x707f(%rip), %rsi      # 0x283d8
leaq 0x75c2(%rip), %rdx      # 0x28922
movb $0x0, %al
callq 0x21bf0
leaq 0x2418(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1eda0
movq %rax, %rcx
movl $0x3, %eax
cmpq %rcx, %rax
jne 0x213c3
movq -0x8(%rbp), %rdi
callq 0x19010
movl %eax, %ecx
movl %ecx, -0x14(%rbp)
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x213c1
movq -0x10(%rbp), %rdi
callq 0x19010
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %ecx
movl $0x2, %edi
leaq 0x7025(%rip), %rsi      # 0x283d8
leaq 0x7587(%rip), %rdx      # 0x28941
movb $0x0, %al
callq 0x21bf0
jmp 0x213c3
movq -0x8(%rbp), %rdi
callq 0x186d0
movq %rax, %rsi
leaq 0x7587(%rip), %rdi      # 0x2895d
callq 0x8200
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x21404
movl $0x1, -0x14(%rbp)
movl $0x2, %edi
leaq 0x6fe2(%rip), %rsi      # 0x283d8
leaq 0x7565(%rip), %rdx      # 0x28962
movb $0x0, %al
callq 0x21bf0
movq -0x10(%rbp), %rdi
leaq 0x543d(%rip), %rsi      # 0x2684c
callq 0x8390
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x21425
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pigateway.c
// Function: isBadName
static int _isBadName( char *playerName, char *playerGUID )
{
    int isBad = 0;

    if ( apiBadNameCheck( playerName, 0 ) )          // check if substr contains offensive words
        isBad = 1;
    else if ( apiBadNameCheck( playerGUID, 1 ) )      // check if exact GUID is under access suspention 
        isBad = 2; 
    
    return( isBad );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x14b50
cmpl $0x0, %eax
je 0x21460
movl $0x1, -0x14(%rbp)
jmp 0x2147c
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x14b50
cmpl $0x0, %eax
je 0x2147a
movl $0x2, -0x14(%rbp)
jmp 0x2147c
movl -0x14(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
callq 0x17fe0
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x2150a
xorl %eax, %eax
cmpl 0x225bc7(%rip), %eax    # 0x247078
jne 0x21508
leaq 0x22cc(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1eda0
movq %rax, %rcx
movl $0x1, %eax
cmpq %rcx, %rax
jne 0x21508
leaq 0x22af(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1ebf0
leaq 0x71f2(%rip), %rdi      # 0x286d9
movb $0x0, %al
callq 0x17af0
movl $0x2, %edi
leaq 0x6ede(%rip), %rsi      # 0x283d8
leaq 0x7201(%rip), %rdx      # 0x28702
movb $0x0, %al
callq 0x21bf0
jmp 0x2150a
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayRestartCB
int pigatewayRestartCB( char *strIn )
{
    // clear the clan list (if used)
    apiClanClear();

    // establish the default lock state on reboot
    //
    if (  pigatewayConfig.lockServerOnIdle ) {
        p2pSetL( "pigateway.p2p.lockOut", 2L );
        logPrintf( LOG_LEVEL_INFO, "pigateway", "Reboot: locking the server as default" );
    }
    else {
        p2pSetL( "pigateway.p2p.lockOut", 0L );
        logPrintf( LOG_LEVEL_INFO, "pigateway", "Reboot: Unlocking the server as default" );
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
callq 0x18ff0
cmpl $0x0, 0x225b10(%rip)    # 0x247078
je 0x21597
leaq 0x2215(%rip), %rdi      # 0x23786
movl $0x2, %esi
callq 0x1ebf0
movl $0x2, %edi
leaq 0x6e51(%rip), %rsi      # 0x283d8
leaq 0x71a3(%rip), %rdx      # 0x28731
movb $0x0, %al
callq 0x21bf0
jmp 0x215c1
leaq 0x21e8(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1ebf0
movl $0x2, %edi
leaq 0x6e25(%rip), %rsi      # 0x283d8
leaq 0x719d(%rip), %rdx      # 0x28757
movb $0x0, %al
callq 0x21bf0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pigateway.c
// Function: pigatewayMapChangeCB
int pigatewayMapChangeCB( char *strIn )
{
    unsigned long lockState;

    // Unlcok the server - restore to normal operation
    // Do not unlock if the variable state is "perm" (=2L) 
    //
    lockState = p2pGetL( "pigateway.p2p.lockOut", 0L );
    if ( lockState == 1L )  {
        p2pSetL( "pigateway.p2p.lockOut", 0L );
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x21a3(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1eda0
movq %rax, -0x10(%rbp)
cmpq $0x1, -0x10(%rbp)
jne 0x21607
leaq 0x2188(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1ebf0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x2103(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1eda0
movq %rax, %rcx
movl $0x1, %eax
cmpq %rcx, %rax
jne 0x216a9
leaq 0x70f6(%rip), %rdi      # 0x28796
movb $0x0, %al
callq 0x178d0
jmp 0x21705
leaq 0x20d6(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1eda0
movq %rax, %rcx
movl $0x2, %eax
cmpq %rcx, %rax
jne 0x216d6
leaq 0x70f7(%rip), %rdi      # 0x287c4
movb $0x0, %al
callq 0x178d0
jmp 0x21703
leaq 0x20a9(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1eda0
movq %rax, %rcx
movl $0x3, %eax
cmpq %rcx, %rax
jne 0x21701
leaq 0x70f3(%rip), %rdi      # 0x287ed
movb $0x0, %al
callq 0x178d0
jmp 0x21703
jmp 0x21705
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x230, %rsp            # imm = 0x230
movq %rdi, -0x8(%rbp)
cmpl $0x0, 0x22594e(%rip)    # 0x247084
jle 0x2186f
movl $0x1, %edi
leaq 0x530e(%rip), %rsi      # 0x26a56
callq 0x17ff0
movq %rax, %rsi
leaq 0x226459(%rip), %rdi    # 0x247bb0
movl $0x4000, %edx           # imm = 0x4000
callq 0x11bc0
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %esi
leaq 0x22643e(%rip), %rdi    # 0x247bb0
leaq 0x52dd(%rip), %rdx      # 0x26a56
callq 0x122d0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x2178e
jmp 0x2186d
movq -0x10(%rbp), %rdi
callq 0x8110
movl %eax, -0x18(%rbp)
cmpl $0x0, -0x18(%rbp)
jne 0x217a5
jmp 0x2186d
movl -0x18(%rbp), %eax
movl 0x2258d6(%rip), %ecx    # 0x247084
addl $0x13, %ecx
cmpl %ecx, %eax
jge 0x2185d
leaq -0x120(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x18(%rbp), %eax
subl $0x13, %eax
addl $0x1, %eax
movslq %eax, %rdx
callq 0x11bc0
leaq -0x220(%rbp), %rax
movq %rax, -0x228(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x230(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x8110
movq -0x230(%rbp), %rsi
movq -0x228(%rbp), %rdi
addq $0x1, %rax
addq %rax, %rsi
movl $0x12, %edx
callq 0x11bc0
leaq -0x220(%rbp), %rsi
xorl %edi, %edi
leaq 0x225047(%rip), %rdx    # 0x246870
addq $0x818, %rdx            # imm = 0x818
callq 0x17cf0
leaq -0x120(%rbp), %rcx
leaq -0x220(%rbp), %r8
movl $0x2, %edi
leaq 0x6b89(%rip), %rsi      # 0x283d8
leaq 0x6fbb(%rip), %rdx      # 0x28811
movb $0x0, %al
callq 0x21bf0
jmp 0x2185f
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x21768
jmp 0x2186f
xorl %eax, %eax
addq $0x230, %rsp            # imm = 0x230
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movl 0x22a31e(%rip), %eax    # 0x24bbb0
addl $0x1, %eax
movl %eax, 0x22a315(%rip)    # 0x24bbb0
cmpl $0xa, %eax
jle 0x21947
movl $0x0, 0x22a302(%rip)    # 0x24bbb0
callq 0x17fe0
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x21945
cmpl $0x0, 0x2257b2(%rip)    # 0x247078
je 0x218fa
callq 0x18ff0
leaq 0x1eb2(%rip), %rdi      # 0x23786
movl $0x2, %esi
callq 0x1ebf0
movl $0x3, %edi
leaq 0x6aee(%rip), %rsi      # 0x283d8
leaq 0x6f3e(%rip), %rdx      # 0x2882f
movb $0x0, %al
callq 0x21bf0
jmp 0x21943
movl $0x3, %edi
leaq 0x6ad2(%rip), %rsi      # 0x283d8
leaq 0x6f62(%rip), %rdx      # 0x2886f
movb $0x0, %al
callq 0x21bf0
callq 0x18ff0
leaq 0x1e66(%rip), %rdi      # 0x23786
xorl %eax, %eax
movl %eax, %esi
callq 0x1ebf0
movl $0x3, %edi
leaq 0x6aa3(%rip), %rsi      # 0x283d8
leaq 0x6f6b(%rip), %rdx      # 0x288a7
movb $0x0, %al
callq 0x21bf0
jmp 0x21945
jmp 0x21947
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x420, %rsp            # imm = 0x420
movq %rdi, -0x8(%rbp)
movl $0x0, -0x420(%rbp)
leaq 0x225b18(%rip), %rdi    # 0x247488
callq 0x8110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x21a6c
movq -0x8(%rbp), %rdi
leaq -0x210(%rbp), %rdx
leaq -0x410(%rbp), %rcx
movl $0x200, %esi            # imm = 0x200
callq 0x1ae70
movl %eax, %ecx
movl %ecx, -0x41c(%rbp)
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x21a6a
jmp 0x219b3
movl -0x420(%rbp), %esi
movl %esi, %eax
addl $0x1, %eax
movl %eax, -0x420(%rbp)
leaq 0x224ea5(%rip), %rdi    # 0x246870
addq $0xc18, %rdi            # imm = 0xC18
leaq 0x277f(%rip), %rdx      # 0x24158
callq 0x122d0
movq %rax, -0x418(%rbp)
cmpq $0x0, -0x418(%rbp)
jne 0x219f1
jmp 0x21a68
movq -0x418(%rbp), %rdi
callq 0x8110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x21a09
jmp 0x21a68
leaq -0x410(%rbp), %rdi
movq -0x418(%rbp), %rsi
callq 0x8340
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x21a63
leaq -0x210(%rbp), %rsi
xorl %edi, %edi
leaq 0x6ea2(%rip), %rdx      # 0x288d8
callq 0x17cf0
leaq -0x210(%rbp), %rcx
leaq -0x410(%rbp), %r8
movl $0x2, %edi
leaq 0x6983(%rip), %rsi      # 0x283d8
leaq 0x6e9c(%rip), %rdx      # 0x288f8
movb $0x0, %al
callq 0x21bf0
jmp 0x219b3
jmp 0x21a6a
jmp 0x21a6c
xorl %eax, %eax
addq $0x420, %rsp            # imm = 0x420
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
callq 0x20d80
cmpl $0x0, 0x224ddc(%rip)    # 0x246870
jne 0x21aa2
movl $0x0, -0x4(%rbp)
jmp 0x21ba0
movl $0x3, %edi
leaq -0x58e(%rip), %rsi      # 0x21520
callq 0xee50
movl $0x4, %edi
leaq -0x58f(%rip), %rsi      # 0x21530
callq 0xee50
movl $0x1, %edi
leaq -0x590(%rip), %rsi      # 0x21540
callq 0xee50
movl $0x2, %edi
leaq -0x591(%rip), %rsi      # 0x21550
callq 0xee50
movl $0x5, %edi
leaq -0x522(%rip), %rsi      # 0x215d0
callq 0xee50
movl $0x6, %edi
leaq -0x4f3(%rip), %rsi      # 0x21610
callq 0xee50
movl $0x7, %edi
leaq -0x4f4(%rip), %rsi      # 0x21620
callq 0xee50
movl $0x8, %edi
leaq -0x4b5(%rip), %rsi      # 0x21670
callq 0xee50
movl $0x9, %edi
leaq -0x426(%rip), %rsi      # 0x21710
callq 0xee50
movl $0xa, %edi
leaq -0x427(%rip), %rsi      # 0x21720
callq 0xee50
movl $0xb, %edi
leaq -0x2d8(%rip), %rsi      # 0x21880
callq 0xee50
movl $0xc, %edi
leaq -0xbc9(%rip), %rsi      # 0x20fa0
callq 0xee50
movl $0xd, %edi
leaq -0x6ea(%rip), %rsi      # 0x21490
callq 0xee50
xorl %edi, %edi
leaq -0x238(%rip), %rsi      # 0x21950
callq 0xee50
callq 0x150c0
movq %rax, 0x226007(%rip)    # 0x247ba0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rsi
leaq 0x229ff3(%rip), %rdi    # 0x24bbc0
movl $0xff, %edx
callq 0x11bc0
movl -0x14(%rbp), %eax
movl %eax, 0x22a0e0(%rip)    # 0x24bcc0
movl -0x4(%rbp), %eax
movl %eax, 0x22a0db(%rip)    # 0x24bcc4
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
callq 0x8a90
movq %rax, %rdi
callq 0x9370
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6bab(%rip), %rsi      # 0x289bf
xorps %xmm0, %xmm0
callq 0x97d0
cvttsd2si %xmm0, %eax
movl %eax, 0x22aeba(%rip)    # 0x24cce0
movq -0x8(%rbp), %rdi
leaq 0x6ba2(%rip), %rsi      # 0x289d3
leaq 0x5c21(%rip), %rdx      # 0x27a59
callq 0x9430
movq %rax, %rsi
leaq 0x22ae99(%rip), %rdi    # 0x24cce0
addq $0x4, %rdi
movl $0x400, %edx            # imm = 0x400
callq 0x11bc0
movq -0x8(%rbp), %rdi
leaq 0x6b92(%rip), %rsi      # 0x289f2
leaq 0x5c20(%rip), %rdx      # 0x27a87
callq 0x9430
movq %rax, %rsi
leaq 0x22ae6a(%rip), %rdi    # 0x24cce0
addq $0x404, %rdi            # imm = 0x404
movl $0x400, %edx            # imm = 0x400
callq 0x11bc0
movq -0x8(%rbp), %rdi
leaq 0x6b80(%rip), %rsi      # 0x28a12
leaq 0x5c1d(%rip), %rdx      # 0x27ab6
callq 0x9430
movq %rax, %rsi
leaq 0x22ae38(%rip), %rdi    # 0x24cce0
addq $0x804, %rdi            # imm = 0x804
movl $0x400, %edx            # imm = 0x400
callq 0x11bc0
movq -0x8(%rbp), %rdi
leaq 0x6b6e(%rip), %rsi      # 0x28a32
movsd 0x5b54(%rip), %xmm0     # 0x27a20
callq 0x97d0
cvttsd2si %xmm0, %eax
movl %eax, 0x22ba09(%rip)    # 0x24d8e4
movq -0x8(%rbp), %rdi
callq 0x93f0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x110(%rbp), %rdx
leaq -0x210(%rbp), %rcx
leaq -0x310(%rbp), %r8
movl $0x100, %esi            # imm = 0x100
callq 0x1ace0
leaq -0x110(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x310(%rbp), %r9
movl $0x2, %edi
leaq 0x6b0f(%rip), %rsi      # 0x28a52
leaq 0x6420(%rip), %rdx      # 0x2836a
movb $0x0, %al
callq 0x21bf0
callq 0x17fe0
cmpl $0x8, %eax
jl 0x21fb7
leaq -0x210(%rbp), %rdi
leaq 0x5b8a(%rip), %rsi      # 0x27af3
callq 0x8200
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
je 0x21fa0
leaq -0x210(%rbp), %rsi
xorl %edi, %edi
leaq 0x5b7f(%rip), %rdx      # 0x27b05
callq 0x17cf0
leaq -0x110(%rbp), %rsi
leaq 0x6ac1(%rip), %rdi      # 0x28a5a
movb $0x0, %al
callq 0x178d0
leaq -0x110(%rbp), %rsi
leaq 0x6ad2(%rip), %rdi      # 0x28a80
movb $0x0, %al
callq 0x178d0
jmp 0x21fcc
leaq -0x110(%rbp), %rsi
leaq 0x6adc(%rip), %rdi      # 0x28aa1
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x110(%rbp), %rdx
leaq -0x210(%rbp), %rcx
leaq -0x310(%rbp), %r8
movl $0x100, %esi            # imm = 0x100
callq 0x1ada0
leaq -0x110(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x310(%rbp), %r9
movl $0x2, %edi
leaq 0x6a1f(%rip), %rsi      # 0x28a52
leaq 0x5b56(%rip), %rdx      # 0x27b90
movb $0x0, %al
callq 0x21bf0
leaq -0x110(%rbp), %rsi
leaq 0x6a66(%rip), %rdi      # 0x28ab5
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsMapChangeCB
int pistatsMapChangeCB( char *strIn )
{
    char mapName[256];

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rcx
movl $0x2, %edi
leaq 0x6943(%rip), %rsi      # 0x28a52
leaq 0x5acf(%rip), %rdx      # 0x27be5
movb $0x0, %al
callq 0x21bf0
movq -0x8(%rbp), %rdi
leaq -0x110(%rbp), %rdx
movl $0x100, %esi            # imm = 0x100
callq 0x1b180
leaq -0x110(%rbp), %rcx
movl $0x2, %edi
leaq 0x690d(%rip), %rsi      # 0x28a52
leaq 0x5ab1(%rip), %rdx      # 0x27bfd
movb $0x0, %al
callq 0x21bf0
xorl %eax, %eax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rcx
movl $0x2, %edi
leaq 0x68d3(%rip), %rsi      # 0x28a52
leaq 0x5a87(%rip), %rdx      # 0x27c0d
movb $0x0, %al
callq 0x21bf0
leaq 0x18af(%rip), %rdi      # 0x23a43
leaq 0x559c(%rip), %rsi      # 0x27737
callq 0x176f0
leaq 0x18ab(%rip), %rdi      # 0x23a52
leaq 0x5589(%rip), %rsi      # 0x27737
callq 0x176f0
leaq -0x110(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq 0x187b(%rip), %rdi      # 0x23a43
callq 0x17720
movq -0x118(%rbp), %rdi
movq %rax, %rsi
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
leaq -0x110(%rbp), %rdx
leaq 0x68db(%rip), %rdi      # 0x28aca
leaq 0x22aaea(%rip), %rsi    # 0x24cce0
addq $0x4, %rsi
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsCapturedCB
int pistatsCapturedCB( char *strIn )
{
    static unsigned long int lastTimeCaptured = 0L;
    // logPrintf( LOG_LEVEL_INFO, "pistats", "Captured Objective Event ::%s::", strIn );
    logPrintf( LOG_LEVEL_INFO, "pistats", "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( pistatsConfig.stringParameterExample3 );
        lastTimeCaptured = apiTimeGet();
	// apiServerRestart();

    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movl $0x2, %edi
leaq 0x675a(%rip), %rsi      # 0x28a52
leaq 0x599d(%rip), %rdx      # 0x27c9c
movb $0x0, %al
callq 0x21bf0
movq 0x22b5db(%rip), %rax    # 0x24d8e8
addq $0xa, %rax
movq %rax, -0x10(%rbp)
callq 0x150c0
movq %rax, %rcx
movq -0x10(%rbp), %rax
cmpq %rcx, %rax
jae 0x22347
leaq 0x22a9b3(%rip), %rdi    # 0x24cce0
addq $0x804, %rdi            # imm = 0x804
movb $0x0, %al
callq 0x178d0
callq 0x150c0
movq %rax, 0x22b5a1(%rip)    # 0x24d8e8
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsClientSynthDelCB
int pistatsClientSynthDelCB( char *strIn )
{
    static char playerName[256], playerGUID[256], playerIP[256];

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

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x100, %esi            # imm = 0x100
leaq 0x22b504(%rip), %rdx    # 0x24d8f0
leaq 0x22b5fd(%rip), %rcx    # 0x24d9f0
leaq 0x22b6f6(%rip), %r8     # 0x24daf0
callq 0x1abd0
movl $0x2, %edi
leaq 0x6647(%rip), %rsi      # 0x28a52
leaq 0x58d5(%rip), %rdx      # 0x27ce7
leaq 0x22b4d7(%rip), %rcx    # 0x24d8f0
leaq 0x22b6d0(%rip), %r8     # 0x24daf0
leaq 0x22b5c9(%rip), %r9     # 0x24d9f0
movb $0x0, %al
callq 0x21bf0
leaq 0x66e2(%rip), %rdi      # 0x28b17
leaq 0x22b4b4(%rip), %rsi    # 0x24d8f0
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsClientSynthAddCB
int pistatsClientSynthAddCB( char *strIn )
{
    static char playerName[256], playerGUID[256], playerIP[256];

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

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x100, %esi            # imm = 0x100
leaq 0x22b784(%rip), %rdx    # 0x24dbf0
leaq 0x22b87d(%rip), %rcx    # 0x24dcf0
leaq 0x22b976(%rip), %r8     # 0x24ddf0
callq 0x1aa80
movl $0x2, %edi
leaq 0x65c7(%rip), %rsi      # 0x28a52
leaq 0x58a4(%rip), %rdx      # 0x27d36
leaq 0x22b757(%rip), %rcx    # 0x24dbf0
leaq 0x22b950(%rip), %r8     # 0x24ddf0
leaq 0x22b849(%rip), %r9     # 0x24dcf0
movb $0x0, %al
callq 0x21bf0
leaq 0x6679(%rip), %rdi      # 0x28b2e
leaq 0x22b734(%rip), %rsi    # 0x24dbf0
movb $0x0, %al
callq 0x178d0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsWinLose
int pistatsWinLose( 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( "pistats: %s", outStr );
    logPrintf( LOG_LEVEL_INFO, "pistats", outStr );

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
callq 0x19450
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x5837(%rip), %rsi      # 0x27d99
callq 0x8390
testq %rax, %rax
setne %al
movzbl %al, %eax
movl %eax, -0xc(%rbp)
movl -0x10(%rbp), %eax
movl %eax, -0x114(%rbp)
testl %eax, %eax
je 0x2258f
jmp 0x22582
movl -0x114(%rbp), %eax
subl $0x1, %eax
je 0x225af
jmp 0x225cf
cmpl $0x0, -0xc(%rbp)
jne 0x225ad
leaq -0x110(%rbp), %rdi
leaq 0x57fd(%rip), %rsi      # 0x27da0
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
jmp 0x225e7
cmpl $0x0, -0xc(%rbp)
je 0x225cd
leaq -0x110(%rbp), %rdi
leaq 0x57ee(%rip), %rsi      # 0x27db1
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
jmp 0x225e7
leaq -0x110(%rbp), %rdi
leaq 0x57e5(%rip), %rsi      # 0x27dc2
movl $0x100, %edx            # imm = 0x100
callq 0x11bc0
leaq -0x110(%rbp), %rsi
leaq 0x654f(%rip), %rdi      # 0x28b44
movb $0x0, %al
callq 0x178d0
leaq -0x110(%rbp), %rdx
movl $0x2, %edi
leaq 0x6443(%rip), %rsi      # 0x28a52
movb $0x0, %al
callq 0x21bf0
xorl %eax, %eax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopw %cs:(%rax,%rax)