// File: /workspace/github_c_makefile_star2_O0/nilyang[P]redis-tdd-annotation/src/sentinel.c
// Function: sentinelCommand
void sentinelCommand(redisClient *c) {
    if (!strcasecmp(c->argv[1]->ptr,"masters")) {
        /* SENTINEL MASTERS */
        if (c->argc != 2) goto numargserr;
        addReplyDictOfRedisInstances(c,sentinel.masters);
    } else if (!strcasecmp(c->argv[1]->ptr,"master")) {
        /* SENTINEL MASTER <name> */
        sentinelRedisInstance *ri;

        if (c->argc != 3) goto numargserr;
        if ((ri = sentinelGetMasterByNameOrReplyError(c,c->argv[2]))
            == NULL) return;
        addReplySentinelRedisInstance(c,ri);
    } else if (!strcasecmp(c->argv[1]->ptr,"slaves")) {
        /* SENTINEL SLAVES <master-name> */
        sentinelRedisInstance *ri;

        if (c->argc != 3) goto numargserr;
        if ((ri = sentinelGetMasterByNameOrReplyError(c,c->argv[2])) == NULL)
            return;
        addReplyDictOfRedisInstances(c,ri->slaves);
    } else if (!strcasecmp(c->argv[1]->ptr,"sentinels")) {
        /* SENTINEL SENTINELS <master-name> */
        sentinelRedisInstance *ri;

        if (c->argc != 3) goto numargserr;
        if ((ri = sentinelGetMasterByNameOrReplyError(c,c->argv[2])) == NULL)
            return;
        addReplyDictOfRedisInstances(c,ri->sentinels);
    } else if (!strcasecmp(c->argv[1]->ptr,"is-master-down-by-addr")) {
        /* SENTINEL IS-MASTER-DOWN-BY-ADDR <ip> <port> <current-epoch> <runid>*/
        sentinelRedisInstance *ri;
        long long req_epoch;
        uint64_t leader_epoch = 0;
        char *leader = NULL;
        long port;
        int isdown = 0;

        if (c->argc != 6) goto numargserr;
        if (getLongFromObjectOrReply(c,c->argv[3],&port,NULL) != REDIS_OK ||
            getLongLongFromObjectOrReply(c,c->argv[4],&req_epoch,NULL)
                                                              != REDIS_OK)
            return;
        ri = getSentinelRedisInstanceByAddrAndRunID(sentinel.masters,
            c->argv[2]->ptr,port,NULL);

        /* It exists? Is actually a master? Is subjectively down? It's down.
         * Note: if we are in tilt mode we always reply with "0". */
        if (!sentinel.tilt && ri && (ri->flags & SRI_S_DOWN) &&
                                    (ri->flags & SRI_MASTER))
            isdown = 1;

        /* Vote for the master (or fetch the previous vote) if the request
         * includes a runid, otherwise the sender is not seeking for a vote. */
        if (ri && ri->flags & SRI_MASTER && strcasecmp(c->argv[5]->ptr,"*")) {
            leader = sentinelVoteLeader(ri,(uint64_t)req_epoch,
                                            c->argv[5]->ptr,
                                            &leader_epoch);
        }

        /* Reply with a three-elements multi-bulk reply:
         * down state, leader, vote epoch. */
        // 多条回复
        // 1) <down_state>    1 代表下线， 0 代表未下线
        // 2) <leader_runid>  Sentinel 选举作为领头 Sentinel 的运行 ID
        // 3) <leader_epoch>  领头 Sentinel 目前的配置纪元
        addReplyMultiBulkLen(c,3);
        addReply(c, isdown ? shared.cone : shared.czero);
        addReplyBulkCString(c, leader ? leader : "*");
        addReplyLongLong(c, (long long)leader_epoch);
        if (leader) sdsfree(leader);
    } else if (!strcasecmp(c->argv[1]->ptr,"reset")) {
        /* SENTINEL RESET <pattern> */
        if (c->argc != 3) goto numargserr;
        addReplyLongLong(c,sentinelResetMastersByPattern(c->argv[2]->ptr,SENTINEL_GENERATE_EVENT));
    } else if (!strcasecmp(c->argv[1]->ptr,"get-master-addr-by-name")) {
        /* SENTINEL GET-MASTER-ADDR-BY-NAME <master-name> */
        sentinelRedisInstance *ri;

        if (c->argc != 3) goto numargserr;
        ri = sentinelGetMasterByName(c->argv[2]->ptr);
        if (ri == NULL) {
            addReply(c,shared.nullmultibulk);
        } else {
            sentinelAddr *addr = sentinelGetCurrentMasterAddress(ri);

            addReplyMultiBulkLen(c,2);
            addReplyBulkCString(c,addr->ip);
            addReplyBulkLongLong(c,addr->port);
        }
    } else if (!strcasecmp(c->argv[1]->ptr,"failover")) {
        /* SENTINEL FAILOVER <master-name> */
        sentinelRedisInstance *ri;

        if (c->argc != 3) goto numargserr;
        if ((ri = sentinelGetMasterByNameOrReplyError(c,c->argv[2])) == NULL)
            return;
        if (ri->flags & SRI_FAILOVER_IN_PROGRESS) {
            addReplySds(c,sdsnew("-INPROG Failover already in progress\r\n"));
            return;
        }
        if (sentinelSelectSlave(ri) == NULL) {
            addReplySds(c,sdsnew("-NOGOODSLAVE No suitable slave to promote\r\n"));
            return;
        }
        redisLog(REDIS_WARNING,"Executing user requested FAILOVER of '%s'",
            ri->name);
        sentinelStartFailover(ri);
        ri->flags |= SRI_FORCE_FAILOVER;
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"pending-scripts")) {
        /* SENTINEL PENDING-SCRIPTS */

        if (c->argc != 2) goto numargserr;
        sentinelPendingScriptsCommand(c);
    } else if (!strcasecmp(c->argv[1]->ptr,"monitor")) {
        /* SENTINEL MONITOR <name> <ip> <port> <quorum> */
        sentinelRedisInstance *ri;
        long quorum, port;
        char buf[32];

        if (c->argc != 6) goto numargserr;
        if (getLongFromObjectOrReply(c,c->argv[5],&quorum,"Invalid quorum")
            != REDIS_OK) return;
        if (getLongFromObjectOrReply(c,c->argv[4],&port,"Invalid port")
            != REDIS_OK) return;
        /* Make sure the IP field is actually a valid IP before passing it
         * to createSentinelRedisInstance(), otherwise we may trigger a
         * DNS lookup at runtime. */
        if (anetResolveIP(NULL,c->argv[3]->ptr,buf,sizeof(buf)) == ANET_ERR) {
            addReplyError(c,"Invalid IP address specified");
            return;
        }

        /* Parameters are valid. Try to create the master instance. */
        ri = createSentinelRedisInstance(c->argv[2]->ptr,SRI_MASTER,
                c->argv[3]->ptr,port,quorum,NULL);
        if (ri == NULL) {
            switch(errno) {
            case EBUSY:
                addReplyError(c,"Duplicated master name");
                break;
            case EINVAL:
                addReplyError(c,"Invalid port number");
                break;
            default:
                addReplyError(c,"Unspecified error adding the instance");
                break;
            }
        } else {
            sentinelFlushConfig();
            sentinelEvent(REDIS_WARNING,"+monitor",ri,"%@ quorum %d",ri->quorum);
            addReply(c,shared.ok);
        }
    } else if (!strcasecmp(c->argv[1]->ptr,"remove")) {
        /* SENTINEL REMOVE <name> */
        sentinelRedisInstance *ri;

        if ((ri = sentinelGetMasterByNameOrReplyError(c,c->argv[2]))
            == NULL) return;
        sentinelEvent(REDIS_WARNING,"-monitor",ri,"%@");
        dictDelete(sentinel.masters,c->argv[2]->ptr);
        sentinelFlushConfig();
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"set")) {
        if (c->argc < 3 || c->argc % 2 == 0) goto numargserr;
        sentinelSetCommand(c);
    } else {
        addReplyErrorFormat(c,"Unknown sentinel subcommand '%s'",
                               (char*)c->argv[1]->ptr);
    }
    return;

