[*] Binary protection state of wifiAutoReconnect
Full RELRO Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of wifiAutoReconnect
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/DUMP/mtdblock8_unblob_extracted/mtdblock8_extract/0-9650176.squashfs_v4_le_extract/sbin/wifiAutoReconnect @ 0x402bf8 */
| #include <stdint.h>
|
; (fcn) sym.echo_data_char_const__char_const_ () | void echo_data_char_const_char_const_ () {
| /* echo_data(char const*, char const*) */
0x00402bf8 lui gp, 2 |
0x00402bfc addiu gp, gp, 0x2438 |
0x00402c00 addu gp, gp, t9 | gp += t9;
0x00402c04 addiu sp, sp, -0x38 |
0x00402c08 sw ra, 0x34(sp) | *(var_34h) = ra;
0x00402c0c sw fp, 0x30(sp) | *(var_30h) = fp;
0x00402c10 move fp, sp | fp = sp;
0x00402c14 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00402c18 sw a0, 0x1c(fp) | *(arg_1ch) = a0;
0x00402c1c sw a1, 0x18(fp) | *(arg_18h) = a1;
0x00402c20 lw t8, -0x7dd0(gp) | t8 = *((gp - 8052));
0x00402c24 lw t8, (t8) | t8 = *(t8);
0x00402c28 sw t8, 0x2c(fp) | *(arg_2ch) = t8;
0x00402c2c lw a0, 0x1c(fp) | a0 = *(arg_1ch);
0x00402c30 addiu a1, zero, 0x102 | a1 = 0x102;
0x00402c34 addiu a2, zero, 0x1a4 | a2 = 0x1a4;
0x00402c38 lw t8, -0x7ee4(gp) | t8 = sym.imp.open64;
0x00402c3c move t9, t8 | t9 = t8;
0x00402c40 jalr t9 | t9 ();
0x00402c44 nop |
0x00402c48 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402c4c move t8, v0 | t8 = v0;
0x00402c50 sw t8, 0x24(fp) | *(arg_24h) = t8;
0x00402c54 lw t8, 0x24(fp) | t8 = *(arg_24h);
| if (t8 < 0) {
0x00402c58 bgez t8, 0x402ccc |
0x00402c5c nop |
0x00402c60 lw t8, -0x7dcc(gp) | t8 = sym.imp.__errno_location;
0x00402c64 move t9, t8 | t9 = t8;
0x00402c68 jalr t9 | t9 ();
0x00402c6c nop |
0x00402c70 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402c74 move t8, v0 | t8 = v0;
0x00402c78 lw t8, (t8) | t8 = *(t8);
0x00402c7c move a0, t8 | a0 = t8;
0x00402c80 lw t8, -0x7f00(gp) | t8 = sym.imp.strerror;
0x00402c84 move t9, t8 | t9 = t8;
0x00402c88 jalr t9 | t9 ();
0x00402c8c nop |
0x00402c90 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402c94 move t8, v0 | t8 = v0;
0x00402c98 lw a0, -0x7f9c(gp) | a0 = *(gp);
0x00402c9c lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
| /* str.Open__s_fail:__s_n */
0x00402ca0 addiu a1, v0, -0x557c | a1 = v0 + -0x557c;
0x00402ca4 lw a2, 0x1c(fp) | a2 = *(arg_1ch);
0x00402ca8 move a3, t8 | a3 = t8;
0x00402cac lw t8, -0x7e38(gp) | t8 = *(gp);
0x00402cb0 move t9, t8 | t9 = t8;
0x00402cb4 jalr t9 | t9 ();
0x00402cb8 nop |
0x00402cbc lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402cc0 addiu t8, zero, -1 | t8 = -1;
0x00402cc4 b 0x402e90 | goto label_0;
0x00402cc8 nop |
| }
0x00402ccc lw a0, 0x24(fp) | a0 = *(arg_24h);
0x00402cd0 addiu a1, zero, 2 | a1 = 2;
0x00402cd4 lw t8, -0x7eb0(gp) | t8 = sym.imp.flock;
0x00402cd8 move t9, t8 | t9 = t8;
0x00402cdc jalr t9 | t9 ();
0x00402ce0 nop |
0x00402ce4 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402ce8 lw a0, 0x18(fp) | a0 = *(arg_18h);
0x00402cec lw t8, -0x7e14(gp) | t8 = sym.imp.strlen;
0x00402cf0 move t9, t8 | t9 = t8;
0x00402cf4 jalr t9 | t9 ();
0x00402cf8 nop |
0x00402cfc lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402d00 move t8, v0 | t8 = v0;
0x00402d04 addiu t8, t8, 1 | t8++;
0x00402d08 move a0, t8 | a0 = t8;
0x00402d0c lw t8, -0x7dfc(gp) | t8 = sym.imp.malloc;
0x00402d10 move t9, t8 | t9 = t8;
0x00402d14 jalr t9 | t9 ();
0x00402d18 nop |
0x00402d1c lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402d20 move t8, v0 | t8 = v0;
0x00402d24 sw t8, 0x28(fp) | *(arg_28h) = t8;
0x00402d28 lw t8, 0x28(fp) | t8 = *(arg_28h);
| if (t8 == 0) {
0x00402d2c bnez t8, 0x402db4 |
0x00402d30 nop |
0x00402d34 lw t8, -0x7dcc(gp) | t8 = sym.imp.__errno_location;
0x00402d38 move t9, t8 | t9 = t8;
0x00402d3c jalr t9 | t9 ();
0x00402d40 nop |
0x00402d44 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402d48 move t8, v0 | t8 = v0;
0x00402d4c lw t8, (t8) | t8 = *(t8);
0x00402d50 move a0, t8 | a0 = t8;
0x00402d54 lw t8, -0x7f00(gp) | t8 = sym.imp.strerror;
0x00402d58 move t9, t8 | t9 = t8;
0x00402d5c jalr t9 | t9 ();
0x00402d60 nop |
0x00402d64 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402d68 move t8, v0 | t8 = v0;
0x00402d6c lw a0, -0x7f9c(gp) | a0 = *(gp);
0x00402d70 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
| /* str.Mallocation_fail:__s_n */
0x00402d74 addiu a1, v0, -0x5568 | a1 = v0 + -0x5568;
0x00402d78 move a2, t8 | a2 = t8;
0x00402d7c lw t8, -0x7e38(gp) | t8 = *(gp);
0x00402d80 move t9, t8 | t9 = t8;
0x00402d84 jalr t9 | t9 ();
0x00402d88 nop |
0x00402d8c lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402d90 lw a0, 0x24(fp) | a0 = *(arg_24h);
0x00402d94 lw t8, -0x7e88(gp) | t8 = sym.imp.close;
0x00402d98 move t9, t8 | t9 = t8;
0x00402d9c jalr t9 | t9 ();
0x00402da0 nop |
0x00402da4 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402da8 addiu t8, zero, -1 | t8 = -1;
0x00402dac b 0x402e90 | goto label_0;
0x00402db0 nop |
| }
0x00402db4 lw a0, 0x28(fp) | a0 = *(arg_28h);
0x00402db8 lw t8, -0x7fd4(gp) | t8 = *((gp - 8181));
| /* esilref: '&s
' */
0x00402dbc addiu a1, t8, -0x5550 | a1 = t8 + -0x5550;
0x00402dc0 lw a2, 0x18(fp) | a2 = *(arg_18h);
0x00402dc4 lw t8, -0x7ec8(gp) | t8 = sym.imp.sprintf
0x00402dc8 move t9, t8 | t9 = t8;
0x00402dcc jalr t9 | t9 ();
0x00402dd0 nop |
0x00402dd4 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402dd8 lw a0, 0x18(fp) | a0 = *(arg_18h);
0x00402ddc lw t8, -0x7e14(gp) | t8 = sym.imp.strlen;
0x00402de0 move t9, t8 | t9 = t8;
0x00402de4 jalr t9 | t9 ();
0x00402de8 nop |
0x00402dec lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402df0 move t8, v0 | t8 = v0;
0x00402df4 addiu t8, t8, 1 | t8++;
0x00402df8 lw a0, 0x24(fp) | a0 = *(arg_24h);
0x00402dfc lw a1, 0x28(fp) | a1 = *(arg_28h);
0x00402e00 move a2, t8 | a2 = t8;
0x00402e04 lw t8, -0x7e74(gp) | t8 = sym.imp.write;
0x00402e08 move t9, t8 | t9 = t8;
0x00402e0c jalr t9 | t9 ();
0x00402e10 nop |
0x00402e14 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402e18 lw a0, 0x24(fp) | a0 = *(arg_24h);
0x00402e1c addiu a1, zero, 8 | a1 = 8;
0x00402e20 lw t8, -0x7eb0(gp) | t8 = sym.imp.flock;
0x00402e24 move t9, t8 | t9 = t8;
0x00402e28 jalr t9 | t9 ();
0x00402e2c nop |
0x00402e30 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402e34 lw a0, 0x24(fp) | a0 = *(arg_24h);
0x00402e38 lw t8, -0x7e88(gp) | t8 = sym.imp.close;
0x00402e3c move t9, t8 | t9 = t8;
0x00402e40 jalr t9 | t9 ();
0x00402e44 nop |
0x00402e48 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402e4c lw a0, 0x28(fp) | a0 = *(arg_28h);
0x00402e50 lw t8, -0x7ef8(gp) | t8 = sym.imp.free;
0x00402e54 move t9, t8 | t9 = t8;
0x00402e58 jalr t9 | t9 ();
0x00402e5c nop |
0x00402e60 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402e64 lw a0, -0x7f9c(gp) | a0 = *(gp);
0x00402e68 lw t8, -0x7fd4(gp) | t8 = *((gp - 8181));
| /* str.e_1_31m_echo__s_in__s_e_0m */
0x00402e6c addiu a1, t8, -0x554c | a1 = t8 + -0x554c;
0x00402e70 lw a2, 0x18(fp) | a2 = *(arg_18h);
0x00402e74 lw a3, 0x1c(fp) | a3 = *(arg_1ch);
0x00402e78 lw t8, -0x7e38(gp) | t8 = *(gp);
0x00402e7c move t9, t8 | t9 = t8;
0x00402e80 jalr t9 | t9 ();
0x00402e84 nop |
0x00402e88 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00402e8c move t8, zero | t8 = 0;
| label_0:
0x00402e90 move v0, t8 | v0 = t8;
0x00402e94 lw t8, -0x7dd0(gp) | t8 = *((gp - 8052));
0x00402e98 lw v1, 0x2c(fp) | v1 = *(arg_2ch);
0x00402e9c lw t8, (t8) | t8 = *(t8);
| if (v1 != t8) {
0x00402ea0 beq v1, t8, 0x402eb8 |
0x00402ea4 nop |
0x00402ea8 lw t8, -0x7e60(gp) | t8 = sym.imp.__stack_chk_fail;
0x00402eac move t9, t8 | t9 = t8;
0x00402eb0 jalr t9 | t9 ();
0x00402eb4 nop |
| }
0x00402eb8 move sp, fp |
0x00402ebc lw ra, 0x34(sp) | ra = *(var_34h);
0x00402ec0 lw fp, 0x30(sp) | fp = *(var_30h);
0x00402ec4 addiu sp, sp, 0x38 |
0x00402ec8 jr ra | return v1;
0x00402ecc nop |
| }
[*] Function sprintf used 2 times wifiAutoReconnect