// File: /workspace/github_c_makefile_star2_O0/erikdubbelboer[P]discnt/src/debug.c
// Function: debugCommand
void debugCommand(client *c) {
    if (!strcasecmp(c->argv[1]->ptr,"segfault")) {
        *((char*)-1) = 'x';
    } else if (!strcasecmp(c->argv[1]->ptr,"restart") ||
               !strcasecmp(c->argv[1]->ptr,"crash-and-recover"))
    {
        long long delay = 0;
        if (c->argc >= 3) {
            if (getLongLongFromObjectOrReply(c, c->argv[2], &delay, NULL)
                != C_OK) return;
            if (delay < 0) delay = 0;
        }
        int flags = !strcasecmp(c->argv[1]->ptr,"restart") ?
            (RESTART_SERVER_GRACEFULLY|RESTART_SERVER_CONFIG_REWRITE) :
             RESTART_SERVER_NONE;
        restartServer(flags,delay);
        addReplyError(c,"failed to restart the server. Check server logs.");
    } else if (!strcasecmp(c->argv[1]->ptr,"oom")) {
        void *ptr = zmalloc(ULONG_MAX); /* Should trigger an out of memory. */
        zfree(ptr);
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"assert")) {
        if (c->argc >= 3) c->argv[2] = tryObjectEncoding(c->argv[2]);
        serverAssertWithInfo(c,c->argv[0],1 == 2);
    } else if (!strcasecmp(c->argv[1]->ptr,"reload")) {
        if (ddbSave(server.ddb_filename) != C_OK) {
            addReply(c,shared.err);
            return;
        }
        dictEmpty(server.counters, NULL);
        if (ddbLoad(server.ddb_filename) != C_OK) {
            addReplyError(c,"Error trying to load the DDB dump");
            return;
        }
        serverLog(LL_WARNING,"DB reloaded by DEBUG RELOAD");
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"flushall")) {
        flushServerData();
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"reset") && c->argc == 2) {
        clusterBroadcastResetMessage();
        flushServerData();
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"digest") && c->argc == 2) {
        unsigned char digest[20];
        sds d = sdsempty();
        int j;

        computeDatasetDigest(digest);
        for (j = 0; j < 20; j++)
            d = sdscatprintf(d, "%02x",digest[j]);
        addReplyStatus(c,d);
        sdsfree(d);
    } else if (!strcasecmp(c->argv[1]->ptr,"sleep") && c->argc == 3) {
        double dtime = strtod(c->argv[2]->ptr,NULL);
        long long utime = dtime*1000000;
        struct timespec tv;

        tv.tv_sec = utime / 1000000;
        tv.tv_nsec = (utime % 1000000) * 1000;
        nanosleep(&tv, NULL);
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"error") && c->argc == 3) {
        sds errstr = sdsnewlen("-",1);

        errstr = sdscatsds(errstr,c->argv[2]->ptr);
        errstr = sdsmapchars(errstr,"\n\r","  ",2); /* no newlines in errors. */
        errstr = sdscatlen(errstr,"\r\n",2);
        addReplySds(c,errstr);
    } else if (!strcasecmp(c->argv[1]->ptr,"structsize") && c->argc == 2) {
        sds sizes = sdsempty();
        sizes = sdscatprintf(sizes,"bits:%d ",(sizeof(void*) == 8)?64:32);
        sizes = sdscatprintf(sizes,"counter:%d ", (int)sizeof(counter));
        sizes = sdscatprintf(sizes,"shard:%d ", (int)sizeof(shard));
        sizes = sdscatprintf(sizes,"robj:%d ",(int)sizeof(robj));
        sizes = sdscatprintf(sizes,"dictentry:%d ",(int)sizeof(dictEntry));
        sizes = sdscatprintf(sizes,"sdshdr5:%d ",(int)sizeof(struct sdshdr5));
        sizes = sdscatprintf(sizes,"sdshdr8:%d ",(int)sizeof(struct sdshdr8));
        sizes = sdscatprintf(sizes,"sdshdr16:%d ",(int)sizeof(struct sdshdr16));
        sizes = sdscatprintf(sizes,"sdshdr32:%d ",(int)sizeof(struct sdshdr32));
        sizes = sdscatprintf(sizes,"sdshdr64:%d ",(int)sizeof(struct sdshdr64));
        addReplyBulkSds(c,sizes);
    } else if (!strcasecmp(c->argv[1]->ptr,"sync") && c->argc == 3) {
        clusterNode *node = clusterLookupNode(c->argv[2]->ptr);

        if (node == NULL) {
            addReplyError(c,"Unknown node");
            return;
        }

        countersSync(node);
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"node") && c->argc >= 3) {
        if (!strcasecmp(c->argv[2]->ptr,"shards") && c->argc == 4) {
            clusterNode *node = clusterLookupNode(c->argv[3]->ptr);

            if (node == NULL) {
                addReplyError(c,"Unknown node");
                return;
            }

            addReplyLongLong(c, counterShardsForNode(node));
        } else {
            addReplyErrorFormat(c, "Unknown DEBUG NODE subcommand or wrong number of arguments for '%s'",
                (char*)c->argv[2]->ptr);
        }
    } else if (!strcasecmp(c->argv[1]->ptr,"counter") && c->argc == 3) {
        int i;
        char buf[5+40+2];
        listNode *ln;
        listIter li;
        counter *cntr = counterLookup(c->argv[2]->ptr);

        if (cntr == NULL) {
            addReplyError(c,"Unknown counter");
            return;
        }

        countersUpdateValue(cntr);

        addReplyMultiBulkLen(c,7);

        addReplyMultiBulkLen(c,listLength(cntr->shards));

        memcpy(buf, "$40\r\n", 5);
        buf[5+40+0] = '\r';
        buf[5+40+1] = '\n';

        listRewind(cntr->shards,&li);
        while ((ln = listNext(&li)) != NULL) {
            shard *shrd = listNodeValue(ln);

            memcpy(&buf[5], shrd->node_name, CLUSTER_NAMELEN);

            addReplyMultiBulkLen(c,5);
            addReplyString(c, buf, (sizeof("$40\r\n")-1) + CLUSTER_NAMELEN + (sizeof("\r\n")-1));
            addReplyLongDouble(c, shrd->value);
            addReplyLongLong(c, shrd->predict_time);
            addReplyLongDouble(c, shrd->predict_value);
            addReplyLongDouble(c, shrd->predict_change);
        }

        addReplyLongDouble(c, cntr->value);

        addReplyMultiBulkLen(c, server.history_size);
        for (i = server.history_index; i >= 0; i--) {
            addReplyLongDouble(c, cntr->history[i]);
        }
        for (i = server.history_size - 1; i > server.history_index; i--) {
            addReplyLongDouble(c, cntr->history[i]);
        }

        addReplyLongLong(c, cntr->revision);
        addReplyLongDouble(c, cntr->precision);

        addReplyLongLong(c, cntr->hits);
        addReplyLongLong(c, cntr->misses);
    } else if (!strcasecmp(c->argv[1]->ptr,"resetshard") && c->argc == 4) {
        counter *cntr = counterLookup(c->argv[2]->ptr);
        clusterNode *node = clusterLookupNode(c->argv[3]->ptr);
        if (cntr != NULL) {
            if (node != NULL) {
                counterResetShard(cntr, node);
            }
        }
        addReply(c,shared.ok);
    } else if (!strcasecmp(c->argv[1]->ptr,"prediction") && c->argc == 3) {
        listNode *ln;
        listIter li;
        long double prediction = 0;
        counter *cntr = counterLookup(c->argv[2]->ptr);

        if (cntr != NULL) {
            listRewind(cntr->shards,&li);
            while ((ln = listNext(&li)) != NULL) {
                shard *shrd = listNodeValue(ln);

                prediction += shrd->predict_change;
            }
        }

        addReplyLongDouble(c, prediction);
    } else {
        addReplyErrorFormat(c, "Unknown DEBUG subcommand or wrong number of arguments for '%s'",
            (char*)c->argv[1]->ptr);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x77592(%rip), %rsi     # 0xa6938
callq 0x12070
cmpl $0x0, %eax
jne 0x2f3bf
movq $-0x1, %rax
movb $0x78, (%rax)
jmp 0x30043
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x7756b(%rip), %rsi     # 0xa6941
callq 0x12070
cmpl $0x0, %eax
je 0x2f405
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x77552(%rip), %rsi     # 0xa6949
callq 0x12070
cmpl $0x0, %eax
jne 0x2f4a5
movq $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jl 0x2f44f
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rsi
leaq -0x10(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x2a5d0
cmpl $0x0, %eax
je 0x2f43e
jmp 0x30043
cmpq $0x0, -0x10(%rbp)
jge 0x2f44d
movq $0x0, -0x10(%rbp)
jmp 0x2f44f
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x774db(%rip), %rsi     # 0xa6941
callq 0x12070
cmpl $0x0, %eax
setne %dl
xorb $-0x1, %dl
xorl %eax, %eax
movl $0x3, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x1a9f0
movq -0x8(%rbp), %rdi
leaq 0x774c0(%rip), %rsi     # 0xa695b
callq 0x24320
jmp 0x30041
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x74e16(%rip), %rsi     # 0xa42d2
callq 0x12070
cmpl $0x0, %eax
jne 0x2f4f8
movq $-0x1, %rdi
callq 0x20a00
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x20ce0
movq -0x8(%rbp), %rdi
leaq 0x9030e(%rip), %rax     # 0xbf7f8
movq 0x8(%rax), %rsi
callq 0x24050
jmp 0x3003f
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x7747d(%rip), %rsi     # 0xa698c
callq 0x12070
cmpl $0x0, %eax
jne 0x2f575
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jl 0x2f543
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x298e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq (%rax), %rsi
leaq 0x7743a(%rip), %rdx     # 0xa6993
leaq 0x7743a(%rip), %rcx     # 0xa699a
movl $0xa8, %r8d
callq 0x30050
movl $0x1, %edi
callq 0x12100
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x77416(%rip), %rsi     # 0xa69a2
callq 0x12070
cmpl $0x0, %eax
jne 0x2f63b
leaq 0x8fb47(%rip), %rax     # 0xbf0e8
movq 0x6c8(%rax), %rdi
callq 0x3bcd0
cmpl $0x0, %eax
je 0x2f5cb
movq -0x8(%rbp), %rdi
leaq 0x9023b(%rip), %rax     # 0xbf7f8
movq 0x10(%rax), %rsi
callq 0x24050
jmp 0x30043
leaq 0x8fb16(%rip), %rax     # 0xbf0e8
movq 0x618(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x17c70
leaq 0x8faff(%rip), %rax     # 0xbf0e8
movq 0x6c8(%rax), %rdi
callq 0x3c5f0
cmpl $0x0, %eax
je 0x2f60f
movq -0x8(%rbp), %rdi
leaq 0x773a4(%rip), %rsi     # 0xa69a9
callq 0x24320
jmp 0x30043
movl $0x3, %edi
leaq 0x773b0(%rip), %rsi     # 0xa69cb
movb $0x0, %al
callq 0x18b10
movq -0x8(%rbp), %rdi
leaq 0x901cb(%rip), %rax     # 0xbf7f8
movq 0x8(%rax), %rsi
callq 0x24050
jmp 0x3003b
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x77395(%rip), %rsi     # 0xa69e7
callq 0x12070
cmpl $0x0, %eax
jne 0x2f67a
callq 0x19480
movq -0x8(%rbp), %rdi
leaq 0x9018c(%rip), %rax     # 0xbf7f8
movq 0x8(%rax), %rsi
callq 0x24050
jmp 0x30039
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x7735f(%rip), %rsi     # 0xa69f0
callq 0x12070
cmpl $0x0, %eax
jne 0x2f6c8
movq -0x8(%rbp), %rax
cmpl $0x2, 0x28(%rax)
jne 0x2f6c8
callq 0x35ef0
callq 0x19480
movq -0x8(%rbp), %rdi
leaq 0x9013e(%rip), %rax     # 0xbf7f8
movq 0x8(%rax), %rsi
callq 0x24050
jmp 0x30037
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x77317(%rip), %rsi     # 0xa69f6
callq 0x12070
cmpl $0x0, %eax
jne 0x2f757
movq -0x8(%rbp), %rax
cmpl $0x2, 0x28(%rax)
jne 0x2f757
callq 0x1e290
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x2f160
movl $0x0, -0x4c(%rbp)
cmpl $0x14, -0x4c(%rbp)
jge 0x2f73c
movq -0x48(%rbp), %rdi
movslq -0x4c(%rbp), %rax
movzbl -0x40(%rbp,%rax), %edx
leaq 0x75ee8(%rip), %rsi     # 0xa560e
movb $0x0, %al
callq 0x1f350
movq %rax, -0x48(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x2f70c
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x24510
movq -0x48(%rbp), %rdi
callq 0x1e3c0
jmp 0x30035
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x7728f(%rip), %rsi     # 0xa69fd
callq 0x12070
cmpl $0x0, %eax
jne 0x2f80f
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jne 0x2f80f
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x12170
movsd %xmm0, -0x58(%rbp)
movsd 0x77180(%rip), %xmm0    # 0xa6930
mulsd -0x58(%rbp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl $0xf4240, %ecx          # imm = 0xF4240
cqto
idivq %rcx
movq %rax, -0x70(%rbp)
movq -0x60(%rbp), %rax
movl $0xf4240, %ecx          # imm = 0xF4240
cqto
idivq %rcx
imulq $0x3e8, %rdx, %rax      # imm = 0x3E8
movq %rax, -0x68(%rbp)
leaq -0x70(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x122e0
movq -0x8(%rbp), %rdi
leaq 0x8fff7(%rip), %rax     # 0xbf7f8
movq 0x8(%rax), %rsi
callq 0x24050
jmp 0x30033
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x79e2b(%rip), %rsi     # 0xa9651
callq 0x12070
cmpl $0x0, %eax
jne 0x2f8bb
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jne 0x2f8bb
leaq 0x779a2(%rip), %rdi     # 0xa71e7
movl $0x1, %esi
callq 0x1dfe0
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x1eeb0
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
leaq 0x77188(%rip), %rsi     # 0xa6a03
leaq 0x77184(%rip), %rdx     # 0xa6a06
movl $0x2, %ecx
callq 0x20820
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
leaq 0x766c4(%rip), %rsi     # 0xa5f5f
movl $0x2, %edx
callq 0x1ede0
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x241e0
jmp 0x30031
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x77137(%rip), %rsi     # 0xa6a09
callq 0x12070
cmpl $0x0, %eax
jne 0x2fa17
movq -0x8(%rbp), %rax
cmpl $0x2, 0x28(%rax)
jne 0x2fa17
callq 0x1e290
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x77112(%rip), %rsi     # 0xa6a14
movl $0x40, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x77100(%rip), %rsi     # 0xa6a1d
movl $0x70, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x770f1(%rip), %rsi     # 0xa6a29
movl $0x70, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x770e0(%rip), %rsi     # 0xa6a33
movl $0x10, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x770ce(%rip), %rsi     # 0xa6a3c
movl $0x18, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x770c1(%rip), %rsi     # 0xa6a4a
movl $0x1, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x770b2(%rip), %rsi     # 0xa6a56
movl $0x3, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x770a3(%rip), %rsi     # 0xa6a62
movl $0x5, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x77095(%rip), %rsi     # 0xa6a6f
movl $0x9, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x77087(%rip), %rsi     # 0xa6a7c
movl $0x11, %edx
movb $0x0, %al
callq 0x1f350
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rdi
movq -0x80(%rbp), %rsi
callq 0x24cf0
jmp 0x3002f
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x7705b(%rip), %rsi     # 0xa6a89
callq 0x12070
cmpl $0x0, %eax
jne 0x2faa2
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jne 0x2faa2
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x31d30
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x88(%rbp)
jne 0x2fa7d
movq -0x8(%rbp), %rdi
leaq 0x7701b(%rip), %rsi     # 0xa6a8e
callq 0x24320
jmp 0x30043
movq -0x88(%rbp), %rdi
callq 0x3a880
movq -0x8(%rbp), %rdi
leaq 0x8fd64(%rip), %rax     # 0xbf7f8
movq 0x8(%rax), %rsi
callq 0x24050
jmp 0x3002d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x76fdd(%rip), %rsi     # 0xa6a96
callq 0x12070
cmpl $0x0, %eax
jne 0x2fb8a
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jl 0x2fb8a
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x7803d(%rip), %rsi     # 0xa7b29
callq 0x12070
cmpl $0x0, %eax
jne 0x2fb63
movq -0x8(%rbp), %rax
cmpl $0x4, 0x28(%rax)
jne 0x2fb63
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x31d30
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
jne 0x2fb3b
movq -0x8(%rbp), %rdi
leaq 0x76f5d(%rip), %rsi     # 0xa6a8e
callq 0x24320
jmp 0x30043
movq -0x8(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x90(%rbp), %rdi
callq 0x39c50
movq -0x148(%rbp), %rdi
movslq %eax, %rsi
callq 0x24ab0
jmp 0x2fb85
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x76f1d(%rip), %rsi     # 0xa6a9b
movb $0x0, %al
callq 0x24360
jmp 0x3002b
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x76f46(%rip), %rsi     # 0xa6ae7
callq 0x12070
cmpl $0x0, %eax
jne 0x2fe85
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jne 0x2fe85
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x396f0
movq %rax, -0xf0(%rbp)
cmpq $0x0, -0xf0(%rbp)
jne 0x2fbf8
movq -0x8(%rbp), %rdi
leaq 0x76ef1(%rip), %rsi     # 0xa6adf
callq 0x24320
jmp 0x30043
movq -0xf0(%rbp), %rdi
callq 0x398f0
movq -0x8(%rbp), %rdi
movl $0x7, %esi
callq 0x24b20
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
callq 0x24b20
movl 0x76ebf(%rip), %eax     # 0xa6aef
movl %eax, -0xd0(%rbp)
movb 0x76eb7(%rip), %al      # 0xa6af3
movb %al, -0xcc(%rbp)
movb $0xd, -0xa3(%rbp)
movb $0xa, -0xa2(%rbp)
movq -0xf0(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x13000
leaq -0xe8(%rbp), %rdi
callq 0x13060
movq %rax, -0xd8(%rbp)
cmpq $0x0, %rax
je 0x2fd42
movq -0xd8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rax
movq 0x28(%rax), %rcx
movq %rcx, -0xab(%rbp)
movups 0x8(%rax), %xmm0
movups 0x18(%rax), %xmm1
movups %xmm1, -0xbb(%rbp)
movups %xmm0, -0xcb(%rbp)
movq -0x8(%rbp), %rdi
movl $0x5, %esi
callq 0x24b20
movq -0x8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
movl $0x2f, %edx
callq 0x24260
movq -0x8(%rbp), %rdi
movq -0xf8(%rbp), %rax
fldt 0x30(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
movq -0x8(%rbp), %rdi
movq -0xf8(%rbp), %rax
movq 0x40(%rax), %rsi
callq 0x24ab0
movq -0x8(%rbp), %rdi
movq -0xf8(%rbp), %rax
fldt 0x50(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
movq -0x8(%rbp), %rdi
movq -0xf8(%rbp), %rax
fldt 0x60(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
jmp 0x2fc67
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
fldt 0x20(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
movq -0x8(%rbp), %rdi
leaq 0x8f383(%rip), %rax     # 0xbf0e8
movl 0x628(%rax), %eax
movl %eax, %esi
callq 0x24b20
leaq 0x8f36f(%rip), %rax     # 0xbf0e8
movl 0x62c(%rax), %eax
movl %eax, -0x94(%rbp)
cmpl $0x0, -0x94(%rbp)
jl 0x2fdc6
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
movq 0x30(%rax), %rax
movslq -0x94(%rbp), %rcx
shlq $0x4, %rcx
fldt (%rax,%rcx)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
movl -0x94(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x2fd85
leaq 0x8f31b(%rip), %rax     # 0xbf0e8
movl 0x628(%rax), %eax
subl $0x1, %eax
movl %eax, -0x94(%rbp)
movl -0x94(%rbp), %eax
leaq 0x8f2ff(%rip), %rcx     # 0xbf0e8
cmpl 0x62c(%rcx), %eax
jle 0x2fe29
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
movq 0x30(%rax), %rax
movslq -0x94(%rbp), %rcx
shlq $0x4, %rcx
fldt (%rax,%rcx)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
movl -0x94(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x2fddc
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, %esi
callq 0x24ab0
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
fldl 0x50(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
movl 0x58(%rax), %eax
movl %eax, %esi
callq 0x24ab0
movq -0x8(%rbp), %rdi
movq -0xf0(%rbp), %rax
movl 0x5c(%rax), %eax
movl %eax, %esi
callq 0x24ab0
jmp 0x30029
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x76c59(%rip), %rsi     # 0xa6af5
callq 0x12070
cmpl $0x0, %eax
jne 0x2ff2e
movq -0x8(%rbp), %rax
cmpl $0x4, 0x28(%rax)
jne 0x2ff2e
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x396f0
movq %rax, -0x100(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x31d30
movq %rax, -0x108(%rbp)
cmpq $0x0, -0x100(%rbp)
je 0x2ff15
cmpq $0x0, -0x108(%rbp)
je 0x2ff13
movq -0x100(%rbp), %rdi
movq -0x108(%rbp), %rsi
callq 0x39b70
jmp 0x2ff15
movq -0x8(%rbp), %rdi
leaq 0x8f8d8(%rip), %rax     # 0xbf7f8
movq 0x8(%rax), %rsi
callq 0x24050
jmp 0x30027
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x76bbb(%rip), %rsi     # 0xa6b00
callq 0x12070
cmpl $0x0, %eax
jne 0x30003
movq -0x8(%rbp), %rax
cmpl $0x3, 0x28(%rax)
jne 0x30003
fldz
fstpt -0x130(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x396f0
movq %rax, -0x138(%rbp)
cmpq $0x0, -0x138(%rbp)
je 0x2ffed
movq -0x138(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x120(%rbp), %rsi
callq 0x13000
leaq -0x120(%rbp), %rdi
callq 0x13060
movq %rax, -0x110(%rbp)
cmpq $0x0, %rax
je 0x2ffeb
movq -0x110(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rax
fldt 0x60(%rax)
fldt -0x130(%rbp)
faddp %st, %st(1)
fstpt -0x130(%rbp)
jmp 0x2ffa6
jmp 0x2ffed
movq -0x8(%rbp), %rdi
fldt -0x130(%rbp)
movq %rsp, %rax
fstpt (%rax)
callq 0x248c0
jmp 0x30025
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x76aed(%rip), %rsi     # 0xa6b0b
movb $0x0, %al
callq 0x24360
jmp 0x30027
jmp 0x30029
jmp 0x3002b
jmp 0x3002d
jmp 0x3002f
jmp 0x30031
jmp 0x30033
jmp 0x30035
jmp 0x30037
jmp 0x30039
jmp 0x3003b
jmp 0x3003d
jmp 0x3003f
jmp 0x30041
jmp 0x30043
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
nopl (%rax)