// File: /workspace/github_cpp_makefile_star2_O2/bummelbaerchen[P]e3dc/RscpExampleMain.cpp
// Function: createRequestExample(SRscpFrameBuffer*)
int createRequestExample(SRscpFrameBuffer * frameBuffer) {
    RscpProtocol protocol;
    SRscpValue rootValue;
    // The root container is create with the TAG ID 0 which is not used by any device.
    protocol.createContainerValue(&rootValue, 0);

    //---------------------------------------------------------------------------------------------------------
    // Create a request frame
    //---------------------------------------------------------------------------------------------------------
    if(iAuthenticated == 0)
    
    {
        printf("\nRequest authentication\n");
        // authentication request
        SRscpValue authenContainer;
        protocol.createContainerValue(&authenContainer, TAG_RSCP_REQ_AUTHENTICATION);
        protocol.appendValue(&authenContainer, TAG_RSCP_AUTHENTICATION_USER, e3dc_config.e3dc_user);
        protocol.appendValue(&authenContainer, TAG_RSCP_AUTHENTICATION_PASSWORD, e3dc_config.e3dc_password);
        // append sub-container to root container
        protocol.appendValue(&rootValue, authenContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(authenContainer);
    }
    else
    {
//        printf("\nRequest cyclic example data\n");
        // request power data information
        protocol.appendValue(&rootValue, TAG_EMS_REQ_POWER_PV);
        protocol.appendValue(&rootValue, TAG_EMS_REQ_POWER_ADD);
        protocol.appendValue(&rootValue, TAG_EMS_REQ_POWER_BAT);
        protocol.appendValue(&rootValue, TAG_EMS_REQ_POWER_HOME);
        protocol.appendValue(&rootValue, TAG_EMS_REQ_POWER_GRID);
        protocol.appendValue(&rootValue, TAG_EMS_REQ_EMERGENCY_POWER_STATUS);
        if(iBattPowerStatus == 0)
        {
            protocol.appendValue(&rootValue, TAG_EMS_REQ_GET_POWER_SETTINGS);
            iBattPowerStatus = 1;
        }

        // request battery information
        SRscpValue batteryContainer;
        protocol.createContainerValue(&batteryContainer, TAG_BAT_REQ_DATA);
        protocol.appendValue(&batteryContainer, TAG_BAT_INDEX, (uint8_t)0);
        protocol.appendValue(&batteryContainer, TAG_BAT_REQ_RSOC);
        protocol.appendValue(&batteryContainer, TAG_BAT_REQ_MODULE_VOLTAGE);
        protocol.appendValue(&batteryContainer, TAG_BAT_REQ_CURRENT);
        // append sub-container to root container
        protocol.appendValue(&rootValue, batteryContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(batteryContainer);
        
        // request Power Meter information
        uint8_t uindex = e3dc_config.wurzelzaehler;
        SRscpValue PMContainer;
        protocol.createContainerValue(&PMContainer, TAG_PM_REQ_DATA);
        protocol.appendValue(&PMContainer, TAG_PM_INDEX,uindex);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L1);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L2);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L3);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L1);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L2);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L3);
        // append sub-container to root container
        protocol.appendValue(&rootValue, PMContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(PMContainer);
// EXTERNER ZÄHLER 1
        protocol.createContainerValue(&PMContainer, TAG_PM_REQ_DATA);
        protocol.appendValue(&PMContainer, TAG_PM_INDEX, (uint8_t)1);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L1);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L2);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L3);
//        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L1);
//        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L2);
//        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L3);
        // append sub-container to root container
if (e3dc_config.ext1)
        protocol.appendValue(&rootValue, PMContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(PMContainer);
        // EXTERNER ZÄHLER 2
        protocol.createContainerValue(&PMContainer, TAG_PM_REQ_DATA);
        protocol.appendValue(&PMContainer, TAG_PM_INDEX, (uint8_t)2);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L1);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L2);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L3);
//        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L1);
//        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L2);
//        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L3);
        // append sub-container to root container
if (e3dc_config.ext2)
            protocol.appendValue(&rootValue, PMContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(PMContainer);
        // EXTERNER ZÄHLER 3
        protocol.createContainerValue(&PMContainer, TAG_PM_REQ_DATA);
        protocol.appendValue(&PMContainer, TAG_PM_INDEX, (uint8_t)3);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L1);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L2);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L3);
        //        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L1);
        //        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L2);
        //        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L3);
        // append sub-container to root container
