// File: /workspace/github_c_makefile_star2_O0/zhou-yuxin[P]redis-aof-no-cow/src/server.c
// Function: createSharedObjects
void createSharedObjects(void) {
    int j;

    shared.crlf = createObject(OBJ_STRING,sdsnew("\r\n"));
    shared.ok = createObject(OBJ_STRING,sdsnew("+OK\r\n"));
    shared.err = createObject(OBJ_STRING,sdsnew("-ERR\r\n"));
    shared.emptybulk = createObject(OBJ_STRING,sdsnew("$0\r\n\r\n"));
    shared.czero = createObject(OBJ_STRING,sdsnew(":0\r\n"));
    shared.cone = createObject(OBJ_STRING,sdsnew(":1\r\n"));
    shared.cnegone = createObject(OBJ_STRING,sdsnew(":-1\r\n"));
    shared.nullbulk = createObject(OBJ_STRING,sdsnew("$-1\r\n"));
    shared.nullmultibulk = createObject(OBJ_STRING,sdsnew("*-1\r\n"));
    shared.emptymultibulk = createObject(OBJ_STRING,sdsnew("*0\r\n"));
    shared.pong = createObject(OBJ_STRING,sdsnew("+PONG\r\n"));
    shared.queued = createObject(OBJ_STRING,sdsnew("+QUEUED\r\n"));
    shared.emptyscan = createObject(OBJ_STRING,sdsnew("*2\r\n$1\r\n0\r\n*0\r\n"));
    shared.wrongtypeerr = createObject(OBJ_STRING,sdsnew(
        "-WRONGTYPE Operation against a key holding the wrong kind of value\r\n"));
    shared.nokeyerr = createObject(OBJ_STRING,sdsnew(
        "-ERR no such key\r\n"));
    shared.syntaxerr = createObject(OBJ_STRING,sdsnew(
        "-ERR syntax error\r\n"));
    shared.sameobjecterr = createObject(OBJ_STRING,sdsnew(
        "-ERR source and destination objects are the same\r\n"));
    shared.outofrangeerr = createObject(OBJ_STRING,sdsnew(
        "-ERR index out of range\r\n"));
    shared.noscripterr = createObject(OBJ_STRING,sdsnew(
        "-NOSCRIPT No matching script. Please use EVAL.\r\n"));
    shared.loadingerr = createObject(OBJ_STRING,sdsnew(
        "-LOADING Redis is loading the dataset in memory\r\n"));
    shared.slowscripterr = createObject(OBJ_STRING,sdsnew(
        "-BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE.\r\n"));
    shared.masterdownerr = createObject(OBJ_STRING,sdsnew(
        "-MASTERDOWN Link with MASTER is down and slave-serve-stale-data is set to 'no'.\r\n"));
    shared.bgsaveerr = createObject(OBJ_STRING,sdsnew(
        "-MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.\r\n"));
    shared.roslaveerr = createObject(OBJ_STRING,sdsnew(
        "-READONLY You can't write against a read only slave.\r\n"));
    shared.noautherr = createObject(OBJ_STRING,sdsnew(
        "-NOAUTH Authentication required.\r\n"));
    shared.oomerr = createObject(OBJ_STRING,sdsnew(
        "-OOM command not allowed when used memory > 'maxmemory'.\r\n"));
    shared.execaborterr = createObject(OBJ_STRING,sdsnew(
        "-EXECABORT Transaction discarded because of previous errors.\r\n"));
    shared.noreplicaserr = createObject(OBJ_STRING,sdsnew(
        "-NOREPLICAS Not enough good slaves to write.\r\n"));
    shared.busykeyerr = createObject(OBJ_STRING,sdsnew(
        "-BUSYKEY Target key name already exists.\r\n"));
    shared.space = createObject(OBJ_STRING,sdsnew(" "));
    shared.colon = createObject(OBJ_STRING,sdsnew(":"));
    shared.plus = createObject(OBJ_STRING,sdsnew("+"));

#ifdef AOF_NO_COW
    shared.crlf->shared = 1;
    shared.ok->shared = 1;
    shared.err->shared = 1;
    shared.emptybulk->shared = 1;
    shared.czero->shared = 1;
    shared.cone->shared = 1;
    shared.cnegone->shared = 1;
    shared.nullbulk->shared = 1;
    shared.nullmultibulk->shared = 1;
    shared.emptymultibulk->shared = 1;
    shared.pong->shared = 1;
    shared.queued->shared = 1;
    shared.emptyscan->shared = 1;
    shared.wrongtypeerr->shared = 1;
    shared.nokeyerr->shared = 1;
    shared.syntaxerr->shared = 1;
    shared.sameobjecterr->shared = 1;
    shared.outofrangeerr->shared = 1;
    shared.noscripterr->shared = 1;
    shared.loadingerr->shared = 1;
    shared.slowscripterr->shared = 1;
    shared.masterdownerr->shared = 1;
    shared.bgsaveerr->shared = 1;
    shared.roslaveerr->shared = 1;
    shared.noautherr->shared = 1;
    shared.oomerr->shared = 1;
    shared.execaborterr->shared = 1;
    shared.noreplicaserr->shared = 1;
    shared.busykeyerr->shared = 1;
    shared.space->shared = 1;
    shared.colon->shared = 1;
    shared.plus->shared = 1;
#endif

    for (j = 0; j < PROTO_SHARED_SELECT_CMDS; j++) {
        char dictid_str[64];
        int dictid_len;

        dictid_len = ll2string(dictid_str,sizeof(dictid_str),j);
        shared.select[j] = createObject(OBJ_STRING,
            sdscatprintf(sdsempty(),
                "*2\r\n$6\r\nSELECT\r\n$%d\r\n%s\r\n",
                dictid_len, dictid_str));
#ifdef AOF_NO_COW
        shared.select[j]->shared = 1;
#endif
    }
    shared.messagebulk = createStringObject("$7\r\nmessage\r\n",13);
    shared.pmessagebulk = createStringObject("$8\r\npmessage\r\n",14);
    shared.subscribebulk = createStringObject("$9\r\nsubscribe\r\n",15);
    shared.unsubscribebulk = createStringObject("$11\r\nunsubscribe\r\n",18);
    shared.psubscribebulk = createStringObject("$10\r\npsubscribe\r\n",17);
    shared.punsubscribebulk = createStringObject("$12\r\npunsubscribe\r\n",19);
    shared.del = createStringObject("DEL",3);
    shared.rpop = createStringObject("RPOP",4);
    shared.lpop = createStringObject("LPOP",4);
    shared.lpush = createStringObject("LPUSH",5);

#ifdef AOF_NO_COW
    shared.messagebulk->shared = 1;
    shared.pmessagebulk->shared = 1;
    shared.subscribebulk->shared = 1;
    shared.unsubscribebulk->shared = 1;
    shared.psubscribebulk->shared = 1;
    shared.punsubscribebulk->shared = 1;
    shared.del->shared = 1;
    shared.rpop->shared = 1;
    shared.lpop->shared = 1;
    shared.lpush->shared = 1;
#endif

    for (j = 0; j < OBJ_SHARED_INTEGERS; j++) {
        shared.integers[j] = createObject(OBJ_STRING,(void*)(long)j);
        shared.integers[j]->encoding = OBJ_ENCODING_INT;
#ifdef AOF_NO_COW
        shared.integers[j]->shared = 1;
#endif
    }
    for (j = 0; j < OBJ_SHARED_BULKHDR_LEN; j++) {
        shared.mbulkhdr[j] = createObject(OBJ_STRING,
            sdscatprintf(sdsempty(),"*%d\r\n",j));
        shared.bulkhdr[j] = createObject(OBJ_STRING,
            sdscatprintf(sdsempty(),"$%d\r\n",j));
#ifdef AOF_NO_COW
        shared.bulkhdr[j]->shared = 1;
#endif
    }
    /* The following two shared objects, minstring and maxstrings, are not
     * actually used for their value but as a special object meaning
     * respectively the minimum possible string and the maximum possible
     * string in string comparisons for the ZRANGEBYLEX command. */
    shared.minstring = createStringObject("minstring",9);
    shared.maxstring = createStringObject("maxstring",9);

#ifdef AOF_NO_COW
    shared.minstring->shared = 1;
    shared.maxstring->shared = 1;
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
leaq 0x11f871(%rip), %rdi    # 0x151260
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d1eb(%rip)    # 0x18ebf0
leaq 0x11913f(%rip), %rdi    # 0x14ab4b
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d1d6(%rip)    # 0x18ebf8
leaq 0x119128(%rip), %rdi    # 0x14ab51
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d1c1(%rip)    # 0x18ec00
leaq 0x119112(%rip), %rdi    # 0x14ab58
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d1ac(%rip)    # 0x18ec08
leaq 0x1190fc(%rip), %rdi    # 0x14ab5f
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d197(%rip)    # 0x18ec10
leaq 0x1190e4(%rip), %rdi    # 0x14ab64
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d182(%rip)    # 0x18ec18
leaq 0x1190cc(%rip), %rdi    # 0x14ab69
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d16d(%rip)    # 0x18ec20
leaq 0x1190b5(%rip), %rdi    # 0x14ab6f
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d170(%rip)    # 0x18ec40
leaq 0x11909e(%rip), %rdi    # 0x14ab75
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d15b(%rip)    # 0x18ec48
leaq 0x1190a4(%rip), %rdi    # 0x14ab98
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d14e(%rip)    # 0x18ec58
leaq 0x11906a(%rip), %rdi    # 0x14ab7b
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d101(%rip)    # 0x18ec28
leaq 0x119055(%rip), %rdi    # 0x14ab83
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d10c(%rip)    # 0x18ec50
leaq 0x119042(%rip), %rdi    # 0x14ab8d
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d1d7(%rip)    # 0x18ed38
leaq 0x119035(%rip), %rdi    # 0x14ab9d
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d0e2(%rip)    # 0x18ec60
leaq 0x11905d(%rip), %rdi    # 0x14abe2
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d0cd(%rip)    # 0x18ec68
leaq 0x119053(%rip), %rdi    # 0x14abf5
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d0b8(%rip)    # 0x18ec70
leaq 0x11904a(%rip), %rdi    # 0x14ac09
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d0a3(%rip)    # 0x18ec78
leaq 0x119060(%rip), %rdi    # 0x14ac3c
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d08e(%rip)    # 0x18ec80
leaq 0x11905d(%rip), %rdi    # 0x14ac56
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d079(%rip)    # 0x18ec88
leaq 0x119071(%rip), %rdi    # 0x14ac87
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d064(%rip)    # 0x18ec90
leaq 0x119086(%rip), %rdi    # 0x14acb9
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d04f(%rip)    # 0x18ec98
leaq 0x1190c3(%rip), %rdi    # 0x14ad13
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d042(%rip)    # 0x18eca8
leaq 0x1190f8(%rip), %rdi    # 0x14ad65
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d01d(%rip)    # 0x18eca0
leaq 0x1191a8(%rip), %rdi    # 0x14ae32
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d010(%rip)    # 0x18ecb0
leaq 0x1191c2(%rip), %rdi    # 0x14ae69
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15d003(%rip)    # 0x18ecc0
leaq 0x1191c8(%rip), %rdi    # 0x14ae8c
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15cffe(%rip)    # 0x18ecd8
leaq 0x1191e6(%rip), %rdi    # 0x14aec7
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15cfc1(%rip)    # 0x18ecb8
leaq 0x119208(%rip), %rdi    # 0x14af06
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15cfb4(%rip)    # 0x18ecc8
leaq 0x11921a(%rip), %rdi    # 0x14af35
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15cf9f(%rip)    # 0x18ecd0
leaq 0x1203e9(%rip), %rdi    # 0x152121
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15cee2(%rip)    # 0x18ec30
leaq 0x12caeb(%rip), %rdi    # 0x15e840
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15cecd(%rip)    # 0x18ec38
leaq 0x1191ee(%rip), %rdi    # 0x14af60
callq 0x384a0
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, 0x15cf58(%rip)    # 0x18ece0
movl $0x0, -0x4(%rbp)
cmpl $0xa, -0x4(%rbp)
jge 0x31df2
leaq -0x50(%rbp), %rdi
movslq -0x4(%rbp), %rdx
movl $0x40, %esi
callq 0x47770
movl %eax, -0x54(%rbp)
callq 0x38480
movq %rax, %rdi
movl -0x54(%rbp), %edx
leaq -0x50(%rbp), %rcx
leaq 0x1191a2(%rip), %rsi    # 0x14af62
movb $0x0, %al
callq 0x39540
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, %rdx
movslq -0x4(%rbp), %rcx
leaq 0x15ce11(%rip), %rax    # 0x18ebf0
movq %rdx, 0x160(%rax,%rcx,8)
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x31d8f
leaq 0x119183(%rip), %rdi    # 0x14af7c
movl $0xd, %esi
callq 0x48630
movq %rax, 0x15cede(%rip)    # 0x18ece8
leaq 0x119179(%rip), %rdi    # 0x14af8a
movl $0xe, %esi
callq 0x48630
movq %rax, 0x15cece(%rip)    # 0x18ecf0
leaq 0x119170(%rip), %rdi    # 0x14af99
movl $0xf, %esi
callq 0x48630
movq %rax, 0x15cebe(%rip)    # 0x18ecf8
leaq 0x119168(%rip), %rdi    # 0x14afa9
movl $0x12, %esi
callq 0x48630
movq %rax, 0x15ceae(%rip)    # 0x18ed00
leaq 0x119163(%rip), %rdi    # 0x14afbc
movl $0x11, %esi
callq 0x48630
movq %rax, 0x15ce9e(%rip)    # 0x18ed08
leaq 0x11915d(%rip), %rdi    # 0x14afce
movl $0x13, %esi
callq 0x48630
movq %rax, 0x15ce8e(%rip)    # 0x18ed10
leaq 0x119159(%rip), %rdi    # 0x14afe2
movl $0x3, %esi
callq 0x48630
movq %rax, 0x15ce7e(%rip)    # 0x18ed18
leaq 0x119145(%rip), %rdi    # 0x14afe6
movl $0x4, %esi
callq 0x48630
movq %rax, 0x15ce6e(%rip)    # 0x18ed20
leaq 0x119132(%rip), %rdi    # 0x14afeb
movl $0x4, %esi
callq 0x48630
movq %rax, 0x15ce5e(%rip)    # 0x18ed28
leaq 0x11911f(%rip), %rdi    # 0x14aff0
movl $0x5, %esi
callq 0x48630
movq %rax, 0x15ce4e(%rip)    # 0x18ed30
movl $0x0, -0x4(%rbp)
cmpl $0x2710, -0x4(%rbp)     # imm = 0x2710
jge 0x31f3e
movslq -0x4(%rbp), %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, %rdx
movslq -0x4(%rbp), %rcx
leaq 0x15cce5(%rip), %rax    # 0x18ebf0
movq %rdx, 0x1b0(%rax,%rcx,8)
movslq -0x4(%rbp), %rcx
leaq 0x15ccd2(%rip), %rax    # 0x18ebf0
movq 0x1b0(%rax,%rcx,8), %rax
movl (%rax), %ecx
andl $0xffffff0f, %ecx       # imm = 0xFFFFFF0F
orl $0x10, %ecx
movl %ecx, (%rax)
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x31ee9
movl $0x0, -0x4(%rbp)
cmpl $0x20, -0x4(%rbp)
jge 0x31fcf
callq 0x38480
movq %rax, %rdi
movl -0x4(%rbp), %edx
leaq 0x119095(%rip), %rsi    # 0x14aff6
movb $0x0, %al
callq 0x39540
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, %rdx
movslq -0x4(%rbp), %rcx
leaq 0x15cc70(%rip), %rax    # 0x18ebf0
movq %rdx, 0x13a30(%rax,%rcx,8)
callq 0x38480
movq %rax, %rdi
movl -0x4(%rbp), %edx
leaq 0x119062(%rip), %rsi    # 0x14affc
movb $0x0, %al
callq 0x39540
movq %rax, %rsi
xorl %edi, %edi
callq 0x48410
movq %rax, %rdx
movslq -0x4(%rbp), %rcx
leaq 0x15cc37(%rip), %rax    # 0x18ebf0
movq %rdx, 0x13b30(%rax,%rcx,8)
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x31f45
leaq 0x11902c(%rip), %rdi    # 0x14b002
movl $0x9, %esi
callq 0x48630
movq %rax, 0x15cd59(%rip)    # 0x18ed40
leaq 0x11901e(%rip), %rdi    # 0x14b00c
movl $0x9, %esi
callq 0x48630
movq %rax, 0x15cd49(%rip)    # 0x18ed48
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)