// File: /workspace/github_cpp_makefile_star2_O2/Eba-M[P]E3DC-Control/RscpExampleMain.cpp
// Function: iModbusTCP()
int iModbusTCP()
{
// jede Minute wird die Temperatur abgefragt, innerhalb 10sec muss die Antwort da sein, ansonsten wird die Verbindug geschlossen.
    static time_t tlast = 0;
    time_t now;
    time(&now);
    static time_t t_OeK;

    Modbus_send Msend;
    printf("ÖK%i",now-t_OeK);
    if ((now-t_OeK)>40)
    {
        if (t_OeK>0&&(now-t_OeK)>300)
            e3dc_config.stop = 100;
        t_OeK = now;
        if (isocket>0)
        {
            SocketClose(isocket);
            isocket = -1;
        }
    }
    if (e3dc_config.debug) printf("ÖKa%i",now-tlast);
    if (brequest||(not brequest&&(now-tlast)>10)) // 10 Sekunden auf die Antwoert warten
    {
        if (isocket <= 0)
        {
            if (e3dc_config.debug) printf("ÖKb%i",now-t_OeK);
            sprintf(server_ip,e3dc_config.heizung_ip);
            if (e3dc_config.debug)
                printf("BSC");
            
            isocket = SocketConnect(server_ip, 502);
            if (e3dc_config.debug)
                printf("ASC");
            iLength = 0;

        }
        if (e3dc_config.debug) printf("ÖKc%i",now-t_OeK);
        if (isocket > 0&&not brequest&&(now-tlast)>10) // Nur alle 10sec Anfrage starten
        {
            tlast = now;
            if (e3dc_config.debug) printf("ÖKd%i",now-t_OeK);
            send.resize(12);
            if (e3dc_config.debug)
                printf("RV");
            receive.resize(1024);
            if (e3dc_config.debug)
                printf("ARV");

// Heizkreise schalten in Abhängigkeit vom EVU und Status des jeweiligen heizkreis
// Wenn WP und oekofen aus sind, dann heizkreise ausschalten
// Wenn WP oder oekofen laufen Heizkreise einschalten
            
            if (temp[13] > 0 && not brequest && (now-t_OeK<20))
// Temperatur Puffer gesetzt?
            {
//  Kessel in Abhängigleit zu Aussentemperatur zu- und abschalten
//  Regelgröße ist die Zulufttemperatur der LWWP
//  daneben die aktuelle Temperatur vom Wetterportal
// und anstatt die Mitteltemperatur die aktuelle Temperatur zur Verifizierung
                if (wolf.size()>0)
                {
                    if (
                        (
                         (now - wolf[wpzl].t < 300)&&wolf[wpzl].wert>-90)
                        &&
                        //                        ((now - wolf[wpal].t < 300)&&wolf[wpal].wert<wolf[wpzl].wert)
                        //                        &&
                        ((now - wolf[wphl].t < 300)&&wolf[wphl].wert>0)
                        
                        )
                        isttemp = wolf[wpzl].wert;
                    if (wetter.size() > 0)
                    {
                        isttemp  = (isttemp  + wetter[0].temp)/2;
                        if (
                            (now - wolf[wpzl].t > 300)||wolf[wpzl].wert<-90
                            )
                            isttemp = wetter[0].temp;
                    }
                    // Wenn die Wolf läuft, dann die Berechnung isttemp mit zulufttemperatur bei Abtaubetrieb aussetzen
                    if (
                        (((now - wolf[wppw].t < 300)&&wolf[wppw].wert>0)
                         ||
                         ((now - wolf[wpalv].t < 300)&&wolf[wpalv].wert>0))
                        &&
                        ((now - wolf[wphl].t < 300)&&wolf[wphl].wert>0)
                        &&
                        ((now - wolf[wpzl].t < 300)&&wolf[wpzl].wert>-90)
                        )
                        isttemp = (wolf[wpzl].wert + wetter[0].temp)/2 + 1;
                    // wenn die WP läuft wird die isttemp um 1° hochgesetzt ???? überprüfen
                    if (isttemp>-99)
                    {
                        if ((isttemp<(e3dc_config.WPZWE))&&temp[17]==0)
                            //                if (temp[0]<(e3dc_config.WPZWE)*10&&temp[17]==0)
                        {
                            iLength  = iModbusTCP_Set(101,1,101); //Heizkessel register 101
                            iLength  = iModbusTCP_Get(101,0,101); //Heizkessel
                            //                    brequest = true;
                        }
                        // Pellets wird nur ausgeschaltet, wenn die WP-Anforderung für die WP da ist
                        if (isttemp>(e3dc_config.WPZWE+2)&&temp[17]==1)
                        {
                            iLength  = iModbusTCP_Set(101,0,101); //Heizkessel
                            iLength  = iModbusTCP_Get(101,0,101); //Heizkessel
                            //                    brequest = true;
                        }
                    }
                }
// Heizkreise schalten nur beim Abtauen nicht oder wenn WP aus
                if (temp[1]==0&&
                    (
//                     ((now - wolf[wphl].t < 300)&&wolf[wphl].wert>0)||
//                     (now - wolf[wphl].t > 300)||
//                     (now - wolf[wppw].t > 300)||
                     (wolf[wpeevk].wert==0)
                     ||
                      (now - wolf[wpbhg].t < 100&&wolf[wpbhg].wert!=6&&temp[17]==0)
//                     ||
//                     ((now - wolf[wppw].t < 300)&&wolf[wppw].wert==0)
                     )
                    &&

                    (
                        ((tasmota_status[0]==0||temp[14]>300)&&bHK1off==0)
                     ||
                        temp[17]>0)
                    )
// EVU Aus und Heizkreis Aus und fbh Anforderung ein -> einschalten
                {
                    iLength  = iModbusTCP_Set(11,1,11); //FBH? register 11
                    iLength  = iModbusTCP_Get(11,1,11); //FBH?
  //                  brequest = true;
                }
                if (temp[7]==0&&
                    (
//                     ((now - wolf[wphl].t < 300)&&wolf[wphl].wert>3)||
//                     (now - wolf[wphl].t > 300)||
//                     (now - wolf[wppw].t > 300)||
                     (wolf[wpeevk].wert==0)
                     ||
                      (now - wolf[wpbhg].t < 100&&wolf[wpbhg].wert!=6&&temp[17]==0)
//                     ||
//                     ((now - wolf[wppw].t < 300)&&wolf[wppw].wert==0)
                     )
                    &&
                    (
                     (
                      (tasmota_status[0]==0||temp[14]>300)&&bHK2off==0
                      )
                     ||temp[17]>0)
                    )
//                if ((tasmota_status[0]==0||temp[17]>0)&&temp[7]==0&&bHK2off==0)
                    // EVU Aus und Heizkreis Aus und WW Anforderung aus -> einschalten
                {
                    iLength  = iModbusTCP_Set(31,1,31); //HZK? register 31
                    iLength  = iModbusTCP_Get(31,1,31); //HZK?
//                    brequest = true;
                } // HK werden nur beim Abtauen abgeschaltet, wenn der pellets nicht läuft
                if (temp[1]==1&&
                    (
                     (tasmota_status[0]==1&&temp[17]==0&&temp[14]<300)
// wenn der Puffer > 30° läuft die FBH nach
                    ||
                     (bHK1off>0)
                    ||
                     ((now - wolf[wphl].t < 300)&&wolf[wphl].wert<0
//                      &&(now - wolf[wppw].t < 300)&&wolf[wppw].wert>0&&temp[17]==0
                      )
                    ||
                     (now - wolf[wpeevk].t < 300&&wolf[wpeevk].wert>0&&temp[17]==0)
                    ||
                     (now - wolf[wpbhg].t < 100&&wolf[wpbhg].wert==6&&temp[17]==0)

                    )
                    )
// EVU aus und Kessel aus ODER fbh Anforderung aus aber  Heizkreis aktiv -> HK ausschalten
                {
                    iLength  = iModbusTCP_Set(11,0,11); //FBH?
                    iLength  = iModbusTCP_Get(11,1,11); //FBH?
//                    brequest = true;
                }
                if (temp[7]==1&&
                    (
                     (tasmota_status[0]==1&&temp[17]==0&&temp[14]<300)
                    ||
                     (bHK2off>0)
                     ||
                      (
                       (now - wolf[wphl].t < 300)&&wolf[wphl].wert<0
//                       &&(now - wolf[wppw].t < 300)&&wolf[wppw].wert>0&&temp[17]==0
                       )
                     ||
                      (now - wolf[wpeevk].t < 300&&wolf[wpeevk].wert>0&&temp[17]==0)
                     ||
                      (now - wolf[wpbhg].t < 100&&wolf[wpbhg].wert==6&&temp[17]==0)
                     )
                    )
// wenn Puffer > 30° läuft die HKZ nach
// EVU aus und Kessel aus ODER WW Anforderung + Heizkreis aktiv -> HK ausschalten
                {
                    iLength  = iModbusTCP_Set(31,0,31); //HZK?
                    iLength  = iModbusTCP_Get(31,1,31); //HZK?
//                    brequest = true;

                }
            }
            {
                if (not brequest||t-t_OeK>30)
                {
                    brequest = false;
                    if (e3dc_config.debug)
                        printf("BGE");
                    iLength = iModbusTCP_Get(2,105,2); // Alle Register auf einmal abfragen
                    if (e3dc_config.debug)
                        printf("AGE");
                    myiLength = iLength;
                }
            }
        }
        else
            if (brequest)
            {
                if (e3dc_config.debug) printf("ÖKd%i",now-t_OeK);
                if (isocket > 0&&iLength < 0)
                    iLength = SocketRecvData(isocket,&receive[0],receive.size());
                if (e3dc_config.debug) printf("ÖKe%i",receive.size());
                if (iLength > 0)
                {
                    if (iLength > 100)
                        t_OeK = now;
                    int x2 = 9;
                    int x3 = 0;
                    x1 = receive[0]; // Startregister tan
                    iRegister = receive[0]; // Startregister tan
//                    x3 = x1;
                    for (x3=0;x3<oekofen.size()&&oekofen[x3] != x1;x3++);
                    
                    if (receive[7]==3)
                        while (x2 < iLength&&x3<oekofen.size())
                        {
//                            if (e3dc_config.debug) printf("ÖKe%i",x3);

                            if (oekofen[x3] == x1) // suchen der gewünschten register
                            {
                                temp[x3] = (receive[x2]*256+receive[x2+1]);
                                x3++;
                            }
                            WWTemp = float(receive[x2]*256+receive[x2+1])/10;
                            x1++;x2++;x2++;
                        }
                    else
                        WWTemp = float(receive[10]*256+receive[11])/10;
                    
                    //                SocketClose(isocket);
                    if (e3dc_config.debug) printf("ÖKf%i",x1);
                    SocketClose(isocket);
                    isocket = -1;
                    brequest = false;
                } else
//                    if (iLength <= 0)
                    {
                        SocketClose(isocket);
                        isocket = -1;
                        brequest = false;
                    }

            }}
    return iLength;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x2250
movq (%rbx), %rsi
subq 0x32a87(%rip), %rsi     # 0x37d78
leaq 0x2677a(%rip), %rdi     # 0x2ba72
xorl %eax, %eax
callq 0x2040
movq (%rbx), %rax
movq 0x32a6f(%rip), %rdx     # 0x37d78
movq %rax, %rcx
subq %rdx, %rcx
cmpq $0x29, %rcx
jl 0x534d
testq %rdx, %rdx
setle %dl
cmpq $0x12d, %rcx            # imm = 0x12D
setb %cl
orb %dl, %cl
jne 0x5330
movb $0x64, 0x31b2a(%rip)    # 0x36e5a
movq %rax, 0x32a41(%rip)     # 0x37d78
movl 0x32a2b(%rip), %edi     # 0x37d68
testl %edi, %edi
jle 0x534d
callq 0x1d6f4
orl $-0x1, 0x32a1b(%rip)    # 0x37d68
cmpb $0x1, 0x31af1(%rip)     # 0x36e45
jne 0x536f
movq (%rsp), %rsi
subq 0x32a0f(%rip), %rsi     # 0x37d70
leaq 0x26710(%rip), %rdi     # 0x2ba78
xorl %eax, %eax
callq 0x2040
cmpb $0x0, 0x329f6(%rip)     # 0x37d6c
jne 0x538d
movq (%rsp), %rax
subq 0x329ed(%rip), %rax     # 0x37d70
cmpq $0xb, %rax
jl 0x585b
cmpl $0x0, 0x329d4(%rip)     # 0x37d68
movb 0x31aab(%rip), %al      # 0x36e45
jg 0x5426
testb $0x1, %al
je 0x53bd
movq (%rsp), %rsi
subq 0x329c9(%rip), %rsi     # 0x37d78
leaq 0x266c9(%rip), %rdi     # 0x2ba7f
xorl %eax, %eax
callq 0x2040
leaq 0x328dc(%rip), %rdi     # 0x37ca0
leaq 0x31575(%rip), %rsi     # 0x36940
xorl %eax, %eax
callq 0x2050
cmpb $0x1, 0x31a6c(%rip)     # 0x36e45
jne 0x53e9
leaq 0x2665d(%rip), %rdi     # 0x2ba3f
xorl %eax, %eax
callq 0x2040
leaq 0x328b0(%rip), %rdi     # 0x37ca0
movl $0x1f6, %esi            # imm = 0x1F6
callq 0x1d43e
movl %eax, 0x32968(%rip)     # 0x37d68
movb 0x31a3f(%rip), %al      # 0x36e45
cmpb $0x1, %al
jne 0x541e
leaq 0x26632(%rip), %rdi     # 0x2ba43
xorl %eax, %eax
callq 0x2040
movb 0x31a27(%rip), %al      # 0x36e45
andq $0x0, 0x3281a(%rip)     # 0x37c40
testb $0x1, %al
je 0x5443
movq (%rsp), %rsi
subq 0x32943(%rip), %rsi     # 0x37d78
leaq 0x2664a(%rip), %rdi     # 0x2ba86
xorl %eax, %eax
callq 0x2040
movl 0x3291f(%rip), %edi     # 0x37d68
movb 0x3291d(%rip), %al      # 0x37d6c
testl %edi, %edi
jle 0x56b2
testb $0x1, %al
jne 0x56ba
movq (%rsp), %rsi
movq %rsi, %rax
subq 0x32903(%rip), %rax     # 0x37d70
cmpq $0xb, %rax
jl 0x585b
movq %rsi, 0x328f2(%rip)     # 0x37d70
cmpb $0x1, 0x319c0(%rip)     # 0x36e45
jne 0x549c
subq 0x328ea(%rip), %rsi     # 0x37d78
leaq 0x265f8(%rip), %rdi     # 0x2ba8d
xorl %eax, %eax
callq 0x2040
leaq 0x327bd(%rip), %rdi     # 0x37c60
pushq $0xc
popq %rsi
callq 0x12422
cmpb $0x1, 0x31993(%rip)     # 0x36e45
jne 0x54c2
leaq 0x265da(%rip), %rdi     # 0x2ba95
xorl %eax, %eax
callq 0x2040
leaq 0x327af(%rip), %rdi     # 0x37c78
movl $0x400, %esi            # imm = 0x400
callq 0x12422
cmpb $0x1, 0x3196b(%rip)     # 0x36e45
jne 0x54ea
leaq 0x265b1(%rip), %rdi     # 0x2ba94
xorl %eax, %eax
callq 0x2040
cmpw $0x0, 0x328a8(%rip)     # 0x37d9a
jle 0x5b54
movq 0x32879(%rip), %rax     # 0x37d78
cmpb $0x0, 0x32866(%rip)     # 0x37d6c
jne 0x5b64
movq (%rsp), %rdx
movq %rdx, %rcx
subq %rax, %rcx
cmpq $0x13, %rcx
jg 0x5b54
movq 0x30ef1(%rip), %rax     # 0x36418
cmpq %rax, 0x30ef2(%rip)     # 0x36420
je 0x5914
movslq 0x326cd(%rip), %rcx     # 0x37c08
imulq $0x70, %rcx, %rdi
leaq (%rax,%rdi), %rcx
movq %rdx, %rsi
subq (%rax,%rdi), %rsi
cmpq $0x12b, %rsi            # imm = 0x12B
jg 0x5594
movss 0x68(%rcx), %xmm0
ucomiss 0x25dc1(%rip), %xmm0    # 0x2b320
jbe 0x5594
movslq 0x32688(%rip), %rdi     # 0x37bf0
imulq $0x70, %rdi, %rdi
movq %rdx, %r8
subq (%rax,%rdi), %r8
cmpq $0x12b, %r8             # imm = 0x12B
jg 0x5594
addq %rax, %rdi
movss 0x68(%rdi), %xmm1
xorps %xmm2, %xmm2
ucomiss %xmm2, %xmm1
jbe 0x5594
movss %xmm0, 0x30d94(%rip)    # 0x36328
movq 0x30e65(%rip), %rdi     # 0x36400
cmpq %rdi, 0x30e66(%rip)     # 0x36408
je 0x55e4
movss 0x8(%rdi), %xmm0
movss 0x30d77(%rip), %xmm1    # 0x36328
addss %xmm0, %xmm1
mulss 0x25d67(%rip), %xmm1    # 0x2b324
movss %xmm1, 0x30d63(%rip)    # 0x36328
cmpq $0x12c, %rsi            # imm = 0x12C
jg 0x55dc
movss 0x25d4a(%rip), %xmm1    # 0x2b320
ucomiss 0x68(%rcx), %xmm1
jbe 0x55e4
movss %xmm0, 0x30d44(%rip)    # 0x36328
movslq 0x32609(%rip), %r8      # 0x37bf4
imulq $0x70, %r8, %r8
movq %rdx, %r9
subq (%rax,%r8), %r9
cmpq $0x12b, %r9             # imm = 0x12B
jg 0x5610
addq %rax, %r8
movss 0x68(%r8), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
ja 0x5644
movslq 0x325f5(%rip), %r8      # 0x37c0c
imulq $0x70, %r8, %r8
movq %rdx, %r9
subq (%rax,%r8), %r9
cmpq $0x12b, %r9             # imm = 0x12B
jg 0x5868
addq %rax, %r8
movss 0x68(%r8), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x5868
movslq 0x325a5(%rip), %r8      # 0x37bf0
imulq $0x70, %r8, %r8
subq (%rax,%r8), %rdx
cmpq $0x12b, %rdx            # imm = 0x12B
jg 0x5868
cmpq $0x12b, %rsi            # imm = 0x12B
jg 0x5868
addq %r8, %rax
movss 0x68(%rax), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x5868
movss 0x68(%rcx), %xmm0
ucomiss 0x25c96(%rip), %xmm0    # 0x2b320
jbe 0x5868
addss 0x8(%rdi), %xmm0
mulss 0x25c87(%rip), %xmm0    # 0x2b324
addss 0x25c77(%rip), %xmm0    # 0x2b31c
movss %xmm0, 0x30c7b(%rip)    # 0x36328
jmp 0x5870
testb $0x1, %al
je 0x585b
cmpb $0x1, 0x31784(%rip)     # 0x36e45
jne 0x56e2
movq (%rsp), %rsi
subq 0x326aa(%rip), %rsi     # 0x37d78
leaq 0x263b8(%rip), %rdi     # 0x2ba8d
xorl %eax, %eax
callq 0x2040
movl 0x32686(%rip), %edi     # 0x37d68
testl %edi, %edi
setg %cl
movq 0x32552(%rip), %rax     # 0x37c40
testq %rax, %rax
sets %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x5718
movq 0x32576(%rip), %rsi     # 0x37c78
movl 0x32578(%rip), %edx     # 0x37c80
subl %esi, %edx
callq 0x1d758
cltq
movq %rax, 0x32528(%rip)     # 0x37c40
cmpb $0x1, 0x31726(%rip)     # 0x36e45
jne 0x5744
movq 0x32558(%rip), %rsi     # 0x37c80
subq 0x32549(%rip), %rsi     # 0x37c78
leaq 0x2636a(%rip), %rdi     # 0x2baa0
xorl %eax, %eax
callq 0x2040
movq 0x324fc(%rip), %rax     # 0x37c40
testq %rax, %rax
jle 0x5842
cmpq $0x65, %rax
jb 0x575e
movq (%rsp), %rcx
movq %rcx, 0x3261a(%rip)     # 0x37d78
movq 0x32513(%rip), %rcx     # 0x37c78
movzbl (%rcx), %esi
movl %esi, 0x324e2(%rip)     # 0x37c50
leaq 0x30b5f(%rip), %r8      # 0x362d4
xorl %edi, %edi
pushq $0x14
popq %rdx
cmpq $0x14, %rdi
je 0x5790
cmpl %esi, (%r8)
je 0x578e
incq %rdi
addq $0x4, %r8
jmp 0x577a
movl %edi, %edx
cmpb $0x3, 0x7(%rcx)
jne 0x580c
pushq $0x9
popq %rdi
leaq 0x30b34(%rip), %r8      # 0x362d4
leaq 0x325d9(%rip), %r9      # 0x37d80
movss 0x25b85(%rip), %xmm0    # 0x2b334
cmpq %rdi, %rax
jle 0x582b
cmpl $0x13, %edx
ja 0x582b
movslq %edx, %rbx
movzbl (%rcx,%rdi), %r10d
movzwl %r10w, %r10d
cmpl (%r8,%rbx,4), %esi
jne 0x57e3
movl %r10d, %ebp
shll $0x8, %ebp
movzbl 0x1(%rcx,%rdi), %r11d
orl %r11d, %ebp
movw %bp, (%r9,%rbx,2)
incl %edx
jmp 0x57e8
movb 0x1(%rcx,%rdi), %r11b
shll $0x8, %r10d
movzbl %r11b, %r11d
orl %r10d, %r11d
cvtsi2ss %r11d, %xmm1
divss %xmm0, %xmm1
movss %xmm1, 0x31060(%rip)    # 0x36864
incl %esi
addq $0x2, %rdi
jmp 0x57af
movzwl 0xa(%rcx), %eax
rolw $0x8, %ax
movzwl %ax, %eax
cvtsi2ss %eax, %xmm0
divss 0x25b11(%rip), %xmm0    # 0x2b334
movss %xmm0, 0x31039(%rip)    # 0x36864
cmpb $0x1, 0x31613(%rip)     # 0x36e45
jne 0x5842
leaq 0x2626c(%rip), %rdi     # 0x2baa7
xorl %eax, %eax
callq 0x2040
movl 0x32520(%rip), %edi     # 0x37d68
callq 0x1d6f4
orl $-0x1, 0x32514(%rip)    # 0x37d68
movb $0x0, 0x32511(%rip)     # 0x37d6c
movl 0x323df(%rip), %eax     # 0x37c40
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movss 0x30ab8(%rip), %xmm0    # 0x36328
ucomiss 0x25ab1(%rip), %xmm0    # 0x2b328
jbe 0x5914
movss 0x316b3(%rip), %xmm1    # 0x36f38
ucomiss %xmm0, %xmm1
seta %cl
movzwl 0x32510(%rip), %eax     # 0x37da2
testw %ax, %ax
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x58dc
pushq $0x65
popq %rbx
pushq $0x1
popq %rsi
movl %ebx, %edi
callq 0x4f92
movq %rax, 0x3238d(%rip)     # 0x37c40
movl %ebx, %edi
xorl %esi, %esi
movl %ebx, %edx
callq 0x516f
movq %rax, 0x3237b(%rip)     # 0x37c40
movss 0x30a5b(%rip), %xmm0    # 0x36328
movss 0x31663(%rip), %xmm1    # 0x36f38
movzwl 0x324c6(%rip), %eax     # 0x37da2
addss 0x25a48(%rip), %xmm1    # 0x2b32c
ucomiss %xmm1, %xmm0
jbe 0x5914
cmpw $0x1, %ax
jne 0x5914
pushq $0x65
popq %rbx
movl %ebx, %edi
xorl %esi, %esi
callq 0x4f92
movq %rax, 0x3233e(%rip)     # 0x37c40
movl %ebx, %edi
xorl %esi, %esi
movl %ebx, %edx
callq 0x516f
movq %rax, 0x3232c(%rip)     # 0x37c40
cmpw $0x0, 0x32466(%rip)     # 0x37d82
je 0x5bd4
cmpw $0x0, 0x32464(%rip)     # 0x37d8e
je 0x5c63
cmpw $0x1, 0x3244a(%rip)     # 0x37d82
jne 0x5a42
cmpl $0x1, 0x309eb(%rip)     # 0x36330
sete %cl
movzwl 0x32453(%rip), %eax     # 0x37da2
testw %ax, %ax
sete %dl
andb %cl, %dl
cmpw $0x12c, 0x3243c(%rip)   # imm = 0x12C
setl %cl
testb %cl, %dl
jne 0x5a1c
testb $0x1, 0x32436(%rip)     # 0x37da8
jne 0x5a1c
movq (%rsp), %rdx
movslq 0x3226d(%rip), %rsi     # 0x37bf0
movq 0x30a8e(%rip), %rcx     # 0x36418
imulq $0x70, %rsi, %rsi
movq %rdx, %rdi
subq (%rcx,%rsi), %rdi
cmpq $0x12b, %rdi            # imm = 0x12B
jg 0x59aa
addq %rcx, %rsi
xorps %xmm0, %xmm0
ucomiss 0x68(%rsi), %xmm0
ja 0x5a1c
movslq 0x32263(%rip), %rsi     # 0x37c14
imulq $0x70, %rsi, %rsi
movq %rdx, %rdi
subq (%rcx,%rsi), %rdi
cmpq $0x12b, %rdi            # imm = 0x12B
jg 0x59e3
addq %rcx, %rsi
testw %ax, %ax
sete %dil
movss 0x68(%rsi), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
seta %sil
testb %dil, %sil
jne 0x5a1c
movslq 0x3222e(%rip), %rsi     # 0x37c18
imulq $0x70, %rsi, %rsi
subq (%rcx,%rsi), %rdx
cmpq $0x63, %rdx
jg 0x5a42
addq %rsi, %rcx
testw %ax, %ax
sete %al
movss 0x68(%rcx), %xmm0
ucomiss 0x25923(%rip), %xmm0    # 0x2b330
setnp %cl
sete %dl
andb %cl, %dl
andb %al, %dl
cmpb $0x1, %dl
jne 0x5a42
pushq $0xb
popq %rbx
movl %ebx, %edi
xorl %esi, %esi
callq 0x4f92
movq %rax, 0x32211(%rip)     # 0x37c40
pushq $0x1
popq %rsi
movl %ebx, %edi
movl %ebx, %edx
callq 0x516f
movq %rax, 0x321fe(%rip)     # 0x37c40
cmpw $0x1, 0x32344(%rip)     # 0x37d8e
jne 0x5b54
cmpl $0x1, 0x308d9(%rip)     # 0x36330
sete %cl
movzwl 0x32341(%rip), %eax     # 0x37da2
testw %ax, %ax
sete %dl
andb %cl, %dl
cmpw $0x12c, 0x3232a(%rip)   # imm = 0x12C
setl %cl
testb %cl, %dl
jne 0x5b2e
testb $0x1, 0x32328(%rip)     # 0x37dac
jne 0x5b2e
movq (%rsp), %rdx
movslq 0x3215b(%rip), %rsi     # 0x37bf0
movq 0x3097c(%rip), %rcx     # 0x36418
imulq $0x70, %rsi, %rsi
movq %rdx, %rdi
subq (%rcx,%rsi), %rdi
cmpq $0x12b, %rdi            # imm = 0x12B
jg 0x5abc
addq %rcx, %rsi
xorps %xmm0, %xmm0
ucomiss 0x68(%rsi), %xmm0
ja 0x5b2e
movslq 0x32151(%rip), %rsi     # 0x37c14
imulq $0x70, %rsi, %rsi
movq %rdx, %rdi
subq (%rcx,%rsi), %rdi
cmpq $0x12b, %rdi            # imm = 0x12B
jg 0x5af5
addq %rcx, %rsi
testw %ax, %ax
sete %dil
movss 0x68(%rsi), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
seta %sil
testb %dil, %sil
jne 0x5b2e
movslq 0x3211c(%rip), %rsi     # 0x37c18
imulq $0x70, %rsi, %rsi
subq (%rcx,%rsi), %rdx
cmpq $0x63, %rdx
jg 0x5b54
addq %rsi, %rcx
testw %ax, %ax
sete %al
movss 0x68(%rcx), %xmm0
ucomiss 0x25811(%rip), %xmm0    # 0x2b330
setnp %cl
sete %dl
andb %cl, %dl
andb %al, %dl
cmpb $0x1, %dl
jne 0x5b54
pushq $0x1f
popq %rbx
movl %ebx, %edi
xorl %esi, %esi
callq 0x4f92
movq %rax, 0x320ff(%rip)     # 0x37c40
pushq $0x1
popq %rsi
movl %ebx, %edi
movl %ebx, %edx
callq 0x516f
movq %rax, 0x320ec(%rip)     # 0x37c40
cmpb $0x1, 0x32211(%rip)     # 0x37d6c
jne 0x5b78
movq 0x32214(%rip), %rax     # 0x37d78
movq 0x3206d(%rip), %rcx     # 0x37bd8
subq %rax, %rcx
cmpq $0x1f, %rcx
jl 0x585b
movb $0x0, 0x321ed(%rip)     # 0x37d6c
cmpb $0x1, 0x312bf(%rip)     # 0x36e45
jne 0x5b96
leaq 0x25f09(%rip), %rdi     # 0x2ba98
xorl %eax, %eax
callq 0x2040
pushq $0x69
popq %rsi
pushq $0x2
popq %rdi
movl %edi, %edx
callq 0x516f
movq %rax, 0x32096(%rip)     # 0x37c40
cmpb $0x1, 0x31294(%rip)     # 0x36e45
jne 0x5bc8
leaq 0x25ee2(%rip), %rdi     # 0x2ba9c
xorl %eax, %eax
callq 0x2040
movq 0x32078(%rip), %rax     # 0x37c40
movq %rax, 0x32079(%rip)     # 0x37c48
jmp 0x585b
movslq 0x32039(%rip), %rcx     # 0x37c14
movq 0x30836(%rip), %rax     # 0x36418
imulq $0x70, %rcx, %rcx
movss 0x68(%rax,%rcx), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x5cf2
jp 0x5cf2
cmpw $0x0, 0x3219c(%rip)     # 0x37da2
setg %al
cmpl $0x0, 0x30720(%rip)     # 0x36330
sete %cl
cmpw $0x12d, 0x32180(%rip)   # imm = 0x12D
setge %dl
orb %cl, %dl
movb 0x32181(%rip), %cl      # 0x37da8
xorb $0x1, %cl
testb %cl, %dl
jne 0x5c36
testb %al, %al
je 0x5922
pushq $0xb
popq %rbx
pushq $0x1
popq %rbp
movl %ebx, %edi
movl %ebp, %esi
callq 0x4f92
movq %rax, 0x31ff4(%rip)     # 0x37c40
movl %ebx, %edi
movl %ebp, %esi
movl %ebx, %edx
callq 0x516f
movq %rax, 0x31fe2(%rip)     # 0x37c40
jmp 0x5922
movslq 0x31faa(%rip), %rcx     # 0x37c14
movq 0x307a7(%rip), %rax     # 0x36418
imulq $0x70, %rcx, %rcx
movss 0x68(%rax,%rcx), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x5d3b
jp 0x5d3b
cmpw $0x0, 0x3210d(%rip)     # 0x37da2
setg %al
cmpl $0x0, 0x30691(%rip)     # 0x36330
sete %cl
cmpw $0x12d, 0x320f1(%rip)   # imm = 0x12D
setge %dl
orb %cl, %dl
movb 0x320f6(%rip), %cl      # 0x37dac
xorb $0x1, %cl
testb %cl, %dl
jne 0x5cc5
testb %al, %al
je 0x5930
pushq $0x1f
popq %rbx
pushq $0x1
popq %rbp
movl %ebx, %edi
movl %ebp, %esi
callq 0x4f92
movq %rax, 0x31f65(%rip)     # 0x37c40
movl %ebx, %edi
movl %ebp, %esi
movl %ebx, %edx
callq 0x516f
movq %rax, 0x31f53(%rip)     # 0x37c40
jmp 0x5930
movq (%rsp), %rdx
movslq 0x31f1b(%rip), %rcx     # 0x37c18
imulq $0x70, %rcx, %rcx
subq (%rax,%rcx), %rdx
cmpq $0x63, %rdx
jg 0x5922
addq %rcx, %rax
movss 0x68(%rax), %xmm0
ucomiss 0x25612(%rip), %xmm0    # 0x2b330
jne 0x5d26
jnp 0x5922
cmpw $0x0, 0x32074(%rip)     # 0x37da2
jne 0x5922
xorl %eax, %eax
jmp 0x5c09
movq (%rsp), %rdx
movslq 0x31ed2(%rip), %rcx     # 0x37c18
imulq $0x70, %rcx, %rcx
subq (%rax,%rcx), %rdx
cmpq $0x63, %rdx
jg 0x5930
addq %rcx, %rax
movss 0x68(%rax), %xmm0
ucomiss 0x255c9(%rip), %xmm0    # 0x2b330
jne 0x5d6f
jnp 0x5930
cmpw $0x0, 0x3202b(%rip)     # 0x37da2
jne 0x5930
xorl %eax, %eax
jmp 0x5c98