numargserr:
    addReplyErrorFormat(c,"Wrong number of arguments for 'sentinel %s'",
                          (char*)c->argv[1]->ptr);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x70eca(%rip), %rsi     # 0xe9940
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x78aa4
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30(%rax)
je 0x78a8f
jmp 0x79328
movq -0x8(%rbp), %rdi
movq 0xaf7a6(%rip), %rsi     # 0x128240
callq 0x7ee40
jmp 0x79326
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x6e374(%rip), %rsi     # 0xe6e2f
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x78b0a
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30(%rax)
je 0x78ad4
jmp 0x79328
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x7eec0
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
jne 0x78af8
jmp 0x7934a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x7e440
jmp 0x79324
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x70ada(%rip), %rsi     # 0xe95fb
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x78b77
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30(%rax)
je 0x78b3a
jmp 0x79328
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x7eec0
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
jne 0x78b5e
jmp 0x7934a
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0xc8(%rax), %rsi
callq 0x7ee40
jmp 0x79322
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x70d04(%rip), %rsi     # 0xe9892
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x78be4
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30(%rax)
je 0x78ba7
jmp 0x79328
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x7eec0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x78bcb
jmp 0x7934a
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0xc0(%rax), %rsi
callq 0x7ee40
jmp 0x79320
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x70d4d(%rip), %rsi     # 0xe9948
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x78dec
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movl $0x0, -0x4c(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x6, 0x30(%rax)
je 0x78c2f
jmp 0x79328
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x18(%rax), %rsi
leaq -0x48(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x3b960
cmpl $0x0, %eax
jne 0x78c73
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x20(%rax), %rsi
leaq -0x30(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x3b8e0
cmpl $0x0, %eax
je 0x78c78
jmp 0x7934a
movq 0xaf5c1(%rip), %rdi     # 0x128240
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
movq -0x48(%rbp), %rax
movl %eax, %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x7b110
movq %rax, -0x28(%rbp)
cmpl $0x0, 0xaf59f(%rip)     # 0x128248
jne 0x78cd5
cmpq $0x0, -0x28(%rbp)
je 0x78cd5
movq -0x28(%rbp), %rax
movl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x78cd5
movq -0x28(%rbp), %rax
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x78cd5
movl $0x1, -0x4c(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x78d30
movq -0x28(%rbp), %rax
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x78d30
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x65bab(%rip), %rsi     # 0xde8ac
callq 0x1f2f0
cmpl $0x0, %eax
je 0x78d30
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rdx
leaq -0x38(%rbp), %rcx
callq 0x7ef30
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movl $0x3, %esi
callq 0x364f0
movq -0x8(%rbp), %rax
movq %rax, -0xb0(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x78d63
leaq 0x9b3fa(%rip), %rax     # 0x114150
movq 0x28(%rax), %rax
movq %rax, -0xb8(%rbp)
jmp 0x78d75
leaq 0x9b3e6(%rip), %rax     # 0x114150
movq 0x20(%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x35a70
movq -0x8(%rbp), %rax
movq %rax, -0xc0(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x78da7
movq -0x40(%rbp), %rax
movq %rax, -0xc8(%rbp)
jmp 0x78db7
leaq 0x65afe(%rip), %rax     # 0xde8ac
movq %rax, -0xc8(%rbp)
jmp 0x78db7
movq -0xc0(%rbp), %rdi
movq -0xc8(%rbp), %rsi
callq 0x36330
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x36480
cmpq $0x0, -0x40(%rbp)
je 0x78de7
movq -0x40(%rbp), %rdi
callq 0x2c160
jmp 0x7931e
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x6e178(%rip), %rsi     # 0xe6f7b
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x78e55
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30(%rax)
je 0x78e1c
jmp 0x79328
movq -0x8(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
movl $0x10000, %esi          # imm = 0x10000
callq 0x7b520
movq -0xd0(%rbp), %rdi
movslq %eax, %rsi
callq 0x36480
jmp 0x7931c
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x70af3(%rip), %rsi     # 0xe995f
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x78f00
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30(%rax)
je 0x78e89
jmp 0x79328
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x7b210
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x78ebf
movq -0x8(%rbp), %rdi
leaq 0x9b29c(%rip), %rax     # 0x114150
movq 0x58(%rax), %rsi
callq 0x35a70
jmp 0x78efb
movq -0x58(%rbp), %rdi
callq 0x7b960
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x364f0
movq -0x8(%rbp), %rdi
movq -0x60(%rbp), %rax
movq (%rax), %rsi
callq 0x36330
movq -0x8(%rbp), %rdi
movq -0x60(%rbp), %rax
movslq 0x8(%rax), %rsi
callq 0x366c0
jmp 0x7931a
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x70e6b(%rip), %rsi     # 0xe9d82
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x79018
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30(%rax)
je 0x78f34
jmp 0x79328
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x7eec0
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
jne 0x78f58
jmp 0x7934a
movq -0x68(%rbp), %rax
movl (%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x78f93
movq -0x8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x709fd(%rip), %rdi     # 0xe9977
callq 0x2c0e0
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0x35c00
jmp 0x7934a
movq -0x68(%rbp), %rdi
callq 0x7f0c0
cmpq $0x0, %rax
jne 0x78fcd
movq -0x8(%rbp), %rax
movq %rax, -0xe0(%rbp)
leaq 0x709ea(%rip), %rdi     # 0xe999e
callq 0x2c0e0
movq -0xe0(%rbp), %rdi
movq %rax, %rsi
callq 0x35c00
jmp 0x7934a
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rdx
movl $0x3, %edi
leaq 0x709e9(%rip), %rsi     # 0xe99ca
movb $0x0, %al
callq 0x24fb0
movq -0x68(%rbp), %rdi
callq 0x7f270
movq -0x68(%rbp), %rax
movl (%rax), %ecx
orl $0x1000, %ecx           # imm = 0x1000
movl %ecx, (%rax)
movq -0x8(%rbp), %rdi
leaq 0x9b146(%rip), %rax     # 0x114150
movq 0x8(%rax), %rsi
callq 0x35a70
jmp 0x79318
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x709c5(%rip), %rsi     # 0xe99f4
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x79056
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30(%rax)
je 0x79048
jmp 0x79328
movq -0x8(%rbp), %rdi
callq 0x7a700
jmp 0x79316
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x6fe2a(%rip), %rsi     # 0xe8e97
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x79202
movq -0x8(%rbp), %rax
cmpl $0x6, 0x30(%rax)
je 0x7908a
jmp 0x79328
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x28(%rax), %rsi
leaq -0x78(%rbp), %rdx
leaq 0x7095f(%rip), %rcx     # 0xe9a04
callq 0x3b960
cmpl $0x0, %eax
je 0x790b4
jmp 0x7934a
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x20(%rax), %rsi
leaq -0x80(%rbp), %rdx
leaq 0x6a77a(%rip), %rcx     # 0xe3849
callq 0x3b960
cmpl $0x0, %eax
je 0x790de
jmp 0x7934a
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0xa0(%rbp), %rdx
xorl %eax, %eax
movl %eax, %edi
movl $0x20, %ecx
callq 0x21ee0
cmpl $-0x1, %eax
jne 0x7911d
movq -0x8(%rbp), %rdi
leaq 0x70900(%rip), %rsi     # 0xe9a13
callq 0x35d40
jmp 0x7934a
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdx
movq -0x80(%rbp), %rax
movl %eax, %ecx
movq -0x78(%rbp), %rax
movl %eax, %r8d
movl $0x1, %esi
xorl %eax, %eax
movl %eax, %r9d
callq 0x7a9e0
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x70(%rbp)
jne 0x791bb
callq 0x1f820
movl (%rax), %eax
movl %eax, -0xe4(%rbp)
subl $0x10, %eax
je 0x79185
jmp 0x79178
movl -0xe4(%rbp), %eax
subl $0x16, %eax
je 0x79197
jmp 0x791a9
movq -0x8(%rbp), %rdi
leaq 0x708a0(%rip), %rsi     # 0xe9a30
callq 0x35d40
jmp 0x791b9
movq -0x8(%rbp), %rdi
leaq 0x6fef7(%rip), %rsi     # 0xe9099
callq 0x35d40
jmp 0x791b9
movq -0x8(%rbp), %rdi
leaq 0x70893(%rip), %rsi     # 0xe9a47
callq 0x35d40
jmp 0x791fd
callq 0x7b820
movq -0x70(%rbp), %rdx
movq -0x70(%rbp), %rax
movl 0xd0(%rax), %r8d
movl $0x3, %edi
leaq 0x6fcbb(%rip), %rsi     # 0xe8e96
leaq 0x6fcbd(%rip), %rcx     # 0xe8e9f
movb $0x0, %al
callq 0x79b10
movq -0x8(%rbp), %rdi
leaq 0x9af5c(%rip), %rax     # 0x114150
movq 0x8(%rax), %rsi
callq 0x35a70
jmp 0x79314
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x70854(%rip), %rsi     # 0xe9a6d
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x792a2
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x7eec0
movq %rax, -0xa8(%rbp)
cmpq $0x0, %rax
jne 0x7924a
jmp 0x7934a
movq -0xa8(%rbp), %rdx
movl $0x3, %edi
leaq 0x70817(%rip), %rsi     # 0xe9a74
leaq 0x6fdce(%rip), %rcx     # 0xe9032
movb $0x0, %al
callq 0x79b10
movq 0xaefce(%rip), %rdi     # 0x128240
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x23c30
callq 0x7b820
movq -0x8(%rbp), %rdi
leaq 0x9aeb9(%rip), %rax     # 0x114150
movq 0x8(%rax), %rsi
callq 0x35a70
jmp 0x79312
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x6629d(%rip), %rsi     # 0xdf556
callq 0x1f2f0
cmpl $0x0, %eax
jne 0x792ee
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30(%rax)
jl 0x792e1
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x792e3
jmp 0x79328
movq -0x8(%rbp), %rdi
callq 0x7f370
jmp 0x79310
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x70774(%rip), %rsi     # 0xe9a7d
movb $0x0, %al
callq 0x35d80
jmp 0x79312
jmp 0x79314
jmp 0x79316
jmp 0x79318
jmp 0x7931a
jmp 0x7931c
jmp 0x7931e
jmp 0x79320
jmp 0x79322
jmp 0x79324
jmp 0x79326
jmp 0x7934a
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x7075b(%rip), %rsi     # 0xe9a9e
movb $0x0, %al
callq 0x35d80
addq $0xf0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)