// File: /workspace/github_cpp_makefile_star2_O1/Eba-M[P]E3DC-Control/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_BAT_SOC);
        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);
//        protocol.appendValue(&rootValue, TAG_EMS_REQ_REMAINING_BAT_CHARGE_POWER);
        // EP Reserve (Emergency Power)
            protocol.appendValue(&rootValue, TAG_SE_REQ_EP_RESERVE);

        if(iBattPowerStatus == 0)
        {
            protocol.appendValue(&rootValue, TAG_EMS_REQ_GET_POWER_SETTINGS);
            iBattPowerStatus = 1;
        }
// request Power Meter information
        static int32_t Mode;
// mode 1 = Idle 2 = Entladen  3 = Laden 4 = Laden aus dem Netz
        if (e3dc_config.wrsteuerung==0)
            printf("\n Achtung WR-Steuerung inaktiv %i %i Status %i\n",iBattLoad,iE3DC_Req_Load,iLMStatus);
        if (e3dc_config.wrsteuerung==2) // Text ausgeben
            printf("\n WR-Steuerung aktiv %i %i %i Status %i\n",iBattLoad,iE3DC_Req_Load,Mode,iLMStatus);

        if (iLMStatus < 0&&e3dc_config.wrsteuerung==0) iLMStatus=iLMStatus*-1;
        if (iLMStatus < 0&&e3dc_config.wrsteuerung>0)
        {
            if (iE3DC_Req_Load==0) 
                Mode = 1;
            else
            if (iE3DC_Req_Load>e3dc_config.maximumLadeleistung)
            {
                iE3DC_Req_Load = iE3DC_Req_Load - e3dc_config.maximumLadeleistung;
                Mode = 4;  // Steuerung Netzbezug Anforderung durch den Betrag > e3dc_config.maximumLadeleistung
            }
            else
            if (iE3DC_Req_Load==e3dc_config.maximumLadeleistung) Mode = 0; 
            else
            if (iE3DC_Req_Load>0) Mode = 3;
            else
            { iE3DC_Req_Load = iE3DC_Req_Load*-1;
                Mode = 2;
            }
            iLMStatus = iLMStatus*-1;
            iE3DC_Req_Load_alt = iE3DC_Req_Load;
            if (iE3DC_Req_Load > e3dc_config.maximumLadeleistung)
                iE3DC_Req_Load = e3dc_config.maximumLadeleistung;
                SRscpValue PMContainer;
        //    Power = Power*-1;
        protocol.createContainerValue(&PMContainer, TAG_EMS_REQ_SET_POWER);
        protocol.appendValue(&PMContainer, TAG_EMS_REQ_SET_POWER_MODE,Mode);
//        if (Mode > 0)
            protocol.appendValue(&PMContainer, TAG_EMS_REQ_SET_POWER_VALUE,iE3DC_Req_Load);
        // 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);
        }

        // 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 4
        protocol.createContainerValue(&PMContainer, TAG_PM_REQ_DATA);
        protocol.appendValue(&PMContainer, TAG_PM_INDEX, (uint8_t)4);
        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.ext4)
                    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 DC
        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);
        if (e3dc_config.wrleistung>=30000)  // S20Xnn
        {
            protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_POWER, (uint8_t)2);
            protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_VOLTAGE, (uint8_t)2);
            protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_CURRENT, (uint8_t)2);
        }

        // 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 Power Inverter information AC

        protocol.createContainerValue(&PVIContainer, TAG_PVI_REQ_DATA);
        protocol.appendValue(&PVIContainer, TAG_PVI_INDEX, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_POWER, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_VOLTAGE, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_CURRENT, (uint8_t)0);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_POWER, (uint8_t)1);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_VOLTAGE, (uint8_t)1);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_CURRENT, (uint8_t)1);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_POWER, (uint8_t)2);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_VOLTAGE, (uint8_t)2);
        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_AC_CURRENT, (uint8_t)2);

        // 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 DCDC information
            SRscpValue DCDCContainer;
            
            protocol.createContainerValue(&DCDCContainer, TAG_DCDC_REQ_DATA);
            protocol.appendValue(&DCDCContainer, TAG_DCDC_INDEX, (uint8_t)0);
            protocol.appendValue(&DCDCContainer, TAG_DCDC_REQ_I_BAT);
            protocol.appendValue(&DCDCContainer, TAG_DCDC_REQ_U_BAT);
            protocol.appendValue(&DCDCContainer, TAG_DCDC_REQ_P_BAT);
            protocol.appendValue(&DCDCContainer, TAG_DCDC_REQ_I_DCL);
            protocol.appendValue(&DCDCContainer, TAG_DCDC_REQ_U_DCL);
            protocol.appendValue(&DCDCContainer, TAG_DCDC_REQ_P_DCL);
            
            // append sub-container to root container
            protocol.appendValue(&rootValue, DCDCContainer);
            // free memory of sub-container as it is now copied to rootValue
            protocol.destroyValueData(DCDCContainer);

        // 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)e3dc_config.wallbox);
