// File: /workspace/github_c_makefile_star2_O0/soso7885[P]OPCUA_example/demo_src/server.c
// Function: main
int main(int argc, char** argv) {
    signal(SIGINT, stopHandler); /* catches ctrl-c */
#ifdef UA_ENABLE_MULTITHREADING
    pthread_rwlock_init(&writeLock, 0);
#endif

    UA_ServerNetworkLayer nl = UA_ServerNetworkLayerTCP(UA_ConnectionConfig_standard, 16664);
    UA_ServerConfig config = UA_ServerConfig_standard;
    config.serverCertificate = loadCertificate();
    config.networkLayers = &nl;
    config.networkLayersSize = 1;
    UA_Server *server = UA_Server_new(config);

    // add node with the datetime data source
    UA_DataSource dateDataSource = (UA_DataSource) {.handle = NULL, .read = readTimeData, .write = NULL};
    UA_VariableAttributes v_attr;
    UA_VariableAttributes_init(&v_attr);
    v_attr.description = UA_LOCALIZEDTEXT("en_US","current time");
    v_attr.displayName = UA_LOCALIZEDTEXT("en_US","current time");
    const UA_QualifiedName dateName = UA_QUALIFIEDNAME(1, "current time");
    UA_NodeId dataSourceId;
    UA_Server_addDataSourceVariableNode(server, UA_NODEID_NULL,
                                        UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
                                        UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), dateName,
                                        UA_NODEID_NULL, v_attr, dateDataSource, &dataSourceId);

#ifndef _WIN32
    /* cpu temperature monitoring for linux machines */
    const char *temperatureFileName = "/sys/class/thermal/thermal_zone0/temp"; // RaspberryPi
    // const char *temperatureFileName = "/sys/class/hwmon/hwmon0/device/temp1_input"; // Beaglebone
    // const char *temperatureFileName = "/sys/class/thermal/thermal_zone3/temp"; // Intel Edison Alternative 1
    // const char *temperatureFileName = "/sys/class/thermal/thermal_zone4/temp"; // Intel Edison Alternative 2
    if((temperatureFile = fopen(temperatureFileName, "r"))) {
        // add node with the data source
        UA_DataSource temperatureDataSource = (UA_DataSource) {
            .handle = NULL, .read = readTemperature, .write = NULL};
        const UA_QualifiedName tempName = UA_QUALIFIEDNAME(1, "cpu temperature");
        UA_VariableAttributes_init(&v_attr);
        v_attr.description = UA_LOCALIZEDTEXT("en_US","temperature");
        v_attr.displayName = UA_LOCALIZEDTEXT("en_US","temperature");
        UA_Server_addDataSourceVariableNode(server, UA_NODEID_NULL,
                                            UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
                                            UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), tempName,
                                            UA_NODEID_NULL, v_attr, temperatureDataSource, NULL);
    }

    /* LED control for rpi */
    if(access("/sys/class/leds/led0/trigger", F_OK ) != -1 ||
       access("/sys/class/leds/led0/brightness", F_OK ) != -1) {
        if((triggerFile = fopen("/sys/class/leds/led0/trigger", "w")) &&
           (ledFile = fopen("/sys/class/leds/led0/brightness", "w"))) {
            //setting led mode to manual
            fprintf(triggerFile, "%s", "none");
            fflush(triggerFile);

            //turning off led initially
            fprintf(ledFile, "%s", "1");
            fflush(ledFile);

            // add node with the LED status data source
            UA_DataSource ledStatusDataSource = (UA_DataSource) {
                .handle = NULL, .read = readLedStatus, .write = writeLedStatus};
            UA_VariableAttributes_init(&v_attr);
            v_attr.description = UA_LOCALIZEDTEXT("en_US","status LED");
            v_attr.displayName = UA_LOCALIZEDTEXT("en_US","status LED");
            const UA_QualifiedName statusName = UA_QUALIFIEDNAME(0, "status LED");
            UA_Server_addDataSourceVariableNode(server, UA_NODEID_NULL,
                                                UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
                                                UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), statusName,
                                                UA_NODEID_NULL, v_attr, ledStatusDataSource, NULL);
        } else
            UA_LOG_WARNING(logger, UA_LOGCATEGORY_USERLAND,
                           "[Raspberry Pi] LED file exist, but is not accessible (try to run server with sudo)");
    }
#endif

    // add a static variable node to the adresspace
    UA_VariableAttributes myVar;
    UA_VariableAttributes_init(&myVar);
    myVar.description = UA_LOCALIZEDTEXT("en_US", "the answer");
    myVar.displayName = UA_LOCALIZEDTEXT("en_US", "the answer");
    UA_Int32 myInteger = 42;
    UA_Variant_setScalarCopy(&myVar.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
    const UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, "the answer");
    const UA_NodeId myIntegerNodeId = UA_NODEID_STRING(1, "the.answer");
    UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
    UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
    /* Instantiation Callback can be used when a typeDefinition creates new nodes under this added one.
     * The method will be called for each created node.
     */
    UA_InstantiationCallback theAnswerCallback = {.method=instantiationHandle, .handle=(void*) server};
    UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId, parentReferenceNodeId,
                              myIntegerName, UA_NODEID_NULL, myVar, &theAnswerCallback, NULL);
    UA_Variant_deleteMembers(&myVar.value);

    /**************/
    /* Demo Nodes */
    /**************/

#define DEMOID 50000
    UA_ObjectAttributes object_attr;
    UA_ObjectAttributes_init(&object_attr);
    object_attr.description = UA_LOCALIZEDTEXT("en_US","Demo");
    object_attr.displayName = UA_LOCALIZEDTEXT("en_US","Demo");
    UA_Server_addObjectNode(server, UA_NODEID_NUMERIC(1, DEMOID),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), UA_QUALIFIEDNAME(1, "Demo"),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), object_attr, NULL, NULL);

#define SCALARID 50001
    object_attr.description = UA_LOCALIZEDTEXT("en_US","Scalar");
    object_attr.displayName = UA_LOCALIZEDTEXT("en_US","Scalar");
    UA_Server_addObjectNode(server, UA_NODEID_NUMERIC(1, SCALARID),
                            UA_NODEID_NUMERIC(1, DEMOID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
                            UA_QUALIFIEDNAME(1, "Scalar"),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), object_attr, NULL, NULL);

