[*] Binary protection state of ld-uClibc-0.9.33.2.so
No RELRO Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of ld-uClibc-0.9.33.2.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x3614 */
| #include <stdint.h>
|
; (fcn) fcn.00003614 () | void fcn_00003614 () {
0x00003614 lui gp, 2 |
0x00003618 addiu gp, gp, -0x45f4 |
0x0000361c addu gp, gp, t9 | gp += t9;
0x00003620 lw v0, -0x7fb8(gp) | v0 = *(gp);
0x00003624 lw v1, 0x20(a0) | v1 = *((a0 + 8));
0x00003628 addiu sp, sp, -0x28 |
0x0000362c lw v0, (v0) | v0 = *(v0);
0x00003630 sw fp, 0x20(sp) | *(var_20h) = fp;
0x00003634 move fp, sp | fp = sp;
0x00003638 sltu v0, v0, v1 | v0 = (v0 < v1) ? 1 : 0;
0x0000363c sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00003640 sw ra, 0x24(sp) | *(var_24h) = ra;
0x00003644 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00003648 move s0, a0 | s0 = a0;
| if (v0 == 0) {
0x0000364c beqz v0, 0x3684 | goto label_0;
| }
0x00003650 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
| do {
0x00003654 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00003658 addiu a0, zero, 2 | a0 = 2;
0x0000365c addiu a1, a1, 0x6b64 | a1 += str.cannot_allocate_memory_in_static_TLS_block;
0x00003660 bal 0x1ec4 | sym_dl_dprintf ()
0x00003664 lw gp, 0x10(fp) | gp = *(var_10h);
0x00003668 addiu a0, zero, 0x1e | a0 = 0x1e;
0x0000366c addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00003670 syscall | __asm ("syscall");
| if (a3 != 0) {
0x00003674 beql a3, zero, 0x3688 |
0x00003678 lw v0, -0x7fc0(gp) | v0 = *(gp);
0x0000367c lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00003680 sw v0, (v1) | *(v1) = v0;
| label_0:
0x00003684 lw v0, -0x7fc0(gp) | v0 = *(gp);
| }
0x00003688 lw v1, 0x20(s0) | v1 = *((s0 + 8));
0x0000368c lw a1, -0x7fbc(gp) | a1 = *(gp);
0x00003690 lw a0, (v0) | a0 = *(v0);
0x00003694 lw a1, (a1) | a1 = *(a1);
0x00003698 addu a0, v1, a0 | a0 = v1 + a0;
0x0000369c addiu a0, a0, -1 | a0 += -1;
0x000036a0 negu v1, v1 | __asm ("negu v1, v1");
0x000036a4 and a0, a0, v1 | a0 &= v1;
0x000036a8 lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x000036ac addu v1, a0, v1 | v1 = a0 + v1;
0x000036b0 sltu a1, a1, v1 | a1 = (a1 < v1) ? 1 : 0;
0x000036b4 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x000036b8 bnel a1, zero, 0x3654 |
| } while (a1 == 0);
0x000036bc sw v1, (v0) | *(v0) = v1;
0x000036c0 lhu v0, 0x4a(s0) | v0 = *((s0 + 37));
0x000036c4 andi v0, v0, 1 | v0 &= 1;
0x000036c8 sw a0, 0x28(s0) | *((s0 + 10)) = a0;
| if (v0 != 0) {
0x000036cc beqz v0, 0x3720 |
0x000036d0 rdhwr v1, 29 | __asm ("rdhwr v1, 29");
0x000036d4 lw v0, -0x7008(v1) | v0 = *((v1 - 7170));
0x000036d8 lw v1, (v0) | v1 = *(v0);
0x000036dc lw v0, -0x7f64(gp) | v0 = *(gp);
0x000036e0 lw v0, (v0) | v0 = *(v0);
0x000036e4 lw v0, -0x7f5c(gp) | v0 = *(gp);
| if (v1 != v0) {
0x000036e8 beq v1, v0, 0x3700 |
0x000036ec lw t9, -0x7f60(gp) | t9 = sym._dl_update_slotinfo;
0x000036f0 lw a0, 0x2c(s0) | a0 = *((s0 + 11));
0x000036f4 bal 0x28dc | sym_dl_update_slotinfo ();
0x000036f8 lw gp, 0x10(fp) | gp = *(var_10h);
0x000036fc lw v0, -0x7f5c(gp) | v0 = *(gp);
| }
0x00003700 move a0, s0 | a0 = s0;
0x00003704 lw t9, (v0) | t9 = *(v0);
0x00003708 move sp, fp |
0x0000370c lw ra, 0x24(sp) | ra = *(var_24h);
0x00003710 lw fp, 0x20(sp) | fp = *(var_20h);
0x00003714 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00003718 addiu sp, sp, 0x28 |
0x0000371c jr t9 | t9 ();
| }
0x00003720 lbu v0, 0x30(s0) | v0 = *((s0 + 48));
0x00003724 move sp, fp |
0x00003728 lw ra, 0x24(sp) | ra = *(var_24h);
0x0000372c addiu v1, zero, 1 | v1 = 1;
0x00003730 ins v0, v1, 0, 1 | __asm ("ins v0, v1, 0, 1");
0x00003734 lw fp, 0x20(sp) | fp = *(var_20h);
0x00003738 sb v0, 0x30(s0) | *((s0 + 48)) = v0;
0x0000373c lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00003740 addiu sp, sp, 0x28 |
0x00003744 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x2fe8 */
| #include <stdint.h>
|
; (fcn) sym.__dl_runtime_pltresolve () | void dl_runtime_pltresolve () {
0x00002fe8 lui gp, 2 |
0x00002fec addiu gp, gp, -0x3fc8 |
0x00002ff0 addu gp, gp, t9 | gp += t9;
0x00002ff4 lw v0, 0xc4(a0) | v0 = *((a0 + 49));
0x00002ff8 lw v1, 0x80(a0) | v1 = *((a0 + 32));
0x00002ffc addiu sp, sp, -0x38 |
0x00003000 addu a1, a1, v0 | a1 += v0;
0x00003004 lw v0, 4(a1) | v0 = *((a1 + 1));
0x00003008 sw s2, 0x28(sp) | *(var_28h) = s2;
0x0000300c lw s2, 0x7c(a0) | s2 = *((a0 + 31));
0x00003010 srl v0, v0, 8 | v0 >>= 8;
0x00003014 sll v0, v0, 4 | v0 <<= 4;
0x00003018 addu v0, v0, v1 | v0 += v1;
0x0000301c lw v0, (v0) | v0 = *(v0);
0x00003020 sw s3, 0x2c(sp) | *(var_2ch) = s3;
0x00003024 lw s3, (a0) | s3 = *(a0);
0x00003028 addu s2, s2, v0 | s2 += v0;
0x0000302c lw v0, (a1) | v0 = *(a1);
0x00003030 lw t9, -0x7f9c(gp) | t9 = sym._dl_find_hash;
0x00003034 sw s0, 0x20(sp) | *(var_20h) = s0;
0x00003038 addu s3, s3, v0 | s3 += v0;
0x0000303c lw v0, -0x7fb4(gp) | v0 = *(gp);
0x00003040 move s0, a0 | s0 = a0;
0x00003044 sw fp, 0x30(sp) | *(var_30h) = fp;
0x00003048 lw a1, (v0) | a1 = *(v0);
0x0000304c move fp, sp | fp = sp;
0x00003050 sw s1, 0x24(sp) | *(var_24h) = s1;
0x00003054 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00003058 sw ra, 0x34(sp) | *(var_34h) = ra;
0x0000305c sw zero, 0x10(sp) | *(var_10h) = 0;
0x00003060 move a0, s2 | a0 = s2;
0x00003064 addiu a1, a1, 0x3c | a1 += 0x3c;
0x00003068 move a2, s0 | a2 = s0;
0x0000306c addiu a3, zero, 1 | a3 = 1;
0x00003070 bal 0x19d4 | sym_dl_find_hash ();
0x00003074 move s1, v0 | s1 = v0;
0x00003078 lw gp, 0x18(fp) | gp = *(var_18h);
| if (v0 == 0) {
0x0000307c bnez v0, 0x30c4 |
0x00003080 lw v0, -0x7f90(gp) | v0 = *(gp);
0x00003084 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00003088 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x0000308c lw a2, (v0) | a2 = *(v0);
0x00003090 lw v0, 4(s0) | v0 = *((s0 + 1));
0x00003094 addiu a0, zero, 2 | a0 = 2;
0x00003098 addiu a1, a1, 0x6aa0 | a1 += str._s:_cant_resolve_symbol__s_in_lib__s._n;
0x0000309c sw v0, 0x10(sp) | *(var_10h) = v0;
0x000030a0 move a3, s2 | a3 = s2;
0x000030a4 bal 0x1ec4 | sym_dl_dprintf ()
0x000030a8 lw gp, 0x18(fp) | gp = *(var_18h);
0x000030ac addiu a0, zero, 1 | a0 = 1;
0x000030b0 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x000030b4 syscall | __asm ("syscall");
0x000030b8 lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 == 0) {
0x000030bc beqz a3, 0x30c4 | goto label_0;
| }
0x000030c0 sw v0, (v1) | *(v1) = v0;
| }
| label_0:
0x000030c4 sw s1, (s3) | *(s3) = s1;
0x000030c8 move sp, fp |
0x000030cc lw ra, 0x34(sp) | ra = *(var_34h);
0x000030d0 move v0, s1 | v0 = s1;
0x000030d4 lw fp, 0x30(sp) | fp = *(var_30h);
0x000030d8 lw s3, 0x2c(sp) | s3 = *(var_2ch);
0x000030dc lw s2, 0x28(sp) | s2 = *(var_28h);
0x000030e0 lw s1, 0x24(sp) | s1 = *(var_24h);
0x000030e4 lw s0, 0x20(sp) | s0 = *(var_20h);
0x000030e8 addiu sp, sp, 0x38 |
0x000030ec jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x30f0 */
| #include <stdint.h>
|
; (fcn) sym.__dl_runtime_resolve () | void dl_runtime_resolve () {
0x000030f0 lui gp, 2 |
0x000030f4 addiu gp, gp, -0x40d0 |
0x000030f8 addu gp, gp, t9 | gp += t9;
0x000030fc addiu sp, sp, -0x40 |
0x00003100 sw s1, 0x24(sp) | *(var_24h) = s1;
0x00003104 addiu s1, a1, -0x7ff0 | s1 = a1 + -0x7ff0;
0x00003108 lw a2, 4(s1) | a2 = *((s1 + 1));
0x0000310c sll v1, a0, 4 | v1 = a0 << 4;
0x00003110 sw s3, 0x2c(sp) | *(var_2ch) = s3;
0x00003114 lw v0, 0x80(a2) | v0 = *((a2 + 32));
0x00003118 lw s3, 0x7c(a2) | s3 = *((a2 + 31));
0x0000311c lw t9, -0x7f9c(gp) | t9 = sym._dl_find_hash;
0x00003120 addu v0, v1, v0 | v0 = v1 + v0;
0x00003124 lw v0, (v0) | v0 = *(v0);
0x00003128 sw fp, 0x38(sp) | *(var_38h) = fp;
0x0000312c sw s5, 0x34(sp) | *(var_34h) = s5;
0x00003130 addu s3, s3, v0 | s3 += v0;
0x00003134 lw v0, -0x7fb4(gp) | v0 = *(gp);
0x00003138 move fp, sp | fp = sp;
0x0000313c sw s4, 0x30(sp) | *(var_30h) = s4;
0x00003140 lw a1, (v0) | a1 = *(v0);
0x00003144 sw s2, 0x28(sp) | *(var_28h) = s2;
0x00003148 sw s0, 0x20(sp) | *(var_20h) = s0;
0x0000314c sw gp, 0x18(sp) | *(var_18h) = gp;
0x00003150 lw s4, 0xf4(a2) | s4 = *((a2 + 61));
0x00003154 lw s5, 0xf8(a2) | s5 = *((a2 + 62));
0x00003158 sw ra, 0x3c(sp) | *(var_3ch) = ra;
0x0000315c move s2, a0 | s2 = a0;
0x00003160 sw zero, 0x10(sp) | *(var_10h) = 0;
0x00003164 move a0, s3 | a0 = s3;
0x00003168 addiu a1, a1, 0x3c | a1 += 0x3c;
0x0000316c addiu a3, zero, 1 | a3 = 1;
0x00003170 bal 0x19d4 | sym_dl_find_hash ();
0x00003174 move s0, v0 | s0 = v0;
0x00003178 lw gp, 0x18(fp) | gp = *(var_18h);
| if (v0 == 0) {
0x0000317c bnez v0, 0x31bc |
0x00003180 lw v0, -0x7f90(gp) | v0 = *(gp);
0x00003184 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00003188 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x0000318c lw a2, (v0) | a2 = *(v0);
0x00003190 addiu a0, zero, 2 | a0 = 2;
0x00003194 addiu a1, a1, 0x6acc | a1 += str._s:_cant_resolve_symbol__s_n;
0x00003198 move a3, s3 | a3 = s3;
0x0000319c bal 0x1ec4 | sym_dl_dprintf ()
0x000031a0 lw gp, 0x18(fp) | gp = *(var_18h);
0x000031a4 addiu a0, zero, 1 | a0 = 1;
0x000031a8 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x000031ac syscall | __asm ("syscall");
0x000031b0 lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 == 0) {
0x000031b4 beqz a3, 0x31bc | goto label_0;
| }
0x000031b8 sw v0, (v1) | *(v1) = v0;
| }
| label_0:
0x000031bc subu s4, s5, s4 | __asm ("subu s4, s5, s4");
0x000031c0 addu s2, s4, s2 | s2 = s4 + s2;
0x000031c4 sll s2, s2, 2 | s2 <<= 2;
0x000031c8 addu s1, s1, s2 | s1 += s2;
0x000031cc sw s0, (s1) | *(s1) = s0;
0x000031d0 move sp, fp |
0x000031d4 lw ra, 0x3c(sp) | ra = *(var_3ch);
0x000031d8 move v0, s0 | v0 = s0;
0x000031dc lw fp, 0x38(sp) | fp = *(var_38h);
0x000031e0 lw s5, 0x34(sp) | s5 = *(var_34h);
0x000031e4 lw s4, 0x30(sp) | s4 = *(var_30h);
0x000031e8 lw s3, 0x2c(sp) | s3 = *(var_2ch);
0x000031ec lw s2, 0x28(sp) | s2 = *(var_28h);
0x000031f0 lw s1, 0x24(sp) | s1 = *(var_24h);
0x000031f4 lw s0, 0x20(sp) | s0 = *(var_20h);
0x000031f8 addiu sp, sp, 0x40 |
0x000031fc jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x3338 */
| #include <stdint.h>
|
; (fcn) sym.__tls_get_addr () | void tls_get_addr () {
0x00003338 lui gp, 2 |
0x0000333c addiu gp, gp, -0x4318 |
0x00003340 addu gp, gp, t9 | gp += t9;
0x00003344 addiu sp, sp, -0x38 |
0x00003348 sw fp, 0x30(sp) | *(var_30h) = fp;
0x0000334c move fp, sp | fp = sp;
0x00003350 sw s2, 0x24(sp) | *(var_24h) = s2;
0x00003354 sw ra, 0x34(sp) | *(var_34h) = ra;
0x00003358 sw s4, 0x2c(sp) | *(var_2ch) = s4;
0x0000335c sw s3, 0x28(sp) | *(var_28h) = s3;
0x00003360 sw s1, 0x20(sp) | *(var_20h) = s1;
0x00003364 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00003368 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000336c move s2, a0 | s2 = a0;
0x00003370 rdhwr v1, 29 | __asm ("rdhwr v1, 29");
0x00003374 lw s3, -0x7008(v1) | s3 = *((v1 - 7170));
0x00003378 lw v0, -0x7f64(gp) | v0 = *(gp);
0x0000337c lw v1, (s3) | v1 = *(s3);
0x00003380 lw v0, (v0) | v0 = *(v0);
0x00003384 move s0, zero | s0 = 0;
| if (v1 != v0) {
0x00003388 beq v1, v0, 0x33a8 |
0x0000338c lw t9, -0x7f60(gp) | t9 = sym._dl_update_slotinfo;
0x00003390 lw a0, (a0) | a0 = *(a0);
0x00003394 bal 0x28dc | sym_dl_update_slotinfo ();
0x00003398 move s0, v0 | s0 = v0;
0x0000339c lw gp, 0x10(fp) | gp = *(var_10h);
0x000033a0 rdhwr v1, 29 | __asm ("rdhwr v1, 29");
0x000033a4 lw s3, -0x7008(v1) | s3 = *((v1 - 7170));
| }
0x000033a8 lw v0, (s2) | v0 = *(s2);
0x000033ac addiu v1, zero, -1 | v1 = -1;
0x000033b0 sll s4, v0, 3 | s4 = v0 << 3;
0x000033b4 addu s4, s3, s4 | s4 = s3 + s4;
0x000033b8 lw s1, (s4) | s1 = *(s4);
0x000033bc lw v0, 4(s2) | v0 = *((s2 + 1));
| if (s1 == v1) {
0x000033c0 bnel s1, v1, 0x34c4 | goto label_0;
| }
0x000033c4 lw t9, -0x7f74(gp) | t9 = sym._dl_memalign;
| if (s0 != 0) {
0x000033c8 bnez s0, 0x3400 | goto label_1;
| }
0x000033cc lw v1, -0x7fcc(gp) | v1 = *(gp);
0x000033d0 lw v1, (v1) | v1 = *(v1);
0x000033d4 b 0x33dc |
| while (a1 == 0) {
0x000033d8 subu v0, v0, a0 | __asm ("subu v0, v0, a0");
0x000033dc lw a0, (v1) | a0 = *(v1);
0x000033e0 sltu a1, v0, a0 | a1 = (v0 < a0) ? 1 : 0;
0x000033e4 beql a1, zero, 0x33d8 |
| }
0x000033e8 lw v1, 4(v1) | v1 = *((v1 + 1));
0x000033ec addiu a0, zero, 0xc | a0 = 0xc;
0x000033f0 mul a1, v0, a0 | __asm ("mul a1, v0, a0");
0x000033f4 addu v0, a1, v1 | v0 = a1 + v1;
0x000033f8 lw s0, 0x10(v0) | s0 = *((v0 + 4));
0x000033fc lw t9, -0x7f74(gp) | t9 = sym._dl_memalign;
| label_1:
0x00003400 lw a0, 0x20(s0) | a0 = *((s0 + 8));
0x00003404 lw a1, 0x1c(s0) | a1 = *((s0 + 7));
0x00003408 bal 0x280c | sym_dl_memalign ();
0x0000340c move s1, v0 | s1 = v0;
0x00003410 lw gp, 0x10(fp) | gp = *(var_10h);
| if (v0 == 0) {
0x00003414 bnez v0, 0x3458 |
0x00003418 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x0000341c lw a2, -0x7fe4(gp) | a2 = *((gp - 8185));
0x00003420 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00003424 addiu a0, zero, 2 | a0 = 2;
0x00003428 addiu a1, a1, 0x6b18 | a1 += str._s:_d:_Out_of_memory____n;
0x0000342c addiu a2, a2, 0x6e4c | a2 += str.allocate_and_init;
0x00003430 addiu a3, zero, 0x29a | a3 = 0x29a;
0x00003434 bal 0x1ec4 | sym_dl_dprintf ()
0x00003438 lw gp, 0x10(fp) | gp = *(var_10h);
0x0000343c addiu a0, zero, 1 | a0 = 1;
0x00003440 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00003444 syscall | __asm ("syscall");
| if (a3 == 0) {
0x00003448 beql a3, zero, 0x345c | goto label_2;
| }
0x0000344c lw a0, 0x14(s0) | a0 = *((s0 + 5));
0x00003450 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00003454 sw v0, (v1) | *(v1) = v0;
| }
0x00003458 lw a0, 0x14(s0) | a0 = *((s0 + 5));
| label_2:
0x0000345c lw v0, 0x18(s0) | v0 = *((s0 + 6));
0x00003460 addiu v1, s1, -1 | v1 = s1 + -1;
0x00003464 addiu a0, a0, -1 | a0 += -1;
0x00003468 b 0x347c |
| while (v0 == 0) {
0x0000346c lbu a1, (a0) | a1 = *(a0);
0x00003470 addiu v1, v1, 1 | v1++;
0x00003474 addiu v0, v0, -1 | v0 += -1;
0x00003478 sb a1, (v1) | *(v1) = a1;
0x0000347c addiu a0, a0, 1 | a0++;
0x00003480 bnel v0, zero, 0x346c |
| }
0x00003484 lw v0, 0x18(s0) | v0 = *((s0 + 6));
0x00003488 lw a0, 0x1c(s0) | a0 = *((s0 + 7));
0x0000348c addu v1, s1, v0 | v1 = s1 + v0;
0x00003490 subu v0, a0, v0 | __asm ("subu v0, a0, v0");
0x00003494 b 0x34a4 |
| while (v0 != 0) {
0x00003498 sb zero, (v1) | *(v1) = 0;
0x0000349c move v0, a0 | v0 = a0;
0x000034a0 addiu v1, v1, 1 | v1++;
0x000034a4 addiu a0, v0, -1 | a0 = v0 + -1;
0x000034a8 bnez v0, 0x3498 |
| }
0x000034ac sw s1, (s4) | *(s4) = s1;
0x000034b0 lw v0, (s2) | v0 = *(s2);
0x000034b4 sll v0, v0, 3 | v0 <<= 3;
0x000034b8 addu s3, s3, v0 | s3 += v0;
0x000034bc sb zero, 4(s3) | *((s3 + 4)) = 0;
0x000034c0 lw v0, 4(s2) | v0 = *((s2 + 1));
| label_0:
0x000034c4 move sp, fp |
0x000034c8 lw ra, 0x34(sp) | ra = *(var_34h);
0x000034cc ori v1, zero, 0x8000 | v1 = 0x8000;
0x000034d0 addu v0, v1, v0 | v0 = v1 + v0;
0x000034d4 addu v0, s1, v0 | v0 = s1 + v0;
0x000034d8 lw fp, 0x30(sp) | fp = *(var_30h);
0x000034dc lw s4, 0x2c(sp) | s4 = *(var_2ch);
0x000034e0 lw s3, 0x28(sp) | s3 = *(var_28h);
0x000034e4 lw s2, 0x24(sp) | s2 = *(var_24h);
0x000034e8 lw s1, 0x20(sp) | s1 = *(var_20h);
0x000034ec lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x000034f0 addiu sp, sp, 0x38 |
0x000034f4 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x3200 */
| #include <stdint.h>
|
; (fcn) sym._dl_add_to_slotinfo () | void dl_add_to_slotinfo () {
0x00003200 lui gp, 2 |
0x00003204 addiu gp, gp, -0x41e0 |
0x00003208 addu gp, gp, t9 | gp += t9;
0x0000320c lw v0, -0x7fcc(gp) | v0 = *(gp);
0x00003210 addiu sp, sp, -0x30 |
0x00003214 sw fp, 0x28(sp) | *(var_28h) = fp;
0x00003218 move fp, sp | fp = sp;
0x0000321c sw s2, 0x20(sp) | *(var_20h) = s2;
0x00003220 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x00003224 sw s0, 0x18(sp) | *(var_18h) = s0;
0x00003228 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x0000322c sw s3, 0x24(sp) | *(var_24h) = s3;
0x00003230 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00003234 move s2, a0 | s2 = a0;
0x00003238 lw s1, 0x2c(a0) | s1 = *((a0 + 11));
0x0000323c lw s0, (v0) | s0 = *(v0);
| do {
0x00003240 lw v0, (s0) | v0 = *(s0);
0x00003244 sltu v1, s1, v0 | v1 = (s1 < v0) ? 1 : 0;
0x00003248 addiu v0, zero, 0xc | v0 = 0xc;
| if (v1 == 0) {
0x0000324c bnel v1, zero, 0x32f4 | goto label_0;
| }
0x00003250 subu s1, s1, v0 | __asm ("subu s1, s1, v0");
0x00003254 lw v0, 4(s0) | v0 = *((s0 + 1));
0x00003258 move s0, v0 | s0 = v0;
0x0000325c bnel v0, zero, 0x3240 |
| } while (v0 == 0);
0x00003260 lw t9, -0x7f88(gp) | t9 = sym._dl_malloc;
0x00003264 addiu a0, zero, 0x2f0 | a0 = 0x2f0;
0x00003268 move s3, s0 | s3 = s0;
0x0000326c bal 0x262c | sym_dl_malloc ();
0x00003270 move s0, v0 | s0 = v0;
0x00003274 lw gp, 0x10(fp) | gp = *(var_10h);
0x00003278 sw v0, 4(s3) | *((s3 + 1)) = v0;
| if (v0 == 0) {
0x0000327c bnez v0, 0x32c4 |
0x00003280 lw v0, -0x7f64(gp) | v0 = *(gp);
0x00003284 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00003288 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x0000328c lw v1, (v0) | v1 = *(v0);
0x00003290 addiu a0, zero, 2 | a0 = 2;
0x00003294 addiu a1, a1, 0x6aec | a1 += str.cannot_create_TLS_data_structures:_ABORT_n;
0x00003298 addiu v1, v1, 1 | v1++;
0x0000329c sw v1, (v0) | *(v0) = v1;
0x000032a0 bal 0x1ec4 | sym_dl_dprintf ()
0x000032a4 lw gp, 0x10(fp) | gp = *(var_10h);
0x000032a8 addiu a0, zero, 0x7f | a0 = 0x7f;
0x000032ac addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x000032b0 syscall | __asm ("syscall");
| if (a3 == 0) {
0x000032b4 beql a3, zero, 0x32c8 | goto label_1;
| }
0x000032b8 addiu v0, zero, 0x3e | v0 = 0x3e;
0x000032bc lw v1, -0x7fdc(gp) | v1 = *(gp);
0x000032c0 sw v0, (v1) | *(v1) = v0;
| }
0x000032c4 addiu v0, zero, 0x3e | v0 = 0x3e;
| label_1:
0x000032c8 sw v0, (s0) | *(s0) = v0;
0x000032cc sw zero, 4(s0) | *((s0 + 1)) = 0;
0x000032d0 addiu v1, s0, 8 | v1 = s0 + 8;
0x000032d4 addiu v0, zero, 0x2e8 | v0 = aav.0x000002e8;
0x000032d8 b 0x32e8 |
| while (v0 != 0) {
0x000032dc sb zero, (v1) | *(v1) = 0;
0x000032e0 move v0, a0 | v0 = a0;
0x000032e4 addiu v1, v1, 1 | v1++;
0x000032e8 addiu a0, v0, -1 | a0 = v0 + -1;
0x000032ec bnez v0, 0x32dc |
| }
0x000032f0 addiu v0, zero, 0xc | v0 = 0xc;
| label_0:
0x000032f4 mul v1, s1, v0 | __asm ("mul v1, s1, v0");
0x000032f8 lw v0, -0x7f64(gp) | v0 = *(gp);
0x000032fc addu s0, v1, s0 | s0 = v1 + s0;
0x00003300 lw v1, (v0) | v1 = *(v0);
0x00003304 sw s2, 0x10(s0) | *((s0 + 4)) = s2;
0x00003308 addiu v1, v1, 1 | v1++;
0x0000330c sw v1, 8(s0) | *((s0 + 2)) = v1;
0x00003310 sw v1, (v0) | *(v0) = v1;
0x00003314 move sp, fp |
0x00003318 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x0000331c lw fp, 0x28(sp) | fp = *(var_28h);
0x00003320 lw s3, 0x24(sp) | s3 = *(var_24h);
0x00003324 lw s2, 0x20(sp) | s2 = *(var_20h);
0x00003328 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x0000332c lw s0, 0x18(sp) | s0 = *(var_18h);
0x00003330 addiu sp, sp, 0x30 |
0x00003334 jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x5204 */
| #include <stdint.h>
|
; (fcn) sym._dl_get_ready_to_run () | void dl_get_ready_to_run () {
0x00005204 lui gp, 2 |
0x00005208 addiu gp, gp, -0x61e4 |
0x0000520c addu gp, gp, t9 | gp += t9;
0x00005210 addiu sp, sp, -0x1a0 |
0x00005214 sw fp, 0x198(sp) | *(var_198h) = fp;
0x00005218 move fp, sp | fp = sp;
0x0000521c sw s0, 0x178(sp) | *(var_178h) = s0;
0x00005220 sw ra, 0x19c(sp) | *(var_19ch) = ra;
0x00005224 sw s7, 0x194(sp) | *(var_194h) = s7;
0x00005228 sw s6, 0x190(sp) | *(var_190h) = s6;
0x0000522c sw s5, 0x18c(sp) | *(var_18ch) = s5;
0x00005230 sw s4, 0x188(sp) | *(var_188h) = s4;
0x00005234 sw s3, 0x184(sp) | *(var_184h) = s3;
0x00005238 sw s2, 0x180(sp) | *(var_180h) = s2;
0x0000523c sw s1, 0x17c(sp) | *(var_17ch) = s1;
0x00005240 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00005244 sw a0, 0x1a0(fp) | *(arg_1a0h) = a0;
0x00005248 move s0, a2 | s0 = a2;
0x0000524c sw a3, 0x1ac(fp) | *(arg_1ach) = a3;
0x00005250 addiu v1, fp, 0x20 | v1 = fp + 0x20;
0x00005254 addiu v0, zero, 0x128 | v0 = 0x128;
0x00005258 b 0x5268 |
| while (v0 != 0) {
0x0000525c sb zero, (v1) | *(v1) = 0;
0x00005260 move v0, a0 | v0 = a0;
0x00005264 addiu v1, v1, 1 | v1++;
0x00005268 addiu a0, v0, -1 | a0 = v0 + -1;
0x0000526c bnez v0, 0x525c |
| }
0x00005270 lw v0, 0x34(s0) | v0 = *((s0 + 13));
0x00005274 addiu v1, zero, 0x1000 | v1 = 0x1000;
| if (v0 != 0) {
0x00005278 movz v0, v1, v0 | v0 = v1;
| }
0x0000527c lw v1, -0x7f98(gp) | v1 = *(gp);
0x00005280 sw v0, (v1) | *(v1) = v0;
0x00005284 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00005288 sw v0, 0x71ec(v1) | *((v1 + 7291)) = v0;
0x0000528c lw v0, -0x7fd8(gp) | v0 = *((gp - 8182));
0x00005290 sw zero, 0x71f0(v0) | *((v0 + 7292)) = 0;
0x00005294 lw v0, 0x1b0(fp) | v0 = *(arg_1b0h);
0x00005298 lw v0, (v0) | v0 = *(v0);
0x0000529c lw v1, -0x7f90(gp) | v1 = *(gp);
| if (v0 != 0) {
0x000052a0 beqz v0, 0x52a8 |
0x000052a4 sw v0, (v1) | *(v1) = v0;
| }
0x000052a8 lw v1, 0x4c(s0) | v1 = *((s0 + 19));
0x000052ac lw v0, -0x7f1c(gp) | v0 = *(gp);
0x000052b0 lw a0, -0x7fe4(gp) | a0 = *((gp - 8185));
| if (v1 == v0) {
0x000052b4 bne v1, v0, 0x52ec |
0x000052b8 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x000052bc lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x000052c0 addiu a0, zero, 2 | a0 = 2;
0x000052c4 addiu a1, a1, 0x6cec | a1 += str.Standalone_execution_is_not_enabled_n;
0x000052c8 bal 0x1ec4 | sym_dl_dprintf ()
0x000052cc lw gp, 0x18(fp) | gp = *(var_18h);
0x000052d0 addiu a0, zero, 1 | a0 = 1;
0x000052d4 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x000052d8 syscall | __asm ("syscall");
0x000052dc lw a0, -0x7fe4(gp) | a0 = *((gp - 8185));
| if (a3 == 0) {
0x000052e0 beqz a3, 0x52ec | goto label_12;
| }
0x000052e4 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x000052e8 sw v0, (v1) | *(v1) = v0;
| }
| label_12:
0x000052ec lw t9, -0x7f18(gp) | t9 = sym._dl_getenv;
0x000052f0 lw a1, 0x1ac(fp) | a1 = *(arg_1ach);
0x000052f4 sw zero, 0x154(fp) | *(var_154h) = 0;
0x000052f8 addiu a0, a0, 0x6d14 | a0 += str.LD_BIND_NOW;
0x000052fc bal 0x1794 | sym_dl_getenv ();
0x00005300 addiu v1, zero, 2 | v1 = 2;
| if (v0 != 0) {
0x00005304 movz v1, zero, v0 | v1 = 0;
| }
0x00005308 sw v1, 0x158(fp) | *(var_158h) = v1;
0x0000530c lw v1, 0x5c(s0) | v1 = *((s0 + 23));
0x00005310 addiu v0, zero, -1 | v0 = -1;
0x00005314 lw gp, 0x18(fp) | gp = *(var_18h);
| if (v1 == v0) {
0x00005318 beq v1, v0, 0x5334 | goto label_13;
| }
0x0000531c lw v0, 0x5c(s0) | v0 = *((s0 + 23));
| do {
| label_0:
0x00005320 addiu v1, zero, -1 | v1 = -1;
0x00005324 lw v1, 0x64(s0) | v1 = *((s0 + 25));
| if (v0 == v1) {
0x00005328 bnel v0, v1, 0x53fc | goto label_14;
| }
0x0000532c lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00005330 b 0x5418 | goto label_15;
| label_13:
0x00005334 addiu v0, zero, 0xfb8 | v0 = 0xfb8;
0x00005338 syscall | __asm ("syscall");
0x0000533c move a2, v0 | a2 = v0;
| if (a3 != 0) {
0x00005340 beqz a3, 0x5350 |
0x00005344 lw v0, -0x7fdc(gp) | v0 = *(gp);
0x00005348 sw a2, (v0) | *(v0) = a2;
0x0000534c addiu a2, zero, -1 | a2 = -1;
| }
0x00005350 addiu v0, zero, 0xfd1 | v0 = 0xfd1;
0x00005354 syscall | __asm ("syscall");
0x00005358 move a1, v0 | a1 = v0;
| if (a3 != 0) {
0x0000535c beqz a3, 0x536c |
0x00005360 lw v0, -0x7fdc(gp) | v0 = *(gp);
0x00005364 sw a1, (v0) | *(v0) = a1;
0x00005368 addiu a1, zero, -1 | a1 = -1;
| }
0x0000536c addiu v0, zero, 0xfcf | v0 = 0xfcf;
0x00005370 syscall | __asm ("syscall");
0x00005374 move a0, v0 | a0 = v0;
| if (a3 != 0) {
0x00005378 beqz a3, 0x5388 |
0x0000537c lw v0, -0x7fdc(gp) | v0 = *(gp);
0x00005380 sw a0, (v0) | *(v0) = a0;
0x00005384 addiu a0, zero, -1 | a0 = -1;
| }
0x00005388 addiu v0, zero, 0xfd2 | v0 = 0xfd2;
0x0000538c syscall | __asm ("syscall");
0x00005390 lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 != 0) {
0x00005394 beqz a3, 0x53a0 |
0x00005398 sw v0, (v1) | *(v1) = v0;
0x0000539c addiu v0, zero, -1 | v0 = -1;
| }
0x000053a0 lw v0, 0x5c(s0) | v0 = *((s0 + 23));
0x000053a4 bnel a2, a1, 0x5320 |
| } while (a2 == a1);
0x000053a8 lw v0, 0x5c(s0) | v0 = *((s0 + 23));
| if (a0 == v0) {
0x000053ac bnel a0, v0, 0x5320 | goto label_0;
| }
0x000053b0 lw v0, -0x7fd8(gp) | v0 = *((gp - 8182));
| do {
0x000053b4 lw a0, -0x7fe4(gp) | a0 = *((gp - 8185));
0x000053b8 lw t9, -0x7f18(gp) | t9 = sym._dl_getenv;
0x000053bc lw a1, 0x1ac(fp) | a1 = *(arg_1ach);
0x000053c0 addiu a0, a0, 0x6d20 | a0 += 0x6d20;
0x000053c4 sw zero, 0x7010(v0) | *((v0 + 7172)) = 0;
0x000053c8 bal 0x1794 | sym_dl_getenv ();
0x000053cc lw gp, 0x18(fp) | gp = *(var_18h);
0x000053d0 lw a1, 0x1ac(fp) | a1 = *(arg_1ach);
0x000053d4 lw v1, -0x7f14(gp) | v1 = *(gp);
0x000053d8 lw a0, -0x7fe4(gp) | a0 = *((gp - 8185));
0x000053dc lw t9, -0x7f18(gp) | t9 = sym._dl_getenv;
0x000053e0 sw v0, (v1) | *(v1) = v0;
0x000053e4 addiu a0, a0, 0x6d2c | a0 += 0x6d2c;
0x000053e8 bal 0x1794 | sym_dl_getenv ();
0x000053ec lw gp, 0x18(fp) | gp = *(var_18h);
0x000053f0 lw v1, -0x7f24(gp) | v1 = *(gp);
0x000053f4 sw v0, (v1) | *(v1) = v0;
0x000053f8 b 0x5478 | goto label_16;
| label_14:
0x000053fc lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
| if (v0 != v1) {
0x00005400 bne v0, v1, 0x5418 | goto label_15;
| }
0x00005404 lw v1, 0x6c(s0) | v1 = *((s0 + 27));
0x00005408 lw v0, 0x74(s0) | v0 = *((s0 + 29));
0x0000540c lw v0, -0x7fd8(gp) | v0 = *((gp - 8182));
0x00005410 beq v1, v0, 0x53b4 |
| } while (v1 == v0);
0x00005414 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
| label_15:
0x00005418 lw s1, -0x7fe4(gp) | s1 = *((gp - 8185));
0x0000541c addiu v0, zero, 1 | v0 = 1;
0x00005420 sw v0, 0x7010(v1) | *((v1 + 7172)) = v0;
0x00005424 addiu s1, s1, 0x6e60 | s1 += str.LD_PRELOAD;
0x00005428 lw t9, -0x7f10(gp) | t9 = sym._dl_unsetenv;
| label_1:
0x0000542c lw a1, 0x1ac(fp) | a1 = *(arg_1ach);
0x00005430 move a0, s1 | a0 = s1;
0x00005434 bal 0x1804 | sym_dl_unsetenv ();
0x00005438 lw gp, 0x18(fp) | gp = *(var_18h);
0x0000543c addiu v0, s1, -1 | v0 = s1 + -1;
0x00005440 addiu v0, v0, 1 | v0++;
| do {
0x00005444 lbu v1, (v0) | v1 = *(v0);
0x00005448 addiu v0, v0, 1 | v0++;
0x0000544c bnel v1, zero, 0x5444 |
| } while (v1 == 0);
0x00005450 addiu s1, v0, 1 | s1 = v0 + 1;
0x00005454 lbu v0, 1(v0) | v0 = *((v0 + 1));
0x00005458 lw t9, -0x7f10(gp) | t9 = sym._dl_unsetenv;
| if (v0 != 0) {
0x0000545c bnez v0, 0x542c | goto label_1;
| }
0x00005460 lw v0, -0x7f14(gp) | v0 = *(gp);
0x00005464 addiu a0, zero, 2 | a0 = 2;
0x00005468 sw a0, 0x158(fp) | *(var_158h) = a0;
0x0000546c sw zero, (v0) | *(v0) = 0;
0x00005470 lw v0, -0x7f24(gp) | v0 = *(gp);
0x00005474 sw zero, (v0) | *(v0) = 0;
| label_16:
0x00005478 lw v1, -0x7f0c(gp) | v1 = sym._dl_initial_error_catch_tsd;
0x0000547c lw v0, -0x7f08(gp) | v0 = *(gp);
0x00005480 lw a0, 0x1c(s0) | a0 = *((s0 + 7));
0x00005484 addiu a2, zero, 6 | a2 = 6;
0x00005488 sw v1, (v0) | *(v0) = v1;
0x0000548c lw v1, -0x7f04(gp) | v1 = *((gp - 8129));
0x00005490 lw v0, -0x7f5c(gp) | v0 = *(gp);
0x00005494 sw v1, (v0) | *(v0) = v1;
0x00005498 move v0, a0 | v0 = a0;
0x0000549c move v1, zero | v1 = 0;
0x000054a0 b 0x54c0 |
| while (a1 == 0) {
0x000054a4 addiu v1, v1, 1 | v1++;
| if (a1 == a2) {
0x000054a8 bne a1, a2, 0x54bc |
0x000054ac lw v0, 8(v0) | v0 = *((v0 + 2));
0x000054b0 subu a0, a0, v0 | __asm ("subu a0, a0, v0");
0x000054b4 sw a0, 0x20(fp) | *(var_20h) = a0;
0x000054b8 b 0x54d0 |
| } else {
0x000054bc addiu v0, v0, 0x20 | v0 += 0x20;
0x000054c0 lw a1, 0x2c(s0) | a1 = *((s0 + 11));
0x000054c4 sltu a1, v1, a1 | a1 = (v1 < a1) ? 1 : 0;
0x000054c8 lw a1, (v0) | a1 = *(v0);
0x000054cc bnel a1, zero, 0x54a4 |
| }
| }
0x000054d0 lw s5, -0x7fe4(gp) | s5 = *((gp - 8185));
0x000054d4 addiu a0, zero, 0x14 | a0 = 0x14;
0x000054d8 addiu t9, s5, 0x27a0 | t9 = s5 + fcn.000027a0;
0x000054dc addiu s1, fp, 0x20 | s1 = fp + 0x20;
0x000054e0 bal 0x27a0 | fcn_000027a0 ();
0x000054e4 lw gp, 0x18(fp) | gp = *(var_18h);
0x000054e8 move s3, v0 | s3 = v0;
0x000054ec lw s2, 0x1c(s0) | s2 = *((s0 + 7));
0x000054f0 sw zero, 0x160(fp) | *(var_160h) = 0;
0x000054f4 sw zero, 0x15c(fp) | *(var_15ch) = 0;
0x000054f8 move s6, zero | s6 = 0;
0x000054fc move s4, zero | s4 = 0;
0x00005500 lw s7, -0x7f90(gp) | s7 = *(gp);
0x00005504 b 0x5774 | goto label_17;
| label_2:
0x00005508 lui a1, 0x6474 | a1 = 0x6474e552;
0x0000550c ori a1, a1, 0xe552 |
| if (v0 == a1) {
0x00005510 bne v0, a1, 0x5528 |
0x00005514 nop |
0x00005518 lw v1, 8(s2) | v1 = *((s2 + 2));
0x0000551c lw a0, 0x14(s2) | a0 = *((s2 + 5));
0x00005520 sw v1, 0x15c(fp) | *(var_15ch) = v1;
0x00005524 sw a0, 0x160(fp) | *(var_160h) = a0;
| }
0x00005528 addiu v1, zero, 2 | v1 = 2;
| if (s4 == 0) {
0x0000552c bnez s4, 0x554c |
0x00005530 addiu v1, zero, 1 | v1 = 1;
0x00005534 addiu v1, zero, 2 | v1 = 2;
| if (v0 != v1) {
0x00005538 bne v0, v1, 0x554c | goto label_18;
| }
0x0000553c lw s4, 8(s2) | s4 = *((s2 + 2));
0x00005540 lw v0, (s1) | v0 = *(s1);
0x00005544 addu s4, s4, v0 | s4 += v0;
0x00005548 b 0x56a8 | goto label_19;
| }
| label_18:
0x0000554c lw v1, (s2) | v1 = *(s2);
| if (v0 == v1) {
0x00005550 bnel v0, v1, 0x56ac | goto label_20;
| }
0x00005554 lw a3, (s1) | a3 = *(s1);
0x00005558 lw a0, 8(s2) | a0 = *((s2 + 2));
0x0000555c lw t9, -0x7f3c(gp) | t9 = sym._dl_parse_dynamic_info;
0x00005560 addiu s5, s1, 0x68 | s5 = s1 + 0x68;
0x00005564 addu a0, a3, a0 | a0 = a3 + a0;
0x00005568 move a1, s5 | a1 = s5;
0x0000556c move a2, s3 | a2 = s3;
0x00005570 bal 0x3fd0 | sym_dl_parse_dynamic_info ();
0x00005574 lw v0, 0xc0(s1) | v0 = *(var_c0h);
0x00005578 lw gp, 0x18(fp) | gp = *(var_18h);
| if (v0 != 0) {
0x0000557c beqz v0, 0x55b4 |
0x00005580 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00005584 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00005588 addiu a0, zero, 2 | a0 = 2;
0x0000558c addiu a1, a1, 0x6d3c | a1 += str.Cant_modify_applications_text_section__use_the_GCC_option__fPIE_for_position_independent_executables._n;
0x00005590 bal 0x1ec4 | sym_dl_dprintf ()
0x00005594 lw gp, 0x18(fp) | gp = *(var_18h);
0x00005598 addiu a0, zero, 1 | a0 = 1;
0x0000559c addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x000055a0 syscall | __asm ("syscall");
| if (a3 == 0) {
0x000055a4 beql a3, zero, 0x55b8 | goto label_21;
| }
0x000055a8 lw a1, (s1) | a1 = *(s1);
0x000055ac lw v1, -0x7fdc(gp) | v1 = *(gp);
0x000055b0 sw v0, (v1) | *(v1) = v0;
| }
0x000055b4 lw a1, (s1) | a1 = *(s1);
| label_21:
0x000055b8 lw a3, 8(s2) | a3 = *((s2 + 2));
0x000055bc lw v0, 0x10(s2) | v0 = *((s2 + 4));
0x000055c0 lw t9, -0x7f44(gp) | t9 = sym._dl_add_elf_hash_table;
0x000055c4 lw a0, (s7) | a0 = *(s7);
0x000055c8 move a2, s5 | a2 = s5;
0x000055cc addu a3, a1, a3 | a3 = a1 + a3;
0x000055d0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x000055d4 bal 0x3d1c | sym_dl_add_elf_hash_table ();
0x000055d8 lw gp, 0x18(fp) | gp = *(var_18h);
0x000055dc move s1, v0 | s1 = v0;
0x000055e0 addiu v1, zero, 1 | v1 = 1;
0x000055e4 lw s5, -0x7fb4(gp) | s5 = *(gp);
0x000055e8 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x000055ec addiu a0, zero, 0x18 | a0 = 0x18;
0x000055f0 lw v0, (s5) | v0 = *(s5);
0x000055f4 addiu t9, a1, 0x27a0 | t9 = a1 + fcn.000027a0;
0x000055f8 sw v1, 0x38(v0) | *((v0 + 14)) = v1;
0x000055fc lw v1, 0x1c(s0) | v1 = *((s0 + 7));
0x00005600 sw v1, 0x108(v0) | *(v0) = v1;
0x00005604 lw v1, 0x2c(s0) | v1 = *((s0 + 11));
0x00005608 sw v1, 0x104(v0) | *((v0 + 65)) = v1;
0x0000560c bal 0x27a0 | fcn_000027a0 ();
0x00005610 lw gp, 0x18(fp) | gp = *(var_18h);
0x00005614 lw a0, 0x158(fp) | a0 = *(var_158h);
0x00005618 sw v0, 0x154(fp) | *(var_154h) = v0;
0x0000561c lw v1, -0x7f00(gp) | v1 = *(gp);
0x00005620 sw v0, (v1) | *(v1) = v0;
0x00005624 lw v1, (s5) | v1 = *(s5);
0x00005628 sw v1, (v0) | *(v0) = v1;
0x0000562c ori v0, a0, 4 | v0 = a0 | 4;
0x00005630 sw v0, 0x4c(s1) | *((s1 + 19)) = v0;
0x00005634 lhu v0, 0x48(s1) | v0 = *((s1 + 36));
0x00005638 lw a0, 0x74(s1) | a0 = *((s1 + 29));
0x0000563c sw s4, 0x34(s1) | *((s1 + 13)) = s4;
0x00005640 addiu v0, v0, 1 | v0++;
0x00005644 sh v0, 0x48(s1) | *((s1 + 36)) = v0;
| if (a0 == 0) {
0x00005648 beqz a0, 0x56a8 | goto label_19;
| }
0x0000564c lw a1, 0x38(v1) | a1 = *((v1 + 14));
0x00005650 addiu v0, zero, 2 | v0 = 2;
0x00005654 lw v0, -0x7f34(gp) | v0 = sym._dl_runtime_resolve;
| if (a1 == v0) {
0x00005658 beq a1, v0, 0x56a8 | goto label_19;
| }
0x0000565c sw v1, 4(a0) | *((a0 + 1)) = v1;
0x00005660 sw v0, (a0) | *(a0) = v0;
0x00005664 lw v0, 0x100(v1) | v0 = *((v1 + 64));
0x00005668 lw a1, -0x7f30(gp) | a1 = sym._dl_runtime_pltresolve;
| if (v0 != 0) {
0x0000566c beqz v0, 0x5678 |
0x00005670 sw v1, 4(v0) | *((v0 + 1)) = v1;
0x00005674 sw a1, (v0) | *(v0) = a1;
| }
0x00005678 addiu v0, zero, 2 | v0 = 2;
0x0000567c b 0x5698 |
| while (a1 != 0) {
0x00005680 addu a1, a0, a1 | a1 = a0 + a1;
0x00005684 lw a3, (a1) | a3 = *(a1);
0x00005688 lw a2, (v1) | a2 = *(v1);
0x0000568c addiu v0, v0, 1 | v0++;
0x00005690 addu a2, a3, a2 | a2 = a3 + a2;
0x00005694 sw a2, (a1) | *(a1) = a2;
0x00005698 lw a1, 0xf8(v1) | a1 = *((v1 + 62));
0x0000569c sltu a1, v0, a1 | a1 = (v0 < a1) ? 1 : 0;
0x000056a0 sll a1, v0, 2 | a1 = v0 << 2;
0x000056a4 bnez a1, 0x5680 |
| }
| label_19:
0x000056a8 lw v1, (s2) | v1 = *(s2);
| label_20:
0x000056ac addiu v0, zero, 3 | v0 = 3;
0x000056b0 lw v1, (s2) | v1 = *(s2);
| if (v1 == v0) {
0x000056b4 bnel v1, v0, 0x5710 | goto label_22;
| }
0x000056b8 lw a0, 8(s2) | a0 = *((s2 + 2));
0x000056bc lw v0, (s1) | v0 = *(s1);
0x000056c0 lw a1, 0x1a0(fp) | a1 = *(arg_1a0h);
0x000056c4 lw t9, -0x7f48(gp) | t9 = sym._dl_strdup;
0x000056c8 addu a0, a0, v0 | a0 += v0;
0x000056cc sw a0, 4(a1) | *((a1 + 1)) = a0;
0x000056d0 bal 0x3ca0 | sym_dl_strdup ();
0x000056d4 addiu a0, v0, -1 | a0 = v0 + -1;
0x000056d8 lw gp, 0x18(fp) | gp = *(var_18h);
0x000056dc move v1, zero | v1 = 0;
0x000056e0 b 0x56ec |
| if (a0 != 0) {
| while (a0 == 0) {
0x000056e4 movz v1, a1, a0 | v1 = a1;
| }
0x000056e8 move a0, a1 | a0 = a1;
0x000056ec addiu a1, a0, 1 | a1 = a0 + 1;
0x000056f0 lbu a0, 1(a0) | a0 = *((a0 + 1));
0x000056f4 xori a0, a0, 0x2f | a0 ^= 0x2f;
0x000056f8 bnel a0, zero, 0x56e4 |
| }
| if (v1 != 0) {
0x000056fc movz v1, v0, v1 | v1 = v0;
| }
0x00005700 sb zero, (v1) | *(v1) = 0;
0x00005704 lw v1, -0x7f20(gp) | v1 = *(gp);
0x00005708 sw v0, (v1) | *(v1) = v0;
0x0000570c lw v1, (s2) | v1 = *(s2);
| label_22:
0x00005710 addiu v0, zero, 7 | v0 = 7;
0x00005714 addiu s6, s6, 1 | s6++;
| if (v1 != v0) {
0x00005718 bnel v1, v0, 0x5770 |
0x0000571c lw v0, 0x14(s2) | v0 = *((s2 + 5));
| if (v0 == 0) {
0x00005720 beql v0, zero, 0x5788 | goto label_23;
| }
0x00005724 lw v0, 0x15c(fp) | v0 = *(var_15ch);
0x00005728 sw v0, 0x1c(s1) | *(var_1ch_2) = v0;
0x0000572c lw v0, 0x1c(s2) | v0 = *((s2 + 7));
0x00005730 lw v1, 8(s2) | v1 = *((s2 + 2));
0x00005734 sw v0, 0x20(s1) | *(var_20h_2) = v0;
| if (v0 == 0) {
0x00005738 bnez v0, 0x5744 |
0x0000573c sw zero, 0x24(s1) | *(var_24h) = 0;
0x00005740 b 0x5750 |
| } else {
0x00005744 addiu v0, v0, -1 | v0 += -1;
0x00005748 and v0, v0, v1 | v0 &= v1;
0x0000574c sw v0, 0x24(s1) | *(var_24h) = v0;
| }
0x00005750 lw v0, 0x10(s2) | v0 = *((s2 + 4));
0x00005754 sw v1, 0x14(s1) | *(var_14h) = v1;
0x00005758 lw v1, -0x7fc8(gp) | v1 = *(gp);
0x0000575c sw v0, 0x18(s1) | *(var_18h_3) = v0;
0x00005760 addiu v0, zero, 1 | v0 = 1;
0x00005764 sw v0, 0x2c(s1) | *(var_2ch) = v0;
0x00005768 sw v0, (v1) | *(v1) = v0;
0x0000576c b 0x5784 | goto label_24;
| }
0x00005770 addiu s2, s2, 0x20 | s2 += 0x20;
| label_17:
0x00005774 lw v0, 0x2c(s0) | v0 = *((s0 + 11));
0x00005778 sltu v0, s6, v0 | v0 = (s6 < v0) ? 1 : 0;
0x0000577c lw v0, (s2) | v0 = *(s2);
| if (v0 == 0) {
0x00005780 bnel v0, zero, 0x5508 | goto label_2;
| }
| label_24:
0x00005784 lw v0, 0x15c(fp) | v0 = *(var_15ch);
| label_23:
0x00005788 lw v1, 0x160(fp) | v1 = *(var_160h);
0x0000578c sw v0, 0x10c(s1) | *(var_10ch) = v0;
0x00005790 lw v0, 0x14(s1) | v0 = *(var_14h);
0x00005794 sw v1, 0x110(s1) | *(var_110h) = v1;
| if (v0 != 0) {
0x00005798 beqz v0, 0x57a8 |
0x0000579c lw v1, (s1) | v1 = *(s1);
0x000057a0 addu v0, v0, v1 | v0 += v1;
0x000057a4 sw v0, 0x14(s1) | *(var_14h) = v0;
| }
0x000057a8 lw a0, -0x7fe4(gp) | a0 = *((gp - 8185));
0x000057ac lw t9, -0x7f18(gp) | t9 = sym._dl_getenv;
0x000057b0 lw a1, 0x1ac(fp) | a1 = *(arg_1ach);
0x000057b4 addiu a0, a0, 0x6da8 | a0 += 0x6da8;
0x000057b8 bal 0x1794 | sym_dl_getenv ();
0x000057bc lw gp, 0x18(fp) | gp = *(var_18h);
0x000057c0 sltu s1, zero, v0 | s1 = (0 < v0) ? 1 : 0;
0x000057c4 lw s6, 0x3c(s0) | s6 = *((s0 + 15));
0x000057c8 lw v0, -0x7fb4(gp) | v0 = *(gp);
0x000057cc lw t9, -0x7efc(gp) | t9 = sym._dl_map_cache;
0x000057d0 sw s6, 0x10(s3) | *((s3 + 4)) = s6;
0x000057d4 lw v0, (v0) | v0 = *(v0);
0x000057d8 sw v0, 4(s3) | *((s3 + 1)) = v0;
0x000057dc addiu v0, zero, 1 | v0 = 1;
0x000057e0 sw v0, (s3) | *(s3) = v0;
0x000057e4 lw v0, -0x7ef8(gp) | v0 = sym._dl_debug_state;
0x000057e8 sw v0, 8(s3) | *((s3 + 2)) = v0;
0x000057ec lw v0, -0x7ef4(gp) | v0 = *(gp);
0x000057f0 sw s3, (v0) | *(v0) = s3;
0x000057f4 bal 0x2390 | sym_dl_map_cache ();
0x000057f8 lw gp, 0x18(fp) | gp = *(var_18h);
0x000057fc lw v0, -0x7f14(gp) | v0 = *(gp);
0x00005800 lw v1, (v0) | v1 = *(v0);
0x00005804 addiu a0, zero, 0x20 | a0 = 0x20;
| if (v1 == 0) {
0x00005808 bnez v1, 0x5824 |
| label_6:
0x0000580c lw s4, -0x7fd8(gp) | s4 = *((gp - 8182));
0x00005810 lw v0, -0x7fb4(gp) | v0 = *(gp);
0x00005814 move s5, zero | s5 = 0;
0x00005818 sw zero, 0x71f8(s4) | *((s4 + 7294)) = 0;
0x0000581c lw s2, (v0) | s2 = *(v0);
0x00005820 b 0x5c1c | goto label_25;
| }
0x00005824 addiu a1, zero, 0x3a | a1 = 0x3a;
0x00005828 addiu a2, zero, 9 | a2 = 9;
| do {
| label_3:
0x0000582c lbu v0, (v1) | v0 = *(v1);
0x00005830 beql v0, a0, 0x582c |
| } while (v0 == a0);
0x00005834 addiu v1, v1, 1 | v1++;
| if (v0 == a1) {
0x00005838 beql v0, a1, 0x582c | goto label_3;
| }
0x0000583c addiu v1, v1, 1 | v1++;
0x00005840 lw s4, -0x7fe4(gp) | s4 = *((gp - 8185));
| if (v0 != a2) {
0x00005844 bne v0, a2, 0x59f8 | goto label_26;
| }
0x00005848 addiu v1, v1, 1 | v1++;
0x0000584c b 0x582c | goto label_3;
| do {
| label_4:
0x00005850 lbu s3, (s2) | s3 = *(s2);
0x00005854 sltiu a2, s3, 0x21 | a2 = (s3 < 0x21) ? 1 : 0;
| if (s3 == a1) {
0x00005858 beq s3, a1, 0x5884 | goto label_27;
| }
| if (a2 == 0) {
0x0000585c beqz a2, 0x587c | goto label_28;
| }
0x00005860 nop |
| if (s3 == 0) {
0x00005864 beql s3, zero, 0x5888 | goto label_29;
| }
0x00005868 lw a1, -0x7fd8(gp) | a1 = *((gp - 8182));
0x0000586c addiu s2, s2, 1 | s2++;
0x00005870 bnel s3, v0, 0x5850 |
| } while (s3 == v0);
0x00005874 lw a1, -0x7fd8(gp) | a1 = *((gp - 8182));
0x00005878 b 0x5888 | goto label_29;
| label_28:
0x0000587c addiu s2, s2, 1 | s2++;
| if (s3 == a0) {
0x00005880 bnel s3, a0, 0x5850 | goto label_4;
| }
| label_27:
0x00005884 lw a1, -0x7fd8(gp) | a1 = *((gp - 8182));
| label_29:
0x00005888 sb zero, (s2) | *(s2) = 0;
0x0000588c lw a0, 0x7010(a1) | a0 = *((a1 + 7172));
0x00005890 addiu v0, v1, -1 | v0 = v1 + -1;
| if (a0 == 0) {
0x00005894 beqz a0, 0x58b4 | goto label_30;
| }
0x00005898 addiu a2, zero, 0x2f | a2 = 0x2f;
0x0000589c addiu v0, v0, 1 | v0++;
| do {
0x000058a0 lbu a1, (v0) | a1 = *(v0);
| if (a1 == a2) {
0x000058a4 beql a1, a2, 0x59c4 | goto label_31;
| }
0x000058a8 sb s3, (s2) | *(s2) = s3;
0x000058ac addiu v0, v0, 1 | v0++;
0x000058b0 bnez a1, 0x58a0 |
| } while (a1 != 0);
| label_30:
0x000058b4 lw t9, -0x7ef0(gp) | t9 = sym._dl_load_shared_library;
0x000058b8 move a3, v1 | a3 = v1;
0x000058bc sw v1, 0x164(fp) | *(var_164h) = v1;
0x000058c0 sw s1, 0x10(sp) | *(var_10h) = s1;
0x000058c4 sltu a0, zero, a0 | a0 = (0 < a0) ? 1 : 0;
0x000058c8 addiu a1, fp, 0x154 | a1 = fp + 0x154;
0x000058cc move a2, zero | a2 = 0;
0x000058d0 bal 0x4ef8 | sym_dl_load_shared_library ();
0x000058d4 lw gp, 0x18(fp) | gp = *(var_18h);
0x000058d8 lw v1, 0x164(fp) | v1 = *(var_164h);
| if (v0 == 0) {
0x000058dc bnez v0, 0x593c |
0x000058e0 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
| if (s1 != 0) {
0x000058e4 beqz s1, 0x5900 |
0x000058e8 addiu a0, zero, 1 | a0 = 1;
0x000058ec addiu a1, s7, 0x6dc0 | a1 = s7 + str._t_s___not_found_n;
0x000058f0 move a2, v1 | a2 = v1;
0x000058f4 bal 0x1ec4 | sym_dl_dprintf ()
0x000058f8 lw gp, 0x18(fp) | gp = *(var_18h);
0x000058fc b 0x59c0 | goto label_32;
| }
0x00005900 lw v0, -0x7f90(gp) | v0 = *(gp);
0x00005904 addiu a0, zero, 2 | a0 = 2;
0x00005908 move a1, s5 | a1 = s5;
0x0000590c lw a2, (v0) | a2 = *(v0);
0x00005910 move a3, v1 | a3 = v1;
0x00005914 bal 0x1ec4 | sym_dl_dprintf ()
0x00005918 lw gp, 0x18(fp) | gp = *(var_18h);
0x0000591c addiu a0, zero, 0xf | a0 = 0xf;
0x00005920 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00005924 syscall | __asm ("syscall");
| if (a3 == 0) {
0x00005928 beql a3, zero, 0x59c4 | goto label_31;
| }
0x0000592c sb s3, (s2) | *(s2) = s3;
0x00005930 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00005934 sw v0, (v1) | *(v1) = v0;
0x00005938 b 0x59c0 | goto label_32;
| }
0x0000593c lw a1, 0x158(fp) | a1 = *(var_158h);
0x00005940 ori a0, a1, 4 | a0 = a1 | 4;
0x00005944 sw a0, 0x4c(v0) | *((v0 + 19)) = a0;
| if (s1 == 0) {
0x00005948 beqz s1, 0x59c0 | goto label_32;
| }
0x0000594c lhu a1, 0x48(v0) | a1 = *((v0 + 36));
0x00005950 addiu a0, zero, 1 | a0 = 1;
0x00005954 sb s3, (s2) | *(s2) = s3;
| if (a1 == a0) {
0x00005958 bnel a1, a0, 0x59c4 | goto label_31;
| }
0x0000595c lw a0, -0x7f90(gp) | a0 = *(gp);
0x00005960 addiu a3, v1, -1 | a3 = v1 + -1;
0x00005964 lw a2, (a0) | a2 = *(a0);
0x00005968 addiu a2, a2, -1 | a2 += -1;
0x0000596c addiu a2, a2, 1 | a2++;
| do {
0x00005970 lbu a1, (a2) | a1 = *(a2);
0x00005974 addiu a3, a3, 1 | a3++;
0x00005978 lbu a0, (a3) | a0 = *(a3);
| if (a1 == 0) {
0x0000597c bnez a1, 0x5988 |
0x00005980 negu a0, a0 | __asm ("negu a0, a0");
0x00005984 b 0x5994 | goto label_33;
| }
0x00005988 beql a1, a0, 0x5970 |
| } while (a1 == a0);
0x0000598c addiu a2, a2, 1 | a2++;
0x00005990 subu a0, a1, a0 | __asm ("subu a0, a1, a0");
| if (a0 != 0) {
| label_33:
0x00005994 beql a0, zero, 0x59c4 |
0x00005998 sb s3, (s2) | *(s2) = s3;
0x0000599c lw a3, 4(v0) | a3 = *((v0 + 1));
0x000059a0 lw v0, (v0) | v0 = *(v0);
0x000059a4 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x000059a8 addiu a0, zero, 1 | a0 = 1;
0x000059ac sw v0, 0x10(sp) | *(var_10h) = v0;
0x000059b0 move a1, s4 | a1 = s4;
0x000059b4 move a2, v1 | a2 = v1;
0x000059b8 bal 0x1ec4 | sym_dl_dprintf ()
0x000059bc lw gp, 0x18(fp) | gp = *(var_18h);
| label_32:
0x000059c0 sb s3, (s2) | *(s2) = s3;
| }
| label_31:
0x000059c4 move v1, s2 | v1 = s2;
0x000059c8 addiu a0, zero, 0x20 | a0 = 0x20;
0x000059cc addiu a1, zero, 0x3a | a1 = 0x3a;
0x000059d0 addiu a2, zero, 9 | a2 = 9;
| do {
| label_5:
0x000059d4 lbu v0, (v1) | v0 = *(v1);
0x000059d8 beql v0, a0, 0x59d4 |
| } while (v0 == a0);
0x000059dc addiu v1, v1, 1 | v1++;
| if (v0 == a1) {
0x000059e0 beql v0, a1, 0x59d4 | goto label_5;
| }
0x000059e4 addiu v1, v1, 1 | v1++;
| if (v0 == a2) {
0x000059e8 bne v0, a2, 0x5a0c |
0x000059ec nop |
0x000059f0 addiu v1, v1, 1 | v1++;
0x000059f4 b 0x59d4 | goto label_5;
| label_26:
0x000059f8 lw s5, -0x7fe4(gp) | s5 = *((gp - 8185));
0x000059fc lw s7, -0x7fe4(gp) | s7 = *((gp - 8185));
0x00005a00 addiu s4, s4, 0x6df4 | s4 += str._t_s____s___x__n;
0x00005a04 addiu s5, s5, 0x6dd4 | s5 += str._s:_cant_load_library__s_n;
0x00005a08 lbu v0, (v1) | v0 = *(v1);
| }
0x00005a0c addiu a1, zero, 0x20 | a1 = 0x20;
| if (v0 == 0) {
0x00005a10 beqz v0, 0x580c | goto label_6;
| }
0x00005a14 move s2, v1 | s2 = v1;
0x00005a18 addiu a0, zero, 0x3a | a0 = 0x3a;
0x00005a1c addiu v0, zero, 9 | v0 = 9;
0x00005a20 b 0x5850 | goto label_4;
| label_8:
0x00005a24 lw s7, 8(s2) | s7 = *((s2 + 2));
0x00005a28 addiu v0, v0, 1 | v0++;
0x00005a2c sw v0, 0x71f8(s4) | *((s4 + 7294)) = v0;
0x00005a30 b 0x5c0c | goto label_34;
| label_7:
0x00005a34 addiu s7, s7, 8 | s7 += 8;
| if (v0 == v1) {
0x00005a38 bnel v0, v1, 0x5c0c | goto label_34;
| }
0x00005a3c lw v0, 0x7c(s2) | v0 = *((s2 + 31));
0x00005a40 lw s3, 4(s7) | s3 = *((s7 + 1));
0x00005a44 addu s3, s3, v0 | s3 += v0;
0x00005a48 addiu v0, s3, -1 | v0 = s3 + -1;
0x00005a4c addiu v0, v0, 1 | v0++;
| do {
0x00005a50 lbu v1, (v0) | v1 = *(v0);
0x00005a54 addiu v0, v0, 1 | v0++;
0x00005a58 bnel v1, zero, 0x5a50 |
| } while (v1 == 0);
0x00005a5c addiu v1, zero, 0x2f | v1 = 0x2f;
0x00005a60 b 0x5a64 |
| if (v0 == s3) {
| while (a0 == v1) {
0x00005a64 beql v0, s3, 0x5aa8 | goto label_35;
| }
0x00005a68 lw v1, -0x7fe4(gp) | v1 = *((gp - 8185));
0x00005a6c addiu v0, v0, -1 | v0 += -1;
0x00005a70 lbu a0, (v0) | a0 = *(v0);
0x00005a74 beql a0, v1, 0x5a64 |
| }
0x00005a78 sb zero, (v0) | *(v0) = 0;
0x00005a7c addiu a0, zero, 0x2f | a0 = 0x2f;
0x00005a80 b 0x5a88 |
| while (a1 != a0) {
0x00005a84 move v0, v1 | v0 = v1;
| if (v0 == s3) {
0x00005a88 beql v0, s3, 0x5aa8 | goto label_35;
| }
0x00005a8c lw v1, -0x7fe4(gp) | v1 = *((gp - 8185));
0x00005a90 lbu a1, -1(v0) | a1 = *((v0 - 1));
0x00005a94 addiu v1, v0, -1 | v1 = v0 + -1;
0x00005a98 bne a1, a0, 0x5a84 |
| }
0x00005a9c xor a0, v1, s3 | a0 = v1 ^ s3;
| if (a0 != 0) {
0x00005aa0 movz v0, v1, a0 | v0 = v1;
| }
0x00005aa4 lw v1, -0x7fe4(gp) | v1 = *((gp - 8185));
| label_35:
0x00005aa8 addiu v0, v0, -1 | v0 += -1;
0x00005aac addiu a1, v1, 0x6cdb | a1 = v1 + 0x6cdb;
0x00005ab0 addiu v0, v0, 1 | v0++;
| do {
0x00005ab4 lbu a0, (v0) | a0 = *(v0);
0x00005ab8 addiu a1, a1, 1 | a1++;
0x00005abc lbu v1, (a1) | v1 = *(a1);
| if (a0 == 0) {
0x00005ac0 bnez a0, 0x5acc |
0x00005ac4 negu v1, v1 | __asm ("negu v1, v1");
0x00005ac8 b 0x5ad8 | goto label_36;
| }
0x00005acc beql a0, v1, 0x5ab4 |
| } while (a0 == v1);
0x00005ad0 addiu v0, v0, 1 | v0++;
0x00005ad4 subu v1, a0, v1 | __asm ("subu v1, a0, v1");
| label_36:
0x00005ad8 lw t9, -0x7ef0(gp) | t9 = sym._dl_load_shared_library;
| if (v1 == 0) {
0x00005adc bnez v1, 0x5b20 |
0x00005ae0 lhu v0, 0x48(s5) | v0 = *((s5 + 36));
| if (s5 != 0) {
0x00005ae4 bnel s5, zero, 0x5b10 |
0x00005ae8 lw t9, -0x7fe4(gp) | t9 = *((gp - 8185));
0x00005aec lw a0, 0x1a0(fp) | a0 = *(arg_1a0h);
0x00005af0 lw a3, 0x154(fp) | a3 = *(var_154h);
0x00005af4 move a1, s6 | a1 = s6;
0x00005af8 addiu t9, t9, 0x3e6c | t9 += fcn.00003e6c;
0x00005afc move a2, s0 | a2 = s0;
0x00005b00 bal 0x3e6c | fcn_00003e6c ();
0x00005b04 lw gp, 0x18(fp) | gp = *(var_18h);
0x00005b08 move s5, v0 | s5 = v0;
0x00005b0c lhu v0, 0x48(s5) | v0 = *((s5 + 36));
| }
0x00005b10 addiu v0, v0, 1 | v0++;
0x00005b14 sh v0, 0x48(s5) | *((s5 + 36)) = v0;
0x00005b18 move v0, s5 | v0 = s5;
0x00005b1c b 0x5ba8 |
| } else {
0x00005b20 sw s1, 0x10(sp) | *(var_10h) = s1;
0x00005b24 move a0, zero | a0 = 0;
0x00005b28 addiu a1, fp, 0x154 | a1 = fp + 0x154;
0x00005b2c move a2, s2 | a2 = s2;
0x00005b30 move a3, s3 | a3 = s3;
0x00005b34 bal 0x4ef8 | sym_dl_load_shared_library ();
0x00005b38 lw gp, 0x18(fp) | gp = *(var_18h);
| if (v0 != 0) {
0x00005b3c bnez v0, 0x5ba8 | goto label_37;
| }
0x00005b40 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
| if (s1 != 0) {
0x00005b44 beqz s1, 0x5b64 |
0x00005b48 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00005b4c addiu a0, zero, 1 | a0 = 1;
0x00005b50 move a2, s3 | a2 = s3;
0x00005b54 addiu a1, a1, 0x6dc0 | a1 += str._t_s___not_found_n;
0x00005b58 bal 0x1ec4 | sym_dl_dprintf ()
0x00005b5c lw gp, 0x18(fp) | gp = *(var_18h);
0x00005b60 b 0x5c08 | goto label_38;
| }
0x00005b64 lw v0, -0x7f90(gp) | v0 = *(gp);
0x00005b68 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00005b6c addiu a0, zero, 2 | a0 = 2;
0x00005b70 lw a2, (v0) | a2 = *(v0);
0x00005b74 addiu a1, a1, 0x6dd4 | a1 += str._s:_cant_load_library__s_n;
0x00005b78 move a3, s3 | a3 = s3;
0x00005b7c bal 0x1ec4 | sym_dl_dprintf ()
0x00005b80 lw gp, 0x18(fp) | gp = *(var_18h);
0x00005b84 addiu a0, zero, 0x10 | a0 = 0x10;
0x00005b88 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00005b8c syscall | __asm ("syscall");
0x00005b90 move v1, v0 | v1 = v0;
0x00005b94 move v0, s1 | v0 = s1;
| if (a3 == 0) {
0x00005b98 beqz a3, 0x5ba8 | goto label_37;
| }
0x00005b9c lw v0, -0x7fdc(gp) | v0 = *(gp);
0x00005ba0 sw v1, (v0) | *(v0) = v1;
0x00005ba4 move v0, s1 | v0 = s1;
| }
| label_37:
0x00005ba8 lw a0, 0x58(s2) | a0 = *((s2 + 22));
0x00005bac addiu sp, sp, -0x10 |
0x00005bb0 addiu v1, sp, 0x18 | v1 = sp + 0x18;
0x00005bb4 sw a0, 0x18(sp) | *(var_18h_2) = a0;
0x00005bb8 lw a0, 0x158(fp) | a0 = *(var_158h);
0x00005bbc sw v0, 0x1c(sp) | *(var_1ch) = v0;
0x00005bc0 sw v1, 0x58(s2) | *((s2 + 22)) = v1;
0x00005bc4 ori v1, a0, 4 | v1 = a0 | 4;
0x00005bc8 sw v1, 0x4c(v0) | *((v0 + 19)) = v1;
| if (s1 != 0) {
0x00005bcc beqz s1, 0x5c08 |
0x00005bd0 lhu a0, 0x48(v0) | a0 = *((v0 + 36));
0x00005bd4 addiu v1, zero, 1 | v1 = 1;
0x00005bd8 addiu s7, s7, 8 | s7 += 8;
| if (a0 == v1) {
0x00005bdc bnel a0, v1, 0x5c0c | goto label_34;
| }
0x00005be0 lw a3, 4(v0) | a3 = *((v0 + 1));
0x00005be4 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00005be8 lw v0, (v0) | v0 = *(v0);
0x00005bec lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00005bf0 addiu a0, zero, 1 | a0 = 1;
0x00005bf4 sw v0, 0x10(sp) | *(var_10h_2) = v0;
0x00005bf8 addiu a1, a1, 0x6df4 | a1 += str._t_s____s___x__n;
0x00005bfc move a2, s3 | a2 = s3;
0x00005c00 bal 0x1ec4 | sym_dl_dprintf ()
0x00005c04 lw gp, 0x18(fp) | gp = *(var_18h);
| }
| label_38:
0x00005c08 addiu s7, s7, 8 | s7 += 8;
| label_34:
0x00005c0c lw v0, (s7) | v0 = *(s7);
0x00005c10 addiu v1, zero, 1 | v1 = 1;
| if (v0 != 0) {
0x00005c14 bnez v0, 0x5a34 | goto label_7;
| }
0x00005c18 lw s2, 0xc(s2) | s2 = *((s2 + 3));
| label_25:
0x00005c1c lw v0, 0x71f8(s4) | v0 = *((s4 + 7294));
| if (s2 != 0) {
0x00005c20 bnez s2, 0x5a24 | goto label_8;
| }
0x00005c24 lw t9, -0x7eec(gp) | t9 = sym._dl_unmap_cache;
0x00005c28 bal 0x1e54 | sym_dl_unmap_cache ();
0x00005c2c nop |
0x00005c30 lw gp, 0x18(fp) | gp = *(var_18h);
0x00005c34 lw v0, -0x7fb4(gp) | v0 = *(gp);
0x00005c38 lw s7, (v0) | s7 = *(v0);
0x00005c3c addiu v0, zero, 1 | v0 = 1;
0x00005c40 lw v1, 0x38(s7) | v1 = *((s7 + 14));
0x00005c44 lw s2, 0x71f8(s4) | s2 = *((s4 + 7294));
| if (v1 == v0) {
0x00005c48 bne v1, v0, 0x5c5c |
0x00005c4c lw v0, -0x7fd8(gp) | v0 = *((gp - 8182));
0x00005c50 lw s7, 0xc(s7) | s7 = *((s7 + 3));
0x00005c54 addiu v1, s2, -1 | v1 = s2 + -1;
0x00005c58 sw v1, 0x71f8(v0) | *((v0 + 7294)) = v1;
| }
0x00005c5c lw a0, 0x71f8(s4) | a0 = *((s4 + 7294));
0x00005c60 lw t9, -0x7f88(gp) | t9 = sym._dl_malloc;
0x00005c64 sll a0, a0, 2 | a0 <<= 2;
0x00005c68 bal 0x262c | sym_dl_malloc ();
0x00005c6c lw gp, 0x18(fp) | gp = *(var_18h);
0x00005c70 move v1, zero | v1 = 0;
0x00005c74 lw s3, -0x7fd8(gp) | s3 = *((gp - 8182));
0x00005c78 sw v0, 0x71f4(s3) | *((s3 + 7293)) = v0;
0x00005c7c b 0x5c90 |
| while (s7 == 0) {
0x00005c80 addu a0, v0, a0 | a0 = v0 + a0;
0x00005c84 sw s7, (a0) | *(a0) = s7;
0x00005c88 lw s7, 0xc(s7) | s7 = *((s7 + 3));
0x00005c8c addiu v1, v1, 1 | v1++;
0x00005c90 sll a0, v1, 2 | a0 = v1 << 2;
0x00005c94 bnel s7, zero, 0x5c80 |
| }
0x00005c98 lw v1, -0x7fb4(gp) | v1 = *(gp);
0x00005c9c lw v1, (v1) | v1 = *(v1);
0x00005ca0 lw a0, 0xc(v1) | a0 = *((v1 + 3));
0x00005ca4 b 0x5d44 | goto label_39;
| do {
0x00005ca8 move v1, a1 | v1 = a1;
| label_11:
0x00005cac sll a1, v1, 2 | a1 = v1 << 2;
0x00005cb0 addu a1, v0, a1 | a1 = v0 + a1;
0x00005cb4 lw a2, (a1) | a2 = *(a1);
0x00005cb8 addiu a1, v1, 1 | a1 = v1 + 1;
0x00005cbc bne a2, a0, 0x5ca8 |
| } while (a2 != a0);
0x00005cc0 lw a2, 0x71f8(s4) | a2 = *((s4 + 7294));
0x00005cc4 b 0x5d34 | goto label_40;
| label_10:
0x00005cc8 addu a2, v0, a2 | a2 = v0 + a2;
0x00005ccc lw a3, (a2) | a3 = *(a2);
0x00005cd0 lw a2, 0x58(a3) | a2 = *((a3 + 22));
0x00005cd4 b 0x5d24 | goto label_41;
| label_9:
0x00005cd8 lw a2, (a2) | a2 = *(a2);
| if (t0 == a0) {
0x00005cdc bnel t0, a0, 0x5d24 | goto label_41;
| }
0x00005ce0 subu a2, a1, v1 | __asm ("subu a2, a1, v1");
0x00005ce4 b 0x5d08 |
0x00005d08 addu t0, a2, v1 | t0 = a2 + v1;
| if (a2 != 0) {
0x00005d0c bnez a2, 0x5ce8 | void (*0x5ce8)() ();
| }
| label_41:
0x00005d24 lw t0, 4(a2) | t0 = *((a2 + 1));
| if (a2 == 0) {
0x00005d28 bnel a2, zero, 0x5cd8 | goto label_9;
| }
0x00005d2c addiu a1, a1, 1 | a1++;
0x00005d30 lw a2, 0x71f8(s4) | a2 = *((s4 + 7294));
| label_40:
0x00005d34 sltu a2, a1, a2 | a2 = (a1 < a2) ? 1 : 0;
0x00005d38 sll a2, a1, 2 | a2 = a1 << 2;
| if (a2 != 0) {
0x00005d3c bnez a2, 0x5cc8 | goto label_10;
| }
0x00005d40 lw a0, 0xc(a0) | a0 = *((a0 + 3));
| label_39:
0x00005d44 move v1, zero | v1 = 0;
| if (a0 != 0) {
0x00005d48 bnez a0, 0x5cac | goto label_11;
| }
0x00005d4c move v0, s5 | v0 = s5;
| /* Beware that this jump is a conditional jump.
| * r2dec transformed it as a return, due being the
| * last instruction. Please, check 'pdda' output
| * for more hints. */
0x00005d50 bnez s5, 0x5d84 | return void (*0x5d84)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x4210 */
| #include <stdint.h>
|
; (fcn) sym._dl_load_elf_shared_library () | void dl_load_elf_shared_library () {
0x00004210 lui gp, 2 |
0x00004214 addiu gp, gp, -0x51f0 |
0x00004218 addu gp, gp, t9 | gp += t9;
0x0000421c addiu sp, sp, -0x1b8 |
0x00004220 sw fp, 0x1b0(sp) | *(var_1b0h) = fp;
0x00004224 move fp, sp | fp = sp;
0x00004228 sw s5, 0x1a4(sp) | *(var_1a4h) = s5;
0x0000422c sw s4, 0x1a0(sp) | *(var_1a0h) = s4;
0x00004230 sw s0, 0x190(sp) | *(var_190h) = s0;
0x00004234 move s5, a1 | s5 = a1;
0x00004238 move s0, a0 | s0 = a0;
0x0000423c move s4, a2 | s4 = a2;
0x00004240 move a0, a2 | a0 = a2;
0x00004244 sw ra, 0x1b4(sp) | *(var_1b4h) = ra;
0x00004248 sw s7, 0x1ac(sp) | *(var_1ach) = s7;
0x0000424c sw s6, 0x1a8(sp) | *(var_1a8h) = s6;
0x00004250 sw s3, 0x19c(sp) | *(var_19ch) = s3;
0x00004254 sw s2, 0x198(sp) | *(var_198h) = s2;
0x00004258 sw s1, 0x194(sp) | *(var_194h) = s1;
0x0000425c sw gp, 0x18(sp) | *(var_18h) = gp;
0x00004260 move a1, zero | a1 = 0;
0x00004264 move a2, zero | a2 = 0;
0x00004268 addiu v0, zero, 0xfa5 | v0 = 0xfa5;
0x0000426c syscall | __asm ("syscall");
0x00004270 move s1, v0 | s1 = v0;
| if (a3 != 0) {
0x00004274 beqz a3, 0x4284 |
0x00004278 lw v0, -0x7fdc(gp) | v0 = *(gp);
0x0000427c sw s1, (v0) | *(v0) = s1;
0x00004280 b 0x428c |
| } else {
0x00004284 move a0, v0 | a0 = v0;
| if (v0 >= 0) {
0x00004288 bgez v0, 0x429c | goto label_6;
| }
| }
0x0000428c lw v0, -0x7f40(gp) | v0 = *(gp);
0x00004290 addiu v1, zero, 1 | v1 = 1;
0x00004294 sw v1, (v0) | *(v0) = v1;
0x00004298 b 0x4a30 | goto label_7;
| label_6:
0x0000429c addiu a1, fp, 0xbc | a1 = fp + 0xbc;
0x000042a0 addiu v0, zero, 0x100c | v0 = 0x100c;
0x000042a4 syscall | __asm ("syscall");
0x000042a8 lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 != 0) {
0x000042ac beqz a3, 0x42b8 |
0x000042b0 sw v0, (v1) | *(v1) = v0;
0x000042b4 b 0x42c0 |
| } else {
0x000042b8 andi v0, s0, 1 | v0 = s0 & 1;
| if (v0 >= 0) {
0x000042bc bgez v0, 0x42c8 | goto label_8;
| }
| }
0x000042c0 addiu v1, zero, 1 | v1 = 1;
0x000042c4 b 0x43dc | goto label_9;
| label_8:
0x000042c8 lw v0, -0x7fb4(gp) | v0 = *(gp);
| if (v0 != 0) {
0x000042cc beqz v0, 0x42e0 |
0x000042d0 lw v0, 0xd0(fp) | v0 = *(var_d0h);
0x000042d4 andi v0, v0, 0x800 | v0 &= 0x800;
0x000042d8 lw v0, -0x7fb4(gp) | v0 = *(gp);
| if (v0 == 0) {
0x000042dc beqz v0, 0x4a18 | goto label_10;
| }
| }
0x000042e0 lw s6, (v0) | s6 = *(v0);
0x000042e4 b 0x4330 |
| while (s6 == 0) {
0x000042e8 lw v0, 0xbc(fp) | v0 = *(var_bch);
0x000042ec lw s6, 0xc(s6) | s6 = *((s6 + 3));
| if (v1 != v0) {
0x000042f0 bnel v1, v0, 0x4330 |
0x000042f4 lw v0, 0x11c(s6) | v0 = *((s6 + 71));
0x000042f8 lw s6, 0xc(s6) | s6 = *((s6 + 3));
| if (v0 == 0) {
0x000042fc bnel v0, zero, 0x4330 | goto label_11;
| }
0x00004300 lw v1, 0x120(s6) | v1 = *(s6);
0x00004304 lw v0, 0xcc(fp) | v0 = *(var_cch);
0x00004308 lw s6, 0xc(s6) | s6 = *((s6 + 3));
| if (v1 == v0) {
0x0000430c bnel v1, v0, 0x4330 | goto label_11;
| }
0x00004310 lhu v0, 0x48(s6) | v0 = *((s6 + 36));
0x00004314 move a0, s1 | a0 = s1;
0x00004318 addiu v0, v0, 1 | v0++;
0x0000431c sh v0, 0x48(s6) | *((s6 + 36)) = v0;
0x00004320 addiu v0, zero, 0xfa6 | v0 = 0xfa6;
0x00004324 syscall | __asm ("syscall");
0x00004328 b 0x4c40 | goto label_12;
0x0000432c nop |
| }
| label_11:
0x00004330 lw v1, 0x118(s6) | v1 = *((s6 + 70));
0x00004334 bnel s6, zero, 0x42e8 |
| }
0x00004338 andi s0, s0, 2 | s0 &= 2;
0x0000433c lw v0, -0x7f98(gp) | v0 = *(gp);
| if (s0 != 0) {
0x00004340 beqz s0, 0x4360 |
0x00004344 move a0, s1 | a0 = s1;
0x00004348 addiu v0, zero, 0xfa6 | v0 = 0xfa6;
0x0000434c syscall | __asm ("syscall");
| if (a3 == 0) {
0x00004350 beql a3, zero, 0x4cac | goto label_13;
| }
0x00004354 move s6, zero | s6 = 0;
0x00004358 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x0000435c b 0x4ca8 | goto label_14;
| }
0x00004360 lui a3, 0x400 | a3 = 0x4000000;
0x00004364 move a0, zero | a0 = 0;
0x00004368 lw a1, (v0) | a1 = *(v0);
0x0000436c addiu a2, zero, 3 | a2 = 3;
0x00004370 addiu a3, a3, 0x802 | a3 += 0x802;
0x00004374 addiu v0, zero, -1 | v0 = -1;
0x00004378 addiu sp, sp, -0x20 |
0x0000437c sw v0, 0x10(sp) | *(var_10h) = v0;
0x00004380 sw s6, 0x14(sp) | *(var_14h) = s6;
0x00004384 addiu v0, zero, 0xffa | v0 = 0xffa;
0x00004388 syscall | __asm ("syscall");
0x0000438c addiu sp, sp, 0x20 |
0x00004390 move s0, v0 | s0 = v0;
| if (a3 != 0) {
0x00004394 beqz a3, 0x43a4 |
0x00004398 lw v0, -0x7fdc(gp) | v0 = *(gp);
0x0000439c sw s0, (v0) | *(v0) = s0;
0x000043a0 addiu s0, zero, -1 | s0 = -1;
| }
0x000043a4 addiu v0, zero, -1 | v0 = -1;
0x000043a8 lw v0, -0x7f98(gp) | v0 = *(gp);
| if (s0 == v0) {
0x000043ac bne s0, v0, 0x43e8 |
0x000043b0 lw v0, -0x7f90(gp) | v0 = *(gp);
0x000043b4 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x000043b8 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x000043bc lw a2, (v0) | a2 = *(v0);
0x000043c0 addiu a0, zero, 2 | a0 = 2;
0x000043c4 sw s4, 0x10(sp) | *(var_10h_2) = s4;
0x000043c8 addiu a1, a1, 0x6a48 | a1 += str._s:_i:_cant_map__s_n;
0x000043cc addiu a3, zero, 0x1f9 | a3 = 0x1f9;
0x000043d0 bal 0x1ec4 | sym_dl_dprintf ()
0x000043d4 lw gp, 0x18(fp) | gp = *(var_18h);
0x000043d8 addiu v1, zero, 6 | v1 = 6;
| label_9:
0x000043dc lw v0, -0x7f40(gp) | v0 = *(gp);
0x000043e0 sw v1, (v0) | *(v0) = v1;
0x000043e4 b 0x4a14 | goto label_15;
| }
0x000043e8 move a0, s1 | a0 = s1;
0x000043ec move a1, s0 | a1 = s0;
0x000043f0 lw a2, (v0) | a2 = *(v0);
0x000043f4 addiu v0, zero, 0xfa3 | v0 = 0xfa3;
0x000043f8 syscall | __asm ("syscall");
| if (a3 != 0) {
0x000043fc beql a3, zero, 0x4410 |
0x00004400 lw v1, (s0) | v1 = *(s0);
0x00004404 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00004408 sw v0, (v1) | *(v1) = v0;
0x0000440c lw v1, (s0) | v1 = *(s0);
| }
0x00004410 lui v0, 0x464c | v0 = 0x464c457f;
0x00004414 addiu v0, v0, 0x457f |
0x00004418 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
| if (v1 != v0) {
0x0000441c beq v1, v0, 0x4448 |
0x00004420 lw v0, -0x7f90(gp) | v0 = *(gp);
0x00004424 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00004428 lw a2, (v0) | a2 = *(v0);
0x0000442c addiu a0, zero, 2 | a0 = 2;
0x00004430 addiu a1, a1, 0x6bd0 | a1 += str._s:__s_is_not_an_ELF_file_n;
0x00004434 move a3, s4 | a3 = s4;
0x00004438 bal 0x1ec4 | sym_dl_dprintf ()
0x0000443c lw gp, 0x18(fp) | gp = *(var_18h);
0x00004440 addiu v1, zero, 3 | v1 = 3;
0x00004444 b 0x4668 | goto label_16;
| }
0x00004448 lhu a0, 0x10(s0) | a0 = *((s0 + 8));
0x0000444c addiu v1, zero, 3 | v1 = 3;
0x00004450 addiu v0, zero, 5 | v0 = 5;
| if (a0 == v1) {
0x00004454 bne a0, v1, 0x4474 |
0x00004458 lhu v0, 0x12(s0) | v0 = *((s0 + 9));
0x0000445c addiu v1, zero, 8 | v1 = 8;
| if (v0 == v1) {
0x00004460 beql v0, v1, 0x44a8 | goto label_17;
| }
0x00004464 lw s2, 0x1c(s0) | s2 = *((s0 + 7));
0x00004468 addiu v1, zero, 0xa | v1 = 0xa;
0x0000446c addiu v0, zero, 4 | v0 = 4;
| if (v0 == v1) {
0x00004470 beq v0, v1, 0x44a4 | goto label_18;
| }
| }
0x00004474 lw v1, -0x7f40(gp) | v1 = *(gp);
0x00004478 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x0000447c lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00004480 sw v0, (v1) | *(v1) = v0;
0x00004484 lw v0, -0x7f90(gp) | v0 = *(gp);
0x00004488 addiu a0, zero, 2 | a0 = 2;
0x0000448c addiu a1, a1, 0x6bf0 | a1 += str._s:__s_is_not_an_ELF_executable_for_MIPS_n;
0x00004490 lw a2, (v0) | a2 = *(v0);
0x00004494 move a3, s4 | a3 = s4;
0x00004498 bal 0x1ec4 | sym_dl_dprintf ()
0x0000449c lw gp, 0x18(fp) | gp = *(var_18h);
0x000044a0 b 0x4670 | goto label_19;
| label_18:
0x000044a4 lw s2, 0x1c(s0) | s2 = *((s0 + 7));
| label_17:
0x000044a8 lw t0, -0x7fe4(gp) | t0 = *((gp - 8185));
0x000044ac addiu s7, zero, 1 | s7 = 1;
0x000044b0 lui t1, 0x100 | t1 = 0x1000000;
0x000044b4 sw s7, 0x158(fp) | *(var_158h) = s7;
0x000044b8 addu s2, s0, s2 | s2 = s0 + s2;
0x000044bc move s7, zero | s7 = 0;
0x000044c0 move s3, zero | s3 = 0;
0x000044c4 addiu s6, zero, -1 | s6 = -1;
0x000044c8 sw zero, 0x154(fp) | *(var_154h) = 0;
0x000044cc sw zero, 0x150(fp) | *(var_150h) = 0;
0x000044d0 lw v1, -0x7f90(gp) | v1 = *(gp);
0x000044d4 addiu t0, t0, 0x6c1c | t0 += str._s:__s_has_more_than_one_dynamic_section_n;
0x000044d8 addiu t1, t1, 1 | t1++;
0x000044dc b 0x45b0 |
| while (v0 == 0) {
0x000044e0 addiu v0, zero, 2 | v0 = 2;
0x000044e4 lw v0, (s2) | v0 = *(s2);
| if (a0 != v0) {
0x000044e8 bnel a0, v0, 0x4538 |
0x000044ec lw ra, 0x150(fp) | ra = *(var_150h);
| if (ra != 0) {
0x000044f0 beql ra, zero, 0x4530 |
0x000044f4 lw v0, 8(s2) | v0 = *((s2 + 2));
0x000044f8 lw a2, (v1) | a2 = *(v1);
0x000044fc lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00004500 move a1, t0 | a1 = t0;
0x00004504 sw v1, 0x17c(fp) | *(var_17ch) = v1;
0x00004508 sw t0, 0x180(fp) | *(var_180h) = t0;
0x0000450c sw t1, 0x184(fp) | *(var_184h) = t1;
0x00004510 addiu a0, zero, 2 | a0 = 2;
0x00004514 move a3, s4 | a3 = s4;
0x00004518 bal 0x1ec4 | sym_dl_dprintf ()
0x0000451c lw gp, 0x18(fp) | gp = *(var_18h);
0x00004520 lw t1, 0x184(fp) | t1 = *(var_184h);
0x00004524 lw t0, 0x180(fp) | t0 = *(var_180h);
0x00004528 lw v1, 0x17c(fp) | v1 = *(var_17ch);
0x0000452c lw v0, 8(s2) | v0 = *((s2 + 2));
| }
0x00004530 sw v0, 0x150(fp) | *(var_150h) = v0;
0x00004534 lw v0, (s2) | v0 = *(s2);
| }
0x00004538 addiu a0, zero, 1 | a0 = 1;
0x0000453c addiu a0, zero, 7 | a0 = 7;
| if (v0 == a0) {
0x00004540 bne v0, a0, 0x4590 |
0x00004544 addiu a0, zero, -1 | a0 = -1;
0x00004548 lw v0, 8(s2) | v0 = *((s2 + 2));
| if (s6 == a0) {
0x0000454c bne s6, a0, 0x4560 |
0x00004550 sltu a0, v0, t1 | a0 = (v0 < t1) ? 1 : 0;
0x00004554 move s6, v0 | s6 = v0;
| if (a0 == 0) {
0x00004558 beqz a0, 0x4574 | goto label_20;
| }
0x0000455c addiu s6, zero, -1 | s6 = -1;
| }
0x00004560 lw a0, 0x158(fp) | a0 = *(var_158h);
0x00004564 sltu a0, v0, s6 | a0 = (v0 < s6) ? 1 : 0;
| if (a0 != 0) {
0x00004568 beqz a0, 0x4578 |
| if (a0 == 0) {
0x0000456c movn s6, v0, a0 | s6 = v0;
| }
0x00004570 b 0x4578 | goto label_21;
| label_20:
0x00004574 sw zero, 0x158(fp) | *(var_158h) = 0;
| }
| label_21:
0x00004578 lw a0, 0x14(s2) | a0 = *((s2 + 5));
0x0000457c lw v0, 8(s2) | v0 = *((s2 + 2));
0x00004580 addu v0, a0, v0 | v0 = a0 + v0;
0x00004584 sltu a0, s3, v0 | a0 = (s3 < v0) ? 1 : 0;
| if (a0 == 0) {
0x00004588 movn s3, v0, a0 | s3 = v0;
| }
0x0000458c b 0x45a8 |
| } else {
0x00004590 addiu s2, s2, 0x20 | s2 += 0x20;
| if (v0 == a0) {
0x00004594 bnel v0, a0, 0x45ac | goto label_22;
| }
0x00004598 lw v0, 0x14(s2) | v0 = *((s2 + 5));
| if (v0 == 0) {
0x0000459c beql v0, zero, 0x45b0 | goto label_23;
| }
0x000045a0 addiu s7, s7, 1 | s7++;
0x000045a4 sw s2, 0x154(fp) | *(var_154h) = s2;
| }
0x000045a8 addiu s2, s2, 0x20 | s2 += 0x20;
| label_22:
0x000045ac addiu s7, s7, 1 | s7++;
| label_23:
0x000045b0 lhu v0, 0x2c(s0) | v0 = *((s0 + 22));
0x000045b4 slt v0, s7, v0 | v0 = (s7 < v0) ? 1 : 0;
0x000045b8 lw a0, (s2) | a0 = *(s2);
0x000045bc bnel v0, zero, 0x44e0 |
| }
0x000045c0 lw v0, -0x7f98(gp) | v0 = *(gp);
0x000045c4 lw s7, 0x158(fp) | s7 = *(var_158h);
0x000045c8 move a0, zero | a0 = 0;
0x000045cc lw v1, (v0) | v1 = *(v0);
0x000045d0 move a2, zero | a2 = 0;
0x000045d4 addiu a3, zero, 0x802 | a3 = 0x802;
0x000045d8 negu v0, v1 | __asm ("negu v0, v1");
0x000045dc addiu v1, v1, -1 | v1 += -1;
0x000045e0 addu s3, v1, s3 | s3 = v1 + s3;
0x000045e4 and s6, s6, v0 | s6 &= v0;
0x000045e8 and v0, s3, v0 | v0 = s3 & v0;
0x000045ec subu v0, v0, s6 | __asm ("subu v0, v0, s6");
0x000045f0 sw v0, 0x16c(fp) | *(var_16ch) = v0;
0x000045f4 move a1, v0 | a1 = v0;
| if (s7 != 0) {
0x000045f8 movz a0, s6, s7 | a0 = s6;
| }
0x000045fc move s2, zero | s2 = 0;
0x00004600 addiu v0, zero, -1 | v0 = -1;
0x00004604 addiu sp, sp, -0x20 |
0x00004608 sw v0, 0x10(sp) | *(var_10h) = v0;
0x0000460c sw s2, 0x14(sp) | *(var_14h) = s2;
0x00004610 addiu v0, zero, 0xffa | v0 = 0xffa;
0x00004614 syscall | __asm ("syscall");
0x00004618 addiu sp, sp, 0x20 |
0x0000461c move s3, v0 | s3 = v0;
| if (a3 != 0) {
0x00004620 beqz a3, 0x4630 |
0x00004624 lw v0, -0x7fdc(gp) | v0 = *(gp);
0x00004628 sw s3, (v0) | *(v0) = s3;
0x0000462c addiu s3, zero, -1 | s3 = -1;
| }
0x00004630 addiu v0, zero, -1 | v0 = -1;
0x00004634 lw s7, 0x158(fp) | s7 = *(var_158h);
| if (s3 != v0) {
0x00004638 bne s3, v0, 0x46a8 | goto label_24;
| }
| label_0:
0x0000463c lw v0, -0x7f90(gp) | v0 = *(gp);
| do {
0x00004640 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00004644 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00004648 lw a2, (v0) | a2 = *(v0);
0x0000464c addiu a0, zero, 2 | a0 = 2;
0x00004650 sw s4, 0x10(sp) | *(var_10h_2) = s4;
0x00004654 addiu a1, a1, 0x6a48 | a1 += str._s:_i:_cant_map__s_n;
0x00004658 addiu a3, zero, 0x261 | a3 = 0x261;
0x0000465c bal 0x1ec4 | sym_dl_dprintf ()
0x00004660 lw gp, 0x18(fp) | gp = *(var_18h);
0x00004664 addiu v1, zero, 6 | v1 = 6;
| label_16:
0x00004668 lw v0, -0x7f40(gp) | v0 = *(gp);
0x0000466c sw v1, (v0) | *(v0) = v1;
| label_19:
0x00004670 move a0, s1 | a0 = s1;
0x00004674 addiu v0, zero, 0xfa6 | v0 = 0xfa6;
0x00004678 syscall | __asm ("syscall");
| if (a3 != 0) {
0x0000467c beql a3, zero, 0x4690 |
0x00004680 lw v0, -0x7f98(gp) | v0 = *(gp);
0x00004684 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00004688 sw v0, (v1) | *(v1) = v0;
0x0000468c lw v0, -0x7f98(gp) | v0 = *(gp);
| }
0x00004690 move a0, s0 | a0 = s0;
0x00004694 lw a1, (v0) | a1 = *(v0);
0x00004698 addiu v0, zero, 0xffb | v0 = 0xffb;
0x0000469c syscall | __asm ("syscall");
0x000046a0 b 0x4a20 | goto label_25;
0x000046a4 nop |
| label_24:
0x000046a8 lw s2, 0x1c(s0) | s2 = *((s0 + 7));
0x000046ac lw v0, -0x7fd8(gp) | v0 = *((gp - 8182));
0x000046b0 move ra, zero | ra = 0;
0x000046b4 subu s6, s3, s6 | __asm ("subu s6, s3, s6");
| if (s7 == 0) {
0x000046b8 movn ra, s3, s7 | ra = s3;
| }
0x000046bc addu s2, s0, s2 | s2 = s0 + s2;
0x000046c0 sw s6, 0x15c(fp) | *(var_15ch) = s6;
0x000046c4 sw s6, 0x720c(v0) | *((v0 + 7299)) = s6;
0x000046c8 sw zero, 0x168(fp) | *(var_168h) = 0;
0x000046cc sw zero, 0x164(fp) | *(var_164h) = 0;
0x000046d0 sw zero, 0x160(fp) | *(var_160h) = 0;
0x000046d4 sw ra, 0x178(fp) | *(var_178h) = ra;
0x000046d8 b 0x4990 | goto label_26;
| label_2:
0x000046dc lw a0, 0x15c(fp) | a0 = *(var_15ch);
| label_1:
0x000046e0 lw a1, 0x16c(fp) | a1 = *(var_16ch);
0x000046e4 addiu v0, zero, 0xffb | v0 = 0xffb;
0x000046e8 syscall | __asm ("syscall");
0x000046ec beql a3, zero, 0x4640 |
| } while (a3 == 0);
0x000046f0 lw v0, -0x7f90(gp) | v0 = *(gp);
0x000046f4 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x000046f8 sw v0, (v1) | *(v1) = v0;
0x000046fc b 0x463c | goto label_0;
| label_4:
0x00004700 lui ra, 0x6474 | ra = 0x6474e552;
0x00004704 ori ra, ra, 0xe552 |
0x00004708 addiu ra, zero, 1 | ra = 1;
| if (v0 == ra) {
0x0000470c bne v0, ra, 0x4724 |
0x00004710 lw s7, 8(s2) | s7 = *((s2 + 2));
0x00004714 sw s7, 0x164(fp) | *(var_164h) = s7;
0x00004718 lw s7, 0x14(s2) | s7 = *((s2 + 5));
0x0000471c sw s7, 0x168(fp) | *(var_168h) = s7;
0x00004720 b 0x4980 | goto label_27;
| }
0x00004724 lw s7, 0x160(fp) | s7 = *(var_160h);
| if (v0 != ra) {
0x00004728 bne v0, ra, 0x4984 | goto label_28;
| }
0x0000472c lw v1, 0x18(s2) | v1 = *((s2 + 6));
0x00004730 andi a0, v1, 2 | a0 = v1 & 2;
0x00004734 lw v0, 8(s2) | v0 = *((s2 + 2));
| if (a0 == 0) {
0x00004738 beqz a0, 0x48e0 | goto label_29;
| }
0x0000473c lw a0, -0x7f98(gp) | a0 = *(gp);
0x00004740 lw a2, 0x10(s2) | a2 = *((s2 + 4));
0x00004744 addiu a3, zero, 0x12 | a3 = 0x12;
0x00004748 lw ra, (a0) | ra = *(a0);
0x0000474c lw a0, -0x7fd8(gp) | a0 = *((gp - 8182));
0x00004750 lw s7, 0x720c(a0) | s7 = *((a0 + 7299));
0x00004754 lw a0, 0x158(fp) | a0 = *(var_158h);
| if (a0 == 0) {
0x00004758 movn s7, s3, a0 | s7 = s3;
| }
0x0000475c negu a0, ra | __asm ("negu a0, ra");
0x00004760 addiu ra, ra, -1 | ra += -1;
0x00004764 and a1, a0, v0 | a1 = a0 & v0;
0x00004768 and ra, ra, v0 | ra &= v0;
0x0000476c ext v0, v1, 2, 1 | __asm ("ext v0, v1, 2, 1");
0x00004770 ori v0, v0, 2 | v0 |= 2;
0x00004774 addu ra, ra, a2 | ra += a2;
0x00004778 sw v0, 0x170(fp) | *(var_170h) = v0;
0x0000477c andi v1, v1, 1 | v1 &= 1;
0x00004780 lw v0, 4(s2) | v0 = *((s2 + 1));
0x00004784 addiu a2, zero, 4 | a2 = 4;
0x00004788 sw v1, 0x174(fp) | *(var_174h) = v1;
| if (v1 != 0) {
0x0000478c movz a2, zero, v1 | a2 = 0;
| }
0x00004790 lw v1, 0x170(fp) | v1 = *(var_170h);
0x00004794 addu s7, s7, a1 | s7 += a1;
0x00004798 ext v0, v0, 0, 0x1f | __asm ("ext v0, v0, 0, 0x1f");
0x0000479c and v0, v0, a0 | v0 &= a0;
0x000047a0 move a1, ra | a1 = ra;
0x000047a4 move a0, s7 | a0 = s7;
0x000047a8 or a2, a2, v1 | a2 |= v1;
0x000047ac addiu sp, sp, -0x20 |
0x000047b0 sw s1, 0x10(sp) | *(var_10h) = s1;
0x000047b4 sw v0, 0x14(sp) | *(var_14h) = v0;
0x000047b8 addiu v0, zero, 0xffa | v0 = 0xffa;
0x000047bc syscall | __asm ("syscall");
0x000047c0 addiu sp, sp, 0x20 |
0x000047c4 move s6, v0 | s6 = v0;
| if (a3 != 0) {
0x000047c8 beqz a3, 0x47d8 |
0x000047cc lw a0, -0x7fdc(gp) | a0 = *(gp);
0x000047d0 addiu s6, zero, -1 | s6 = -1;
0x000047d4 sw v0, (a0) | *(a0) = v0;
| }
0x000047d8 addiu v0, zero, -1 | v0 = -1;
0x000047dc lw a0, 0x15c(fp) | a0 = *(var_15ch);
| if (s6 == v0) {
0x000047e0 beq s6, v0, 0x46e0 | goto label_1;
| }
| if (s7 == 0) {
0x000047e4 beql s7, zero, 0x47f4 | goto label_30;
| }
0x000047e8 lw s7, -0x7f98(gp) | s7 = *(gp);
0x000047ec lw s7, -0x7f98(gp) | s7 = *(gp);
| if (s7 != s6) {
0x000047f0 bne s7, s6, 0x46e0 | goto label_1;
| }
| label_30:
0x000047f4 lw a1, 0x10(s2) | a1 = *((s2 + 4));
0x000047f8 lw a0, 8(s2) | a0 = *((s2 + 2));
0x000047fc lw v1, (s7) | v1 = *(s7);
0x00004800 addu ra, s6, ra | ra = s6 + ra;
0x00004804 addu a0, a1, a0 | a0 = a1 + a0;
0x00004808 addiu v0, v1, -1 | v0 = v1 + -1;
0x0000480c addu v0, v0, a0 | v0 += a0;
0x00004810 negu v1, v1 | __asm ("negu v1, v1");
0x00004814 and v0, v0, v1 | v0 &= v1;
0x00004818 lw v1, 0x14(s2) | v1 = *((s2 + 5));
0x0000481c subu a0, v0, a0 | __asm ("subu a0, v0, a0");
0x00004820 subu v1, v1, a1 | __asm ("subu v1, v1, a1");
0x00004824 sltu a1, v1, a0 | a1 = (v1 < a0) ? 1 : 0;
| if (a1 != 0) {
0x00004828 movz v1, a0, a1 | v1 = a0;
| }
0x0000482c b 0x483c |
| while (v1 != 0) {
0x00004830 sb zero, (ra) | *(ra) = 0;
0x00004834 move v1, a0 | v1 = a0;
0x00004838 addiu ra, ra, 1 | ra++;
0x0000483c addiu a0, v1, -1 | a0 = v1 + -1;
0x00004840 bnez v1, 0x4830 |
| }
0x00004844 lw v1, 8(s2) | v1 = *((s2 + 2));
0x00004848 lw a1, 0x14(s2) | a1 = *((s2 + 5));
0x0000484c addu a1, a1, v1 | a1 += v1;
0x00004850 sltu v1, v0, a1 | v1 = (v0 < a1) ? 1 : 0;
0x00004854 lw ra, 0x178(fp) | ra = *(var_178h);
| if (v1 != 0) {
0x00004858 bnel v1, zero, 0x486c |
| label_3:
0x0000485c lw s7, 0x160(fp) | s7 = *(var_160h);
| if (s6 != 0) {
0x00004860 bnez s6, 0x4984 | goto label_28;
| }
0x00004864 lw a0, 0x15c(fp) | a0 = *(var_15ch);
0x00004868 b 0x46e0 | goto label_1;
| }
0x0000486c lw s7, 0x174(fp) | s7 = *(var_174h);
0x00004870 addiu a2, zero, 4 | a2 = 4;
0x00004874 addu ra, ra, v0 | ra += v0;
0x00004878 sw ra, 0x188(fp) | *(var_188h) = ra;
0x0000487c move a0, ra | a0 = ra;
0x00004880 lw ra, 0x170(fp) | ra = *(var_170h);
| if (s7 != 0) {
0x00004884 movz a2, zero, s7 | a2 = 0;
| }
0x00004888 subu a1, a1, v0 | __asm ("subu a1, a1, v0");
0x0000488c or a2, a2, ra | a2 |= ra;
0x00004890 addiu a3, zero, 0x812 | a3 = 0x812;
0x00004894 addiu s7, zero, -1 | s7 = -1;
0x00004898 move ra, zero | ra = 0;
0x0000489c addiu sp, sp, -0x20 |
0x000048a0 sw s7, 0x10(sp) | *(var_10h) = s7;
0x000048a4 sw ra, 0x14(sp) | *(var_14h) = ra;
0x000048a8 addiu v0, zero, 0xffa | v0 = 0xffa;
0x000048ac syscall | __asm ("syscall");
0x000048b0 addiu sp, sp, 0x20 |
0x000048b4 addiu a0, zero, -1 | a0 = -1;
| if (a3 != 0) {
0x000048b8 beqz a3, 0x48c8 |
0x000048bc lw v1, -0x7fdc(gp) | v1 = *(gp);
0x000048c0 sw v0, (v1) | *(v1) = v0;
0x000048c4 addiu v0, zero, -1 | v0 = -1;
| }
0x000048c8 lw s7, 0x188(fp) | s7 = *(var_188h);
| if (v0 == a0) {
0x000048cc beq v0, a0, 0x46dc | goto label_2;
| }
| if (s7 == v0) {
0x000048d0 beq s7, v0, 0x485c | goto label_3;
| }
0x000048d4 nop |
0x000048d8 lw a0, 0x15c(fp) | a0 = *(var_15ch);
0x000048dc b 0x46e0 | goto label_1;
| label_29:
0x000048e0 lw ra, -0x7fd8(gp) | ra = *((gp - 8182));
0x000048e4 lw s7, 0x158(fp) | s7 = *(var_158h);
0x000048e8 lw t0, 0x10(s2) | t0 = *((s2 + 4));
0x000048ec lw s6, 0x720c(ra) | s6 = *((ra + 7299));
0x000048f0 lw ra, -0x7f98(gp) | ra = *(gp);
0x000048f4 ext a3, v1, 2, 1 | __asm ("ext a3, v1, 2, 1");
| if (s7 == 0) {
0x000048f8 movn s6, s3, s7 | s6 = s3;
| }
0x000048fc lw a1, (ra) | a1 = *(ra);
0x00004900 andi v1, v1, 1 | v1 &= 1;
0x00004904 negu a0, a1 | __asm ("negu a0, a1");
0x00004908 addiu a1, a1, -1 | a1 += -1;
0x0000490c and a2, a0, v0 | a2 = a0 & v0;
0x00004910 and a1, a1, v0 | a1 &= v0;
0x00004914 lw v0, 4(s2) | v0 = *((s2 + 1));
0x00004918 addu s6, s6, a2 | s6 += a2;
0x0000491c addiu a2, zero, 4 | a2 = 4;
| if (v1 != 0) {
0x00004920 movz a2, zero, v1 | a2 = 0;
| }
0x00004924 ext v0, v0, 0, 0x1f | __asm ("ext v0, v0, 0, 0x1f");
0x00004928 and v0, v0, a0 | v0 &= a0;
0x0000492c or a2, a2, a3 | a2 |= a3;
0x00004930 move a0, s6 | a0 = s6;
0x00004934 addu a1, a1, t0 | a1 += t0;
0x00004938 addiu a3, zero, 0x12 | a3 = 0x12;
0x0000493c addiu sp, sp, -0x20 |
0x00004940 sw s1, 0x10(sp) | *(var_10h) = s1;
0x00004944 sw v0, 0x14(sp) | *(var_14h) = v0;
0x00004948 addiu v0, zero, 0xffa | v0 = 0xffa;
0x0000494c syscall | __asm ("syscall");
0x00004950 addiu sp, sp, 0x20 |
0x00004954 addiu a0, zero, -1 | a0 = -1;
| if (a3 == 0) {
0x00004958 beqz a3, 0x4968 | goto label_31;
| }
0x0000495c lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00004960 sw v0, (v1) | *(v1) = v0;
0x00004964 addiu v0, zero, -1 | v0 = -1;
| if (v0 == a0) {
| label_31:
0x00004968 beql v0, a0, 0x46e0 | goto label_1;
| }
0x0000496c lw a0, 0x15c(fp) | a0 = *(var_15ch);
0x00004970 lw s7, 0x160(fp) | s7 = *(var_160h);
| if (s6 == 0) {
0x00004974 beqz s6, 0x4984 | goto label_28;
| }
0x00004978 lw a0, 0x15c(fp) | a0 = *(var_15ch);
| if (s6 != v0) {
0x0000497c bne s6, v0, 0x46e0 | goto label_1;
| }
| label_27:
0x00004980 lw s7, 0x160(fp) | s7 = *(var_160h);
| label_28:
0x00004984 addiu s2, s2, 0x20 | s2 += 0x20;
0x00004988 addiu s7, s7, 1 | s7++;
0x0000498c sw s7, 0x160(fp) | *(var_160h) = s7;
| label_26:
0x00004990 lhu v0, 0x2c(s0) | v0 = *((s0 + 22));
0x00004994 lw ra, 0x160(fp) | ra = *(var_160h);
0x00004998 slt v0, ra, v0 | v0 = (ra < v0) ? 1 : 0;
0x0000499c lw v0, (s2) | v0 = *(s2);
| if (v0 == 0) {
0x000049a0 bnel v0, zero, 0x4700 | goto label_4;
| }
0x000049a4 lw s7, 0x150(fp) | s7 = *(var_150h);
0x000049a8 lw ra, 0x15c(fp) | ra = *(var_15ch);
0x000049ac lw v1, 0x158(fp) | v1 = *(var_158h);
0x000049b0 addu v0, s7, ra | v0 = s7 + ra;
| if (v1 == 0) {
0x000049b4 movn s7, v0, v1 | s7 = v0;
| }
0x000049b8 sw s7, 0x150(fp) | *(var_150h) = s7;
| if (s7 == 0) {
0x000049bc bnez s7, 0x4a38 |
0x000049c0 lw v0, -0x7f40(gp) | v0 = *(gp);
0x000049c4 addiu v1, zero, 7 | v1 = 7;
0x000049c8 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x000049cc sw v1, (v0) | *(v0) = v1;
0x000049d0 lw v0, -0x7f90(gp) | v0 = *(gp);
0x000049d4 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x000049d8 addiu a0, zero, 2 | a0 = 2;
0x000049dc lw a2, (v0) | a2 = *(v0);
0x000049e0 addiu a1, a1, 0x6c48 | a1 += str._s:__s_is_missing_a_dynamic_section_n;
0x000049e4 move a3, s4 | a3 = s4;
0x000049e8 bal 0x1ec4 | sym_dl_dprintf ()
0x000049ec lw gp, 0x18(fp) | gp = *(var_18h);
0x000049f0 move a0, s0 | a0 = s0;
0x000049f4 lw v0, -0x7f98(gp) | v0 = *(gp);
0x000049f8 lw a1, (v0) | a1 = *(v0);
0x000049fc addiu v0, zero, 0xffb | v0 = 0xffb;
0x00004a00 syscall | __asm ("syscall");
0x00004a04 move a0, s1 | a0 = s1;
| if (a3 != 0) {
0x00004a08 beqz a3, 0x4a18 |
0x00004a0c lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00004a10 sw v0, (v1) | *(v1) = v0;
| label_15:
0x00004a14 move a0, s1 | a0 = s1;
| }
| label_10:
0x00004a18 addiu v0, zero, 0xfa6 | v0 = 0xfa6;
0x00004a1c syscall | __asm ("syscall");
| if (a3 == 0) {
| label_25:
0x00004a20 beql a3, zero, 0x4cac | goto label_13;
| }
0x00004a24 move s6, zero | s6 = 0;
0x00004a28 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00004a2c sw v0, (v1) | *(v1) = v0;
| label_7:
0x00004a30 move s6, zero | s6 = 0;
0x00004a34 b 0x4cac | goto label_13;
| }
0x00004a38 addiu v1, fp, 0x20 | v1 = fp + 0x20;
0x00004a3c addiu v0, zero, 0x9c | v0 = 0x9c;
0x00004a40 b 0x4a50 |
| while (v0 != 0) {
0x00004a44 sb zero, (v1) | *(v1) = 0;
0x00004a48 move v0, a0 | v0 = a0;
0x00004a4c addiu v1, v1, 1 | v1++;
0x00004a50 addiu a0, v0, -1 | a0 = v0 + -1;
0x00004a54 bnez v0, 0x4a44 |
| }
0x00004a58 lw t9, -0x7f3c(gp) | t9 = sym._dl_parse_dynamic_info;
0x00004a5c lw a0, 0x150(fp) | a0 = *(var_150h);
0x00004a60 lw a3, 0x15c(fp) | a3 = *(var_15ch);
0x00004a64 addiu a1, fp, 0x20 | a1 = fp + 0x20;
0x00004a68 move a2, zero | a2 = 0;
0x00004a6c bal 0x3fd0 | sym_dl_parse_dynamic_info ();
0x00004a70 move s2, v0 | s2 = v0;
0x00004a74 lw v0, 0x78(fp) | v0 = *(var_78h);
0x00004a78 lw gp, 0x18(fp) | gp = *(var_18h);
| if (v0 != 0) {
0x00004a7c beqz v0, 0x4ab8 |
0x00004a80 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00004a84 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00004a88 addiu a0, zero, 2 | a0 = 2;
0x00004a8c addiu a1, a1, 0x6c70 | a1 += str.Cant_modify__ss_text_section._Use_GCC_option__fPIC_for_shared_objects__please._n;
0x00004a90 move a2, s4 | a2 = s4;
0x00004a94 bal 0x1ec4 | sym_dl_dprintf ()
0x00004a98 lw gp, 0x18(fp) | gp = *(var_18h);
0x00004a9c addiu a0, zero, 1 | a0 = 1;
0x00004aa0 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00004aa4 syscall | __asm ("syscall");
0x00004aa8 move a0, s1 | a0 = s1;
| if (a3 == 0) {
0x00004aac beqz a3, 0x4abc | goto label_32;
| }
0x00004ab0 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00004ab4 sw v0, (v1) | *(v1) = v0;
| }
0x00004ab8 move a0, s1 | a0 = s1;
| label_32:
0x00004abc addiu v0, zero, 0xfa6 | v0 = 0xfa6;
0x00004ac0 syscall | __asm ("syscall");
0x00004ac4 lw t9, -0x7f44(gp) | t9 = sym._dl_add_elf_hash_table;
| if (a3 != 0) {
0x00004ac8 beqz a3, 0x4ad4 |
0x00004acc lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00004ad0 sw v0, (v1) | *(v1) = v0;
| }
0x00004ad4 lw a1, 0x15c(fp) | a1 = *(var_15ch);
0x00004ad8 lw a3, 0x150(fp) | a3 = *(var_150h);
0x00004adc sw zero, 0x10(sp) | *(var_10h_2) = 0;
0x00004ae0 move a0, s4 | a0 = s4;
0x00004ae4 addiu a2, fp, 0x20 | a2 = fp + 0x20;
0x00004ae8 bal 0x3d1c | sym_dl_add_elf_hash_table ();
0x00004aec lw s7, 0x164(fp) | s7 = *(var_164h);
0x00004af0 lw gp, 0x18(fp) | gp = *(var_18h);
0x00004af4 move s6, v0 | s6 = v0;
0x00004af8 sw s7, 0x10c(v0) | *(v0) = s7;
0x00004afc lw s7, 0x168(fp) | s7 = *(var_168h);
0x00004b00 sw s3, 0x34(v0) | *((v0 + 13)) = s3;
0x00004b04 sw zero, 0x11c(s6) | *((s6 + 71)) = 0;
0x00004b08 sw s7, 0x110(v0) | *(v0) = s7;
0x00004b0c lw v0, 0xbc(fp) | v0 = *(var_bch);
0x00004b10 lw s7, 0x154(fp) | s7 = *(var_154h);
0x00004b14 sw v0, 0x118(s6) | *((s6 + 70)) = v0;
0x00004b18 lw v0, 0xcc(fp) | v0 = *(var_cch);
0x00004b1c sw v0, 0x120(s6) | *(s6) = v0;
0x00004b20 lw v0, 0x1c(s0) | v0 = *((s0 + 7));
0x00004b24 addu s3, s3, v0 | s3 += v0;
0x00004b28 lhu v0, 0x2c(s0) | v0 = *((s0 + 22));
0x00004b2c sw s3, 0x108(s6) | *(s6) = s3;
0x00004b30 sw v0, 0x104(s6) | *((s6 + 65)) = v0;
0x00004b34 lw v0, 0x4c(s6) | v0 = *((s6 + 19));
0x00004b38 or s2, v0, s2 | s2 = v0 | s2;
0x00004b3c sw s2, 0x4c(s6) | *((s6 + 19)) = s2;
| if (s7 != 0) {
0x00004b40 beqz s7, 0x4bb4 |
0x00004b44 addiu v0, zero, -1 | v0 = -1;
0x00004b48 sw v0, 0x28(s6) | *((s6 + 10)) = v0;
0x00004b4c lw v0, 0x14(s7) | v0 = *((s7 + 5));
0x00004b50 lw v1, 8(s7) | v1 = *((s7 + 2));
0x00004b54 sw v0, 0x1c(s6) | *((s6 + 7)) = v0;
0x00004b58 lw v0, 0x1c(s7) | v0 = *((s7 + 7));
0x00004b5c sw v0, 0x20(s6) | *((s6 + 8)) = v0;
| if (v0 == 0) {
0x00004b60 bnez v0, 0x4b6c |
0x00004b64 sw zero, 0x24(s6) | *((s6 + 9)) = 0;
0x00004b68 b 0x4b78 |
| } else {
0x00004b6c addiu v0, v0, -1 | v0 += -1;
0x00004b70 and v0, v0, v1 | v0 &= v1;
0x00004b74 sw v0, 0x24(s6) | *((s6 + 9)) = v0;
| }
0x00004b78 lw s7, 0x154(fp) | s7 = *(var_154h);
0x00004b7c lw t9, -0x7f38(gp) | t9 = *(gp);
0x00004b80 lw v0, 0x10(s7) | v0 = *((s7 + 4));
0x00004b84 sw v1, 0x14(s6) | *((s6 + 5)) = v1;
0x00004b88 sw v0, 0x18(s6) | *((s6 + 6)) = v0;
0x00004b8c bal 0x129c | fcn_0000129c ();
0x00004b90 lw gp, 0x18(fp) | gp = *(var_18h);
0x00004b94 sw v0, 0x2c(s6) | *((s6 + 11)) = v0;
0x00004b98 lw v0, 0x14(s6) | v0 = *((s6 + 5));
| if (v0 == 0) {
0x00004b9c beql v0, zero, 0x4bb8 | goto label_33;
| }
0x00004ba0 lw s1, (s5) | s1 = *(s5);
0x00004ba4 lw v1, 8(s7) | v1 = *((s7 + 2));
0x00004ba8 lw v0, (s6) | v0 = *(s6);
0x00004bac addu v0, v1, v0 | v0 = v1 + v0;
0x00004bb0 sw v0, 0x14(s6) | *((s6 + 5)) = v0;
| }
0x00004bb4 lw s1, (s5) | s1 = *(s5);
| label_33:
0x00004bb8 lw t9, -0x7f88(gp) | t9 = sym._dl_malloc;
| if (s1 == 0) {
0x00004bbc beqz s1, 0x4c0c | goto label_34;
| }
0x00004bc0 addiu a0, zero, 0x18 | a0 = 0x18;
0x00004bc4 bal 0x262c | sym_dl_malloc ();
0x00004bc8 lw gp, 0x18(fp) | gp = *(var_18h);
0x00004bcc sw v0, 0x10(s1) | *((s1 + 4)) = v0;
0x00004bd0 lw v0, (s5) | v0 = *(s5);
0x00004bd4 lw v1, 0x10(v0) | v1 = *((v0 + 4));
0x00004bd8 addiu v0, zero, 0x18 | v0 = 0x18;
0x00004bdc b 0x4bec |
| while (v0 != 0) {
0x00004be0 sb zero, (v1) | *(v1) = 0;
0x00004be4 move v0, a0 | v0 = a0;
0x00004be8 addiu v1, v1, 1 | v1++;
0x00004bec addiu a0, v0, -1 | a0 = v0 + -1;
0x00004bf0 bnez v0, 0x4be0 |
| }
0x00004bf4 lw v0, (s5) | v0 = *(s5);
0x00004bf8 lw v1, 0x10(v0) | v1 = *((v0 + 4));
0x00004bfc sw v0, 0x14(v1) | *((v1 + 5)) = v0;
0x00004c00 lw v0, (s5) | v0 = *(s5);
0x00004c04 lw v0, 0x10(v0) | v0 = *((v0 + 4));
0x00004c08 sw v0, (s5) | *(s5) = v0;
| label_34:
0x00004c0c lw v0, (s5) | v0 = *(s5);
0x00004c10 lw v1, 0x2c(fp) | v1 = *(var_2ch);
0x00004c14 sw s6, (v0) | *(v0) = s6;
0x00004c18 lhu v0, 0x48(s6) | v0 = *((s6 + 36));
0x00004c1c sw zero, 0x38(s6) | *((s6 + 14)) = 0;
0x00004c20 addiu v0, v0, 1 | v0++;
0x00004c24 sh v0, 0x48(s6) | *((s6 + 36)) = v0;
| if (v1 == 0) {
0x00004c28 bnez v1, 0x4c50 |
0x00004c2c lw v0, -0x7f98(gp) | v0 = *(gp);
| label_5:
0x00004c30 move a0, s0 | a0 = s0;
0x00004c34 lw a1, (v0) | a1 = *(v0);
0x00004c38 addiu v0, zero, 0xffb | v0 = 0xffb;
0x00004c3c syscall | __asm ("syscall");
| label_12:
0x00004c40 lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 != 0) {
0x00004c44 bnez a3, 0x4ca8 | goto label_14;
| }
0x00004c48 move sp, fp |
0x00004c4c b 0x4cb0 | goto label_35;
| }
0x00004c50 lw v0, -0x7f34(gp) | v0 = sym._dl_runtime_resolve;
0x00004c54 sw s6, 4(v1) | *((v1 + 1)) = s6;
0x00004c58 sw v0, (v1) | *(v1) = v0;
0x00004c5c lw v0, 0x100(s6) | v0 = *((s6 + 64));
0x00004c60 lw a0, -0x7f30(gp) | a0 = sym._dl_runtime_pltresolve;
| if (v0 != 0) {
0x00004c64 beqz v0, 0x4c70 |
0x00004c68 sw s6, 4(v0) | *((v0 + 1)) = s6;
0x00004c6c sw a0, (v0) | *(v0) = a0;
| }
0x00004c70 addiu v0, zero, 2 | v0 = 2;
0x00004c74 b 0x4c90 |
| while (a0 != 0) {
0x00004c78 addu a0, v1, a0 | a0 = v1 + a0;
0x00004c7c lw a2, (a0) | a2 = *(a0);
0x00004c80 lw a1, (s6) | a1 = *(s6);
0x00004c84 addiu v0, v0, 1 | v0++;
0x00004c88 addu a1, a2, a1 | a1 = a2 + a1;
0x00004c8c sw a1, (a0) | *(a0) = a1;
0x00004c90 lw a0, 0xf8(s6) | a0 = *((s6 + 62));
0x00004c94 sltu a0, v0, a0 | a0 = (v0 < a0) ? 1 : 0;
0x00004c98 sll a0, v0, 2 | a0 = v0 << 2;
0x00004c9c bnez a0, 0x4c78 |
| }
0x00004ca0 lw v0, -0x7f98(gp) | v0 = *(gp);
0x00004ca4 b 0x4c30 | goto label_5;
| label_14:
0x00004ca8 sw v0, (v1) | *(v1) = v0;
| label_13:
0x00004cac move sp, fp |
| label_35:
0x00004cb0 lw ra, 0x1b4(sp) | ra = *(var_1b4h);
0x00004cb4 move v0, s6 | v0 = s6;
0x00004cb8 lw fp, 0x1b0(sp) | fp = *(var_1b0h);
0x00004cbc lw s7, 0x1ac(sp) | s7 = *(var_1ach);
0x00004cc0 lw s6, 0x1a8(sp) | s6 = *(var_1a8h);
0x00004cc4 lw s5, 0x1a4(sp) | s5 = *(var_1a4h);
0x00004cc8 lw s4, 0x1a0(sp) | s4 = *(var_1a0h);
0x00004ccc lw s3, 0x19c(sp) | s3 = *(var_19ch);
0x00004cd0 lw s2, 0x198(sp) | s2 = *(var_198h);
0x00004cd4 lw s1, 0x194(sp) | s1 = *(var_194h);
0x00004cd8 lw s0, 0x190(sp) | s0 = *(var_190h);
0x00004cdc addiu sp, sp, 0x1b8 |
0x00004ce0 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x262c */
| #include <stdint.h>
|
; (fcn) sym._dl_malloc () | void dl_malloc () {
0x0000262c lui gp, 2 |
0x00002630 addiu gp, gp, -0x360c |
0x00002634 addu gp, gp, t9 | gp += t9;
0x00002638 lw v0, -0x7f8c(gp) | v0 = *(gp);
0x0000263c addiu sp, sp, -0x30 |
0x00002640 sw fp, 0x28(sp) | *(var_20h) = fp;
0x00002644 lw t9, (v0) | t9 = *(v0);
0x00002648 move fp, sp | fp = sp;
0x0000264c sw ra, 0x2c(sp) | *(var_24h) = ra;
0x00002650 sw s3, 0x24(sp) | *(var_1ch) = s3;
0x00002654 sw s2, 0x20(sp) | *(var_20h_2) = s2;
0x00002658 sw s1, 0x1c(sp) | *(var_1ch_2) = s1;
0x0000265c sw s0, 0x18(sp) | *(var_10h) = s0;
0x00002660 sw gp, 0x10(sp) | *(var_10h_2) = gp;
0x00002664 lw ra, 0x2c(fp) | ra = *(var_24h);
| if (t9 != 0) {
0x00002668 beqz t9, 0x268c |
0x0000266c move sp, fp |
0x00002670 lw fp, 0x28(sp) | fp = *(var_20h);
0x00002674 lw s3, 0x24(sp) | s3 = *(var_1ch);
0x00002678 lw s2, 0x20(sp) | s2 = *(var_20h_2);
0x0000267c lw s1, 0x1c(sp) | s1 = *(var_1ch_2);
0x00002680 lw s0, 0x18(sp) | s0 = *(var_10h);
0x00002684 addiu sp, sp, 0x30 |
0x00002688 jr t9 | t9 ();
| }
0x0000268c lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002690 lw s1, -0x7fd8(gp) | s1 = *((gp - 8182));
0x00002694 lw v0, -0x7f98(gp) | v0 = *(gp);
0x00002698 move s0, a0 | s0 = a0;
0x0000269c lw a1, 0x71ec(s1) | a1 = *((s1 + 7291));
0x000026a0 lw a0, 0x71f0(v1) | a0 = *((v1 + 7292));
0x000026a4 lw v0, (v0) | v0 = *(v0);
0x000026a8 subu a0, a1, a0 | __asm ("subu a0, a1, a0");
0x000026ac addu a0, a0, s0 | a0 += s0;
0x000026b0 sltu a0, v0, a0 | a0 = (v0 < a0) ? 1 : 0;
0x000026b4 move s3, v1 | s3 = v1;
| if (a0 != 0) {
0x000026b8 beqz a0, 0x2764 |
0x000026bc sltu v1, s0, v0 | v1 = (s0 < v0) ? 1 : 0;
0x000026c0 move a1, s0 | a1 = s0;
| if (v1 != 0) {
0x000026c4 beqz v1, 0x26d4 |
0x000026c8 addiu a1, v0, -1 | a1 = v0 + -1;
0x000026cc addu a1, a1, s0 | a1 += s0;
0x000026d0 and a1, a1, v0 | a1 &= v0;
| }
0x000026d4 lui a3, 0x400 | a3 = 0x4000000;
0x000026d8 move a0, zero | a0 = 0;
0x000026dc addiu a2, zero, 3 | a2 = 3;
0x000026e0 addiu a3, a3, 0x802 | a3 += 0x802;
0x000026e4 move s2, zero | s2 = 0;
0x000026e8 addiu v0, zero, -1 | v0 = -1;
0x000026ec addiu sp, sp, -0x20 |
0x000026f0 sw v0, 0x10(sp) | *(var_10h_3) = v0;
0x000026f4 sw s2, 0x14(sp) | *(var_14h) = s2;
0x000026f8 addiu v0, zero, 0xffa | v0 = 0xffa;
0x000026fc syscall | __asm ("syscall");
0x00002700 addiu sp, sp, 0x20 |
0x00002704 addiu v1, zero, -1 | v1 = -1;
| if (a3 != 0) {
0x00002708 beqz a3, 0x271c |
0x0000270c lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00002710 sw v0, (v1) | *(v1) = v0;
0x00002714 addiu v0, zero, -1 | v0 = -1;
0x00002718 addiu v1, zero, -1 | v1 = -1;
| }
0x0000271c sw v0, 0x71ec(s1) | *((s1 + 7291)) = v0;
0x00002720 sw v0, 0x71f0(s3) | *((s3 + 7292)) = v0;
| if (v0 != v1) {
0x00002724 bne v0, v1, 0x2764 | goto label_0;
| }
0x00002728 lw v0, -0x7f90(gp) | v0 = *(gp);
0x0000272c lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00002730 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00002734 lw a2, (v0) | a2 = *(v0);
0x00002738 addiu a0, zero, 2 | a0 = 2;
0x0000273c addiu a1, a1, 0x6a7c | a1 += str._s:_mmap_of_a_spare_page_failed__n;
0x00002740 bal 0x1ec4 | sym_dl_dprintf ()
0x00002744 lw gp, 0x10(fp) | gp = *(var_10h_2);
0x00002748 addiu a0, zero, 0x14 | a0 = 0x14;
0x0000274c addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00002750 syscall | __asm ("syscall");
| if (a3 == 0) {
0x00002754 beql a3, zero, 0x2768 | goto label_1;
| }
0x00002758 lw v0, 0x71ec(s1) | v0 = *((s1 + 7291));
0x0000275c lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00002760 sw v0, (v1) | *(v1) = v0;
| }
| label_0:
0x00002764 lw v0, 0x71ec(s1) | v0 = *((s1 + 7291));
| label_1:
0x00002768 move sp, fp |
0x0000276c lw ra, 0x2c(sp) | ra = *(var_24h);
0x00002770 addu s0, v0, s0 | s0 = v0 + s0;
0x00002774 addiu v1, zero, -4 | v1 = -4;
0x00002778 addiu s0, s0, 3 | s0 += 3;
0x0000277c and s0, s0, v1 | s0 &= v1;
0x00002780 sw s0, 0x71ec(s1) | *((s1 + 7291)) = s0;
0x00002784 lw fp, 0x28(sp) | fp = *(var_20h);
0x00002788 lw s3, 0x24(sp) | s3 = *(var_1ch);
0x0000278c lw s2, 0x20(sp) | s2 = *(var_20h_2);
0x00002790 lw s1, 0x1c(sp) | s1 = *(var_1ch_2);
0x00002794 lw s0, 0x18(sp) | s0 = *(var_10h);
0x00002798 addiu sp, sp, 0x30 |
0x0000279c jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x2390 */
| #include <stdint.h>
|
; (fcn) sym._dl_map_cache () | void dl_map_cache () {
0x00002390 lui gp, 2 |
0x00002394 addiu gp, gp, -0x3370 |
0x00002398 addu gp, gp, t9 | gp += t9;
0x0000239c addiu sp, sp, -0xd0 |
0x000023a0 sw s0, 0xb4(sp) | *(var_b4h) = s0;
0x000023a4 lw s0, -0x7fd8(gp) | s0 = *((gp - 8182));
0x000023a8 sw fp, 0xc8(sp) | *(var_c8h) = fp;
0x000023ac addiu v1, zero, -1 | v1 = -1;
0x000023b0 lw v0, 0x7204(s0) | v0 = *((s0 + 7297));
0x000023b4 move fp, sp | fp = sp;
0x000023b8 sw ra, 0xcc(sp) | *(var_cch) = ra;
0x000023bc sw s4, 0xc4(sp) | *(var_c4h) = s4;
0x000023c0 sw s3, 0xc0(sp) | *(var_c0h) = s3;
0x000023c4 sw s2, 0xbc(sp) | *(var_bch) = s2;
0x000023c8 sw s1, 0xb8(sp) | *(var_b8h) = s1;
0x000023cc sw gp, 0x18(sp) | *(var_18h) = gp;
| if (v0 == v1) {
0x000023d0 beql v0, v1, 0x2604 | goto label_2;
| }
0x000023d4 addiu v0, zero, -1 | v0 = -1;
0x000023d8 move v0, zero | v0 = 0;
| if (v0 != 0) {
0x000023dc bnez v0, 0x2604 | goto label_2;
| }
0x000023e0 lw s3, -0x7fe4(gp) | s3 = *((gp - 8185));
0x000023e4 addiu a1, fp, 0x20 | a1 = fp + 0x20;
0x000023e8 addiu a0, s3, 0x6a34 | a0 = s3 + str._etc_ld.so.cache;
0x000023ec addiu v0, zero, 0x100a | v0 = 0x100a;
0x000023f0 syscall | __asm ("syscall");
0x000023f4 lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 != 0) {
0x000023f8 bnez a3, 0x25f8 | goto label_3;
| }
0x000023fc lui a1, 8 | a1 = 0x80000;
| if (v0 != 0) {
0x00002400 bnez v0, 0x25fc | goto label_4;
| }
0x00002404 move a2, zero | a2 = 0;
0x00002408 addiu v0, zero, 0xfa5 | v0 = 0xfa5;
0x0000240c syscall | __asm ("syscall");
0x00002410 move s2, a3 | s2 = a3;
0x00002414 move s1, v0 | s1 = v0;
| if (a3 != 0) {
0x00002418 beqz a3, 0x2428 |
0x0000241c lw v0, -0x7fdc(gp) | v0 = *(gp);
0x00002420 sw s1, (v0) | *(v0) = s1;
0x00002424 b 0x25fc | goto label_4;
| }
0x00002428 lw a1, 0x50(fp) | a1 = *(var_50h);
| if (v0 < 0) {
0x0000242c bgez v0, 0x2438 |
0x00002430 addiu v0, zero, -1 | v0 = -1;
0x00002434 b 0x2600 | goto label_5;
| }
0x00002438 lw s4, -0x7fd8(gp) | s4 = *((gp - 8182));
0x0000243c move a0, zero | a0 = 0;
0x00002440 addiu a2, zero, 1 | a2 = 1;
0x00002444 sw a1, 0x7208(s4) | *((s4 + 7298)) = a1;
0x00002448 addiu a3, zero, 1 | a3 = 1;
0x0000244c addiu sp, sp, -0x20 |
0x00002450 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00002454 sw s2, 0x14(sp) | *(var_14h) = s2;
0x00002458 addiu v0, zero, 0xffa | v0 = 0xffa;
0x0000245c syscall | __asm ("syscall");
0x00002460 addiu sp, sp, 0x20 |
0x00002464 move s2, s4 | s2 = s4;
| if (a3 != 0) {
0x00002468 beqz a3, 0x2478 |
0x0000246c lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00002470 sw v0, (v1) | *(v1) = v0;
0x00002474 addiu v0, zero, -1 | v0 = -1;
| }
0x00002478 sw v0, 0x7204(s0) | *((s0 + 7297)) = v0;
0x0000247c move a0, s1 | a0 = s1;
0x00002480 addiu v0, zero, 0xfa6 | v0 = 0xfa6;
0x00002484 syscall | __asm ("syscall");
| if (a3 != 0) {
0x00002488 beql a3, zero, 0x249c |
0x0000248c lw v0, 0x7204(s0) | v0 = *((s0 + 7297));
0x00002490 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00002494 sw v0, (v1) | *(v1) = v0;
0x00002498 lw v0, 0x7204(s0) | v0 = *((s0 + 7297));
| }
0x0000249c addiu v1, zero, -1 | v1 = -1;
0x000024a0 lw v1, 0x7208(s2) | v1 = *((s2 + 7298));
| if (v0 == v1) {
0x000024a4 bne v0, v1, 0x24d8 |
0x000024a8 lw v0, -0x7f90(gp) | v0 = *(gp);
0x000024ac lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x000024b0 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x000024b4 lw a2, (v0) | a2 = *(v0);
0x000024b8 addiu s3, s3, 0x6a34 | s3 += str._etc_ld.so.cache;
0x000024bc sw s3, 0x10(sp) | *(var_10h_2) = s3;
0x000024c0 addiu a0, zero, 2 | a0 = 2;
0x000024c4 addiu a1, a1, 0x6a48 | a1 += str._s:_i:_cant_map__s_n;
0x000024c8 addiu a3, zero, 0x40 | a3 = 0x40;
0x000024cc bal 0x1ec4 | sym_dl_dprintf ()
0x000024d0 addiu v0, zero, -1 | v0 = -1;
0x000024d4 b 0x2604 | goto label_2;
| }
0x000024d8 sltiu a0, v1, 0x10 | a0 = (v1 < 0x10) ? 1 : 0;
0x000024dc lw a2, -0x7fe4(gp) | a2 = *((gp - 8185));
| if (a0 != 0) {
0x000024e0 bnez a0, 0x2568 | goto label_0;
| }
0x000024e4 addiu a1, v0, -1 | a1 = v0 + -1;
0x000024e8 addiu a0, zero, 6 | a0 = 6;
0x000024ec addiu a2, a2, 0x6a23 | a2 += 0x6a23;
0x000024f0 addiu a1, a1, 1 | a1++;
| do {
0x000024f4 addiu a2, a2, 1 | a2++;
0x000024f8 lbu t0, (a1) | t0 = *(a1);
0x000024fc lbu a3, (a2) | a3 = *(a2);
0x00002500 addiu a0, a0, -1 | a0 += -1;
| if (t0 != a3) {
0x00002504 bne t0, a3, 0x2568 | goto label_0;
| }
0x00002508 addiu a1, a1, 1 | a1++;
0x0000250c bnez a0, 0x24f4 |
| } while (a0 != 0);
0x00002510 lw a2, -0x7fe4(gp) | a2 = *((gp - 8185));
0x00002514 addiu a1, v0, 5 | a1 = v0 + 5;
0x00002518 addiu a0, zero, 5 | a0 = 5;
0x0000251c addiu a2, a2, 0x6a2b | a2 += 0x6a2b;
0x00002520 addiu a1, a1, 1 | a1++;
| do {
0x00002524 addiu a2, a2, 1 | a2++;
0x00002528 lbu t0, (a1) | t0 = *(a1);
0x0000252c lbu a3, (a2) | a3 = *(a2);
0x00002530 addiu a0, a0, -1 | a0 += -1;
| if (t0 != a3) {
0x00002534 bne t0, a3, 0x2568 | goto label_0;
| }
0x00002538 addiu a1, a1, 1 | a1++;
0x0000253c bnez a0, 0x2524 |
| } while (a0 != 0);
0x00002540 lw a0, 0xc(v0) | a0 = *((v0 + 3));
0x00002544 addiu a1, zero, 0xc | a1 = 0xc;
0x00002548 mul a1, a0, a1 | __asm ("mul a1, a0, a1");
0x0000254c addiu a2, a1, 0x10 | a2 = a1 + 0x10;
0x00002550 sltu a2, v1, a2 | a2 = (v1 < a2) ? 1 : 0;
0x00002554 addu a2, v0, v1 | a2 = v0 + v1;
| if (a2 == 0) {
0x00002558 bnez a2, 0x2568 |
0x0000255c lbu a2, -1(a2) | a2 = *((a2 - 1));
0x00002560 addiu v1, v1, -0x10 | v1 += -0x10;
| if (a2 == 0) {
0x00002564 beqz a2, 0x25ac | goto label_6;
| }
| }
| label_0:
0x00002568 lw v0, -0x7f90(gp) | v0 = *(gp);
| do {
0x0000256c lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00002570 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00002574 lw a2, (v0) | a2 = *(v0);
0x00002578 addiu a0, zero, 2 | a0 = 2;
0x0000257c addiu a1, a1, 0x6a60 | a1 += str._s:_cache__s_is_corrupt_n;
0x00002580 addiu a3, s3, 0x6a34 | a3 = s3 + str._etc_ld.so.cache;
0x00002584 bal 0x1ec4 | sym_dl_dprintf ()
0x00002588 lw gp, 0x18(fp) | gp = *(var_18h);
0x0000258c lw a0, 0x7204(s0) | a0 = *((s0 + 7297));
0x00002590 lw a1, 0x7208(s2) | a1 = *((s2 + 7298));
0x00002594 addiu v0, zero, 0xffb | v0 = 0xffb;
0x00002598 syscall | __asm ("syscall");
0x0000259c lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 != 0) {
0x000025a0 bnez a3, 0x25f8 | goto label_3;
| }
0x000025a4 addiu v0, zero, -1 | v0 = -1;
0x000025a8 b 0x2600 | goto label_5;
| label_6:
0x000025ac subu a1, v1, a1 | __asm ("subu a1, v1, a1");
0x000025b0 addiu v0, v0, 0x10 | v0 += 0x10;
0x000025b4 move v1, zero | v1 = 0;
0x000025b8 addiu a3, zero, 0xc | a3 = 0xc;
0x000025bc b 0x25e4 | goto label_7;
| label_1:
0x000025c0 addu a2, t0, v0 | a2 = t0 + v0;
0x000025c4 lw t0, 4(a2) | t0 = *((a2 + 1));
0x000025c8 slt t0, t0, a1 | t0 = (t0 < a1) ? 1 : 0;
0x000025cc beql t0, zero, 0x256c |
| } while (t0 == 0);
0x000025d0 lw v0, -0x7f90(gp) | v0 = *(gp);
0x000025d4 lw a2, 8(a2) | a2 = *((a2 + 2));
0x000025d8 slt a2, a2, a1 | a2 = (a2 < a1) ? 1 : 0;
0x000025dc addiu v1, v1, 1 | v1++;
| if (a2 == 0) {
0x000025e0 beqz a2, 0x2568 | goto label_0;
| }
| label_7:
0x000025e4 slt a2, v1, a0 | a2 = (v1 < a0) ? 1 : 0;
0x000025e8 mul t0, v1, a3 | __asm ("mul t0, v1, a3");
| if (a2 != 0) {
0x000025ec bnez a2, 0x25c0 | goto label_1;
| }
0x000025f0 move v0, zero | v0 = 0;
0x000025f4 b 0x2604 | goto label_2;
| label_3:
0x000025f8 sw v0, (v1) | *(v1) = v0;
| label_4:
0x000025fc addiu v0, zero, -1 | v0 = -1;
| label_5:
0x00002600 sw v0, 0x7204(s0) | *((s0 + 7297)) = v0;
| label_2:
0x00002604 move sp, fp |
0x00002608 lw ra, 0xcc(sp) | ra = *(var_cch);
0x0000260c lw fp, 0xc8(sp) | fp = *(var_c8h);
0x00002610 lw s4, 0xc4(sp) | s4 = *(var_c4h);
0x00002614 lw s3, 0xc0(sp) | s3 = *(var_c0h);
0x00002618 lw s2, 0xbc(sp) | s2 = *(var_bch);
0x0000261c lw s1, 0xb8(sp) | s1 = *(var_b8h);
0x00002620 lw s0, 0xb4(sp) | s0 = *(var_b4h);
0x00002624 addiu sp, sp, 0xd0 |
0x00002628 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x3748 */
| #include <stdint.h>
|
; (fcn) sym._dl_parse_relocation_information () | void dl_parse_relocation_information () {
0x00003748 lui gp, 2 |
0x0000374c addiu gp, gp, -0x4728 |
0x00003750 addu gp, gp, t9 | gp += t9;
0x00003754 addiu sp, sp, -0x68 |
0x00003758 sw s0, 0x40(sp) | *(var_40h) = s0;
0x0000375c lw s0, (a0) | s0 = *(a0);
0x00003760 sw fp, 0x60(sp) | *(var_60h) = fp;
0x00003764 srl a3, a3, 3 | a3 >>= 3;
0x00003768 lw v0, 0x80(s0) | v0 = *((s0 + 32));
0x0000376c lw v1, 0x7c(s0) | v1 = *((s0 + 31));
0x00003770 lw a0, 0x74(s0) | a0 = *((s0 + 29));
0x00003774 move fp, sp | fp = sp;
0x00003778 sw s3, 0x4c(sp) | *(var_4ch) = s3;
0x0000377c sw s2, 0x48(sp) | *(var_48h) = s2;
0x00003780 sw s1, 0x44(sp) | *(var_44h) = s1;
0x00003784 sw ra, 0x64(sp) | *(var_64h) = ra;
0x00003788 sw s7, 0x5c(sp) | *(var_5ch) = s7;
0x0000378c sw s6, 0x58(sp) | *(var_58h) = s6;
0x00003790 sw s5, 0x54(sp) | *(var_54h) = s5;
0x00003794 sw s4, 0x50(sp) | *(var_50h) = s4;
0x00003798 sw gp, 0x18(sp) | *(var_18h) = gp;
0x0000379c move s3, a1 | s3 = a1;
0x000037a0 sw a3, 0x28(fp) | *(var_28h) = a3;
0x000037a4 move s1, a2 | s1 = a2;
0x000037a8 sw v0, 0x2c(fp) | *(var_2ch) = v0;
0x000037ac sw v1, 0x30(fp) | *(var_30h) = v1;
0x000037b0 sw a0, 0x34(fp) | *(var_34h) = a0;
0x000037b4 move s2, zero | s2 = 0;
0x000037b8 b 0x3ac8 | goto label_1;
| label_0:
0x000037bc lw t0, (s1) | t0 = *(s1);
0x000037c0 lw t2, 4(s1) | t2 = *((s1 + 1));
0x000037c4 lw v1, 0x30(fp) | v1 = *(var_30h);
0x000037c8 addu s4, t0, v0 | s4 = t0 + v0;
0x000037cc lw v0, 0x2c(fp) | v0 = *(var_2ch);
0x000037d0 srl s6, t2, 8 | s6 = t2 >> 8;
0x000037d4 sll t1, s6, 4 | t1 = s6 << 4;
0x000037d8 addu t1, v0, t1 | t1 = v0 + t1;
0x000037dc andi s5, t2, 0xff | s5 = t2 & 0xff;
0x000037e0 lw t3, (t1) | t3 = *(t1);
0x000037e4 addiu v0, s5, -0x7e | v0 = s5 + -0x7e;
0x000037e8 sltiu v0, v0, 2 | v0 = (v0 < 2) ? 1 : 0;
0x000037ec addu s7, v1, t3 | s7 = v1 + t3;
| if (v0 == 0) {
0x000037f0 bnez v0, 0x37fc |
0x000037f4 move v0, zero | v0 = 0;
0x000037f8 b 0x388c |
| } else {
0x000037fc addiu v0, zero, 0x7f | v0 = 0x7f;
0x00003800 sw zero, 0x24(fp) | *(var_24h) = 0;
0x00003804 sw t1, 0x20(fp) | *(var_20h) = t1;
| if (s5 != v0) {
0x00003808 beq s5, v0, 0x3838 |
0x0000380c addiu v0, zero, 0x26 | v0 = 0x26;
0x00003810 addiu v0, zero, 0x27 | v0 = 0x27;
| if (s5 != v0) {
0x00003814 beq s5, v0, 0x3838 |
| if (s5 != v0) {
0x00003818 beql s5, v0, 0x3828 |
0x0000381c addiu a3, zero, 1 | a3 = 1;
0x00003820 xori a3, s5, 0x2f | a3 = s5 ^ 0x2f;
0x00003824 sltiu a3, a3, 1 | a3 = (a3 < 1) ? 1 : 0;
| }
0x00003828 addiu v0, zero, 2 | v0 = 2;
0x0000382c xori a0, s5, 0x7e | a0 = s5 ^ 0x7e;
| if (a0 == 0) {
0x00003830 movn v0, zero, a0 | v0 = 0;
| }
0x00003834 b 0x3840 |
| }
| } else {
0x00003838 addiu a3, zero, 1 | a3 = 1;
0x0000383c move v0, zero | v0 = 0;
| }
0x00003840 lw t9, -0x7f9c(gp) | t9 = sym._dl_find_hash;
0x00003844 addiu a0, fp, 0x20 | a0 = fp + 0x20;
0x00003848 sw a0, 0x10(sp) | *(var_10h) = a0;
0x0000384c sw t1, 0x38(fp) | *(var_38h) = t1;
0x00003850 move a0, s7 | a0 = s7;
0x00003854 move a1, s3 | a1 = s3;
0x00003858 move a2, s0 | a2 = s0;
0x0000385c or a3, a3, v0 | a3 |= v0;
0x00003860 bal 0x19d4 | sym_dl_find_hash ();
0x00003864 lw gp, 0x18(fp) | gp = *(var_18h);
0x00003868 lw t1, 0x38(fp) | t1 = *(var_38h);
| if (v0 != 0) {
0x0000386c bnez v0, 0x388c | goto label_2;
| }
0x00003870 lbu a0, 0xc(t1) | a0 = *((t1 + 12));
0x00003874 addiu v0, zero, 2 | v0 = 2;
0x00003878 srl a0, a0, 4 | a0 >>= 4;
| if (a0 == v0) {
0x0000387c beql a0, v0, 0x388c | goto label_2;
| }
0x00003880 move v0, zero | v0 = 0;
0x00003884 addiu v0, zero, 1 | v0 = 1;
0x00003888 b 0x3adc | goto label_3;
| }
| if (s6 != 0) {
| label_2:
0x0000388c beql s6, zero, 0x3894 |
0x00003890 lw v0, 4(t1) | v0 = *((t1 + 1));
| }
0x00003894 slti a0, s5, 0x28 | a0 = (s5 < 0x28) ? 1 : 0;
0x00003898 addiu a0, zero, 0x7e | a0 = 0x7e;
| if (a0 != 0) {
0x0000389c beqz a0, 0x38c8 |
0x000038a0 slti a0, s5, 0x26 | a0 = (s5 < 0x26) ? 1 : 0;
| if (a0 != 0) {
0x000038a4 beql a0, zero, 0x38e4 |
0x000038a8 lbu a0, 0xc(t1) | a0 = *((t1 + 12));
| if (s5 == 0) {
0x000038ac beql s5, zero, 0x3ac4 | goto label_4;
| }
0x000038b0 addiu s2, s2, 1 | s2++;
0x000038b4 addiu v0, zero, 3 | v0 = 3;
0x000038b8 lw v0, -0x7f90(gp) | v0 = *(gp);
| if (s5 == v0) {
0x000038bc bnel s5, v0, 0x3a48 | goto label_5;
| }
0x000038c0 lw v0, (s4) | v0 = *(s4);
0x000038c4 b 0x39c4 |
| } else {
0x000038c8 addiu a0, zero, 0x7f | a0 = 0x7f;
| if (s5 == a0) {
0x000038cc beq s5, a0, 0x3a10 | goto label_6;
| }
0x000038d0 addiu a0, zero, 0x2f | a0 = 0x2f;
| if (s5 == a0) {
0x000038d4 beq s5, a0, 0x3a08 | goto label_7;
| }
0x000038d8 lw v0, -0x7f90(gp) | v0 = *(gp);
| if (s5 == a0) {
0x000038dc bnel s5, a0, 0x3a48 | goto label_5;
| }
0x000038e0 lbu a0, 0xc(t1) | a0 = *((t1 + 12));
| }
0x000038e4 sw t1, 0x20(fp) | *(var_20h) = t1;
0x000038e8 sw zero, 0x24(fp) | *(var_24h) = 0;
0x000038ec srl a0, a0, 4 | a0 >>= 4;
0x000038f0 move s6, s0 | s6 = s0;
| if (a0 != 0) {
0x000038f4 beqz a0, 0x3940 |
0x000038f8 addiu v0, zero, 0x26 | v0 = 0x26;
0x000038fc addiu v0, zero, 0x27 | v0 = 0x27;
| if (s5 != v0) {
0x00003900 beq s5, v0, 0x3914 |
0x00003904 xori a3, s5, 0x2f | a3 = s5 ^ 0x2f;
| if (s5 != v0) {
0x00003908 beq s5, v0, 0x3914 |
0x0000390c sltiu a3, a3, 1 | a3 = (a3 < 1) ? 1 : 0;
0x00003910 b 0x3918 |
| }
| } else {
0x00003914 addiu a3, zero, 1 | a3 = 1;
| }
0x00003918 lw t9, -0x7f9c(gp) | t9 = sym._dl_find_hash;
0x0000391c addiu v0, fp, 0x20 | v0 = fp + 0x20;
0x00003920 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00003924 move a0, s7 | a0 = s7;
0x00003928 move a1, s3 | a1 = s3;
0x0000392c move a2, s0 | a2 = s0;
0x00003930 bal 0x19d4 | sym_dl_find_hash ();
0x00003934 lw s6, 0x24(fp) | s6 = *(var_24h);
0x00003938 lw gp, 0x18(fp) | gp = *(var_18h);
| if (s6 == 0) {
0x0000393c movz s6, s0, s6 | s6 = s0;
| goto label_8;
| }
| }
| label_8:
0x00003940 addiu v1, s5, -0x26 | v1 = s5 + -0x26;
0x00003944 sltiu a0, v1, 0xb | a0 = (v1 < 0xb) ? 1 : 0;
0x00003948 lui a0, 0x5000 | a0 = 0x50000000;
| if (a0 == 0) {
0x0000394c beqz a0, 0x3ac0 | goto label_9;
| }
0x00003950 sllv a0, a0, v1 | a0 <<= v1;
0x00003954 lui a0, 0xa000 | a0 = 0xa0000000;
| if (a0 >= 0) {
0x00003958 bltz a0, 0x3984 |
0x0000395c sllv a0, a0, v1 | a0 <<= v1;
0x00003960 lui a0, 0x60 | a0 = 0x600000;
| if (a0 >= 0) {
0x00003964 bltz a0, 0x397c |
0x00003968 sllv v1, a0, v1 | v1 = a0 << v1;
| if (v1 < 0) {
0x0000396c bltzl v1, 0x3990 | goto label_10;
| }
0x00003970 lw a0, 0x28(s6) | a0 = *((s6 + 10));
0x00003974 addiu s2, s2, 1 | s2++;
0x00003978 b 0x3ac4 | goto label_4;
| }
0x0000397c lw v0, 0x2c(s6) | v0 = *((s6 + 11));
0x00003980 b 0x3a08 | goto label_7;
| }
0x00003984 lw v1, (s4) | v1 = *(s4);
0x00003988 addiu v1, v1, -0x8000 | v1 += -0x8000;
0x0000398c b 0x3a04 | goto label_11;
| label_10:
0x00003990 addiu v1, zero, -1 | v1 = -1;
0x00003994 lw v1, 0x28(s6) | v1 = *((s6 + 10));
| if (a0 != v1) {
0x00003998 bnel a0, v1, 0x39b8 |
0x0000399c lw t9, -0x7f58(gp) | t9 = *(gp);
0x000039a0 sw v0, 0x38(fp) | *(var_38h) = v0;
0x000039a4 move a0, s6 | a0 = s6;
0x000039a8 bal 0x3614 | fcn_00003614 ();
0x000039ac lw gp, 0x18(fp) | gp = *(var_18h);
0x000039b0 lw v0, 0x38(fp) | v0 = *(var_38h);
0x000039b4 lw v1, 0x28(s6) | v1 = *((s6 + 10));
| }
0x000039b8 lw a0, (s4) | a0 = *(s4);
0x000039bc addiu v1, v1, -0x7000 | v1 += -0x7000;
0x000039c0 b 0x39e4 | goto label_12;
| }
| if (s6 != 0) {
0x000039c4 beql s6, zero, 0x3a04 |
0x000039c8 lw v1, (s0) | v1 = *(s0);
0x000039cc lw v1, 0xf4(s0) | v1 = *((s0 + 61));
0x000039d0 sltu a0, s6, v1 | a0 = (s6 < v1) ? 1 : 0;
| if (a0 != 0) {
0x000039d4 beql a0, zero, 0x39ec |
0x000039d8 lw a0, 0xf8(s0) | a0 = *((s0 + 62));
0x000039dc lw a0, (s0) | a0 = *(s0);
0x000039e0 lw v1, 4(t1) | v1 = *((t1 + 1));
| label_12:
0x000039e4 addu v1, a0, v1 | v1 = a0 + v1;
0x000039e8 b 0x3a04 |
| } else {
0x000039ec subu v1, s6, v1 | __asm ("subu v1, s6, v1");
0x000039f0 addu v1, v1, a0 | v1 += a0;
0x000039f4 lw a0, 0x34(fp) | a0 = *(var_34h);
0x000039f8 sll v1, v1, 2 | v1 <<= 2;
0x000039fc addu v1, a0, v1 | v1 = a0 + v1;
0x00003a00 lw v1, (v1) | v1 = *(v1);
| }
| }
| label_11:
0x00003a04 addu v0, v0, v1 | v0 += v1;
| label_7:
0x00003a08 sw v0, (s4) | *(s4) = v0;
0x00003a0c b 0x3ac0 | goto label_9;
| if (v0 == 0) {
| label_6:
0x00003a10 beql v0, zero, 0x3ac4 | goto label_4;
| }
0x00003a14 addiu s2, s2, 1 | s2++;
0x00003a18 lw v1, 8(t1) | v1 = *((t1 + 2));
0x00003a1c addiu t0, s4, -1 | t0 = s4 + -1;
0x00003a20 addiu v0, v0, -1 | v0 += -1;
0x00003a24 b 0x3a38 |
| while (v1 != 0) {
0x00003a28 lbu a0, (v0) | a0 = *(v0);
0x00003a2c addiu t0, t0, 1 | t0++;
0x00003a30 addiu v1, v1, -1 | v1 += -1;
0x00003a34 sb a0, (t0) | *(t0) = a0;
0x00003a38 addiu v0, v0, 1 | v0++;
0x00003a3c bnez v1, 0x3a28 |
| }
0x00003a40 addiu s2, s2, 1 | s2++;
0x00003a44 b 0x3ac4 | goto label_4;
| label_5:
0x00003a48 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00003a4c lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00003a50 lw a2, (v0) | a2 = *(v0);
0x00003a54 addiu a0, zero, 2 | a0 = 2;
0x00003a58 addiu a1, a1, 0x6b90 | a1 += str._n_s:_;
0x00003a5c bal 0x1ec4 | sym_dl_dprintf ()
0x00003a60 lw gp, 0x18(fp) | gp = *(var_18h);
| if (s6 != 0) {
0x00003a64 beqz s6, 0x3a84 |
0x00003a68 lw v0, -0x7fe4(gp) | v0 = *((gp - 8185));
0x00003a6c lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00003a70 addiu a0, zero, 2 | a0 = 2;
0x00003a74 addiu a1, v0, 0x6b98 | a1 = v0 + str.symbol__s:_;
0x00003a78 move a2, s7 | a2 = s7;
0x00003a7c bal 0x1ec4 | sym_dl_dprintf ()
0x00003a80 lw gp, 0x18(fp) | gp = *(var_18h);
| }
0x00003a84 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00003a88 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x00003a8c lw a3, 4(s0) | a3 = *((s0 + 1));
0x00003a90 addiu a0, zero, 2 | a0 = 2;
0x00003a94 addiu a1, a1, 0x6ba8 | a1 += str.cant_handle_reloc_type__x_in_lib__s_n;
0x00003a98 move a2, s5 | a2 = s5;
0x00003a9c bal 0x1ec4 | sym_dl_dprintf ()
0x00003aa0 lw gp, 0x18(fp) | gp = *(var_18h);
0x00003aa4 addiu a0, zero, 1 | a0 = 1;
0x00003aa8 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00003aac syscall | __asm ("syscall");
| if (a3 != 0) {
0x00003ab0 beql a3, zero, 0x3ac4 |
0x00003ab4 addiu s2, s2, 1 | s2++;
0x00003ab8 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x00003abc sw v0, (v1) | *(v1) = v0;
| label_9:
0x00003ac0 addiu s2, s2, 1 | s2++;
| }
| label_4:
0x00003ac4 addiu s1, s1, 8 | s1 += 8;
| label_1:
0x00003ac8 lw v1, 0x28(fp) | v1 = *(var_28h);
0x00003acc sltu v0, s2, v1 | v0 = (s2 < v1) ? 1 : 0;
0x00003ad0 lw v0, (s0) | v0 = *(s0);
| if (v0 == 0) {
0x00003ad4 bnel v0, zero, 0x37bc | goto label_0;
| }
0x00003ad8 move v0, zero | v0 = 0;
| label_3:
0x00003adc move sp, fp |
0x00003ae0 lw ra, 0x64(sp) | ra = *(var_64h);
0x00003ae4 lw fp, 0x60(sp) | fp = *(var_60h);
0x00003ae8 lw s7, 0x5c(sp) | s7 = *(var_5ch);
0x00003aec lw s6, 0x58(sp) | s6 = *(var_58h);
0x00003af0 lw s5, 0x54(sp) | s5 = *(var_54h);
0x00003af4 lw s4, 0x50(sp) | s4 = *(var_50h);
0x00003af8 lw s3, 0x4c(sp) | s3 = *(var_4ch);
0x00003afc lw s2, 0x48(sp) | s2 = *(var_48h);
0x00003b00 lw s1, 0x44(sp) | s1 = *(var_44h);
0x00003b04 lw s0, 0x40(sp) | s0 = *(var_40h);
0x00003b08 addiu sp, sp, 0x68 |
0x00003b0c jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/ld-uClibc-0.9.33.2.so @ 0x22c8 */
| #include <stdint.h>
|
; (fcn) sym._dl_protect_relro () | void dl_protect_relro () {
0x000022c8 lui gp, 2 |
0x000022cc addiu gp, gp, -0x32a8 |
0x000022d0 addu gp, gp, t9 | gp += t9;
0x000022d4 lw v0, (a0) | v0 = *(a0);
0x000022d8 lw v1, 0x10c(a0) | v1 = *(a0);
0x000022dc addiu sp, sp, -0x28 |
0x000022e0 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x000022e4 addu v1, v1, v0 | v1 += v0;
0x000022e8 lw v0, -0x7f98(gp) | v0 = *(gp);
0x000022ec move s0, a0 | s0 = a0;
0x000022f0 lw a1, 0x110(s0) | a1 = *(s0);
0x000022f4 lw v0, (v0) | v0 = *(v0);
0x000022f8 sw fp, 0x20(sp) | *(var_20h) = fp;
0x000022fc addu a1, v1, a1 | a1 = v1 + a1;
0x00002300 negu v0, v0 | __asm ("negu v0, v0");
0x00002304 move fp, sp | fp = sp;
0x00002308 and a0, v0, v1 | a0 = v0 & v1;
0x0000230c and a1, a1, v0 | a1 &= v0;
0x00002310 sw ra, 0x24(sp) | *(var_24h) = ra;
0x00002314 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00002318 addiu a2, zero, 1 | a2 = 1;
| if (a0 != a1) {
0x0000231c beq a0, a1, 0x2378 |
0x00002320 subu a1, a1, a0 | __asm ("subu a1, a1, a0");
0x00002324 addiu v0, zero, 0x101d | v0 = 0x101d;
0x00002328 syscall | __asm ("syscall");
0x0000232c lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 != 0) {
0x00002330 beqz a3, 0x233c |
0x00002334 sw v0, (v1) | *(v1) = v0;
0x00002338 b 0x2344 |
| if (v0 >= 0) {
| } else {
0x0000233c bgezl v0, 0x237c | goto label_0;
| }
0x00002340 move sp, fp |
| }
0x00002344 lw a1, -0x7fe4(gp) | a1 = *((gp - 8185));
0x00002348 lw t9, -0x7f94(gp) | t9 = sym._dl_dprintf
0x0000234c lw a2, 4(s0) | a2 = *((s0 + 1));
0x00002350 addiu a0, zero, 2 | a0 = 2;
0x00002354 addiu a1, a1, 0x69e4 | a1 += str._s:_cannot_apply_additional_memory_protection_after_relocation;
0x00002358 bal 0x1ec4 | sym_dl_dprintf ()
0x0000235c lw gp, 0x10(fp) | gp = *(var_10h);
0x00002360 move a0, zero | a0 = 0;
0x00002364 addiu v0, zero, 0xfa1 | v0 = 0xfa1;
0x00002368 syscall | __asm ("syscall");
0x0000236c lw v1, -0x7fdc(gp) | v1 = *(gp);
| if (a3 == 0) {
0x00002370 beqz a3, 0x2378 | goto label_1;
| }
0x00002374 sw v0, (v1) | *(v1) = v0;
| }
| label_1:
0x00002378 move sp, fp |
| label_0:
0x0000237c lw ra, 0x24(sp) | ra = *(var_24h);
0x00002380 lw fp, 0x20(sp) | fp = *(var_20h);
0x00002384 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00002388 addiu sp, sp, 0x28 |
0x0000238c jr ra | return v0;
| }
[*] Function printf used 53 times ld-uClibc-0.9.33.2.so