[*] Binary protection state of libstdc++.so.6.0.17
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of libstdc++.so.6.0.17
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/libstdc++.so.6.0.17 @ 0x5d82c */
| #include <stdint.h>
|
; (fcn) method.std::ios_base._M_call_callbacks_std::ios_base::event_ () | void method_std::ios_base_M_call_callbacks_std::ios_base::event_ () {
| /* std::ios_base::_M_call_callbacks(std::ios_base::event) */
0x0005d82c lui gp, 0xa |
0x0005d830 addiu gp, gp, 0x2924 |
0x0005d834 addu gp, gp, t9 | gp += t9;
0x0005d838 addiu sp, sp, -0x28 |
0x0005d83c sw s0, 0x18(sp) | *(var_18h) = s0;
0x0005d840 lw s0, 0x18(a0) | s0 = *((a0 + 6));
0x0005d844 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0005d848 sw s2, 0x20(sp) | *(var_20h) = s2;
0x0005d84c sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x0005d850 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0005d854 move s1, a0 | s1 = a0;
0x0005d858 move s2, a1 | s2 = a1;
| if (s0 == 0) {
0x0005d85c beqz s0, 0x5d880 | goto label_0;
| }
| do {
0x0005d860 lw t9, 4(s0) | t9 = *((s0 + 1));
0x0005d864 lw a2, 8(s0) | a2 = *((s0 + 2));
0x0005d868 move a0, s2 | a0 = s2;
0x0005d86c move a1, s1 | a1 = s1;
0x0005d870 jalr t9 | t9 ();
0x0005d874 lw s0, (s0) | s0 = *(s0);
0x0005d878 bnez s0, 0x5d860 |
| } while (s0 != 0);
0x0005d87c nop |
| label_0:
0x0005d880 lw ra, 0x24(sp) | ra = *(var_24h);
0x0005d884 lw s2, 0x20(sp) | s2 = *(var_20h);
0x0005d888 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x0005d88c lw s0, 0x18(sp) | s0 = *(var_18h);
0x0005d890 addiu sp, sp, 0x28 |
0x0005d894 jr ra | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/libstdc++.so.6.0.17 @ 0x5d8e4 */
| #include <stdint.h>
|
; (fcn) method.std::ios_base._M_dispose_callbacks__ () | void method_std::ios_base_M_dispose_callbacks_ () {
| /* std::ios_base::_M_dispose_callbacks() */
0x0005d8e4 lui gp, 0xa |
0x0005d8e8 addiu gp, gp, 0x286c |
0x0005d8ec addu gp, gp, t9 | gp += t9;
0x0005d8f0 lw v1, 0x18(a0) | v1 = *((a0 + 6));
0x0005d8f4 addiu sp, sp, -0x28 |
0x0005d8f8 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0005d8fc sw s2, 0x20(sp) | *(var_20h) = s2;
0x0005d900 sw s0, 0x18(sp) | *(var_18h) = s0;
0x0005d904 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0005d908 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x0005d90c move s2, a0 | s2 = a0;
0x0005d910 lw s0, -0x7bb8(gp) | s0 = *(gp);
| if (v1 == 0) {
0x0005d914 beqz v1, 0x5d960 | goto label_2;
| }
| label_0:
0x0005d918 addiu v0, v1, 0xc | v0 = v1 + 0xc;
| if (s0 == 0) {
0x0005d91c beqz s0, 0x5d97c | goto label_3;
| }
0x0005d920 sync | __asm ("sync");
| do {
0x0005d924 ll a1, (v0) | __asm ("ll a1, (v0)");
0x0005d928 addiu at, a1, -1 | at = a1 + -1;
0x0005d92c sc at, (v0) | __asm ("sc at, (v0)");
0x0005d930 beqz at, 0x5d924 |
| } while (at == 0);
0x0005d934 nop |
0x0005d938 sync | __asm ("sync");
0x0005d93c move v0, a1 | v0 = a1;
| label_1:
0x0005d940 lw t9, -0x6e38(gp) | t9 = *(gp);
0x0005d944 move a0, v1 | a0 = v1;
| if (v0 != 0) {
0x0005d948 bnez v0, 0x5d960 | goto label_2;
| }
0x0005d94c lw s1, (v1) | s1 = *(v1);
0x0005d950 jalr t9 | t9 ();
0x0005d954 lw gp, 0x10(sp) | gp = *(var_10h);
0x0005d958 move v1, s1 | v1 = s1;
| if (s1 != 0) {
0x0005d95c bnez s1, 0x5d918 | goto label_0;
| }
| label_2:
0x0005d960 lw ra, 0x24(sp) | ra = *(var_24h);
0x0005d964 sw zero, 0x18(s2) | *((s2 + 6)) = 0;
0x0005d968 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x0005d96c lw s2, 0x20(sp) | s2 = *(var_20h);
0x0005d970 lw s0, 0x18(sp) | s0 = *(var_18h);
0x0005d974 addiu sp, sp, 0x28 |
0x0005d978 jr ra | return v0;
| label_3:
0x0005d97c lw v0, 0xc(v1) | v0 = *((v1 + 3));
0x0005d980 addiu a0, v0, -1 | a0 = v0 + -1;
0x0005d984 sw a0, 0xc(v1) | *((v1 + 3)) = a0;
0x0005d988 b 0x5d940 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/libstdc++.so.6.0.17 @ 0x47fb0 */
| #include <stdint.h>
|
; (fcn) method.std::istream.ignore__ () | void method_std::istream_ignore_ () {
| /* std::istream::ignore() */
0x00047fb0 lui gp, 0xc |
0x00047fb4 addiu gp, gp, -0x7e60 |
0x00047fb8 addu gp, gp, t9 | gp += t9;
0x00047fbc addiu sp, sp, -0x30 |
0x00047fc0 lw t9, -0x7bb4(gp) | t9 = *((gp - 7917));
0x00047fc4 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00047fc8 sw s0, 0x28(sp) | *(var_28h) = s0;
0x00047fcc move s0, a0 | s0 = a0;
0x00047fd0 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00047fd4 move a1, s0 | a1 = s0;
0x00047fd8 sw zero, 4(a0) | *((a0 + 1)) = 0;
0x00047fdc addiu a2, zero, 1 | a2 = 1;
0x00047fe0 addiu a0, sp, 0x18 | a0 = sp + 0x18;
0x00047fe4 jalr t9 | t9 ();
0x00047fe8 lbu v0, 0x18(sp) | v0 = *(var_18h);
0x00047fec lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00047ff0 bnez v0, 0x48008 |
0x00047ff4 lw ra, 0x2c(sp) | ra = *(var_2ch);
| label_0:
0x00047ff8 move v0, s0 | v0 = s0;
0x00047ffc lw s0, 0x28(sp) | s0 = *(var_28h);
0x00048000 addiu sp, sp, 0x30 |
0x00048004 jr ra | return v0;
| }
0x00048008 lw v0, (s0) | v0 = *(s0);
0x0004800c lw v0, -0xc(v0) | v0 = *((v0 - 3));
0x00048010 addu v0, s0, v0 | v0 = s0 + v0;
0x00048014 lw a0, 0x78(v0) | a0 = *((v0 + 30));
0x00048018 lw v0, 8(a0) | v0 = *((a0 + 2));
0x0004801c lw v1, 0xc(a0) | v1 = *((a0 + 3));
0x00048020 sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
0x00048024 addiu v0, v0, 1 | v0++;
| if (v1 == 0) {
0x00048028 beqz v1, 0x4804c | goto label_1;
| }
0x0004802c sw v0, 8(a0) | *((a0 + 2)) = v0;
| do {
0x00048030 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00048034 addiu v0, zero, 1 | v0 = 1;
0x00048038 sw v0, 4(s0) | *((s0 + 1)) = v0;
0x0004803c move v0, s0 | v0 = s0;
0x00048040 lw s0, 0x28(sp) | s0 = *(var_28h);
0x00048044 addiu sp, sp, 0x30 |
0x00048048 jr ra | return v0;
| label_1:
0x0004804c lw t9, -0x7fd4(gp) | t9 = *((gp - 8181));
0x00048050 addiu t9, t9, 0x70b0 | t9 += 0x70b0;
0x00048054 bal 0x470b0 | entry0 ();
0x00048058 nop |
0x0004805c addiu v1, zero, -1 | v1 = -1;
0x00048060 lw gp, 0x10(sp) | gp = *(var_10h);
0x00048064 bne v0, v1, 0x48030 |
| } while (v0 != v1);
0x00048068 lw v0, (s0) | v0 = *(s0);
0x0004806c lw t9, -0x76f0(gp) | t9 = *((gp - 7612));
0x00048070 lw a0, -0xc(v0) | a0 = *((v0 - 3));
0x00048074 addu a0, s0, a0 | a0 = s0 + a0;
0x00048078 lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x0004807c ori a1, a1, 2 | a1 |= 2;
0x00048080 jalr t9 | t9 ();
0x00048084 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00048088 b 0x47ff8 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/libstdc++.so.6.0.17 @ 0x4814c */
| #include <stdint.h>
|
; (fcn) method.std::istream.ignore_int_ () | void method_std::istream_ignore_int_ () {
| /* std::istream::ignore(int) */
0x0004814c lui gp, 0xc |
0x00048150 addiu gp, gp, -0x7ffc |
0x00048154 addu gp, gp, t9 | gp += t9;
0x00048158 addiu sp, sp, -0x50 |
0x0004815c addiu v0, zero, 1 | v0 = 1;
0x00048160 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00048164 sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x00048168 sw s7, 0x48(sp) | *(var_48h) = s7;
0x0004816c sw s6, 0x44(sp) | *(var_44h) = s6;
0x00048170 sw s5, 0x40(sp) | *(var_40h) = s5;
0x00048174 sw s4, 0x3c(sp) | *(var_3ch) = s4;
0x00048178 sw s3, 0x38(sp) | *(var_38h) = s3;
0x0004817c sw s2, 0x34(sp) | *(var_34h) = s2;
0x00048180 sw s1, 0x30(sp) | *(var_30h) = s1;
0x00048184 sw s0, 0x2c(sp) | *(var_2ch) = s0;
0x00048188 lw t9, -0x7bb4(gp) | t9 = *((gp - 7917));
| if (a1 == v0) {
0x0004818c beq a1, v0, 0x482fc | goto label_4;
| }
0x00048190 move s2, a0 | s2 = a0;
0x00048194 sw zero, 4(a0) | *((a0 + 1)) = 0;
0x00048198 move s0, a1 | s0 = a1;
0x0004819c addiu a0, sp, 0x18 | a0 = sp + 0x18;
0x000481a0 move a1, s2 | a1 = s2;
0x000481a4 addiu a2, zero, 1 | a2 = 1;
0x000481a8 jalr t9 | t9 ();
0x000481ac lw gp, 0x10(sp) | gp = *(var_10h);
| if (s0 <= 0) {
0x000481b0 blez s0, 0x48284 | goto label_5;
| }
0x000481b4 lbu v0, 0x18(sp) | v0 = *(var_18h);
0x000481b8 move v0, s2 | v0 = s2;
| if (v0 == 0) {
0x000481bc beqz v0, 0x48288 | goto label_1;
| }
0x000481c0 lw v0, (s2) | v0 = *(s2);
0x000481c4 lw v0, -0xc(v0) | v0 = *((v0 - 3));
0x000481c8 addu v0, s2, v0 | v0 = s2 + v0;
0x000481cc lw s1, 0x78(v0) | s1 = *((v0 + 30));
0x000481d0 lw v0, 8(s1) | v0 = *((s1 + 2));
0x000481d4 lw v1, 0xc(s1) | v1 = *((s1 + 3));
0x000481d8 sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
0x000481dc lw t9, -0x7fd4(gp) | t9 = *((gp - 8181));
| if (v1 == 0) {
0x000481e0 beqz v1, 0x483ac | goto label_6;
| }
0x000481e4 lbu a1, (v0) | a1 = *(v0);
| label_3:
0x000481e8 lw v1, 4(s2) | v1 = *((s2 + 1));
0x000481ec lw s6, -0x7fd4(gp) | s6 = *((gp - 8181));
0x000481f0 lw s7, -0x7fd4(gp) | s7 = *((gp - 8181));
0x000481f4 lui s5, 0x7fff | s5 = 0x7fff0000;
0x000481f8 move s3, zero | s3 = 0;
0x000481fc addiu s4, zero, -1 | s4 = -1;
0x00048200 ori s5, s5, 0xffff | s5 |= 0xffff;
| label_0:
0x00048204 slt a0, v1, s0 | a0 = (v1 < s0) ? 1 : 0;
| if (a0 == 0) {
0x00048208 beqz a0, 0x4825c | goto label_7;
| }
0x0004820c nop |
| do {
0x00048210 subu a0, s0, v1 | __asm ("subu a0, s0, v1");
| if (a1 == s4) {
0x00048214 beq a1, s4, 0x48264 | goto label_8;
| }
0x00048218 lw a1, 0xc(s1) | a1 = *((s1 + 3));
0x0004821c lw v0, 8(s1) | v0 = *((s1 + 2));
0x00048220 subu a2, a1, v0 | __asm ("subu a2, a1, v0");
0x00048224 slt a3, a2, a0 | a3 = (a2 < a0) ? 1 : 0;
| if (a3 == 0) {
0x00048228 movn a0, a2, a3 | a0 = a2;
| }
0x0004822c slti a2, a0, 2 | a2 = (a0 < 2) ? 1 : 0;
| if (a2 != 0) {
0x00048230 bnez a2, 0x482cc | goto label_9;
| }
0x00048234 nop |
0x00048238 addu v0, v0, a0 | v0 += a0;
0x0004823c addu v1, v1, a0 | v1 += a0;
0x00048240 sltu a1, v0, a1 | a1 = (v0 < a1) ? 1 : 0;
0x00048244 sw v0, 8(s1) | *((s1 + 2)) = v0;
0x00048248 sw v1, 4(s2) | *((s2 + 1)) = v1;
| if (a1 == 0) {
0x0004824c beqz a1, 0x48354 | goto label_10;
| }
0x00048250 slt a0, v1, s0 | a0 = (v1 < s0) ? 1 : 0;
0x00048254 lbu a1, (v0) | a1 = *(v0);
0x00048258 bnez a0, 0x48210 |
| } while (a0 != 0);
| if (s0 == s5) {
| label_7:
0x0004825c beq s0, s5, 0x482b4 | goto label_11;
| }
0x00048260 nop |
| do {
| label_8:
0x00048264 addiu v0, zero, -1 | v0 = -1;
| if (s3 != 0) {
0x00048268 beqz s3, 0x4827c |
0x0004826c lui v0, 0x7fff | v0 = 0x7fffffff;
0x00048270 ori v0, v0, 0xffff |
0x00048274 sw v0, 4(s2) | *((s2 + 1)) = v0;
0x00048278 addiu v0, zero, -1 | v0 = -1;
| }
0x0004827c lw t9, -0x76f0(gp) | t9 = *((gp - 7612));
| if (a1 == v0) {
0x00048280 beq a1, v0, 0x48334 | goto label_12;
| }
| label_5:
0x00048284 move v0, s2 | v0 = s2;
| label_1:
0x00048288 lw ra, 0x4c(sp) | ra = *(var_4ch);
0x0004828c lw s7, 0x48(sp) | s7 = *(var_48h);
0x00048290 lw s6, 0x44(sp) | s6 = *(var_44h);
0x00048294 lw s5, 0x40(sp) | s5 = *(var_40h);
0x00048298 lw s4, 0x3c(sp) | s4 = *(var_3ch);
0x0004829c lw s3, 0x38(sp) | s3 = *(var_38h);
0x000482a0 lw s2, 0x34(sp) | s2 = *(var_34h);
0x000482a4 lw s1, 0x30(sp) | s1 = *(var_30h);
0x000482a8 lw s0, 0x2c(sp) | s0 = *(var_2ch);
0x000482ac addiu sp, sp, 0x50 |
0x000482b0 jr ra | return v1;
| label_11:
0x000482b4 lui v0, 0x8000 | v0 = 0x80000000;
0x000482b8 beq a1, s4, 0x48264 |
| } while (a1 == s4);
0x000482bc sw v0, 4(s2) | *((s2 + 1)) = v0;
0x000482c0 lui v1, 0x8000 | v1 = 0x80000000;
0x000482c4 addiu s3, zero, 1 | s3 = 1;
0x000482c8 b 0x48204 | goto label_0;
| label_9:
0x000482cc addiu a0, v1, 1 | a0 = v1 + 1;
0x000482d0 sltu v1, v0, a1 | v1 = (v0 < a1) ? 1 : 0;
0x000482d4 sw a0, 4(s2) | *((s2 + 1)) = a0;
| if (v1 == 0) {
0x000482d8 beqz v1, 0x48370 | goto label_13;
| }
0x000482dc addiu v0, v0, 1 | v0++;
0x000482e0 sw v0, 8(s1) | *((s1 + 2)) = v0;
| label_2:
0x000482e4 sltu a1, v0, a1 | a1 = (v0 < a1) ? 1 : 0;
0x000482e8 addiu t9, s6, 0x70c0 | t9 = s6 + aav.0x000070c0;
| if (a1 == 0) {
0x000482ec beqz a1, 0x48394 | goto label_14;
| }
0x000482f0 lbu a1, (v0) | a1 = *(v0);
| do {
0x000482f4 lw v1, 4(s2) | v1 = *((s2 + 1));
0x000482f8 b 0x48204 | goto label_0;
| label_4:
0x000482fc lw t9, -0x7fc4(gp) | t9 = *((gp - 8177));
0x00048300 bal 0x47fb0 | method ();
0x00048304 nop |
0x00048308 lw ra, 0x4c(sp) | ra = *(var_4ch);
0x0004830c lw s7, 0x48(sp) | s7 = *(var_48h);
0x00048310 lw s6, 0x44(sp) | s6 = *(var_44h);
0x00048314 lw s5, 0x40(sp) | s5 = *(var_40h);
0x00048318 lw s4, 0x3c(sp) | s4 = *(var_3ch);
0x0004831c lw s3, 0x38(sp) | s3 = *(var_38h);
0x00048320 lw s2, 0x34(sp) | s2 = *(var_34h);
0x00048324 lw s1, 0x30(sp) | s1 = *(var_30h);
0x00048328 lw s0, 0x2c(sp) | s0 = *(var_2ch);
0x0004832c addiu sp, sp, 0x50 |
0x00048330 jr ra | return v1;
| label_12:
0x00048334 lw v0, (s2) | v0 = *(s2);
0x00048338 lw a0, -0xc(v0) | a0 = *((v0 - 3));
0x0004833c addu a0, s2, a0 | a0 = s2 + a0;
0x00048340 lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x00048344 ori a1, a1, 2 | a1 |= 2;
0x00048348 jalr t9 | t9 ();
0x0004834c move v0, s2 | v0 = s2;
0x00048350 b 0x48288 | goto label_1;
| label_10:
0x00048354 addiu t9, s6, 0x70c0 | t9 = s6 + aav.0x000070c0;
0x00048358 move a0, s1 | a0 = s1;
0x0004835c bal 0x470c0 | fcn_000470c0 ();
0x00048360 lw gp, 0x10(sp) | gp = *(var_10h);
0x00048364 move a1, v0 | a1 = v0;
0x00048368 lw v1, 4(s2) | v1 = *((s2 + 1));
0x0004836c b 0x48204 | goto label_0;
| label_13:
0x00048370 addiu t9, s7, 0x70b0 | t9 = s7 + 0x70b0;
0x00048374 move a0, s1 | a0 = s1;
0x00048378 bal 0x470b0 | entry0 ();
0x0004837c lw gp, 0x10(sp) | gp = *(var_10h);
0x00048380 addiu a1, zero, -1 | a1 = -1;
0x00048384 beq v0, s4, 0x482f4 |
| } while (v0 == s4);
0x00048388 lw v0, 8(s1) | v0 = *((s1 + 2));
0x0004838c lw a1, 0xc(s1) | a1 = *((s1 + 3));
0x00048390 b 0x482e4 | goto label_2;
| label_14:
0x00048394 move a0, s1 | a0 = s1;
0x00048398 bal 0x470c0 | fcn_000470c0 ();
0x0004839c lw gp, 0x10(sp) | gp = *(var_10h);
0x000483a0 move a1, v0 | a1 = v0;
0x000483a4 lw v1, 4(s2) | v1 = *((s2 + 1));
0x000483a8 b 0x48204 | goto label_0;
| label_6:
0x000483ac addiu t9, t9, 0x70c0 | t9 += aav.0x000070c0;
0x000483b0 move a0, s1 | a0 = s1;
0x000483b4 bal 0x470c0 | fcn_000470c0 ();
0x000483b8 lw gp, 0x10(sp) | gp = *(var_10h);
0x000483bc move a1, v0 | a1 = v0;
0x000483c0 b 0x481e8 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/libstdc++.so.6.0.17 @ 0x67154 */
| #include <stdint.h>
|
; (fcn) method.std::istream.ignore_int__int_ () | void method_std::istream_ignore_int_int_ () {
| /* std::istream::ignore(int, int) */
0x00067154 lui gp, 0xa |
0x00067158 addiu gp, gp, -0x7004 |
0x0006715c addu gp, gp, t9 | gp += t9;
0x00067160 addiu sp, sp, -0x50 |
0x00067164 addiu v0, zero, -1 | v0 = -1;
0x00067168 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0006716c sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x00067170 sw fp, 0x48(sp) | *(var_48h) = fp;
0x00067174 sw s7, 0x44(sp) | *(var_44h) = s7;
0x00067178 sw s6, 0x40(sp) | *(var_40h) = s6;
0x0006717c sw s5, 0x3c(sp) | *(var_3ch) = s5;
0x00067180 sw s4, 0x38(sp) | *(var_38h) = s4;
0x00067184 sw s3, 0x34(sp) | *(var_34h) = s3;
0x00067188 sw s2, 0x30(sp) | *(var_30h) = s2;
0x0006718c sw s1, 0x2c(sp) | *(var_2ch) = s1;
0x00067190 sw s0, 0x28(sp) | *(var_28h) = s0;
0x00067194 sw a2, 0x58(sp) | *(arg_58h) = a2;
| if (a2 == v0) {
0x00067198 beq a2, v0, 0x6734c | goto label_6;
| }
0x0006719c lw t9, -0x7bb4(gp) | t9 = *((gp - 7917));
0x000671a0 move s3, a0 | s3 = a0;
0x000671a4 sw zero, 4(a0) | *((a0 + 1)) = 0;
0x000671a8 move s0, a1 | s0 = a1;
0x000671ac addiu a0, sp, 0x18 | a0 = sp + 0x18;
0x000671b0 move a1, s3 | a1 = s3;
0x000671b4 addiu a2, zero, 1 | a2 = 1;
0x000671b8 jalr t9 | t9 ();
0x000671bc lw gp, 0x10(sp) | gp = *(var_10h);
| if (s0 <= 0) {
0x000671c0 blez s0, 0x672c8 | goto label_3;
| }
0x000671c4 lbu v0, 0x18(sp) | v0 = *(var_18h);
0x000671c8 move v0, s3 | v0 = s3;
| if (v0 == 0) {
0x000671cc beqz v0, 0x672cc | goto label_2;
| }
0x000671d0 lw v0, (s3) | v0 = *(s3);
0x000671d4 lw v1, 0x58(sp) | v1 = *(arg_58h);
0x000671d8 lw v0, -0xc(v0) | v0 = *((v0 - 3));
0x000671dc seb v1, v1 | __asm ("seb v1, v1");
0x000671e0 sw v1, 0x20(sp) | *(var_20h) = v1;
0x000671e4 addu v0, s3, v0 | v0 = s3 + v0;
0x000671e8 lw s1, 0x78(v0) | s1 = *((v0 + 30));
0x000671ec lw v0, 8(s1) | v0 = *((s1 + 2));
0x000671f0 lw v1, 0xc(s1) | v1 = *((s1 + 3));
0x000671f4 sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
0x000671f8 lw t9, -0x7fd4(gp) | t9 = *((gp - 8181));
| if (v1 == 0) {
0x000671fc beqz v1, 0x67424 | goto label_7;
| }
0x00067200 lbu a1, (v0) | a1 = *(v0);
| label_5:
0x00067204 lw fp, 4(s3) | fp = *((s3 + 1));
0x00067208 lui s4, 0x7fff | s4 = 0x7fff0000;
0x0006720c move s2, zero | s2 = 0;
0x00067210 ori s4, s4, 0xffff | s4 |= 0xffff;
| label_1:
0x00067214 slt a0, fp, s0 | a0 = (fp < s0) ? 1 : 0;
| if (a0 == 0) {
0x00067218 beqz a0, 0x67298 | goto label_8;
| }
0x0006721c nop |
| do {
0x00067220 addiu v1, zero, -1 | v1 = -1;
0x00067224 lw v0, 0x58(sp) | v0 = *(arg_58h);
| if (a1 == v1) {
0x00067228 beq a1, v1, 0x672a0 | goto label_0;
| }
0x0006722c subu a3, s0, fp | __asm ("subu a3, s0, fp");
| if (v0 == a1) {
0x00067230 beq v0, a1, 0x672a0 | goto label_0;
| }
0x00067234 lw s7, 0xc(s1) | s7 = *((s1 + 3));
0x00067238 lw s6, 8(s1) | s6 = *((s1 + 2));
0x0006723c subu v0, s7, s6 | __asm ("subu v0, s7, s6");
0x00067240 slt a0, v0, a3 | a0 = (v0 < a3) ? 1 : 0;
0x00067244 move s5, v0 | s5 = v0;
| if (a0 != 0) {
0x00067248 movz s5, a3, a0 | s5 = a3;
| }
0x0006724c slti v0, s5, 2 | v0 = (s5 < 2) ? 1 : 0;
0x00067250 lw t9, -0x77e4(gp) | t9 = *((gp - 7673));
| if (v0 != 0) {
0x00067254 bnez v0, 0x6731c | goto label_9;
| }
0x00067258 lw a1, 0x20(sp) | a1 = *(var_20h);
0x0006725c move a2, s5 | a2 = s5;
0x00067260 move a0, s6 | a0 = s6;
0x00067264 jalr t9 | t9 ();
0x00067268 subu a0, v0, s6 | __asm ("subu a0, v0, s6");
| if (v0 == 0) {
0x0006726c movn s5, a0, v0 | s5 = a0;
| }
0x00067270 addu t0, s6, s5 | t0 = s6 + s5;
0x00067274 addu fp, fp, s5 | fp += s5;
0x00067278 sltu t1, t0, s7 | t1 = (t0 < s7) ? 1 : 0;
0x0006727c lw gp, 0x10(sp) | gp = *(var_10h);
0x00067280 sw t0, 8(s1) | *((s1 + 2)) = t0;
0x00067284 sw fp, 4(s3) | *((s3 + 1)) = fp;
| if (t1 == 0) {
0x00067288 beqz t1, 0x673dc | goto label_10;
| }
0x0006728c slt a0, fp, s0 | a0 = (fp < s0) ? 1 : 0;
0x00067290 lbu a1, (t0) | a1 = *(t0);
0x00067294 bnez a0, 0x67220 |
| } while (a0 != 0);
| label_8:
0x00067298 addiu v1, zero, -1 | v1 = -1;
0x0006729c beq s0, s4, 0x672fc |
| while (a1 == v1) {
| label_0:
0x000672a0 addiu v0, zero, -1 | v0 = -1;
| if (s2 != 0) {
0x000672a4 beqz s2, 0x672b8 |
0x000672a8 lui v0, 0x7fff | v0 = 0x7fffffff;
0x000672ac ori v0, v0, 0xffff |
0x000672b0 sw v0, 4(s3) | *((s3 + 1)) = v0;
0x000672b4 addiu v0, zero, -1 | v0 = -1;
| }
0x000672b8 lw v1, 0x58(sp) | v1 = *(arg_58h);
| if (a1 == v0) {
0x000672bc beq a1, v0, 0x67388 | goto label_11;
| }
0x000672c0 lui v1, 0x7fff | v1 = 0x7fff0000;
| if (v1 == a1) {
0x000672c4 beq v1, a1, 0x673ac | goto label_12;
| }
| label_3:
0x000672c8 move v0, s3 | v0 = s3;
| label_2:
0x000672cc lw ra, 0x4c(sp) | ra = *(var_4ch);
0x000672d0 lw fp, 0x48(sp) | fp = *(var_48h);
0x000672d4 lw s7, 0x44(sp) | s7 = *(var_44h);
0x000672d8 lw s6, 0x40(sp) | s6 = *(var_40h);
0x000672dc lw s5, 0x3c(sp) | s5 = *(var_3ch);
0x000672e0 lw s4, 0x38(sp) | s4 = *(var_38h);
0x000672e4 lw s3, 0x34(sp) | s3 = *(var_34h);
0x000672e8 lw s2, 0x30(sp) | s2 = *(var_30h);
0x000672ec lw s1, 0x2c(sp) | s1 = *(var_2ch);
0x000672f0 lw s0, 0x28(sp) | s0 = *(var_28h);
0x000672f4 addiu sp, sp, 0x50 |
0x000672f8 jr ra | return v0;
0x000672fc lw v0, 0x58(sp) | v0 = *(arg_58h);
0x00067300 beq a1, v1, 0x672a0 |
| }
0x00067304 lui v0, 0x8000 | v0 = 0x80000000;
| if (v0 == a1) {
0x00067308 beq v0, a1, 0x672a0 | goto label_0;
| }
0x0006730c sw v0, 4(s3) | *((s3 + 1)) = v0;
0x00067310 lui fp, 0x8000 | fp = 0x80000000;
0x00067314 addiu s2, zero, 1 | s2 = 1;
0x00067318 b 0x67214 | goto label_1;
| label_9:
0x0006731c addiu v1, fp, 1 | v1 = fp + 1;
0x00067320 sltu v0, s6, s7 | v0 = (s6 < s7) ? 1 : 0;
0x00067324 sw v1, 4(s3) | *((s3 + 1)) = v1;
| if (v0 == 0) {
0x00067328 beqz v0, 0x673fc | goto label_13;
| }
0x0006732c addiu t0, s6, 1 | t0 = s6 + 1;
0x00067330 sw t0, 8(s1) | *((s1 + 2)) = t0;
| label_4:
0x00067334 sltu t1, t0, s7 | t1 = (t0 < s7) ? 1 : 0;
0x00067338 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
| if (t1 == 0) {
0x0006733c beqz t1, 0x67454 | goto label_14;
| }
0x00067340 lbu a1, (t0) | a1 = *(t0);
| do {
0x00067344 lw fp, 4(s3) | fp = *((s3 + 1));
0x00067348 b 0x67214 | goto label_1;
| label_6:
0x0006734c lw t9, -0x7504(gp) | t9 = *((gp - 7489));
0x00067350 jalr t9 | t9 ();
0x00067354 nop |
0x00067358 lw ra, 0x4c(sp) | ra = *(var_4ch);
0x0006735c lw fp, 0x48(sp) | fp = *(var_48h);
0x00067360 lw s7, 0x44(sp) | s7 = *(var_44h);
0x00067364 lw s6, 0x40(sp) | s6 = *(var_40h);
0x00067368 lw s5, 0x3c(sp) | s5 = *(var_3ch);
0x0006736c lw s4, 0x38(sp) | s4 = *(var_38h);
0x00067370 lw s3, 0x34(sp) | s3 = *(var_34h);
0x00067374 lw s2, 0x30(sp) | s2 = *(var_30h);
0x00067378 lw s1, 0x2c(sp) | s1 = *(var_2ch);
0x0006737c lw s0, 0x28(sp) | s0 = *(var_28h);
0x00067380 addiu sp, sp, 0x50 |
0x00067384 jr ra | return v0;
| label_11:
0x00067388 lw v0, (s3) | v0 = *(s3);
0x0006738c lw t9, -0x76f0(gp) | t9 = *((gp - 7612));
0x00067390 lw a0, -0xc(v0) | a0 = *((v0 - 3));
0x00067394 addu a0, s3, a0 | a0 = s3 + a0;
0x00067398 lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x0006739c ori a1, a1, 2 | a1 |= 2;
0x000673a0 jalr t9 | t9 ();
0x000673a4 move v0, s3 | v0 = s3;
0x000673a8 b 0x672cc | goto label_2;
| label_12:
0x000673ac lw v0, 4(s3) | v0 = *((s3 + 1));
0x000673b0 ori v1, v1, 0xffff | v1 |= 0xffff;
0x000673b4 addiu v0, v0, 1 | v0++;
| if (v0 != v1) {
0x000673b8 beq v0, v1, 0x673c0 |
0x000673bc sw v0, 4(s3) | *((s3 + 1)) = v0;
| }
0x000673c0 lw v0, 8(s1) | v0 = *((s1 + 2));
0x000673c4 lw v1, 0xc(s1) | v1 = *((s1 + 3));
0x000673c8 sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
0x000673cc addiu v0, v0, 1 | v0++;
| if (v1 == 0) {
0x000673d0 beqz v1, 0x6743c | goto label_15;
| }
0x000673d4 sw v0, 8(s1) | *((s1 + 2)) = v0;
0x000673d8 b 0x672c8 | goto label_3;
| label_10:
0x000673dc lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x000673e0 addiu t9, v0, 0x732c | t9 = v0 + 0x732c;
0x000673e4 move a0, s1 | a0 = s1;
0x000673e8 jalr t9 | t9 ();
0x000673ec lw gp, 0x10(sp) | gp = *(var_10h);
0x000673f0 move a1, v0 | a1 = v0;
0x000673f4 lw fp, 4(s3) | fp = *((s3 + 1));
0x000673f8 b 0x67214 | goto label_1;
| label_13:
0x000673fc lw v1, -0x7fd4(gp) | v1 = *((gp - 8181));
0x00067400 addiu t9, v1, 0x733c | t9 = v1 + 0x733c;
0x00067404 move a0, s1 | a0 = s1;
0x00067408 jalr t9 | t9 ();
0x0006740c addiu a1, zero, -1 | a1 = -1;
0x00067410 lw gp, 0x10(sp) | gp = *(var_10h);
0x00067414 beq v0, a1, 0x67344 |
| } while (v0 == a1);
0x00067418 lw t0, 8(s1) | t0 = *((s1 + 2));
0x0006741c lw s7, 0xc(s1) | s7 = *((s1 + 3));
0x00067420 b 0x67334 | goto label_4;
| label_7:
0x00067424 addiu t9, t9, 0x732c | t9 += 0x732c;
0x00067428 move a0, s1 | a0 = s1;
0x0006742c jalr t9 | t9 ();
0x00067430 lw gp, 0x10(sp) | gp = *(var_10h);
0x00067434 move a1, v0 | a1 = v0;
0x00067438 b 0x67204 | goto label_5;
| label_15:
0x0006743c lw t9, -0x7fd4(gp) | t9 = *((gp - 8181));
0x00067440 addiu t9, t9, 0x733c | t9 += 0x733c;
0x00067444 move a0, s1 | a0 = s1;
0x00067448 jalr t9 | t9 ();
0x0006744c move v0, s3 | v0 = s3;
0x00067450 b 0x672cc | goto label_2;
| label_14:
0x00067454 addiu t9, v0, 0x732c | t9 = v0 + 0x732c;
0x00067458 move a0, s1 | a0 = s1;
0x0006745c jalr t9 | t9 ();
0x00067460 lw gp, 0x10(sp) | gp = *(var_10h);
0x00067464 move a1, v0 | a1 = v0;
0x00067468 lw fp, 4(s3) | fp = *((s3 + 1));
0x0006746c b 0x67214 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/libstdc++.so.6.0.17 @ 0x47da0 */
| #include <stdint.h>
|
; (fcn) method.std::istreambuf_iterator_char__std::char_traits_char___.operator__ () | void method_std::istreambuf_iterator_char_std::char_traits_char_operator_ () {
| /* std::istreambuf_iterator<char, std::char_traits<char> >::operator++() */
0x00047da0 lui gp, 0xc |
0x00047da4 addiu gp, gp, -0x7c50 |
0x00047da8 addu gp, gp, t9 | gp += t9;
0x00047dac lw v1, (a0) | v1 = *(a0);
0x00047db0 addiu sp, sp, -0x20 |
0x00047db4 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00047db8 sw s0, 0x18(sp) | *(var_18h) = s0;
0x00047dbc sw ra, 0x1c(sp) | *(var_1ch) = ra;
0x00047dc0 move s0, a0 | s0 = a0;
| if (v1 == 0) {
0x00047dc4 beqz v1, 0x47dec | goto label_0;
| }
0x00047dc8 lw v0, 8(v1) | v0 = *((v1 + 2));
0x00047dcc lw a0, 0xc(v1) | a0 = *((v1 + 3));
0x00047dd0 sltu a0, v0, a0 | a0 = (v0 < a0) ? 1 : 0;
0x00047dd4 lw t9, -0x7fd4(gp) | t9 = *((gp - 8181));
| if (a0 == 0) {
0x00047dd8 beqz a0, 0x47e00 | goto label_1;
| }
0x00047ddc addiu v0, v0, 1 | v0++;
0x00047de0 sw v0, 8(v1) | *((v1 + 2)) = v0;
0x00047de4 addiu v0, zero, -1 | v0 = -1;
| do {
0x00047de8 sw v0, 4(s0) | *((s0 + 1)) = v0;
| label_0:
0x00047dec lw ra, 0x1c(sp) | ra = *(var_1ch);
0x00047df0 move v0, s0 | v0 = s0;
0x00047df4 lw s0, 0x18(sp) | s0 = *(var_18h);
0x00047df8 addiu sp, sp, 0x20 |
0x00047dfc jr ra | return v0;
| label_1:
0x00047e00 addiu t9, t9, 0x70b0 | t9 += 0x70b0;
0x00047e04 move a0, v1 | a0 = v1;
0x00047e08 bal 0x470b0 | entry0 ();
0x00047e0c addiu v0, zero, -1 | v0 = -1;
0x00047e10 b 0x47de8 |
| } while (1);
| }
[*] Function strcpy used 1 times libstdc++.so.6.0.17