#define ARRAYID 50002
    object_attr.description = UA_LOCALIZEDTEXT("en_US","Array");
    object_attr.displayName = UA_LOCALIZEDTEXT("en_US","Array");
    UA_Server_addObjectNode(server, UA_NODEID_NUMERIC(1, ARRAYID),
                            UA_NODEID_NUMERIC(1, DEMOID), UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
                            UA_QUALIFIEDNAME(1, "Array"),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), object_attr, NULL, NULL);

#define MATRIXID 50003
    object_attr.description = UA_LOCALIZEDTEXT("en_US","Matrix");
    object_attr.displayName = UA_LOCALIZEDTEXT("en_US","Matrix");
    UA_Server_addObjectNode(server, UA_NODEID_NUMERIC(1, MATRIXID), UA_NODEID_NUMERIC(1, DEMOID),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), UA_QUALIFIEDNAME(1, "Matrix"),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), object_attr, NULL, NULL);

    UA_UInt32 id = 51000; // running id in namespace 0
    for(UA_UInt32 type = 0; type < UA_TYPES_DIAGNOSTICINFO; type++) {
        if(type == UA_TYPES_VARIANT || type == UA_TYPES_DIAGNOSTICINFO)
            continue;

        UA_VariableAttributes attr;
        UA_VariableAttributes_init(&attr);
        char name[15];
        sprintf(name, "%02d", type);
        attr.displayName = UA_LOCALIZEDTEXT("en_US",name);
        UA_QualifiedName qualifiedName = UA_QUALIFIEDNAME(1, name);

        /* add a scalar node for every built-in type */
        void *value = UA_new(&UA_TYPES[type]);
        UA_Variant_setScalar(&attr.value, value, &UA_TYPES[type]);
        UA_Server_addVariableNode(server, UA_NODEID_NUMERIC(1, ++id),
                                  UA_NODEID_NUMERIC(1, SCALARID),
                                  UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
                                  qualifiedName, UA_NODEID_NULL, attr, NULL, NULL);
        UA_Variant_deleteMembers(&attr.value);

        /* add an array node for every built-in type */
        UA_Variant_setArray(&attr.value, UA_Array_new(10, &UA_TYPES[type]),
                            10, &UA_TYPES[type]);
        UA_Server_addVariableNode(server, UA_NODEID_NUMERIC(1, ++id),
                                  UA_NODEID_NUMERIC(1, ARRAYID),
                                  UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
                                  qualifiedName, UA_NODEID_NULL, attr, NULL, NULL);
        UA_Variant_deleteMembers(&attr.value);

        /* add an matrix node for every built-in type */
        void* myMultiArray = UA_Array_new(9, &UA_TYPES[type]);
        attr.value.arrayDimensions = UA_Array_new(2, &UA_TYPES[UA_TYPES_INT32]);
        attr.value.arrayDimensions[0] = 3;
        attr.value.arrayDimensions[1] = 3;
        attr.value.arrayDimensionsSize = 2;
        attr.value.arrayLength = 9;
        attr.value.data = myMultiArray;
        attr.value.type = &UA_TYPES[type];
        UA_Server_addVariableNode(server, UA_NODEID_NUMERIC(1, ++id),
                                  UA_NODEID_NUMERIC(1, MATRIXID),
                                  UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
                                  qualifiedName, UA_NODEID_NULL, attr, NULL, NULL);
        UA_Variant_deleteMembers(&attr.value);
    }

#ifdef UA_ENABLE_METHODCALLS
    UA_Argument inputArguments;
    UA_Argument_init(&inputArguments);
    inputArguments.arrayDimensionsSize = 0;
    inputArguments.arrayDimensions = NULL;
    inputArguments.dataType = UA_TYPES[UA_TYPES_STRING].typeId;
    inputArguments.description = UA_LOCALIZEDTEXT("en_US", "A String");
    inputArguments.name = UA_STRING("Input an integer");
    inputArguments.valueRank = -1;

    UA_Argument outputArguments;
    UA_Argument_init(&outputArguments);
    outputArguments.arrayDimensionsSize = 0;
    outputArguments.arrayDimensions = NULL;
    outputArguments.dataType = UA_TYPES[UA_TYPES_STRING].typeId;
    outputArguments.description = UA_LOCALIZEDTEXT("en_US", "A String");
    outputArguments.name = UA_STRING("Input an integer");
    outputArguments.valueRank = -1;

    UA_MethodAttributes addmethodattributes;
    UA_MethodAttributes_init(&addmethodattributes);
    addmethodattributes.description = UA_LOCALIZEDTEXT("en_US", "Return a single argument as passed by the caller");
    addmethodattributes.displayName = UA_LOCALIZEDTEXT("en_US", "ping");
    addmethodattributes.executable = true;
    addmethodattributes.userExecutable = true;
    UA_Server_addMethodNode(server, UA_NODEID_NUMERIC(1,62541),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
                            UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
                            UA_QUALIFIEDNAME(1,"ping"), addmethodattributes,
                            &getMonitoredItems, // Call this method
                            (void *) server,    // Pass our server pointer as a handle to the method
                            1, &inputArguments, 1, &outputArguments, NULL);
#endif
   
    // Example for iterating over all nodes referenced by "Objects":
    //printf("Nodes connected to 'Objects':\n=============================\n");
    UA_Server_forEachChildNodeCall(server, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER), nodeIter, NULL);
  
    // Some easy localization
    UA_LocalizedText objectsName = UA_LOCALIZEDTEXT("de_DE", "Objekte");
    UA_Server_writeDisplayName(server, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER), objectsName);
  
    //start server
    UA_StatusCode retval = UA_Server_run(server, &running); //blocks until running=false

    //ctrl-c received -> clean up
    UA_Server_delete(server);
    nl.deleteMembers(&nl);

    if(temperatureFile)
        fclose(temperatureFile);

    if(triggerFile) {
        fseek(triggerFile, 0, SEEK_SET);
        //setting led mode to default
        fprintf(triggerFile, "%s", "mmc0");
        fclose(triggerFile);
    }
  
    if(ledFile)
        fclose(ledFile);

#ifdef UA_ENABLE_MULTITHREADING
    pthread_rwlock_destroy(&writeLock);
