LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/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 %r15
pushq %r14
pushq %rbx
leaq 0x22c352(%rip), %rbx    # 0x245bf0
leaq 0x22c44b(%rip), %r14    # 0x245cf0
leaq 0x22c544(%rip), %r15    # 0x245df0
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x1430a
leaq 0x6154(%rip), %rsi      # 0x1fa1a
leaq 0x5431(%rip), %rdx      # 0x1ecfe
pushq $0x2
popq %rdi
movq %rbx, %rcx
movq %r15, %r8
movq %r14, %r9
xorl %eax, %eax
callq 0x1920b
leaq 0x620f(%rip), %rdi      # 0x1faf6
movq %rbx, %rsi
xorl %eax, %eax
callq 0x125a8
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/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 %r14
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, %r14
callq 0x13680
movl %eax, %ebx
leaq 0x5410(%rip), %rsi      # 0x1ed61
movq %r14, %rdi
callq 0x83c0
cmpl $0x1, %ebx
je 0x19970
testl %ebx, %ebx
jne 0x19987
testq %rax, %rax
jne 0x1999d
movups 0x53fa(%rip), %xmm0     # 0x1ed68
jmp 0x1997c
testq %rax, %rax
je 0x1999d
movups 0x53fd(%rip), %xmm0     # 0x1ed79
movaps %xmm0, (%rsp)
movb $0x0, 0x10(%rsp)
jmp 0x1999d
movabsq $0x4c6e695720507650, %rax # imm = 0x4C6E695720507650
movq %rax, (%rsp)
movl $0x65736f, 0x8(%rsp)    # imm = 0x65736F
leaq 0x6168(%rip), %rdi      # 0x1fb0c
movq %rsp, %rbx
movq %rbx, %rsi
xorl %eax, %eax
callq 0x125a8
leaq 0x6062(%rip), %rsi      # 0x1fa1a
pushq $0x2
popq %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x1920b
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsTravel
int pistatsTravel( char *strIn )
{
    char *mapName, *scenario, *mutator;
    int humanSide;

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

    logPrintf( LOG_LEVEL_INFO, "pistats", "Change map to ::%s:: Scenario ::%s:: Mutator ::%s:: Human ::%d::", 
        mapName, scenario, mutator, humanSide );
    apiSay( "pistats: 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 0x13664
movq %rax, %rbx
callq 0x137ea
movq %rax, %r14
callq 0x13812
movq %rax, %r15
callq 0x13680
movl %eax, %ebp
movl %eax, (%rsp)
leaq 0x6018(%rip), %rsi      # 0x1fa1a
leaq 0x5398(%rip), %rdx      # 0x1eda1
pushq $0x2
popq %rdi
movq %rbx, %rcx
movq %r14, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0x1920b
leaq 0x60f5(%rip), %rdi      # 0x1fb18
movq %rbx, %rsi
movq %r14, %rdx
movq %r15, %rcx
movl %ebp, %r8d
xorl %eax, %eax
callq 0x125a8
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsSessionLog
int pistatsSessionLog( char *strIn )
{
    char *sessionID;

    sessionID = rosterGetSessionID();

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

    return 0;
}

// Assembly:
pushq %rbx
callq 0x1360b
movq %rax, %rbx
leaq 0x5fc7(%rip), %rsi      # 0x1fa1a
leaq 0x53b3(%rip), %rdx      # 0x1ee0d
pushq $0x2
popq %rdi
movq %rax, %rcx
xorl %eax, %eax
callq 0x1920b
leaq 0x60d6(%rip), %rdi      # 0x1fb44
movq %rbx, %rsi
xorl %eax, %eax
callq 0x125a8
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/schroeder-lvb[P]sissm/src/pistats.c
// Function: pistatsObjectSynth
int pistatsObjectSynth( char *strIn )
{
    char *obj, *typ; 

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

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

    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
callq 0x13640
movq %rax, %rbx
callq 0x13648
movq %rax, %r14
leaq 0x5f83(%rip), %rsi      # 0x1fa1a
leaq 0x539f(%rip), %rdx      # 0x1ee3d
pushq $0x2
popq %rdi
movq %rbx, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x1920b
leaq 0x60a6(%rip), %rdi      # 0x1fb5b
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x125a8
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/./treeNode.h
// Function: treeNode::treeNode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, int)
treeNode(string str, int n, int t=0)
    {
        childnum = n;
        type = t;
        data = str;

        child = new treeNode*[childnum];
        for(int i=0; i<childnum; i++)
            child[i] = NULL;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, (%rdi)
andq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
movl %edx, 0x20(%rdi)
movl %ecx, 0x24(%rdi)
callq 0x2130
movslq 0x20(%rbx), %r14
leaq (,%r14,8), %rax
testq %r14, %r14
pushq $-0x1
popq %rdi
cmovnsq %rax, %rdi
callq 0x2030
movq %rax, 0x28(%rbx)
xorl %eax, %eax
testl %r14d, %r14d
cmovlel %eax, %r14d
cmpq %rax, %r14
je 0x7174
movq 0x28(%rbx), %rcx
andq $0x0, (%rcx,%rax,8)
incq %rax
jmp 0x7161
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x23c8
movq %r14, %rdi
callq 0x2340
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/./treeNode.h
// Function: treeNode::Clear(treeNode*)
void Clear(treeNode *t)
    {
        if(t == NULL) return ;
        int i;
        for(i=0; i<t->childnum; i++)
            Clear(t->child[i]);
        for(i=0; i<t->childnum; i++)
            delete t->child[i];
    }

// Assembly:
testq %rsi, %rsi
je 0x726b
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
xorl %r15d, %r15d
movslq 0x20(%rbx), %rax
cmpq %rax, %r15
jge 0x722d
movq 0x28(%rbx), %rax
movq (%rax,%r15,8), %rsi
movq %r14, %rdi
callq 0x71f6
incq %r15
jmp 0x720f
xorl %r12d, %r12d
pushq $0x30
popq %r14
cltq
cmpq %rax, %r12
jge 0x7263
movq 0x28(%rbx), %rax
movq (%rax,%r12,8), %r15
testq %r15, %r15
je 0x7250
movq %r15, %rdi
callq 0x23c8
movq %r15, %rdi
movq %r14, %rsi
callq 0x21d0
incq %r12
movl 0x20(%rbx), %eax
jmp 0x7234
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/codegen.cpp
// Function: genProgram(treeNode*)
void genProgram(treeNode* node)
{
//  freopen("t.s","w",stdout);
    cout << ".data" << endl;
    cout << "newline: .asciiz \"\\n\"" << endl;
    cout << ".text\n.globl main\n";
    genExtdefs(node->child[0], node->child[0]->type);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x15d47(%rip), %r14     # 0x1efd0
leaq 0xfa2a(%rip), %rsi      # 0x18cba
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x2120
leaq 0xfa19(%rip), %rsi      # 0x18cc0
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x2120
leaq 0xfa18(%rip), %rsi      # 0x18cd6
movq %r14, %rdi
callq 0x21a0
movq 0x28(%rbx), %rax
movq (%rax), %rdi
movl 0x24(%rdi), %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x92d9
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/codegen.cpp
// Function: genExtvars(treeNode*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void genExtvars(treeNode* node, int type, string scope)
{
    switch(type)
    {
        case 1:
        genDec(node->child[0], node->child[0]->type, "_G");
        break;
        case 2:
        genDec(node->child[0], node->child[0]->type, "_G");
        genExtvars(node->child[2], node->child[2]->type, "_G");
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x68, %rsp
movq %rdi, %rbx
cmpl $0x2, %esi
je 0x96eb
cmpl $0x1, %esi
jne 0x9756
movq 0x28(%rbx), %rax
movq (%rax), %rbx
movl 0x24(%rbx), %r14d
leaq 0xf1c3(%rip), %rsi      # 0x1888c
leaq -0x60(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x70d8
leaq -0x60(%rbp), %rdx
movq %rbx, %rdi
movl %r14d, %esi
callq 0x9836
leaq -0x60(%rbp), %rdi
jmp 0x9751
movq 0x28(%rbx), %rax
movq (%rax), %r14
movl 0x24(%r14), %r15d
leaq 0xf18f(%rip), %rsi      # 0x1888c
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x70d8
leaq -0x40(%rbp), %rdx
movq %r14, %rdi
movl %r15d, %esi
callq 0x9836
leaq -0x40(%rbp), %rdi
callq 0x23c8
movq 0x28(%rbx), %rax
movq 0x10(%rax), %rbx
movl 0x24(%rbx), %r14d
leaq 0xf157(%rip), %rsi      # 0x1888c
leaq -0x80(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x70d8
movq %rbx, %rdi
movl %r14d, %esi
callq 0x9699
leaq -0x80(%rbp), %rdi
callq 0x23c8
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
jmp 0x977c
jmp 0x9785
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
jmp 0x977c
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x23c8
jmp 0x9788
jmp 0x9785
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2340
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/codegen.cpp
// Function: genDefs(treeNode*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void genDefs(treeNode* node, int type, string scope)
{   
    //printf("has entered genDefs() ,type =%d \n", type);
    
    switch(type)
    {
        case 1:
    //  printf("ready to enter genDef()\n");
        genDef(node->child[0], node->child[0]->type, scope);
        genDefs(node->child[1], node->child[1]->type, scope);
        break;
        case 2:
        /*
        if(FT[scope] == 0)
        {
            FT[scope] = new map<string, int>();
        }*/
        break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
cmpl $0x1, %esi
jne 0xa053
movq %rdx, %r14
movq %rdi, %r15
movq 0x28(%rdi), %rax
movq (%rax), %r12
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x2280
movq %r12, %rdi
movq %rbx, %rdx
callq 0x151ff
leaq -0x60(%rbp), %rdi
callq 0x23c8
movq 0x28(%r15), %rax
movq 0x8(%rax), %r15
movl 0x24(%r15), %r12d
leaq -0x40(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2280
movq %r15, %rdi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x9fdd
leaq -0x40(%rbp), %rdi
callq 0x23c8
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa062
movq %rax, %r14
movq %rbx, %rdi
callq 0x23c8
movq %r14, %rdi
callq 0x2340
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/codegen.cpp
// Function: genStmts(treeNode*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int)
void genStmts(treeNode* node, int type, string scope, int labelN)
{
    switch(type)
    {
        case 1:
        genStmt(node->child[0], node->child[0]->type, scope, labelN);
        //
                genStmts(node->child[1], node->child[1]->type, scope, labelN);
        break;
        case 2:
        break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
cmpl $0x1, %esi
jne 0xa102
movq %rdx, %r15
movq %rdi, %r12
movq 0x28(%rdi), %rax
movl %ecx, -0x2c(%rbp)
movq (%rax), %r13
movl 0x24(%r13), %r14d
leaq -0x70(%rbp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x2280
movq %r13, %rdi
movl -0x2c(%rbp), %r13d
movl %r14d, %esi
movq %rbx, %rdx
movl %r13d, %ecx
callq 0xa126
leaq -0x70(%rbp), %rdi
callq 0x23c8
movq 0x28(%r12), %rax
movq 0x8(%rax), %r14
movl 0x24(%r14), %r12d
leaq -0x50(%rbp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2280
movq %r14, %rdi
movl %r12d, %esi
movq %rbx, %rdx
movl %r13d, %ecx
callq 0xa075
leaq -0x50(%rbp), %rdi
callq 0x23c8
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa113
movq %rax, %r14
movq %rbx, %rdi
callq 0x23c8
movq %r14, %rdi
callq 0x2340
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/codegen.cpp
// Function: genDecs(treeNode*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void genDecs(treeNode* node, int type, string scope)
{
    //printf("has entered genDecs()\n");

    switch(type)
    {
        case 1:
        genDec(node->child[0],node->child[0]->type, scope);
        genDecs(node->child[2],node->child[2]->type, scope);
        break;
        case 2:
        genDec(node->child[0],node->child[0]->type, scope);
        break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %rbx
movq %rdi, %r14
cmpl $0x2, %esi
je 0x152e5
cmpl $0x1, %esi
jne 0x15315
movq 0x28(%r14), %rax
movq (%rax), %r12
movl 0x24(%r12), %r13d
leaq -0x88(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2280
movq %r12, %rdi
movl %r13d, %esi
movq %r15, %rdx
callq 0x9836
leaq -0x88(%rbp), %rdi
callq 0x23c8
movq 0x28(%r14), %rax
movq 0x10(%rax), %r15
movl 0x24(%r15), %r12d
leaq -0x68(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2280
movq %r15, %rdi
movl %r12d, %esi
movq %r14, %rdx
callq 0x1525d
jmp 0x1530d
movq 0x28(%r14), %rax
movq (%rax), %r15
movl 0x24(%r15), %r12d
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2280
movq %r15, %rdi
movl %r12d, %esi
movq %r14, %rdx
callq 0x9836
movq %r14, %rdi
callq 0x23c8
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x68(%rbp), %r15
jmp 0x15339
movq %rax, %rbx
leaq -0x48(%rbp), %r15
jmp 0x15339
movq %rax, %rbx
movq %r15, %rdi
callq 0x23c8
movq %rbx, %rdi
callq 0x2340
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/codegen.cpp
// Function: genInit(treeNode*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void genInit(treeNode* node, int type, string scope)
{
    switch(type)
    {
        case 1:
            genExp(node->child[0], node->child[0]->type, scope);
            break;
        case 2:// struct
            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
cmpl $0x1, %esi
jne 0x1538e
movq 0x28(%rdi), %rax
movq (%rax), %rbx
movl 0x24(%rbx), %r14d
leaq -0x38(%rbp), %r15
movq %r15, %rdi
movq %rdx, %rsi
callq 0x2280
movq %rbx, %rdi
movl %r14d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0xb2d0
leaq -0x38(%rbp), %rdi
callq 0x23c8
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
callq 0x23c8
movq %rbx, %rdi
callq 0x2340
// File: /workspace/github_c_makefile_star2_O2/zyearn[P]SmallC/codegen.cpp
// Function: genArgs(treeNode*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
int genArgs(treeNode* node, int type, string scope)
{
    switch(type)
    {
        case 1:
        {
            genExp(node->child[0], node->child[0]->type, scope);
            cout << "add $sp, $sp, -4" << endl;
            cout << "sw $t0, 0($sp)" << endl;
            int i = genArgs(node->child[2], node->child[2]->type, scope);
            return 1+i;
            break;
        }
        case 2:
        {
            genExp(node->child[0], node->child[0]->type, scope);
            cout << "add $sp, $sp, -4" << endl;
            cout << "sw $t0, 0($sp)" << endl;
            return 1;
            break;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %r14
movq 0x28(%rdi), %rax
movq (%rax), %r13
movl 0x24(%r13), %r12d
cmpl $0x1, %esi
jne 0x15475
movq %rdi, %r15
leaq -0x88(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2280
movq %r13, %rdi
movl %r12d, %esi
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0xb2d0
leaq -0x88(%rbp), %rdi
callq 0x23c8
movq 0x9bc3(%rip), %rbx      # 0x1efd0
leaq 0x38fd(%rip), %rsi      # 0x18d11
movq %rbx, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x2120
leaq 0x3ad6(%rip), %rsi      # 0x18f01
movq %rbx, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x2120
movq 0x28(%r15), %rax
movq 0x10(%rax), %r15
movl 0x24(%r15), %r12d
leaq -0x68(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2280
movq %r15, %rdi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x153ad
movl %eax, %r14d
leaq -0x68(%rbp), %rdi
callq 0x23c8
incl %r14d
jmp 0x154d6
leaq -0x48(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2280
movq %r13, %rdi
movl %r12d, %esi
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0xb2d0
leaq -0x48(%rbp), %rdi
callq 0x23c8
movq 0x9b2c(%rip), %rbx      # 0x1efd0
leaq 0x3866(%rip), %rsi      # 0x18d11
movq %rbx, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x2120
leaq 0x3a3f(%rip), %rsi      # 0x18f01
movq %rbx, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x2120
pushq $0x1
popq %r14
movl %r14d, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x154ec
jmp 0x154ec
movq %rax, %r14
movq %rbx, %rdi
callq 0x23c8
movq %r14, %rdi
callq 0x2340
nop
// File: /workspace/github_c_makefile_star2_O2/begriffs[P]pthread-test/alarm_thread.c
// Function: alarm_thread
void *alarm_thread(struct alarm *a)
{
	int status = pthread_detach(pthread_self());
	if (status != 0)
	{
		fprintf(stderr, "pthread_detach: %s\n", strerror(status));
		exit(EXIT_FAILURE);
	}

	sleep(a->seconds);
	printf("(%d) %s\n", a->seconds, a->message);
	free(a);

	return NULL;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x10d0
movq %rax, %rdi
callq 0x10a0
testl %eax, %eax
jne 0x1248
movl (%rbx), %edi
callq 0x1100
movl (%rbx), %esi
leaq 0x4(%rbx), %rdx
leaq 0xde3(%rip), %rdi       # 0x2018
xorl %eax, %eax
callq 0x1050
movq %rbx, %rdi
callq 0x1030
xorl %eax, %eax
popq %rbx
retq
movq 0x2da9(%rip), %rcx      # 0x3ff8
movq (%rcx), %rbx
movl %eax, %edi
callq 0x10f0
leaq 0xda4(%rip), %rsi       # 0x2004
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1080
pushq $0x1
popq %rdi
callq 0x10e0
// File: /workspace/github_c_makefile_star2_O2/begriffs[P]pthread-test/alarm_thread.c
// Function: main
int main(void)
{
	int status;
	char line[128];
	struct alarm *a;
	pthread_t thread;

	while (printf("Alarm> ") && fgets(line, sizeof(line), stdin))
	{
		if (strlen(line) <= 1)
			continue;

		if (!(a = malloc(sizeof(*a))))
		{
			fputs("Failed to allocate alarm\n", stderr);
			return EXIT_FAILURE;
		}
		if (sscanf(line, "%d %64[^\n]", &a->seconds, a->message) < 2)
		{
			fputs("Bad command\n", stderr);
			free(a);
		}
		else
		{
			status = pthread_create(&thread, NULL, (void *(*)(void*))alarm_thread, a);
			if (status != 0)
			{
				fprintf(stderr, "pthread_create: %s\n", strerror(status));
				return EXIT_FAILURE;
			}
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
leaq 0xd94(%rip), %r14       # 0x2021
movq 0x2d44(%rip), %rbx      # 0x3fd8
leaq 0x10(%rsp), %r15
pushq $0x44
popq %r12
leaq 0xd9f(%rip), %r13       # 0x2043
movq %r14, %rdi
xorl %eax, %eax
callq 0x1050
testl %eax, %eax
je 0x1344
movq (%rbx), %rdx
movq %r15, %rdi
movl $0x80, %esi
callq 0x1070
testq %rax, %rax
je 0x1344
movq %r15, %rdi
callq 0x1040
cmpq $0x2, %rax
jb 0x12a4
movq %r12, %rdi
callq 0x1090
testq %rax, %rax
je 0x1358
movq %rax, %rbp
movq %rax, %rcx
addq $0x4, %rcx
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10b0
cmpl $0x1, %eax
jle 0x1321
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
leaq -0x107(%rip), %rdx      # 0x120c
movq %rbp, %rcx
callq 0x10c0
testl %eax, %eax
je 0x12a4
jmp 0x1370
movq 0x2cd0(%rip), %rax      # 0x3ff8
movq (%rax), %rsi
leaq 0xd1c(%rip), %rdi       # 0x204e
callq 0x1060
movq %rbp, %rdi
callq 0x1030
jmp 0x12a4
xorl %eax, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x2c99(%rip), %rax      # 0x3ff8
movq (%rax), %rsi
leaq 0xcc0(%rip), %rdi       # 0x2029
callq 0x1060
jmp 0x1395
movq 0x2c81(%rip), %rcx      # 0x3ff8
movq (%rcx), %rbx
movl %eax, %edi
callq 0x10f0
leaq 0xcd3(%rip), %rsi       # 0x205b
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1080
pushq $0x1
popq %rax
jmp 0x1346
// File: /workspace/github_c_makefile_star2_O2/Joy-Division[P]tools-zoe/pak-extract.c
// Function: main
int main( int argc, char **argv ) {
	
	fileEntry workfile;
	
	unsigned char temp[4];
	
	memset( workfile.name, 0, FILENAMELENGTH );
	
	if( argc < 2 ) {
		printf("Not enough args!\nUse: %s PAK-file\n", argv[0]);
		return 1;
	}
	
	unsigned int numFiles, workfiles;
	FILE *f, *o;
	
	if( !(f = fopen( argv[1], "rb" ))) {
		printf("Couldnt open file %s\n", argv[1]);
		return 1;
	}
	
	fread( temp, 4, 1, f );
	numFiles  = temp[3] << 24;
	numFiles |= temp[2] << 16;
	numFiles |= temp[1] << 8;
	numFiles |= temp[0];
	
	fseek( f, 16, SEEK_SET );
	
	printf("Number of files: %u\n", numFiles );
	
	for( workfiles = 0; workfiles < numFiles; workfiles++ ) {
		fread( &workfile, sizeof(workfile), 1, f );
		printf("Current file: %s\n", workfile.name);
		
		if( !(o = fopen( workfile.name, "wb" ))) {
			printf("Couldnt open output %s\n", workfile.name);
			return 1;
		}
		
		writeFile( f, workfile.size, o );
		fclose(o);
		memset( workfile.name, 0, FILENAMELENGTH );
	}
	printf("Done.\n");
	fclose(f);
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, 0x20(%rsp)
cmpl $0x1, %edi
jg 0x1291
movq (%r14), %rsi
leaq 0xdc6(%rip), %rdi       # 0x2052
jmp 0x1383
movq 0x8(%r14), %rdi
leaq 0xdd9(%rip), %rsi       # 0x2075
callq 0x1080
testq %rax, %rax
je 0x1352
movq %rax, %rbx
leaq 0xc(%rsp), %r14
pushq $0x4
popq %rsi
pushq $0x1
popq %rdx
movq %r14, %rdi
movq %rax, %rcx
callq 0x1040
movl (%r14), %ebp
pushq $0x10
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1070
leaq 0xdb4(%rip), %rdi       # 0x208e
movl %ebp, %esi
xorl %eax, %eax
callq 0x1060
leaq 0x10(%rsp), %r15
leaq 0xdb4(%rip), %r13       # 0x20a3
leaq 0xdbf(%rip), %r14       # 0x20b5
subl $0x1, %ebp
jb 0x135f
movq %r15, %rdi
pushq $0x30
popq %rsi
pushq $0x1
popq %rdx
movq %rbx, %rcx
callq 0x1040
movq %r13, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x1060
movq %r15, %rdi
movq %r14, %rsi
callq 0x1080
testq %rax, %rax
je 0x1377
movq %rax, %r12
movl 0x3c(%rsp), %esi
movq %rbx, %rdi
movq %rax, %rdx
callq 0x11ac
movq %r12, %rdi
callq 0x1050
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, 0x20(%rsp)
jmp 0x12f6
movq 0x8(%r14), %rsi
leaq 0xd1b(%rip), %rdi       # 0x2078
jmp 0x1383
leaq 0xd6a(%rip), %rdi       # 0x20d0
callq 0x1030
movq %rbx, %rdi
callq 0x1050
xorl %eax, %eax
jmp 0x138d
leaq 0xd3a(%rip), %rdi       # 0x20b8
leaq 0x10(%rsp), %rsi
xorl %eax, %eax
callq 0x1060
pushq $0x1
popq %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/hkshenSmart[P]ONVIF-discovery_cs/discovery-nvt.c
// Function: main
int main(int argc, char *argv[])
{
	struct soap soap;
	struct ip_mreq mcast;
	int count=1;
	
	soap_init2(&soap, SOAP_IO_UDP|SOAP_IO_FLUSH, SOAP_IO_UDP|SOAP_IO_FLUSH);
	
    soap_set_namespaces(&soap, namespaces); 
	//soap_set_mode(&soap, SOAP_C_UTFSTRING);
	
	if(!soap_valid_socket(soap_bind(&soap, NULL, 3702, 10)))
	{ 
		soap_print_fault(&soap, stderr);
		exit(1);
	}
	
	mcast.imr_multiaddr.s_addr = inet_addr("239.255.255.250");
	mcast.imr_interface.s_addr = htonl(INADDR_ANY);
	if(setsockopt(soap.master, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mcast, sizeof(mcast)) < 0)
	{
		printf("setsockopt error!\n");
		return 0;
	}	

	for(;;)
	{ 
		printf("Now Accepting requests...waiting\n");
		if(soap_serve(&soap))
			soap_print_fault(&soap, stderr);
	
		soap_destroy(&soap);
		soap_end(&soap);

		printf("�ͻ��˵�IP��ַ��\n");
		printf("Accepted count:%d, connection from IP = %lu.%lu.%lu.%lu socket = %d \r\n",
				count, ((soap.ip)>>24)&0xFF, ((soap.ip)>>16)&0xFF, ((soap.ip)>>8)&0xFF, (soap.ip)&0xFF, (soap.socket));
		count++;
		printf("====================================================================\r\n");

	}
	
	soap_done(&soap);
	
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x27888, %rsp          # imm = 0x27888
leaq 0x18(%rsp), %rbx
pushq $0x4
popq %rdx
movq %rbx, %rdi
movl %edx, %esi
callq 0x16345
leaq 0x2fbb9(%rip), %rsi     # 0x331e0
movq %rbx, %rdi
callq 0x185d2
pushq $0xa
popq %rcx
movq %rbx, %rdi
xorl %esi, %esi
movl $0xe76, %edx            # imm = 0xE76
callq 0x1339c
cmpl $-0x1, %eax
je 0x374b
leaq 0x1eb75(%rip), %rdi     # 0x221c6
callq 0x31f0
leaq 0x10(%rsp), %rcx
movl %eax, (%rcx)
andl $0x0, 0x4(%rcx)
movl 0xc148(%rsp), %edi
pushq $0x23
popq %rdx
pushq $0x8
popq %r8
xorl %esi, %esi
callq 0x30b0
testl %eax, %eax
js 0x372b
pushq $0x1
popq %rbx
leaq 0x18(%rsp), %r15
leaq 0x1ebb1(%rip), %r12     # 0x2223e
movl $0xff, %r14d
leaq 0x1eb3c(%rip), %r13     # 0x221d6
leaq 0x1ebae(%rip), %rbp     # 0x2224f
leaq 0x1eb75(%rip), %rdi     # 0x2221d
callq 0x3090
movq %r15, %rdi
callq 0xf080
testl %eax, %eax
je 0x36cb
movq 0x2f938(%rip), %rax     # 0x32ff8
movq (%rax), %rsi
movq %r15, %rdi
callq 0x2190a
movq %r15, %rdi
xorl %esi, %esi
callq 0x17217
movq %r15, %rdi
callq 0x18dec
movq %r12, %rdi
callq 0x3090
movq 0x1f238(%rsp), %rdx
movl %edx, %ecx
movl %edx, %r8d
movzbl %dl, %r9d
shrl $0x18, %edx
shrl $0x10, %ecx
andl %r14d, %ecx
shrl $0x8, %r8d
andl %r14d, %r8d
movl 0xc14c(%rsp), %eax
movl %eax, (%rsp)
movq %r13, %rdi
movl %ebx, %esi
xorl %eax, %eax
callq 0x3150
incl %ebx
movq %rbp, %rdi
callq 0x3090
jmp 0x36a1
leaq 0x1eb63(%rip), %rdi     # 0x22295
callq 0x3090
xorl %eax, %eax
addq $0x27888, %rsp          # imm = 0x27888
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x2f8a6(%rip), %rax     # 0x32ff8
movq (%rax), %rsi
leaq 0x18(%rsp), %rdi
callq 0x2190a
pushq $0x1
popq %rdi
callq 0x3330
nop
// File: /workspace/github_c_makefile_star2_O2/hkshenSmart[P]ONVIF-discovery_cs/soapServer.c
// Function: soap_serve
int SOAP_FMAC6 soap_serve(struct soap *soap)
{
#ifndef WITH_FASTCGI
	unsigned int k = soap->max_keep_alive;
#endif
	do
	{
#ifndef WITH_FASTCGI
		if (soap->max_keep_alive > 0 && !--k)
			soap->keep_alive = 0;
#endif
		if (soap_begin_serve(soap))
		{	if (soap->error >= SOAP_STOP)
				continue;
			return soap->error;
		}
		if (soap_serve_request(soap) || (soap->fserveloop && soap->fserveloop(soap)))
		{
#ifdef WITH_FASTCGI
			soap_send_fault(soap);
#else
			return soap_send_fault(soap);
#endif
		}

#ifdef WITH_FASTCGI
		soap_destroy(soap);
		soap_end(soap);
	} while (1);
#else
	}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl 0x1f23c(%rdi), %eax
movl %eax, %ebp
testl %eax, %eax
je 0xf0a0
decl %ebp
jne 0xf0a0
andw $0x0, 0x1f22c(%rbx)
xorl %ebp, %ebp
movq %rbx, %rdi
callq 0x1f6a1
testl %eax, %eax
je 0xf0bb
movl 0x1f274(%rbx), %eax
cmpl $0x3e7, %eax            # imm = 0x3E7
jg 0xf0dc
jmp 0xf0f0
movq %rbx, %rdi
callq 0xf105
testl %eax, %eax
jne 0xf0f7
movq 0xc050(%rbx), %rax
testq %rax, %rax
je 0xf0dc
movq %rbx, %rdi
callq *%rax
testl %eax, %eax
jne 0xf0f7
cmpw $0x0, 0x1f22c(%rbx)
je 0xf0ee
movl 0x1f23c(%rbx), %eax
jmp 0xf08e
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x1fd38
// File: /workspace/github_c_makefile_star2_O2/hkshenSmart[P]ONVIF-discovery_cs/soapServer.c
// Function: soap_serve_request
SOAP_FMAC6 soap_serve_request(struct soap *soap)
{
	soap_peek_element(soap);
	if (!soap_match_tag(soap, soap->tag, "d:Probe"))
		return soap_serve___dndl__Probe(soap);
	if (!soap_match_tag(soap, soap->tag, "d:Hello"))
		return soap_serve___dnrd__Hello(soap);
	if (!soap_match_tag(soap, soap->tag, "d:Bye"))
		return soap_serve___dnrd__Bye(soap);
	return soap->error = SOAP_NO_METHOD;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x11413
leaq 0x1c998(%rbx), %r14
leaq 0x13809(%rip), %rdx     # 0x22928
movq %rbx, %rdi
movq %r14, %rsi
callq 0x13239
testl %eax, %eax
je 0xf16f
leaq 0x139ec(%rip), %rdx     # 0x22b21
movq %rbx, %rdi
movq %r14, %rsi
callq 0x13239
testl %eax, %eax
je 0xf17e
leaq 0x139f3(%rip), %rdx     # 0x22b3e
movq %rbx, %rdi
movq %r14, %rsi
callq 0x13239
testl %eax, %eax
je 0xf18d
movl $0xd, 0x1f274(%rbx)
pushq $0xd
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xf19c
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xf36b
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xf53a
// File: /workspace/github_c_makefile_star2_O2/openshmem-org[P]openshmem-examples/c/amo-fetch.c
// Function: main
int
main()
{
    int me;

    shmem_init();
    me = shmem_my_pe();

    if (me == 0) {
        const int fetched = shmem_int_atomic_fetch(&dst, 1);

        printf("%d: dst = %d, fetched value = %d\n", me, dst, fetched);
    }

    shmem_barrier_all();

    printf("%d: dst = %d\n", me, dst);

    shmem_finalize();

    return 0;
}

// Assembly:
pushq %rbx
callq 0x1080
callq 0x1060
movl %eax, %ebx
testl %eax, %eax
jne 0x11c4
leaq 0x2eb4(%rip), %rdi      # 0x4058
pushq $0x1
popq %rsi
callq 0x1040
movl 0x2ea6(%rip), %edx      # 0x4058
leaq 0xe4b(%rip), %rdi       # 0x2004
xorl %esi, %esi
movl %eax, %ecx
xorl %eax, %eax
callq 0x1030
callq 0x1070
movl 0x2e89(%rip), %edx      # 0x4058
leaq 0xe50(%rip), %rdi       # 0x2026
movl %ebx, %esi
xorl %eax, %eax
callq 0x1030
callq 0x1050
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/dlbeer[P]dhara/ecc/hamming.c
// Function: hamming_repair
int hamming_repair(uint8_t *chunk, size_t len, hamming_ecc_t syndrome)
{
	int pos = 0;
	int pos_bit = 1;
	int i;

	/* There might be no error */
	if (!syndrome)
		return 0;

	/* The single-bit error might be in the ECC data itself. */
	if (!(syndrome & (syndrome - 1)))
		return 0;

	/* Otherwise, go on the assumption that there's a single-bit
	 * error in the chunk. If this is true, then exactly one out of
	 * every complementary pair of syndrome bits should be set.
	 */
	for (i = 0; i < HAMMING_LOG2_CHUNK_BITS; i++) {
		const int s = syndrome & 3;

		if (s == 1)
			pos |= pos_bit;
		else if (s != 2)
			return -1;

		syndrome >>= 2;
		pos_bit <<= 1;
	}

	/* Flip the bit back */
	if ((pos >> 3) < len)
		chunk[pos >> 3] ^= 1 << (pos & 7);

	return 0;
}

// Assembly:
leal -0x1(%rdx), %ecx
xorl %eax, %eax
testl %ecx, %edx
je 0x12e5
pushq $0x1
popq %rax
xorl %ecx, %ecx
pushq $0xc
popq %r8
subl $0x1, %r8d
jb 0x12c6
movl %edx, %r9d
andl $0x3, %r9d
cmpl $0x2, %r9d
je 0x12bf
cmpl $0x1, %r9d
jne 0x12e2
orl %eax, %ecx
shrl $0x2, %edx
addl %eax, %eax
jmp 0x12a4
movl %ecx, %eax
sarl $0x3, %eax
movslq %eax, %rdx
xorl %eax, %eax
cmpq %rsi, %rdx
jae 0x12e5
andb $0x7, %cl
pushq $0x1
popq %rsi
shll %cl, %esi
xorb %sil, (%rdi,%rdx)
retq
pushq $-0x1
popq %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O2/dlbeer[P]dhara/tests/hamming.c
// Function: test_properties
static void test_properties(const uint8_t *block)
{
	hamming_ecc_t e;
	int i;

	e = hamming_syndrome(block, HAMMING_CHUNK_SIZE,
			     block + HAMMING_CHUNK_SIZE);
	assert(!e);

	for (i = 0; i < 20; i++)
		flip_test(block);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rdi, %rbx
leaq 0x200(%rdi), %rdx
movl $0x200, %esi            # imm = 0x200
callq 0x1279
testl %eax, %eax
jne 0x1473
pushq $0x14
popq %rbp
leaq 0x200(%rsp), %r14
movq %rsp, %r15
movl $0x1018, %r12d          # imm = 0x1018
pushq $0x1
popq %r13
subl $0x1, %ebp
jb 0x1444
movl $0x203, %edx            # imm = 0x203
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1060
callq 0x1070
cqto
idivq %r12
movq %rdx, %rcx
movl %ecx, %eax
sarl $0x3, %eax
andb $0x7, %cl
movl %r13d, %edx
shll %cl, %edx
cltq
xorb %dl, (%rsp,%rax)
movl $0x200, %esi            # imm = 0x200
movq %r15, %rdi
movq %r14, %rdx
callq 0x1279
testl %eax, %eax
je 0x1456
movl $0x200, %esi            # imm = 0x200
movq %r15, %rdi
movl %eax, %edx
callq 0x1292
movl $0x200, %edx            # imm = 0x200
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1080
testl %eax, %eax
je 0x13c0
leaq 0xd37(%rip), %rdi       # 0x2169
leaq 0xcda(%rip), %rsi       # 0x2113
leaq 0xd09(%rip), %rcx       # 0x2149
pushq $0x32
jmp 0x146d
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xcb4(%rip), %rdi       # 0x2111
leaq 0xcaf(%rip), %rsi       # 0x2113
leaq 0xcde(%rip), %rcx       # 0x2149
pushq $0x2e
popq %rdx
callq 0x1040
leaq 0xc96(%rip), %rdi       # 0x2110
leaq 0xc92(%rip), %rsi       # 0x2113
leaq 0xc9b(%rip), %rcx       # 0x2123
pushq $0x3c
jmp 0x146d
// File: /workspace/github_c_makefile_star2_O2/robertdavidgraham[P]wc2/wc2.c
// Function: build_urow
void build_urow(unsigned ubase, unsigned id, unsigned next)
{
    size_t i;
    unsigned default_state;

    default_state = table[ubase + ILLEGAL][0];

    if (next == 0)
        next = default_state;
    else
        next = ubase + next;

    memcpy(table[ubase + id], table[ubase + ILLEGAL], 256);

    for (i=0x80; i<0xC0; i++) {
        table[ubase + id][i] = next;
    }
    for (i=0xC0; i<0x100; i++) {
        table[ubase + id][i] = ubase + ILLEGAL;
    }

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
leal 0x1e(%rdi), %r14d
movq %r14, %rsi
shlq $0x8, %rsi
leaq 0x3c81(%rip), %r15      # 0x50f0
addq %r15, %rsi
testl %edx, %edx
je 0x147c
movl %edx, %ebp
addl %edi, %ebp
jmp 0x147f
movb (%rsi), %bpl
addl %edi, %ebx
shlq $0x8, %rbx
leaq (%rbx,%r15), %rdi
movl $0x100, %edx            # imm = 0x100
callq 0x1100
leaq (%rbx,%r15), %rax
addq $0x80, %rax
xorl %ecx, %ecx
cmpq $0x40, %rcx
je 0x14ae
movb %bpl, (%rax,%rcx)
incq %rcx
jmp 0x149f
leaq (%rbx,%r15), %rax
addq $0xc0, %rax
xorl %ecx, %ecx
cmpq $0x40, %rcx
je 0x14c9
movb %r14b, (%rax,%rcx)
incq %rcx
jmp 0x14ba
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/robertdavidgraham[P]wc2/wc2.c
// Function: print_results
static void
print_results(const char *filename, struct results *results, struct config *cfg)
{
    int needs_space = 0; /* space needed between output */
    unsigned width = cfg->column_width;

    /* -l */
    if (cfg->is_counting_lines)
        printf("%s%*lu", needs_space++?" ":"", width, results->line_count);

    /* -w */
    if (cfg->is_counting_words)
        printf("%s%*lu", needs_space++?" ":"", width, results->word_count);

    /* -c */
    if (cfg->is_counting_bytes)
        printf("%s%*lu", needs_space++?" ":"", width, results->byte_count);

    /* -m */
    if (cfg->is_counting_chars)
        printf("%s%*lu", needs_space++?" ":"", width, results->char_count);

    /* NULL if <stdin>, "total" for the last line showing totals, otherwise,
     * the name of the file that was processed */
    if (filename)
        printf("%s%s", needs_space++?" ":"", filename);
    printf("\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
movl 0xc(%rdx), %r13d
movl 0x20(%rdx), %ebp
testl %r13d, %r13d
je 0x219b
pushq $0x1
popq %r12
movq (%r14), %rcx
leaq 0xf1a(%rip), %rdi       # 0x30a3
leaq 0xf02(%rip), %rsi       # 0x3092
movl %ebp, %edx
xorl %eax, %eax
callq 0x10c0
jmp 0x219e
xorl %r12d, %r12d
cmpl $0x0, 0x10(%r15)
je 0x21d1
incl %r12d
testl %r13d, %r13d
leaq 0xee0(%rip), %rax       # 0x3092
leaq 0xef1(%rip), %rsi       # 0x30aa
cmoveq %rax, %rsi
movq 0x8(%r14), %rcx
leaq 0xedb(%rip), %rdi       # 0x30a3
movl %ebp, %edx
xorl %eax, %eax
callq 0x10c0
cmpl $0x0, 0x14(%r15)
je 0x2209
leal 0x1(%r12), %r13d
testl %r12d, %r12d
leaq 0xeab(%rip), %rax       # 0x3092
leaq 0xebc(%rip), %rsi       # 0x30aa
cmoveq %rax, %rsi
movq 0x18(%r14), %rcx
leaq 0xea6(%rip), %rdi       # 0x30a3
movl %ebp, %edx
xorl %eax, %eax
callq 0x10c0
movl %r13d, %r12d
cmpl $0x0, 0x18(%r15)
je 0x223d
testl %r12d, %r12d
leaq 0xe78(%rip), %rax       # 0x3092
leaq 0xe89(%rip), %rsi       # 0x30aa
cmoveq %rax, %rsi
movq 0x10(%r14), %rcx
leaq 0xe73(%rip), %rdi       # 0x30a3
movl %ebp, %edx
xorl %eax, %eax
callq 0x10c0
pushq $0x1
popq %r12
testq %rbx, %rbx
je 0x2268
testl %r12d, %r12d
leaq 0xe46(%rip), %rax       # 0x3092
leaq 0xe57(%rip), %rsi       # 0x30aa
cmoveq %rax, %rsi
leaq 0xe4e(%rip), %rdi       # 0x30ac
movq %rbx, %rdx
xorl %eax, %eax
callq 0x10c0
pushq $0xa
popq %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1040
// File: /workspace/github_c_makefile_star2_O2/robertdavidgraham[P]wc2/wc2.c
// Function: print_help
static void
print_help(void)
{
    printf("wc -- word, line, and byte or character count\n");
    printf("use:\n wc [-c|-m][-lw][file...]\n");
    printf("where:\n");
    printf(" -c\tPrint the number of bytes in each input file.\n");
    printf(" -l\tPrint the number of newlines in each input file.\n");
    printf(" -m\tPrint number of multibyte characters in each input file.\n");
    printf(" -w\tPrint the number of words in each input file.\n");
    printf("If no files specified, reads from stdin.\n");
    printf("If no options specified, -lwc will be used.\n");
}

// Assembly:
pushq %rax
leaq 0xe2b(%rip), %rdi       # 0x30b1
callq 0x1070
leaq 0xe4d(%rip), %rdi       # 0x30df
callq 0x1070
leaq 0xe60(%rip), %rdi       # 0x30fe
callq 0x1070
leaq 0xe5b(%rip), %rdi       # 0x3105
callq 0x1070
leaq 0xe81(%rip), %rdi       # 0x3137
callq 0x1070
leaq 0xeaa(%rip), %rdi       # 0x316c
callq 0x1070
leaq 0xedb(%rip), %rdi       # 0x31a9
callq 0x1070
leaq 0xf01(%rip), %rdi       # 0x31db
callq 0x1070
leaq 0xf1e(%rip), %rdi       # 0x3204
popq %rax
jmp 0x1070
// File: /workspace/github_c_makefile_star2_O2/Tarsnap[P]spiped/spiped/dispatch.c
// Function: dispatch_accept
void *
dispatch_accept(int s, const char * tgt, double rtime, struct sock_addr ** sas,
    const struct sock_addr * sa_b, int decr, int nopfs, int requirepfs,
    int nokeepalive, const struct proto_secret * K, size_t nconn_max,
    double timeo, int * conndone)
{
	struct accept_state * A;

	/* Bake a cookie. */
	if ((A = malloc(sizeof(struct accept_state))) == NULL)
		goto err0;
	A->s = s;
	A->tgt = tgt;
	A->sas = sas;
	A->sa_b = sa_b;
	A->rtime = rtime;
	A->decr = decr;
	A->nopfs = nopfs;
	A->requirepfs = requirepfs;
	A->nokeepalive = nokeepalive;
	A->conndone = conndone;
	A->shutdown_requested = 0;
	A->K = K;
	A->nconn = 0;
	A->nconn_max = nconn_max;
	A->timeo = timeo;
	A->T = NULL;
	A->accept_cookie = NULL;
	A->dnstimer_cookie = NULL;
	LIST_INIT(&A->conn_cookies);

	/* If address re-resolution is enabled... */
	if (rtime > 0.0) {
		/* Launch an address resolution thread. */
		if ((A->T = dnsthread_spawn()) == NULL)
			goto err1;

		/* Re-resolve the target address after a while. */
		if ((A->dnstimer_cookie = events_timer_register_double(
		    callback_resolveagain, A, A->rtime)) == NULL)
			goto err2;
	}

	/* Accept a connection. */
	if (doaccept(A))
		goto err3;

	/* Success! */
	return (A);

err3:
	if (A->dnstimer_cookie != NULL)
		events_timer_cancel(A->dnstimer_cookie);
err2:
	if (A->T != NULL)
		dnsthread_kill(A->T);
err1:
	free(A);
err0:
	/* Failure! */
	return (NULL);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movsd %xmm1, 0x10(%rsp)
movl %r9d, 0x4(%rsp)
movl %r8d, %r14d
movq %rcx, %r15
movq %rdx, %r12
movsd %xmm0, 0x8(%rsp)
movq %rsi, %r13
movl %edi, %ebp
movl $0x88, %edi
callq 0x31a0
testq %rax, %rax
je 0x49c9
movq %rax, %rbx
movq 0x70(%rsp), %rax
movq 0x60(%rsp), %rcx
movl 0x58(%rsp), %edx
movl 0x50(%rsp), %esi
movl %ebp, (%rbx)
movq %r13, 0x8(%rbx)
movq %r12, 0x10(%rbx)
movq %r15, 0x18(%rbx)
movsd 0x8(%rsp), %xmm1
movsd %xmm1, 0x20(%rbx)
movl %r14d, 0x28(%rbx)
movl 0x4(%rsp), %edi
movl %edi, 0x2c(%rbx)
movl %esi, 0x30(%rbx)
movl %edx, 0x34(%rbx)
movq %rax, 0x38(%rbx)
andl $0x0, 0x40(%rbx)
movq %rcx, 0x48(%rbx)
andq $0x0, 0x50(%rbx)
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movq 0x68(%rsp), %rax
movq %rax, 0x58(%rbx)
movsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x60(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x68(%rbx)
movupd %xmm0, 0x78(%rbx)
jbe 0x4996
callq 0x86a4
movq %rax, 0x80(%rbx)
testq %rax, %rax
je 0x49c1
movsd 0x20(%rbx), %xmm0
leaq 0x58(%rip), %rdi        # 0x49dd
movq %rbx, %rsi
callq 0x5d4e
movq %rax, 0x70(%rbx)
testq %rax, %rax
je 0x49b0
movq %rbx, %rdi
callq 0x49fc
testl %eax, %eax
je 0x49cb
movq 0x70(%rbx), %rdi
testq %rdi, %rdi
je 0x49b0
callq 0x5d83
movq 0x80(%rbx), %rdi
testq %rdi, %rdi
je 0x49c1
callq 0x8d11
movq %rbx, %rdi
callq 0x32b0
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/Tarsnap[P]spiped/spiped/dispatch.c
// Function: doaccept
static int
doaccept(struct accept_state * A)
{
	int rc = 0;

	/* Warn about reaching nconn_max. */
	if (A->nconn >= A->nconn_max) {
		warn0("Maximum number of connections (%zu) reached",
		    A->nconn_max);
	}

	/* If we can, accept a new connection. */
	if ((A->nconn < A->nconn_max) && (A->accept_cookie == NULL) &&
	    !A->shutdown_requested) {
		if ((A->accept_cookie =
		    network_accept(A->s, callback_gotconn, A)) == NULL)
			rc = -1;
	}

	/* Return success/fail status. */
	return (rc);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x50(%rdi), %rcx
movq 0x58(%rdi), %rsi
cmpq %rsi, %rcx
jb 0x4a2b
leaq 0xb9f7(%rip), %rdi      # 0x1040b
xorl %eax, %eax
callq 0x8520
callq 0x3480
andl $0x0, (%rax)
movq 0x50(%rbx), %rcx
movq 0x58(%rbx), %rsi
xorl %eax, %eax
cmpq %rsi, %rcx
jae 0x4a5f
cmpq $0x0, 0x68(%rbx)
jne 0x4a5f
cmpl $0x0, 0x40(%rbx)
jne 0x4a5f
movl (%rbx), %edi
leaq 0x154(%rip), %rsi       # 0x4b9c
movq %rbx, %rdx
callq 0x5ef0
movq %rax, %rcx
movq %rax, 0x68(%rbx)
xorl %eax, %eax
cmpq $0x1, %rcx
sbbl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/Tarsnap[P]spiped/spiped/dispatch.c
// Function: dispatch_shutdown
void
dispatch_shutdown(void * dispatch_cookie)
{
	struct accept_state * A = dispatch_cookie;
	struct conn_list_node * C;

	/*
	 * Shutdown any open connections.  proto_conn_drop() will call
	 * callback_conndied(), which removes the relevant conn_list_node from
	 * the list of conn_cookies.
	 */
	while ((C = LIST_FIRST(&A->conn_cookies)) != NULL) {
		proto_conn_drop(C->conn_cookie, PROTO_CONN_CANCELLED);

		/*
		 * Convince static analyzers that C->conn_cookie is no longer
		 * in the list.
		 */
		assert(C != LIST_FIRST(&A->conn_cookies));
	}

	if (A->accept_cookie != NULL)
		network_accept_cancel(A->accept_cookie);
	if (A->dnstimer_cookie != NULL)
		events_timer_cancel(A->dnstimer_cookie);
	if (A->T != NULL)
		dnsthread_kill(A->T);
	sock_addr_freelist(A->sas);
	if (close(A->s))
		warnp("close");
	free(A);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x78(%rdi), %r14
pushq $0x1
popq %rbp
testq %r14, %r14
je 0x4aa9
movq (%r14), %rdi
movl %ebp, %esi
callq 0x8e94
movq 0x78(%rbx), %rax
cmpq %rax, %r14
movq %rax, %r14
jne 0x4a6f
leaq 0xb92e(%rip), %rdi      # 0x103bf
leaq 0xb949(%rip), %rsi      # 0x103e1
leaq 0xb94d(%rip), %rcx      # 0x103ec
movl $0x132, %edx            # imm = 0x132
callq 0x3150
movq 0x68(%rbx), %rdi
testq %rdi, %rdi
je 0x4ab7
callq 0x5fac
movq 0x70(%rbx), %rdi
testq %rdi, %rdi
je 0x4ac5
callq 0x5d83
movq 0x80(%rbx), %rdi
testq %rdi, %rdi
je 0x4ad6
callq 0x8d11
movq 0x10(%rbx), %rdi
callq 0x7a9b
movl (%rbx), %edi
callq 0x30d0
testl %eax, %eax
je 0x4b19
callq 0x3480
cmpl $0x0, (%rax)
je 0x4b0b
movq %rax, %r14
leaq 0xbc2f(%rip), %rdi      # 0x1072d
xorl %eax, %eax
callq 0x8391
andl $0x0, (%r14)
jmp 0x4b19
leaq 0xbc1b(%rip), %rdi      # 0x1072d
xorl %eax, %eax
callq 0x8520
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x32b0
// File: /workspace/github_c_makefile_star2_O2/Tarsnap[P]spiped/spiped/dispatch.c
// Function: callback_gotconn
static int
callback_gotconn(void * cookie, int s)
{
	struct accept_state * A = cookie;
	struct sock_addr ** sas;
	struct conn_list_node * node_new;

	/* This accept is no longer in progress. */
	A->accept_cookie = NULL;

	/* If we got a -1 descriptor, something went seriously wrong. */
	if (s == -1) {
		warnp("network_accept failed");
		goto err0;
	}

	/* We have gained a connection. */
	A->nconn += 1;

	/* Duplicate the target address list. */
	if ((sas = sock_addr_duplist(A->sas)) == NULL)
		goto err1;

	/* Create new conn_list_node. */
	if ((node_new = malloc(sizeof(struct conn_list_node))) == NULL)
		goto err2;
	node_new->A = A;

	/* Create a new connection. */
	if ((node_new->conn_cookie = proto_conn_create(s, sas, A->sa_b,
	    A->decr, A->nopfs, A->requirepfs, A->nokeepalive, A->K,
	    A->timeo, callback_conndied, node_new)) == NULL) {
		warnp("Failure setting up new connection");
		goto err3;
	}

	/* Insert node_new to the beginning of the conn_cookies list. */
	LIST_INSERT_HEAD(&A->conn_cookies, node_new, entries);

	/* Accept another connection if we can. */
	if (doaccept(A))
		goto err0;

	/* Success! */
	return (0);

err3:
	free(node_new);
err2:
	sock_addr_freelist(sas);
err1:
	A->nconn -= 1;
	if (close(s))
		warnp("close");
err0:
	/* Failure! */
	return (-1);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
andq $0x0, 0x68(%rdi)
cmpl $-0x1, %esi
je 0x4c5f
movl %esi, %ebp
movq %rdi, %rbx
incq 0x50(%rdi)
movq 0x10(%rdi), %rdi
callq 0x8004
testq %rax, %rax
je 0x4cbe
movq %rax, %r14
pushq $0x20
popq %rdi
callq 0x31a0
testq %rax, %rax
je 0x4cb6
movq %rax, %r15
movq %rbx, 0x18(%rax)
movq 0x18(%rbx), %rdx
movl 0x28(%rbx), %ecx
movl 0x2c(%rbx), %r8d
movl 0x30(%rbx), %r9d
movl 0x34(%rbx), %eax
movsd 0x60(%rbx), %xmm0
leaq 0x101(%rip), %r10       # 0x4d07
movl %ebp, %edi
movq %r14, %rsi
pushq %r15
pushq %r10
pushq 0x48(%rbx)
pushq %rax
callq 0x8fa0
addq $0x20, %rsp
movq %rax, (%r15)
testq %rax, %rax
je 0x4c7e
leaq 0x78(%rbx), %rax
movq 0x78(%rbx), %rcx
movq %rcx, 0x8(%r15)
testq %rcx, %rcx
je 0x4c40
movq %r15, %rdx
addq $0x8, %rdx
movq %rdx, 0x10(%rcx)
movq %r15, 0x78(%rbx)
movq %rax, 0x10(%r15)
movq %rbx, %rdi
callq 0x49fc
testl %eax, %eax
jne 0x4cfb
xorl %eax, %eax
jmp 0x4cfe
callq 0x3480
cmpl $0x0, (%rax)
je 0x4c75
movq %rax, %rbx
leaq 0xb7c4(%rip), %rdi      # 0x10437
jmp 0x4ce1
leaq 0xb7bb(%rip), %rdi      # 0x10437
jmp 0x4cf4
callq 0x3480
cmpl $0x0, (%rax)
je 0x4ca0
movq %rax, %r12
leaq 0xb7bb(%rip), %rdi      # 0x1044d
xorl %eax, %eax
callq 0x8391
andl $0x0, (%r12)
jmp 0x4cae
leaq 0xb7a6(%rip), %rdi      # 0x1044d
xorl %eax, %eax
callq 0x8520
movq %r15, %rdi
callq 0x32b0
movq %r14, %rdi
callq 0x7a9b
decq 0x50(%rbx)
movl %ebp, %edi
callq 0x30d0
testl %eax, %eax
je 0x4cfb
callq 0x3480
cmpl $0x0, (%rax)
je 0x4ced
movq %rax, %rbx
leaq 0xba4c(%rip), %rdi      # 0x1072d
xorl %eax, %eax
callq 0x8391
andl $0x0, (%rbx)
jmp 0x4cfb
leaq 0xba39(%rip), %rdi      # 0x1072d
xorl %eax, %eax
callq 0x8520
pushq $-0x1
popq %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/Tarsnap[P]spiped/spiped/dispatch.c
// Function: callback_conndied
static int
callback_conndied(void * cookie, int reason)
{
	struct conn_list_node * node_ptr = cookie;
	struct accept_state * A = node_ptr->A;

	(void)reason; /* UNUSED */

	/* We should always have a non-empty list of conn_cookies. */
	assert(!LIST_EMPTY(&A->conn_cookies));

	/* We've lost a connection. */
	A->nconn -= 1;

	/* Remove the closed connection from the list of conn_cookies. */
	LIST_REMOVE(node_ptr, entries);

	/* Clean up the now-unused node. */
	free(node_ptr);

	/* If requested to do so, indicate that all connections are closed. */
	if (A->shutdown_requested && (A->nconn == 0))
		*A->conndone = 1;

	/* Maybe accept more connections. */
	return (doaccept(A));
}

// Assembly:
pushq %rbx
movq 0x18(%rdi), %rbx
cmpq $0x0, 0x78(%rbx)
je 0x4d50
decq 0x50(%rbx)
movq 0x8(%rdi), %rax
movq 0x10(%rdi), %rcx
testq %rax, %rax
je 0x4d28
movq %rcx, 0x10(%rax)
movq %rax, (%rcx)
callq 0x32b0
cmpl $0x0, 0x40(%rbx)
je 0x4d47
cmpq $0x0, 0x50(%rbx)
jne 0x4d47
movq 0x38(%rbx), %rax
movl $0x1, (%rax)
movq %rbx, %rdi
popq %rbx
jmp 0x49fc
leaq 0xb718(%rip), %rdi      # 0x1046f
leaq 0xb683(%rip), %rsi      # 0x103e1
leaq 0xb728(%rip), %rcx      # 0x1048d
pushq $0x7c
popq %rdx
callq 0x3150
nopl (%rax)