[*] Binary protection state of ruleengined

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


[*] Function printf tear down of ruleengined

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/ruleengined @ 0x8204 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.scene_consumer_new ()    | void scene_consumer_new () {
    0x00008204 lui gp, 2                 |     
    0x00008208 addiu gp, gp, -0x1f4      |     
    0x0000820c addu gp, gp, t9           |     gp += t9;
    0x00008210 addiu sp, sp, -0x48       |     
    0x00008214 lw t9, -0x7d20(gp)        |     t9 = sym.imp.g_slice_alloc0;
    0x00008218 sw ra, 0x44(sp)           |     *(var_44h) = ra;
    0x0000821c sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x00008220 sw s3, 0x2c(sp)           |     *(var_2ch) = s3;
    0x00008224 sw s2, 0x28(sp)           |     *(var_28h) = s2;
    0x00008228 sw s1, 0x24(sp)           |     *(var_24h) = s1;
    0x0000822c sw s0, 0x20(sp)           |     *(var_20h) = s0;
    0x00008230 sw fp, 0x40(sp)           |     *(var_40h) = fp;
    0x00008234 move s0, a0               |     s0 = a0;
    0x00008238 sw s7, 0x3c(sp)           |     *(var_3ch) = s7;
    0x0000823c addiu a0, zero, 0x28      |     a0 = 0x28;
    0x00008240 sw s6, 0x38(sp)           |     *(var_38h) = s6;
    0x00008244 sw s5, 0x34(sp)           |     *(var_34h) = s5;
    0x00008248 sw s4, 0x30(sp)           |     *(var_30h) = s4;
    0x0000824c move s3, a1               |     s3 = a1;
    0x00008250 move s2, a2               |     s2 = a2;
    0x00008254 move s1, a3               |     s1 = a3;
    0x00008258 jalr t9                   |     t9 ();
    0x0000825c lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008260 move a0, s0               |     a0 = s0;
    0x00008264 lw t9, -0x7c98(gp)        |     t9 = sym.imp.g_strdup;
    0x00008268 move s0, v0               |     s0 = v0;
    0x0000826c jalr t9                   |     t9 ();
    0x00008270 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008274 sw v0, (s0)               |     *(s0) = v0;
    0x00008278 sw s3, 4(s0)              |     *((s0 + 1)) = s3;
    0x0000827c lw t9, -0x7b70(gp)        |     t9 = sym.imp.xmlnode_load_file;
    0x00008280 sw s2, 8(s0)              |     *((s0 + 2)) = s2;
    0x00008284 sw s1, 0xc(s0)            |     *((s0 + 3)) = s1;
    0x00008288 move a0, v0               |     a0 = v0;
    0x0000828c jalr t9                   |     t9 ();
    0x00008290 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008294 sw v0, 0x10(s0)           |     *((s0 + 4)) = v0;
                                         |     if (v0 == 0) {
    0x00008298 beqz v0, 0x883c           |         goto label_6;
                                         |     }
    0x0000829c lw t9, -0x7fd0(gp)        |     t9 = *((gp - 8180));
    0x000082a0 move a1, v0               |     a1 = v0;
    0x000082a4 addiu t9, t9, -0x7ee0     |     t9 += -0x7ee0;
    0x000082a8 addiu a0, s0, 0xc         |     a0 = s0 + 0xc;
    0x000082ac bal 0x8120                |     fcn_00008120 ();
    0x000082b0 move s4, v0               |     s4 = v0;
    0x000082b4 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000082b8 beqz v0, 0x8828           |         goto label_7;
                                         |     }
    0x000082bc lw s1, -0x7fd0(gp)        |     s1 = *((gp - 8180));
    0x000082c0 lw t9, -0x7c04(gp)        |     t9 = sym.imp.lua_env_create_instance;
    0x000082c4 sw s1, 0x1c(sp)           |     *(var_1ch) = s1;
    0x000082c8 jalr t9                   |     t9 ();
    0x000082cc lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000082d0 move a0, v0               |     a0 = v0;
    0x000082d4 lw t9, -0x7eb0(gp)        |     t9 = sym.imp.lua_env_lock;
    0x000082d8 sw v0, 0x14(s0)           |     *((s0 + 5)) = v0;
    0x000082dc jalr t9                   |     t9 ();
    0x000082e0 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000082e4 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x000082e8 move a3, zero             |     a3 = 0;
    0x000082ec lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x000082f0 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x000082f4 lw t9, -0x7ec8(gp)        |     t9 = sym.imp.lua_env_loadlib;
    0x000082f8 addiu a2, a2, -0x1240     |     a2 += -0x1240;
    0x000082fc addiu a1, a1, -0x122c     |     a1 += -0x122c;
    0x00008300 jalr t9                   |     t9 ();
    0x00008304 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008308 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x0000830c move a3, zero             |     a3 = 0;
    0x00008310 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00008314 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x00008318 lw t9, -0x7ec8(gp)        |     t9 = sym.imp.lua_env_loadlib;
    0x0000831c addiu a2, a2, -0x1220     |     a2 += -0x1220;
    0x00008320 addiu a1, a1, -0x1208     |     a1 += -0x1208;
    0x00008324 jalr t9                   |     t9 ();
    0x00008328 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x0000832c lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x00008330 move a3, zero             |     a3 = 0;
    0x00008334 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00008338 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x0000833c lw t9, -0x7ec8(gp)        |     t9 = sym.imp.lua_env_loadlib;
    0x00008340 addiu a2, a2, -0x11f8     |     a2 += -0x11f8;
    0x00008344 addiu a1, a1, -0x11e8     |     a1 += -0x11e8;
    0x00008348 jalr t9                   |     t9 ();
    0x0000834c lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008350 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x00008354 move a3, zero             |     a3 = 0;
    0x00008358 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x0000835c lw t9, -0x7ec8(gp)        |     t9 = sym.imp.lua_env_loadlib;
    0x00008360 addiu a2, a2, -0x11e0     |     a2 += -0x11e0;
    0x00008364 addiu a1, s1, -0x11c8     |     a1 = s1 + -0x11c8;
    0x00008368 jalr t9                   |     t9 ();
    0x0000836c lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008370 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x00008374 move a3, zero             |     a3 = 0;
    0x00008378 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x0000837c lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x00008380 lw t9, -0x7ec8(gp)        |     t9 = sym.imp.lua_env_loadlib;
    0x00008384 addiu a2, a2, -0x11b8     |     a2 += -0x11b8;
    0x00008388 addiu a1, a1, -0x11a8     |     a1 += -0x11a8;
    0x0000838c jalr t9                   |     t9 ();
    0x00008390 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008394 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x00008398 move a3, zero             |     a3 = 0;
    0x0000839c lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x000083a0 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x000083a4 lw t9, -0x7ec8(gp)        |     t9 = sym.imp.lua_env_loadlib;
    0x000083a8 addiu a2, a2, -0x11a0     |     a2 += -0x11a0;
    0x000083ac addiu a1, a1, -0x118c     |     a1 += -0x118c;
    0x000083b0 jalr t9                   |     t9 ();
    0x000083b4 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000083b8 move a0, s4               |     a0 = s4;
    0x000083bc lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x000083c0 lw t9, -0x7cf8(gp)        |     t9 = sym.imp.xmlnode_find_tag;
    0x000083c4 addiu a1, a1, -0x1184     |     a1 += -0x1184;
    0x000083c8 jalr t9                   |     t9 ();
    0x000083cc lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000083d0 beqz v0, 0x84a4           |         goto label_8;
                                         |     }
    0x000083d4 lw s1, 0x10(v0)           |     s1 = *((v0 + 4));
    0x000083d8 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
                                         |     if (s1 == 0) {
    0x000083dc beqz s1, 0x84a4           |         goto label_8;
                                         |     }
    0x000083e0 lw s6, -0x7fd0(gp)        |     s6 = *((gp - 8180));
    0x000083e4 lw s5, -0x7fd0(gp)        |     s5 = *((gp - 8180));
    0x000083e8 sw v0, 0x18(sp)           |     *(var_18h) = v0;
    0x000083ec addiu s6, s6, -0xb30      |     s6 += -0xb30;
    0x000083f0 addiu s5, s5, -0x11f0     |     s5 += -0x11f0;
    0x000083f4 lw s3, (s1)               |     s3 = *(s1);
                                         |     do {
    0x000083f8 lw t9, -0x7c68(gp)        |         t9 = sym.imp.xmlnode_get_attribute_value;
    0x000083fc move a1, s6               |         a1 = s6;
    0x00008400 move a0, s3               |         a0 = s3;
                                         |         if (s3 != 0) {
    0x00008404 beqz s3, 0x8498           |             
    0x00008408 jalr t9                   |             t9 ();
    0x0000840c nop                       |             
    0x00008410 lw gp, 0x10(sp)           |             gp = *(var_10h);
    0x00008414 addiu a1, zero, -1        |             a1 = -1;
    0x00008418 move s2, v0               |             s2 = v0;
    0x0000841c move a0, v0               |             a0 = v0;
    0x00008420 lw t9, -0x7d98(gp)        |             t9 = sym.imp.g_ascii_strdown;
                                         |             if (v0 == 0) {
    0x00008424 beqz v0, 0x8498           |                 goto label_9;
                                         |             }
    0x00008428 jalr t9                   |             t9 ();
    0x0000842c nop                       |             
    0x00008430 lw gp, 0x10(sp)           |             gp = *(var_10h);
    0x00008434 move a1, v0               |             a1 = v0;
    0x00008438 move s7, v0               |             s7 = v0;
    0x0000843c lw v0, 0x18(sp)           |             v0 = *(var_18h);
    0x00008440 lw t9, -0x7e10(gp)        |             t9 = sym.imp.g_strconcat;
    0x00008444 move a3, zero             |             a3 = 0;
    0x00008448 move a2, s5               |             a2 = s5;
    0x0000844c addiu a0, v0, -0x1178     |             a0 = v0 + -0x1178;
    0x00008450 jalr t9                   |             t9 ();
    0x00008454 lw gp, 0x10(sp)           |             gp = *(var_10h);
    0x00008458 lw a3, 8(s3)              |             a3 = *((s3 + 2));
    0x0000845c lw a0, 0x14(s0)           |             a0 = *((s0 + 5));
    0x00008460 lw t9, -0x7ec8(gp)        |             t9 = sym.imp.lua_env_loadlib;
    0x00008464 move a2, v0               |             a2 = v0;
    0x00008468 move a1, s2               |             a1 = s2;
    0x0000846c move fp, v0               |             fp = v0;
    0x00008470 jalr t9                   |             t9 ();
    0x00008474 lw gp, 0x10(sp)           |             gp = *(var_10h);
    0x00008478 lw t9, -0x7d9c(gp)        |             t9 = *((gp - 8039));
    0x0000847c move a0, s7               |             a0 = s7;
    0x00008480 jalr t9                   |             t9 ();
    0x00008484 lw gp, 0x10(sp)           |             gp = *(var_10h);
    0x00008488 lw t9, -0x7d9c(gp)        |             t9 = *((gp - 8039));
    0x0000848c move a0, fp               |             a0 = fp;
    0x00008490 jalr t9                   |             t9 ();
    0x00008494 lw gp, 0x10(sp)           |             gp = *(var_10h);
                                         |         }
                                         | label_9:
    0x00008498 lw s1, 4(s1)              |         s1 = *((s1 + 1));
    0x0000849c lw s3, (s1)               |         s3 = *(s1);
    0x000084a0 bnel s1, zero, 0x83f8     |         
                                         |     } while (s1 == 0);
                                         | label_8:
    0x000084a4 lw t9, -0x7e2c(gp)        |     t9 = sym.imp.lua_env_loadlib_complete;
    0x000084a8 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x000084ac jalr t9                   |     t9 ();
    0x000084b0 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000084b4 beqz v0, 0x88b0           |         goto label_10;
                                         |     }
    0x000084b8 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x000084bc lw t9, -0x7cf8(gp)        |     t9 = sym.imp.xmlnode_find_tag;
    0x000084c0 addiu a1, a1, -0x1174     |     a1 += -0x1174;
    0x000084c4 move a0, s4               |     a0 = s4;
    0x000084c8 jalr t9                   |     t9 ();
    0x000084cc lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x000084d0 beqz v0, 0x8520           |         
    0x000084d4 lw a1, -0x7fd0(gp)        |         a1 = *((gp - 8180));
    0x000084d8 lw t9, -0x7cf8(gp)        |         t9 = sym.imp.xmlnode_find_tag;
    0x000084dc addiu a1, a1, -0x116c     |         a1 += -0x116c;
    0x000084e0 move a0, v0               |         a0 = v0;
    0x000084e4 jalr t9                   |         t9 ();
    0x000084e8 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (v0 == 0) {
    0x000084ec beqz v0, 0x8520           |             goto label_11;
                                         |         }
    0x000084f0 lw t9, -0x7d94(gp)        |         t9 = sym.imp.strtol;
    0x000084f4 lw a0, 8(v0)              |         a0 = *((v0 + 2));
    0x000084f8 addiu a2, zero, 0xa       |         a2 = 0xa;
    0x000084fc move a1, zero             |         a1 = 0;
    0x00008500 jalr t9                   |         t9 ();
    0x00008504 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (v0 < 0) {
    0x00008508 bltz v0, 0x8520           |             goto label_11;
                                         |         }
    0x0000850c lw t9, -0x7c1c(gp)        |         t9 = sym.imp.scenehistory_set_history_length;
    0x00008510 lw a0, 0x14(s0)           |         a0 = *((s0 + 5));
    0x00008514 move a1, v0               |         a1 = v0;
    0x00008518 jalr t9                   |         t9 ();
    0x0000851c lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |     }
                                         | label_11:
    0x00008520 lw v0, 0x1c(sp)           |     v0 = *(var_1ch);
    0x00008524 lw t9, -0x7cf8(gp)        |     t9 = sym.imp.xmlnode_find_tag;
    0x00008528 addiu a1, v0, -0x11c8     |     a1 = v0 + -0x11c8;
    0x0000852c move a0, s4               |     a0 = s4;
    0x00008530 jalr t9                   |     t9 ();
    0x00008534 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x00008538 beqz v0, 0x8604           |         goto label_12;
                                         |     }
    0x0000853c lw s1, 0x10(v0)           |     s1 = *((v0 + 4));
    0x00008540 lw s7, -0x7fd0(gp)        |     s7 = *((gp - 8180));
                                         |     if (s1 == 0) {
    0x00008544 beqz s1, 0x8604           |         goto label_12;
                                         |     }
    0x00008548 lw s6, -0x7fd0(gp)        |     s6 = *((gp - 8180));
    0x0000854c lw s5, -0x7fd0(gp)        |     s5 = *((gp - 8180));
    0x00008550 addiu s7, s7, -0x1144     |     s7 += -0x1144;
    0x00008554 addiu s6, s6, -0xb30      |     s6 += -0xb30;
    0x00008558 addiu s5, s5, -0x113c     |     s5 += -0x113c;
    0x0000855c b 0x856c                  |     
                                         |     while (s3 == 0) {
                                         | label_1:
    0x00008560 lw s1, 4(s1)              |         s1 = *((s1 + 1));
                                         | label_0:
    0x00008564 lw t9, -0x7e34(gp)        |         t9 = sym.imp.g_path_get_dirname;
                                         |         if (s1 == 0) {
    0x00008568 beqz s1, 0x8608           |             goto label_13;
                                         |         }
                                         | label_2:
    0x0000856c lw s2, (s1)               |         s2 = *(s1);
    0x00008570 lw t9, -0x7cf8(gp)        |         t9 = sym.imp.xmlnode_find_tag;
    0x00008574 move a0, s2               |         a0 = s2;
    0x00008578 move a1, s7               |         a1 = s7;
    0x0000857c jalr t9                   |         t9 ();
    0x00008580 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00008584 move a0, s2               |         a0 = s2;
    0x00008588 move a1, s6               |         a1 = s6;
    0x0000858c lw t9, -0x7c68(gp)        |         t9 = sym.imp.xmlnode_get_attribute_value;
    0x00008590 move fp, v0               |         fp = v0;
    0x00008594 lw s2, 0x14(s0)           |         s2 = *((s0 + 5));
    0x00008598 jalr t9                   |         t9 ();
    0x0000859c lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x000085a0 move a1, s5               |         a1 = s5;
    0x000085a4 move a0, fp               |         a0 = fp;
    0x000085a8 lw t9, -0x7c68(gp)        |         t9 = sym.imp.xmlnode_get_attribute_value;
    0x000085ac move s3, v0               |         s3 = v0;
    0x000085b0 jalr t9                   |         t9 ();
    0x000085b4 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x000085b8 move a2, fp               |         a2 = fp;
    0x000085bc move a0, s2               |         a0 = s2;
    0x000085c0 lw t9, -0x7ed8(gp)        |         t9 = sym.imp.lua_env_deserialize_type;
    0x000085c4 move a1, v0               |         a1 = v0;
    0x000085c8 beqz s3, 0x8560           |         
                                         |     }
                                         |     if (v0 == 0) {
    0x000085cc beql v0, zero, 0x8564     |         goto label_0;
                                         |     }
    0x000085d0 lw s1, 4(s1)              |     s1 = *((s1 + 1));
    0x000085d4 jalr t9                   |     t9 ();
    0x000085d8 nop                       |     
    0x000085dc lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000085e0 beqz v0, 0x8560           |         goto label_1;
                                         |     }
    0x000085e4 lw t9, -0x7f2c(gp)        |     t9 = sym.imp.named_objects_add_object;
    0x000085e8 move a2, s3               |     a2 = s3;
    0x000085ec move a1, v0               |     a1 = v0;
    0x000085f0 move a0, s2               |     a0 = s2;
    0x000085f4 jalr t9                   |     t9 ();
    0x000085f8 lw s1, 4(s1)              |     s1 = *((s1 + 1));
    0x000085fc lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (s1 != 0) {
    0x00008600 bnez s1, 0x856c           |         goto label_2;
                                         |     }
                                         | label_12:
    0x00008604 lw t9, -0x7e34(gp)        |     t9 = sym.imp.g_path_get_dirname;
                                         | label_13:
    0x00008608 lw s7, -0x7fd0(gp)        |     s7 = *((gp - 8180));
    0x0000860c lw a0, (s0)               |     a0 = *(s0);
    0x00008610 jalr t9                   |     t9 ();
    0x00008614 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008618 move a1, v0               |     a1 = v0;
    0x0000861c addiu a0, s7, -0x1154     |     a0 = s7 + -0x1154;
    0x00008620 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00008624 lw t9, -0x7cc4(gp)        |     t9 = sym.imp.g_strdup_printf
    0x00008628 addiu a2, a2, -0x115c     |     a2 += -aav.0x0000115c;
    0x0000862c move s1, v0               |     s1 = v0;
    0x00008630 jalr t9                   |     t9 ();
    0x00008634 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008638 move a0, s1               |     a0 = s1;
    0x0000863c lw t9, -0x7d9c(gp)        |     t9 = *((gp - 8039));
    0x00008640 sw v0, 0x1c(sp)           |     *(var_1ch) = v0;
    0x00008644 jalr t9                   |     t9 ();
    0x00008648 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x0000864c move a0, s4               |     a0 = s4;
    0x00008650 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x00008654 lw t9, -0x7cf8(gp)        |     t9 = sym.imp.xmlnode_find_tag;
    0x00008658 addiu a1, a1, -0x114c     |     a1 += -0x114c;
    0x0000865c jalr t9                   |     t9 ();
    0x00008660 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x00008664 beqz v0, 0x87d8           |         goto label_14;
                                         |     }
    0x00008668 lw s1, 0x10(v0)           |     s1 = *((v0 + 4));
    0x0000866c lw t9, -0x7c44(gp)        |     t9 = sym.imp.g_list_length;
    0x00008670 move a0, s1               |     a0 = s1;
    0x00008674 jalr t9                   |     t9 ();
    0x00008678 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x0000867c addiu a1, zero, 8         |     a1 = 8;
    0x00008680 lw t9, -0x7e70(gp)        |     t9 = sym.imp.g_malloc0_n;
    0x00008684 addiu a0, v0, 1           |     a0 = v0 + 1;
    0x00008688 jalr t9                   |     t9 ();
    0x0000868c sw v0, 0x18(sp)           |     *(var_18h) = v0;
    0x00008690 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (s1 == 0) {
    0x00008694 beqz s1, 0x8780           |         goto label_15;
                                         |     }
    0x00008698 lw s6, -0x7fd0(gp)        |     s6 = *((gp - 8180));
    0x0000869c lw s5, -0x7fd0(gp)        |     s5 = *((gp - 8180));
    0x000086a0 lw s2, 0x18(sp)           |     s2 = *(var_18h);
    0x000086a4 addiu s6, s6, -0x112c     |     s6 += -0x112c;
    0x000086a8 addiu s5, s5, -0x1120     |     s5 += -0x1120;
    0x000086ac b 0x8720                  |     
                                         |     while (v0 != 0) {
    0x000086b0 jalr t9                   |         t9 ();
    0x000086b4 nop                       |         
    0x000086b8 lw a0, 8(s3)              |         a0 = *((s3 + 2));
    0x000086bc lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x000086c0 sltu s4, zero, v0         |         s4 = (0 < v0) ? 1 : 0;
    0x000086c4 lb v0, (a0)               |         v0 = *(a0);
    0x000086c8 addiu v1, zero, 0x2f      |         v1 = 0x2f;
    0x000086cc lw t9, -0x7e34(gp)        |         t9 = sym.imp.g_path_get_dirname;
                                         |         if (v0 == v1) {
    0x000086d0 beq v0, v1, 0x8760        |             goto label_16;
                                         |         }
                                         | label_3:
    0x000086d4 lw a0, (s0)               |         a0 = *(s0);
    0x000086d8 addiu s2, s2, 8           |         s2 += 8;
    0x000086dc jalr t9                   |         t9 ();
    0x000086e0 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x000086e4 lw a2, 8(s3)              |         a2 = *((s3 + 2));
    0x000086e8 move a1, v0               |         a1 = v0;
    0x000086ec lw t9, -0x7cc4(gp)        |         t9 = sym.imp.g_strdup_printf
    0x000086f0 addiu a0, s7, -0x1154     |         a0 = s7 + -0x1154;
    0x000086f4 move fp, v0               |         fp = v0;
    0x000086f8 jalr t9                   |         t9 ();
    0x000086fc lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00008700 sw v0, -8(s2)             |         *((s2 - 2)) = v0;
    0x00008704 lw t9, -0x7d9c(gp)        |         t9 = *((gp - 8039));
    0x00008708 move a0, fp               |         a0 = fp;
    0x0000870c jalr t9                   |         t9 ();
    0x00008710 lw s1, 4(s1)              |         s1 = *((s1 + 1));
    0x00008714 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00008718 sw s4, -4(s2)             |         *((s2 - 1)) = s4;
                                         |         if (s1 == 0) {
    0x0000871c beqz s1, 0x8780           |             goto label_15;
                                         |         }
                                         | label_4:
    0x00008720 lw s3, (s1)               |         s3 = *(s1);
    0x00008724 lw t9, -0x7c68(gp)        |         t9 = sym.imp.xmlnode_get_attribute_value;
    0x00008728 move a1, s6               |         a1 = s6;
    0x0000872c move a0, s3               |         a0 = s3;
    0x00008730 jalr t9                   |         t9 ();
    0x00008734 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00008738 move a1, s5               |         a1 = s5;
    0x0000873c move a0, v0               |         a0 = v0;
    0x00008740 lw t9, -0x7f38(gp)        |         t9 = sym.imp.g_strcmp0;
    0x00008744 bnez v0, 0x86b0           |         
                                         |     }
    0x00008748 lw a0, 8(s3)              |     a0 = *((s3 + 2));
    0x0000874c addiu v1, zero, 0x2f      |     v1 = 0x2f;
    0x00008750 move s4, zero             |     s4 = 0;
    0x00008754 lb v0, (a0)               |     v0 = *(a0);
    0x00008758 lw t9, -0x7e34(gp)        |     t9 = sym.imp.g_path_get_dirname;
                                         |     if (v0 != v1) {
    0x0000875c bne v0, v1, 0x86d4        |         goto label_3;
                                         |     }
                                         | label_16:
    0x00008760 lw t9, -0x7c98(gp)        |     t9 = sym.imp.g_strdup;
    0x00008764 addiu s2, s2, 8           |     s2 += 8;
    0x00008768 jalr t9                   |     t9 ();
    0x0000876c lw s1, 4(s1)              |     s1 = *((s1 + 1));
    0x00008770 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00008774 sw v0, -8(s2)             |     *((s2 - 2)) = v0;
    0x00008778 sw s4, -4(s2)             |     *((s2 - 1)) = s4;
                                         |     if (s1 != 0) {
    0x0000877c bnez s1, 0x8720           |         goto label_4;
                                         |     }
                                         | label_15:
    0x00008780 lw s1, 0x18(sp)           |     s1 = *(var_18h);
    0x00008784 lw t9, -0x7f18(gp)        |     t9 = sym.imp.lua_env_execute_lua_scripts;
    0x00008788 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x0000878c lw a2, 0x1c(sp)           |     a2 = *(var_1ch);
    0x00008790 move a1, s1               |     a1 = s1;
    0x00008794 jalr t9                   |     t9 ();
    0x00008798 lw a0, (s1)               |     a0 = *(s1);
    0x0000879c lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000087a0 move s2, v0               |     s2 = v0;
    0x000087a4 addiu s1, s1, 8           |     s1 += 8;
                                         |     if (a0 == 0) {
    0x000087a8 beqz a0, 0x87c4           |         goto label_17;
                                         |     }
                                         |     do {
    0x000087ac lw t9, -0x7d9c(gp)        |         t9 = *((gp - 8039));
    0x000087b0 addiu s1, s1, 8           |         s1 += 8;
    0x000087b4 jalr t9                   |         t9 ();
    0x000087b8 lw a0, -8(s1)             |         a0 = *((s1 - 2));
    0x000087bc lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x000087c0 bnez a0, 0x87ac           |         
                                         |     } while (a0 != 0);
                                         | label_17:
    0x000087c4 lw t9, -0x7d9c(gp)        |     t9 = *((gp - 8039));
    0x000087c8 lw a0, 0x18(sp)           |     a0 = *(var_18h);
    0x000087cc jalr t9                   |     t9 ();
    0x000087d0 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (s2 == 0) {
    0x000087d4 beqz s2, 0x88a0           |         goto label_18;
                                         |     }
                                         | label_14:
    0x000087d8 lw t9, -0x7d9c(gp)        |     t9 = *((gp - 8039));
    0x000087dc lw a0, 0x1c(sp)           |     a0 = *(var_1ch);
    0x000087e0 jalr t9                   |     t9 ();
    0x000087e4 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000087e8 lw t9, -0x7e00(gp)        |     t9 = sym.imp.lua_env_unlock;
    0x000087ec lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x000087f0 jalr t9                   |     t9 ();
                                         |     do {
    0x000087f4 lw ra, 0x44(sp)           |         ra = *(var_44h);
    0x000087f8 move v0, s0               |         v0 = s0;
    0x000087fc lw fp, 0x40(sp)           |         fp = *(var_40h);
    0x00008800 lw s7, 0x3c(sp)           |         s7 = *(var_3ch);
    0x00008804 lw s6, 0x38(sp)           |         s6 = *(var_38h);
    0x00008808 lw s5, 0x34(sp)           |         s5 = *(var_34h);
    0x0000880c lw s4, 0x30(sp)           |         s4 = *(var_30h);
    0x00008810 lw s3, 0x2c(sp)           |         s3 = *(var_2ch);
    0x00008814 lw s2, 0x28(sp)           |         s2 = *(var_28h);
    0x00008818 lw s1, 0x24(sp)           |         s1 = *(var_24h);
    0x0000881c lw s0, 0x20(sp)           |         s0 = *(var_20h);
    0x00008820 addiu sp, sp, 0x48        |         
    0x00008824 jr ra                     |         return v0;
                                         | label_7:
    0x00008828 lw a0, 0x10(s0)           |         a0 = *((s0 + 4));
                                         | label_5:
    0x0000882c lw t9, -0x7e38(gp)        |         t9 = sym.imp.xmlnode_free_tree;
    0x00008830 jalr t9                   |         t9 ();
    0x00008834 nop                       |         
    0x00008838 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         | label_6:
    0x0000883c lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00008840 lw t9, -0x7dfc(gp)        |         t9 = sym.imp.g_quark_from_static_string;
    0x00008844 addiu a0, a0, -0x111c     |         a0 += -0x111c;
    0x00008848 jalr t9                   |         t9 ();
    0x0000884c lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00008850 lw a0, 0x58(sp)           |         a0 = *(arg_58h);
    0x00008854 move a2, zero             |         a2 = 0;
    0x00008858 lw a3, -0x7fd0(gp)        |         a3 = *((gp - 8180));
    0x0000885c lw t9, -0x7ee0(gp)        |         t9 = sym.imp.g_set_error;
    0x00008860 addiu a3, a3, -0x1104     |         a3 += -section..dynsym;
    0x00008864 move a1, v0               |         a1 = v0;
    0x00008868 jalr t9                   |         t9 ();
    0x0000886c lw a0, (s0)               |         a0 = *(s0);
    0x00008870 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (a0 != 0) {
    0x00008874 beqz a0, 0x8888           |             
    0x00008878 lw t9, -0x7d9c(gp)        |             t9 = *((gp - 8039));
    0x0000887c jalr t9                   |             t9 ();
    0x00008880 nop                       |             
    0x00008884 lw gp, 0x10(sp)           |             gp = *(var_10h);
                                         |         }
    0x00008888 lw t9, -0x7ed0(gp)        |         t9 = sym.imp.g_slice_free1;
    0x0000888c move a1, s0               |         a1 = s0;
    0x00008890 addiu a0, zero, 0x28      |         a0 = 0x28;
    0x00008894 jalr t9                   |         t9 ();
    0x00008898 move s0, zero             |         s0 = 0;
    0x0000889c b 0x87f4                  |         
                                         |     } while (1);
                                         | label_18:
    0x000088a0 lw t9, -0x7d9c(gp)        |     t9 = *((gp - 8039));
    0x000088a4 lw a0, 0x1c(sp)           |     a0 = *(var_1ch);
    0x000088a8 jalr t9                   |     t9 ();
    0x000088ac lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         | label_10:
    0x000088b0 lw t9, -0x7e4c(gp)        |     t9 = sym.imp.lua_env_destroy_instance;
    0x000088b4 lw a0, 0x14(s0)           |     a0 = *((s0 + 5));
    0x000088b8 jalr t9                   |     t9 ();
    0x000088bc lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000088c0 move a0, zero             |     a0 = 0;
    0x000088c4 sw zero, 0x10(s0)         |     *((s0 + 4)) = 0;
    0x000088c8 sw zero, 0x14(s0)         |     *((s0 + 5)) = 0;
    0x000088cc b 0x882c                  |     goto label_5;
                                         | }

[*] Function printf used 3 times ruleengined