#endif

    UA_ByteString_deleteMembers(&config.serverCertificate);
    return (int)retval;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1000, %rsp           # imm = 0x1000
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x2, %edi
leaq 0x1c2b(%rip), %rsi      # 0x3fb0
callq 0x2190
movq 0x4c5f(%rip), %rax      # 0x6ff0
movq (%rax), %rcx
movq %rcx, -0x60(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x58(%rbp)
movl 0x10(%rax), %eax
movl %eax, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x60(%rbp), %rax
movl $0x4118, %esi           # imm = 0x4118
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movl 0x10(%rax), %eax
movl %eax, 0x10(%rsp)
callq 0x20a0
leaq -0x1c0(%rbp), %rdi
movq 0x4bfb(%rip), %rsi      # 0x6fd8
movl $0x160, %edx            # imm = 0x160
callq 0x2180
callq 0x3ff0
movq %rax, -0x1d0(%rbp)
movq %rdx, -0x1c8(%rbp)
movq -0x1d0(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x1c8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq -0x48(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq $0x1, -0xd0(%rbp)
movq %rsp, %rdi
movl $0x2c, %ecx
leaq -0x1c0(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x2030
movq %rax, -0x1d8(%rbp)
movq 0x4927(%rip), %rax      # 0x6d78
movq %rax, -0x1f0(%rbp)
movq 0x4921(%rip), %rax      # 0x6d80
movq %rax, -0x1e8(%rbp)
movq 0x491b(%rip), %rax      # 0x6d88
movq %rax, -0x1e0(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x4180
leaq -0x2d8(%rbp), %rdi
leaq 0x2b82(%rip), %rsi      # 0x5010
leaq 0x2b81(%rip), %rdx      # 0x5016
callq 0x41b0
movq -0x2d8(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x2d0(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x2c8(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x2c0(%rbp), %rax
movq %rax, -0x278(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq 0x2b30(%rip), %rsi      # 0x5010
leaq 0x2b2f(%rip), %rdx      # 0x5016
callq 0x41b0
movq -0x2f8(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0x2f0(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x2e8(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x2e0(%rbp), %rax
movq %rax, -0x298(%rbp)
leaq -0x310(%rbp), %rdi
movl $0x1, %esi
leaq 0x2adf(%rip), %rdx      # 0x5016
callq 0x4220
movq -0x1d8(%rbp), %rax
movq %rax, -0xdd0(%rbp)
leaq -0x340(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
leaq -0x358(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
movq %rsp, %rax
movq %rax, -0xdd8(%rbp)
movq %rax, %rdi
addq $0x78, %rdi
movl $0x19, %ecx
leaq -0x2b8(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0xdd0(%rbp), %rdi
movq -0x1e0(%rbp), %rcx
movq %rcx, 0x150(%rax)
movups -0x1f0(%rbp), %xmm0
movups %xmm0, 0x140(%rax)
movq 0x4a06(%rip), %rdx      # 0x6fc0
movq 0x10(%rdx), %rcx
movq %rcx, 0x70(%rax)
movups (%rdx), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x300(%rbp), %rdx
movq %rdx, 0x58(%rax)
movups -0x310(%rbp), %xmm1
movups %xmm1, 0x48(%rax)
movq -0x348(%rbp), %rdx
movq %rdx, 0x40(%rax)
movups -0x358(%rbp), %xmm1
movups %xmm1, 0x30(%rax)
movq -0x330(%rbp), %rdx
movq %rdx, 0x28(%rax)
movups -0x340(%rbp), %xmm1
movups %xmm1, 0x18(%rax)
movq %rcx, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x328(%rbp), %rsi
callq 0x2090
leaq 0x29fe(%rip), %rax      # 0x5023
movq %rax, -0x360(%rbp)
movq -0x360(%rbp), %rdi
leaq 0x2ae6(%rip), %rsi      # 0x5120
callq 0x2210
movq %rax, 0x4b12(%rip)      # 0x7158
cmpq $0x0, %rax
je 0x2823
movq 0x4739(%rip), %rax      # 0x6d90
movq %rax, -0x378(%rbp)
movq 0x4733(%rip), %rax      # 0x6d98
movq %rax, -0x370(%rbp)
movq 0x472d(%rip), %rax      # 0x6da0
movq %rax, -0x368(%rbp)
leaq -0x390(%rbp), %rdi
movl $0x1, %esi
leaq 0x29bc(%rip), %rdx      # 0x5049
callq 0x4220
leaq -0x2b8(%rbp), %rdi
callq 0x4180
leaq -0x3b0(%rbp), %rdi
leaq 0x2964(%rip), %rsi      # 0x5010
leaq 0x2b19(%rip), %rdx      # 0x51cc
callq 0x41b0
movq -0x3b0(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x3a8(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x3a0(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x398(%rbp), %rax
movq %rax, -0x278(%rbp)
leaq -0x3d0(%rbp), %rdi
leaq 0x2912(%rip), %rsi      # 0x5010
leaq 0x2ac7(%rip), %rdx      # 0x51cc
callq 0x41b0
movq -0x3d0(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0x3c8(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x3c0(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x3b8(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xde0(%rbp)
leaq -0x3e8(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
leaq -0x400(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
xorl %eax, %eax
movq %rsp, %rax
movq %rax, -0xde8(%rbp)
movq %rax, %rdi
addq $0x78, %rdi
movl $0x19, %ecx
leaq -0x2b8(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0xde0(%rbp), %rdi
movq -0x368(%rbp), %rcx
movq %rcx, 0x150(%rax)
movups -0x378(%rbp), %xmm0
movups %xmm0, 0x140(%rax)
movq 0x47fe(%rip), %rdx      # 0x6fc0
movq 0x10(%rdx), %rcx
movq %rcx, 0x70(%rax)
movups (%rdx), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x380(%rbp), %rdx
movq %rdx, 0x58(%rax)
movups -0x390(%rbp), %xmm1
movups %xmm1, 0x48(%rax)
movq -0x3f0(%rbp), %rdx
movq %rdx, 0x40(%rax)
movups -0x400(%rbp), %xmm1
movups %xmm1, 0x30(%rax)
movq -0x3d8(%rbp), %rdx
movq %rdx, 0x28(%rax)
movups -0x3e8(%rbp), %xmm1
movups %xmm1, 0x18(%rax)
movq %rcx, 0x10(%rax)
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %esi
callq 0x2090
leaq 0x282f(%rip), %rdi      # 0x5059
xorl %esi, %esi
callq 0x2200
cmpl $-0x1, %eax
jne 0x284d
leaq 0x2839(%rip), %rdi      # 0x5076
xorl %esi, %esi
callq 0x2200
cmpl $-0x1, %eax
je 0x2ae2
leaq 0x2805(%rip), %rdi      # 0x5059
leaq 0x283b(%rip), %rsi      # 0x5096
callq 0x2210
movq %rax, 0x48f9(%rip)      # 0x7160
cmpq $0x0, %rax
je 0x2ab7
leaq 0x27fe(%rip), %rdi      # 0x5076
leaq 0x2817(%rip), %rsi      # 0x5096
callq 0x2210
movq %rax, 0x48dd(%rip)      # 0x7168
cmpq $0x0, %rax
je 0x2ab7
movq 0x48c4(%rip), %rdi      # 0x7160
leaq 0x27f5(%rip), %rsi      # 0x5098
leaq 0x27f1(%rip), %rdx      # 0x509b
movb $0x0, %al
callq 0x2160
movq 0x48a8(%rip), %rdi      # 0x7160
callq 0x21b0
movq 0x48a4(%rip), %rdi      # 0x7168
leaq 0x27cd(%rip), %rsi      # 0x5098
leaq 0x27ce(%rip), %rdx      # 0x50a0
movb $0x0, %al
callq 0x2160
movq 0x4888(%rip), %rdi      # 0x7168
callq 0x21b0
movq 0x44bc(%rip), %rax      # 0x6da8
movq %rax, -0x418(%rbp)
movq 0x44b6(%rip), %rax      # 0x6db0
movq %rax, -0x410(%rbp)
movq 0x44b0(%rip), %rax      # 0x6db8
movq %rax, -0x408(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x4180
leaq -0x438(%rbp), %rdi
leaq 0x26e7(%rip), %rsi      # 0x5010
leaq 0x2772(%rip), %rdx      # 0x50a2
callq 0x41b0
movq -0x438(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x430(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x428(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x278(%rbp)
leaq -0x458(%rbp), %rdi
leaq 0x2695(%rip), %rsi      # 0x5010
leaq 0x2720(%rip), %rdx      # 0x50a2
callq 0x41b0
movq -0x458(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0x450(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x448(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x440(%rbp), %rax
movq %rax, -0x298(%rbp)
leaq -0x470(%rbp), %rdi
xorl %esi, %esi
leaq 0x26d3(%rip), %rdx      # 0x50a2
callq 0x4220
movq -0x1d8(%rbp), %rax
movq %rax, -0xdf0(%rbp)
leaq -0x488(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
leaq -0x4a0(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
xorl %eax, %eax
movq %rsp, %rax
movq %rax, -0xdf8(%rbp)
movq %rax, %rdi
addq $0x78, %rdi
movl $0x19, %ecx
leaq -0x2b8(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0xdf0(%rbp), %rdi
movq -0x408(%rbp), %rcx
movq %rcx, 0x150(%rax)
movups -0x418(%rbp), %xmm0
movups %xmm0, 0x140(%rax)
movq 0x456c(%rip), %rdx      # 0x6fc0
movq 0x10(%rdx), %rcx
movq %rcx, 0x70(%rax)
movups (%rdx), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x460(%rbp), %rdx
movq %rdx, 0x58(%rax)
movups -0x470(%rbp), %xmm1
movups %xmm1, 0x48(%rax)
movq -0x490(%rbp), %rdx
movq %rdx, 0x40(%rax)
movups -0x4a0(%rbp), %xmm1
movups %xmm1, 0x30(%rax)
movq -0x478(%rbp), %rdx
movq %rdx, 0x28(%rax)
movups -0x488(%rbp), %xmm1
movups %xmm1, 0x18(%rax)
movq %rcx, 0x10(%rax)
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %esi
callq 0x2090
jmp 0x2ae0
jmp 0x2ab9
cmpq $0x0, 0x4687(%rip)      # 0x7148
je 0x2adc
movl $0x3, %edi
movl $0x5, %esi
leaq 0x25d9(%rip), %rdx      # 0x50ad
movb $0x0, %al
callq *0x466c(%rip)           # 0x7148
jmp 0x2ade
jmp 0x2ae0
jmp 0x2ae2
leaq -0x568(%rbp), %rdi
callq 0x4180
leaq -0x588(%rbp), %rdi
leaq 0x2514(%rip), %rsi      # 0x5010
leaq 0x25fd(%rip), %rdx      # 0x5100
callq 0x41b0
movq -0x588(%rbp), %rax
movq %rax, -0x540(%rbp)
movq -0x580(%rbp), %rax
movq %rax, -0x538(%rbp)
movq -0x578(%rbp), %rax
movq %rax, -0x530(%rbp)
movq -0x570(%rbp), %rax
movq %rax, -0x528(%rbp)
leaq -0x5a8(%rbp), %rdi
leaq 0x24c2(%rip), %rsi      # 0x5010
leaq 0x25ab(%rip), %rdx      # 0x5100
callq 0x41b0
movq -0x5a8(%rbp), %rax
movq %rax, -0x560(%rbp)
movq -0x5a0(%rbp), %rax
movq %rax, -0x558(%rbp)
movq -0x598(%rbp), %rax
movq %rax, -0x550(%rbp)
movq -0x590(%rbp), %rax
movq %rax, -0x548(%rbp)
movl $0x2a, -0x5ac(%rbp)
leaq -0x568(%rbp), %rdi
addq $0x50, %rdi
leaq -0x5ac(%rbp), %rsi
movq 0x441b(%rip), %rdx      # 0x6fd0
addq $0xc8, %rdx
callq 0x2150
leaq -0x5c8(%rbp), %rdi
movl $0x1, %esi
leaq 0x252c(%rip), %rdx      # 0x5100
callq 0x4220
leaq -0x5e0(%rbp), %rdi
movl $0x1, %esi
leaq 0x251f(%rip), %rdx      # 0x510b
callq 0x4540
leaq -0x5f8(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
leaq -0x610(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
leaq 0x1982(%rip), %rax      # 0x45a0
movq %rax, -0x620(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0x618(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xe40(%rbp)
xorl %eax, %eax
movq %rsp, %rax
movq %rax, -0xe48(%rbp)
movq %rax, %rdi
addq $0x78, %rdi
movl $0x19, %ecx
leaq -0x568(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0xe40(%rbp), %rdi
movq 0x434f(%rip), %rcx      # 0x6fc0
movq 0x10(%rcx), %rdx
movq %rdx, 0x70(%rax)
movups (%rcx), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x5b8(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0x5c8(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0x600(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0x610(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0x5e8(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0x5f8(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x5d0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0x5e0(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
leaq -0x620(%rbp), %rsi
callq 0x45e0
leaq -0x568(%rbp), %rdi
addq $0x50, %rdi
callq 0x46d0
leaq -0x678(%rbp), %rdi
callq 0x4700
leaq -0x698(%rbp), %rdi
leaq 0x22ff(%rip), %rsi      # 0x5010
leaq 0x23fe(%rip), %rdx      # 0x5116
callq 0x41b0
movq -0x698(%rbp), %rax
movq %rax, -0x650(%rbp)
movq -0x690(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x688(%rbp), %rax
movq %rax, -0x640(%rbp)
movq -0x680(%rbp), %rax
movq %rax, -0x638(%rbp)
leaq -0x6b8(%rbp), %rdi
leaq 0x22ad(%rip), %rsi      # 0x5010
leaq 0x23ac(%rip), %rdx      # 0x5116
callq 0x41b0
movq -0x6b8(%rbp), %rax
movq %rax, -0x670(%rbp)
movq -0x6b0(%rbp), %rax
movq %rax, -0x668(%rbp)
movq -0x6a8(%rbp), %rax
movq %rax, -0x660(%rbp)
movq -0x6a0(%rbp), %rax
movq %rax, -0x658(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xe38(%rbp)
leaq -0x6d0(%rbp), %rdi
movl $0x1, %esi
movl $0xc350, %edx           # imm = 0xC350
callq 0x4280
leaq -0x6e8(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
leaq -0x700(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
leaq -0x718(%rbp), %rdi
movl $0x1, %esi
leaq 0x2312(%rip), %rdx      # 0x5116
callq 0x4220
leaq -0x730(%rbp), %rdi
xorl %esi, %esi
movl $0x3d, %edx
callq 0x4280
movq -0xe38(%rbp), %rdi
xorl %eax, %eax
movq -0x628(%rbp), %rcx
movq %rsp, %rax
movq %rax, -0xe30(%rbp)
movq %rcx, 0xc8(%rax)
movups -0x638(%rbp), %xmm0
movups %xmm0, 0xb8(%rax)
movups -0x678(%rbp), %xmm0
movups -0x668(%rbp), %xmm1
movups -0x658(%rbp), %xmm2
movups -0x648(%rbp), %xmm3
movups %xmm3, 0xa8(%rax)
movups %xmm2, 0x98(%rax)
movups %xmm1, 0x88(%rax)
movups %xmm0, 0x78(%rax)
movq -0x720(%rbp), %rcx
movq %rcx, 0x70(%rax)
movups -0x730(%rbp), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x708(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0x718(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0x6f0(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0x700(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0x6d8(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0x6e8(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x6c0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0x6d0(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x4730
leaq -0x750(%rbp), %rdi
leaq 0x2109(%rip), %rsi      # 0x5010
leaq 0x220d(%rip), %rdx      # 0x511b
callq 0x41b0
movq -0x750(%rbp), %rax
movq %rax, -0x650(%rbp)
movq -0x748(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x740(%rbp), %rax
movq %rax, -0x640(%rbp)
movq -0x738(%rbp), %rax
movq %rax, -0x638(%rbp)
leaq -0x770(%rbp), %rdi
leaq 0x20b7(%rip), %rsi      # 0x5010
leaq 0x21bb(%rip), %rdx      # 0x511b
callq 0x41b0
movq -0x770(%rbp), %rax
movq %rax, -0x670(%rbp)
movq -0x768(%rbp), %rax
movq %rax, -0x668(%rbp)
movq -0x760(%rbp), %rax
movq %rax, -0x660(%rbp)
movq -0x758(%rbp), %rax
movq %rax, -0x658(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xe28(%rbp)
leaq -0x788(%rbp), %rdi
movl $0x1, %esi
movl $0xc351, %edx           # imm = 0xC351
callq 0x4280
leaq -0x7a0(%rbp), %rdi
movl $0x1, %esi
movl $0xc350, %edx           # imm = 0xC350
callq 0x4280
leaq -0x7b8(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
leaq -0x7d0(%rbp), %rdi
movl $0x1, %esi
leaq 0x211e(%rip), %rdx      # 0x511b
callq 0x4220
leaq -0x7e8(%rbp), %rdi
xorl %esi, %esi
movl $0x3d, %edx
callq 0x4280
movq -0xe28(%rbp), %rdi
xorl %eax, %eax
movq -0x628(%rbp), %rcx
movq %rsp, %rax
movq %rax, -0xe20(%rbp)
movq %rcx, 0xc8(%rax)
movups -0x638(%rbp), %xmm0
movups %xmm0, 0xb8(%rax)
movups -0x678(%rbp), %xmm0
movups -0x668(%rbp), %xmm1
movups -0x658(%rbp), %xmm2
movups -0x648(%rbp), %xmm3
movups %xmm3, 0xa8(%rax)
movups %xmm2, 0x98(%rax)
movups %xmm1, 0x88(%rax)
movups %xmm0, 0x78(%rax)
movq -0x7d8(%rbp), %rcx
movq %rcx, 0x70(%rax)
movups -0x7e8(%rbp), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x7c0(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0x7d0(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0x7a8(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0x7b8(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0x790(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0x7a0(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x778(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0x788(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x4730
leaq -0x808(%rbp), %rdi
leaq 0x1f10(%rip), %rsi      # 0x5010
leaq 0x201b(%rip), %rdx      # 0x5122
callq 0x41b0
movq -0x808(%rbp), %rax
movq %rax, -0x650(%rbp)
movq -0x800(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x7f8(%rbp), %rax
movq %rax, -0x640(%rbp)
movq -0x7f0(%rbp), %rax
movq %rax, -0x638(%rbp)
leaq -0x828(%rbp), %rdi
leaq 0x1ebe(%rip), %rsi      # 0x5010
leaq 0x1fc9(%rip), %rdx      # 0x5122
callq 0x41b0
movq -0x828(%rbp), %rax
movq %rax, -0x670(%rbp)
movq -0x820(%rbp), %rax
movq %rax, -0x668(%rbp)
movq -0x818(%rbp), %rax
movq %rax, -0x660(%rbp)
movq -0x810(%rbp), %rax
movq %rax, -0x658(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xe18(%rbp)
leaq -0x840(%rbp), %rdi
movl $0x1, %esi
movl $0xc352, %edx           # imm = 0xC352
callq 0x4280
leaq -0x858(%rbp), %rdi
movl $0x1, %esi
movl $0xc350, %edx           # imm = 0xC350
callq 0x4280
leaq -0x870(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
leaq -0x888(%rbp), %rdi
movl $0x1, %esi
leaq 0x1f2c(%rip), %rdx      # 0x5122
callq 0x4220
leaq -0x8a0(%rbp), %rdi
xorl %esi, %esi
movl $0x3d, %edx
callq 0x4280
movq -0xe18(%rbp), %rdi
xorl %eax, %eax
movq -0x628(%rbp), %rcx
movq %rsp, %rax
movq %rax, -0xe10(%rbp)
movq %rcx, 0xc8(%rax)
movups -0x638(%rbp), %xmm0
movups %xmm0, 0xb8(%rax)
movups -0x678(%rbp), %xmm0
movups -0x668(%rbp), %xmm1
movups -0x658(%rbp), %xmm2
movups -0x648(%rbp), %xmm3
movups %xmm3, 0xa8(%rax)
movups %xmm2, 0x98(%rax)
movups %xmm1, 0x88(%rax)
movups %xmm0, 0x78(%rax)
movq -0x890(%rbp), %rcx
movq %rcx, 0x70(%rax)
movups -0x8a0(%rbp), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x878(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0x888(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0x860(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0x870(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0x848(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0x858(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x830(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0x840(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x4730
leaq -0x8c0(%rbp), %rdi
leaq 0x1d17(%rip), %rsi      # 0x5010
leaq 0x1e28(%rip), %rdx      # 0x5128
callq 0x41b0
movq -0x8c0(%rbp), %rax
movq %rax, -0x650(%rbp)
movq -0x8b8(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x8b0(%rbp), %rax
movq %rax, -0x640(%rbp)
movq -0x8a8(%rbp), %rax
movq %rax, -0x638(%rbp)
leaq -0x8e0(%rbp), %rdi
leaq 0x1cc5(%rip), %rsi      # 0x5010
leaq 0x1dd6(%rip), %rdx      # 0x5128
callq 0x41b0
movq -0x8e0(%rbp), %rax
movq %rax, -0x670(%rbp)
movq -0x8d8(%rbp), %rax
movq %rax, -0x668(%rbp)
movq -0x8d0(%rbp), %rax
movq %rax, -0x660(%rbp)
movq -0x8c8(%rbp), %rax
movq %rax, -0x658(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xe08(%rbp)
leaq -0x8f8(%rbp), %rdi
movl $0x1, %esi
movl $0xc353, %edx           # imm = 0xC353
callq 0x4280
leaq -0x910(%rbp), %rdi
movl $0x1, %esi
movl $0xc350, %edx           # imm = 0xC350
callq 0x4280
leaq -0x928(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
leaq -0x940(%rbp), %rdi
movl $0x1, %esi
leaq 0x1d39(%rip), %rdx      # 0x5128
callq 0x4220
leaq -0x958(%rbp), %rdi
xorl %esi, %esi
movl $0x3d, %edx
callq 0x4280
movq -0xe08(%rbp), %rdi
xorl %eax, %eax
movq -0x628(%rbp), %rcx
movq %rsp, %rax
movq %rax, -0xe00(%rbp)
movq %rcx, 0xc8(%rax)
movups -0x638(%rbp), %xmm0
movups %xmm0, 0xb8(%rax)
movups -0x678(%rbp), %xmm0
movups -0x668(%rbp), %xmm1
movups -0x658(%rbp), %xmm2
movups -0x648(%rbp), %xmm3
movups %xmm3, 0xa8(%rax)
movups %xmm2, 0x98(%rax)
movups %xmm1, 0x88(%rax)
movups %xmm0, 0x78(%rax)
movq -0x948(%rbp), %rcx
movq %rcx, 0x70(%rax)
movups -0x958(%rbp), %xmm0
movups %xmm0, 0x60(%rax)
movq -0x930(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0x940(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0x918(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0x928(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0x900(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0x910(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x8e8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0x8f8(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x4730
movl $0xc738, -0x95c(%rbp)   # imm = 0xC738
movl $0x0, -0x960(%rbp)
cmpl $0x18, -0x960(%rbp)
jae 0x3a1f
cmpl $0x17, -0x960(%rbp)
je 0x3517
cmpl $0x18, -0x960(%rbp)
jne 0x351c
jmp 0x3a0b
leaq -0xa28(%rbp), %rdi
callq 0x4180
leaq -0xa37(%rbp), %rdi
movl -0x960(%rbp), %edx
leaq 0x1bf3(%rip), %rsi      # 0x512f
movb $0x0, %al
callq 0x2220
leaq -0xa37(%rbp), %rdx
leaq -0xa58(%rbp), %rdi
leaq 0x1ab8(%rip), %rsi      # 0x5010
callq 0x41b0
movq -0xa58(%rbp), %rax
movq %rax, -0xa20(%rbp)
movq -0xa50(%rbp), %rax
movq %rax, -0xa18(%rbp)
movq -0xa48(%rbp), %rax
movq %rax, -0xa10(%rbp)
movq -0xa40(%rbp), %rax
movq %rax, -0xa08(%rbp)
leaq -0xa37(%rbp), %rdx
leaq -0xa70(%rbp), %rdi
movl $0x1, %esi
callq 0x4220
movl -0x960(%rbp), %eax
movq 0x3a16(%rip), %rdi      # 0x6fd0
imulq $0x28, %rax, %rax
addq %rax, %rdi
callq 0x2130
movq %rax, -0xa78(%rbp)
leaq -0xa28(%rbp), %rdi
addq $0x50, %rdi
movq -0xa78(%rbp), %rsi
movl -0x960(%rbp), %eax
movq 0x39e4(%rip), %rdx      # 0x6fd0
imulq $0x28, %rax, %rax
addq %rax, %rdx
callq 0x2120
movq -0x1d8(%rbp), %rax
movq %rax, -0xe78(%rbp)
movl -0x95c(%rbp), %edx
addl $0x1, %edx
movl %edx, -0x95c(%rbp)
leaq -0xa90(%rbp), %rdi
movl $0x1, %esi
callq 0x4280
leaq -0xaa8(%rbp), %rdi
movl $0x1, %esi
movl $0xc351, %edx           # imm = 0xC351
callq 0x4280
leaq -0xac0(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
xorl %eax, %eax
movq %rsp, %rax
movq %rax, -0xe80(%rbp)
movq %rax, %rdi
addq $0x78, %rdi
movl $0x19, %ecx
leaq -0xa28(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0xe78(%rbp), %rdi
movq 0x3941(%rip), %rcx      # 0x6fc0
movq 0x10(%rcx), %rdx
movq %rdx, 0x70(%rax)
movups (%rcx), %xmm0
movups %xmm0, 0x60(%rax)
movq -0xa60(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0xa70(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0xab0(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0xac0(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0xa98(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0xaa8(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0xa80(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0xa90(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x45e0
leaq -0xa28(%rbp), %rdi
addq $0x50, %rdi
callq 0x46d0
leaq -0xa28(%rbp), %rax
addq $0x50, %rax
movq %rax, -0xe70(%rbp)
movl -0x960(%rbp), %eax
movq 0x38b0(%rip), %rsi      # 0x6fd0
imulq $0x28, %rax, %rax
addq %rax, %rsi
movl $0xa, %edi
callq 0x2060
movq -0xe70(%rbp), %rdi
movq %rax, %rsi
movl -0x960(%rbp), %eax
movq 0x3888(%rip), %rcx      # 0x6fd0
imulq $0x28, %rax, %rax
addq %rax, %rcx
movl $0xa, %edx
callq 0x2140
movq -0x1d8(%rbp), %rax
movq %rax, -0xe60(%rbp)
movl -0x95c(%rbp), %edx
addl $0x1, %edx
movl %edx, -0x95c(%rbp)
leaq -0xad8(%rbp), %rdi
movl $0x1, %esi
callq 0x4280
leaq -0xaf0(%rbp), %rdi
movl $0x1, %esi
movl $0xc352, %edx           # imm = 0xC352
callq 0x4280
leaq -0xb08(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
xorl %eax, %eax
movq %rsp, %rax
movq %rax, -0xe68(%rbp)
movq %rax, %rdi
addq $0x78, %rdi
movl $0x19, %ecx
leaq -0xa28(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0xe60(%rbp), %rdi
movq 0x37e0(%rip), %rcx      # 0x6fc0
movq 0x10(%rcx), %rdx
movq %rdx, 0x70(%rax)
movups (%rcx), %xmm0
movups %xmm0, 0x60(%rax)
movq -0xa60(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0xa70(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0xaf8(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0xb08(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0xae0(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0xaf0(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0xac8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0xad8(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x45e0
leaq -0xa28(%rbp), %rdi
addq $0x50, %rdi
callq 0x46d0
movl -0x960(%rbp), %eax
movq 0x3761(%rip), %rsi      # 0x6fd0
imulq $0x28, %rax, %rax
addq %rax, %rsi
movl $0x9, %edi
callq 0x2060
movq %rax, -0xb10(%rbp)
movl $0x2, %edi
movq 0x373d(%rip), %rsi      # 0x6fd0
addq $0xc8, %rsi
callq 0x2060
movq %rax, -0x9b0(%rbp)
movq -0x9b0(%rbp), %rax
movl $0x3, (%rax)
movq -0x9b0(%rbp), %rax
movl $0x3, 0x4(%rax)
movq $0x2, -0x9b8(%rbp)
movq $0x9, -0x9c8(%rbp)
movq -0xb10(%rbp), %rax
movq %rax, -0x9c0(%rbp)
movl -0x960(%rbp), %eax
movl %eax, %ecx
movq 0x36dc(%rip), %rax      # 0x6fd0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x9d8(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xe50(%rbp)
movl -0x95c(%rbp), %edx
addl $0x1, %edx
movl %edx, -0x95c(%rbp)
leaq -0xb28(%rbp), %rdi
movl $0x1, %esi
callq 0x4280
leaq -0xb40(%rbp), %rdi
movl $0x1, %esi
movl $0xc353, %edx           # imm = 0xC353
callq 0x4280
leaq -0xb58(%rbp), %rdi
xorl %esi, %esi
movl $0x23, %edx
callq 0x4280
xorl %eax, %eax
movq %rsp, %rax
movq %rax, -0xe58(%rbp)
movq %rax, %rdi
addq $0x78, %rdi
movl $0x19, %ecx
leaq -0xa28(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0xe50(%rbp), %rdi
movq 0x3637(%rip), %rcx      # 0x6fc0
movq 0x10(%rcx), %rdx
movq %rdx, 0x70(%rax)
movups (%rcx), %xmm0
movups %xmm0, 0x60(%rax)
movq -0xa60(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0xa70(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0xb48(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0xb58(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0xb30(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0xb40(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0xb18(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0xb28(%rbp), %xmm0
movups %xmm0, (%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x45e0
leaq -0xa28(%rbp), %rdi
addq $0x50, %rdi
callq 0x46d0
movl -0x960(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x960(%rbp)
jmp 0x34f8
leaq -0xbb8(%rbp), %rdi
callq 0x4820
movq $0x0, -0xb88(%rbp)
movq $0x0, -0xb80(%rbp)
movq 0x3588(%rip), %rax      # 0x6fd0
movq 0x1b8(%rax), %rcx
movq %rcx, -0xba8(%rbp)
movq 0x1c0(%rax), %rcx
movq %rcx, -0xba0(%rbp)
movq 0x1c8(%rax), %rax
movq %rax, -0xb98(%rbp)
leaq -0xbd8(%rbp), %rdi
leaq 0x1590(%rip), %rsi      # 0x5010
leaq 0x16ad(%rip), %rdx      # 0x5134
callq 0x41b0
movq -0xbd8(%rbp), %rax
movq %rax, -0xb78(%rbp)
movq -0xbd0(%rbp), %rax
movq %rax, -0xb70(%rbp)
movq -0xbc8(%rbp), %rax
movq %rax, -0xb68(%rbp)
movq -0xbc0(%rbp), %rax
movq %rax, -0xb60(%rbp)
leaq 0x1672(%rip), %rdi      # 0x513d
callq 0x4850
movq %rax, -0xbe8(%rbp)
movq %rdx, -0xbe0(%rbp)
movq -0xbe8(%rbp), %rax
movq %rax, -0xbb8(%rbp)
movq -0xbe0(%rbp), %rax
movq %rax, -0xbb0(%rbp)
movl $0xffffffff, -0xb90(%rbp) # imm = 0xFFFFFFFF
leaq -0xc48(%rbp), %rdi
callq 0x4820
movq $0x0, -0xc18(%rbp)
movq $0x0, -0xc10(%rbp)
movq 0x34a3(%rip), %rax      # 0x6fd0
movq 0x1b8(%rax), %rcx
movq %rcx, -0xc38(%rbp)
movq 0x1c0(%rax), %rcx
movq %rcx, -0xc30(%rbp)
movq 0x1c8(%rax), %rax
movq %rax, -0xc28(%rbp)
leaq -0xc68(%rbp), %rdi
leaq 0x14ab(%rip), %rsi      # 0x5010
leaq 0x15c8(%rip), %rdx      # 0x5134
callq 0x41b0
movq -0xc68(%rbp), %rax
movq %rax, -0xc08(%rbp)
movq -0xc60(%rbp), %rax
movq %rax, -0xc00(%rbp)
movq -0xc58(%rbp), %rax
movq %rax, -0xbf8(%rbp)
movq -0xc50(%rbp), %rax
movq %rax, -0xbf0(%rbp)
leaq 0x158d(%rip), %rdi      # 0x513d
callq 0x4850
movq %rax, -0xc78(%rbp)
movq %rdx, -0xc70(%rbp)
movq -0xc78(%rbp), %rax
movq %rax, -0xc48(%rbp)
movq -0xc70(%rbp), %rax
movq %rax, -0xc40(%rbp)
movl $0xffffffff, -0xc20(%rbp) # imm = 0xFFFFFFFF
leaq -0xcd0(%rbp), %rdi
callq 0x4880
leaq -0xcf0(%rbp), %rdi
leaq 0x140d(%rip), %rsi      # 0x5010
leaq 0x1544(%rip), %rdx      # 0x514e
callq 0x41b0
movq -0xcf0(%rbp), %rax
movq %rax, -0xca8(%rbp)
movq -0xce8(%rbp), %rax
movq %rax, -0xca0(%rbp)
movq -0xce0(%rbp), %rax
movq %rax, -0xc98(%rbp)
movq -0xcd8(%rbp), %rax
movq %rax, -0xc90(%rbp)
leaq -0xd10(%rbp), %rdi
leaq 0x13bb(%rip), %rsi      # 0x5010
leaq 0x1523(%rip), %rdx      # 0x517f
callq 0x41b0
movq -0xd10(%rbp), %rax
movq %rax, -0xcc8(%rbp)
movq -0xd08(%rbp), %rax
movq %rax, -0xcc0(%rbp)
movq -0xd00(%rbp), %rax
movq %rax, -0xcb8(%rbp)
movq -0xcf8(%rbp), %rax
movq %rax, -0xcb0(%rbp)
movb $0x1, -0xc80(%rbp)
movb $0x1, -0xc7f(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xea0(%rbp)
leaq -0xd28(%rbp), %rdi
movl $0x1, %esi
movl $0xf44d, %edx           # imm = 0xF44D
callq 0x4280
leaq -0xd40(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
leaq -0xd58(%rbp), %rdi
xorl %esi, %esi
movl $0x2f, %edx
callq 0x4280
leaq -0xd70(%rbp), %rdi
movl $0x1, %esi
leaq 0x147b(%rip), %rdx      # 0x517f
callq 0x4220
movq -0xea0(%rbp), %rdi
movq -0x1d8(%rbp), %rdx
xorl %eax, %eax
movq -0xc80(%rbp), %rcx
movq %rsp, %rax
movq %rax, -0xe98(%rbp)
movq %rcx, 0xb0(%rax)
movups -0xc90(%rbp), %xmm0
movups %xmm0, 0xa0(%rax)
movups -0xcd0(%rbp), %xmm0
movups -0xcc0(%rbp), %xmm1
movups -0xcb0(%rbp), %xmm2
movups -0xca0(%rbp), %xmm3
movups %xmm3, 0x90(%rax)
movups %xmm2, 0x80(%rax)
movups %xmm1, 0x70(%rax)
movups %xmm0, 0x60(%rax)
movq -0xd60(%rbp), %rcx
movq %rcx, 0x58(%rax)
movups -0xd70(%rbp), %xmm0
movups %xmm0, 0x48(%rax)
movq -0xd48(%rbp), %rcx
movq %rcx, 0x40(%rax)
movups -0xd58(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0xd30(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0xd40(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0xd18(%rbp), %rcx
movq %rcx, 0x10(%rax)
movups -0xd28(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0xc48(%rbp), %rcx
movq %rcx, 0xb8(%rax)
movq $0x0, 0xc0(%rax)
leaq 0xac8(%rip), %rsi       # 0x48b0
leaq -0xbb8(%rbp), %r8
movl $0x1, %r9d
movq %r9, %rcx
callq 0x2040
movq -0x1d8(%rbp), %rax
movq %rax, -0xe90(%rbp)
leaq -0xd88(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
movq -0xe90(%rbp), %rdi
leaq -0xd88(%rbp), %rax
leaq 0xaed(%rip), %rsi       # 0x4920
xorl %ecx, %ecx
movl %ecx, %edx
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x20c0
leaq -0xda8(%rbp), %rdi
leaq 0x1321(%rip), %rsi      # 0x5184
leaq 0x1320(%rip), %rdx      # 0x518a
callq 0x41b0
movq -0x1d8(%rbp), %rax
movq %rax, -0xe88(%rbp)
leaq -0xdc0(%rbp), %rdi
xorl %esi, %esi
movl $0x55, %edx
callq 0x4280
movq -0xe88(%rbp), %rdi
leaq -0xdc0(%rbp), %rcx
leaq -0xda8(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x28(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x30(%rsp)
callq 0x4940
movq -0x1d8(%rbp), %rdi
leaq 0x324c(%rip), %rsi      # 0x7140
callq 0x21c0
movl %eax, -0xdc4(%rbp)
movq -0x1d8(%rbp), %rdi
callq 0x2240
leaq -0x48(%rbp), %rdi
callq *-0x18(%rbp)
cmpq $0x0, 0x323e(%rip)      # 0x7158
je 0x3f28
movq 0x3235(%rip), %rdi      # 0x7158
callq 0x20b0
cmpq $0x0, 0x3230(%rip)      # 0x7160
je 0x3f6c
movq 0x3227(%rip), %rdi      # 0x7160
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x21e0
movq 0x3215(%rip), %rdi      # 0x7160
leaq 0x1146(%rip), %rsi      # 0x5098
leaq 0x1239(%rip), %rdx      # 0x5192
movb $0x0, %al
callq 0x2160
movq 0x31f9(%rip), %rdi      # 0x7160
callq 0x20b0
cmpq $0x0, 0x31f4(%rip)      # 0x7168
je 0x3f82
movq 0x31eb(%rip), %rdi      # 0x7168
callq 0x20b0
leaq -0x1c0(%rbp), %rdi
addq $0xe0, %rdi
callq 0x4980
movl -0xdc4(%rbp), %eax
addq $0x1000, %rsp           # imm = 0x1000
popq %rbp
retq
nopw %cs:(%rax,%rax)