[*] Binary protection state of dlist_test
Full RELRO No Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of dlist_test
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0xd60 */
| #include <stdint.h>
|
; (fcn) main () | int32_t main () {
| /* [13] -r-x section size 3936 named .text */
0x00000d60 lui gp, 2 |
0x00000d64 addiu gp, gp, -0x5d50 |
0x00000d68 addu gp, gp, t9 | gp += t9;
0x00000d6c addiu sp, sp, -0x58 |
0x00000d70 lw v0, -0x7fd8(gp) | v0 = sym.simple_maker;
0x00000d74 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00000d78 sw v0, 0x18(sp) | *(var_18h) = v0;
0x00000d7c lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x00000d80 sw s5, 0x44(sp) | *(var_44h) = s5;
0x00000d84 sw v0, 0x24(sp) | *(var_24h) = v0;
0x00000d88 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x00000d8c sw s4, 0x40(sp) | *(var_40h) = s4;
0x00000d90 sw v0, 0x2c(sp) | *(var_2ch) = v0;
0x00000d94 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x00000d98 sw s3, 0x3c(sp) | *(var_3ch) = s3;
0x00000d9c addiu v0, v0, 0x1efc | v0 += str.count_is__ld_n;
0x00000da0 sw v0, 0x1c(sp) | *(var_1ch) = v0;
0x00000da4 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x00000da8 sw ra, 0x54(sp) | *(var_54h) = ra;
0x00000dac addiu v0, v0, 0x1f0c | v0 += str.popped__s_n;
0x00000db0 sw v0, 0x20(sp) | *(var_20h) = v0;
0x00000db4 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x00000db8 sw fp, 0x50(sp) | *(var_50h) = fp;
0x00000dbc addiu v0, v0, 0x1f20 | v0 += str.shifted__s_n;
0x00000dc0 sw s7, 0x4c(sp) | *(var_4ch) = s7;
0x00000dc4 sw s6, 0x48(sp) | *(var_48h) = s6;
0x00000dc8 sw s2, 0x38(sp) | *(var_38h) = s2;
0x00000dcc sw s1, 0x34(sp) | *(var_34h) = s1;
0x00000dd0 sw s0, 0x30(sp) | *(var_30h) = s0;
0x00000dd4 lw s5, -0x7fdc(gp) | s5 = *((gp - 8183));
0x00000dd8 lw s4, -0x7fdc(gp) | s4 = *((gp - 8183));
0x00000ddc lw s3, -0x7fdc(gp) | s3 = *((gp - 8183));
0x00000de0 sw v0, 0x28(sp) | *(var_28h) = v0;
0x00000de4 b 0x13ac |
| while (v0 != 0) {
0x00000de8 lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x00000dec move a0, v0 | a0 = v0;
0x00000df0 move a1, s6 | a1 = s6;
0x00000df4 jalr t9 | t9 ();
0x00000df8 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000dfc move a1, s2 | a1 = s2;
0x00000e00 lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x00000e04 move a0, s1 | a0 = s1;
0x00000e08 jalr t9 | t9 ();
0x00000e0c lw gp, 0x10(sp) | gp = *(var_10h);
0x00000e10 move a1, s0 | a1 = s0;
0x00000e14 lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x00000e18 move a0, s1 | a0 = s1;
0x00000e1c jalr t9 | t9 ();
0x00000e20 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000e24 lw a2, 4(s1) | a2 = *((s1 + 1));
0x00000e28 lw a1, 0x1c(sp) | a1 = *(var_1ch);
0x00000e2c lw s2, -0x7fd4(gp) | s2 = sym.simple_dump;
0x00000e30 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00000e34 addiu a0, zero, 1 | a0 = 1;
0x00000e38 jalr t9 | t9 ();
0x00000e3c move t9, s2 | t9 = s2;
0x00000e40 move a0, s1 | a0 = s1;
0x00000e44 bal 0x1778 | sym_simple_dump ();
0x00000e48 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000e4c lw t9, -0x7fd0(gp) | t9 = sym.simple_dump_rev;
0x00000e50 move a0, s1 | a0 = s1;
0x00000e54 bal 0x1840 | sym_simple_dump_rev ();
0x00000e58 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000e5c lw t9, -0x7f70(gp) | t9 = sym.imp.dlist_pop;
0x00000e60 move a0, s1 | a0 = s1;
0x00000e64 jalr t9 | t9 ();
0x00000e68 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000e6c lw a1, 0x20(sp) | a1 = *(var_20h);
0x00000e70 move a2, v0 | a2 = v0;
0x00000e74 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00000e78 addiu a0, zero, 1 | a0 = 1;
0x00000e7c jalr t9 | t9 ();
0x00000e80 move t9, s2 | t9 = s2;
0x00000e84 move a0, s1 | a0 = s1;
0x00000e88 bal 0x1778 | sym_simple_dump ();
0x00000e8c lw gp, 0x10(sp) | gp = *(var_10h);
0x00000e90 lw v0, 0x24(sp) | v0 = *(var_24h);
0x00000e94 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00000e98 addiu a0, v0, 0x1f18 | a0 = v0 + str.pushed;
0x00000e9c jalr t9 | t9 ();
0x00000ea0 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000ea4 move a1, s0 | a1 = s0;
0x00000ea8 lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x00000eac move a0, s1 | a0 = s1;
0x00000eb0 jalr t9 | t9 ();
0x00000eb4 move t9, s2 | t9 = s2;
0x00000eb8 move a0, s1 | a0 = s1;
0x00000ebc bal 0x1778 | sym_simple_dump ();
0x00000ec0 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000ec4 lw t9, -0x7f1c(gp) | t9 = sym.imp.dlist_shift;
0x00000ec8 move a0, s1 | a0 = s1;
0x00000ecc jalr t9 | t9 ();
0x00000ed0 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000ed4 lw a1, 0x28(sp) | a1 = *(var_28h);
0x00000ed8 move a2, v0 | a2 = v0;
0x00000edc lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00000ee0 addiu a0, zero, 1 | a0 = 1;
0x00000ee4 move s0, v0 | s0 = v0;
0x00000ee8 jalr t9 | t9 ();
0x00000eec move t9, s2 | t9 = s2;
0x00000ef0 move a0, s1 | a0 = s1;
0x00000ef4 bal 0x1778 | sym_simple_dump ();
0x00000ef8 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000efc lw v0, 0x2c(sp) | v0 = *(var_2ch);
0x00000f00 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00000f04 addiu a0, v0, 0x1f2c | a0 = v0 + str.unshifted;
0x00000f08 jalr t9 | t9 ();
0x00000f0c lw gp, 0x10(sp) | gp = *(var_10h);
0x00000f10 move a1, s0 | a1 = s0;
0x00000f14 lw t9, -0x7f78(gp) | t9 = sym.imp.dlist_unshift;
0x00000f18 move a0, s1 | a0 = s1;
0x00000f1c jalr t9 | t9 ();
0x00000f20 move t9, s2 | t9 = s2;
0x00000f24 move a0, s1 | a0 = s1;
0x00000f28 bal 0x1778 | sym_simple_dump ();
0x00000f2c lw gp, 0x10(sp) | gp = *(var_10h);
0x00000f30 lw s0, -0x7fcc(gp) | s0 = sym.complex_maker;
0x00000f34 lw t9, -0x7f58(gp) | t9 = sym.imp.dlist_destroy;
0x00000f38 move a0, s1 | a0 = s1;
0x00000f3c jalr t9 | t9 ();
0x00000f40 addiu a2, s5, 0x1ed8 | a2 = s5 + 0x1ed8;
0x00000f44 addiu a1, zero, 1 | a1 = 1;
0x00000f48 move t9, s0 | t9 = s0;
0x00000f4c addiu a0, zero, 1 | a0 = 1;
0x00000f50 bal 0x19a8 | sym_complex_maker ();
0x00000f54 addiu a2, s4, 0x1edc | a2 = s4 + 0x1edc;
0x00000f58 addiu a1, zero, 2 | a1 = 2;
0x00000f5c addiu a0, zero, 2 | a0 = 2;
0x00000f60 move t9, s0 | t9 = s0;
0x00000f64 move s1, v0 | s1 = v0;
0x00000f68 bal 0x19a8 | sym_complex_maker ();
0x00000f6c addiu a2, s3, 0x1ee0 | a2 = s3 + str.three;
0x00000f70 addiu a1, zero, 3 | a1 = 3;
0x00000f74 addiu a0, zero, 3 | a0 = 3;
0x00000f78 move t9, s0 | t9 = s0;
0x00000f7c move s7, v0 | s7 = v0;
0x00000f80 bal 0x19a8 | sym_complex_maker ();
0x00000f84 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000f88 addiu a0, zero, 8 | a0 = 8;
0x00000f8c lw t9, -0x7f34(gp) | t9 = sym.imp.dlist_new_with_delete;
0x00000f90 lw a1, -0x7fc8(gp) | a1 = sym.complex_del;
0x00000f94 move s2, v0 | s2 = v0;
0x00000f98 jalr t9 | t9 ();
0x00000f9c move s6, v0 | s6 = v0;
0x00000fa0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00000fa4 beqz v0, 0x1404 | goto label_0;
| }
0x00000fa8 lw t9, -0x7f18(gp) | t9 = sym.imp.dlist_insert_sorted;
0x00000fac lw a2, -0x7fc4(gp) | a2 = sym.complex_less;
0x00000fb0 move a1, s1 | a1 = s1;
0x00000fb4 move a0, v0 | a0 = v0;
0x00000fb8 jalr t9 | t9 ();
0x00000fbc lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00000fc0 beqz v0, 0x142c | goto label_1;
| }
0x00000fc4 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00000fc8 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00000fcc addiu a0, a0, 0x1fc0 | a0 += 0x1fc0;
0x00000fd0 jalr t9 | t9 ();
0x00000fd4 lw gp, 0x10(sp) | gp = *(var_10h);
0x00000fd8 move a1, s2 | a1 = s2;
0x00000fdc lw t9, -0x7f18(gp) | t9 = sym.imp.dlist_insert_sorted;
0x00000fe0 lw a2, -0x7fc4(gp) | a2 = sym.complex_less;
0x00000fe4 move a0, s6 | a0 = s6;
0x00000fe8 jalr t9 | t9 ();
0x00000fec lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00000ff0 beqz v0, 0x142c | goto label_1;
| }
0x00000ff4 lw t9, -0x7f18(gp) | t9 = sym.imp.dlist_insert_sorted;
0x00000ff8 lw a2, -0x7fc4(gp) | a2 = sym.complex_less;
0x00000ffc move a1, s7 | a1 = s7;
0x00001000 move a0, s6 | a0 = s6;
0x00001004 jalr t9 | t9 ();
0x00001008 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000100c beqz v0, 0x142c | goto label_1;
| }
0x00001010 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001014 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00001018 addiu a0, a0, 0x1ff0 | a0 += 0x1ff0;
0x0000101c jalr t9 | t9 ();
0x00001020 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001024 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001028 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x0000102c lw s2, -0x7fc0(gp) | s2 = sym.complex_dump;
0x00001030 addiu a0, a0, 0x1f50 | a0 += str.ascending_sorted_output;
0x00001034 jalr t9 | t9 ();
0x00001038 move t9, s2 | t9 = s2;
0x0000103c move a0, s6 | a0 = s6;
0x00001040 bal 0x1a54 | sym_complex_dump ();
0x00001044 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001048 lw a1, -0x7fbc(gp) | a1 = sym.complex_silly_multiply_by_two;
0x0000104c lw t9, -0x7f60(gp) | t9 = sym.imp.dlist_transform;
0x00001050 move a0, s6 | a0 = s6;
0x00001054 jalr t9 | t9 ();
0x00001058 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000105c lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001060 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00001064 addiu a0, a0, 0x1f68 | a0 += str.transform_multi_by_2_output;
0x00001068 jalr t9 | t9 ();
0x0000106c move t9, s2 | t9 = s2;
0x00001070 move a0, s6 | a0 = s6;
0x00001074 bal 0x1a54 | sym_complex_dump ();
0x00001078 addiu a2, s3, 0x1ee0 | a2 = s3 + str.three;
0x0000107c addiu a1, zero, 6 | a1 = 6;
0x00001080 move t9, s0 | t9 = s0;
0x00001084 addiu a0, zero, 6 | a0 = 6;
0x00001088 bal 0x19a8 | sym_complex_maker ();
0x0000108c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001090 move a1, v0 | a1 = v0;
0x00001094 move a0, s6 | a0 = s6;
0x00001098 lw t9, -0x7f48(gp) | t9 = sym.imp.dlist_find_custom;
0x0000109c lw a2, -0x7fb8(gp) | a2 = sym.complex_equal;
0x000010a0 move s7, v0 | s7 = v0;
0x000010a4 jalr t9 | t9 ();
0x000010a8 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x000010ac beqz v0, 0x1480 | goto label_2;
| }
0x000010b0 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x000010b4 lw a3, (v0) | a3 = *(v0);
0x000010b8 lw s1, -0x7fc8(gp) | s1 = sym.complex_del;
0x000010bc lw a2, (s7) | a2 = *(s7);
0x000010c0 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x000010c4 addiu a1, a1, 0x1f84 | a1 += str.found__d_as__d_in_list_n;
0x000010c8 addiu a0, zero, 1 | a0 = 1;
0x000010cc jalr t9 | t9 ();
0x000010d0 move t9, s1 | t9 = s1;
0x000010d4 move a0, s7 | a0 = s7;
0x000010d8 bal 0x16b8 | sym_complex_del ();
0x000010dc lw gp, 0x10(sp) | gp = *(var_10h);
0x000010e0 lw t9, -0x7f58(gp) | t9 = sym.imp.dlist_destroy;
0x000010e4 move a0, s6 | a0 = s6;
0x000010e8 jalr t9 | t9 ();
0x000010ec addiu a2, s5, 0x1ed8 | a2 = s5 + 0x1ed8;
0x000010f0 addiu a1, zero, 1 | a1 = 1;
0x000010f4 move t9, s0 | t9 = s0;
0x000010f8 addiu a0, zero, 1 | a0 = 1;
0x000010fc bal 0x19a8 | sym_complex_maker ();
0x00001100 addiu a2, s4, 0x1edc | a2 = s4 + 0x1edc;
0x00001104 addiu a1, zero, 2 | a1 = 2;
0x00001108 addiu a0, zero, 2 | a0 = 2;
0x0000110c move t9, s0 | t9 = s0;
0x00001110 move s6, v0 | s6 = v0;
0x00001114 bal 0x19a8 | sym_complex_maker ();
0x00001118 addiu a2, s3, 0x1ee0 | a2 = s3 + str.three;
0x0000111c addiu a1, zero, 3 | a1 = 3;
0x00001120 addiu a0, zero, 3 | a0 = 3;
0x00001124 move t9, s0 | t9 = s0;
0x00001128 move fp, v0 | fp = v0;
0x0000112c bal 0x19a8 | sym_complex_maker ();
0x00001130 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001134 move a1, s1 | a1 = s1;
0x00001138 addiu a0, zero, 8 | a0 = 8;
0x0000113c lw t9, -0x7f34(gp) | t9 = sym.imp.dlist_new_with_delete;
0x00001140 move s7, v0 | s7 = v0;
0x00001144 jalr t9 | t9 ();
0x00001148 move s1, v0 | s1 = v0;
0x0000114c lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00001150 beqz v0, 0x1404 | goto label_0;
| }
0x00001154 lw t9, -0x7f18(gp) | t9 = sym.imp.dlist_insert_sorted;
0x00001158 lw a2, -0x7fb4(gp) | a2 = sym.complex_greater;
0x0000115c move a1, s6 | a1 = s6;
0x00001160 move a0, v0 | a0 = v0;
0x00001164 jalr t9 | t9 ();
0x00001168 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000116c beqz v0, 0x142c | goto label_1;
| }
0x00001170 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001174 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00001178 addiu a0, a0, 0x1fb8 | a0 += str.greater_sorted_insert_1;
0x0000117c jalr t9 | t9 ();
0x00001180 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001184 move a1, s7 | a1 = s7;
0x00001188 lw t9, -0x7f18(gp) | t9 = sym.imp.dlist_insert_sorted;
0x0000118c lw a2, -0x7fb4(gp) | a2 = sym.complex_greater;
0x00001190 move a0, s1 | a0 = s1;
0x00001194 jalr t9 | t9 ();
0x00001198 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000119c beqz v0, 0x142c | goto label_1;
| }
0x000011a0 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x000011a4 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x000011a8 addiu a0, a0, 0x1fd0 | a0 += str.greater_sorted_insert_3;
0x000011ac jalr t9 | t9 ();
0x000011b0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000011b4 move a1, fp | a1 = fp;
0x000011b8 lw t9, -0x7f18(gp) | t9 = sym.imp.dlist_insert_sorted;
0x000011bc lw a2, -0x7fb4(gp) | a2 = sym.complex_greater;
0x000011c0 move a0, s1 | a0 = s1;
0x000011c4 jalr t9 | t9 ();
0x000011c8 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x000011cc beqz v0, 0x142c | goto label_1;
| }
0x000011d0 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x000011d4 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x000011d8 addiu a0, a0, 0x1fe8 | a0 += str.greater_sorted_insert_2;
0x000011dc jalr t9 | t9 ();
0x000011e0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000011e4 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x000011e8 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x000011ec addiu a0, a0, 0x2000 | a0 += str.descending_sorted_output_using_transform;
0x000011f0 jalr t9 | t9 ();
0x000011f4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000011f8 lw a1, -0x7fb0(gp) | a1 = sym.complex_out;
0x000011fc lw t9, -0x7f60(gp) | t9 = sym.imp.dlist_transform;
0x00001200 move a0, s1 | a0 = s1;
0x00001204 jalr t9 | t9 ();
0x00001208 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000120c lw t9, -0x7f58(gp) | t9 = sym.imp.dlist_destroy;
0x00001210 move a0, s1 | a0 = s1;
0x00001214 jalr t9 | t9 ();
0x00001218 move t9, s0 | t9 = s0;
0x0000121c addiu a2, s5, 0x1ed8 | a2 = s5 + 0x1ed8;
0x00001220 addiu a1, zero, 1 | a1 = 1;
0x00001224 addiu a0, zero, 1 | a0 = 1;
0x00001228 bal 0x19a8 | sym_complex_maker ();
0x0000122c move t9, s0 | t9 = s0;
0x00001230 addiu a2, s4, 0x1edc | a2 = s4 + 0x1edc;
0x00001234 addiu a1, zero, 2 | a1 = 2;
0x00001238 addiu a0, zero, 2 | a0 = 2;
0x0000123c move s6, v0 | s6 = v0;
0x00001240 bal 0x19a8 | sym_complex_maker ();
0x00001244 move t9, s0 | t9 = s0;
0x00001248 addiu a2, s3, 0x1ee0 | a2 = s3 + str.three;
0x0000124c addiu a1, zero, 3 | a1 = 3;
0x00001250 addiu a0, zero, 3 | a0 = 3;
0x00001254 move s7, v0 | s7 = v0;
0x00001258 bal 0x19a8 | sym_complex_maker ();
0x0000125c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001260 move t9, s0 | t9 = s0;
0x00001264 addiu a1, zero, 4 | a1 = 4;
0x00001268 lw a2, -0x7fdc(gp) | a2 = *((gp - 8183));
0x0000126c addiu a0, zero, 4 | a0 = 4;
0x00001270 addiu a2, a2, 0x202c | a2 += str.four;
0x00001274 move s1, v0 | s1 = v0;
0x00001278 bal 0x19a8 | sym_complex_maker ();
0x0000127c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001280 addiu a0, zero, 8 | a0 = 8;
0x00001284 lw t9, -0x7f34(gp) | t9 = sym.imp.dlist_new_with_delete;
0x00001288 lw a1, -0x7fc8(gp) | a1 = sym.complex_del;
0x0000128c move fp, v0 | fp = v0;
0x00001290 jalr t9 | t9 ();
0x00001294 move s0, v0 | s0 = v0;
0x00001298 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000129c beqz v0, 0x1404 | goto label_0;
| }
0x000012a0 lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x000012a4 move a0, v0 | a0 = v0;
0x000012a8 move a1, s7 | a1 = s7;
0x000012ac jalr t9 | t9 ();
0x000012b0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000012b4 move a1, s6 | a1 = s6;
0x000012b8 lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x000012bc move a0, s0 | a0 = s0;
0x000012c0 jalr t9 | t9 ();
0x000012c4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000012c8 move a1, fp | a1 = fp;
0x000012cc lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x000012d0 move a0, s0 | a0 = s0;
0x000012d4 jalr t9 | t9 ();
0x000012d8 lw gp, 0x10(sp) | gp = *(var_10h);
0x000012dc move a1, s1 | a1 = s1;
0x000012e0 lw t9, -0x7f40(gp) | t9 = sym.imp.dlist_push;
0x000012e4 move a0, s0 | a0 = s0;
0x000012e8 jalr t9 | t9 ();
0x000012ec lw gp, 0x10(sp) | gp = *(var_10h);
0x000012f0 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x000012f4 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x000012f8 addiu a0, a0, 0x2034 | a0 += str.unsorted_custom;
0x000012fc jalr t9 | t9 ();
0x00001300 move t9, s2 | t9 = s2;
0x00001304 move a0, s0 | a0 = s0;
0x00001308 bal 0x1a54 | sym_complex_dump ();
0x0000130c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001310 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001314 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00001318 addiu a0, a0, 0x2044 | a0 += str.unsorted_custom_reversed;
0x0000131c jalr t9 | t9 ();
0x00001320 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001324 lw t9, -0x7fac(gp) | t9 = sym.complex_dump_rev;
0x00001328 move a0, s0 | a0 = s0;
0x0000132c bal 0x1b30 | sym_complex_dump_rev ();
0x00001330 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001334 lw a1, -0x7fa8(gp) | a1 = sym.complex_comp;
0x00001338 lw t9, -0x7f2c(gp) | t9 = sym.imp.dlist_sort_custom;
0x0000133c move a0, s0 | a0 = s0;
0x00001340 jalr t9 | t9 ();
0x00001344 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001348 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x0000134c lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00001350 addiu a0, a0, 0x2060 | a0 += str.custom_sorted_output;
0x00001354 jalr t9 | t9 ();
0x00001358 move t9, s2 | t9 = s2;
0x0000135c move a0, s0 | a0 = s0;
0x00001360 bal 0x1a54 | sym_complex_dump ();
0x00001364 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001368 lw a2, -0x7fa8(gp) | a2 = sym.complex_comp;
0x0000136c lw a1, -0x7fa4(gp) | a1 = sym.complex_filter;
0x00001370 lw t9, -0x7f64(gp) | t9 = sym.imp.dlist_filter_sort;
0x00001374 move a0, s0 | a0 = s0;
0x00001378 jalr t9 | t9 ();
0x0000137c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001380 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001384 lw t9, -0x7f4c(gp) | t9 = sym.imp.puts;
0x00001388 addiu a0, a0, 0x2078 | a0 += str.custom_filtered_and_sorted_output;
0x0000138c jalr t9 | t9 ();
0x00001390 move t9, s2 | t9 = s2;
0x00001394 move a0, s0 | a0 = s0;
0x00001398 bal 0x1a54 | sym_complex_dump ();
0x0000139c lw gp, 0x10(sp) | gp = *(var_10h);
0x000013a0 lw t9, -0x7f58(gp) | t9 = sym.imp.dlist_destroy;
0x000013a4 move a0, s0 | a0 = s0;
0x000013a8 jalr t9 | t9 ();
0x000013ac lw t9, 0x18(sp) | t9 = *(var_18h);
0x000013b0 addiu a1, s5, 0x1ed8 | a1 = s5 + 0x1ed8;
0x000013b4 addiu a0, zero, 1 | a0 = 1;
0x000013b8 jalr t9 | t9 ();
0x000013bc lw t9, 0x18(sp) | t9 = *(var_18h);
0x000013c0 addiu a1, s4, 0x1edc | a1 = s4 + 0x1edc;
0x000013c4 addiu a0, zero, 2 | a0 = 2;
0x000013c8 move s6, v0 | s6 = v0;
0x000013cc jalr t9 | t9 ();
0x000013d0 lw t9, 0x18(sp) | t9 = *(var_18h);
0x000013d4 addiu a1, s3, 0x1ee0 | a1 = s3 + str.three;
0x000013d8 addiu a0, zero, 3 | a0 = 3;
0x000013dc move s2, v0 | s2 = v0;
0x000013e0 jalr t9 | t9 ();
0x000013e4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000013e8 addiu a0, zero, 0x54 | a0 = 0x54;
0x000013ec lw t9, -0x7f38(gp) | t9 = sym.imp.dlist_new;
0x000013f0 move s0, v0 | s0 = v0;
0x000013f4 jalr t9 | t9 ();
0x000013f8 move s1, v0 | s1 = v0;
0x000013fc lw gp, 0x10(sp) | gp = *(var_10h);
0x00001400 bnez v0, 0xde8 |
| }
| label_0:
0x00001404 lw v0, -0x7f24(gp) | v0 = *((gp - 8137));
0x00001408 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x0000140c lw t9, -0x7f3c(gp) | t9 = sym.imp.fwrite;
0x00001410 lw a3, (v0) | a3 = *(v0);
0x00001414 addiu a2, zero, 0x13 | a2 = 0x13;
0x00001418 addiu a1, zero, 1 | a1 = 1;
0x0000141c addiu a0, a0, 0x1ee8 | a0 += str.ERR_dlist_new_fail_n;
0x00001420 jalr t9 | t9 ();
0x00001424 addiu v0, zero, 2 | v0 = 2;
0x00001428 b 0x1450 | goto label_3;
| label_1:
0x0000142c lw v0, -0x7f24(gp) | v0 = *((gp - 8137));
0x00001430 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001434 lw t9, -0x7f3c(gp) | t9 = sym.imp.fwrite;
0x00001438 lw a3, (v0) | a3 = *(v0);
0x0000143c addiu a2, zero, 0x16 | a2 = 0x16;
0x00001440 addiu a1, zero, 1 | a1 = 1;
0x00001444 addiu a0, a0, 0x1f38 | a0 += str.ERR_dlist_insert_fail_n;
0x00001448 jalr t9 | t9 ();
0x0000144c addiu v0, zero, 2 | v0 = 2;
| do {
| label_3:
0x00001450 lw ra, 0x54(sp) | ra = *(var_54h);
0x00001454 lw fp, 0x50(sp) | fp = *(var_50h);
0x00001458 lw s7, 0x4c(sp) | s7 = *(var_4ch);
0x0000145c lw s6, 0x48(sp) | s6 = *(var_48h);
0x00001460 lw s5, 0x44(sp) | s5 = *(var_44h);
0x00001464 lw s4, 0x40(sp) | s4 = *(var_40h);
0x00001468 lw s3, 0x3c(sp) | s3 = *(var_3ch);
0x0000146c lw s2, 0x38(sp) | s2 = *(var_38h);
0x00001470 lw s1, 0x34(sp) | s1 = *(var_34h);
0x00001474 lw s0, 0x30(sp) | s0 = *(var_30h);
0x00001478 addiu sp, sp, 0x58 |
0x0000147c jr ra | return v0;
| label_2:
0x00001480 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001484 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001488 lw a2, (s7) | a2 = *(s7);
0x0000148c addiu a1, a1, 0x1f9c | a1 += str.ERROR_find_failed_on__d__n;
0x00001490 addiu a0, zero, 1 | a0 = 1;
0x00001494 jalr t9 | t9 ();
0x00001498 addiu v0, zero, 3 | v0 = 3;
0x0000149c b 0x1450 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0x1a54 */
| #include <stdint.h>
|
; (fcn) sym.complex_dump () | void complex_dump () {
0x00001a54 lui gp, 2 |
0x00001a58 addiu gp, gp, -0x6a44 |
0x00001a5c addu gp, gp, t9 | gp += t9;
0x00001a60 addiu sp, sp, -0x30 |
0x00001a64 lw t9, -0x7f54(gp) | t9 = sym.imp.dlist_start;
0x00001a68 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00001a6c sw gp, 0x18(sp) | *(var_18h) = gp;
0x00001a70 sw s0, 0x24(sp) | *(var_24h) = s0;
0x00001a74 sw s1, 0x28(sp) | *(var_28h) = s1;
0x00001a78 move s0, a0 | s0 = a0;
0x00001a7c jalr t9 | t9 ();
0x00001a80 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001a84 lw a2, 4(s0) | a2 = *((s0 + 1));
0x00001a88 addiu a0, zero, 1 | a0 = 1;
0x00001a8c lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001a90 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001a94 addiu a1, a1, 0x1eb4 | a1 += 0x1eb4;
0x00001a98 jalr t9 | t9 ();
0x00001a9c lw gp, 0x18(sp) | gp = *(var_18h);
0x00001aa0 lw t9, -0x7f54(gp) | t9 = sym.imp.dlist_start;
0x00001aa4 move a0, s0 | a0 = s0;
0x00001aa8 jalr t9 | t9 ();
0x00001aac lw gp, 0x18(sp) | gp = *(var_18h);
0x00001ab0 move a0, s0 | a0 = s0;
0x00001ab4 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001ab8 addiu a1, zero, 1 | a1 = 1;
0x00001abc jalr t9 | t9 ();
0x00001ac0 lw a0, (s0) | a0 = *(s0);
0x00001ac4 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00001ac8 lw gp, 0x18(sp) | gp = *(var_18h);
| if (a0 == v1) {
0x00001acc beq a0, v1, 0x1b1c | goto label_0;
| }
0x00001ad0 lw s1, -0x7fdc(gp) | s1 = *((gp - 8183));
0x00001ad4 addiu s1, s1, 0x1e68 | s1 += str.cnumber__d_label__s_number__d__n;
| do {
0x00001ad8 lw a3, 4(v0) | a3 = *((v0 + 1));
0x00001adc lw a2, (v0) | a2 = *(v0);
0x00001ae0 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001ae4 lw v0, 0x50(a3) | v0 = *((a3 + 20));
0x00001ae8 move a1, s1 | a1 = s1;
0x00001aec addiu a0, zero, 1 | a0 = 1;
0x00001af0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00001af4 jalr t9 | t9 ();
0x00001af8 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001afc move a0, s0 | a0 = s0;
0x00001b00 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001b04 addiu a1, zero, 1 | a1 = 1;
0x00001b08 jalr t9 | t9 ();
0x00001b0c lw a0, (s0) | a0 = *(s0);
0x00001b10 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00001b14 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001b18 bne a0, v1, 0x1ad8 |
| } while (a0 != v1);
| label_0:
0x00001b1c lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00001b20 lw s1, 0x28(sp) | s1 = *(var_28h);
0x00001b24 lw s0, 0x24(sp) | s0 = *(var_24h);
0x00001b28 addiu sp, sp, 0x30 |
0x00001b2c jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0x1b30 */
| #include <stdint.h>
|
; (fcn) sym.complex_dump_rev () | void complex_dump_rev () {
0x00001b30 lui gp, 2 |
0x00001b34 addiu gp, gp, -0x6b20 |
0x00001b38 addu gp, gp, t9 | gp += t9;
0x00001b3c addiu sp, sp, -0x30 |
0x00001b40 lw t9, -0x7f54(gp) | t9 = sym.imp.dlist_start;
0x00001b44 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00001b48 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00001b4c sw s0, 0x24(sp) | *(var_24h) = s0;
0x00001b50 sw s1, 0x28(sp) | *(var_28h) = s1;
0x00001b54 move s0, a0 | s0 = a0;
0x00001b58 jalr t9 | t9 ();
0x00001b5c lw gp, 0x18(sp) | gp = *(var_18h);
0x00001b60 lw a2, 4(s0) | a2 = *((s0 + 1));
0x00001b64 addiu a0, zero, 1 | a0 = 1;
0x00001b68 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001b6c lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001b70 addiu a1, a1, 0x1eb4 | a1 += 0x1eb4;
0x00001b74 jalr t9 | t9 ();
0x00001b78 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001b7c lw t9, -0x7f7c(gp) | t9 = sym.imp.dlist_end;
0x00001b80 move a0, s0 | a0 = s0;
0x00001b84 jalr t9 | t9 ();
0x00001b88 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001b8c move a0, s0 | a0 = s0;
0x00001b90 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001b94 move a1, zero | a1 = 0;
0x00001b98 jalr t9 | t9 ();
0x00001b9c lw a0, (s0) | a0 = *(s0);
0x00001ba0 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00001ba4 lw gp, 0x18(sp) | gp = *(var_18h);
| if (a0 == v1) {
0x00001ba8 beq a0, v1, 0x1bf8 | goto label_0;
| }
0x00001bac lw s1, -0x7fdc(gp) | s1 = *((gp - 8183));
0x00001bb0 addiu s1, s1, 0x1e68 | s1 += str.cnumber__d_label__s_number__d__n;
| do {
0x00001bb4 lw a3, 4(v0) | a3 = *((v0 + 1));
0x00001bb8 lw a2, (v0) | a2 = *(v0);
0x00001bbc lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001bc0 lw v0, 0x50(a3) | v0 = *((a3 + 20));
0x00001bc4 move a1, s1 | a1 = s1;
0x00001bc8 addiu a0, zero, 1 | a0 = 1;
0x00001bcc sw v0, 0x10(sp) | *(var_10h) = v0;
0x00001bd0 jalr t9 | t9 ();
0x00001bd4 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001bd8 move a0, s0 | a0 = s0;
0x00001bdc lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001be0 move a1, zero | a1 = 0;
0x00001be4 jalr t9 | t9 ();
0x00001be8 lw a0, (s0) | a0 = *(s0);
0x00001bec lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00001bf0 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001bf4 bne a0, v1, 0x1bb4 |
| } while (a0 != v1);
| label_0:
0x00001bf8 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00001bfc lw s1, 0x28(sp) | s1 = *(var_28h);
0x00001c00 lw s0, 0x24(sp) | s0 = *(var_24h);
0x00001c04 addiu sp, sp, 0x30 |
0x00001c08 jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0x1b30 */
| #include <stdint.h>
|
; (fcn) sym.complex_dump_rev () | void complex_dump_rev () {
0x00001b30 lui gp, 2 |
0x00001b34 addiu gp, gp, -0x6b20 |
0x00001b38 addu gp, gp, t9 | gp += t9;
0x00001b3c addiu sp, sp, -0x30 |
0x00001b40 lw t9, -0x7f54(gp) | t9 = sym.imp.dlist_start;
0x00001b44 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00001b48 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00001b4c sw s0, 0x24(sp) | *(var_24h) = s0;
0x00001b50 sw s1, 0x28(sp) | *(var_28h) = s1;
0x00001b54 move s0, a0 | s0 = a0;
0x00001b58 jalr t9 | t9 ();
0x00001b5c lw gp, 0x18(sp) | gp = *(var_18h);
0x00001b60 lw a2, 4(s0) | a2 = *((s0 + 1));
0x00001b64 addiu a0, zero, 1 | a0 = 1;
0x00001b68 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001b6c lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001b70 addiu a1, a1, 0x1eb4 | a1 += 0x1eb4;
0x00001b74 jalr t9 | t9 ();
0x00001b78 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001b7c lw t9, -0x7f7c(gp) | t9 = sym.imp.dlist_end;
0x00001b80 move a0, s0 | a0 = s0;
0x00001b84 jalr t9 | t9 ();
0x00001b88 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001b8c move a0, s0 | a0 = s0;
0x00001b90 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001b94 move a1, zero | a1 = 0;
0x00001b98 jalr t9 | t9 ();
0x00001b9c lw a0, (s0) | a0 = *(s0);
0x00001ba0 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00001ba4 lw gp, 0x18(sp) | gp = *(var_18h);
| if (a0 == v1) {
0x00001ba8 beq a0, v1, 0x1bf8 | goto label_0;
| }
0x00001bac lw s1, -0x7fdc(gp) | s1 = *((gp - 8183));
0x00001bb0 addiu s1, s1, 0x1e68 | s1 += str.cnumber__d_label__s_number__d__n;
| do {
0x00001bb4 lw a3, 4(v0) | a3 = *((v0 + 1));
0x00001bb8 lw a2, (v0) | a2 = *(v0);
0x00001bbc lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001bc0 lw v0, 0x50(a3) | v0 = *((a3 + 20));
0x00001bc4 move a1, s1 | a1 = s1;
0x00001bc8 addiu a0, zero, 1 | a0 = 1;
0x00001bcc sw v0, 0x10(sp) | *(var_10h) = v0;
0x00001bd0 jalr t9 | t9 ();
0x00001bd4 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001bd8 move a0, s0 | a0 = s0;
0x00001bdc lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001be0 move a1, zero | a1 = 0;
0x00001be4 jalr t9 | t9 ();
0x00001be8 lw a0, (s0) | a0 = *(s0);
0x00001bec lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00001bf0 lw gp, 0x18(sp) | gp = *(var_18h);
0x00001bf4 bne a0, v1, 0x1bb4 |
| } while (a0 != v1);
| label_0:
0x00001bf8 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00001bfc lw s1, 0x28(sp) | s1 = *(var_28h);
0x00001c00 lw s0, 0x24(sp) | s0 = *(var_24h);
0x00001c04 addiu sp, sp, 0x30 |
0x00001c08 jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0x1670 */
| #include <stdint.h>
|
; (fcn) sym.complex_out () | void complex_out () {
0x00001670 lui gp, 2 |
0x00001674 addiu gp, gp, -0x6660 |
0x00001678 addu gp, gp, t9 | gp += t9;
0x0000167c lw a3, 4(a0) | a3 = *((a0 + 1));
0x00001680 addiu sp, sp, -0x28 |
0x00001684 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001688 lw v0, 0x50(a3) | v0 = *((a3 + 20));
0x0000168c lw a2, (a0) | a2 = *(a0);
0x00001690 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001694 addiu a1, a1, 0x1e68 | a1 += str.cnumber__d_label__s_number__d__n;
0x00001698 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0000169c sw gp, 0x18(sp) | *(var_18h) = gp;
0x000016a0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x000016a4 addiu a0, zero, 1 | a0 = 1;
0x000016a8 jalr t9 | t9 ();
0x000016ac lw ra, 0x24(sp) | ra = *(var_24h);
0x000016b0 addiu sp, sp, 0x28 |
0x000016b4 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0x1778 */
| #include <stdint.h>
|
; (fcn) sym.simple_dump () | void simple_dump () {
0x00001778 lui gp, 2 |
0x0000177c addiu gp, gp, -0x6768 |
0x00001780 addu gp, gp, t9 | gp += t9;
0x00001784 addiu sp, sp, -0x28 |
0x00001788 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x0000178c lw a2, 4(a0) | a2 = *((a0 + 1));
0x00001790 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x00001794 addiu a1, a1, 0x1eb4 | a1 += 0x1eb4;
0x00001798 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0000179c sw gp, 0x10(sp) | *(var_10h) = gp;
0x000017a0 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x000017a4 sw s1, 0x20(sp) | *(var_20h) = s1;
0x000017a8 move s0, a0 | s0 = a0;
0x000017ac addiu a0, zero, 1 | a0 = 1;
0x000017b0 jalr t9 | t9 ();
0x000017b4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000017b8 lw t9, -0x7f54(gp) | t9 = sym.imp.dlist_start;
0x000017bc move a0, s0 | a0 = s0;
0x000017c0 jalr t9 | t9 ();
0x000017c4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000017c8 move a0, s0 | a0 = s0;
0x000017cc lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x000017d0 addiu a1, zero, 1 | a1 = 1;
0x000017d4 jalr t9 | t9 ();
0x000017d8 lw a0, (s0) | a0 = *(s0);
0x000017dc lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x000017e0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (a0 == v1) {
0x000017e4 beq a0, v1, 0x182c | goto label_0;
| }
0x000017e8 lw s1, -0x7fdc(gp) | s1 = *((gp - 8183));
0x000017ec addiu s1, s1, 0x1e98 | s1 += str.label__s_number__d__n;
| do {
0x000017f0 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x000017f4 lw a3, 0x50(v0) | a3 = *((v0 + 20));
0x000017f8 move a2, v0 | a2 = v0;
0x000017fc move a1, s1 | a1 = s1;
0x00001800 addiu a0, zero, 1 | a0 = 1;
0x00001804 jalr t9 | t9 ();
0x00001808 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000180c move a0, s0 | a0 = s0;
0x00001810 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001814 addiu a1, zero, 1 | a1 = 1;
0x00001818 jalr t9 | t9 ();
0x0000181c lw a0, (s0) | a0 = *(s0);
0x00001820 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00001824 lw gp, 0x10(sp) | gp = *(var_10h);
0x00001828 bne a0, v1, 0x17f0 |
| } while (a0 != v1);
| label_0:
0x0000182c lw ra, 0x24(sp) | ra = *(var_24h);
0x00001830 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00001834 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00001838 addiu sp, sp, 0x28 |
0x0000183c jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0x1840 */
| #include <stdint.h>
|
; (fcn) sym.simple_dump_rev () | void simple_dump_rev () {
0x00001840 lui gp, 2 |
0x00001844 addiu gp, gp, -0x6830 |
0x00001848 addu gp, gp, t9 | gp += t9;
0x0000184c addiu sp, sp, -0x28 |
0x00001850 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001854 lw a2, 4(a0) | a2 = *((a0 + 1));
0x00001858 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x0000185c addiu a1, a1, 0x1eb0 | a1 += str.rev_count___ld__n;
0x00001860 sw ra, 0x24(sp) | *(var_24h) = ra;
0x00001864 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00001868 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0000186c sw s1, 0x20(sp) | *(var_20h) = s1;
0x00001870 move s0, a0 | s0 = a0;
0x00001874 addiu a0, zero, 1 | a0 = 1;
0x00001878 jalr t9 | t9 ();
0x0000187c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001880 lw t9, -0x7f7c(gp) | t9 = sym.imp.dlist_end;
0x00001884 move a0, s0 | a0 = s0;
0x00001888 jalr t9 | t9 ();
0x0000188c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001890 move a0, s0 | a0 = s0;
0x00001894 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001898 move a1, zero | a1 = 0;
0x0000189c jalr t9 | t9 ();
0x000018a0 lw a0, (s0) | a0 = *(s0);
0x000018a4 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x000018a8 lw gp, 0x10(sp) | gp = *(var_10h);
| if (a0 == v1) {
0x000018ac beq a0, v1, 0x18f4 | goto label_0;
| }
0x000018b0 lw s1, -0x7fdc(gp) | s1 = *((gp - 8183));
0x000018b4 addiu s1, s1, 0x1e98 | s1 += str.label__s_number__d__n;
| do {
0x000018b8 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x000018bc lw a3, 0x50(v0) | a3 = *((v0 + 20));
0x000018c0 move a2, v0 | a2 = v0;
0x000018c4 move a1, s1 | a1 = s1;
0x000018c8 addiu a0, zero, 1 | a0 = 1;
0x000018cc jalr t9 | t9 ();
0x000018d0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000018d4 move a0, s0 | a0 = s0;
0x000018d8 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x000018dc move a1, zero | a1 = 0;
0x000018e0 jalr t9 | t9 ();
0x000018e4 lw a0, (s0) | a0 = *(s0);
0x000018e8 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x000018ec lw gp, 0x10(sp) | gp = *(var_10h);
0x000018f0 bne a0, v1, 0x18b8 |
| } while (a0 != v1);
| label_0:
0x000018f4 lw ra, 0x24(sp) | ra = *(var_24h);
0x000018f8 lw s1, 0x20(sp) | s1 = *(var_20h);
0x000018fc lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00001900 addiu sp, sp, 0x28 |
0x00001904 jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/dlist_test @ 0x1840 */
| #include <stdint.h>
|
; (fcn) sym.simple_dump_rev () | void simple_dump_rev () {
0x00001840 lui gp, 2 |
0x00001844 addiu gp, gp, -0x6830 |
0x00001848 addu gp, gp, t9 | gp += t9;
0x0000184c addiu sp, sp, -0x28 |
0x00001850 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001854 lw a2, 4(a0) | a2 = *((a0 + 1));
0x00001858 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x0000185c addiu a1, a1, 0x1eb0 | a1 += str.rev_count___ld__n;
0x00001860 sw ra, 0x24(sp) | *(var_24h) = ra;
0x00001864 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00001868 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0000186c sw s1, 0x20(sp) | *(var_20h) = s1;
0x00001870 move s0, a0 | s0 = a0;
0x00001874 addiu a0, zero, 1 | a0 = 1;
0x00001878 jalr t9 | t9 ();
0x0000187c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001880 lw t9, -0x7f7c(gp) | t9 = sym.imp.dlist_end;
0x00001884 move a0, s0 | a0 = s0;
0x00001888 jalr t9 | t9 ();
0x0000188c lw gp, 0x10(sp) | gp = *(var_10h);
0x00001890 move a0, s0 | a0 = s0;
0x00001894 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x00001898 move a1, zero | a1 = 0;
0x0000189c jalr t9 | t9 ();
0x000018a0 lw a0, (s0) | a0 = *(s0);
0x000018a4 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x000018a8 lw gp, 0x10(sp) | gp = *(var_10h);
| if (a0 == v1) {
0x000018ac beq a0, v1, 0x18f4 | goto label_0;
| }
0x000018b0 lw s1, -0x7fdc(gp) | s1 = *((gp - 8183));
0x000018b4 addiu s1, s1, 0x1e98 | s1 += str.label__s_number__d__n;
| do {
0x000018b8 lw t9, -0x7f6c(gp) | t9 = sym.imp.__printf_chk
0x000018bc lw a3, 0x50(v0) | a3 = *((v0 + 20));
0x000018c0 move a2, v0 | a2 = v0;
0x000018c4 move a1, s1 | a1 = s1;
0x000018c8 addiu a0, zero, 1 | a0 = 1;
0x000018cc jalr t9 | t9 ();
0x000018d0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000018d4 move a0, s0 | a0 = s0;
0x000018d8 lw t9, -0x7f30(gp) | t9 = sym.imp._dlist_mark_move;
0x000018dc move a1, zero | a1 = 0;
0x000018e0 jalr t9 | t9 ();
0x000018e4 lw a0, (s0) | a0 = *(s0);
0x000018e8 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x000018ec lw gp, 0x10(sp) | gp = *(var_10h);
0x000018f0 bne a0, v1, 0x18b8 |
| } while (a0 != v1);
| label_0:
0x000018f4 lw ra, 0x24(sp) | ra = *(var_24h);
0x000018f8 lw s1, 0x20(sp) | s1 = *(var_20h);
0x000018fc lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00001900 addiu sp, sp, 0x28 |
0x00001904 jr ra | return v1;
| }
[*] Function printf used 19 times dlist_test