[*] Binary protection state of video-service

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


[*] Function printf tear down of video-service

    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/video-service @ 0xaab0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.dbus_get_ptz_enabled ()          | void dbus_get_ptz_enabled () {
    0x0000aab0 lui gp, 2                         |     
    0x0000aab4 addiu gp, gp, -0x1a90             |     
    0x0000aab8 addu gp, gp, t9                   |     gp += t9;
    0x0000aabc addiu sp, sp, -0x60               |     
    0x0000aac0 move a1, a0                       |     a1 = a0;
    0x0000aac4 sw s3, 0x48(sp)                   |     *(var_48h) = s3;
    0x0000aac8 lw s3, -0x7d98(gp)                |     s3 = *((gp - 8038));
    0x0000aacc lw a0, -0x7fd8(gp)                |     a0 = *(gp);
    0x0000aad0 lw t9, -0x7d14(gp)                |     t9 = sym.imp.g_strdup_printf
    0x0000aad4 lw v0, (s3)                       |     v0 = *(s3);
    0x0000aad8 sw gp, 0x20(sp)                   |     *(var_20h) = gp;
    0x0000aadc sw ra, 0x5c(sp)                   |     *(var_5ch) = ra;
    0x0000aae0 sw s5, 0x50(sp)                   |     *(var_50h) = s5;
    0x0000aae4 sw s4, 0x4c(sp)                   |     *(var_4ch) = s4;
    0x0000aae8 sw s2, 0x44(sp)                   |     *(var_44h) = s2;
    0x0000aaec sw s0, 0x3c(sp)                   |     *(var_3ch) = s0;
    0x0000aaf0 addiu a0, a0, -0x4d0              |     a0 += -0x4d0;
    0x0000aaf4 sw s7, 0x58(sp)                   |     *(var_58h) = s7;
    0x0000aaf8 sw s6, 0x54(sp)                   |     *(var_54h) = s6;
    0x0000aafc sw s1, 0x40(sp)                   |     *(var_40h) = s1;
    0x0000ab00 sw v0, 0x34(sp)                   |     *(var_34h) = v0;
    0x0000ab04 lw s5, -0x7fd8(gp)                |     s5 = *(gp);
    0x0000ab08 jalr t9                           |     t9 ();
    0x0000ab0c nop                               |     
    0x0000ab10 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ab14 addiu a2, s5, -0x4b0              |     a2 = s5 + -0x4b0;
    0x0000ab18 move s4, v0                       |     s4 = v0;
    0x0000ab1c lw s0, -0x7fd8(gp)                |     s0 = *(gp);
    0x0000ab20 lw a0, -0x7fd8(gp)                |     a0 = *(gp);
    0x0000ab24 lw t9, -0x7f04(gp)                |     t9 = sym.imp.g_variant_new;
    0x0000ab28 addiu a1, s0, -0x4a4              |     a1 = s0 + -0x4a4;
    0x0000ab2c addiu a0, a0, -0x488              |     a0 += -0x488;
    0x0000ab30 jalr t9                           |     t9 ();
    0x0000ab34 move s2, v0                       |     s2 = v0;
    0x0000ab38 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ab3c sw zero, 0x30(sp)                 |     *(var_30h) = 0;
                                                 |     if (v0 != 0) {
    0x0000ab40 beqz v0, 0xab54                   |         
    0x0000ab44 lw t9, -0x7bfc(gp)                |         t9 = sym.imp.g_variant_ref_sink;
    0x0000ab48 move a0, v0                       |         a0 = v0;
    0x0000ab4c jalr t9                           |         t9 ();
    0x0000ab50 lw gp, 0x20(sp)                   |         gp = *(var_20h);
                                                 |     }
    0x0000ab54 lw v0, -0x7fd8(gp)                |     v0 = *(gp);
    0x0000ab58 lw t9, -0x7edc(gp)                |     t9 = sym.imp.g_dbus_proxy_new_for_bus_sync;
    0x0000ab5c addiu v0, v0, -0x99c              |     v0 += -0x99c;
    0x0000ab60 addiu s6, sp, 0x30                |     s6 = sp + 0x30;
    0x0000ab64 sw s6, 0x1c(sp)                   |     *(var_1ch) = s6;
    0x0000ab68 sw zero, 0x18(sp)                 |     *(var_18h) = 0;
    0x0000ab6c sw v0, 0x14(sp)                   |     *(var_14h) = v0;
    0x0000ab70 sw s4, 0x10(sp)                   |     *(var_10h) = s4;
    0x0000ab74 addiu a3, s0, -0x4a4              |     a3 = s0 + -0x4a4;
    0x0000ab78 move a2, zero                     |     a2 = 0;
    0x0000ab7c addiu a1, zero, 3                 |     a1 = 3;
    0x0000ab80 addiu a0, zero, 1                 |     a0 = 1;
    0x0000ab84 jalr t9                           |     t9 ();
    0x0000ab88 move s1, v0                       |     s1 = v0;
    0x0000ab8c lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 |     if (v0 == 0) {
    0x0000ab90 beqz v0, 0xada0                   |         goto label_3;
                                                 |     }
    0x0000ab94 lw s7, -0x7fd8(gp)                |     s7 = *(gp);
    0x0000ab98 lw t9, -0x7cbc(gp)                |     t9 = sym.imp.g_dbus_proxy_call_sync;
    0x0000ab9c move a0, v0                       |     a0 = v0;
    0x0000aba0 addiu v0, zero, -1                |     v0 = -1;
    0x0000aba4 move a3, zero                     |     a3 = 0;
    0x0000aba8 move a2, s2                       |     a2 = s2;
    0x0000abac addiu a1, s7, -0x45c              |     a1 = s7 + -0x45c;
    0x0000abb0 sw s6, 0x18(sp)                   |     *(var_18h) = s6;
    0x0000abb4 sw zero, 0x14(sp)                 |     *(var_14h) = 0;
    0x0000abb8 sw v0, 0x10(sp)                   |     *(var_10h) = v0;
    0x0000abbc jalr t9                           |     t9 ();
    0x0000abc0 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000abc4 move s0, v0                       |     s0 = v0;
    0x0000abc8 lw t9, -0x7c44(gp)                |     t9 = *((gp - 7953));
    0x0000abcc move a0, s1                       |     a0 = s1;
    0x0000abd0 jalr t9                           |     t9 ();
    0x0000abd4 lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 |     if (s0 == 0) {
    0x0000abd8 beqz s0, 0xadec                   |         goto label_4;
                                                 |     }
    0x0000abdc lw t9, -0x7e14(gp)                |     t9 = sym.imp.g_variant_unref;
                                                 |     if (s2 != 0) {
    0x0000abe0 beqz s2, 0xabf0                   |         
    0x0000abe4 move a0, s2                       |         a0 = s2;
    0x0000abe8 jalr t9                           |         t9 ();
    0x0000abec lw gp, 0x20(sp)                   |         gp = *(var_20h);
                                                 |     }
    0x0000abf0 lw t9, -0x7da0(gp)                |     t9 = sym.imp.g_variant_is_container;
    0x0000abf4 move a0, s0                       |     a0 = s0;
    0x0000abf8 jalr t9                           |     t9 ();
    0x0000abfc lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 |     if (v0 == 0) {
    0x0000ac00 beqz v0, 0xacc4                   |         goto label_5;
                                                 |     }
    0x0000ac04 lw t9, -0x7cf8(gp)                |     t9 = sym.imp.g_variant_get_child_value;
    0x0000ac08 move a1, zero                     |     a1 = 0;
    0x0000ac0c move a0, s0                       |     a0 = s0;
    0x0000ac10 jalr t9                           |     t9 ();
    0x0000ac14 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ac18 move a0, s0                       |     a0 = s0;
    0x0000ac1c lw t9, -0x7e14(gp)                |     t9 = sym.imp.g_variant_unref;
    0x0000ac20 move s0, v0                       |     s0 = v0;
    0x0000ac24 jalr t9                           |     t9 ();
    0x0000ac28 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ac2c lw t9, -0x7ce8(gp)                |     t9 = sym.imp.g_variant_classify;
    0x0000ac30 move a0, s0                       |     a0 = s0;
    0x0000ac34 jalr t9                           |     t9 ();
    0x0000ac38 addiu v1, zero, 0x76              |     v1 = 0x76;
    0x0000ac3c lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 |     if (v0 == v1) {
    0x0000ac40 beq v0, v1, 0xace8                |         goto label_6;
                                                 |     }
    0x0000ac44 lw a2, -0x7fd8(gp)                |     a2 = *(gp);
    0x0000ac48 lw t9, -0x7f00(gp)                |     t9 = sym.imp.g_log;
    0x0000ac4c addiu a3, s5, -0x4b0              |     a3 = s5 + -0x4b0;
    0x0000ac50 addiu a2, a2, -0x418              |     a2 += -0x418;
    0x0000ac54 addiu a1, zero, 0x20              |     a1 = 0x20;
    0x0000ac58 move a0, zero                     |     a0 = 0;
    0x0000ac5c jalr t9                           |     t9 ();
    0x0000ac60 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ac64 beqz s0, 0xac78                   |     
                                                 |     while (1) {
    0x0000ac68 lw t9, -0x7e14(gp)                |         t9 = sym.imp.g_variant_unref;
    0x0000ac6c move a0, s0                       |         a0 = s0;
    0x0000ac70 jalr t9                           |         t9 ();
    0x0000ac74 lw gp, 0x20(sp)                   |         gp = *(var_20h);
                                                 | label_1:
    0x0000ac78 lw t9, -0x7bc4(gp)                |         t9 = sym.imp.g_free;
    0x0000ac7c move a0, s4                       |         a0 = s4;
    0x0000ac80 jalr t9                           |         t9 ();
    0x0000ac84 lw gp, 0x20(sp)                   |         gp = *(var_20h);
    0x0000ac88 move v0, zero                     |         v0 = 0;
                                                 | label_0:
    0x0000ac8c lw a0, 0x34(sp)                   |         a0 = *(var_34h);
    0x0000ac90 lw v1, (s3)                       |         v1 = *(s3);
    0x0000ac94 lw ra, 0x5c(sp)                   |         ra = *(var_5ch);
                                                 |         if (a0 != v1) {
    0x0000ac98 bne a0, v1, 0xae24                |             goto label_7;
                                                 |         }
    0x0000ac9c lw s7, 0x58(sp)                   |         s7 = *(var_58h);
    0x0000aca0 lw s6, 0x54(sp)                   |         s6 = *(var_54h);
    0x0000aca4 lw s5, 0x50(sp)                   |         s5 = *(var_50h);
    0x0000aca8 lw s4, 0x4c(sp)                   |         s4 = *(var_4ch);
    0x0000acac lw s3, 0x48(sp)                   |         s3 = *(var_48h);
    0x0000acb0 lw s2, 0x44(sp)                   |         s2 = *(var_44h);
    0x0000acb4 lw s1, 0x40(sp)                   |         s1 = *(var_40h);
    0x0000acb8 lw s0, 0x3c(sp)                   |         s0 = *(var_3ch);
    0x0000acbc addiu sp, sp, 0x60                |         
    0x0000acc0 jr ra                             |         return v0;
                                                 | label_5:
    0x0000acc4 lw a2, -0x7fd8(gp)                |         a2 = *(gp);
    0x0000acc8 lw t9, -0x7f00(gp)                |         t9 = sym.imp.g_log;
    0x0000accc addiu a3, s5, -0x4b0              |         a3 = s5 + -0x4b0;
    0x0000acd0 addiu a2, a2, -0x440              |         a2 += -0x440;
    0x0000acd4 addiu a1, zero, 0x20              |         a1 = 0x20;
    0x0000acd8 move a0, zero                     |         a0 = 0;
    0x0000acdc jalr t9                           |         t9 ();
    0x0000ace0 lw gp, 0x20(sp)                   |         gp = *(var_20h);
    0x0000ace4 b 0xac68                          |         
                                                 |     }
                                                 | label_6:
    0x0000ace8 lw t9, -0x7c98(gp)                |     t9 = sym.imp.g_variant_get_variant;
    0x0000acec move a0, s0                       |     a0 = s0;
    0x0000acf0 jalr t9                           |     t9 ();
    0x0000acf4 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000acf8 move a0, s0                       |     a0 = s0;
    0x0000acfc lw t9, -0x7e14(gp)                |     t9 = sym.imp.g_variant_unref;
    0x0000ad00 move s0, v0                       |     s0 = v0;
    0x0000ad04 jalr t9                           |     t9 ();
    0x0000ad08 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ad0c lw t9, -0x7bc4(gp)                |     t9 = sym.imp.g_free;
    0x0000ad10 move a0, s4                       |     a0 = s4;
    0x0000ad14 jalr t9                           |     t9 ();
    0x0000ad18 lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 |     if (s0 == 0) {
    0x0000ad1c beqz s0, 0xae1c                   |         goto label_8;
                                                 |     }
    0x0000ad20 lw a1, -0x7fd8(gp)                |     a1 = *(gp);
    0x0000ad24 lw t9, -0x7bf4(gp)                |     t9 = sym.imp.g_variant_is_of_type;
    0x0000ad28 addiu a1, a1, -0x91c              |     a1 += -0x91c;
    0x0000ad2c move a0, s0                       |     a0 = s0;
    0x0000ad30 jalr t9                           |     t9 ();
    0x0000ad34 lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 |     if (v0 != 0) {
    0x0000ad38 beqz v0, 0xad68                   |         
    0x0000ad3c lw t9, -0x7df4(gp)                |         t9 = sym.imp.g_variant_get_boolean;
    0x0000ad40 move a0, s0                       |         a0 = s0;
    0x0000ad44 jalr t9                           |         t9 ();
    0x0000ad48 lw gp, 0x20(sp)                   |         gp = *(var_20h);
    0x0000ad4c sw v0, 0x2c(sp)                   |         *(var_2ch) = v0;
    0x0000ad50 lw t9, -0x7e14(gp)                |         t9 = sym.imp.g_variant_unref;
    0x0000ad54 move a0, s0                       |         a0 = s0;
    0x0000ad58 jalr t9                           |         t9 ();
    0x0000ad5c lw gp, 0x20(sp)                   |         gp = *(var_20h);
    0x0000ad60 lw v0, 0x2c(sp)                   |         v0 = *(var_2ch);
    0x0000ad64 b 0xac8c                          |         goto label_0;
                                                 |     }
    0x0000ad68 lw a2, -0x7fd8(gp)                |     a2 = *(gp);
    0x0000ad6c lw t9, -0x7f00(gp)                |     t9 = sym.imp.g_log;
    0x0000ad70 sw v0, 0x2c(sp)                   |     *(var_2ch) = v0;
    0x0000ad74 addiu a2, a2, -0x3d0              |     a2 += -0x3d0;
    0x0000ad78 addiu a1, zero, 0x20              |     a1 = 0x20;
    0x0000ad7c move a0, zero                     |     a0 = 0;
    0x0000ad80 jalr t9                           |     t9 ();
    0x0000ad84 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ad88 lw t9, -0x7e14(gp)                |     t9 = sym.imp.g_variant_unref;
    0x0000ad8c move a0, s0                       |     a0 = s0;
    0x0000ad90 jalr t9                           |     t9 ();
    0x0000ad94 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ad98 lw v0, 0x2c(sp)                   |     v0 = *(var_2ch);
    0x0000ad9c b 0xac8c                          |     goto label_0;
                                                 | label_3:
    0x0000ada0 lw v0, 0x30(sp)                   |     v0 = *(var_30h);
    0x0000ada4 lw a2, -0x7fd8(gp)                |     a2 = *(gp);
    0x0000ada8 lw t9, -0x7f00(gp)                |     t9 = sym.imp.g_log;
    0x0000adac lw a3, 8(v0)                      |     a3 = *((v0 + 2));
    0x0000adb0 addiu a2, a2, -0x480              |     a2 += -aav.0x00000480;
    0x0000adb4 addiu a1, zero, 0x20              |     a1 = 0x20;
    0x0000adb8 move a0, zero                     |     a0 = 0;
    0x0000adbc jalr t9                           |     t9 ();
    0x0000adc0 lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 | label_2:
    0x0000adc4 lw t9, -0x7c54(gp)                |     t9 = sym.imp.g_clear_error;
    0x0000adc8 move a0, s6                       |     a0 = s6;
    0x0000adcc jalr t9                           |     t9 ();
    0x0000add0 lw gp, 0x20(sp)                   |     gp = *(var_20h);
                                                 |     if (s2 == 0) {
    0x0000add4 beqz s2, 0xac78                   |         goto label_1;
                                                 |     }
    0x0000add8 lw t9, -0x7e14(gp)                |     t9 = sym.imp.g_variant_unref;
    0x0000addc move a0, s2                       |     a0 = s2;
    0x0000ade0 jalr t9                           |     t9 ();
    0x0000ade4 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ade8 b 0xac78                          |     goto label_1;
                                                 | label_4:
    0x0000adec lw v0, 0x30(sp)                   |     v0 = *(var_30h);
    0x0000adf0 lw a2, -0x7fd8(gp)                |     a2 = *(gp);
    0x0000adf4 lw t9, -0x7f00(gp)                |     t9 = sym.imp.g_log;
    0x0000adf8 lw v0, 8(v0)                      |     v0 = *((v0 + 2));
    0x0000adfc addiu a3, s7, -0x45c              |     a3 = s7 + -0x45c;
    0x0000ae00 addiu a2, a2, -0x458              |     a2 += -aav.0x00000458;
    0x0000ae04 addiu a1, zero, 0x20              |     a1 = 0x20;
    0x0000ae08 move a0, zero                     |     a0 = 0;
    0x0000ae0c sw v0, 0x10(sp)                   |     *(var_10h) = v0;
    0x0000ae10 jalr t9                           |     t9 ();
    0x0000ae14 lw gp, 0x20(sp)                   |     gp = *(var_20h);
    0x0000ae18 b 0xadc4                          |     goto label_2;
                                                 | label_8:
    0x0000ae1c move v0, zero                     |     v0 = 0;
    0x0000ae20 b 0xac8c                          |     goto label_0;
                                                 | label_7:
    0x0000ae24 lw t9, -0x7e00(gp)                |     t9 = sym.imp.__stack_chk_fail;
    0x0000ae28 jalr t9                           |     t9 ();
    0x0000ae2c nop                               |     
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/video-service @ 0xb0c0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.plugins_load ()              | void plugins_load () {
    0x0000b0c0 lui gp, 2                     |     
    0x0000b0c4 addiu gp, gp, -0x20a0         |     
    0x0000b0c8 addu gp, gp, t9               |     gp += t9;
    0x0000b0cc lw v0, -0x7d98(gp)            |     v0 = *((gp - 8038));
    0x0000b0d0 addiu sp, sp, -0x68           |     
    0x0000b0d4 lw t9, -0x7f0c(gp)            |     t9 = sym.imp.g_dir_open;
    0x0000b0d8 sw v0, 0x34(sp)               |     *(var_34h) = v0;
    0x0000b0dc lw v0, (v0)                   |     v0 = *(v0);
    0x0000b0e0 sw gp, 0x20(sp)               |     *(var_20h) = gp;
    0x0000b0e4 sw s7, 0x5c(sp)               |     *(var_5ch) = s7;
    0x0000b0e8 sw s4, 0x50(sp)               |     *(var_50h) = s4;
    0x0000b0ec sw a1, 0x30(sp)               |     *(var_30h) = a1;
    0x0000b0f0 sw ra, 0x64(sp)               |     *(var_64h) = ra;
    0x0000b0f4 sw fp, 0x60(sp)               |     *(var_60h) = fp;
    0x0000b0f8 sw s6, 0x58(sp)               |     *(var_58h) = s6;
    0x0000b0fc sw s5, 0x54(sp)               |     *(var_54h) = s5;
    0x0000b100 sw s3, 0x4c(sp)               |     *(var_4ch) = s3;
    0x0000b104 sw s2, 0x48(sp)               |     *(var_48h) = s2;
    0x0000b108 sw s1, 0x44(sp)               |     *(var_44h) = s1;
    0x0000b10c sw s0, 0x40(sp)               |     *(var_40h) = s0;
    0x0000b110 move a1, zero                 |     a1 = 0;
    0x0000b114 sw v0, 0x3c(sp)               |     *(var_3ch) = v0;
    0x0000b118 move s7, a0                   |     s7 = a0;
    0x0000b11c move s4, a2                   |     s4 = a2;
    0x0000b120 jalr t9                       |     t9 ();
    0x0000b124 lw gp, 0x20(sp)               |     gp = *(var_20h);
                                             |     if (v0 == 0) {
    0x0000b128 beqz v0, 0xb37c               |         goto label_3;
                                             |     }
    0x0000b12c lw t9, -0x7c0c(gp)            |     t9 = sym.imp.g_dir_read_name;
    0x0000b130 move a0, v0                   |     a0 = v0;
    0x0000b134 move s1, v0                   |     s1 = v0;
    0x0000b138 jalr t9                       |     t9 ();
    0x0000b13c move s0, v0                   |     s0 = v0;
    0x0000b140 lw gp, 0x20(sp)               |     gp = *(var_20h);
                                             |     if (v0 == 0) {
    0x0000b144 beqz v0, 0xb364               |         goto label_4;
                                             |     }
    0x0000b148 lw s6, -0x7fd8(gp)            |     s6 = *(gp);
    0x0000b14c lw s5, -0x7fd8(gp)            |     s5 = *(gp);
    0x0000b150 lw s3, -0x7fd8(gp)            |     s3 = *(gp);
    0x0000b154 lw fp, -0x7fd8(gp)            |     fp = *(gp);
    0x0000b158 move s2, zero                 |     s2 = 0;
    0x0000b15c addiu s6, s6, -0x1cc          |     s6 += -0x1cc;
    0x0000b160 addiu s5, s5, -0x1c4          |     s5 += -0x1c4;
    0x0000b164 b 0xb194                      |     goto label_5;
                                             | label_0:
    0x0000b168 lw t9, -0x7bc4(gp)            |     t9 = sym.imp.g_free;
    0x0000b16c move a0, s0                   |     a0 = s0;
    0x0000b170 jalr t9                       |     t9 ();
    0x0000b174 lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b178 addiu s2, s2, 1               |     s2++;
                                             |     do {
    0x0000b17c lw t9, -0x7c0c(gp)            |         t9 = sym.imp.g_dir_read_name;
    0x0000b180 move a0, s1                   |         a0 = s1;
    0x0000b184 jalr t9                       |         t9 ();
    0x0000b188 move s0, v0                   |         s0 = v0;
    0x0000b18c lw gp, 0x20(sp)               |         gp = *(var_20h);
                                             |         if (v0 == 0) {
    0x0000b190 beqz v0, 0xb368               |             goto label_6;
                                             |         }
                                             | label_5:
    0x0000b194 lw t9, -0x7ea8(gp)            |         t9 = sym.imp.g_str_has_suffix;
    0x0000b198 addiu a1, s3, -0x1d0          |         a1 = s3 + -0x1d0;
    0x0000b19c move a0, s0                   |         a0 = s0;
    0x0000b1a0 jalr t9                       |         t9 ();
    0x0000b1a4 lw gp, 0x20(sp)               |         gp = *(var_20h);
    0x0000b1a8 beqz v0, 0xb17c               |         
                                             |     } while (v0 == 0);
    0x0000b1ac lw t9, -0x7d14(gp)            |     t9 = sym.imp.g_strdup_printf
    0x0000b1b0 move a2, s0                   |     a2 = s0;
    0x0000b1b4 move a1, s7                   |     a1 = s7;
    0x0000b1b8 move a0, s6                   |     a0 = s6;
    0x0000b1bc jalr t9                       |     t9 ();
    0x0000b1c0 lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b1c4 move a3, v0                   |     a3 = v0;
    0x0000b1c8 move a2, s5                   |     a2 = s5;
    0x0000b1cc lw t9, -0x7f00(gp)            |     t9 = sym.imp.g_log;
    0x0000b1d0 addiu a1, zero, 0x20          |     a1 = 0x20;
    0x0000b1d4 move a0, zero                 |     a0 = 0;
    0x0000b1d8 move s0, v0                   |     s0 = v0;
    0x0000b1dc jalr t9                       |     t9 ();
    0x0000b1e0 lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b1e4 addiu a1, zero, 2             |     a1 = 2;
    0x0000b1e8 lw t9, -0x7e64(gp)            |     t9 = sym.imp.g_module_open;
    0x0000b1ec move a0, s0                   |     a0 = s0;
    0x0000b1f0 jalr t9                       |     t9 ();
    0x0000b1f4 lw gp, 0x20(sp)               |     gp = *(var_20h);
                                             |     if (v0 == 0) {
    0x0000b1f8 beqz v0, 0xb2c4               |         goto label_7;
                                             |     }
    0x0000b1fc lw t9, -0x7d4c(gp)            |     t9 = sym.imp.g_module_make_resident;
    0x0000b200 move a0, v0                   |     a0 = v0;
    0x0000b204 sw v0, 0x2c(sp)               |     *(var_2ch_2) = v0;
    0x0000b208 jalr t9                       |     t9 ();
    0x0000b20c lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b210 lw v0, 0x2c(sp)               |     v0 = *(var_2ch_2);
    0x0000b214 addiu a2, sp, 0x38            |     a2 = sp + 0x38;
    0x0000b218 lw t9, -0x7dac(gp)            |     t9 = sym.imp.g_module_symbol;
    0x0000b21c addiu a1, fp, -0x188          |     a1 = fp + -0x188;
    0x0000b220 move a0, v0                   |     a0 = v0;
    0x0000b224 jalr t9                       |     t9 ();
    0x0000b228 lw gp, 0x20(sp)               |     gp = *(var_20h);
                                             |     if (v0 == 0) {
    0x0000b22c beqz v0, 0xb310               |         goto label_8;
                                             |     }
    0x0000b230 lw a0, 0x30(sp)               |     a0 = *(var_30h);
    0x0000b234 lw t9, 0x38(sp)               |     t9 = *(var_38h);
    0x0000b238 move a1, s4                   |     a1 = s4;
    0x0000b23c jalr t9                       |     t9 ();
    0x0000b240 lw gp, 0x20(sp)               |     gp = *(var_20h);
                                             |     if (v0 != 0) {
    0x0000b244 bnez v0, 0xb168               |         goto label_0;
                                             |     }
    0x0000b248 lw t9, -0x7bc4(gp)            |     t9 = sym.imp.g_free;
                                             |     if (s4 == 0) {
    0x0000b24c beqz s4, 0xb260               |         goto label_9;
                                             |     }
    0x0000b250 lw v0, (s4)                   |     v0 = *(s4);
    0x0000b254 lw t9, -0x7f64(gp)            |     t9 = sym.video_service_error_quark;
                                             |     if (v0 == 0) {
    0x0000b258 beqz v0, 0xb384               |         goto label_10;
                                             |     }
                                             |     do {
                                             | label_1:
    0x0000b25c lw t9, -0x7bc4(gp)            |         t9 = sym.imp.g_free;
                                             | label_9:
    0x0000b260 move a0, s0                   |         a0 = s0;
    0x0000b264 jalr t9                       |         t9 ();
    0x0000b268 lw gp, 0x20(sp)               |         gp = *(var_20h);
    0x0000b26c move a0, s1                   |         a0 = s1;
    0x0000b270 lw t9, -0x7bf0(gp)            |         t9 = sym.imp.g_dir_close;
    0x0000b274 addiu s2, zero, -1            |         s2 = -1;
    0x0000b278 jalr t9                       |         t9 ();
    0x0000b27c lw gp, 0x20(sp)               |         gp = *(var_20h);
                                             | label_2:
    0x0000b280 lw v0, 0x34(sp)               |         v0 = *(var_34h);
    0x0000b284 lw a0, 0x3c(sp)               |         a0 = *(var_3ch);
    0x0000b288 lw v1, (v0)                   |         v1 = *(v0);
    0x0000b28c move v0, s2                   |         v0 = s2;
                                             |         if (a0 != v1) {
    0x0000b290 bne a0, v1, 0xb3b8            |             goto label_11;
                                             |         }
    0x0000b294 lw ra, 0x64(sp)               |         ra = *(var_64h);
    0x0000b298 lw fp, 0x60(sp)               |         fp = *(var_60h);
    0x0000b29c lw s7, 0x5c(sp)               |         s7 = *(var_5ch);
    0x0000b2a0 lw s6, 0x58(sp)               |         s6 = *(var_58h);
    0x0000b2a4 lw s5, 0x54(sp)               |         s5 = *(var_54h);
    0x0000b2a8 lw s4, 0x50(sp)               |         s4 = *(var_50h);
    0x0000b2ac lw s3, 0x4c(sp)               |         s3 = *(var_4ch);
    0x0000b2b0 lw s2, 0x48(sp)               |         s2 = *(var_48h);
    0x0000b2b4 lw s1, 0x44(sp)               |         s1 = *(var_44h);
    0x0000b2b8 lw s0, 0x40(sp)               |         s0 = *(var_40h);
    0x0000b2bc addiu sp, sp, 0x68            |         
    0x0000b2c0 jr ra                         |         return v1;
                                             | label_7:
    0x0000b2c4 lw t9, -0x7f64(gp)            |         t9 = sym.video_service_error_quark;
    0x0000b2c8 bal 0xaeb0                    |         sym_video_service_error_quark ();
    0x0000b2cc nop                           |         
    0x0000b2d0 lw gp, 0x20(sp)               |         gp = *(var_20h);
    0x0000b2d4 lw t9, -0x7e88(gp)            |         t9 = sym.imp.g_module_error;
    0x0000b2d8 move s2, v0                   |         s2 = v0;
    0x0000b2dc jalr t9                       |         t9 ();
    0x0000b2e0 lw gp, 0x20(sp)               |         gp = *(var_20h);
    0x0000b2e4 sw v0, 0x14(sp)               |         *(var_14h) = v0;
    0x0000b2e8 sw s0, 0x10(sp)               |         *(var_10h_3) = s0;
    0x0000b2ec lw a3, -0x7fd8(gp)            |         a3 = *(gp);
    0x0000b2f0 lw t9, -0x7d8c(gp)            |         t9 = sym.imp.g_set_error;
    0x0000b2f4 addiu a3, a3, -0x1b0          |         a3 += -0x1b0;
    0x0000b2f8 move a2, zero                 |         a2 = 0;
    0x0000b2fc move a1, s2                   |         a1 = s2;
    0x0000b300 move a0, s4                   |         a0 = s4;
    0x0000b304 jalr t9                       |         t9 ();
    0x0000b308 lw gp, 0x20(sp)               |         gp = *(var_20h);
    0x0000b30c b 0xb25c                      |         
                                             |     } while (1);
                                             | label_8:
    0x0000b310 lw t9, -0x7f64(gp)            |     t9 = sym.video_service_error_quark;
    0x0000b314 bal 0xaeb0                    |     sym_video_service_error_quark ();
    0x0000b318 nop                           |     
    0x0000b31c lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b320 lw t9, -0x7e88(gp)            |     t9 = sym.imp.g_module_error;
    0x0000b324 move s2, v0                   |     s2 = v0;
    0x0000b328 jalr t9                       |     t9 ();
    0x0000b32c lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b330 addiu v1, fp, -0x188          |     v1 = fp + -0x188;
    0x0000b334 sw v0, 0x18(sp)               |     *(var_18h_2) = v0;
    0x0000b338 lw a3, -0x7fd8(gp)            |     a3 = *(gp);
    0x0000b33c lw t9, -0x7d8c(gp)            |     t9 = sym.imp.g_set_error;
    0x0000b340 sw s0, 0x14(sp)               |     *(var_14h) = s0;
    0x0000b344 sw v1, 0x10(sp)               |     *(var_10h_3) = v1;
    0x0000b348 addiu a3, a3, -0x16c          |     a3 += -0x16c;
    0x0000b34c move a2, zero                 |     a2 = 0;
    0x0000b350 move a1, s2                   |     a1 = s2;
    0x0000b354 move a0, s4                   |     a0 = s4;
    0x0000b358 jalr t9                       |     t9 ();
    0x0000b35c lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b360 b 0xb25c                      |     goto label_1;
                                             | label_4:
    0x0000b364 move s2, zero                 |     s2 = 0;
                                             | label_6:
    0x0000b368 lw t9, -0x7bf0(gp)            |     t9 = sym.imp.g_dir_close;
    0x0000b36c move a0, s1                   |     a0 = s1;
    0x0000b370 jalr t9                       |     t9 ();
    0x0000b374 lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b378 b 0xb280                      |     goto label_2;
                                             | label_3:
    0x0000b37c move s2, zero                 |     s2 = 0;
    0x0000b380 b 0xb280                      |     goto label_2;
                                             | label_10:
    0x0000b384 bal 0xaeb0                    |     sym_video_service_error_quark ();
    0x0000b388 nop                           |     
    0x0000b38c lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b390 sw s0, 0x10(sp)               |     *(var_10h_3) = s0;
    0x0000b394 move a2, zero                 |     a2 = 0;
    0x0000b398 lw a3, -0x7fd8(gp)            |     a3 = *(gp);
    0x0000b39c lw t9, -0x7d8c(gp)            |     t9 = sym.imp.g_set_error;
    0x0000b3a0 addiu a3, a3, -0x12c          |     a3 += -0x12c;
    0x0000b3a4 move a1, v0                   |     a1 = v0;
    0x0000b3a8 move a0, s4                   |     a0 = s4;
    0x0000b3ac jalr t9                       |     t9 ();
    0x0000b3b0 lw gp, 0x20(sp)               |     gp = *(var_20h);
    0x0000b3b4 b 0xb25c                      |     goto label_1;
                                             | label_11:
    0x0000b3b8 lw t9, -0x7e00(gp)            |     t9 = sym.imp.__stack_chk_fail;
    0x0000b3bc jalr t9                       |     t9 ();
    0x0000b3c0 nop                           |     
    0x0000b3c4 nop                           |     
    0x0000b3c8 nop                           |     
    0x0000b3cc nop                           |     
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/video-service @ 0xcea8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.video_channel_new ()         | void video_channel_new () {
    0x0000cea8 lui gp, 2                     |     
    0x0000ceac addiu gp, gp, -0x3e88         |     
    0x0000ceb0 addu gp, gp, t9               |     gp += t9;
    0x0000ceb4 addiu sp, sp, -0x58           |     
    0x0000ceb8 move a1, a0                   |     a1 = a0;
    0x0000cebc sw s2, 0x40(sp)               |     *(var_40h) = s2;
    0x0000cec0 lw s2, -0x7d98(gp)            |     s2 = *((gp - 8038));
    0x0000cec4 sw s3, 0x44(sp)               |     *(var_44h) = s3;
    0x0000cec8 move s3, a0                   |     s3 = a0;
    0x0000cecc lw v0, (s2)                   |     v0 = *(s2);
    0x0000ced0 lw a0, -0x7fd8(gp)            |     a0 = *(gp);
    0x0000ced4 lw t9, -0x7d14(gp)            |     t9 = sym.imp.g_strdup_printf
    0x0000ced8 sw gp, 0x28(sp)               |     *(var_28h) = gp;
    0x0000cedc sw ra, 0x54(sp)               |     *(var_54h) = ra;
    0x0000cee0 sw s1, 0x3c(sp)               |     *(var_3ch) = s1;
    0x0000cee4 sw s0, 0x38(sp)               |     *(var_38h) = s0;
                                             |     /* str.Channel__u */
    0x0000cee8 addiu a0, a0, 0xc8            |     a0 += 0xc8;
    0x0000ceec sw s6, 0x50(sp)               |     *(var_50h) = s6;
    0x0000cef0 sw s5, 0x4c(sp)               |     *(var_4ch) = s5;
    0x0000cef4 sw s4, 0x48(sp)               |     *(var_48h) = s4;
    0x0000cef8 sw v0, 0x34(sp)               |     *(var_34h) = v0;
    0x0000cefc sw zero, 0x30(sp)             |     *(var_30h) = 0;
    0x0000cf00 addiu s1, sp, 0x30            |     s1 = sp + 0x30;
    0x0000cf04 jalr t9                       |     t9 ();
    0x0000cf08 lw gp, 0x28(sp)               |     gp = *(var_28h);
    0x0000cf0c move a2, s1                   |     a2 = s1;
    0x0000cf10 lw a1, -0x7fd8(gp)            |     a1 = *(gp);
    0x0000cf14 lw t9, -0x7f50(gp)            |     t9 = sym.video_service_dbus_video1_channel_proxy_new;
    0x0000cf18 addiu a1, a1, -0xbe4          |     a1 += -0xbe4;
    0x0000cf1c move a0, v0                   |     a0 = v0;
    0x0000cf20 move s0, v0                   |     s0 = v0;
    0x0000cf24 bal 0xbbf0                    |     sym_settings_get_int ();
    0x0000cf28 lw v1, 0x30(sp)               |     v1 = *(var_30h);
    0x0000cf2c lw gp, 0x28(sp)               |     gp = *(var_28h);
                                             |     if (v1 != 0) {
    0x0000cf30 bnez v1, 0xd098               |         goto label_1;
                                             |     }
    0x0000cf34 lw a1, -0x7fd8(gp)            |     a1 = *(gp);
    0x0000cf38 lw t9, -0x7f4c(gp)            |     t9 = sym.settings_get_boolean;
    0x0000cf3c move a2, s1                   |     a2 = s1;
    0x0000cf40 addiu a1, a1, -0xbd8          |     a1 += -0xbd8;
    0x0000cf44 move a0, s0                   |     a0 = s0;
    0x0000cf48 move s4, v0                   |     s4 = v0;
    0x0000cf4c bal 0xbdd4                    |     sym_settings_get_boolean ();
    0x0000cf50 lw v1, 0x30(sp)               |     v1 = *(var_30h);
    0x0000cf54 lw gp, 0x28(sp)               |     gp = *(var_28h);
    0x0000cf58 move s6, v0                   |     s6 = v0;
                                             |     if (v1 != 0) {
    0x0000cf5c bnez v1, 0xd054               |         goto label_2;
                                             |     }
    0x0000cf60 lw a1, -0x7fd8(gp)            |     a1 = *(gp);
    0x0000cf64 lw t9, -0x7f48(gp)            |     t9 = sym.settings_get_string;
    0x0000cf68 lw s5, -0x7f80(gp)            |     s5 = sym.video_channel_get_type;
    0x0000cf6c move a2, zero                 |     a2 = 0;
    0x0000cf70 addiu a1, a1, -0xbd0          |     a1 += -0xbd0;
    0x0000cf74 move a0, s0                   |     a0 = s0;
    0x0000cf78 bal 0xba38                    |     sym_settings_get_string ();
    0x0000cf7c move t9, s5                   |     t9 = s5;
    0x0000cf80 move s1, v0                   |     s1 = v0;
    0x0000cf84 bal 0xc6d8                    |     sym_video_channel_get_type ();
    0x0000cf88 lw gp, 0x28(sp)               |     gp = *(var_28h);
    0x0000cf8c move a0, v0                   |     a0 = v0;
    0x0000cf90 move a2, s3                   |     a2 = s3;
    0x0000cf94 lw v0, -0x7fd8(gp)            |     v0 = *(gp);
    0x0000cf98 lw a3, -0x7fd8(gp)            |     a3 = *(gp);
    0x0000cf9c addiu v0, v0, -0x4f8          |     v0 += -0x4f8;
    0x0000cfa0 sw v0, 0x1c(sp)               |     *(var_1ch) = v0;
    0x0000cfa4 lw v0, -0x7fd8(gp)            |     v0 = *(gp);
    0x0000cfa8 lw a1, -0x7fd8(gp)            |     a1 = *(gp);
    0x0000cfac lw t9, -0x7d00(gp)            |     t9 = sym.imp.g_object_new;
    0x0000cfb0 addiu v0, v0, -0x508          |     v0 += -0x508;
                                             |     /* esilref: 'compression' */
    0x0000cfb4 addiu a3, a3, 0x8c            |     a3 += 0x8c;
                                             |     /* esilref: 'id' */
    0x0000cfb8 addiu a1, a1, 0x64            |     a1 += 0x64;
    0x0000cfbc sw s1, 0x20(sp)               |     *(var_20h) = s1;
    0x0000cfc0 sw zero, 0x24(sp)             |     *(var_24h) = 0;
    0x0000cfc4 sw s6, 0x18(sp)               |     *(var_18h) = s6;
    0x0000cfc8 sw v0, 0x14(sp)               |     *(var_14h) = v0;
    0x0000cfcc sw s4, 0x10(sp)               |     *(var_10h) = s4;
    0x0000cfd0 jalr t9                       |     t9 ();
    0x0000cfd4 move t9, s5                   |     t9 = s5;
    0x0000cfd8 move s3, v0                   |     s3 = v0;
    0x0000cfdc bal 0xc6d8                    |     sym_video_channel_get_type ();
    0x0000cfe0 lw gp, 0x28(sp)               |     gp = *(var_28h);
    0x0000cfe4 move a1, v0                   |     a1 = v0;
    0x0000cfe8 lw t9, -0x7df8(gp)            |     t9 = sym.imp.g_type_check_instance_cast;
    0x0000cfec move a0, s3                   |     a0 = s3;
    0x0000cff0 jalr t9                       |     t9 ();
    0x0000cff4 lw gp, 0x28(sp)               |     gp = *(var_28h);
    0x0000cff8 move a0, s1                   |     a0 = s1;
    0x0000cffc lw t9, -0x7bc4(gp)            |     t9 = sym.imp.g_free;
    0x0000d000 move s1, v0                   |     s1 = v0;
    0x0000d004 jalr t9                       |     t9 ();
    0x0000d008 lw gp, 0x28(sp)               |     gp = *(var_28h);
    0x0000d00c lw t9, -0x7bc4(gp)            |     t9 = sym.imp.g_free;
    0x0000d010 move a0, s0                   |     a0 = s0;
    0x0000d014 jalr t9                       |     t9 ();
    0x0000d018 lw gp, 0x28(sp)               |     gp = *(var_28h);
                                             |     do {
    0x0000d01c lw a0, 0x34(sp)               |         a0 = *(var_34h);
    0x0000d020 lw v1, (s2)                   |         v1 = *(s2);
    0x0000d024 move v0, s1                   |         v0 = s1;
                                             |         if (a0 != v1) {
    0x0000d028 bne a0, v1, 0xd0a8            |             goto label_3;
                                             |         }
    0x0000d02c lw ra, 0x54(sp)               |         ra = *(var_54h);
    0x0000d030 lw s6, 0x50(sp)               |         s6 = *(var_50h);
    0x0000d034 lw s5, 0x4c(sp)               |         s5 = *(var_4ch);
    0x0000d038 lw s4, 0x48(sp)               |         s4 = *(var_48h);
    0x0000d03c lw s3, 0x44(sp)               |         s3 = *(var_44h);
    0x0000d040 lw s2, 0x40(sp)               |         s2 = *(var_40h);
    0x0000d044 lw s1, 0x3c(sp)               |         s1 = *(var_3ch);
    0x0000d048 lw s0, 0x38(sp)               |         s0 = *(var_38h);
    0x0000d04c addiu sp, sp, 0x58            |         
    0x0000d050 jr ra                         |         return v0;
                                             | label_2:
    0x0000d054 lw a2, -0x7fd8(gp)            |         a2 = *(gp);
    0x0000d058 lw t9, -0x7f00(gp)            |         t9 = sym.imp.g_log;
                                             |         /* str._3_Failed_to_get_Enabled_from_settings. */
    0x0000d05c addiu a2, a2, 0x200           |         a2 += 0x200;
                                             | label_0:
    0x0000d060 addiu a1, zero, 0x20          |         a1 = 0x20;
    0x0000d064 move a0, zero                 |         a0 = 0;
    0x0000d068 jalr t9                       |         t9 ();
    0x0000d06c lw gp, 0x28(sp)               |         gp = *(var_28h);
    0x0000d070 move a0, s1                   |         a0 = s1;
    0x0000d074 lw t9, -0x7c54(gp)            |         t9 = sym.imp.g_clear_error;
    0x0000d078 move s1, zero                 |         s1 = 0;
    0x0000d07c jalr t9                       |         t9 ();
    0x0000d080 lw gp, 0x28(sp)               |         gp = *(var_28h);
    0x0000d084 lw t9, -0x7bc4(gp)            |         t9 = sym.imp.g_free;
    0x0000d088 move a0, s0                   |         a0 = s0;
    0x0000d08c jalr t9                       |         t9 ();
    0x0000d090 lw gp, 0x28(sp)               |         gp = *(var_28h);
    0x0000d094 b 0xd01c                      |         
                                             |     } while (1);
                                             | label_1:
    0x0000d098 lw a2, -0x7fd8(gp)            |     a2 = *(gp);
    0x0000d09c lw t9, -0x7f00(gp)            |     t9 = sym.imp.g_log;
                                             |     /* str._3_Failed_to_get_Compression_from_settings. */
    0x0000d0a0 addiu a2, a2, 0x1d4           |     a2 += 0x1d4;
    0x0000d0a4 b 0xd060                      |     goto label_0;
                                             | label_3:
    0x0000d0a8 lw t9, -0x7e00(gp)            |     t9 = sym.imp.__stack_chk_fail;
    0x0000d0ac jalr t9                       |     t9 ();
    0x0000d0b0 nop                           |     
    0x0000d0b4 nop                           |     
    0x0000d0b8 nop                           |     
    0x0000d0bc nop                           |     
    0x0000d0c0 jr ra                         |     return v0;
    0x0000d0c4 nop                           |     
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/video-service @ 0xd750 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.video_source_new ()          | void video_source_new () {
    0x0000d750 lui gp, 2                     |     
    0x0000d754 addiu gp, gp, -0x4730         |     
    0x0000d758 addu gp, gp, t9               |     gp += t9;
    0x0000d75c addiu sp, sp, -0x48           |     
    0x0000d760 move a1, a0                   |     a1 = a0;
    0x0000d764 sw s0, 0x30(sp)               |     *(var_30h) = s0;
    0x0000d768 lw s0, -0x7d98(gp)            |     s0 = *((gp - 8038));
    0x0000d76c sw s3, 0x3c(sp)               |     *(var_3ch) = s3;
    0x0000d770 move s3, a0                   |     s3 = a0;
    0x0000d774 lw v0, (s0)                   |     v0 = *(s0);
    0x0000d778 lw a0, -0x7fd8(gp)            |     a0 = *(gp);
    0x0000d77c lw t9, -0x7d14(gp)            |     t9 = sym.imp.g_strdup_printf
    0x0000d780 sw gp, 0x18(sp)               |     *(var_18h) = gp;
    0x0000d784 sw ra, 0x44(sp)               |     *(var_44h) = ra;
    0x0000d788 sw s2, 0x38(sp)               |     *(var_38h) = s2;
    0x0000d78c sw s1, 0x34(sp)               |     *(var_34h) = s1;
                                             |     /* str.Source__u */
    0x0000d790 addiu a0, a0, 0x29c           |     a0 += 0x29c;
    0x0000d794 sw s4, 0x40(sp)               |     *(var_40h) = s4;
    0x0000d798 sw v0, 0x2c(sp)               |     *(var_2ch) = v0;
    0x0000d79c sw zero, 0x28(sp)             |     *(var_28h) = 0;
    0x0000d7a0 addiu s2, sp, 0x28            |     s2 = sp + 0x28;
    0x0000d7a4 jalr t9                       |     t9 ();
    0x0000d7a8 lw gp, 0x18(sp)               |     gp = *(var_18h);
    0x0000d7ac move a2, s2                   |     a2 = s2;
    0x0000d7b0 lw a1, -0x7fd8(gp)            |     a1 = *(gp);
    0x0000d7b4 lw t9, -0x7f50(gp)            |     t9 = sym.video_service_dbus_video1_channel_proxy_new;
                                             |     /* str.CaptureModeIndex */
    0x0000d7b8 addiu a1, a1, 0x274           |     a1 += 0x274;
    0x0000d7bc move a0, v0                   |     a0 = v0;
    0x0000d7c0 move s1, v0                   |     s1 = v0;
    0x0000d7c4 bal 0xbbf0                    |     sym_settings_get_int ();
    0x0000d7c8 lw v1, 0x28(sp)               |     v1 = *(var_28h);
    0x0000d7cc lw gp, 0x18(sp)               |     gp = *(var_18h);
                                             |     if (v1 == 0) {
    0x0000d7d0 beqz v1, 0xd88c               |         goto label_0;
                                             |     }
    0x0000d7d4 lw t9, -0x7c54(gp)            |     t9 = sym.imp.g_clear_error;
    0x0000d7d8 move a0, s2                   |     a0 = s2;
    0x0000d7dc jalr t9                       |     t9 ();
    0x0000d7e0 lw gp, 0x18(sp)               |     gp = *(var_18h);
    0x0000d7e4 addiu s4, zero, -1            |     s4 = -1;
                                             |     do {
    0x0000d7e8 lw s2, -0x7f44(gp)            |         s2 = sym.video_source_get_type;
    0x0000d7ec move t9, s2                   |         t9 = s2;
    0x0000d7f0 bal 0xd27c                    |         sym_video_source_get_type ();
    0x0000d7f4 nop                           |         
    0x0000d7f8 lw gp, 0x18(sp)               |         gp = *(var_18h);
    0x0000d7fc move a2, s3                   |         a2 = s3;
    0x0000d800 move a0, v0                   |         a0 = v0;
    0x0000d804 lw a3, -0x7fd8(gp)            |         a3 = *(gp);
    0x0000d808 lw a1, -0x7fd8(gp)            |         a1 = *(gp);
    0x0000d80c lw t9, -0x7d00(gp)            |         t9 = sym.imp.g_object_new;
                                             |         /* str.capture_mode_index */
    0x0000d810 addiu a3, a3, 0x288           |         a3 += 0x288;
                                             |         /* esilref: 'id' */
    0x0000d814 addiu a1, a1, 0x64            |         a1 += 0x64;
    0x0000d818 sw zero, 0x14(sp)             |         *(var_14h) = 0;
    0x0000d81c sw s4, 0x10(sp)               |         *(var_10h) = s4;
    0x0000d820 jalr t9                       |         t9 ();
    0x0000d824 move t9, s2                   |         t9 = s2;
    0x0000d828 move s3, v0                   |         s3 = v0;
    0x0000d82c bal 0xd27c                    |         sym_video_source_get_type ();
    0x0000d830 lw gp, 0x18(sp)               |         gp = *(var_18h);
    0x0000d834 move a1, v0                   |         a1 = v0;
    0x0000d838 lw t9, -0x7df8(gp)            |         t9 = sym.imp.g_type_check_instance_cast;
    0x0000d83c move a0, s3                   |         a0 = s3;
    0x0000d840 jalr t9                       |         t9 ();
    0x0000d844 lw gp, 0x18(sp)               |         gp = *(var_18h);
    0x0000d848 move a0, s1                   |         a0 = s1;
    0x0000d84c lw t9, -0x7bc4(gp)            |         t9 = sym.imp.g_free;
    0x0000d850 sw v0, 0x24(sp)               |         *(var_24h) = v0;
    0x0000d854 jalr t9                       |         t9 ();
    0x0000d858 lw a0, 0x2c(sp)               |         a0 = *(var_2ch);
    0x0000d85c lw v1, (s0)                   |         v1 = *(s0);
    0x0000d860 lw gp, 0x18(sp)               |         gp = *(var_18h);
    0x0000d864 lw v0, 0x24(sp)               |         v0 = *(var_24h);
                                             |         if (a0 != v1) {
    0x0000d868 bne a0, v1, 0xd894            |             goto label_1;
                                             |         }
    0x0000d86c lw ra, 0x44(sp)               |         ra = *(var_44h);
    0x0000d870 lw s4, 0x40(sp)               |         s4 = *(var_40h);
    0x0000d874 lw s3, 0x3c(sp)               |         s3 = *(var_3ch);
    0x0000d878 lw s2, 0x38(sp)               |         s2 = *(var_38h);
    0x0000d87c lw s1, 0x34(sp)               |         s1 = *(var_34h);
    0x0000d880 lw s0, 0x30(sp)               |         s0 = *(var_30h);
    0x0000d884 addiu sp, sp, 0x48            |         
    0x0000d888 jr ra                         |         return v0;
                                             | label_0:
    0x0000d88c move s4, v0                   |         s4 = v0;
    0x0000d890 b 0xd7e8                      |         
                                             |     } while (1);
                                             | label_1:
    0x0000d894 lw t9, -0x7e00(gp)            |     t9 = sym.imp.__stack_chk_fail;
    0x0000d898 jalr t9                       |     t9 ();
    0x0000d89c nop                           |     
    0x0000d8a0 sw zero, 0xc(a0)              |     *((a0 + 3)) = 0;
    0x0000d8a4 sw zero, 0x10(a0)             |     *((a0 + 4)) = 0;
    0x0000d8a8 jr ra                         |     return v0;
                                             | }

[*] Function printf used 5 times video-service