[*] Binary protection state of fwbacnet

  
  	No RELRO       No Canary found   NX enabled   No PIE       No RPATH     No RUNPATH   Symbols


[*] Function printf tear down of fwbacnet

    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/mnt/sedona/fwbacnet @ 0x40afcc */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.bvlc_fdt_forward_npdu ()         | void bvlc_fdt_forward_npdu () {
    0x0040afcc addiu sp, sp, -0x630              |     
    0x0040afd0 sw s2, 0x61c(sp)                  |     *(var_61ch) = s2;
    0x0040afd4 sw s1, 0x618(sp)                  |     *(var_618h) = s1;
    0x0040afd8 sw s0, 0x614(sp)                  |     *(var_614h) = s0;
    0x0040afdc move s1, a2                       |     s1 = a2;
    0x0040afe0 move s0, a1                       |     s0 = a1;
    0x0040afe4 move s2, a0                       |     s2 = a0;
    0x0040afe8 addiu a2, zero, 0x5e2             |     a2 = 0x5e2;
    0x0040afec addiu a0, sp, 0x18                |     a0 = sp + 0x18;
    0x0040aff0 move a1, zero                     |     a1 = 0;
    0x0040aff4 sw ra, 0x62c(sp)                  |     *(var_62ch) = ra;
    0x0040aff8 sw s4, 0x624(sp)                  |     *(var_624h) = s4;
    0x0040affc sw s3, 0x620(sp)                  |     *(var_620h) = s3;
    0x0040b000 sw s5, 0x628(sp)                  |     *(var_628h) = s5;
    0x0040b004 jal 0x436800                      |     fcn_00436800 ();
    0x0040b008 move a3, s1                       |     a3 = s1;
    0x0040b00c move a2, s0                       |     a2 = s0;
    0x0040b010 move a1, s2                       |     a1 = s2;
    0x0040b014 addiu a0, sp, 0x18                |     a0 = sp + 0x18;
    0x0040b018 sw zero, 0x5fc(sp)                |     *(var_5fch) = 0;
    0x0040b01c sw zero, 0x600(sp)                |     *(var_600h) = 0;
    0x0040b020 sw zero, 0x604(sp)                |     *(var_604h) = 0;
    0x0040b024 sw zero, 0x608(sp)                |     *(var_608h) = 0;
    0x0040b028 lui s0, 0x45                      |     s0 = 0x450000;
    0x0040b02c jal 0x40a7f4                      |     sym_bvlc_encode_forwarded_npdu ();
    0x0040b030 lui s1, 0x45                      |     s1 = 0x450000;
    0x0040b034 lui s3, 0x43                      |     s3 = 0x430000;
                                                 |     /* obj.FD_Table */
    0x0040b038 addiu s0, s0, -0x4f94             |     s0 += -0x4f94;
                                                 |     /* obj.BBMD_Table */
    0x0040b03c addiu s1, s1, -0x4794             |     s1 += -0x4794;
    0x0040b040 andi s4, v0, 0xffff               |     s4 = v0 & 0xffff;
                                                 |     /* str.BVLC:_FDT_Sent_Forwarded_NPDU_to__s:_04X_n */
    0x0040b044 addiu s3, s3, 0xcdc               |     s3 += 0xcdc;
    0x0040b048 b 0x40b058                        |     
                                                 |     while (v0 == 0) {
                                                 | label_0:
    0x0040b04c addiu s0, s0, 0x10                |         s0 += 0x10;
                                                 |         if (s0 == s1) {
                                                 | label_3:
    0x0040b050 beq s0, s1, 0x40b100              |             goto label_4;
                                                 |         }
    0x0040b054 nop                               |         
                                                 | label_1:
    0x0040b058 lbu v0, (s0)                      |         v0 = *(s0);
    0x0040b05c nop                               |         
    0x0040b060 beqz v0, 0x40b04c                 |         
                                                 |     }
    0x0040b064 nop                               |     
    0x0040b068 lw v0, 0xc(s0)                    |     v0 = *((s0 + 3));
    0x0040b06c nop                               |     
                                                 |     if (v0 == 0) {
    0x0040b070 beqz v0, 0x40b04c                 |         goto label_0;
                                                 |     }
    0x0040b074 nop                               |     
    0x0040b078 lw s5, 4(s0)                      |     s5 = *((s0 + 1));
    0x0040b07c lhu v0, 8(s0)                     |     v0 = *((s0 + 4));
    0x0040b080 sw s5, 0x600(sp)                  |     *(var_600h) = s5;
    0x0040b084 sh v0, 0x5fe(sp)                  |     *(var_5feh) = v0;
    0x0040b088 jal 0x40a220                      |     sym_bip_get_addr ();
                                                 |     if (s5 == v0) {
    0x0040b08c beq s5, v0, 0x40b124              |         goto label_5;
                                                 |     }
    0x0040b090 nop                               |     
                                                 | label_2:
    0x0040b094 lw v1, 0x600(sp)                  |     v1 = *(var_600h);
    0x0040b098 lw v0, 4(s2)                      |     v0 = *((s2 + 1));
    0x0040b09c nop                               |     
    0x0040b0a0 move a2, s4                       |     a2 = s4;
                                                 |     if (v1 != v0) {
    0x0040b0a4 bne v1, v0, 0x40b0bc              |         goto label_6;
                                                 |     }
    0x0040b0a8 lhu v1, 0x5fe(sp)                 |     v1 = *(var_5feh);
    0x0040b0ac lhu v0, 2(s2)                     |     v0 = *((s2 + 1));
    0x0040b0b0 nop                               |     
                                                 |     if (v1 == v0) {
    0x0040b0b4 beq v1, v0, 0x40b04c              |         goto label_0;
                                                 |     }
    0x0040b0b8 nop                               |     
                                                 | label_6:
    0x0040b0bc addiu a1, sp, 0x18                |     a1 = sp + 0x18;
    0x0040b0c0 addiu a0, sp, 0x5fc               |     a0 = sp + 0x5fc;
    0x0040b0c4 jal 0x40ab5c                      |     sym_bvlc_send_mpdu ();
    0x0040b0c8 lw a0, 0x600(sp)                  |     a0 = *(var_600h);
    0x0040b0cc addiu s0, s0, 0x10                |     s0 += 0x10;
    0x0040b0d0 jal 0x4365a0                      |     fcn_004365a0 ();
    0x0040b0d4 lhu v1, 0x5fe(sp)                 |     v1 = *(var_5feh);
    0x0040b0d8 move a1, v0                       |     a1 = v0;
    0x0040b0dc andi a2, v1, 0xffff               |     a2 = v1 & 0xffff;
    0x0040b0e0 srl a2, a2, 8                     |     a2 >>= 8;
    0x0040b0e4 sll v1, v1, 8                     |     v1 <<= 8;
    0x0040b0e8 or a2, v1, a2                     |     a2 = v1 | a2;
    0x0040b0ec andi a2, a2, 0xffff               |     a2 &= 0xffff;
    0x0040b0f0 move a0, s3                       |     a0 = s3;
    0x0040b0f4 jal 0x40e7c0                      |     sym_debug_printf ()
                                                 |     if (s0 != s1) {
    0x0040b0f8 bne s0, s1, 0x40b058              |         goto label_1;
                                                 |     }
    0x0040b0fc nop                               |     
                                                 | label_4:
    0x0040b100 lw ra, 0x62c(sp)                  |     ra = *(var_62ch);
    0x0040b104 lw s5, 0x628(sp)                  |     s5 = *(var_628h);
    0x0040b108 lw s4, 0x624(sp)                  |     s4 = *(var_624h);
    0x0040b10c lw s3, 0x620(sp)                  |     s3 = *(var_620h);
    0x0040b110 lw s2, 0x61c(sp)                  |     s2 = *(var_61ch);
    0x0040b114 lw s1, 0x618(sp)                  |     s1 = *(var_618h);
    0x0040b118 lw s0, 0x614(sp)                  |     s0 = *(var_614h);
    0x0040b11c addiu sp, sp, 0x630               |     
    0x0040b120 jr ra                             |     return v1;
                                                 | label_5:
    0x0040b124 lhu s5, 0x5fe(sp)                 |     s5 = *(var_5feh);
    0x0040b128 jal 0x40a258                      |     sym_bip_get_port ();
    0x0040b12c nop                               |     
                                                 |     if (s5 != v0) {
    0x0040b130 bne s5, v0, 0x40b094              |         goto label_2;
                                                 |     }
    0x0040b134 nop                               |     
    0x0040b138 addiu s0, s0, 0x10                |     s0 += 0x10;
    0x0040b13c b 0x40b050                        |     goto label_3;
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/mnt/sedona/fwbacnet @ 0x40bc78 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.bvlc_send_pdu ()             | void bvlc_send_pdu () {
    0x0040bc78 addiu sp, sp, -0x630          |     
    0x0040bc7c move a1, zero                 |     a1 = 0;
    0x0040bc80 sw s3, 0x628(sp)              |     *(var_628h) = s3;
    0x0040bc84 sw s0, 0x61c(sp)              |     *(var_61ch) = s0;
    0x0040bc88 move s3, a2                   |     s3 = a2;
    0x0040bc8c move s0, a0                   |     s0 = a0;
    0x0040bc90 addiu a2, zero, 0x5e2         |     a2 = 0x5e2;
    0x0040bc94 addiu a0, sp, 0x18            |     a0 = sp + 0x18;
    0x0040bc98 sw s2, 0x624(sp)              |     *(var_624h) = s2;
    0x0040bc9c sw ra, 0x62c(sp)              |     *(var_62ch) = ra;
    0x0040bca0 sw s1, 0x620(sp)              |     *(var_620h) = s1;
    0x0040bca4 move s2, a3                   |     s2 = a3;
    0x0040bca8 sw zero, 0x5fc(sp)            |     *(var_5fch) = 0;
    0x0040bcac sw zero, 0x600(sp)            |     *(var_600h) = 0;
    0x0040bcb0 sw zero, 0x604(sp)            |     *(var_604h) = 0;
    0x0040bcb4 sw zero, 0x608(sp)            |     *(var_608h) = 0;
    0x0040bcb8 jal 0x436800                  |     fcn_00436800 ();
    0x0040bcbc lhu v0, 8(s0)                 |     v0 = *((s0 + 4));
    0x0040bcc0 addiu a0, zero, -0x7f         |     a0 = -0x7f;
    0x0040bcc4 ori v1, zero, 0xffff          |     v1 = 0xffff;
    0x0040bcc8 sh zero, 0x610(sp)            |     *(var_610h) = 0;
    0x0040bccc sb a0, 0x18(sp)               |     *(var_18h) = a0;
                                             |     if (v0 == v1) {
    0x0040bcd0 beq v0, v1, 0x40bcec          |         goto label_2;
                                             |     }
                                             |     if (v0 == 0) {
    0x0040bcd4 beqz v0, 0x40bdb0             |         goto label_3;
                                             |     }
    0x0040bcd8 nop                           |     
    0x0040bcdc lbu v0, 0xa(s0)               |     v0 = *((s0 + 10));
    0x0040bce0 nop                           |     
                                             |     if (v0 != 0) {
    0x0040bce4 bnez v0, 0x40bdb0             |         goto label_3;
                                             |     }
    0x0040bce8 nop                           |     
                                             |     do {
                                             | label_2:
    0x0040bcec lui v0, 0x45                  |         v0 = Remote_BBMD;
                                             |         /* obj.Remote_BBMD */
    0x0040bcf0 addiu v0, v0, -0x3f94         |         
    0x0040bcf4 lhu v1, 2(v0)                 |         v1 = *((v0 + 1));
    0x0040bcf8 nop                           |         
                                             |         if (v1 != 0) {
    0x0040bcfc beqz v1, 0x40bd18             |             
    0x0040bd00 nop                           |             
    0x0040bd04 lui a0, 0x45                  |             a0 = 0x450000;
    0x0040bd08 lhu a1, -0x4fa0(a0)           |             a1 = *((a0 - 10192));
    0x0040bd0c addiu a0, zero, 2             |             a0 = 2;
    0x0040bd10 addiu a1, zero, 9             |             a1 = 9;
                                             |             if (a1 == a0) {
    0x0040bd14 beq a1, a0, 0x40bdf0          |                 goto label_4;
                                             |             }
                                             |         }
    0x0040bd18 jal 0x40a23c                  |         sym_bip_get_broadcast_addr ();
    0x0040bd1c nop                           |         
    0x0040bd20 sw v0, 0x60c(sp)              |         *(var_60ch) = v0;
    0x0040bd24 jal 0x40a258                  |         sym_bip_get_port ();
    0x0040bd28 lui a0, 0x43                  |         a0 = 0x430000;
    0x0040bd2c sh v0, 0x610(sp)              |         *(var_610h) = v0;
                                             |         /* str.BVLC:_Sent_Original_Broadcast_NPDU._n */
    0x0040bd30 addiu a0, a0, 0xf64           |         a0 += 0xf64;
    0x0040bd34 addiu v0, zero, 0xb           |         v0 = 0xb;
    0x0040bd38 sb v0, 0x19(sp)               |         *(var_19h) = v0;
    0x0040bd3c jal 0x40e7c0                  |         sym_debug_printf ()
                                             | label_0:
    0x0040bd40 lw v0, 0x60c(sp)              |         v0 = *(var_60ch);
    0x0040bd44 andi s0, s2, 0xffff           |         s0 = s2 & 0xffff;
    0x0040bd48 sw v0, 0x600(sp)              |         *(var_600h) = v0;
    0x0040bd4c addiu a1, s0, 4               |         a1 = s0 + 4;
    0x0040bd50 lhu v0, 0x610(sp)             |         v0 = *(var_610h);
    0x0040bd54 andi a1, a1, 0xffff           |         a1 &= 0xffff;
    0x0040bd58 addiu a0, sp, 0x1a            |         a0 = sp + 0x1a;
    0x0040bd5c sh v0, 0x5fe(sp)              |         *(var_5feh) = v0;
    0x0040bd60 jal 0x408830                  |         sym_encode_unsigned16 ();
    0x0040bd64 addiu v0, v0, 2               |         v0 += 2;
    0x0040bd68 andi s1, v0, 0xffff           |         s1 = v0 & 0xffff;
    0x0040bd6c addiu v0, sp, 0x18            |         v0 = sp + 0x18;
    0x0040bd70 move a2, s2                   |         a2 = s2;
    0x0040bd74 move a1, s3                   |         a1 = s3;
    0x0040bd78 addu a0, v0, s1               |         a0 = v0 + s1;
    0x0040bd7c jal 0x436560                  |         fcn_00436560 ();
    0x0040bd80 addu a2, s0, s1               |         a2 = s0 + s1;
    0x0040bd84 andi a2, a2, 0xffff           |         a2 &= 0xffff;
    0x0040bd88 addiu a1, sp, 0x18            |         a1 = sp + 0x18;
    0x0040bd8c addiu a0, sp, 0x5fc           |         a0 = sp + 0x5fc;
    0x0040bd90 jal 0x40ab5c                  |         sym_bvlc_send_mpdu ();
                                             | label_1:
    0x0040bd94 lw ra, 0x62c(sp)              |         ra = *(var_62ch);
    0x0040bd98 lw s3, 0x628(sp)              |         s3 = *(var_628h);
    0x0040bd9c lw s2, 0x624(sp)              |         s2 = *(var_624h);
    0x0040bda0 lw s1, 0x620(sp)              |         s1 = *(var_620h);
    0x0040bda4 lw s0, 0x61c(sp)              |         s0 = *(var_61ch);
    0x0040bda8 addiu sp, sp, 0x630           |         
    0x0040bdac jr ra                         |         return v0;
                                             | label_3:
    0x0040bdb0 lbu v0, (s0)                  |         v0 = *(s0);
    0x0040bdb4 nop                           |         
    0x0040bdb8 addiu v1, zero, 6             |         v1 = 6;
    0x0040bdbc beqz v0, 0x40bcec             |         
                                             |     } while (v0 == 0);
    0x0040bdc0 addiu a2, sp, 0x610           |     a2 = sp + 0x610;
                                             |     if (v0 == v1) {
    0x0040bdc4 bne v0, v1, 0x40be14          |         
    0x0040bdc8 addiu a1, sp, 0x60c           |         a1 = sp + 0x60c;
    0x0040bdcc addiu a0, s0, 1               |         a0 = s0 + 1;
    0x0040bdd0 jal 0x40a8a8                  |         sym_bvlc_decode_bip_address ();
    0x0040bdd4 lui a0, 0x43                  |         a0 = 0x430000;
    0x0040bdd8 addiu v0, zero, 0xa           |         v0 = 0xa;
                                             |         /* str.BVLC:_Sent_Original_Unicast_NPDU._n */
    0x0040bddc addiu a0, a0, 0xf8c           |         a0 += 0xf8c;
    0x0040bde0 sb v0, 0x19(sp)               |         *(var_19h) = v0;
    0x0040bde4 jal 0x40e7c0                  |         sym_debug_printf ()
    0x0040bde8 b 0x40bd40                    |         goto label_0;
    0x0040bdec nop                           |         
                                             | label_4:
    0x0040bdf0 lw v0, 4(v0)                  |         v0 = *((v0 + 1));
    0x0040bdf4 lui a0, 0x43                  |         a0 = "BVLC: Sent Distribute-Broadcast-to-Network.\n";
                                             |         /* str.BVLC:_Sent_Distribute_Broadcast_to_Network._n */
    0x0040bdf8 addiu a0, a0, 0xf34           |         
    0x0040bdfc sb a1, 0x19(sp)               |         *(var_19h) = a1;
    0x0040be00 sw v0, 0x60c(sp)              |         *(var_60ch) = v0;
    0x0040be04 sh v1, 0x610(sp)              |         *(var_610h) = v1;
    0x0040be08 jal 0x40e7c0                  |         sym_debug_printf ()
    0x0040be0c b 0x40bd40                    |         goto label_0;
    0x0040be10 nop                           |         
                                             |     }
    0x0040be14 lui a0, 0x43                  |     a0 = "bvlc_send_pdu: Invalid dest Bacnet address";
                                             |     /* str.bvlc_send_pdu:_Invalid_dest_Bacnet_address */
    0x0040be18 addiu a0, a0, 0xfb0           |     
    0x0040be1c jal 0x436700                  |     fcn_00436700 ();
    0x0040be20 addiu v0, zero, -1            |     v0 = -1;
    0x0040be24 b 0x40bd94                    |     goto label_1;
                                             | }

[*] Function printf used 5 times fwbacnet