if (e3dc_config.ext3)
            protocol.appendValue(&rootValue, PMContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(PMContainer);
        // EXTERNER ZÄHLER 7
        protocol.createContainerValue(&PMContainer, TAG_PM_REQ_DATA);
        protocol.appendValue(&PMContainer, TAG_PM_INDEX, (uint8_t)7);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L1);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L2);
        protocol.appendValue(&PMContainer, TAG_PM_REQ_POWER_L3);
        //        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L1);
        //        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L2);
        //        protocol.appendValue(&PMContainer, TAG_PM_REQ_VOLTAGE_L3);
        // append sub-container to root container
if (e3dc_config.ext7)
        protocol.appendValue(&rootValue, PMContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(PMContainer);

        
        // request Power Inverter information
        SRscpValue PVIContainer;
        protocol.createContainerValue(&PVIContainer, TAG_PVI_REQ_DATA);
        protocol.appendValue(&PVIContainer, TAG_PVI_INDEX, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_POWER, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_VOLTAGE, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_CURRENT, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_POWER, (uint8_t)1);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_VOLTAGE, (uint8_t)1);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_CURRENT, (uint8_t)1);

        // append sub-container to root container
        protocol.appendValue(&rootValue, PVIContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(PVIContainer);

        
        // request Wallbox information

        SRscpValue WBContainer;
  
/*
         protocol.createContainerValue(&WBContainer, TAG_WB_REQ_AVAILABLE_SOLAR_POWER);
         protocol.appendValue(&WBContainer, TAG_WB_INDEX, (uint8_t)0);

        // append sub-container to root container
         protocol.appendValue(&rootValue, WBContainer);
         // free memory of sub-container as it is now copied to rootValue
         protocol.destroyValueData(WBContainer);
*/
        
        protocol.createContainerValue(&WBContainer, TAG_WB_REQ_DATA);
        protocol.appendValue(&WBContainer, TAG_WB_INDEX, (uint8_t)0);
//        protocol.appendValue(&WBContainer, TAG_WB_REQ_PM_MODE);
        protocol.appendValue(&WBContainer, TAG_WB_REQ_PARAM_1);

        protocol.appendValue(&WBContainer, TAG_WB_REQ_PM_POWER_L1);
        protocol.appendValue(&WBContainer, TAG_WB_REQ_PM_POWER_L2);
        protocol.appendValue(&WBContainer, TAG_WB_REQ_PM_POWER_L3);
//        protocol.appendValue(&WBContainer, TAG_WB_REQ_AVAILABLE_SOLAR_POWER);

        // append sub-container to root container
if (e3dc_config.wallbox)
        protocol.appendValue(&rootValue, WBContainer);
        // free memory of sub-container as it is now copied to rootValue
        protocol.destroyValueData(WBContainer);

        
        if(iBattPowerStatus == 2)
            
        {
            // request RootPower Meter information
        }

    }

    
    // create buffer frame to send data to the S10
    protocol.createFrameAsBuffer(frameBuffer, rootValue.data, rootValue.length, true); // true to calculate CRC on for transfer
    // the root value object should be destroyed after the data is copied into the frameBuffer and is not needed anymore
    protocol.destroyValueData(rootValue);
    printf("\nRequest cyclic example data done \n");

    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x68, %rsp
