[*] 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