[*] Binary protection state of io2d

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


[*] Function printf tear down of io2d

    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/io2d @ 0x26630 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.generate_service_registry ()     | void generate_service_registry () {
    0x00026630 lui gp, 2                         |     
    0x00026634 addiu gp, gp, 0x6a50              |     
    0x00026638 addu gp, gp, t9                   |     gp += t9;
    0x0002663c addiu sp, sp, -0x68               |     
    0x00026640 lw a0, -0x7fdc(gp)                |     a0 = *(gp);
    0x00026644 sw s6, 0x58(sp)                   |     *(var_58h) = s6;
    0x00026648 lw s6, -0x7984(gp)                |     s6 = *((gp - 7777));
    0x0002664c lw t9, -0x7868(gp)                |     t9 = sym.imp.g_string_new;
    0x00026650 sw gp, 0x28(sp)                   |     *(var_28h) = gp;
    0x00026654 lw v0, (s6)                       |     v0 = *(s6);
    0x00026658 sw ra, 0x64(sp)                   |     *(var_64h) = ra;
    0x0002665c sw s5, 0x54(sp)                   |     *(var_54h) = s5;
    0x00026660 sw s4, 0x50(sp)                   |     *(var_50h) = s4;
    0x00026664 sw s3, 0x4c(sp)                   |     *(var_4ch) = s3;
    0x00026668 sw s2, 0x48(sp)                   |     *(var_48h) = s2;
    0x0002666c sw s0, 0x40(sp)                   |     *(var_40h) = s0;
                                                 |     /* str.__xml_version_1.0__encoding_UTF_8_____n_service_name_com.axis.Configuration.Legacy.IOControl1.IOPort___n___objects__n */
    0x00026670 addiu a0, a0, 0xebc               |     a0 += 0xebc;
    0x00026674 sw fp, 0x60(sp)                   |     *(var_60h) = fp;
    0x00026678 sw s7, 0x5c(sp)                   |     *(var_5ch) = s7;
    0x0002667c sw s1, 0x44(sp)                   |     *(var_44h) = s1;
    0x00026680 sw v0, 0x3c(sp)                   |     *(var_3ch) = v0;
    0x00026684 sw zero, 0x38(sp)                 |     *(var_38h) = 0;
    0x00026688 move s0, zero                     |     s0 = 0;
    0x0002668c jalr t9                           |     t9 ();
    0x00026690 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026694 lw t9, -0x7d50(gp)                |     t9 = sym.io_port_list_length;
    0x00026698 lw s4, -0x7fdc(gp)                |     s4 = *(gp);
    0x0002669c lw s3, -0x7fdc(gp)                |     s3 = *(gp);
    0x000266a0 move s2, v0                       |     s2 = v0;
    0x000266a4 bal 0xfa14                        |     sym_io_port_list_length ();
    0x000266a8 slt v0, s0, v0                    |     v0 = (s0 < v0) ? 1 : 0;
    0x000266ac move s5, zero                     |     s5 = 0;
                                                 |     /* str.ioport */
    0x000266b0 addiu s4, s4, -0x29c0             |     s4 += -0x29c0;
                                                 |     /* str._____object_name__com_axis_Configuration_Legacy_IOControl_IOPort__i___n_______interfaces__n_________interface_name_com.axis.Configuration.Legacy.IOControl1.IOPort__emitspropertieschanged_true_____n_________interface_name_com.axis.Configuration.Legacy.IOControl1.Input__emitspropertieschanged_true_____n_________interface_name_com.axis.Configuration.Legacy.IOControl1.Output__emitspropertieschanged_true_____n________interfaces__n______object__n */
    0x000266b4 addiu s3, s3, 0xf34               |     s3 += 0xf34;
    0x000266b8 lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 == 0) {
    0x000266bc beqz v0, 0x26718                  |         goto label_6;
                                                 |     }
                                                 |     do {
    0x000266c0 lw t9, -0x7e18(gp)                |         t9 = sym.io_port_list_nth_data;
    0x000266c4 move a0, s0                       |         a0 = s0;
    0x000266c8 bal 0xf238                        |         sym_io_port_list_nth_data ();
    0x000266cc move s1, v0                       |         s1 = v0;
    0x000266d0 lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v0 != 0) {
    0x000266d4 beqz v0, 0x26700                  |             
    0x000266d8 lw t9, -0x7f54(gp)                |             t9 = sym.io_port_get_property;
    0x000266dc move a1, s4                       |             a1 = s4;
    0x000266e0 move a0, v0                       |             a0 = v0;
    0x000266e4 bal 0xe530                        |             sym_io_port_get_property ();
    0x000266e8 lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |             if (v0 != 0) {
    0x000266ec bnez v0, 0x26b2c                  |                 goto label_7;
                                                 |             }
                                                 | label_0:
    0x000266f0 lw t9, -0x7f4c(gp)                |             t9 = sym.io_port_unref;
    0x000266f4 move a0, s1                       |             a0 = s1;
    0x000266f8 bal 0xeba4                        |             sym_io_port_unref ();
    0x000266fc lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |         }
    0x00026700 lw t9, -0x7d50(gp)                |         t9 = sym.io_port_list_length;
    0x00026704 addiu s0, s0, 1                   |         s0++;
    0x00026708 bal 0xfa14                        |         sym_io_port_list_length ();
    0x0002670c slt v0, s0, v0                    |         v0 = (s0 < v0) ? 1 : 0;
    0x00026710 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026714 bnez v0, 0x266c0                  |         
                                                 |     } while (v0 != 0);
                                                 | label_6:
    0x00026718 lw a1, -0x7fdc(gp)                |     a1 = *(gp);
                                                 |     if (s5 == 0) {
    0x0002671c beqz s5, 0x26b84                  |         goto label_8;
                                                 |     }
                                                 | label_3:
    0x00026720 lw a1, -0x7fdc(gp)                |     a1 = *(gp);
    0x00026724 lw t9, -0x7b5c(gp)                |     t9 = sym.imp.g_string_append;
                                                 |     /* str.____objects__n__service__n */
    0x00026728 addiu a1, a1, 0x12b0              |     a1 += 0x12b0;
    0x0002672c move a0, s2                       |     a0 = s2;
    0x00026730 jalr t9                           |     t9 ();
    0x00026734 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026738 move a1, zero                     |     a1 = 0;
    0x0002673c move a0, s2                       |     a0 = s2;
    0x00026740 lw t9, -0x78e4(gp)                |     t9 = sym.imp.g_string_free;
    0x00026744 addiu s7, sp, 0x38                |     s7 = sp + 0x38;
    0x00026748 jalr t9                           |     t9 ();
    0x0002674c lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026750 move a3, s7                       |     a3 = s7;
    0x00026754 addiu a2, zero, -1                |     a2 = -1;
    0x00026758 lw s5, -0x7fdc(gp)                |     s5 = *(gp);
    0x0002675c lw t9, -0x7a84(gp)                |     t9 = sym.imp.g_file_set_contents;
    0x00026760 move a1, v0                       |     a1 = v0;
                                                 |     /* str._etc_io2d.d_legacy.tmp */
    0x00026764 addiu a0, s5, 0x12cc              |     a0 = s5 + 0x12cc;
    0x00026768 move s0, v0                       |     s0 = v0;
    0x0002676c jalr t9                           |     t9 ();
    0x00026770 lw v0, 0x38(sp)                   |     v0 = *(var_38h);
    0x00026774 lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 == 0) {
    0x00026778 beqz v0, 0x26be4                  |         goto label_9;
                                                 |     }
    0x0002677c lw a3, -0x7fdc(gp)                |     a3 = *(gp);
    0x00026780 lw a2, -0x7fdc(gp)                |     a2 = *(gp);
    0x00026784 lw t9, -0x7b68(gp)                |     t9 = sym.imp.g_log;
    0x00026788 addiu a3, a3, 0x3d20              |     a3 += 0x3d20;
                                                 |     /* str._sCouldnt_write_to_service_registry */
    0x0002678c addiu a2, a2, 0x12e4              |     a2 += 0x12e4;
    0x00026790 addiu a1, zero, 0x10              |     a1 = 0x10;
    0x00026794 move a0, zero                     |     a0 = 0;
    0x00026798 jalr t9                           |     t9 ();
    0x0002679c lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x000267a0 lw t9, -0x7ad8(gp)                |     t9 = sym.imp.g_error_free;
    0x000267a4 lw a0, 0x38(sp)                   |     a0 = *(var_38h);
    0x000267a8 jalr t9                           |     t9 ();
    0x000267ac lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 | label_5:
    0x000267b0 lw t9, -0x7718(gp)                |     t9 = *((gp - 7622));
    0x000267b4 move a0, s0                       |     a0 = s0;
    0x000267b8 jalr t9                           |     t9 ();
    0x000267bc lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x000267c0 sw zero, 0x38(sp)                 |     *(var_38h) = 0;
    0x000267c4 lw t9, -0x7d50(gp)                |     t9 = sym.io_port_list_length;
    0x000267c8 lw s1, -0x7fdc(gp)                |     s1 = *(gp);
    0x000267cc move s0, zero                     |     s0 = 0;
    0x000267d0 bal 0xfa14                        |     sym_io_port_list_length ();
    0x000267d4 slt v0, s0, v0                    |     v0 = (s0 < v0) ? 1 : 0;
                                                 |     /* str.ioport */
    0x000267d8 addiu s1, s1, -0x29c0             |     s1 += -0x29c0;
    0x000267dc lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 == 0) {
    0x000267e0 beqz v0, 0x26838                  |         goto label_10;
                                                 |     }
                                                 |     do {
    0x000267e4 lw t9, -0x7e18(gp)                |         t9 = sym.io_port_list_nth_data;
    0x000267e8 move a0, s0                       |         a0 = s0;
    0x000267ec bal 0xf238                        |         sym_io_port_list_nth_data ();
    0x000267f0 move s2, v0                       |         s2 = v0;
    0x000267f4 lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v0 != 0) {
    0x000267f8 beqz v0, 0x26820                  |             
    0x000267fc lw t9, -0x7f54(gp)                |             t9 = sym.io_port_get_property;
    0x00026800 move a1, s1                       |             a1 = s1;
    0x00026804 move a0, v0                       |             a0 = v0;
    0x00026808 bal 0xe530                        |             sym_io_port_get_property ();
    0x0002680c lw gp, 0x28(sp)                   |             gp = *(var_28h);
    0x00026810 lw t9, -0x7f4c(gp)                |             t9 = sym.io_port_unref;
    0x00026814 move a0, s2                       |             a0 = s2;
    0x00026818 bal 0xeba4                        |             sym_io_port_unref ();
    0x0002681c lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |         }
    0x00026820 lw t9, -0x7d50(gp)                |         t9 = sym.io_port_list_length;
    0x00026824 addiu s0, s0, 1                   |         s0++;
    0x00026828 bal 0xfa14                        |         sym_io_port_list_length ();
    0x0002682c slt v0, s0, v0                    |         v0 = (s0 < v0) ? 1 : 0;
    0x00026830 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026834 bnez v0, 0x267e4                  |         
                                                 |     } while (v0 != 0);
                                                 | label_10:
    0x00026838 lw a0, -0x7fdc(gp)                |     a0 = *(gp);
    0x0002683c lw t9, -0x7868(gp)                |     t9 = sym.imp.g_string_new;
                                                 |     /* str._mapping__n___group_name_root.Input___n_____parameter_name_NbrOfInputs___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort_0__n________________interface_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________name_NbrOfInputs___n_________type_type_int____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_readonly:int:maxlen3_min0_max100_____n_________legacyoption_name_accessControl__n______________________value_operator:1_admin:1_viewer:1_____n________legacyoptions__n______parameter__n____group__n___group_name_root.Output___n_____parameter_name_NbrOfOutputs___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort_0__n________________interface_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________name_NbrOfOutputs___n_________type_type_int____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_readonly:int:maxlen3_min0_max100_____n_________legacyoption_name_accessControl__n______________________value_operator:1_admin:1_viewer:1_____n________legacyoptions__n______parameter__n____group__n___group_name_root.Properties.IO___n_____parameter_name_ManualTriggerNbr___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort_0__n________________interface_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________name_ManualTriggerNbr___n_________type_type_int____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_readonly:int:maxlen3_min0_max100_____n_________legacyoption_name_accessControl__n______________________value_operator:1_admin:1_viewer:1_____n________legacyoptions__n______parameter__n____group__n */
    0x00026840 addiu a0, a0, 0x1378              |     a0 += 0x1378;
    0x00026844 jalr t9                           |     t9 ();
    0x00026848 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x0002684c move s1, v0                       |     s1 = v0;
    0x00026850 move s0, zero                     |     s0 = 0;
    0x00026854 lw fp, -0x7fdc(gp)                |     fp = *(gp);
    0x00026858 lw t9, -0x7d50(gp)                |     t9 = sym.io_port_list_length;
    0x0002685c addiu v0, fp, 0x3d20              |     v0 = fp + 0x3d20;
    0x00026860 lw s4, -0x7fdc(gp)                |     s4 = *(gp);
    0x00026864 lw s3, -0x7fdc(gp)                |     s3 = *(gp);
    0x00026868 lw s2, -0x7fdc(gp)                |     s2 = *(gp);
    0x0002686c sw v0, 0x34(sp)                   |     *(var_34h) = v0;
    0x00026870 bal 0xfa14                        |     sym_io_port_list_length ();
    0x00026874 slt v0, s0, v0                    |     v0 = (s0 < v0) ? 1 : 0;
                                                 |     /* str.ioport */
    0x00026878 addiu s4, s4, -0x29c0             |     s4 += -0x29c0;
                                                 |     /* str.___group_name_root.IOPort.I_d___n_____parameter_name_Configurable___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________name_Configurable___n_________type_type_bool__truevalue_yes__falsevalue_no_____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_readonly:yes_no_____n_________legacyoption_name_accessControl__n______________________value_operator:1_admin:1_viewer:1_____n________legacyoptions__n______parameter__n_____parameter_name_Direction___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________name_Direction___n_________type_type_string____n________property__n_______legacyoptions__n_________legacyoption_name_type__value__senum:inputInput__outputOutput_____n_________legacyoption_name_accessControl__n______________________value_operator:3_admin:3_viewer:1_____n________legacyoptions__n______parameter__n_____parameter_name_Usage___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________name_Usage___n_________type_type_string____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_string____n_________legacyoption_name_accessControl__n______________________value_operator:3_admin:3_viewer:1_____n________legacyoptions__n______parameter__n____group__n */
    0x0002687c addiu s3, s3, 0x1ae8              |     s3 += 0x1ae8;
                                                 |     /* str.readonly: */
    0x00026880 addiu s2, s2, 0xeb0               |     s2 += 0xeb0;
    0x00026884 lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 == 0) {
    0x00026888 beqz v0, 0x2691c                  |         goto label_11;
                                                 |     }
                                                 |     do {
    0x0002688c lw t9, -0x7e18(gp)                |         t9 = sym.io_port_list_nth_data;
    0x00026890 move a0, s0                       |         a0 = s0;
    0x00026894 bal 0xf238                        |         sym_io_port_list_nth_data ();
    0x00026898 move fp, v0                       |         fp = v0;
    0x0002689c lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v0 != 0) {
    0x000268a0 beqz v0, 0x26904                  |             
    0x000268a4 lw t9, -0x7f54(gp)                |             t9 = sym.io_port_get_property;
    0x000268a8 move a1, s4                       |             a1 = s4;
    0x000268ac move a0, v0                       |             a0 = v0;
    0x000268b0 bal 0xe530                        |             sym_io_port_get_property ();
    0x000268b4 lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |             if (v0 != 0) {
    0x000268b8 beqz v0, 0x268f4                  |                 
    0x000268bc lw a0, (fp)                       |                 a0 = *(fp);
    0x000268c0 addiu v0, zero, 2                 |                 v0 = 2;
    0x000268c4 lw a3, 0x24(fp)                   |                 a3 = *(arg_24h);
                                                 |                 if (a0 == v0) {
    0x000268c8 beq a0, v0, 0x26b4c               |                     goto label_12;
                                                 |                 }
    0x000268cc move v0, s2                       |                 v0 = s2;
                                                 | label_1:
    0x000268d0 lw t9, -0x7b64(gp)                |                 t9 = sym.imp.g_string_append_printf
    0x000268d4 sw a3, 0x18(sp)                   |                 *(var_18h) = a3;
    0x000268d8 sw v0, 0x14(sp)                   |                 *(var_14h) = v0;
    0x000268dc sw a3, 0x10(sp)                   |                 *(var_10h) = a3;
    0x000268e0 move a2, a3                       |                 a2 = a3;
    0x000268e4 move a1, s3                       |                 a1 = s3;
    0x000268e8 move a0, s1                       |                 a0 = s1;
    0x000268ec jalr t9                           |                 t9 ();
    0x000268f0 lw gp, 0x28(sp)                   |                 gp = *(var_28h);
                                                 |             }
    0x000268f4 lw t9, -0x7f4c(gp)                |             t9 = sym.io_port_unref;
    0x000268f8 move a0, fp                       |             a0 = fp;
    0x000268fc bal 0xeba4                        |             sym_io_port_unref ();
    0x00026900 lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |         }
    0x00026904 lw t9, -0x7d50(gp)                |         t9 = sym.io_port_list_length;
    0x00026908 addiu s0, s0, 1                   |         s0++;
    0x0002690c bal 0xfa14                        |         sym_io_port_list_length ();
    0x00026910 slt v0, s0, v0                    |         v0 = (s0 < v0) ? 1 : 0;
    0x00026914 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026918 bnez v0, 0x2688c                  |         
                                                 |     } while (v0 != 0);
                                                 | label_11:
    0x0002691c lw t9, -0x7d50(gp)                |     t9 = sym.io_port_list_length;
    0x00026920 lw s4, -0x7fdc(gp)                |     s4 = *(gp);
    0x00026924 lw s3, -0x7fdc(gp)                |     s3 = *(gp);
    0x00026928 move s2, zero                     |     s2 = 0;
    0x0002692c bal 0xfa14                        |     sym_io_port_list_length ();
    0x00026930 slt v0, s2, v0                    |     v0 = (s2 < v0) ? 1 : 0;
                                                 |     /* str.ioport */
    0x00026934 addiu s4, s4, -0x29c0             |     s4 += -0x29c0;
    0x00026938 addiu fp, zero, 1                 |     fp = 1;
                                                 |     /* str.___group_name_root.IOPort.I_d.Input___n_____parameter_name_Name___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.Input__n________________name_Name___n_________type_type_string_____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_string____n_________legacyoption_name_accessControl__n______________________value_operator:3_admin:3_viewer:1_____n________legacyoptions__n______parameter__n_____parameter_name_Trig___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.Input__n________________name_Trig___n_________type_type_string_____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_enum:closedClosed__openOpen_____n_________legacyoption_name_accessControl__n______________________value_operator:3_admin:3_viewer:1_____n_________legacyoption_name_nicename__n______________________value_Generate_when_circuit_is..._____n_________legacyoption_name_daemon__value_iod_____n_________legacyoption_name_signal__value_1_____n________legacyoptions__n______parameter__n____group__n */
    0x0002693c addiu s3, s3, 0x21dc              |     s3 += 0x21dc;
    0x00026940 lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 == 0) {
    0x00026944 beqz v0, 0x269cc                  |         goto label_13;
                                                 |     }
                                                 |     do {
    0x00026948 lw t9, -0x7e18(gp)                |         t9 = sym.io_port_list_nth_data;
    0x0002694c move a0, s2                       |         a0 = s2;
    0x00026950 bal 0xf238                        |         sym_io_port_list_nth_data ();
    0x00026954 move s0, v0                       |         s0 = v0;
    0x00026958 lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v0 != 0) {
    0x0002695c beqz v0, 0x269b4                  |             
    0x00026960 lw t9, -0x7f54(gp)                |             t9 = sym.io_port_get_property;
    0x00026964 move a1, s4                       |             a1 = s4;
    0x00026968 move a0, v0                       |             a0 = v0;
    0x0002696c bal 0xe530                        |             sym_io_port_get_property ();
    0x00026970 lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |             if (v0 != 0) {
    0x00026974 beqz v0, 0x269a4                  |                 
    0x00026978 lw v0, (s0)                       |                 v0 = *(s0);
    0x0002697c lw t9, -0x7f4c(gp)                |                 t9 = sym.io_port_unref;
                                                 |                 if (v0 == fp) {
    0x00026980 beq v0, fp, 0x269a8               |                     goto label_14;
                                                 |                 }
    0x00026984 lw a3, 0x24(s0)                   |                 a3 = *((s0 + 9));
    0x00026988 lw t9, -0x7b64(gp)                |                 t9 = sym.imp.g_string_append_printf
    0x0002698c sw a3, 0x10(sp)                   |                 *(var_10h) = a3;
    0x00026990 move a2, a3                       |                 a2 = a3;
    0x00026994 move a1, s3                       |                 a1 = s3;
    0x00026998 move a0, s1                       |                 a0 = s1;
    0x0002699c jalr t9                           |                 t9 ();
    0x000269a0 lw gp, 0x28(sp)                   |                 gp = *(var_28h);
                                                 |             }
    0x000269a4 lw t9, -0x7f4c(gp)                |             t9 = sym.io_port_unref;
                                                 | label_14:
    0x000269a8 move a0, s0                       |             a0 = s0;
    0x000269ac bal 0xeba4                        |             sym_io_port_unref ();
    0x000269b0 lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |         }
    0x000269b4 lw t9, -0x7d50(gp)                |         t9 = sym.io_port_list_length;
    0x000269b8 addiu s2, s2, 1                   |         s2++;
    0x000269bc bal 0xfa14                        |         sym_io_port_list_length ();
    0x000269c0 slt v0, s2, v0                    |         v0 = (s2 < v0) ? 1 : 0;
    0x000269c4 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x000269c8 bnez v0, 0x26948                  |         
                                                 |     } while (v0 != 0);
                                                 | label_13:
    0x000269cc lw a1, -0x7fdc(gp)                |     a1 = *(gp);
    0x000269d0 lw t9, -0x7d50(gp)                |     t9 = sym.io_port_list_length;
    0x000269d4 lw s3, -0x7fdc(gp)                |     s3 = *(gp);
    0x000269d8 move s2, zero                     |     s2 = 0;
                                                 |     /* str.___group_name_root.IOPort.I_i.Output___n_____parameter_name_DelayTime___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.Output__n________________name_DelayTime___n_________type_type_int_____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_int____n_________legacyoption_name_accessControl__n______________________value_operator:3_admin:3_viewer:1_____n________legacyoptions__n______parameter__n______parameter_name_Mode___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.Output__n________________name_Mode___n_________type_type_string_____n________property__n_______legacyoptions__n_________legacyoption_name_type__n______________________value_enum:bistableBistable__monostableMonostable_____n_________legacyoption_name_accessControl__n______________________value_operator:3_admin:3_viewer:1_____n________legacyoptions__n______parameter__n______parameter_name_Name___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.Output__n________________name_Name___n_________type_type_string_____n________property__n_______legacyoptions__n_________legacyoption_name_type__value_string____n_________legacyoption_name_accessControl__n______________________value_operator:3_admin:3_viewer:1_____n________legacyoptions__n______parameter__n_____parameter_name_Active___n_______property_dbus_com.axis.Configuration.Legacy.IOControl1.IOPort__n________________object__com_axis_Configuration_Legacy_IOControl_IOPort__i__n________________interface_com.axis.Configuration.Legacy.IOControl1.Output_ */
    0x000269dc addiu s4, a1, 0x2730              |     s4 = a1 + 0x2730;
    0x000269e0 bal 0xfa14                        |     sym_io_port_list_length ();
    0x000269e4 slt v0, s2, v0                    |     v0 = (s2 < v0) ? 1 : 0;
                                                 |     /* str.ioport */
    0x000269e8 addiu s3, s3, -0x29c0             |     s3 += -0x29c0;
    0x000269ec lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 == 0) {
    0x000269f0 beqz v0, 0x26a58                  |         goto label_15;
                                                 |     }
                                                 |     do {
    0x000269f4 lw t9, -0x7e18(gp)                |         t9 = sym.io_port_list_nth_data;
    0x000269f8 move a0, s2                       |         a0 = s2;
    0x000269fc bal 0xf238                        |         sym_io_port_list_nth_data ();
    0x00026a00 move s0, v0                       |         s0 = v0;
    0x00026a04 lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v0 != 0) {
    0x00026a08 beqz v0, 0x26a40                  |             
    0x00026a0c lw t9, -0x7f54(gp)                |             t9 = sym.io_port_get_property;
    0x00026a10 move a1, s3                       |             a1 = s3;
    0x00026a14 move a0, v0                       |             a0 = v0;
    0x00026a18 bal 0xe530                        |             sym_io_port_get_property ();
    0x00026a1c lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |             if (v0 != 0) {
    0x00026a20 beqz v0, 0x26a30                  |                 
    0x00026a24 lw v0, (s0)                       |                 v0 = *(s0);
    0x00026a28 lw a3, 0x24(s0)                   |                 a3 = *((s0 + 9));
                                                 |                 if (v0 == 0) {
    0x00026a2c bnel v0, zero, 0x26b54            |                     goto label_16;
                                                 |                 }
                                                 |             }
                                                 | label_2:
    0x00026a30 lw t9, -0x7f4c(gp)                |             t9 = sym.io_port_unref;
    0x00026a34 move a0, s0                       |             a0 = s0;
    0x00026a38 bal 0xeba4                        |             sym_io_port_unref ();
    0x00026a3c lw gp, 0x28(sp)                   |             gp = *(var_28h);
                                                 |         }
    0x00026a40 lw t9, -0x7d50(gp)                |         t9 = sym.io_port_list_length;
    0x00026a44 addiu s2, s2, 1                   |         s2++;
    0x00026a48 bal 0xfa14                        |         sym_io_port_list_length ();
    0x00026a4c slt v0, s2, v0                    |         v0 = (s2 < v0) ? 1 : 0;
    0x00026a50 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026a54 bnez v0, 0x269f4                  |         
                                                 |     } while (v0 != 0);
                                                 | label_15:
    0x00026a58 lw a1, -0x7fdc(gp)                |     a1 = *(gp);
    0x00026a5c lw t9, -0x7b5c(gp)                |     t9 = sym.imp.g_string_append;
                                                 |     /* str.__mapping__n */
    0x00026a60 addiu a1, a1, 0x34e0              |     a1 += 0x34e0;
    0x00026a64 move a0, s1                       |     a0 = s1;
    0x00026a68 jalr t9                           |     t9 ();
    0x00026a6c lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026a70 move a1, zero                     |     a1 = 0;
    0x00026a74 lw t9, -0x78e4(gp)                |     t9 = sym.imp.g_string_free;
    0x00026a78 move a0, s1                       |     a0 = s1;
    0x00026a7c jalr t9                           |     t9 ();
    0x00026a80 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026a84 move a3, s7                       |     a3 = s7;
    0x00026a88 addiu a2, zero, -1                |     a2 = -1;
    0x00026a8c lw t9, -0x7a84(gp)                |     t9 = sym.imp.g_file_set_contents;
    0x00026a90 move a1, v0                       |     a1 = v0;
                                                 |     /* str._etc_io2d.d_legacy.tmp */
    0x00026a94 addiu a0, s5, 0x12cc              |     a0 = s5 + 0x12cc;
    0x00026a98 move s0, v0                       |     s0 = v0;
    0x00026a9c jalr t9                           |     t9 ();
    0x00026aa0 lw v0, 0x38(sp)                   |     v0 = *(var_38h);
    0x00026aa4 lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 == 0) {
    0x00026aa8 beqz v0, 0x26b9c                  |         goto label_17;
                                                 |     }
    0x00026aac lw a3, -0x7fdc(gp)                |     a3 = *(gp);
    0x00026ab0 lw a2, -0x7fdc(gp)                |     a2 = *(gp);
    0x00026ab4 lw t9, -0x7b68(gp)                |     t9 = sym.imp.g_log;
    0x00026ab8 addiu a3, a3, 0x3d20              |     a3 += 0x3d20;
                                                 |     /* str._sCouldnt_write_to_legacy_mappings */
    0x00026abc addiu a2, a2, 0x34ec              |     a2 += 0x34ec;
    0x00026ac0 addiu a1, zero, 0x10              |     a1 = 0x10;
    0x00026ac4 move a0, zero                     |     a0 = 0;
    0x00026ac8 jalr t9                           |     t9 ();
    0x00026acc lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026ad0 lw t9, -0x7ad8(gp)                |     t9 = sym.imp.g_error_free;
    0x00026ad4 lw a0, 0x38(sp)                   |     a0 = *(var_38h);
    0x00026ad8 jalr t9                           |     t9 ();
    0x00026adc lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     do {
                                                 | label_4:
    0x00026ae0 lw t9, -0x7718(gp)                |         t9 = *((gp - 7622));
    0x00026ae4 move a0, s0                       |         a0 = s0;
    0x00026ae8 jalr t9                           |         t9 ();
    0x00026aec lw v1, 0x3c(sp)                   |         v1 = *(var_3ch);
    0x00026af0 lw v0, (s6)                       |         v0 = *(s6);
    0x00026af4 lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v1 != v0) {
    0x00026af8 bne v1, v0, 0x26c2c               |             goto label_18;
                                                 |         }
    0x00026afc lw ra, 0x64(sp)                   |         ra = *(var_64h);
    0x00026b00 lw fp, 0x60(sp)                   |         fp = *(var_60h);
    0x00026b04 lw s7, 0x5c(sp)                   |         s7 = *(var_5ch);
    0x00026b08 lw s6, 0x58(sp)                   |         s6 = *(var_58h);
    0x00026b0c lw s5, 0x54(sp)                   |         s5 = *(var_54h);
    0x00026b10 lw s4, 0x50(sp)                   |         s4 = *(var_50h);
    0x00026b14 lw s3, 0x4c(sp)                   |         s3 = *(var_4ch);
    0x00026b18 lw s2, 0x48(sp)                   |         s2 = *(var_48h);
    0x00026b1c lw s1, 0x44(sp)                   |         s1 = *(var_44h);
    0x00026b20 lw s0, 0x40(sp)                   |         s0 = *(var_40h);
    0x00026b24 addiu sp, sp, 0x68                |         
    0x00026b28 jr ra                             |         return v0;
                                                 | label_7:
    0x00026b2c lw t9, -0x7b64(gp)                |         t9 = sym.imp.g_string_append_printf
    0x00026b30 lw a2, 0x24(s1)                   |         a2 = *((s1 + 9));
    0x00026b34 move a1, s3                       |         a1 = s3;
    0x00026b38 move a0, s2                       |         a0 = s2;
    0x00026b3c jalr t9                           |         t9 ();
    0x00026b40 addiu s5, zero, 1                 |         s5 = 1;
    0x00026b44 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026b48 b 0x266f0                         |         goto label_0;
                                                 | label_12:
    0x00026b4c lw v0, 0x34(sp)                   |         v0 = *(var_34h);
    0x00026b50 b 0x268d0                         |         goto label_1;
                                                 | label_16:
    0x00026b54 lw t9, -0x7b64(gp)                |         t9 = sym.imp.g_string_append_printf
    0x00026b58 sw a3, 0x20(sp)                   |         *(var_20h) = a3;
    0x00026b5c sw a3, 0x1c(sp)                   |         *(var_1ch) = a3;
    0x00026b60 sw a3, 0x18(sp)                   |         *(var_18h) = a3;
    0x00026b64 sw a3, 0x14(sp)                   |         *(var_14h) = a3;
    0x00026b68 sw a3, 0x10(sp)                   |         *(var_10h) = a3;
    0x00026b6c move a2, a3                       |         a2 = a3;
    0x00026b70 move a1, s4                       |         a1 = s4;
    0x00026b74 move a0, s1                       |         a0 = s1;
    0x00026b78 jalr t9                           |         t9 ();
    0x00026b7c lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026b80 b 0x26a30                         |         goto label_2;
                                                 | label_8:
    0x00026b84 lw t9, -0x7b5c(gp)                |         t9 = sym.imp.g_string_append;
                                                 |         /* str._____object_name__com_axis_Configuration_Legacy_IOControl_IOPort_0___n_______interfaces__n_________interface_name_com.axis.Configuration.Legacy.IOControl1.IOPort__emitspropertieschanged_true_____n_________interface_name_com.axis.Configuration.Legacy.IOControl1.Input__emitspropertieschanged_true_____n_________interface_name_com.axis.Configuration.Legacy.IOControl1.Output__emitspropertieschanged_true_____n________interfaces__n______object__n */
    0x00026b88 addiu a1, a1, 0x10f4              |         a1 += 0x10f4;
    0x00026b8c move a0, s2                       |         a0 = s2;
    0x00026b90 jalr t9                           |         t9 ();
    0x00026b94 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026b98 b 0x26720                         |         goto label_3;
                                                 | label_17:
    0x00026b9c lw a1, -0x7fdc(gp)                |         a1 = *(gp);
    0x00026ba0 lw t9, -0x7838(gp)                |         t9 = sym.imp.rename;
                                                 |         /* str._etc_legacyconfig_legacymappings.d_io2d.xml */
    0x00026ba4 addiu a1, a1, 0x3510              |         a1 += 0x3510;
                                                 |         /* str._etc_io2d.d_legacy.tmp */
    0x00026ba8 addiu a0, s5, 0x12cc              |         a0 = s5 + 0x12cc;
    0x00026bac jalr t9                           |         t9 ();
    0x00026bb0 addiu v1, zero, -1                |         v1 = -1;
    0x00026bb4 lw gp, 0x28(sp)                   |         gp = *(var_28h);
    0x00026bb8 bne v0, v1, 0x26ae0               |         
                                                 |     } while (v0 != v1);
    0x00026bbc lw a3, -0x7fdc(gp)                |     a3 = *(gp);
    0x00026bc0 lw a2, -0x7fdc(gp)                |     a2 = *(gp);
    0x00026bc4 lw t9, -0x7b68(gp)                |     t9 = sym.imp.g_log;
    0x00026bc8 addiu a3, a3, 0x3d20              |     a3 += 0x3d20;
                                                 |     /* str._sCouldnt_move_service_registry_file_correctly */
    0x00026bcc addiu a2, a2, 0x1348              |     a2 += 0x1348;
    0x00026bd0 addiu a1, zero, 0x10              |     a1 = 0x10;
    0x00026bd4 move a0, zero                     |     a0 = 0;
    0x00026bd8 jalr t9                           |     t9 ();
    0x00026bdc lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026be0 b 0x26ae0                         |     goto label_4;
                                                 | label_9:
    0x00026be4 lw a1, -0x7fdc(gp)                |     a1 = *(gp);
    0x00026be8 lw t9, -0x7838(gp)                |     t9 = sym.imp.rename;
                                                 |     /* str._etc_service_registry_services.d_io2d_service_registry.conf */
    0x00026bec addiu a1, a1, 0x130c              |     a1 += 0x130c;
                                                 |     /* str._etc_io2d.d_legacy.tmp */
    0x00026bf0 addiu a0, s5, 0x12cc              |     a0 = s5 + 0x12cc;
    0x00026bf4 jalr t9                           |     t9 ();
    0x00026bf8 addiu v1, zero, -1                |     v1 = -1;
    0x00026bfc lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v0 != v1) {
    0x00026c00 bne v0, v1, 0x267b0               |         goto label_5;
                                                 |     }
    0x00026c04 lw a3, -0x7fdc(gp)                |     a3 = *(gp);
    0x00026c08 lw a2, -0x7fdc(gp)                |     a2 = *(gp);
    0x00026c0c lw t9, -0x7b68(gp)                |     t9 = sym.imp.g_log;
    0x00026c10 addiu a3, a3, 0x3d20              |     a3 += 0x3d20;
                                                 |     /* str._sCouldnt_move_service_registry_file_correctly */
    0x00026c14 addiu a2, a2, 0x1348              |     a2 += 0x1348;
    0x00026c18 addiu a1, zero, 0x10              |     a1 = 0x10;
    0x00026c1c move a0, zero                     |     a0 = 0;
    0x00026c20 jalr t9                           |     t9 ();
    0x00026c24 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00026c28 b 0x267b0                         |     goto label_5;
                                                 | label_18:
    0x00026c2c lw t9, -0x7a10(gp)                |     t9 = sym.imp.__stack_chk_fail;
    0x00026c30 jalr t9                           |     t9 ();
    0x00026c34 nop                               |     
    0x00026c38 nop                               |     
    0x00026c3c nop                               |     
    0x00026c40 lw v1, 8(a0)                      |     v1 = *((a0 + 2));
    0x00026c44 addiu v0, zero, 1                 |     v0 = 1;
    0x00026c48 lw v1, 0x28(v1)                   |     v1 = *((v1 + 10));
    0x00026c4c addiu v1, zero, -3                |     v1 = -3;
                                                 |     if (v1 != v0) {
    0x00026c50 beq v1, v0, 0x26c64               |         
    0x00026c54 lw v0, (a0)                       |         v0 = *(a0);
    0x00026c58 and v0, v0, v1                    |         v0 &= v1;
    0x00026c5c sltiu v0, v0, 1                   |         v0 = (v0 < 1) ? 1 : 0;
    0x00026c60 jr ra                             |         return v0;
                                                 |     }
    0x00026c64 move v0, zero                     |     v0 = 0;
    0x00026c68 jr ra                             |     return v0;
                                                 | }

[*] Function printf used 5 times io2d