// File: /workspace/github_c_makefile_star2_O0/erikdubbelboer[P]discnt/src/config.c
// Function: loadServerConfigFromString
void loadServerConfigFromString(char *config) {
    char *err = NULL;
    int linenum = 0, totlines, i;
    sds *lines;

    lines = sdssplitlen(config,strlen(config),"\n",1,&totlines);

    for (i = 0; i < totlines; i++) {
        sds *argv;
        int argc;

        linenum = i+1;
        lines[i] = sdstrim(lines[i]," \t\r\n");

        /* Skip comments and blank lines */
        if (lines[i][0] == '#' || lines[i][0] == '\0') continue;

        /* Split into arguments */
        argv = sdssplitargs(lines[i],&argc);
        if (argv == NULL) {
            err = "Unbalanced quotes in configuration line";
            goto loaderr;
        }

        /* Skip this line if the resulting command vector is empty. */
        if (argc == 0) {
            sdsfreesplitres(argv,argc);
            continue;
        }
        sdstolower(argv[0]);

        /* Execute config directives */
        if (!strcasecmp(argv[0],"timeout") && argc == 2) {
            server.maxidletime = atoi(argv[1]);
            if (server.maxidletime < 0) {
                err = "Invalid timeout value"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"tcp-keepalive") && argc == 2) {
            server.tcpkeepalive = atoi(argv[1]);
            if (server.tcpkeepalive < 0) {
                err = "Invalid tcp-keepalive value"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"port") && argc == 2) {
            server.port = atoi(argv[1]);
            if (server.port < 0 || server.port > 65535) {
                err = "Invalid port"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"tcp-backlog") && argc == 2) {
            server.tcp_backlog = atoi(argv[1]);
            if (server.tcp_backlog < 0) {
                err = "Invalid backlog value"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"bind") && argc >= 2) {
            int j, addresses = argc-1;

            if (addresses > CONFIG_BINDADDR_MAX) {
                err = "Too many bind addresses specified"; goto loaderr;
            }
            for (j = 0; j < addresses; j++)
                server.bindaddr[j] = zstrdup(argv[j+1]);
            server.bindaddr_count = addresses;
        } else if (!strcasecmp(argv[0],"unixsocket") && argc == 2) {
            server.unixsocket = zstrdup(argv[1]);
        } else if (!strcasecmp(argv[0],"unixsocketperm") && argc == 2) {
            errno = 0;
            server.unixsocketperm = (mode_t)strtol(argv[1], NULL, 8);
            if (errno || server.unixsocketperm > 0777) {
                err = "Invalid socket file permissions"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"save")) {
            if (argc == 3) {
                int seconds = atoi(argv[1]);
                int changes = atoi(argv[2]);
                if (seconds < 1 || changes < 0) {
                    err = "Invalid save parameters"; goto loaderr;
                }
                appendServerSaveParams(seconds,changes);
            } else if (argc == 2 && !strcasecmp(argv[1],"")) {
                resetServerSaveParams();
            }
        } else if (!strcasecmp(argv[0],"dir") && argc == 2) {
            if (chdir(argv[1]) == -1) {
                serverLog(LL_WARNING,"Can't chdir to '%s': %s",
                    argv[1], strerror(errno));
                exit(1);
            }
        } else if (!strcasecmp(argv[0],"loglevel") && argc == 2) {
            server.verbosity = configEnumGetValue(loglevel_enum,argv[1]);
            if (server.verbosity == INT_MIN) {
                err = "Invalid log level. "
                      "Must be one of debug, verbose, notice, warning";
                goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"logfile") && argc == 2) {
            FILE *logfp;

            zfree(server.logfile);
            server.logfile = zstrdup(argv[1]);
            if (server.logfile[0] != '\0') {
                /* Test if we are able to open the file. The server will not
                 * be able to abort just for this problem later... */
                logfp = fopen(server.logfile,"a");
                if (logfp == NULL) {
                    err = sdscatprintf(sdsempty(),
                        "Can't open the log file: %s", strerror(errno));
                    goto loaderr;
                }
                fclose(logfp);
            }
        } else if (!strcasecmp(argv[0],"syslog-enabled") && argc == 2) {
            if ((server.syslog_enabled = yesnotoi(argv[1])) == -1) {
                err = "argument must be 'yes' or 'no'"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"syslog-ident") && argc == 2) {
            if (server.syslog_ident) zfree(server.syslog_ident);
            server.syslog_ident = zstrdup(argv[1]);
        } else if (!strcasecmp(argv[0],"syslog-facility") && argc == 2) {
            server.syslog_facility =
                configEnumGetValue(syslog_facility_enum,argv[1]);
            if (server.syslog_facility == INT_MIN) {
                err = "Invalid log facility. Must be one of USER or between LOCAL0-LOCAL7";
                goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"include") && argc == 2) {
            loadServerConfig(argv[1],NULL);
        } else if (!strcasecmp(argv[0],"maxclients") && argc == 2) {
            server.maxclients = atoi(argv[1]);
            if (server.maxclients < 1) {
                err = "Invalid max clients limit"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"maxmemory") && argc == 2) {
            server.maxmemory = memtoll(argv[1],NULL);
        } else if (!strcasecmp(argv[0],"default-precision") && argc == 2) {
            server.default_precision = strtod(argv[1], NULL);
            if (server.default_precision < 0) {
                err = "Invalid default precision"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"history-size") && argc == 2) {
            server.history_size = atoi(argv[1]);
            if (server.history_size < 1) {
                err = "Invalid history"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"ddbchecksum") && argc == 2) {
            if ((server.ddb_checksum = yesnotoi(argv[1])) == -1) {
                err = "argument must be 'yes' or 'no'"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"activerehashing") && argc == 2) {
            if ((server.activerehashing = yesnotoi(argv[1])) == -1) {
                err = "argument must be 'yes' or 'no'"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"daemonize") && argc == 2) {
            if ((server.daemonize = yesnotoi(argv[1])) == -1) {
                err = "argument must be 'yes' or 'no'"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"hz") && argc == 2) {
            server.hz = atoi(argv[1]);
            if (server.hz < CONFIG_MIN_HZ) server.hz = CONFIG_MIN_HZ;
            if (server.hz > CONFIG_MAX_HZ) server.hz = CONFIG_MAX_HZ;
        } else if (!strcasecmp(argv[0],"requirepass") && argc == 2) {
            if (strlen(argv[1]) > CONFIG_AUTHPASS_MAX_LEN) {
                err = "Password is longer than CONFIG_AUTHPASS_MAX_LEN";
                goto loaderr;
            }
            server.requirepass = zstrdup(argv[1]);
        } else if (!strcasecmp(argv[0],"pidfile") && argc == 2) {
            zfree(server.pidfile);
            server.pidfile = zstrdup(argv[1]);
        } else if (!strcasecmp(argv[0],"dbfilename") && argc == 2) {
            if (!pathIsBaseName(argv[1])) {
                err = "dbfilename can't be a path, just a filename";
                goto loaderr;
            }
            zfree(server.ddb_filename);
            server.ddb_filename = zstrdup(argv[1]);
        } else if (!strcasecmp(argv[0],"rename-command") && argc == 3) {
            struct serverCommand *cmd = lookupCommand(argv[1]);
            int retval;

            if (!cmd) {
                err = "No such command in rename-command";
                goto loaderr;
            }

            /* If the target command name is the empty string we just
             * remove it from the command table. */
            retval = dictDelete(server.commands, argv[1]);
            serverAssert(retval == DICT_OK);

            /* Otherwise we re-add the command under a different name. */
            if (sdslen(argv[2]) != 0) {
                sds copy = sdsdup(argv[2]);

                retval = dictAdd(server.commands, copy, cmd);
                if (retval != DICT_OK) {
                    sdsfree(copy);
                    err = "Target command name already exists"; goto loaderr;
                }
            }
        } else if (!strcasecmp(argv[0],"cluster-config-file") && argc == 2) {
            zfree(server.cluster_configfile);
            server.cluster_configfile = zstrdup(argv[1]);
        } else if (!strcasecmp(argv[0],"cluster-node-timeout") && argc == 2) {
            server.cluster_node_timeout = strtoll(argv[1],NULL,10);
            if (server.cluster_node_timeout <= 0) {
                err = "cluster node timeout must be 1 or greater"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"latency-monitor-threshold") &&
                   argc == 2)
        {
            server.latency_monitor_threshold = strtoll(argv[1],NULL,10);
            if (server.latency_monitor_threshold < 0) {
                err = "The latency threshold can't be negative";
                goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"client-output-buffer-limit") &&
                   argc == 5)
        {
            int class = getClientTypeByName(argv[1]);
            unsigned long long hard, soft;
            int soft_seconds;

            if (class == -1) {
                err = "Unrecognized client limit class";
                goto loaderr;
            }
            hard = memtoll(argv[2],NULL);
            soft = memtoll(argv[3],NULL);
            soft_seconds = atoi(argv[4]);
            if (soft_seconds < 0) {
                err = "Negative number of seconds in soft limit is invalid";
                goto loaderr;
            }
            server.client_obuf_limits[class].hard_limit_bytes = hard;
            server.client_obuf_limits[class].soft_limit_bytes = soft;
            server.client_obuf_limits[class].soft_limit_seconds = soft_seconds;
        } else if (!strcasecmp(argv[0],"stop-writes-on-bgsave-error") &&
                   argc == 2) {
            if ((server.stop_writes_on_bgsave_err = yesnotoi(argv[1])) == -1) {
                err = "argument must be 'yes' or 'no'"; goto loaderr;
            }
        } else if (!strcasecmp(argv[0],"supervised") && argc == 2) {
            server.supervised_mode =
                configEnumGetValue(supervised_mode_enum,argv[1]);

            if (server.supervised_mode == INT_MIN) {
                err = "Invalid option for 'supervised'. "
                    "Allowed values: 'upstart', 'systemd', 'auto', or 'no'";
                goto loaderr;
            }
        } else {
            err = "Bad directive or wrong number of arguments"; goto loaderr;
        }
        sdsfreesplitres(argv,argc);
    }

    sdsfreesplitres(lines,totlines);
    return;

loaderr:
    fprintf(stderr, "\n*** FATAL CONFIG FILE ERROR ***\n");
    fprintf(stderr, "Reading the configuration file, at line %d\n", linenum);
    fprintf(stderr, ">>> '%s'\n", lines[i]);
    fprintf(stderr, "%s\n", err);
    exit(1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq $0x0, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rdi
callq 0x12230
movq -0x90(%rbp), %rdi
movl %eax, %esi
leaq 0x7a2f6(%rip), %rdx     # 0xa4da8
movl $0x1, %ecx
leaq -0x18(%rbp), %r8
callq 0x1fde0
movq %rax, -0x28(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x2ba50
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movq -0x28(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x7b46a(%rip), %rsi     # 0xa5f5d
callq 0x1fa20
movq %rax, %rdx
movq -0x28(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x28(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
je 0x2ab2f
movq -0x28(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x2ab34
jmp 0x2ba42
movq -0x28(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq -0x34(%rbp), %rsi
callq 0x20390
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x2ab64
leaq 0x7b407(%rip), %rax     # 0xa5f62
movq %rax, -0x10(%rbp)
jmp 0x2ba65
cmpl $0x0, -0x34(%rbp)
jne 0x2ab7b
movq -0x30(%rbp), %rdi
movl -0x34(%rbp), %esi
callq 0x20010
jmp 0x2ba42
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x1fc90
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b790(%rip), %rsi     # 0xa6325
callq 0x12070
cmpl $0x0, %eax
jne 0x2abe6
cmpl $0x2, -0x34(%rbp)
jne 0x2abe6
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, %ecx
leaq 0x9452d(%rip), %rax     # 0xbf0e8
movl %ecx, 0x59c(%rax)
leaq 0x94520(%rip), %rax     # 0xbf0e8
cmpl $0x0, 0x59c(%rax)
jge 0x2abe1
leaq 0x7b3b2(%rip), %rax     # 0xa5f8a
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba36
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b3ac(%rip), %rsi     # 0xa5fa0
callq 0x12070
cmpl $0x0, %eax
jne 0x2ac45
cmpl $0x2, -0x34(%rbp)
jne 0x2ac45
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, %ecx
leaq 0x944ce(%rip), %rax     # 0xbf0e8
movl %ecx, 0x5a0(%rax)
leaq 0x944c1(%rip), %rax     # 0xbf0e8
cmpl $0x0, 0x5a0(%rax)
jge 0x2ac40
leaq 0x7b377(%rip), %rax     # 0xa5fae
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba34
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b37f(%rip), %rsi     # 0xa5fd2
callq 0x12070
cmpl $0x0, %eax
jne 0x2acb7
cmpl $0x2, -0x34(%rbp)
jne 0x2acb7
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, %ecx
leaq 0x9446f(%rip), %rax     # 0xbf0e8
movl %ecx, 0xb4(%rax)
leaq 0x94462(%rip), %rax     # 0xbf0e8
cmpl $0x0, 0xb4(%rax)
jl 0x2aca2
leaq 0x94452(%rip), %rax     # 0xbf0e8
cmpl $0xffff, 0xb4(%rax)     # imm = 0xFFFF
jle 0x2acb2
leaq 0x7b321(%rip), %rax     # 0xa5fca
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba32
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b312(%rip), %rsi     # 0xa5fd7
callq 0x12070
cmpl $0x0, %eax
jne 0x2ad16
cmpl $0x2, -0x34(%rbp)
jne 0x2ad16
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, %ecx
leaq 0x943fd(%rip), %rax     # 0xbf0e8
movl %ecx, 0xb8(%rax)
leaq 0x943f0(%rip), %rax     # 0xbf0e8
cmpl $0x0, 0xb8(%rax)
jge 0x2ad11
leaq 0x7b2db(%rip), %rax     # 0xa5fe3
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba30
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b2d5(%rip), %rsi     # 0xa5ff9
callq 0x12070
cmpl $0x0, %eax
jne 0x2adb2
cmpl $0x2, -0x34(%rbp)
jl 0x2adb2
movl -0x34(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x10, -0x3c(%rbp)
jle 0x2ad57
leaq 0x7b2b0(%rip), %rax     # 0xa5ffe
movq %rax, -0x10(%rbp)
jmp 0x2ba65
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jge 0x2ad9d
movq -0x30(%rbp), %rax
movl -0x38(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20d90
movq %rax, %rdx
movslq -0x38(%rbp), %rcx
leaq 0x9435e(%rip), %rax     # 0xbf0e8
movq %rdx, 0xc0(%rax,%rcx,8)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x2ad5e
movl -0x3c(%rbp), %ecx
leaq 0x94341(%rip), %rax     # 0xbf0e8
movl %ecx, 0x140(%rax)
jmp 0x2ba2e
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7832f(%rip), %rsi     # 0xa30ef
callq 0x12070
cmpl $0x0, %eax
jne 0x2adf3
cmpl $0x2, -0x34(%rbp)
jne 0x2adf3
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x20d90
movq %rax, %rcx
leaq 0x94301(%rip), %rax     # 0xbf0e8
movq %rcx, 0x148(%rax)
jmp 0x2ba2c
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b21f(%rip), %rsi     # 0xa6020
callq 0x12070
cmpl $0x0, %eax
jne 0x2ae73
cmpl $0x2, -0x34(%rbp)
jne 0x2ae73
callq 0x120b0
movl $0x0, (%rax)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x8, %edx
callq 0x124f0
movl %eax, %ecx
leaq 0x942ad(%rip), %rax     # 0xbf0e8
movl %ecx, 0x150(%rax)
callq 0x120b0
cmpl $0x0, (%rax)
jne 0x2ae5e
leaq 0x94296(%rip), %rax     # 0xbf0e8
cmpl $0x1ff, 0x150(%rax)     # imm = 0x1FF
jbe 0x2ae6e
leaq 0x7b1ca(%rip), %rax     # 0xa602f
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba2a
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7e694(%rip), %rsi     # 0xa9515
callq 0x12070
cmpl $0x0, %eax
jne 0x2af06
cmpl $0x3, -0x34(%rbp)
jne 0x2aedb
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, -0x40(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x12820
movl %eax, -0x44(%rbp)
cmpl $0x1, -0x40(%rbp)
jl 0x2aebd
cmpl $0x0, -0x44(%rbp)
jge 0x2aecd
leaq 0x7b18b(%rip), %rax     # 0xa604f
movq %rax, -0x10(%rbp)
jmp 0x2ba65
movslq -0x40(%rbp), %rdi
movl -0x44(%rbp), %esi
callq 0x2a970
jmp 0x2af01
cmpl $0x2, -0x34(%rbp)
jne 0x2aeff
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x7ae82(%rip), %rsi     # 0xa5d72
callq 0x12070
cmpl $0x0, %eax
jne 0x2aeff
callq 0x2aa30
jmp 0x2af01
jmp 0x2ba28
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b153(%rip), %rsi     # 0xa6067
callq 0x12070
cmpl $0x0, %eax
jne 0x2af7d
cmpl $0x2, -0x34(%rbp)
jne 0x2af7d
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12250
cmpl $-0x1, %eax
jne 0x2af78
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
callq 0x120b0
movl (%rax), %edi
callq 0x12900
movq -0x98(%rbp), %rdx
movq %rax, %rcx
movl $0x3, %edi
leaq 0x7b104(%rip), %rsi     # 0xa606b
movb $0x0, %al
callq 0x18b10
movl $0x1, %edi
callq 0x12870
jmp 0x2ba26
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b0f8(%rip), %rsi     # 0xa6083
callq 0x12070
cmpl $0x0, %eax
jne 0x2afe6
cmpl $0x2, -0x34(%rbp)
jne 0x2afe6
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x93f06(%rip), %rdi     # 0xbeeb0
callq 0x2a810
movl %eax, %ecx
leaq 0x94130(%rip), %rax     # 0xbf0e8
movl %ecx, 0x598(%rax)
leaq 0x94123(%rip), %rax     # 0xbf0e8
cmpl $0x80000000, 0x598(%rax) # imm = 0x80000000
jne 0x2afe1
leaq 0x7b0b4(%rip), %rax     # 0xa608c
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba24
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b0da(%rip), %rsi     # 0xa60ce
callq 0x12070
cmpl $0x0, %eax
jne 0x2b0bf
cmpl $0x2, -0x34(%rbp)
jne 0x2b0bf
leaq 0x940d5(%rip), %rax     # 0xbf0e8
movq 0x5f0(%rax), %rdi
callq 0x20ce0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x20d90
movq %rax, %rcx
leaq 0x940b2(%rip), %rax     # 0xbf0e8
movq %rcx, 0x5f0(%rax)
leaq 0x940a4(%rip), %rax     # 0xbf0e8
movq 0x5f0(%rax), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x2b0ba
leaq 0x9408e(%rip), %rax     # 0xbf0e8
movq 0x5f0(%rax), %rdi
leaq 0x7a59f(%rip), %rsi     # 0xa5607
callq 0x124e0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x2b0b1
callq 0x1e290
movq %rax, -0xa0(%rbp)
callq 0x120b0
movl (%rax), %edi
callq 0x12900
movq -0xa0(%rbp), %rdi
movq %rax, %rdx
leaq 0x7b035(%rip), %rsi     # 0xa60d6
movb $0x0, %al
callq 0x1f350
movq %rax, -0x10(%rbp)
jmp 0x2ba65
movq -0x50(%rbp), %rdi
callq 0x12200
jmp 0x2ba22
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b025(%rip), %rsi     # 0xa60f2
callq 0x12070
cmpl $0x0, %eax
jne 0x2b111
cmpl $0x2, -0x34(%rbp)
jne 0x2b111
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2a910
leaq 0x93ff7(%rip), %rcx     # 0xbf0e8
movl %eax, 0x5f8(%rcx)
cmpl $-0x1, %eax
jne 0x2b10c
leaq 0x7affe(%rip), %rax     # 0xa6101
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba20
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7b001(%rip), %rsi     # 0xa6120
callq 0x12070
cmpl $0x0, %eax
jne 0x2b176
cmpl $0x2, -0x34(%rbp)
jne 0x2b176
leaq 0x93fb2(%rip), %rax     # 0xbf0e8
cmpq $0x0, 0x600(%rax)
je 0x2b153
leaq 0x93fa1(%rip), %rax     # 0xbf0e8
movq 0x600(%rax), %rdi
callq 0x20ce0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x20d90
movq %rax, %rcx
leaq 0x93f7e(%rip), %rax     # 0xbf0e8
movq %rcx, 0x600(%rax)
jmp 0x2ba1e
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7afa9(%rip), %rsi     # 0xa612d
callq 0x12070
cmpl $0x0, %eax
jne 0x2b1df
cmpl $0x2, -0x34(%rbp)
jne 0x2b1df
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x93c6d(%rip), %rdi     # 0xbee10
callq 0x2a810
movl %eax, %ecx
leaq 0x93f37(%rip), %rax     # 0xbf0e8
movl %ecx, 0x608(%rax)
leaq 0x93f2a(%rip), %rax     # 0xbf0e8
cmpl $0x80000000, 0x608(%rax) # imm = 0x80000000
jne 0x2b1da
leaq 0x7af6c(%rip), %rax     # 0xa613d
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba1c
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7af93(%rip), %rsi     # 0xa6180
callq 0x12070
cmpl $0x0, %eax
jne 0x2b213
cmpl $0x2, -0x34(%rbp)
jne 0x2b213
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2baf0
jmp 0x2ba1a
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7af67(%rip), %rsi     # 0xa6188
callq 0x12070
cmpl $0x0, %eax
jne 0x2b272
cmpl $0x2, -0x34(%rbp)
jne 0x2b272
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, %ecx
leaq 0x93ea1(%rip), %rax     # 0xbf0e8
movl %ecx, 0x60c(%rax)
leaq 0x93e94(%rip), %rax     # 0xbf0e8
cmpl $0x1, 0x60c(%rax)
jae 0x2b26d
leaq 0x7af2f(%rip), %rax     # 0xa6193
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba18
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7af2d(%rip), %rsi     # 0xa61ad
callq 0x12070
cmpl $0x0, %eax
jne 0x2b2b7
cmpl $0x2, -0x34(%rbp)
jne 0x2b2b7
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x280a0
movq %rax, %rcx
leaq 0x93e3d(%rip), %rax     # 0xbf0e8
movq %rcx, 0x610(%rax)
jmp 0x2ba16
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7aef2(%rip), %rsi     # 0xa61b7
callq 0x12070
cmpl $0x0, %eax
jne 0x2b31e
cmpl $0x2, -0x34(%rbp)
jne 0x2b31e
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x12170
leaq 0x93dfb(%rip), %rax     # 0xbf0e8
movsd %xmm0, 0x620(%rax)
xorps %xmm0, %xmm0
leaq 0x93de9(%rip), %rax     # 0xbf0e8
ucomisd 0x620(%rax), %xmm0
jbe 0x2b319
leaq 0x7aeb9(%rip), %rax     # 0xa61c9
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba14
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7aeb7(%rip), %rsi     # 0xa61e3
callq 0x12070
cmpl $0x0, %eax
jne 0x2b37d
cmpl $0x2, -0x34(%rbp)
jne 0x2b37d
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, %ecx
leaq 0x93d96(%rip), %rax     # 0xbf0e8
movl %ecx, 0x628(%rax)
leaq 0x93d89(%rip), %rax     # 0xbf0e8
cmpl $0x1, 0x628(%rax)
jae 0x2b378
leaq 0x7ae81(%rip), %rax     # 0xa61f0
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba12
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ae75(%rip), %rsi     # 0xa6200
callq 0x12070
cmpl $0x0, %eax
jne 0x2b3cf
cmpl $0x2, -0x34(%rbp)
jne 0x2b3cf
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2a910
leaq 0x93d39(%rip), %rcx     # 0xbf0e8
movl %eax, 0x6d4(%rcx)
cmpl $-0x1, %eax
jne 0x2b3ca
leaq 0x7ad40(%rip), %rax     # 0xa6101
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba10
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ae2f(%rip), %rsi     # 0xa620c
callq 0x12070
cmpl $0x0, %eax
jne 0x2b41e
cmpl $0x2, -0x34(%rbp)
jne 0x2b41e
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2a910
leaq 0x93ce7(%rip), %rcx     # 0xbf0e8
movl %eax, 0x44(%rcx)
cmpl $-0x1, %eax
jne 0x2b419
leaq 0x7acf1(%rip), %rax     # 0xa6101
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba0e
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7adf0(%rip), %rsi     # 0xa621c
callq 0x12070
cmpl $0x0, %eax
jne 0x2b470
cmpl $0x2, -0x34(%rbp)
jne 0x2b470
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2a910
leaq 0x93c98(%rip), %rcx     # 0xbf0e8
movl %eax, 0x5b8(%rcx)
cmpl $-0x1, %eax
jne 0x2b46b
leaq 0x7ac9f(%rip), %rax     # 0xa6101
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2ba0c
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ada8(%rip), %rsi     # 0xa6226
callq 0x12070
cmpl $0x0, %eax
jne 0x2b4e5
cmpl $0x2, -0x34(%rbp)
jne 0x2b4e5
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12820
movl %eax, %ecx
leaq 0x93c44(%rip), %rax     # 0xbf0e8
movl %ecx, 0x20(%rax)
leaq 0x93c3a(%rip), %rax     # 0xbf0e8
cmpl $0x1, 0x20(%rax)
jge 0x2b4c2
leaq 0x93c2d(%rip), %rax     # 0xbf0e8
movl $0x1, 0x20(%rax)
leaq 0x93c1f(%rip), %rax     # 0xbf0e8
cmpl $0x1f4, 0x20(%rax)      # imm = 0x1F4
jle 0x2b4e0
leaq 0x93c0f(%rip), %rax     # 0xbf0e8
movl $0x1f4, 0x20(%rax)      # imm = 0x1F4
jmp 0x2ba0a
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ad36(%rip), %rsi     # 0xa6229
callq 0x12070
cmpl $0x0, %eax
jne 0x2b548
cmpl $0x2, -0x34(%rbp)
jne 0x2b548
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12230
cmpq $0x200, %rax            # imm = 0x200
jbe 0x2b528
leaq 0x7ad16(%rip), %rax     # 0xa6235
movq %rax, -0x10(%rbp)
jmp 0x2ba65
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x20d90
movq %rax, %rcx
leaq 0x93ba9(%rip), %rax     # 0xbf0e8
movq %rcx, 0x48(%rax)
jmp 0x2ba08
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ad0f(%rip), %rsi     # 0xa6265
callq 0x12070
cmpl $0x0, %eax
jne 0x2b596
cmpl $0x2, -0x34(%rbp)
jne 0x2b596
leaq 0x93b7b(%rip), %rax     # 0xbf0e8
movq 0x50(%rax), %rdi
callq 0x20ce0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x20d90
movq %rax, %rcx
leaq 0x93b5b(%rip), %rax     # 0xbf0e8
movq %rcx, 0x50(%rax)
jmp 0x2ba06
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7acc9(%rip), %rsi     # 0xa626d
callq 0x12070
cmpl $0x0, %eax
jne 0x2b60c
cmpl $0x2, -0x34(%rbp)
jne 0x2b60c
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x29100
cmpl $0x0, %eax
jne 0x2b5d6
leaq 0x7acab(%rip), %rax     # 0xa6278
movq %rax, -0x10(%rbp)
jmp 0x2ba65
leaq 0x93b0b(%rip), %rax     # 0xbf0e8
movq 0x6c8(%rax), %rdi
callq 0x20ce0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x20d90
movq %rax, %rcx
leaq 0x93ae8(%rip), %rax     # 0xbf0e8
movq %rcx, 0x6c8(%rax)
jmp 0x2ba04
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ac9d(%rip), %rsi     # 0xa62b7
callq 0x12070
cmpl $0x0, %eax
jne 0x2b704
cmpl $0x3, -0x34(%rbp)
jne 0x2b704
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1b650
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x2b65a
leaq 0x7ac53(%rip), %rax     # 0xa62a4
movq %rax, -0x10(%rbp)
jmp 0x2ba65
leaq 0x93a87(%rip), %rax     # 0xbf0e8
movq 0x28(%rax), %rdi
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x16b60
movl %eax, -0x5c(%rbp)
cmpl $0x0, -0x5c(%rbp)
jne 0x2b67d
jmp 0x2b69f
leaq 0x7ac42(%rip), %rdi     # 0xa62c6
leaq 0x7ac4d(%rip), %rsi     # 0xa62d8
movl $0x140, %edx            # imm = 0x140
callq 0x300b0
movl $0x1, %edi
callq 0x12100
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x2bc30
cmpq $0x0, %rax
je 0x2b6ff
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x1e300
movq %rax, -0x68(%rbp)
leaq 0x93a1e(%rip), %rax     # 0xbf0e8
movq 0x28(%rax), %rdi
movq -0x68(%rbp), %rsi
movq -0x58(%rbp), %rdx
callq 0x166b0
movl %eax, -0x5c(%rbp)
cmpl $0x0, -0x5c(%rbp)
je 0x2b6fd
movq -0x68(%rbp), %rdi
callq 0x1e3c0
leaq 0x7abed(%rip), %rax     # 0xa62e1
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2b6ff
jmp 0x2ba02
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7abf2(%rip), %rsi     # 0xa6304
callq 0x12070
cmpl $0x0, %eax
jne 0x2b758
cmpl $0x2, -0x34(%rbp)
jne 0x2b758
leaq 0x939bf(%rip), %rax     # 0xbf0e8
movq 0x660(%rax), %rdi
callq 0x20ce0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x20d90
movq %rax, %rcx
leaq 0x9399c(%rip), %rax     # 0xbf0e8
movq %rcx, 0x660(%rax)
jmp 0x2ba00
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7abb2(%rip), %rsi     # 0xa6318
callq 0x12070
cmpl $0x0, %eax
jne 0x2b7c3
cmpl $0x2, -0x34(%rbp)
jne 0x2b7c3
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x124a0
movq %rax, %rcx
leaq 0x93952(%rip), %rax     # 0xbf0e8
movq %rcx, 0x658(%rax)
leaq 0x93944(%rip), %rax     # 0xbf0e8
cmpq $0x0, 0x658(%rax)
jg 0x2b7be
leaq 0x7ab78(%rip), %rax     # 0xa632d
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2b9fe
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ab86(%rip), %rsi     # 0xa6357
callq 0x12070
cmpl $0x0, %eax
jne 0x2b82e
cmpl $0x2, -0x34(%rbp)
jne 0x2b82e
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x124a0
movq %rax, %rcx
leaq 0x938e7(%rip), %rax     # 0xbf0e8
movq %rcx, 0x670(%rax)
leaq 0x938d9(%rip), %rax     # 0xbf0e8
cmpq $0x0, 0x670(%rax)
jge 0x2b829
leaq 0x7ab51(%rip), %rax     # 0xa6371
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2b9fc
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7ab5d(%rip), %rsi     # 0xa6399
callq 0x12070
cmpl $0x0, %eax
jne 0x2b937
cmpl $0x5, -0x34(%rbp)
jne 0x2b937
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x27550
movl %eax, -0x6c(%rbp)
cmpl $-0x1, -0x6c(%rbp)
jne 0x2b87a
leaq 0x7ab43(%rip), %rax     # 0xa63b4
movq %rax, -0x10(%rbp)
jmp 0x2ba65
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x280a0
movq %rax, -0x78(%rbp)
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x280a0
movq %rax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x12820
movl %eax, -0x84(%rbp)
cmpl $0x0, -0x84(%rbp)
jge 0x2b8d0
leaq 0x7ab0d(%rip), %rax     # 0xa63d4
movq %rax, -0x10(%rbp)
jmp 0x2ba65
movq -0x78(%rbp), %rcx
movslq -0x6c(%rbp), %rdx
leaq 0x93809(%rip), %rax     # 0xbf0e8
addq $0x5c0, %rax            # imm = 0x5C0
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq -0x80(%rbp), %rcx
movslq -0x6c(%rbp), %rdx
leaq 0x937ea(%rip), %rax     # 0xbf0e8
addq $0x5c0, %rax            # imm = 0x5C0
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movslq -0x84(%rbp), %rcx
movslq -0x6c(%rbp), %rdx
leaq 0x937c7(%rip), %rax     # 0xbf0e8
addq $0x5c0, %rax            # imm = 0x5C0
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x10(%rax)
jmp 0x2b9fa
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7aac3(%rip), %rsi     # 0xa6408
callq 0x12070
cmpl $0x0, %eax
jne 0x2b986
cmpl $0x2, -0x34(%rbp)
jne 0x2b986
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2a910
leaq 0x9377f(%rip), %rcx     # 0xbf0e8
movl %eax, 0x700(%rcx)
cmpl $-0x1, %eax
jne 0x2b984
leaq 0x7a786(%rip), %rax     # 0xa6101
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2b9f8
movq -0x30(%rbp), %rax
movq (%rax), %rdi
leaq 0x7aa90(%rip), %rsi     # 0xa6424
callq 0x12070
cmpl $0x0, %eax
jne 0x2b9e9
cmpl $0x2, -0x34(%rbp)
jne 0x2b9e9
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x9354d(%rip), %rdi     # 0xbef00
callq 0x2a810
movl %eax, %ecx
leaq 0x93727(%rip), %rax     # 0xbf0e8
movl %ecx, 0x5b4(%rax)
leaq 0x9371a(%rip), %rax     # 0xbf0e8
cmpl $0x80000000, 0x5b4(%rax) # imm = 0x80000000
jne 0x2b9e7
leaq 0x7aa4e(%rip), %rax     # 0xa642f
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2b9f6
leaq 0x7aa96(%rip), %rax     # 0xa6486
movq %rax, -0x10(%rbp)
jmp 0x2ba65
jmp 0x2b9f8
jmp 0x2b9fa
jmp 0x2b9fc
jmp 0x2b9fe
jmp 0x2ba00
jmp 0x2ba02
jmp 0x2ba04
jmp 0x2ba06
jmp 0x2ba08
jmp 0x2ba0a
jmp 0x2ba0c
jmp 0x2ba0e
jmp 0x2ba10
jmp 0x2ba12
jmp 0x2ba14
jmp 0x2ba16
jmp 0x2ba18
jmp 0x2ba1a
jmp 0x2ba1c
jmp 0x2ba1e
jmp 0x2ba20
jmp 0x2ba22
jmp 0x2ba24
jmp 0x2ba26
jmp 0x2ba28
jmp 0x2ba2a
jmp 0x2ba2c
jmp 0x2ba2e
jmp 0x2ba30
jmp 0x2ba32
jmp 0x2ba34
jmp 0x2ba36
movq -0x30(%rbp), %rdi
movl -0x34(%rbp), %esi
callq 0x20010
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x2aacb
movq -0x28(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0x20010
addq $0xa0, %rsp
popq %rbp
retq
movq 0x9258c(%rip), %rax     # 0xbdff8
movq (%rax), %rdi
leaq 0x7aa3b(%rip), %rsi     # 0xa64b1
movb $0x0, %al
callq 0x124b0
movq 0x92574(%rip), %rax     # 0xbdff8
movq (%rax), %rdi
movl -0x14(%rbp), %edx
leaq 0x7aa42(%rip), %rsi     # 0xa64d3
movb $0x0, %al
callq 0x124b0
movq 0x92559(%rip), %rax     # 0xbdff8
movq (%rax), %rdi
movq -0x28(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0x7aa4a(%rip), %rsi     # 0xa64ff
movb $0x0, %al
callq 0x124b0
movq 0x92535(%rip), %rax     # 0xbdff8
movq (%rax), %rdi
movq -0x10(%rbp), %rdx
leaq 0x7ed2f(%rip), %rsi     # 0xaa800
movb $0x0, %al
callq 0x124b0
movl $0x1, %edi
callq 0x12870
nopw %cs:(%rax,%rax)