[*] Binary protection state of libmove_inf.so
No RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function printf tear down of libmove_inf.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xcb40 */
| #include <stdint.h>
|
; (fcn) sym.MoveFlushFrame () | void MoveFlushFrame () {
0x0000cb40 lui gp, 2 |
0x0000cb44 addiu gp, gp, -0x66c0 |
0x0000cb48 addu gp, gp, t9 | gp += t9;
0x0000cb4c addiu sp, sp, -0x20 |
0x0000cb50 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000cb54 sw ra, 0x1c(sp) | *(var_1ch) = ra;
| if (a0 != 0) {
0x0000cb58 beqz a0, 0xcb78 |
0x0000cb5c nop |
0x0000cb60 lw a0, 0x30(a0) | a0 = *((a0 + 12));
0x0000cb64 lw ra, 0x1c(sp) | ra = *(var_1ch);
| if (a0 == 0) {
0x0000cb68 beqz a0, 0xcb78 | goto label_0;
| }
0x0000cb6c lw t9, -0x7e90(gp) | t9 = sym.move_flush_frame;
0x0000cb70 addiu sp, sp, 0x20 |
0x0000cb74 jr t9 | t9 ();
| }
| label_0:
0x0000cb78 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000cb7c lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000cb80 lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000cb84 addiu a0, a0, -0x2858 | a0 += -0x2858;
0x0000cb88 addiu a1, a1, -0x2780 | a1 += -0x2780;
0x0000cb8c jalr t9 | t9 ();
0x0000cb90 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x0000cb94 addiu v0, zero, -1 | v0 = -1;
0x0000cb98 addiu sp, sp, 0x20 |
0x0000cb9c jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xcc00 */
| #include <stdint.h>
|
; (fcn) sym.MoveGetParam () | void MoveGetParam () {
0x0000cc00 lui gp, 2 |
0x0000cc04 addiu gp, gp, -0x6780 |
0x0000cc08 addu gp, gp, t9 | gp += t9;
0x0000cc0c addiu sp, sp, -0x20 |
0x0000cc10 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000cc14 sw ra, 0x1c(sp) | *(var_1ch) = ra;
| if (a0 != 0) {
0x0000cc18 beqz a0, 0xcc38 |
0x0000cc1c nop |
0x0000cc20 lw a0, 0x30(a0) | a0 = *((a0 + 12));
0x0000cc24 lw ra, 0x1c(sp) | ra = *(var_1ch);
| if (a0 == 0) {
0x0000cc28 beqz a0, 0xcc38 | goto label_0;
| }
0x0000cc2c lw t9, -0x7f1c(gp) | t9 = sym.move_get_param;
0x0000cc30 addiu sp, sp, 0x20 |
0x0000cc34 jr t9 | t9 ();
| }
| label_0:
0x0000cc38 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000cc3c lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000cc40 lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000cc44 addiu a0, a0, -0x2858 | a0 += -0x2858;
0x0000cc48 addiu a1, a1, -0x2760 | a1 += -0x2760;
0x0000cc4c jalr t9 | t9 ();
0x0000cc50 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x0000cc54 addiu v0, zero, -1 | v0 = -1;
0x0000cc58 addiu sp, sp, 0x20 |
0x0000cc5c jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xca8c */
| #include <stdint.h>
|
; (fcn) sym.MoveGetResult () | void MoveGetResult () {
0x0000ca8c lui gp, 2 |
0x0000ca90 addiu gp, gp, -0x660c |
0x0000ca94 addu gp, gp, t9 | gp += t9;
0x0000ca98 addiu sp, sp, -0x20 |
0x0000ca9c sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000caa0 sw ra, 0x1c(sp) | *(var_1ch) = ra;
| if (a0 == 0) {
0x0000caa4 beqz a0, 0xcb20 | goto label_0;
| }
0x0000caa8 nop |
0x0000caac lw v1, 0x30(a0) | v1 = *((a0 + 12));
0x0000cab0 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
| if (v1 == 0) {
0x0000cab4 beqz v1, 0xcb24 | goto label_1;
| }
0x0000cab8 lw v0, 0x40(v1) | v0 = *((v1 + 16));
0x0000cabc lw a0, (v0) | a0 = *(v0);
0x0000cac0 lw a2, 8(v0) | a2 = *((v0 + 2));
0x0000cac4 move v0, zero | v0 = 0;
0x0000cac8 sll a3, a0, 4 | a3 = a0 << 4;
0x0000cacc sll a0, a0, 7 | a0 <<= 7;
0x0000cad0 addu a0, a3, a0 | a0 = a3 + a0;
0x0000cad4 addu a0, a2, a0 | a0 = a2 + a0;
0x0000cad8 sw a0, (a1) | *(a1) = a0;
0x0000cadc lw a0, 0x40(v1) | a0 = *((v1 + 16));
0x0000cae0 lui a1, 0x2aaa | a1 = 0x2aaaaaab;
0x0000cae4 ori a1, a1, 0xaaab |
0x0000cae8 lw v1, (a0) | v1 = *(a0);
0x0000caec addiu v1, v1, 1 | v1++;
0x0000caf0 mult v1, a1 | __asm ("mult v1, a1");
0x0000caf4 sra a2, v1, 0x1f | a2 = v1 >> 0x1f;
0x0000caf8 mfhi a1 | __asm ("mfhi a1");
0x0000cafc subu a1, a1, a2 | __asm ("subu a1, a1, a2");
0x0000cb00 sll a2, a1, 1 | a2 = a1 << 1;
0x0000cb04 sll a1, a1, 3 | a1 <<= 3;
0x0000cb08 subu a1, a1, a2 | __asm ("subu a1, a1, a2");
0x0000cb0c subu v1, v1, a1 | __asm ("subu v1, v1, a1");
0x0000cb10 sw v1, (a0) | *(a0) = v1;
| do {
0x0000cb14 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x0000cb18 addiu sp, sp, 0x20 |
0x0000cb1c jr ra | return v0;
| label_0:
0x0000cb20 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
| label_1:
0x0000cb24 lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000cb28 lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000cb2c addiu a0, a0, -0x2858 | a0 += -0x2858;
0x0000cb30 addiu a1, a1, -0x2750 | a1 += -0x2750;
0x0000cb34 jalr t9 | t9 ();
0x0000cb38 addiu v0, zero, -1 | v0 = -1;
0x0000cb3c b 0xcb14 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xc948 */
| #include <stdint.h>
|
; (fcn) sym.MoveInit () | void MoveInit () {
0x0000c948 lui gp, 2 |
0x0000c94c addiu gp, gp, -0x64c8 |
0x0000c950 addu gp, gp, t9 | gp += t9;
0x0000c954 addiu sp, sp, -0x28 |
0x0000c958 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000c95c sw ra, 0x24(sp) | *(var_24h) = ra;
0x0000c960 sw s2, 0x20(sp) | *(var_20h) = s2;
0x0000c964 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x0000c968 sw s0, 0x18(sp) | *(var_18h) = s0;
0x0000c96c move s1, a0 | s1 = a0;
| if (a0 == 0) {
0x0000c970 beqz a0, 0xc9fc | goto label_1;
| }
0x0000c974 lw a0, (a0) | a0 = *(a0);
0x0000c978 lw t9, -0x7eb4(gp) | t9 = sym.alloc_move;
| if (a0 == 0) {
0x0000c97c beqz a0, 0xc9fc | goto label_1;
| }
0x0000c980 lw a1, -0x7ef8(gp) | a1 = *((gp - 8126));
0x0000c984 jalr t9 | t9 ();
0x0000c988 nop |
0x0000c98c move s2, v0 | s2 = v0;
0x0000c990 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000c994 beqz v0, 0xca48 | goto label_2;
| }
0x0000c998 lw t9, -0x7e74(gp) | t9 = sym.imp.calloc;
0x0000c99c addiu a0, zero, 1 | a0 = 1;
0x0000c9a0 addiu a1, zero, 0xc | a1 = 0xc;
0x0000c9a4 jalr t9 | t9 ();
0x0000c9a8 move s0, v0 | s0 = v0;
0x0000c9ac lw gp, 0x10(sp) | gp = *(var_10h);
0x0000c9b0 sw v0, 0x40(s2) | *((s2 + 16)) = v0;
| if (v0 == 0) {
0x0000c9b4 beqz v0, 0xca1c | goto label_3;
| }
0x0000c9b8 lw t9, -0x7e74(gp) | t9 = sym.imp.calloc;
0x0000c9bc addiu a0, zero, 6 | a0 = 6;
0x0000c9c0 addiu a1, zero, 0x90 | a1 = 0x90;
0x0000c9c4 jalr t9 | t9 ();
0x0000c9c8 sw v0, 8(s0) | *((s0 + 2)) = v0;
0x0000c9cc lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000c9d0 beqz v0, 0xca64 | goto label_4;
| }
0x0000c9d4 sw zero, 4(s0) | *((s0 + 1)) = 0;
0x0000c9d8 sw zero, (s0) | *(s0) = 0;
0x0000c9dc move v0, zero | v0 = 0;
0x0000c9e0 sw s2, 0x30(s1) | *((s1 + 12)) = s2;
| do {
| label_0:
0x0000c9e4 lw ra, 0x24(sp) | ra = *(var_24h);
0x0000c9e8 lw s2, 0x20(sp) | s2 = *(var_20h);
0x0000c9ec lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x0000c9f0 lw s0, 0x18(sp) | s0 = *(var_18h);
0x0000c9f4 addiu sp, sp, 0x28 |
0x0000c9f8 jr ra | return v0;
| label_1:
0x0000c9fc lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000ca00 lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000ca04 lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000ca08 addiu a0, a0, -0x2898 | a0 += -0x2898;
0x0000ca0c addiu a1, a1, -0x270c | a1 += -0x270c;
0x0000ca10 jalr t9 | t9 ();
0x0000ca14 addiu v0, zero, -1 | v0 = -1;
0x0000ca18 b 0xc9e4 |
| } while (1);
| label_3:
0x0000ca1c lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000ca20 lw t9, -0x7fb0(gp) | t9 = sym.imp.puts;
0x0000ca24 addiu a0, a0, -0x286c | a0 += -0x286c;
0x0000ca28 jalr t9 | t9 ();
0x0000ca2c lw gp, 0x10(sp) | gp = *(var_10h);
| do {
0x0000ca30 lw t9, -0x7f64(gp) | t9 = sym.free_move;
0x0000ca34 move a0, s2 | a0 = s2;
0x0000ca38 jalr t9 | t9 ();
0x0000ca3c sw zero, 0x30(s1) | *((s1 + 12)) = 0;
0x0000ca40 addiu v0, zero, -1 | v0 = -1;
0x0000ca44 b 0xc9e4 | goto label_0;
| label_2:
0x0000ca48 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000ca4c lw t9, -0x7fb0(gp) | t9 = sym.imp.puts;
0x0000ca50 addiu a0, a0, -0x2884 | a0 += -0x2884;
0x0000ca54 jalr t9 | t9 ();
0x0000ca58 sw zero, 0x30(s1) | *((s1 + 12)) = 0;
0x0000ca5c addiu v0, zero, -1 | v0 = -1;
0x0000ca60 b 0xc9e4 | goto label_0;
| label_4:
0x0000ca64 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000ca68 lw t9, -0x7fb0(gp) | t9 = sym.imp.puts;
0x0000ca6c addiu a0, a0, -0x286c | a0 += -0x286c;
0x0000ca70 jalr t9 | t9 ();
0x0000ca74 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000ca78 lw t9, -0x7f9c(gp) | t9 = sym.imp.free;
0x0000ca7c lw a0, 0x40(s2) | a0 = *((s2 + 16));
0x0000ca80 jalr t9 | t9 ();
0x0000ca84 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000ca88 b 0xca30 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xcf40 */
| #include <stdint.h>
|
; (fcn) sym.MoveInterfaceInit () | void MoveInterfaceInit () {
0x0000cf40 lui gp, 2 |
0x0000cf44 addiu gp, gp, -0x6ac0 |
0x0000cf48 addu gp, gp, t9 | gp += t9;
0x0000cf4c addiu sp, sp, -0x28 |
0x0000cf50 lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000cf54 lw a2, -0x7fd4(gp) | a2 = *((gp - 8181));
0x0000cf58 lw a3, -0x7fd4(gp) | a3 = *((gp - 8181));
0x0000cf5c sw s1, 0x20(sp) | *(var_20h) = s1;
0x0000cf60 move s1, a0 | s1 = a0;
0x0000cf64 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000cf68 lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000cf6c sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000cf70 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0000cf74 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0000cf78 addiu a1, a1, -0x27b0 | a1 += -0x27b0;
0x0000cf7c addiu a2, a2, -0x27a8 | a2 += -0x27a8;
0x0000cf80 addiu a3, a3, -0x279c | a3 += -0x279c;
0x0000cf84 addiu a0, a0, -0x27d0 | a0 += -0x27d0;
0x0000cf88 jalr t9 | t9 ();
0x0000cf8c lw gp, 0x10(sp) | gp = *(var_10h);
0x0000cf90 addiu a0, zero, 1 | a0 = 1;
0x0000cf94 lw t9, -0x7e74(gp) | t9 = sym.imp.calloc;
0x0000cf98 addiu a1, zero, 0x6c | a1 = 0x6c;
0x0000cf9c jalr t9 | t9 ();
0x0000cfa0 move s0, v0 | s0 = v0;
0x0000cfa4 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000cfa8 beqz v0, 0xd0a4 | goto label_0;
| }
0x0000cfac addiu v0, v0, 0x34 | v0 += 0x34;
0x0000cfb0 move a0, s1 | a0 = s1;
0x0000cfb4 sw v0, (s0) | *(s0) = v0;
0x0000cfb8 addiu t0, s1, 0x30 | t0 = s1 + 0x30;
| do {
0x0000cfbc lwl a3, 3(a0) | __asm ("lwl a3, 3(a0)");
0x0000cfc0 lwl a2, 7(a0) | __asm ("lwl a2, 7(a0)");
0x0000cfc4 lwl a1, 0xb(a0) | __asm ("lwl a1, 0xb(a0)");
0x0000cfc8 lwl v1, 0xf(a0) | __asm ("lwl v1, 0xf(a0)");
0x0000cfcc lwr a3, (a0) | __asm ("lwr a3, (a0)");
0x0000cfd0 lwr a2, 4(a0) | __asm ("lwr a2, 4(a0)");
0x0000cfd4 lwr a1, 8(a0) | __asm ("lwr a1, 8(a0)");
0x0000cfd8 lwr v1, 0xc(a0) | __asm ("lwr v1, 0xc(a0)");
0x0000cfdc addiu a0, a0, 0x10 | a0 += 0x10;
0x0000cfe0 sw a3, (v0) | *(v0) = a3;
0x0000cfe4 sw a2, 4(v0) | *((v0 + 1)) = a2;
0x0000cfe8 sw a1, 8(v0) | *((v0 + 2)) = a1;
0x0000cfec sw v1, 0xc(v0) | *((v0 + 3)) = v1;
0x0000cff0 addiu v0, v0, 0x10 | v0 += 0x10;
0x0000cff4 bne a0, t0, 0xcfbc |
| } while (a0 != t0);
0x0000cff8 lwl a1, 3(a0) | __asm ("lwl a1, 3(a0)");
0x0000cffc lwl v1, 7(a0) | __asm ("lwl v1, 7(a0)");
0x0000d000 lwr a1, (a0) | __asm ("lwr a1, (a0)");
0x0000d004 lwr v1, 4(a0) | __asm ("lwr v1, 4(a0)");
0x0000d008 sw a1, (v0) | *(v0) = a1;
0x0000d00c sw v1, 4(v0) | *((v0 + 1)) = v1;
0x0000d010 addiu v0, zero, 0x38 | v0 = 0x38;
0x0000d014 sw v0, 4(s0) | *((s0 + 1)) = v0;
0x0000d018 addiu v0, zero, 0xa | v0 = 0xa;
0x0000d01c sw v0, 8(s0) | *((s0 + 2)) = v0;
0x0000d020 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d024 addiu v0, v0, -0x36b8 | v0 += -0x36b8;
0x0000d028 sw v0, 0xc(s0) | *((s0 + 3)) = v0;
0x0000d02c lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d030 addiu v0, v0, -0x31d4 | v0 += -0x31d4;
0x0000d034 sw v0, 0x10(s0) | *((s0 + 4)) = v0;
0x0000d038 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d03c addiu v0, v0, -0x328c | v0 += -0x328c;
0x0000d040 sw v0, 0x14(s0) | *((s0 + 5)) = v0;
0x0000d044 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d048 addiu v0, v0, -0x33a0 | v0 += -0x33a0;
0x0000d04c sw v0, 0x18(s0) | *((s0 + 6)) = v0;
0x0000d050 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d054 addiu v0, v0, -0x3574 | v0 += -0x3574;
0x0000d058 sw v0, 0x1c(s0) | *((s0 + 7)) = v0;
0x0000d05c lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d060 addiu v0, v0, -0x36c0 | v0 += -0x36c0;
0x0000d064 sw v0, 0x20(s0) | *((s0 + 8)) = v0;
0x0000d068 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d06c addiu v0, v0, -0x3400 | v0 += -0x3400;
0x0000d070 sw v0, 0x24(s0) | *((s0 + 9)) = v0;
0x0000d074 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d078 addiu v0, v0, -0x3460 | v0 += -0x3460;
0x0000d07c sw v0, 0x28(s0) | *((s0 + 10)) = v0;
0x0000d080 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0000d084 addiu v0, v0, -0x34c0 | v0 += -0x34c0;
0x0000d088 sw v0, 0x2c(s0) | *((s0 + 11)) = v0;
0x0000d08c lw ra, 0x24(sp) | ra = *(var_24h);
| do {
0x0000d090 move v0, s0 | v0 = s0;
0x0000d094 lw s1, 0x20(sp) | s1 = *(var_20h);
0x0000d098 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0000d09c addiu sp, sp, 0x28 |
0x0000d0a0 jr ra | return v0;
| label_0:
0x0000d0a4 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000d0a8 lw t9, -0x7fb0(gp) | t9 = sym.imp.puts;
0x0000d0ac addiu a0, a0, -0x2790 | a0 += -0x2790;
0x0000d0b0 jalr t9 | t9 ();
0x0000d0b4 lw ra, 0x24(sp) | ra = *(var_24h);
0x0000d0b8 b 0xd090 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xcd74 */
| #include <stdint.h>
|
; (fcn) sym.MovePreprocessSync () | void MovePreprocessSync () {
0x0000cd74 lui gp, 2 |
0x0000cd78 addiu gp, gp, -0x68f4 |
0x0000cd7c addu gp, gp, t9 | gp += t9;
0x0000cd80 addiu sp, sp, -0x38 |
0x0000cd84 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000cd88 sw ra, 0x34(sp) | *(var_34h) = ra;
| if (a0 == 0) {
0x0000cd8c beqz a0, 0xcdf4 | goto label_1;
| }
0x0000cd90 nop |
0x0000cd94 lw a0, 0x30(a0) | a0 = *((a0 + 12));
0x0000cd98 lw t9, -0x7f8c(gp) | t9 = sym.move_preprocess;
| if (a0 == 0) {
0x0000cd9c beqz a0, 0xcdf4 | goto label_1;
| }
0x0000cda0 lw v1, 0x24(a1) | v1 = *((a1 + 9));
0x0000cda4 lw t1, 0x1c(a1) | t1 = *((a1 + 7));
0x0000cda8 lw t0, 8(a1) | t0 = *((a1 + 2));
0x0000cdac lw a3, 0xc(a1) | a3 = *((a1 + 3));
0x0000cdb0 lw a2, 0x10(a1) | a2 = *((a1 + 4));
0x0000cdb4 lw v0, 0x20(a1) | v0 = *((a1 + 8));
0x0000cdb8 sw v1, 0x2c(sp) | *(var_2ch) = v1;
0x0000cdbc addiu a1, sp, 0x18 | a1 = sp + 0x18;
0x0000cdc0 sw t1, 0x18(sp) | *(var_18h) = t1;
0x0000cdc4 sw t0, 0x1c(sp) | *(var_1ch) = t0;
0x0000cdc8 sw a3, 0x20(sp) | *(var_20h) = a3;
0x0000cdcc sw a2, 0x24(sp) | *(var_24h) = a2;
0x0000cdd0 sw v0, 0x28(sp) | *(var_28h) = v0;
0x0000cdd4 jalr t9 | t9 ();
0x0000cdd8 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000cddc move v1, zero | v1 = 0;
| if (v0 < 0) {
0x0000cde0 bltz v0, 0xce14 | goto label_2;
| }
| do {
| label_0:
0x0000cde4 lw ra, 0x34(sp) | ra = *(var_34h);
0x0000cde8 move v0, v1 | v0 = v1;
0x0000cdec addiu sp, sp, 0x38 |
0x0000cdf0 jr ra | return v1;
| label_1:
0x0000cdf4 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000cdf8 lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000cdfc lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000ce00 addiu a0, a0, -0x2858 | a0 += -0x2858;
0x0000ce04 addiu a1, a1, -0x272c | a1 += -0x272c;
0x0000ce08 jalr t9 | t9 ();
0x0000ce0c addiu v1, zero, -1 | v1 = -1;
0x0000ce10 b 0xcde4 |
| } while (1);
| label_2:
0x0000ce14 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000ce18 lw t9, -0x7fb0(gp) | t9 = sym.imp.puts;
0x0000ce1c addiu a0, a0, -0x282c | a0 += -0x282c;
0x0000ce20 jalr t9 | t9 ();
0x0000ce24 addiu v1, zero, -1 | v1 = -1;
0x0000ce28 b 0xcde4 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xcc60 */
| #include <stdint.h>
|
; (fcn) sym.MoveProcessAsync () | void MoveProcessAsync () {
0x0000cc60 lui gp, 2 |
0x0000cc64 addiu gp, gp, -0x67e0 |
0x0000cc68 addu gp, gp, t9 | gp += t9;
0x0000cc6c addiu sp, sp, -0x38 |
0x0000cc70 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000cc74 sw ra, 0x34(sp) | *(var_34h) = ra;
0x0000cc78 sw s0, 0x30(sp) | *(var_30h) = s0;
| if (a0 == 0) {
0x0000cc7c beqz a0, 0xcd3c | goto label_1;
| }
0x0000cc80 nop |
0x0000cc84 lw s0, 0x30(a0) | s0 = *((a0 + 12));
0x0000cc88 lw t9, -0x7f74(gp) | t9 = sym.move_process;
| if (s0 == 0) {
0x0000cc8c beqz s0, 0xcd3c | goto label_1;
| }
0x0000cc90 lw v0, 0x40(s0) | v0 = *((s0 + 16));
0x0000cc94 lw t2, 0x1c(a1) | t2 = *((a1 + 7));
0x0000cc98 lw t1, 8(a1) | t1 = *((a1 + 2));
0x0000cc9c lw a0, 4(v0) | a0 = *((v0 + 1));
0x0000cca0 lw t3, 8(v0) | t3 = *((v0 + 2));
0x0000cca4 lw t0, 0xc(a1) | t0 = *((a1 + 3));
0x0000cca8 lw a3, 0x10(a1) | a3 = *((a1 + 4));
0x0000ccac lw v0, 0x20(a1) | v0 = *((a1 + 8));
0x0000ccb0 lw v1, 0x24(a1) | v1 = *((a1 + 9));
0x0000ccb4 sll a2, a0, 4 | a2 = a0 << 4;
0x0000ccb8 sll a0, a0, 7 | a0 <<= 7;
0x0000ccbc addu a2, a2, a0 | a2 += a0;
0x0000ccc0 addiu a1, sp, 0x18 | a1 = sp + 0x18;
0x0000ccc4 move a0, s0 | a0 = s0;
0x0000ccc8 addu a2, t3, a2 | a2 = t3 + a2;
0x0000cccc sw t2, 0x18(sp) | *(var_18h) = t2;
0x0000ccd0 sw t1, 0x1c(sp) | *(var_1ch) = t1;
0x0000ccd4 sw t0, 0x20(sp) | *(var_20h) = t0;
0x0000ccd8 sw a3, 0x24(sp) | *(var_24h) = a3;
0x0000ccdc sw v0, 0x28(sp) | *(var_28h) = v0;
0x0000cce0 sw v1, 0x2c(sp) | *(var_2ch) = v1;
0x0000cce4 jalr t9 | t9 ();
0x0000cce8 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 < 0) {
0x0000ccec bltz v0, 0xcd5c | goto label_2;
| }
0x0000ccf0 lw a0, 0x40(s0) | a0 = *((s0 + 16));
0x0000ccf4 lui a1, 0x2aaa | a1 = 0x2aaaaaab;
0x0000ccf8 ori a1, a1, 0xaaab |
0x0000ccfc lw v1, 4(a0) | v1 = *((a0 + 1));
0x0000cd00 move v0, zero | v0 = 0;
0x0000cd04 addiu v1, v1, 1 | v1++;
0x0000cd08 mult v1, a1 | __asm ("mult v1, a1");
0x0000cd0c sra a2, v1, 0x1f | a2 = v1 >> 0x1f;
0x0000cd10 mfhi a1 | __asm ("mfhi a1");
0x0000cd14 subu a1, a1, a2 | __asm ("subu a1, a1, a2");
0x0000cd18 sll a2, a1, 1 | a2 = a1 << 1;
0x0000cd1c sll a1, a1, 3 | a1 <<= 3;
0x0000cd20 subu a1, a1, a2 | __asm ("subu a1, a1, a2");
0x0000cd24 subu v1, v1, a1 | __asm ("subu v1, v1, a1");
0x0000cd28 sw v1, 4(a0) | *((a0 + 1)) = v1;
| do {
| label_0:
0x0000cd2c lw ra, 0x34(sp) | ra = *(var_34h);
0x0000cd30 lw s0, 0x30(sp) | s0 = *(var_30h);
0x0000cd34 addiu sp, sp, 0x38 |
0x0000cd38 jr ra | return v0;
| label_1:
0x0000cd3c lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000cd40 lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000cd44 lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000cd48 addiu a0, a0, -0x2858 | a0 += -0x2858;
0x0000cd4c addiu a1, a1, -0x2740 | a1 += -0x2740;
0x0000cd50 jalr t9 | t9 ();
0x0000cd54 addiu v0, zero, -1 | v0 = -1;
0x0000cd58 b 0xcd2c |
| } while (1);
| label_2:
0x0000cd5c lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000cd60 lw t9, -0x7fb0(gp) | t9 = sym.imp.puts;
0x0000cd64 addiu a0, a0, -0x2844 | a0 += -0x2844;
0x0000cd68 jalr t9 | t9 ();
0x0000cd6c addiu v0, zero, -1 | v0 = -1;
0x0000cd70 b 0xcd2c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmove_inf.so @ 0xcba0 */
| #include <stdint.h>
|
; (fcn) sym.MoveSetParam () | void MoveSetParam () {
0x0000cba0 lui gp, 2 |
0x0000cba4 addiu gp, gp, -0x6720 |
0x0000cba8 addu gp, gp, t9 | gp += t9;
0x0000cbac addiu sp, sp, -0x20 |
0x0000cbb0 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000cbb4 sw ra, 0x1c(sp) | *(var_1ch) = ra;
| if (a0 != 0) {
0x0000cbb8 beqz a0, 0xcbd8 |
0x0000cbbc nop |
0x0000cbc0 lw a0, 0x30(a0) | a0 = *((a0 + 12));
0x0000cbc4 lw ra, 0x1c(sp) | ra = *(var_1ch);
| if (a0 == 0) {
0x0000cbc8 beqz a0, 0xcbd8 | goto label_0;
| }
0x0000cbcc lw t9, -0x7f34(gp) | t9 = sym.move_set_param;
0x0000cbd0 addiu sp, sp, 0x20 |
0x0000cbd4 jr t9 | t9 ();
| }
| label_0:
0x0000cbd8 lw a0, -0x7fd4(gp) | a0 = *((gp - 8181));
0x0000cbdc lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000cbe0 lw t9, -0x7fa4(gp) | t9 = sym.imp.printf
0x0000cbe4 addiu a0, a0, -0x2858 | a0 += -0x2858;
0x0000cbe8 addiu a1, a1, -0x2770 | a1 += -0x2770;
0x0000cbec jalr t9 | t9 ();
0x0000cbf0 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x0000cbf4 addiu v0, zero, -1 | v0 = -1;
0x0000cbf8 addiu sp, sp, 0x20 |
0x0000cbfc jr ra | return v0;
| }
[*] Function printf used 9 times libmove_inf.so