//        protocol.appendValue(&WBContainer, TAG_WB_REQ_PM_MODE);
//        protocol.appendValue(&WBContainer, TAG_WB_REQ_MODE);
//        protocol.appendValue(&WBContainer, TAG_WB_REQ_STATUS);

        protocol.appendValue(&WBContainer, TAG_WB_REQ_PARAM_1);
        protocol.appendValue(&WBContainer, TAG_WB_REQ_PARAM_2);
        protocol.appendValue(&WBContainer, TAG_WB_REQ_EXTERN_DATA_ALG);

        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>=0)
        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("Request cyclic example data done %s %2ld:%2ld:%2ld",VERSION,tm_CONF_dt%(24*3600)/3600,tm_CONF_dt%3600/60,tm_CONF_dt%60);

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x80, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x1599c
leaq 0x60(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x20(%rsp), %r9
movb $0xe, (%r9)
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x70(%rsp), %rsi
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x163c8
cmpb $0x0, 0x30c53(%rip)     # 0x40a78
je 0x100b5
leaq 0x60(%rsp), %rdx
movl $0x1000001, (%rdx)      # imm = 0x1000001
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x60(%rsp), %rdx
movl $0x1000005, (%rdx)      # imm = 0x1000005
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x60(%rsp), %rdx
movl $0x1000002, (%rdx)      # imm = 0x1000002
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x60(%rsp), %rdx
movl $0x1000008, (%rdx)      # imm = 0x1000008
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x60(%rsp), %rdx
movl $0x1000003, (%rdx)      # imm = 0x1000003
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x60(%rsp), %rdx
movl $0x1000004, (%rdx)      # imm = 0x1000004
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x60(%rsp), %rdx
movl $0x1000073, (%rdx)      # imm = 0x1000073
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x60(%rsp), %rdx
movl $0x1b000009, (%rdx)     # imm = 0x1B000009
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
cmpb $0x0, 0x30aca(%rip)     # 0x40a7c
jne 0xffeb
leaq 0x60(%rsp), %rdx
movl $0x100008b, (%rdx)      # imm = 0x100008B
leaq 0x50(%rsp), %r8
movw $0x0, (%r8)
leaq 0x20(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
movb $0x1, 0x30a91(%rip)     # 0x40a7c
cmpb $0x0, 0x29e47(%rip)     # 0x39e39
jne 0x10014
movl 0x2beea(%rip), %esi     # 0x3bee4
movl 0x309b8(%rip), %edx     # 0x409b8
movl 0x3099a(%rip), %ecx     # 0x409a0
leaq 0x21762(%rip), %rdi     # 0x3176f
xorl %eax, %eax
callq 0x2040
cmpb $0x2, 0x29e1e(%rip)     # 0x39e39
jne 0x10044
movl 0x2bec1(%rip), %esi     # 0x3bee4
movl 0x3098f(%rip), %edx     # 0x409b8
movl 0x30a51(%rip), %ecx     # 0x40a80
movl 0x3096a(%rip), %r8d     # 0x409a0
leaq 0x21762(%rip), %rdi     # 0x3179f
xorl %eax, %eax
callq 0x2040
movl 0x30956(%rip), %eax     # 0x409a0
testl %eax, %eax
sets %dl
movb 0x29de4(%rip), %cl      # 0x39e39
testb %cl, %cl
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x1006c
negl %eax
movl %eax, 0x30934(%rip)     # 0x409a0
movl 0x3092e(%rip), %eax     # 0x409a0
testl %eax, %eax
sets %dl
testb %cl, %cl
setne %cl
andb %dl, %cl
cmpb $0x1, %cl
jne 0x1029e
movl 0x3092b(%rip), %edx     # 0x409b8
testl %edx, %edx
je 0x1019d
movl 0x29db5(%rip), %edi     # 0x39e50
movl %edx, %esi
subl %edi, %esi
jle 0x101a4
movl $0x4, %ecx
movl %esi, 0x30908(%rip)     # 0x409b8
jmp 0x101b7
leaq 0x21ddc(%rip), %rdi     # 0x31e98
callq 0x2400
leaq 0x50(%rsp), %rdx
movl $0x1, (%rdx)
leaq 0x30(%rsp), %r9
movb $0xe, (%r9)
leaq 0x20(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x50(%rsp), %r14
movl $0x2, (%r14)
leaq 0x29910(%rip), %r15     # 0x39a14
movq %r15, %rdi
callq 0x2100
leaq 0x20(%rsp), %r8
movw %ax, (%r8)
leaq 0x30(%rsp), %r9
movb $0xd, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x1658a
leaq 0x50(%rsp), %r14
movl $0x3, (%r14)
leaq 0x2994e(%rip), %r15     # 0x39a94
movq %r15, %rdi
callq 0x2100
leaq 0x20(%rsp), %r8
movw %ax, (%r8)
leaq 0x30(%rsp), %r9
movb $0xd, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x1658a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x168a8
jmp 0x1135f
movl $0x1, %ecx
jmp 0x101b7
xorl %ecx, %ecx
cmpl %edi, %edx
je 0x101b7
movl $0x3, %ecx
testl %edx, %edx
jle 0x113a4
movl %ecx, 0x308c3(%rip)     # 0x40a80
negl %eax
movl %eax, 0x307db(%rip)     # 0x409a0
movl 0x307ed(%rip), %ecx     # 0x409b8
movl %ecx, 0x3087b(%rip)     # 0x40a4c
movl 0x29c79(%rip), %eax     # 0x39e50
cmpl %eax, %ecx
jle 0x101e1
movl %eax, 0x307d7(%rip)     # 0x409b8
leaq 0x50(%rsp), %rdx
movl $0x1000030, (%rdx)      # imm = 0x1000030
leaq 0x30(%rsp), %r9
movb $0xe, (%r9)
leaq 0x20(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x50(%rsp), %rdx
movl $0x1000031, (%rdx)      # imm = 0x1000031
leaq 0x20(%rsp), %r8
movw $0x4, (%r8)
leaq 0x30(%rsp), %r9
movb $0x6, (%r9)
leaq 0x30849(%rip), %rcx     # 0x40a80
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1658a
leaq 0x50(%rsp), %rdx
movl $0x1000032, (%rdx)      # imm = 0x1000032
leaq 0x20(%rsp), %r8
movw $0x4, (%r8)
leaq 0x30(%rsp), %r9
movb $0x6, (%r9)
leaq 0x3074c(%rip), %rcx     # 0x409b8
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1658a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x168a8
leaq 0x50(%rsp), %rdx
movl $0x3040000, (%rdx)      # imm = 0x3040000
leaq 0x30(%rsp), %r9
movb $0xe, (%r9)
leaq 0x20(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x50(%rsp), %rdx
movl $0x3040001, (%rdx)      # imm = 0x3040001
leaq 0x40(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x20(%rsp), %r8
movw $0x1, (%r8)
leaq 0x30(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1658a
leaq 0x50(%rsp), %rdx
movl $0x3000001, (%rdx)      # imm = 0x3000001
leaq 0x20(%rsp), %r8
movw $0x0, (%r8)
leaq 0x30(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x50(%rsp), %rdx
movl $0x3000002, (%rdx)      # imm = 0x3000002
leaq 0x20(%rsp), %r8
movw $0x0, (%r8)
leaq 0x30(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x50(%rsp), %rdx
movl $0x3000003, (%rdx)      # imm = 0x3000003
leaq 0x20(%rsp), %r8
movw $0x0, (%r8)
leaq 0x30(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x168a8
movb 0x29a74(%rip), %al      # 0x39e31
movb %al, 0x5f(%rsp)
leaq 0x20(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x40(%rsp), %r9
movb $0xe, (%r9)
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x20(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x30(%rsp), %r8
movw $0x1, (%r8)
leaq 0x40(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x5f(%rsp), %rcx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000011, (%rdx)      # imm = 0x5000011
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000012, (%rdx)      # imm = 0x5000012
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000013, (%rdx)      # imm = 0x5000013
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x168a8
leaq 0x20(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x40(%rsp), %r9
movb $0xe, (%r9)
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x20(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x18(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x30(%rsp), %r8
movw $0x1, (%r8)
leaq 0x40(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
cmpb $0x1, 0x297bc(%rip)     # 0x39e20
jne 0x1067a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x168a8
leaq 0x20(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x40(%rsp), %r9
movb $0xe, (%r9)
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x20(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x18(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x30(%rsp), %r8
movw $0x1, (%r8)
leaq 0x40(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
cmpb $0x1, 0x2969b(%rip)     # 0x39e21
jne 0x1079c
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x168a8
leaq 0x20(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x40(%rsp), %r9
movb $0xe, (%r9)
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x20(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
movb $0x3, %al
leaq 0x18(%rsp), %rcx
movb %al, (%rcx)
leaq 0x30(%rsp), %r8
movw $0x1, (%r8)
leaq 0x40(%rsp), %r9
movb %al, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
cmpb $0x1, 0x2957a(%rip)     # 0x39e22
jne 0x108be
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x168a8
leaq 0x20(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x40(%rsp), %r9
movb $0xe, (%r9)
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x20(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x18(%rsp), %rcx
movb $0x4, (%rcx)
leaq 0x30(%rsp), %r8
movw $0x1, (%r8)
leaq 0x40(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
cmpb $0x1, 0x29459(%rip)     # 0x39e23
jne 0x109e0
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x168a8
leaq 0x20(%rsp), %rdx
movl $0x5040000, (%rdx)      # imm = 0x5040000
leaq 0x40(%rsp), %r9
movb $0xe, (%r9)
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x20(%rsp), %rdx
movl $0x5040001, (%rdx)      # imm = 0x5040001
leaq 0x18(%rsp), %rcx
movb $0x7, (%rcx)
leaq 0x30(%rsp), %r8
movw $0x1, (%r8)
leaq 0x40(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000001, (%rdx)      # imm = 0x5000001
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000002, (%rdx)      # imm = 0x5000002
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x20(%rsp), %rdx
movl $0x5000003, (%rdx)      # imm = 0x5000003
leaq 0x30(%rsp), %r8
movw $0x0, (%r8)
leaq 0x40(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
cmpb $0x1, 0x29338(%rip)     # 0x39e24
jne 0x10b02
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x168a8
leaq 0x30(%rsp), %rdx
movl $0x2040000, (%rdx)      # imm = 0x2040000
leaq 0x18(%rsp), %r9
movb $0xe, (%r9)
leaq 0x40(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x30(%rsp), %rdx
movl $0x2040001, (%rdx)      # imm = 0x2040001
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc001, (%rdx)      # imm = 0x20DC001
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc002, (%rdx)      # imm = 0x20DC002
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc003, (%rdx)      # imm = 0x20DC003
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc001, (%rdx)      # imm = 0x20DC001
leaq 0xe(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc002, (%rdx)      # imm = 0x20DC002
leaq 0xe(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc003, (%rdx)      # imm = 0x20DC003
leaq 0xe(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
cmpl $0x7530, 0x2918f(%rip)  # imm = 0x7530
jl 0x10d6d
leaq 0x30(%rsp), %rdx
movl $0x20dc001, (%rdx)      # imm = 0x20DC001
leaq 0xe(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc002, (%rdx)      # imm = 0x20DC002
leaq 0xe(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20dc003, (%rdx)      # imm = 0x20DC003
leaq 0xe(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x168a8
leaq 0x30(%rsp), %rdx
movl $0x2040000, (%rdx)      # imm = 0x2040000
leaq 0x18(%rsp), %r9
movb $0xe, (%r9)
leaq 0x40(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x30(%rsp), %rdx
movl $0x2040001, (%rdx)      # imm = 0x2040001
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac001, (%rdx)      # imm = 0x20AC001
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac002, (%rdx)      # imm = 0x20AC002
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac003, (%rdx)      # imm = 0x20AC003
leaq 0xe(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac001, (%rdx)      # imm = 0x20AC001
leaq 0xe(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac002, (%rdx)      # imm = 0x20AC002
leaq 0xe(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac003, (%rdx)      # imm = 0x20AC003
leaq 0xe(%rsp), %rcx
movb $0x1, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac001, (%rdx)      # imm = 0x20AC001
leaq 0xe(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac002, (%rdx)      # imm = 0x20AC002
leaq 0xe(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x30(%rsp), %rdx
movl $0x20ac003, (%rdx)      # imm = 0x20AC003
leaq 0xe(%rsp), %rcx
movb $0x2, (%rcx)
leaq 0x40(%rsp), %r8
movw $0x1, (%r8)
leaq 0x18(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1658a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x168a8
leaq 0x40(%rsp), %rdx
movl $0x4040000, (%rdx)      # imm = 0x4040000
leaq 0xe(%rsp), %r9
movb $0xe, (%r9)
leaq 0x18(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x40(%rsp), %rdx
movl $0x4040001, (%rdx)      # imm = 0x4040001
leaq 0x1f(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x18(%rsp), %r8
movw $0x1, (%r8)
leaq 0xe(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1658a
leaq 0x40(%rsp), %rdx
movl $0x4000001, (%rdx)      # imm = 0x4000001
leaq 0x18(%rsp), %r8
movw $0x0, (%r8)
leaq 0xe(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x40(%rsp), %rdx
movl $0x4000002, (%rdx)      # imm = 0x4000002
leaq 0x18(%rsp), %r8
movw $0x0, (%r8)
leaq 0xe(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x40(%rsp), %rdx
movl $0x4000003, (%rdx)      # imm = 0x4000003
leaq 0x18(%rsp), %r8
movw $0x0, (%r8)
leaq 0xe(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x40(%rsp), %rdx
movl $0x4000004, (%rdx)      # imm = 0x4000004
leaq 0x18(%rsp), %r8
movw $0x0, (%r8)
leaq 0xe(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x40(%rsp), %rdx
movl $0x4000005, (%rdx)      # imm = 0x4000005
leaq 0x18(%rsp), %r8
movw $0x0, (%r8)
leaq 0xe(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x40(%rsp), %rdx
movl $0x4000006, (%rdx)      # imm = 0x4000006
leaq 0x18(%rsp), %r8
movw $0x0, (%r8)
leaq 0xe(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x168a8
leaq 0x18(%rsp), %rdx
movl $0xe040000, (%rdx)      # imm = 0xE040000
leaq 0x1f(%rsp), %r9
movb $0xe, (%r9)
leaq 0xe(%rsp), %r8
movw $0x0, (%r8)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %ecx, %ecx
callq 0x163c8
leaq 0x18(%rsp), %rdx
movl $0xe040001, (%rdx)      # imm = 0xE040001
movb 0x28c93(%rip), %al      # 0x39e7c
leaq 0x7f(%rsp), %rcx
movb %al, (%rcx)
leaq 0xe(%rsp), %r8
movw $0x1, (%r8)
leaq 0x1f(%rsp), %r9
movb $0x3, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x1658a
leaq 0x18(%rsp), %rdx
movl $0xe04101b, (%rdx)      # imm = 0xE04101B
leaq 0xe(%rsp), %r8
movw $0x0, (%r8)
leaq 0x1f(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x18(%rsp), %rdx
movl $0xe04101a, (%rdx)      # imm = 0xE04101A
leaq 0xe(%rsp), %r8
movw $0x0, (%r8)
leaq 0x1f(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x18(%rsp), %rdx
movl $0xe041014, (%rdx)      # imm = 0xE041014
leaq 0xe(%rsp), %r8
movw $0x0, (%r8)
leaq 0x1f(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x18(%rsp), %rdx
movl $0xe00000c, (%rdx)      # imm = 0xE00000C
leaq 0xe(%rsp), %r8
movw $0x0, (%r8)
leaq 0x1f(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x18(%rsp), %rdx
movl $0xe00000d, (%rdx)      # imm = 0xE00000D
leaq 0xe(%rsp), %r8
movw $0x0, (%r8)
leaq 0x1f(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
leaq 0x18(%rsp), %rdx
movl $0xe00000e, (%rdx)      # imm = 0xE00000E
leaq 0xe(%rsp), %r8
movw $0x0, (%r8)
leaq 0x1f(%rsp), %r9
movb $0x0, (%r9)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %ecx, %ecx
callq 0x1658a
cmpl $0x0, 0x28b42(%rip)     # 0x39e7c
js 0x11350
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0x151ec
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x168a8
movq 0x77(%rsp), %rdx
movzwl 0x75(%rsp), %ecx
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %r8d
callq 0x15a84
leaq 0x10(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x168a8
leaq 0x10(%rsp), %rdi
callq 0x159a8
xorl %eax, %eax
addq $0x80, %rsp
popq %rbx
popq %r14
popq %r15
retq
negl %edx
movl $0x2, %ecx
movl %edx, %esi
jmp 0x100aa
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
jmp 0x114e1
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x159a8
movq %rbx, %rdi
callq 0x24a0