movq %rdi, %rbx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x66e8
leaq 0x48(%rsp), %rdx
andl $0x0, (%rdx)
leaq 0x58(%rsp), %rsi
movq %r14, %rdi
callq 0x6096
cmpb $0x0, 0x11f5e(%rip)     # 0x15854
je 0x4049
leaq 0x48(%rsp), %rdx
movl $0x1000001, (%rdx)      # imm = 0x1000001
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x61b8
leaq 0x48(%rsp), %rdx
movl $0x1000005, (%rdx)      # imm = 0x1000005
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x61b8
leaq 0x48(%rsp), %rdx
movl $0x1000002, (%rdx)      # imm = 0x1000002
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x61b8
leaq 0x48(%rsp), %rdx
movl $0x1000003, (%rdx)      # imm = 0x1000003
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x61b8
leaq 0x48(%rsp), %rdx
movl $0x1000004, (%rdx)      # imm = 0x1000004
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x61b8
leaq 0x48(%rsp), %rdx
movl $0x1000073, (%rdx)      # imm = 0x1000073
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x61b8
cmpb $0x0, 0x11e55(%rip)     # 0x157f4
jne 0x39c2
leaq 0x48(%rsp), %rdx
movl $0x100008b, (%rdx)      # imm = 0x100008B
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x61b8
movb $0x1, 0x11e32(%rip)     # 0x157f4
leaq 0x18(%rsp), %rdx
movl $0x3040000, (%rdx)      # imm = 0x3040000
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x6096
leaq 0x18(%rsp), %rdx
movl $0x3040001, (%rdx)      # imm = 0x3040001
leaq 0x28(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x61d6
leaq 0x18(%rsp), %rdx
movl $0x3000001, (%rdx)      # imm = 0x3000001
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x61b8
leaq 0x18(%rsp), %rdx
movl $0x3000002, (%rdx)      # imm = 0x3000002
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x61b8
leaq 0x18(%rsp), %rdx
movl $0x3000003, (%rdx)      # imm = 0x3000003
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x61b8
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x734c
movb 0x11d14(%rip), %al      # 0x15789
movb %al, 0x37(%rsp)
leaq 0x28(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6096
leaq 0x28(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0x37(%rsp), %rcx
callq 0x61d6
leaq 0x28(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000011, (%rdx)      # imm = 0x5000011
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000012, (%rdx)      # imm = 0x5000012
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000013, (%rdx)      # imm = 0x5000013
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x734c
leaq 0x28(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6096
leaq 0x28(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x38(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61d6
leaq 0x28(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
cmpb $0x1, 0x11b7f(%rip)     # 0x15781
jne 0x3c18
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x734c
leaq 0x28(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6096
leaq 0x28(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x38(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61d6
leaq 0x28(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
cmpb $0x1, 0x11aca(%rip)     # 0x15782
jne 0x3cce
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x734c
leaq 0x28(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6096
leaq 0x28(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x38(%rsp), %rcx
movb $0x3, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61d6
leaq 0x28(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
cmpb $0x1, 0x11a15(%rip)     # 0x15783
jne 0x3d84
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x734c
leaq 0x28(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6096
leaq 0x28(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x38(%rsp), %rcx
movb $0x7, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61d6
leaq 0x28(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
leaq 0x28(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x61b8
cmpb $0x1, 0x11960(%rip)     # 0x15784
jne 0x3e3a
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x734c
leaq 0x38(%rsp), %rdx
movl $0x2040000, (%rdx)      # imm = 0x2040000
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x6096
leaq 0x38(%rsp), %rdx
movl $0x2040001, (%rdx)      # imm = 0x2040001
leaq 0x14(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x61d6
leaq 0x38(%rsp), %rdx
movl $0x20dc001, (%rdx)      # imm = 0x20DC001
leaq 0x14(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x61d6
leaq 0x38(%rsp), %rdx
movl $0x20dc002, (%rdx)      # imm = 0x20DC002
leaq 0x14(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x61d6
leaq 0x38(%rsp), %rdx
movl $0x20dc003, (%rdx)      # imm = 0x20DC003
leaq 0x14(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x61d6
leaq 0x38(%rsp), %rdx
movl $0x20dc001, (%rdx)      # imm = 0x20DC001
leaq 0x14(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x61d6
leaq 0x38(%rsp), %rdx
movl $0x20dc002, (%rdx)      # imm = 0x20DC002
leaq 0x14(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x61d6
leaq 0x38(%rsp), %rdx
movl $0x20dc003, (%rdx)      # imm = 0x20DC003
leaq 0x14(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x61d6
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x734c
leaq 0x14(%rsp), %rdx
movl $0xe040000, (%rdx)      # imm = 0xE040000
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x6096
leaq 0x14(%rsp), %rdx
movl $0xe040001, (%rdx)      # imm = 0xE040001
leaq 0x67(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x61d6
leaq 0x14(%rsp), %rdx
movl $0xe04101b, (%rdx)      # imm = 0xE04101B
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x61b8
leaq 0x14(%rsp), %rdx
movl $0xe00000c, (%rdx)      # imm = 0xE00000C
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x61b8
leaq 0x14(%rsp), %rdx
movl $0xe00000d, (%rdx)      # imm = 0xE00000D
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x61b8
leaq 0x14(%rsp), %rdx
movl $0xe00000e, (%rdx)      # imm = 0xE00000E
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x61b8
cmpb $0x1, 0x11761(%rip)     # 0x15780
jne 0x4035
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x734c
jmp 0x40d4
leaq 0xd9d4(%rip), %rdi      # 0x11a24
callq 0x2270
leaq 0x18(%rsp), %rdx
movl $0x1, (%rdx)
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x6096
leaq 0x18(%rsp), %rdx
movl $0x2, (%rdx)
leaq 0x1157f(%rip), %rcx     # 0x15600
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x616c
leaq 0x18(%rsp), %rdx
movl $0x3, (%rdx)
leaq 0x115de(%rip), %rcx     # 0x15680
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x616c
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x60c2
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x734c
movq 0x5f(%rsp), %rdx
movzwl 0x5d(%rsp), %ecx
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %r8
movq %rbx, %rsi
callq 0x67c4
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x734c
leaq 0xd937(%rip), %rdi      # 0x11a3c
callq 0x2270
leaq 0x8(%rsp), %rdi
callq 0x66f4
xorl %eax, %eax
addq $0x68, %rsp
popq %rbx
popq %r14
retq
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
jmp 0x419c
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x66f4
movq %rbx, %rdi
callq 0x22d0