[*] Binary protection state of udevadm
Full RELRO Canary found NX disabled PIE enabled RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of udevadm
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x296fc */
| #include <stdint.h>
|
; (fcn) fcn.000296fc () | void fcn_000296fc () {
0x000296fc lui gp, 0xd |
0x00029700 addiu gp, gp, 0x5b84 |
0x00029704 addu gp, gp, t9 | gp += t9;
0x00029708 addiu sp, sp, -0x38 |
0x0002970c lw v0, -0x7bc8(gp) | v0 = *((gp - 7922));
0x00029710 sw s3, 0x30(sp) | *(var_30h) = s3;
0x00029714 sw s1, 0x28(sp) | *(var_28h) = s1;
0x00029718 sw s0, 0x24(sp) | *(var_24h) = s0;
0x0002971c lw s1, -0x7f8c(gp) | s1 = *((gp - 8163));
0x00029720 lw s0, -0x7f8c(gp) | s0 = *((gp - 8163));
0x00029724 lw s3, -0x7fcc(gp) | s3 = *(gp);
0x00029728 sw gp, 0x18(sp) | *(var_18h) = gp;
0x0002972c sw s2, 0x2c(sp) | *(var_2ch) = s2;
0x00029730 sw ra, 0x34(sp) | *(var_34h) = ra;
0x00029734 lw s2, -0x6da4(gp) | s2 = *((gp - 7017));
0x00029738 addiu s0, s0, 0x6bf4 | s0 += 0x6bf4;
0x0002973c addiu s1, s1, 0x6c18 | s1 += 0x6c18;
| /* str.____14s___s_n */
0x00029740 addiu s3, s3, -0x4744 | s3 += -0x4744;
0x00029744 b 0x2974c |
| while (s0 == s1) {
0x00029748 addiu s0, s0, 4 | s0 += 4;
0x0002974c lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
| if (v0 != 0) {
0x00029750 beqz v0, 0x29774 |
0x00029754 lw a3, (v0) | a3 = *(v0);
0x00029758 lw v0, 8(v0) | v0 = *((v0 + 2));
0x0002975c lw a0, (s2) | a0 = *(s2);
0x00029760 move a2, s3 | a2 = s3;
0x00029764 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00029768 addiu a1, zero, 1 | a1 = 1;
0x0002976c jalr t9 | t9 ();
0x00029770 lw gp, 0x18(sp) | gp = *(var_18h);
| }
0x00029774 lw v0, (s0) | v0 = *(s0);
0x00029778 bnel s0, s1, 0x29748 |
| }
0x0002977c lw ra, 0x34(sp) | ra = *(var_34h);
0x00029780 lw s3, 0x30(sp) | s3 = *(var_30h);
0x00029784 lw s2, 0x2c(sp) | s2 = *(var_2ch);
0x00029788 lw s1, 0x28(sp) | s1 = *(var_28h);
0x0002978c lw s0, 0x24(sp) | s0 = *(var_24h);
0x00029790 addiu sp, sp, 0x38 |
0x00029794 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x87e64 */
| #include <stdint.h>
|
; (fcn) fcn.00087e64 () | void fcn_00087e64 () {
0x00087e64 lui gp, 7 |
0x00087e68 addiu gp, gp, 0x741c |
0x00087e6c addu gp, gp, t9 | gp += t9;
0x00087e70 addiu sp, sp, -0x58 |
0x00087e74 lw v0, -0x6de8(gp) | v0 = *((gp - 7034));
0x00087e78 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00087e7c sw ra, 0x54(sp) | *(var_54h) = ra;
0x00087e80 sw fp, 0x50(sp) | *(var_50h) = fp;
0x00087e84 sw s7, 0x4c(sp) | *(var_4ch) = s7;
0x00087e88 sw s6, 0x48(sp) | *(var_48h) = s6;
0x00087e8c sw s5, 0x44(sp) | *(var_44h) = s5;
0x00087e90 sw s4, 0x40(sp) | *(var_40h) = s4;
0x00087e94 sw s3, 0x3c(sp) | *(var_3ch) = s3;
0x00087e98 sw s2, 0x38(sp) | *(var_38h) = s2;
0x00087e9c sw s1, 0x34(sp) | *(var_34h) = s1;
0x00087ea0 sw s0, 0x30(sp) | *(var_30h) = s0;
0x00087ea4 lw v1, (v0) | v1 = *(v0);
0x00087ea8 sw v0, 0x24(sp) | *(var_24h) = v0;
0x00087eac lb v0, (a1) | v0 = *(a1);
0x00087eb0 sw v1, 0x2c(sp) | *(var_2ch) = v1;
0x00087eb4 lw s7, -0x7fd8(gp) | s7 = *(gp);
| if (v0 == 0) {
0x00087eb8 beqz v0, 0x87fd4 | goto label_2;
| }
0x00087ebc lw s4, -0x7fd8(gp) | s4 = *(gp);
0x00087ec0 lw s6, -0x7fd8(gp) | s6 = *(gp);
0x00087ec4 lw s5, -0x7fd8(gp) | s5 = *(gp);
| /* esilref: '/>
' */
0x00087ec8 addiu v0, s7, -0x25c8 | v0 = s7 + -0x25c8;
0x00087ecc move s0, a1 | s0 = a1;
0x00087ed0 move s1, a0 | s1 = a0;
0x00087ed4 move s3, a2 | s3 = a2;
0x00087ed8 move s2, a3 | s2 = a3;
0x00087edc addiu fp, sp, 0x28 | fp = sp + 0x28;
| /* str.____arg_type__.s_ */
0x00087ee0 addiu s4, s4, -0x2578 | s4 += -0x2578;
| /* str._name__s_ */
0x00087ee4 addiu s6, s6, -0x2564 | s6 += -0x2564;
0x00087ee8 sw v0, 0x20(sp) | *(var_20h) = v0;
| /* str._direction__s____n */
0x00087eec addiu s5, s5, -0x2558 | s5 += -0x2558;
0x00087ef0 b 0x87f24 |
| while (v0 == 0) {
0x00087ef4 lw a0, (s1) | a0 = *(s1);
| if (s2 == 0) {
0x00087ef8 beqz s2, 0x87fa8 | goto label_3;
| }
| label_0:
0x00087efc lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00087f00 move a3, s2 | a3 = s2;
0x00087f04 move a2, s5 | a2 = s5;
0x00087f08 addiu a1, zero, 1 | a1 = 1;
0x00087f0c jalr t9 | t9 ();
0x00087f10 lw v0, 0x28(sp) | v0 = *(var_28h_2);
0x00087f14 addu s0, s0, v0 | s0 += v0;
0x00087f18 lb v0, (s0) | v0 = *(s0);
0x00087f1c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x00087f20 beqz v0, 0x87fd4 | goto label_2;
| }
| label_1:
0x00087f24 lw t9, -0x78e8(gp) | t9 = sym.signature_element_length;
0x00087f28 move a1, fp | a1 = fp;
0x00087f2c move a0, s0 | a0 = s0;
0x00087f30 jalr t9 | t9 ();
0x00087f34 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x00087f38 bltz v0, 0x87fd8 | goto label_4;
| }
0x00087f3c lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00087f40 lw a3, 0x28(sp) | a3 = *(var_28h_2);
0x00087f44 lw a0, (s1) | a0 = *(s1);
0x00087f48 move a2, s4 | a2 = s4;
0x00087f4c sw s0, 0x10(sp) | *(var_10h) = s0;
0x00087f50 addiu a1, zero, 1 | a1 = 1;
0x00087f54 jalr t9 | t9 ();
0x00087f58 lw a3, (s3) | a3 = *(s3);
0x00087f5c lb v0, (a3) | v0 = *(a3);
0x00087f60 lw gp, 0x18(sp) | gp = *(var_18h);
0x00087f64 beqz v0, 0x87ef4 |
| }
0x00087f68 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00087f6c lw a0, (s1) | a0 = *(s1);
0x00087f70 move a2, s6 | a2 = s6;
0x00087f74 addiu a1, zero, 1 | a1 = 1;
0x00087f78 jalr t9 | t9 ();
0x00087f7c lw gp, 0x18(sp) | gp = *(var_18h);
0x00087f80 lw s7, (s3) | s7 = *(s3);
0x00087f84 lw t9, -0x6f38(gp) | t9 = sym.imp.strlen;
0x00087f88 move a0, s7 | a0 = s7;
0x00087f8c jalr t9 | t9 ();
0x00087f90 addiu v0, v0, 1 | v0++;
0x00087f94 addu v1, s7, v0 | v1 = s7 + v0;
0x00087f98 lw gp, 0x18(sp) | gp = *(var_18h);
0x00087f9c sw v1, (s3) | *(s3) = v1;
0x00087fa0 lw a0, (s1) | a0 = *(s1);
| if (s2 != 0) {
0x00087fa4 bnez s2, 0x87efc | goto label_0;
| }
| label_3:
0x00087fa8 lw t9, -0x6e8c(gp) | t9 = sym.imp.fwrite;
0x00087fac move a3, a0 | a3 = a0;
0x00087fb0 lw a0, 0x20(sp) | a0 = *(var_20h);
0x00087fb4 addiu a2, zero, 3 | a2 = 3;
0x00087fb8 addiu a1, zero, 1 | a1 = 1;
0x00087fbc jalr t9 | t9 ();
0x00087fc0 lw v0, 0x28(sp) | v0 = *(var_28h_2);
0x00087fc4 addu s0, s0, v0 | s0 += v0;
0x00087fc8 lb v0, (s0) | v0 = *(s0);
0x00087fcc lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00087fd0 bnez v0, 0x87f24 | goto label_1;
| }
| label_2:
0x00087fd4 move v0, zero | v0 = 0;
| label_4:
0x00087fd8 lw v1, 0x24(sp) | v1 = *(var_24h);
0x00087fdc lw a0, 0x2c(sp) | a0 = *(var_2ch);
0x00087fe0 lw v1, (v1) | v1 = *(v1);
0x00087fe4 lw ra, 0x54(sp) | ra = *(var_54h);
| if (a0 == v1) {
0x00087fe8 bne a0, v1, 0x88018 |
0x00087fec lw fp, 0x50(sp) | fp = *(var_50h);
0x00087ff0 lw s7, 0x4c(sp) | s7 = *(var_4ch);
0x00087ff4 lw s6, 0x48(sp) | s6 = *(var_48h);
0x00087ff8 lw s5, 0x44(sp) | s5 = *(var_44h);
0x00087ffc lw s4, 0x40(sp) | s4 = *(var_40h);
0x00088000 lw s3, 0x3c(sp) | s3 = *(var_3ch);
0x00088004 lw s2, 0x38(sp) | s2 = *(var_38h);
0x00088008 lw s1, 0x34(sp) | s1 = *(var_34h);
0x0008800c lw s0, 0x30(sp) | s0 = *(var_30h);
0x00088010 addiu sp, sp, 0x58 |
0x00088014 jr ra | return v1;
| }
0x00088018 lw t9, -0x6e2c(gp) | t9 = sym.imp.__stack_chk_fail;
0x0008801c jalr t9 | t9 ();
0x00088020 nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x61fc8 */
| #include <stdint.h>
|
; (fcn) sym.device_update_db () | void device_update_db () {
0x00061fc8 lui gp, 0xa |
0x00061fcc addiu gp, gp, -0x2d48 |
0x00061fd0 addu gp, gp, t9 | gp += t9;
0x00061fd4 addiu sp, sp, -0x88 |
0x00061fd8 sw s2, 0x68(sp) | *(var_68h) = s2;
0x00061fdc lw s2, -0x6de8(gp) | s2 = *((gp - 7034));
0x00061fe0 sw fp, 0x80(sp) | *(var_80h) = fp;
0x00061fe4 sw ra, 0x84(sp) | *(var_84h) = ra;
0x00061fe8 sw s7, 0x7c(sp) | *(var_7ch) = s7;
0x00061fec sw s6, 0x78(sp) | *(var_78h) = s6;
0x00061ff0 sw s5, 0x74(sp) | *(var_74h) = s5;
0x00061ff4 sw s4, 0x70(sp) | *(var_70h) = s4;
0x00061ff8 sw s3, 0x6c(sp) | *(var_6ch) = s3;
0x00061ffc sw s1, 0x64(sp) | *(var_64h) = s1;
0x00062000 sw s0, 0x60(sp) | *(var_60h) = s0;
0x00062004 sw gp, 0x38(sp) | *(var_38h) = gp;
0x00062008 move fp, sp | fp = sp;
0x0006200c lw v0, (s2) | v0 = *(s2);
0x00062010 sw zero, 0x44(fp) | *(arg_44h) = 0;
0x00062014 sw zero, 0x48(fp) | *(arg_48h) = 0;
0x00062018 sw v0, 0x5c(fp) | *(arg_5ch) = v0;
0x0006201c lw t9, -0x7de8(gp) | t9 = sym.internal_hashmap_size;
| if (a0 == 0) {
0x00062020 beqz a0, 0x62564 | goto label_13;
| }
0x00062024 move s0, a0 | s0 = a0;
0x00062028 lw a0, 0x58(a0) | a0 = *((a0 + 22));
0x0006202c jalr t9 | t9 ();
0x00062030 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 != 0) {
0x00062034 bnez v0, 0x620f4 | goto label_14;
| }
0x00062038 lw v0, 0x78(s0) | v0 = *((s0 + 30));
0x0006203c lw t9, -0x7de8(gp) | t9 = sym.internal_hashmap_size;
| if (v0 != 0) {
0x00062040 bnez v0, 0x620f4 | goto label_14;
| }
0x00062044 lw a0, 0x28(s0) | a0 = *((s0 + 10));
0x00062048 jalr t9 | t9 ();
0x0006204c lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 != 0) {
0x00062050 bnez v0, 0x620f4 | goto label_14;
| }
0x00062054 lw t9, -0x7de8(gp) | t9 = sym.internal_hashmap_size;
0x00062058 lw a0, 0x3c(s0) | a0 = *((s0 + 15));
0x0006205c jalr t9 | t9 ();
0x00062060 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 != 0) {
0x00062064 bnez v0, 0x620f4 | goto label_14;
| }
0x00062068 lw t9, -0x7c94(gp) | t9 = sym.device_get_id_filename;
0x0006206c lw s3, 4(s0) | s3 = *((s0 + 1));
0x00062070 addiu a1, fp, 0x40 | a1 = fp + 0x40;
0x00062074 move a0, s0 | a0 = s0;
0x00062078 bal 0x68db4 | sym_device_get_id_filename ();
0x0006207c nor s3, zero, s3 | __asm ("nor s3, zero, s3");
0x00062080 srl s3, s3, 0x1f | s3 >>= 0x1f;
0x00062084 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062088 move s4, v0 | s4 = v0;
| if (v0 >= 0) {
0x0006208c bgez v0, 0x62114 | goto label_15;
| }
| do {
| label_0:
0x00062090 lw t9, -0x6dc8(gp) | t9 = *((gp - 7026));
0x00062094 lw a0, 0x48(fp) | a0 = *(arg_48h);
0x00062098 jalr t9 | t9 ();
0x0006209c lw gp, 0x38(fp) | gp = *(var_38h);
0x000620a0 lw t9, -0x7bf8(gp) | t9 = sym.safe_fclose;
0x000620a4 lw a0, 0x44(fp) | a0 = *(arg_44h);
0x000620a8 jalr t9 | t9 ();
0x000620ac lw a0, 0x5c(fp) | a0 = *(arg_5ch);
0x000620b0 lw v1, (s2) | v1 = *(s2);
0x000620b4 lw gp, 0x38(fp) | gp = *(var_38h);
0x000620b8 move v0, s4 | v0 = s4;
| if (a0 != v1) {
0x000620bc bne a0, v1, 0x626bc | goto label_16;
| }
0x000620c0 move sp, fp |
0x000620c4 lw ra, 0x84(sp) | ra = *(var_84h);
0x000620c8 lw fp, 0x80(sp) | fp = *(var_80h);
0x000620cc lw s7, 0x7c(sp) | s7 = *(var_7ch);
0x000620d0 lw s6, 0x78(sp) | s6 = *(var_78h);
0x000620d4 lw s5, 0x74(sp) | s5 = *(var_74h);
0x000620d8 lw s4, 0x70(sp) | s4 = *(var_70h);
0x000620dc lw s3, 0x6c(sp) | s3 = *(var_6ch);
0x000620e0 lw s2, 0x68(sp) | s2 = *(var_68h);
0x000620e4 lw s1, 0x64(sp) | s1 = *(var_64h);
0x000620e8 lw s0, 0x60(sp) | s0 = *(var_60h);
0x000620ec addiu sp, sp, 0x88 |
0x000620f0 jr ra | return v1;
| label_14:
0x000620f4 lw t9, -0x7c94(gp) | t9 = sym.device_get_id_filename;
0x000620f8 addiu a1, fp, 0x40 | a1 = fp + 0x40;
0x000620fc move a0, s0 | a0 = s0;
0x00062100 bal 0x68db4 | sym_device_get_id_filename ();
0x00062104 addiu s3, zero, 1 | s3 = 1;
0x00062108 lw gp, 0x38(fp) | gp = *(var_38h);
0x0006210c move s4, v0 | s4 = v0;
0x00062110 bltz v0, 0x62090 |
| } while (v0 < 0);
| label_15:
0x00062114 lw s4, 0x40(fp) | s4 = *(arg_40h);
0x00062118 lw t9, -0x6f38(gp) | t9 = sym.imp.strlen;
| if (s4 == 0) {
0x0006211c beqz s4, 0x625c4 | goto label_17;
| }
0x00062120 move a0, s4 | a0 = s4;
0x00062124 jalr t9 | t9 ();
0x00062128 lui a0, 0x40 | a0 = 0x400000;
0x0006212c addiu v1, v0, 0x10 | v1 = v0 + 0x10;
0x00062130 addiu a0, a0, 1 | a0++;
0x00062134 sltu v1, v1, a0 | v1 = (v1 < a0) ? 1 : 0;
0x00062138 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v1 == 0) {
0x0006213c beqz v1, 0x62510 | goto label_18;
| }
0x00062140 lw a0, -0x7fcc(gp) | a0 = *(gp);
0x00062144 addiu v0, v0, 0x17 | v0 += 0x17;
0x00062148 srl v0, v0, 3 | v0 >>= 3;
| /* str._run_udev_data_ */
0x0006214c addiu v1, a0, 0x71a0 | v1 = a0 + 0x71a0;
0x00062150 sll v0, v0, 3 | v0 <<= 3;
0x00062154 subu sp, sp, v0 |
0x00062158 addiu s1, sp, 0x38 | s1 = sp + 0x38;
0x0006215c lw a2, 0x71a0(a0) | a2 = *((a0 + 7272));
0x00062160 lw a1, 4(v1) | a1 = *((v1 + 1));
0x00062164 lw a0, 8(v1) | a0 = *((v1 + 2));
0x00062168 lw v0, 0xc(v1) | v0 = *((v1 + 3));
0x0006216c lw t9, -0x6e28(gp) | t9 = sym.imp.stpcpy;
0x00062170 sw a1, 4(s1) | *((s1 + 1)) = a1;
0x00062174 sw a0, 8(s1) | *((s1 + 2)) = a0;
0x00062178 sw a2, (s1) | *(s1) = a2;
0x0006217c sw v0, 0xc(s1) | *((s1 + 3)) = v0;
0x00062180 move a1, s4 | a1 = s4;
0x00062184 addiu a0, s1, 0xf | a0 = s1 + 0xf;
0x00062188 jalr t9 | t9 ();
0x0006218c lw gp, 0x38(fp) | gp = *(var_38h);
| label_8:
0x00062190 sb zero, (v0) | *(v0) = 0;
| if (s3 == 0) {
0x00062194 bnez s3, 0x621b8 |
0x00062198 lw v1, 0x88(s0) | v1 = *((s0 + 34));
0x0006219c lw v0, 0x8c(s0) | v0 = *((s0 + 35));
0x000621a0 addiu a0, zero, -0x1000 | a0 = -0x1000;
0x000621a4 ext v1, v1, 8, 0xc | __asm ("ext v1, v1, 8, 0xc");
0x000621a8 and v0, v0, a0 | v0 &= a0;
0x000621ac or v0, v0, v1 | v0 |= v1;
| if (v0 == 0) {
0x000621b0 beql v0, zero, 0x623e0 | goto label_19;
| }
0x000621b4 lw s4, 0x7c(s0) | s4 = *((s0 + 31));
| }
0x000621b8 lw t9, -0x7c78(gp) | t9 = sym.mkdir_parents;
| label_1:
0x000621bc addiu a1, zero, 0x1ed | a1 = 0x1ed;
0x000621c0 move a0, s1 | a0 = s1;
0x000621c4 jalr t9 | t9 ();
0x000621c8 move s4, v0 | s4 = v0;
0x000621cc lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 < 0) {
0x000621d0 bltz v0, 0x62090 | goto label_0;
| }
0x000621d4 lw t9, -0x7670(gp) | t9 = sym.fopen_temporary;
0x000621d8 addiu a2, fp, 0x48 | a2 = fp + 0x48;
0x000621dc addiu a1, fp, 0x44 | a1 = fp + 0x44;
0x000621e0 move a0, s1 | a0 = s1;
0x000621e4 jalr t9 | t9 ();
0x000621e8 move s4, v0 | s4 = v0;
0x000621ec lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 < 0) {
0x000621f0 bltz v0, 0x62090 | goto label_0;
| }
0x000621f4 lbu v0, 0xe3(s0) | v0 = *((s0 + 227));
0x000621f8 lw a0, 0x44(fp) | a0 = *(arg_44h);
0x000621fc andi v0, v0, 4 | v0 &= 4;
0x00062200 lw t9, -0x6fe8(gp) | t9 = sym.imp.fileno;
| if (v0 == 0) {
0x00062204 beqz v0, 0x62420 | goto label_20;
| }
0x00062208 jalr t9 | t9 ();
0x0006220c nop |
0x00062210 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062214 addiu a1, zero, 0x3a4 | a1 = aav.0x000003a4;
0x00062218 lw t9, -0x7174(gp) | t9 = sym.imp.fchmod;
0x0006221c move a0, v0 | a0 = v0;
0x00062220 jalr t9 | t9 ();
0x00062224 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 < 0) {
0x00062228 bltz v0, 0x62444 | goto label_21;
| }
| label_2:
0x0006222c lw t9, -0x766c(gp) | t9 = sym.fflush_and_check;
| if (s3 == 0) {
0x00062230 beqz s3, 0x62320 | goto label_22;
| }
0x00062234 lw v1, 0x88(s0) | v1 = *((s0 + 34));
0x00062238 lw v0, 0x8c(s0) | v0 = *((s0 + 35));
0x0006223c addiu a0, zero, -0x1000 | a0 = -0x1000;
0x00062240 ext v1, v1, 8, 0xc | __asm ("ext v1, v1, 8, 0xc");
0x00062244 and v0, v0, a0 | v0 &= a0;
0x00062248 or v0, v0, v1 | v0 |= v1;
0x0006224c lw t9, -0x7f38(gp) | t9 = sym.sd_device_get_devlink_first;
| if (v0 != 0) {
0x00062250 bnez v0, 0x62620 | goto label_23;
| }
| label_11:
0x00062254 lw v1, 0xc0(s0) | v1 = *((s0 + 48));
| label_10:
0x00062258 lw v0, 0xc4(s0) | v0 = *((s0 + 49));
0x0006225c or a0, v1, v0 | a0 = v1 | v0;
0x00062260 lw a2, -0x7fcc(gp) | a2 = *(gp);
| if (a0 != 0) {
0x00062264 bnez a0, 0x625fc | goto label_24;
| }
| label_9:
0x00062268 lw s4, -0x7fcc(gp) | s4 = *(gp);
0x0006226c addiu v0, zero, -2 | v0 = -2;
0x00062270 sw v0, 0x54(fp) | *(arg_54h) = v0;
0x00062274 sw zero, 0x58(fp) | *(arg_58h) = 0;
0x00062278 addiu s7, fp, 0x4c | s7 = fp + 0x4c;
0x0006227c addiu s6, fp, 0x50 | s6 = fp + 0x50;
0x00062280 addiu s5, fp, 0x54 | s5 = fp + 0x54;
| /* str.E:_s_s_n */
0x00062284 addiu s4, s4, 0x712c | s4 += 0x712c;
0x00062288 b 0x622b0 |
| while (v0 != 0) {
0x0006228c lw v0, 0x50(fp) | v0 = *(arg_50h);
0x00062290 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00062294 lw a3, 0x4c(fp) | a3 = *(arg_4ch);
0x00062298 lw a0, 0x44(fp) | a0 = *(arg_44h);
0x0006229c sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000622a0 move a2, s4 | a2 = s4;
0x000622a4 addiu a1, zero, 1 | a1 = 1;
0x000622a8 jalr t9 | t9 ();
0x000622ac lw gp, 0x38(fp) | gp = *(var_38h);
0x000622b0 lw t9, -0x7eb0(gp) | t9 = sym.internal_hashmap_iterate;
0x000622b4 lw a0, 0x28(s0) | a0 = *((s0 + 10));
0x000622b8 move a3, s7 | a3 = s7;
0x000622bc move a2, s6 | a2 = s6;
0x000622c0 move a1, s5 | a1 = s5;
0x000622c4 jalr t9 | t9 ();
0x000622c8 lw gp, 0x38(fp) | gp = *(var_38h);
0x000622cc bnez v0, 0x6228c |
| }
0x000622d0 lw t9, -0x7c3c(gp) | t9 = sym.sd_device_get_tag_first;
0x000622d4 move a0, s0 | a0 = s0;
0x000622d8 bal 0x69788 | sym_sd_device_get_tag_first ();
0x000622dc lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 == 0) {
0x000622e0 beqz v0, 0x6231c | goto label_25;
| }
0x000622e4 lw s4, -0x7fcc(gp) | s4 = *(gp);
| /* str.G:_s_n */
0x000622e8 addiu s4, s4, 0x7138 | s4 += 0x7138;
| do {
0x000622ec lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x000622f0 lw a0, 0x44(fp) | a0 = *(arg_44h);
0x000622f4 move a3, v0 | a3 = v0;
0x000622f8 move a2, s4 | a2 = s4;
0x000622fc addiu a1, zero, 1 | a1 = 1;
0x00062300 jalr t9 | t9 ();
0x00062304 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062308 lw t9, -0x7c38(gp) | t9 = sym.sd_device_get_tag_next;
0x0006230c move a0, s0 | a0 = s0;
0x00062310 bal 0x69864 | sym_sd_device_get_tag_next ();
0x00062314 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062318 bnez v0, 0x622ec |
| } while (v0 != 0);
| label_25:
0x0006231c lw t9, -0x766c(gp) | t9 = sym.fflush_and_check;
| label_22:
0x00062320 lw a0, 0x44(fp) | a0 = *(arg_44h);
0x00062324 jalr t9 | t9 ();
0x00062328 move s4, v0 | s4 = v0;
0x0006232c lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 < 0) {
0x00062330 bltz v0, 0x6245c | goto label_26;
| }
0x00062334 lw t9, -0x6f24(gp) | t9 = sym.imp.rename;
0x00062338 lw a0, 0x48(fp) | a0 = *(arg_48h);
0x0006233c move a1, s1 | a1 = s1;
0x00062340 jalr t9 | t9 ();
0x00062344 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 < 0) {
0x00062348 bltz v0, 0x62444 | goto label_21;
| }
0x0006234c lw t9, -0x7f98(gp) | t9 = sym.log_get_max_level_realm;
0x00062350 move a0, zero | a0 = 0;
0x00062354 sw zero, 0x54(fp) | *(arg_54h) = 0;
0x00062358 jalr t9 | t9 ();
0x0006235c slti v0, v0, 7 | v0 = (v0 < 7) ? 1 : 0;
0x00062360 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062364 move a0, zero | a0 = 0;
| if (v0 == 0) {
0x00062368 beqz v0, 0x6259c | goto label_27;
| }
| label_6:
0x0006236c move v0, zero | v0 = 0;
| label_7:
0x00062370 lw v1, -0x7fd4(gp) | v1 = *(gp);
| if (s3 != 0) {
0x00062374 bnez s3, 0x62594 | goto label_28;
| }
0x00062378 lw v1, -0x7fcc(gp) | v1 = *(gp);
| /* str.empty */
0x0006237c addiu v1, v1, 0x7104 | v1 += 0x7104;
| label_5:
0x00062380 lw a1, 0xa0(s0) | a1 = *((s0 + 40));
0x00062384 sw v1, 0x28(sp) | *(var_18h_2) = v1;
0x00062388 sw v0, 0x14(sp) | *(var_14h_2) = v0;
0x0006238c lw v1, -0x7fcc(gp) | v1 = *(gp);
0x00062390 lw v0, -0x7fcc(gp) | v0 = *(gp);
0x00062394 lw a2, -0x7fcc(gp) | a2 = *(gp);
0x00062398 lw t9, -0x7d6c(gp) | t9 = sym.log_object_internal;
| /* str.sd_device:_Created__s_file__s_for__s */
0x0006239c addiu v1, v1, 0x7140 | v1 += 0x7140;
| /* esilref: 'device_update_db' */
0x000623a0 addiu v0, v0, 0x7558 | v0 += 0x7558;
0x000623a4 sw a1, 0x30(sp) | *(var_20h) = a1;
0x000623a8 sw a0, 0x18(sp) | *(var_18h_5) = a0;
0x000623ac sw s1, 0x2c(sp) | *(var_1ch) = s1;
0x000623b0 sw v1, 0x24(sp) | *(var_14h) = v1;
0x000623b4 sw zero, 0x20(sp) | *(var_10h_2) = 0;
0x000623b8 sw zero, 0x1c(sp) | *(var_1ch_2) = 0;
0x000623bc sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000623c0 addiu a3, zero, 0x3be | a3 = 0x3be;
| /* esilref: 'src/libsystemd/sd-device/device-private.c' */
0x000623c4 addiu a2, a2, 0x701f | a2 += 0x701f;
0x000623c8 move a1, zero | a1 = 0;
0x000623cc addiu a0, zero, 7 | a0 = 7;
0x000623d0 jalr t9 | t9 ();
0x000623d4 move s4, zero | s4 = 0;
0x000623d8 lw gp, 0x38(fp) | gp = *(var_38h);
0x000623dc b 0x62090 | goto label_0;
| label_19:
0x000623e0 lw t9, -0x7c78(gp) | t9 = sym.mkdir_parents;
| if (s4 != 0) {
0x000623e4 bnez s4, 0x621bc | goto label_1;
| }
0x000623e8 lw t9, -0x6e44(gp) | t9 = sym.imp.unlink;
0x000623ec move a0, s1 | a0 = s1;
0x000623f0 jalr t9 | t9 ();
0x000623f4 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 >= 0) {
0x000623f8 bgez v0, 0x62090 | goto label_0;
| }
0x000623fc lw t9, -0x6fc8(gp) | t9 = sym.imp.__errno_location;
0x00062400 jalr t9 | t9 ();
0x00062404 nop |
0x00062408 lw v0, (v0) | v0 = *(v0);
0x0006240c addiu v1, zero, 2 | v1 = 2;
0x00062410 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 == v1) {
0x00062414 beq v0, v1, 0x62090 | goto label_0;
| }
0x00062418 negu s4, v0 | __asm ("negu s4, v0");
0x0006241c b 0x62090 | goto label_0;
| label_20:
0x00062420 jalr t9 | t9 ();
0x00062424 nop |
0x00062428 lw gp, 0x38(fp) | gp = *(var_38h);
0x0006242c addiu a1, zero, 0x1a4 | a1 = segment.NOTE;
0x00062430 lw t9, -0x7174(gp) | t9 = sym.imp.fchmod;
0x00062434 move a0, v0 | a0 = v0;
0x00062438 jalr t9 | t9 ();
0x0006243c lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 >= 0) {
0x00062440 bgez v0, 0x6222c | goto label_2;
| }
| label_21:
0x00062444 lw t9, -0x6fc8(gp) | t9 = sym.imp.__errno_location;
0x00062448 jalr t9 | t9 ();
0x0006244c nop |
0x00062450 lw s4, (v0) | s4 = *(v0);
0x00062454 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062458 negu s4, s4 | __asm ("negu s4, s4");
| label_26:
0x0006245c lw t9, -0x6e44(gp) | t9 = sym.imp.unlink;
0x00062460 move a0, s1 | a0 = s1;
0x00062464 jalr t9 | t9 ();
0x00062468 lw gp, 0x38(fp) | gp = *(var_38h);
0x0006246c lw t9, -0x6e44(gp) | t9 = sym.imp.unlink;
0x00062470 lw a0, 0x48(fp) | a0 = *(arg_48h);
0x00062474 jalr t9 | t9 ();
0x00062478 lw gp, 0x38(fp) | gp = *(var_38h);
0x0006247c move a0, zero | a0 = 0;
0x00062480 lw t9, -0x7f98(gp) | t9 = sym.log_get_max_level_realm;
0x00062484 sw zero, 0x54(fp) | *(arg_54h) = 0;
0x00062488 jalr t9 | t9 ();
0x0006248c slti v0, v0, 7 | v0 = (v0 < 7) ? 1 : 0;
0x00062490 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062494 move a0, zero | a0 = 0;
0x00062498 beqz v0, 0x6253c |
| while (a0 == 0) {
0x0006249c move v1, zero | v1 = 0;
| label_3:
0x000624a0 lw v0, -0x7fd4(gp) | v0 = *(gp);
| if (s3 == 0) {
0x000624a4 bnel s3, zero, 0x6258c | goto label_29;
| }
0x000624a8 lw v0, -0x7fcc(gp) | v0 = *(gp);
| /* str.empty */
0x000624ac addiu v0, v0, 0x7104 | v0 += 0x7104;
| label_4:
0x000624b0 lw a1, 0xa0(s0) | a1 = *((s0 + 40));
0x000624b4 sw v0, 0x28(sp) | *(var_18h_2) = v0;
0x000624b8 lw v0, -0x7fcc(gp) | v0 = *(gp);
0x000624bc lw a2, -0x7fcc(gp) | a2 = *(gp);
| /* str.sd_device:_Failed_to_create__s_file__s_for__s */
0x000624c0 addiu v0, v0, 0x716c | v0 += 0x716c;
0x000624c4 sw v0, 0x24(sp) | *(var_14h) = v0;
0x000624c8 lw v0, -0x7fcc(gp) | v0 = *(gp);
0x000624cc lw t9, -0x7d6c(gp) | t9 = sym.log_object_internal;
| /* esilref: 'device_update_db' */
0x000624d0 addiu v0, v0, 0x7558 | v0 += 0x7558;
0x000624d4 sw a1, 0x30(sp) | *(var_20h) = a1;
0x000624d8 sw a0, 0x18(sp) | *(var_18h_2) = a0;
0x000624dc move a1, s4 | a1 = s4;
0x000624e0 sw s1, 0x2c(sp) | *(var_1ch) = s1;
0x000624e4 sw zero, 0x20(sp) | *(var_20h) = 0;
0x000624e8 sw zero, 0x1c(sp) | *(var_1ch) = 0;
0x000624ec sw v1, 0x14(sp) | *(var_14h_2) = v1;
0x000624f0 sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000624f4 addiu a3, zero, 0x3c6 | a3 = 0x3c6;
| /* esilref: 'src/libsystemd/sd-device/device-private.c' */
0x000624f8 addiu a2, a2, 0x701f | a2 += 0x701f;
0x000624fc addiu a0, zero, 7 | a0 = 7;
0x00062500 jalr t9 | t9 ();
0x00062504 move s4, v0 | s4 = v0;
0x00062508 lw gp, 0x38(fp) | gp = *(var_38h);
0x0006250c b 0x62090 | goto label_0;
| label_18:
0x00062510 lw v0, -0x7fcc(gp) | v0 = *(gp);
0x00062514 lw a2, -0x7fcc(gp) | a2 = *(gp);
0x00062518 lw a1, -0x7fcc(gp) | a1 = *(gp);
| /* str.device_update_db */
0x0006251c addiu v0, v0, 0x756c | v0 += 0x756c;
0x00062520 lw t9, -0x7f88(gp) | t9 = sym.log_assert_failed_realm;
0x00062524 sw v0, 0x10(sp) | *(var_10h_2) = v0;
0x00062528 addiu a3, zero, 0x372 | a3 = 0x372;
| /* esilref: 'src/libsystemd/sd-device/device-private.c' */
0x0006252c addiu a2, a2, 0x701f | a2 += 0x701f;
| /* str.sizeof_char__n____ALLOCA_MAX */
0x00062530 addiu a1, a1, -0x6544 | a1 += -0x6544;
0x00062534 move a0, zero | a0 = 0;
0x00062538 jalr t9 | t9 ();
0x0006253c lw t9, -0x7ee0(gp) | t9 = sym.sd_device_get_sysname;
0x00062540 move a0, s0 | a0 = s0;
0x00062544 addiu a1, fp, 0x54 | a1 = fp + 0x54;
0x00062548 bal 0x66b5c | sym_sd_device_get_sysname ();
0x0006254c lw a0, 0x54(fp) | a0 = *(arg_54h);
0x00062550 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062554 beqz a0, 0x6249c |
| }
0x00062558 lw v1, -0x7fcc(gp) | v1 = *(gp);
| /* str.DEVICE */
0x0006255c addiu v1, v1, -0x7118 | v1 += -0x7118;
0x00062560 b 0x624a0 | goto label_3;
| label_13:
0x00062564 lw v0, -0x7fcc(gp) | v0 = *(gp);
0x00062568 lw a2, -0x7fcc(gp) | a2 = *(gp);
0x0006256c lw a1, -0x7fcc(gp) | a1 = *(gp);
| /* str.device_update_db */
0x00062570 addiu v0, v0, 0x756c | v0 += 0x756c;
0x00062574 lw t9, -0x7f88(gp) | t9 = sym.log_assert_failed_realm;
0x00062578 sw v0, 0x10(sp) | *(var_10h_2) = v0;
0x0006257c addiu a3, zero, 0x36a | a3 = 0x36a;
| /* esilref: 'src/libsystemd/sd-device/device-private.c' */
0x00062580 addiu a2, a2, 0x701f | a2 += 0x701f;
| /* esilref: 'device' */
0x00062584 addiu a1, a1, -0x1144 | a1 += -0x1144;
0x00062588 jalr t9 | t9 ();
| label_29:
0x0006258c addiu v0, v0, 0x7114 | v0 += 0x7114;
0x00062590 b 0x624b0 | goto label_4;
| /* esilref: 'db' */
| label_28:
0x00062594 addiu v1, v1, 0x7114 | v1 += 0x7114;
0x00062598 b 0x62380 | goto label_5;
| label_27:
0x0006259c lw t9, -0x7ee0(gp) | t9 = sym.sd_device_get_sysname;
0x000625a0 move a0, s0 | a0 = s0;
0x000625a4 addiu a1, fp, 0x54 | a1 = fp + 0x54;
0x000625a8 bal 0x66b5c | sym_sd_device_get_sysname ();
0x000625ac lw a0, 0x54(fp) | a0 = *(arg_54h);
0x000625b0 lw gp, 0x38(fp) | gp = *(var_38h);
| if (a0 == 0) {
0x000625b4 beqz a0, 0x6236c | goto label_6;
| }
0x000625b8 lw v0, -0x7fcc(gp) | v0 = *(gp);
| /* str.DEVICE */
0x000625bc addiu v0, v0, -0x7118 | v0 += -0x7118;
0x000625c0 b 0x62370 | goto label_7;
| label_17:
0x000625c4 lw v1, -0x7fcc(gp) | v1 = *(gp);
0x000625c8 addiu sp, sp, -0x10 |
| /* str._run_udev_data_ */
0x000625cc addiu v0, v1, 0x71a0 | v0 = v1 + 0x71a0;
0x000625d0 addiu s1, sp, 0x38 | s1 = sp + 0x38;
0x000625d4 lw a1, 0x71a0(v1) | a1 = *((v1 + 7272));
0x000625d8 lw a0, 4(v0) | a0 = *((v0 + 1));
0x000625dc lw v1, 8(v0) | v1 = *((v0 + 2));
0x000625e0 lw v0, 0xc(v0) | v0 = *((v0 + 3));
0x000625e4 sw a1, (s1) | *(s1) = a1;
0x000625e8 sw v0, 0xc(s1) | *((s1 + 3)) = v0;
0x000625ec sw a0, 4(s1) | *((s1 + 1)) = a0;
0x000625f0 sw v1, 8(s1) | *((s1 + 2)) = v1;
0x000625f4 addiu v0, s1, 0xf | v0 = s1 + 0xf;
0x000625f8 b 0x62190 | goto label_8;
| label_24:
0x000625fc lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00062600 lw a0, 0x44(fp) | a0 = *(arg_44h);
0x00062604 sw v1, 0x10(sp) | *(var_10h_4) = v1;
0x00062608 sw v0, 0x14(sp) | *(var_14h_2) = v0;
| /* str.I:_llu_n */
0x0006260c addiu a2, a2, 0x7124 | a2 += 0x7124;
0x00062610 addiu a1, zero, 1 | a1 = 1;
0x00062614 jalr t9 | t9 ();
0x00062618 lw gp, 0x38(fp) | gp = *(var_38h);
0x0006261c b 0x62268 | goto label_9;
| label_23:
0x00062620 move a0, s0 | a0 = s0;
0x00062624 bal 0x69944 | sym_sd_device_get_devlink_first ();
0x00062628 lw gp, 0x38(fp) | gp = *(var_38h);
| if (v0 == 0) {
0x0006262c beqz v0, 0x62668 | goto label_30;
| }
0x00062630 lw s4, -0x7fcc(gp) | s4 = *(gp);
| /* str.S:_s_n */
0x00062634 addiu s4, s4, 0x710c | s4 += 0x710c;
| do {
0x00062638 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x0006263c lw a0, 0x44(fp) | a0 = *(arg_44h);
0x00062640 addiu a3, v0, 5 | a3 = v0 + 5;
0x00062644 move a2, s4 | a2 = s4;
0x00062648 addiu a1, zero, 1 | a1 = 1;
0x0006264c jalr t9 | t9 ();
0x00062650 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062654 lw t9, -0x7f34(gp) | t9 = sym.sd_device_get_devlink_next;
0x00062658 move a0, s0 | a0 = s0;
0x0006265c bal 0x69a20 | sym_sd_device_get_devlink_next ();
0x00062660 lw gp, 0x38(fp) | gp = *(var_38h);
0x00062664 bnez v0, 0x62638 |
| } while (v0 != 0);
| label_30:
0x00062668 lw a3, 0x78(s0) | a3 = *((s0 + 30));
0x0006266c lw a2, -0x7fcc(gp) | a2 = *(gp);
| if (a3 != 0) {
0x00062670 bnez a3, 0x626a0 | goto label_31;
| }
| label_12:
0x00062674 lw a3, 4(s0) | a3 = *((s0 + 1));
| if (a3 < 0) {
0x00062678 bltzl a3, 0x62258 | goto label_10;
| }
0x0006267c lw v1, 0xc0(s0) | v1 = *((s0 + 48));
0x00062680 lw a2, -0x7fcc(gp) | a2 = *(gp);
0x00062684 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00062688 lw a0, 0x44(fp) | a0 = *(arg_44h);
| /* str.W:_i_n */
0x0006268c addiu a2, a2, 0x711c | a2 += 0x711c;
0x00062690 addiu a1, zero, 1 | a1 = 1;
0x00062694 jalr t9 | t9 ();
0x00062698 lw gp, 0x38(fp) | gp = *(var_38h);
0x0006269c b 0x62254 | goto label_11;
| label_31:
0x000626a0 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x000626a4 lw a0, 0x44(fp) | a0 = *(arg_44h);
| /* str.L:_i_n */
0x000626a8 addiu a2, a2, 0x7114 | a2 += 0x7114;
0x000626ac addiu a1, zero, 1 | a1 = 1;
0x000626b0 jalr t9 | t9 ();
0x000626b4 lw gp, 0x38(fp) | gp = *(var_38h);
0x000626b8 b 0x62674 | goto label_12;
| label_16:
0x000626bc lw t9, -0x6e2c(gp) | t9 = sym.imp.__stack_chk_fail;
0x000626c0 jalr t9 | t9 ();
0x000626c4 nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7d424 */
| #include <stdint.h>
|
; (fcn) sym.introspect_path () | void introspect_path () {
0x0007d424 lui gp, 8 |
0x0007d428 addiu gp, gp, 0x1e5c |
0x0007d42c addu gp, gp, t9 | gp += t9;
0x0007d430 addiu sp, sp, -0x80 |
0x0007d434 lw v0, -0x6de8(gp) | v0 = *((gp - 7034));
0x0007d438 lbu v1, 0x90(sp) | v1 = *(arg_90h);
0x0007d43c sw s3, 0x64(sp) | *(var_64h) = s3;
0x0007d440 sw v1, 0x24(sp) | *(var_24h) = v1;
0x0007d444 lw v1, 0x94(sp) | v1 = *(arg_94h);
0x0007d448 sw s2, 0x60(sp) | *(var_60h) = s2;
0x0007d44c sw s1, 0x5c(sp) | *(var_5ch) = s1;
0x0007d450 sw s0, 0x58(sp) | *(var_58h) = s0;
0x0007d454 sw gp, 0x18(sp) | *(var_18h) = gp;
0x0007d458 sw ra, 0x7c(sp) | *(var_7ch) = ra;
0x0007d45c sw fp, 0x78(sp) | *(var_78h) = fp;
0x0007d460 sw s7, 0x74(sp) | *(var_74h) = s7;
0x0007d464 sw s6, 0x70(sp) | *(var_70h) = s6;
0x0007d468 sw s5, 0x6c(sp) | *(var_6ch) = s5;
0x0007d46c sw s4, 0x68(sp) | *(var_68h) = s4;
0x0007d470 sw v0, 0x2c(sp) | *(var_2ch) = v0;
0x0007d474 sw v1, 0x30(sp) | *(var_30h) = v1;
0x0007d478 lw v0, (v0) | v0 = *(v0);
0x0007d47c lw v1, 0x98(sp) | v1 = *(arg_98h);
0x0007d480 move s0, a0 | s0 = a0;
0x0007d484 move s2, a1 | s2 = a1;
0x0007d488 move s1, a3 | s1 = a3;
0x0007d48c sw v1, 0x34(sp) | *(var_34h) = v1;
0x0007d490 lw s3, 0x9c(sp) | s3 = *(arg_9ch);
0x0007d494 sw v0, 0x54(sp) | *(var_54h) = v0;
0x0007d498 sw zero, 0x40(sp) | *(var_40h) = 0;
0x0007d49c sw zero, 0x44(sp) | *(var_44h) = 0;
0x0007d4a0 sw zero, 0x48(sp) | *(var_48h) = 0;
0x0007d4a4 sw zero, 0x4c(sp) | *(var_4ch) = 0;
0x0007d4a8 sw zero, 0x50(sp) | *(var_50h) = 0;
| if (a2 == 0) {
0x0007d4ac beqz a2, 0x7d79c | goto label_6;
| }
0x0007d4b0 move s5, a2 | s5 = a2;
| label_3:
0x0007d4b4 lw t9, -0x7594(gp) | t9 = *(gp);
0x0007d4b8 addiu v0, sp, 0x40 | v0 = sp + 0x40;
0x0007d4bc sw s3, 0x14(sp) | *(var_14h) = s3;
0x0007d4c0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x0007d4c4 move a3, zero | a3 = 0;
0x0007d4c8 move a2, s5 | a2 = s5;
0x0007d4cc move a1, s2 | a1 = s2;
| /* fcn.0007c940 */
0x0007d4d0 addiu t9, t9, -0x36c0 | t9 += -0x36c0;
0x0007d4d4 move a0, s0 | a0 = s0;
0x0007d4d8 bal 0x7c940 | fcn_0007c940 ();
0x0007d4dc move fp, v0 | fp = v0;
0x0007d4e0 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x0007d4e4 bltz v0, 0x7d7b8 | goto label_7;
| }
0x0007d4e8 lw a1, 0x1c(s0) | a1 = *((s0 + 7));
0x0007d4ec andi v0, a1, 0x200 | v0 = a1 & aav.0x00000200;
0x0007d4f0 lw v0, 0x24(sp) | v0 = *(var_24h);
| if (v0 != 0) {
0x0007d4f4 beqz v0, 0x7d500 |
0x0007d4f8 addiu s4, sp, 0x44 | s4 = sp + 0x44;
| if (v0 == 0) {
0x0007d4fc beqz v0, 0x7d7c0 | goto label_8;
| }
| }
0x0007d500 lw t9, -0x7530(gp) | t9 = sym.introspect_begin;
0x0007d504 addiu s4, sp, 0x44 | s4 = sp + 0x44;
0x0007d508 ext a1, a1, 0xa, 1 | __asm ("ext a1, a1, 0xa, 1");
0x0007d50c move a0, s4 | a0 = s4;
0x0007d510 bal 0x88024 | sym_introspect_begin ();
0x0007d514 move fp, v0 | fp = v0;
0x0007d518 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x0007d51c bltz v0, 0x7d72c | goto label_4;
| }
0x0007d520 move a1, zero | a1 = 0;
| if (s1 == 0) {
0x0007d524 bnez s1, 0x7d530 |
0x0007d528 lw a1, 0x20(s5) | a1 = *((s5 + 8));
0x0007d52c sltu a1, zero, a1 | a1 = (0 < a1) ? 1 : 0;
| }
0x0007d530 lw t9, -0x752c(gp) | t9 = sym.introspect_write_default_interfaces;
0x0007d534 move a0, s4 | a0 = s4;
0x0007d538 bal 0x880e8 | sym_introspect_write_default_interfaces ();
0x0007d53c move fp, v0 | fp = v0;
0x0007d540 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x0007d544 bltz v0, 0x7d72c | goto label_4;
| }
0x0007d548 lw t9, -0x7de8(gp) | t9 = sym.internal_hashmap_size;
0x0007d54c lw a0, 0x40(sp) | a0 = *(var_40h);
0x0007d550 bal 0x9638c | sym_internal_hashmap_size ();
0x0007d554 lw s7, 0x18(s5) | s7 = *((s5 + 6));
0x0007d558 sltiu v0, v0, 1 | v0 = (v0 < 1) ? 1 : 0;
0x0007d55c lw gp, 0x18(sp) | gp = *(var_18h);
0x0007d560 sw v0, 0x28(sp) | *(var_28h_2) = v0;
| if (s7 == 0) {
0x0007d564 beqz s7, 0x7d6cc | goto label_9;
| }
0x0007d568 lw v0, -0x7fd8(gp) | v0 = *(gp);
0x0007d56c move s6, zero | s6 = 0;
0x0007d570 sw v0, 0x3c(sp) | *(var_3ch) = v0;
0x0007d574 lw v0, -0x7594(gp) | v0 = *(gp);
| /* fcn.0007c2d4 */
0x0007d578 addiu v0, v0, -0x3d2c | v0 += -0x3d2c;
0x0007d57c sw v0, 0x20(sp) | *(var_20h) = v0;
0x0007d580 lw v0, -0x7fd8(gp) | v0 = *(gp);
| /* str.__interface_name__s___n */
0x0007d584 addiu v0, v0, -0x515c | v0 += -0x515c;
0x0007d588 sw v0, 0x38(sp) | *(var_38h) = v0;
0x0007d58c b 0x7d628 | goto label_2;
| label_1:
0x0007d590 lw t9, -0x7c00(gp) | t9 = sym.strcmp_ptr;
0x0007d594 move a1, a3 | a1 = a3;
0x0007d598 sw a3, 0x28(sp) | *(var_28h_2) = a3;
0x0007d59c move a0, s6 | a0 = s6;
0x0007d5a0 jalr t9 | t9 ();
0x0007d5a4 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x0007d5a8 beqz v0, 0x7d5f8 |
0x0007d5ac lw a0, 0x44(sp) | a0 = *(var_44h);
0x0007d5b0 lw a3, 0x28(sp) | a3 = *(var_28h_2);
| if (s6 != 0) {
0x0007d5b4 beqz s6, 0x7d5e0 |
0x0007d5b8 lw v0, 0x3c(sp) | v0 = *(var_3ch);
0x0007d5bc lw t9, -0x6e8c(gp) | t9 = sym.imp.fwrite;
0x0007d5c0 move a3, a0 | a3 = a0;
0x0007d5c4 addiu a2, zero, 0xe | a2 = 0xe;
0x0007d5c8 addiu a0, v0, -0x1e60 | a0 = v0 + -0x1e60;
0x0007d5cc addiu a1, zero, 1 | a1 = 1;
0x0007d5d0 jalr t9 | t9 ();
0x0007d5d4 lw gp, 0x18(sp) | gp = *(var_18h);
0x0007d5d8 lw a0, 0x44(sp) | a0 = *(var_44h);
0x0007d5dc lw a3, 0xc(s7) | a3 = *((s7 + 3));
| }
0x0007d5e0 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x0007d5e4 lw a2, 0x38(sp) | a2 = *(var_38h);
0x0007d5e8 addiu a1, zero, 1 | a1 = 1;
0x0007d5ec jalr t9 | t9 ();
0x0007d5f0 lw gp, 0x18(sp) | gp = *(var_18h);
0x0007d5f4 lw fp, 0x10(s7) | fp = *((s7 + 4));
| }
0x0007d5f8 lw t9, -0x7528(gp) | t9 = sym.introspect_write_interface;
0x0007d5fc move a1, fp | a1 = fp;
0x0007d600 move a0, s4 | a0 = s4;
0x0007d604 bal 0x882dc | sym_introspect_write_interface ();
0x0007d608 move fp, v0 | fp = v0;
0x0007d60c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x0007d610 bltz v0, 0x7d72c | goto label_4;
| }
0x0007d614 lw s6, 0xc(s7) | s6 = *((s7 + 3));
0x0007d618 sw zero, 0x28(sp) | *(var_28h_2) = 0;
0x0007d61c lw s7, 0x18(s7) | s7 = *((s7 + 6));
| do {
| if (s7 == 0) {
| label_0:
0x0007d620 beqz s7, 0x7d6a8 | goto label_10;
| }
0x0007d624 nop |
| label_2:
0x0007d628 lw t9, 0x20(sp) | t9 = *(var_20h);
| if (s1 == 0) {
0x0007d62c beqz s1, 0x7d640 | goto label_11;
| }
0x0007d630 lw v0, 4(s7) | v0 = *((s7 + 1));
0x0007d634 andi v0, v0, 1 | v0 &= 1;
0x0007d638 beql v0, zero, 0x7d620 |
| } while (v0 == 0);
0x0007d63c lw s7, 0x18(s7) | s7 = *((s7 + 6));
| label_11:
0x0007d640 sw s3, 0x10(sp) | *(var_10h) = s3;
0x0007d644 move a3, zero | a3 = 0;
0x0007d648 move a2, s7 | a2 = s7;
0x0007d64c move a1, s2 | a1 = s2;
0x0007d650 move a0, s0 | a0 = s0;
0x0007d654 jalr t9 | t9 ();
0x0007d658 move fp, v0 | fp = v0;
0x0007d65c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x0007d660 bltz v0, 0x7d72c | goto label_4;
| }
0x0007d664 lw v0, 0x1c(s0) | v0 = *((s0 + 7));
0x0007d668 andi v0, v0, 0x200 | v0 &= aav.0x00000200;
0x0007d66c lw v0, 0x24(sp) | v0 = *(var_24h);
| if (v0 == 0) {
0x0007d670 beqz v0, 0x7d67c | goto label_12;
| }
| if (v0 == 0) {
0x0007d674 beql v0, zero, 0x7d72c | goto label_4;
| }
0x0007d678 move fp, zero | fp = 0;
| if (fp == 0) {
| label_12:
0x0007d67c beql fp, zero, 0x7d620 | goto label_0;
| }
0x0007d680 lw s7, 0x18(s7) | s7 = *((s7 + 6));
0x0007d684 lw fp, 0x10(s7) | fp = *((s7 + 4));
0x0007d688 lwl v0, 4(fp) | __asm ("lwl v0, (arg_4h)");
0x0007d68c lwr v0, 1(fp) | __asm ("lwr v0, (arg_1h)");
0x0007d690 andi v0, v0, 2 | v0 &= 2;
| if (v0 == 0) {
0x0007d694 beql v0, zero, 0x7d590 | goto label_1;
| }
0x0007d698 lw a3, 0xc(s7) | a3 = *((s7 + 3));
0x0007d69c lw s7, 0x18(s7) | s7 = *((s7 + 6));
0x0007d6a0 sw zero, 0x28(sp) | *(var_28h_2) = 0;
| if (s7 != 0) {
0x0007d6a4 bnez s7, 0x7d628 | goto label_2;
| }
| label_10:
0x0007d6a8 lw t9, -0x6e8c(gp) | t9 = sym.imp.fwrite;
| if (s6 != 0) {
0x0007d6ac beqz s6, 0x7d6cc |
0x0007d6b0 lw a0, -0x7fd8(gp) | a0 = *(gp);
0x0007d6b4 lw a3, 0x44(sp) | a3 = *(var_44h);
0x0007d6b8 addiu a2, zero, 0xe | a2 = 0xe;
0x0007d6bc addiu a1, zero, 1 | a1 = 1;
| /* esilref: ' </interface>
' */
0x0007d6c0 addiu a0, a0, -0x1e60 | a0 += -0x1e60;
0x0007d6c4 jalr t9 | t9 ();
0x0007d6c8 lw gp, 0x18(sp) | gp = *(var_18h);
| }
| label_9:
0x0007d6cc lw v0, 0x28(sp) | v0 = *(var_28h_2);
0x0007d6d0 lw t9, -0x7594(gp) | t9 = *(gp);
| if (v0 != 0) {
0x0007d6d4 bnez v0, 0x7d7c8 | goto label_13;
| }
0x0007d6d8 lw v0, 0x30(sp) | v0 = *(var_30h);
| label_5:
0x0007d6dc lw v1, 0x30(sp) | v1 = *(var_30h);
| if (v0 != 0) {
0x0007d6e0 beqz v0, 0x7d6ec |
0x0007d6e4 addiu v0, zero, 1 | v0 = 1;
0x0007d6e8 sb v0, (v1) | *(v1) = v0;
| }
0x0007d6ec lw t9, -0x7524(gp) | t9 = sym.introspect_write_child_nodes;
0x0007d6f0 lw a1, 0x40(sp) | a1 = *(var_40h);
0x0007d6f4 move a2, s2 | a2 = s2;
0x0007d6f8 move a0, s4 | a0 = s4;
0x0007d6fc bal 0x881ac | sym_introspect_write_child_nodes ();
0x0007d700 move fp, v0 | fp = v0;
0x0007d704 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 >= 0) {
0x0007d708 bltz v0, 0x7d72c |
0x0007d70c lw t9, -0x7520(gp) | t9 = sym.introspect_finish;
0x0007d710 lw a1, 0x34(sp) | a1 = *(var_34h);
0x0007d714 move a0, s4 | a0 = s4;
0x0007d718 bal 0x886d4 | sym_introspect_finish ();
0x0007d71c move fp, v0 | fp = v0;
0x0007d720 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x0007d724 bltz v0, 0x7d72c | goto label_4;
| }
0x0007d728 addiu fp, zero, 1 | fp = 1;
| }
| label_4:
0x0007d72c lw t9, -0x751c(gp) | t9 = sym.introspect_free;
0x0007d730 move a0, s4 | a0 = s4;
0x0007d734 bal 0x88790 | sym_introspect_free ();
0x0007d738 lw a0, 0x40(sp) | a0 = *(var_40h);
0x0007d73c lw gp, 0x18(sp) | gp = *(var_18h);
| if (a0 != 0) {
0x0007d740 beqz a0, 0x7d758 |
0x0007d744 lw t9, -0x7e94(gp) | t9 = sym.internal_hashmap_free;
0x0007d748 lw a1, -0x6dc8(gp) | a1 = *((gp - 7026));
0x0007d74c move a2, zero | a2 = 0;
0x0007d750 bal 0x96568 | sym_internal_hashmap_free ();
0x0007d754 lw gp, 0x18(sp) | gp = *(var_18h);
| }
0x0007d758 lw v0, 0x2c(sp) | v0 = *(var_2ch);
0x0007d75c lw a0, 0x54(sp) | a0 = *(var_54h);
0x0007d760 lw v1, (v0) | v1 = *(v0);
0x0007d764 move v0, fp | v0 = fp;
| if (a0 != v1) {
0x0007d768 bne a0, v1, 0x7d810 | goto label_14;
| }
0x0007d76c lw ra, 0x7c(sp) | ra = *(var_7ch);
0x0007d770 lw fp, 0x78(sp) | fp = *(var_78h);
0x0007d774 lw s7, 0x74(sp) | s7 = *(var_74h);
0x0007d778 lw s6, 0x70(sp) | s6 = *(var_70h);
0x0007d77c lw s5, 0x6c(sp) | s5 = *(var_6ch);
0x0007d780 lw s4, 0x68(sp) | s4 = *(var_68h);
0x0007d784 lw s3, 0x64(sp) | s3 = *(var_64h);
0x0007d788 lw s2, 0x60(sp) | s2 = *(var_60h);
0x0007d78c lw s1, 0x5c(sp) | s1 = *(var_5ch);
0x0007d790 lw s0, 0x58(sp) | s0 = *(var_58h);
0x0007d794 addiu sp, sp, 0x80 |
0x0007d798 jr ra | return v0;
| label_6:
0x0007d79c lw t9, -0x7c24(gp) | t9 = sym.internal_hashmap_get;
0x0007d7a0 lw a0, 0x90(a0) | a0 = *((a0 + 36));
0x0007d7a4 bal 0x95d44 | sym_internal_hashmap_get ();
0x0007d7a8 move s5, v0 | s5 = v0;
0x0007d7ac lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x0007d7b0 bnez v0, 0x7d4b4 | goto label_3;
| }
0x0007d7b4 addiu fp, zero, -2 | fp = -2;
| label_7:
0x0007d7b8 addiu s4, sp, 0x44 | s4 = sp + 0x44;
0x0007d7bc b 0x7d72c | goto label_4;
| label_8:
0x0007d7c0 move fp, zero | fp = 0;
0x0007d7c4 b 0x7d72c | goto label_4;
| label_13:
0x0007d7c8 move a3, s1 | a3 = s1;
0x0007d7cc move a2, s2 | a2 = s2;
0x0007d7d0 move a1, s5 | a1 = s5;
| /* fcn.0007ca88 */
0x0007d7d4 addiu t9, t9, -0x3578 | t9 += -0x3578;
0x0007d7d8 move a0, s0 | a0 = s0;
0x0007d7dc bal 0x7ca88 | fcn_0007ca88 ();
0x0007d7e0 move fp, v0 | fp = v0;
0x0007d7e4 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 <= 0) {
0x0007d7e8 blez v0, 0x7d72c | goto label_4;
| }
0x0007d7ec lw v0, 0x1c(s0) | v0 = *((s0 + 7));
0x0007d7f0 andi v0, v0, 0x200 | v0 &= aav.0x00000200;
0x0007d7f4 lw v0, 0x30(sp) | v0 = *(var_30h);
| if (v0 == 0) {
0x0007d7f8 beqz v0, 0x7d6dc | goto label_5;
| }
0x0007d7fc lw v0, 0x24(sp) | v0 = *(var_24h);
0x0007d800 lw v0, 0x30(sp) | v0 = *(var_30h);
| if (v0 != 0) {
0x0007d804 bnez v0, 0x7d6dc | goto label_5;
| }
0x0007d808 move fp, zero | fp = 0;
0x0007d80c b 0x7d72c | goto label_4;
| label_14:
0x0007d810 lw t9, -0x6e2c(gp) | t9 = sym.imp.__stack_chk_fail;
0x0007d814 jalr t9 | t9 ();
0x0007d818 nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x881ac */
| #include <stdint.h>
|
; (fcn) sym.introspect_write_child_nodes () | void introspect_write_child_nodes () {
0x000881ac lui gp, 7 |
0x000881b0 addiu gp, gp, 0x70d4 |
0x000881b4 addu gp, gp, t9 | gp += t9;
0x000881b8 addiu sp, sp, -0x38 |
0x000881bc sw gp, 0x18(sp) | *(var_18h) = gp;
0x000881c0 sw ra, 0x34(sp) | *(var_34h) = ra;
0x000881c4 sw s4, 0x30(sp) | *(var_30h) = s4;
0x000881c8 sw s3, 0x2c(sp) | *(var_2ch) = s3;
0x000881cc sw s2, 0x28(sp) | *(var_28h) = s2;
0x000881d0 sw s1, 0x24(sp) | *(var_24h) = s1;
0x000881d4 sw s0, 0x20(sp) | *(var_20h) = s0;
0x000881d8 lw v0, -0x7fd8(gp) | v0 = *(gp);
| if (a0 == 0) {
0x000881dc beqz a0, 0x88290 | goto label_2;
| }
0x000881e0 move s1, a2 | s1 = a2;
| if (a2 == 0) {
0x000881e4 beqz a2, 0x882b4 | goto label_3;
| }
0x000881e8 lw s3, -0x7fd8(gp) | s3 = *(gp);
0x000881ec move s4, a0 | s4 = a0;
0x000881f0 move s2, a1 | s2 = a1;
| /* str.__node_name__s____n */
0x000881f4 addiu s3, s3, -0x1e50 | s3 += -0x1e50;
0x000881f8 b 0x8820c |
| while (v0 == 0) {
| label_1:
0x000881fc lw t9, -0x6dc8(gp) | t9 = *((gp - 7026));
| label_0:
0x00088200 move a0, s0 | a0 = s0;
0x00088204 jalr t9 | t9 ();
0x00088208 lw gp, 0x18(sp) | gp = *(var_18h);
0x0008820c lw t9, -0x7758(gp) | t9 = sym.internal_hashmap_first_key_and_value;
0x00088210 move a2, zero | a2 = 0;
0x00088214 addiu a1, zero, 1 | a1 = 1;
0x00088218 move a0, s2 | a0 = s2;
0x0008821c bal 0x96214 | sym_internal_hashmap_first_key_and_value ();
0x00088220 move s0, v0 | s0 = v0;
0x00088224 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x00088228 beqz v0, 0x88270 | goto label_4;
| }
0x0008822c lw t9, -0x7540(gp) | t9 = sym.object_path_startswith;
0x00088230 move a1, s1 | a1 = s1;
0x00088234 move a0, s0 | a0 = s0;
0x00088238 jalr t9 | t9 ();
0x0008823c lw gp, 0x18(sp) | gp = *(var_18h);
0x00088240 beqz v0, 0x881fc |
| }
0x00088244 lb v1, (v0) | v1 = *(v0);
0x00088248 lw t9, -0x6dc8(gp) | t9 = *((gp - 7026));
| if (v1 == 0) {
0x0008824c beqz v1, 0x88200 | goto label_0;
| }
0x00088250 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00088254 lw a0, (s4) | a0 = *(s4);
0x00088258 move a3, v0 | a3 = v0;
0x0008825c move a2, s3 | a2 = s3;
0x00088260 addiu a1, zero, 1 | a1 = 1;
0x00088264 jalr t9 | t9 ();
0x00088268 lw gp, 0x18(sp) | gp = *(var_18h);
0x0008826c b 0x881fc | goto label_1;
| label_4:
0x00088270 lw ra, 0x34(sp) | ra = *(var_34h);
0x00088274 lw s4, 0x30(sp) | s4 = *(var_30h);
0x00088278 lw s3, 0x2c(sp) | s3 = *(var_2ch);
0x0008827c lw s2, 0x28(sp) | s2 = *(var_28h);
0x00088280 lw s1, 0x24(sp) | s1 = *(var_24h);
0x00088284 lw s0, 0x20(sp) | s0 = *(var_20h);
0x00088288 addiu sp, sp, 0x38 |
0x0008828c jr ra | return v0;
| label_2:
0x00088290 lw a2, -0x7fd8(gp) | a2 = *(gp);
0x00088294 lw a1, -0x7fd8(gp) | a1 = *(gp);
| /* str.introspect_write_child_nodes */
0x00088298 addiu v0, v0, -0x1d04 | v0 += -0x1d04;
0x0008829c lw t9, -0x7f88(gp) | t9 = sym.log_assert_failed_realm;
0x000882a0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x000882a4 addiu a3, zero, 0x2d | a3 = 0x2d;
| /* esilref: 'src/libsystemd/sd-bus/bus-introspect.c' */
0x000882a8 addiu a2, a2, -0x253d | a2 += -0x253d;
0x000882ac addiu a1, a1, -0x3f2c | a1 += -0x3f2c;
0x000882b0 bal 0x991c4 | sym_log_assert_failed_realm ();
| label_3:
0x000882b4 lw a2, -0x7fd8(gp) | a2 = *(gp);
0x000882b8 lw a1, -0x7fd8(gp) | a1 = *(gp);
0x000882bc addiu v0, v0, -0x1d04 | v0 += -0x1d04;
0x000882c0 lw t9, -0x7f88(gp) | t9 = sym.log_assert_failed_realm;
0x000882c4 sw v0, 0x10(sp) | *(var_10h) = v0;
0x000882c8 addiu a3, zero, 0x2e | a3 = 0x2e;
| /* esilref: 'src/libsystemd/sd-bus/bus-introspect.c' */
0x000882cc addiu a2, a2, -0x253d | a2 += -0x253d;
| /* str.prefix */
0x000882d0 addiu a1, a1, -0x5214 | a1 += -0x5214;
0x000882d4 move a0, zero | a0 = 0;
0x000882d8 bal 0x991c4 | return sym_log_assert_failed_realm ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x882dc */
| #include <stdint.h>
|
; (fcn) sym.introspect_write_interface () | void introspect_write_interface () {
0x000882dc lui gp, 7 |
0x000882e0 addiu gp, gp, 0x6fa4 |
0x000882e4 addu gp, gp, t9 | gp += t9;
0x000882e8 addiu sp, sp, -0x60 |
0x000882ec sw s5, 0x4c(sp) | *(var_4ch) = s5;
0x000882f0 lw s5, -0x6de8(gp) | s5 = *((gp - 7034));
0x000882f4 sw s2, 0x40(sp) | *(var_40h) = s2;
0x000882f8 sw gp, 0x18(sp) | *(var_18h) = gp;
0x000882fc sw ra, 0x5c(sp) | *(var_5ch) = ra;
0x00088300 sw fp, 0x58(sp) | *(var_58h) = fp;
0x00088304 sw s7, 0x54(sp) | *(var_54h) = s7;
0x00088308 sw s6, 0x50(sp) | *(var_50h) = s6;
0x0008830c sw s4, 0x48(sp) | *(var_48h) = s4;
0x00088310 sw s3, 0x44(sp) | *(var_44h) = s3;
0x00088314 sw s1, 0x3c(sp) | *(var_3ch) = s1;
0x00088318 sw s0, 0x38(sp) | *(var_38h) = s0;
0x0008831c lw s2, -0x7fd4(gp) | s2 = *(gp);
0x00088320 lw v0, (s5) | v0 = *(s5);
0x00088324 addiu s2, s2, 0x6f60 | s2 += 0x6f60;
0x00088328 sw v0, 0x34(sp) | *(var_34h) = v0;
0x0008832c sw s2, 0x30(sp) | *(var_30h) = s2;
| if (a0 == 0) {
0x00088330 beqz a0, 0x88674 | goto label_3;
| }
0x00088334 move s1, a1 | s1 = a1;
| if (a1 == 0) {
0x00088338 beqz a1, 0x8869c | goto label_4;
| }
0x0008833c lbu v0, (a1) | v0 = *(a1);
0x00088340 move s0, a0 | s0 = a0;
0x00088344 addiu a0, zero, 0x3e | a0 = 0x3e;
0x00088348 move fp, a1 | fp = a1;
| if (v0 == a0) {
0x0008834c beq v0, a0, 0x8862c | goto label_5;
| }
0x00088350 lw v1, -0x7fd8(gp) | v1 = *(gp);
0x00088354 lw s6, -0x7fd8(gp) | s6 = *(gp);
0x00088358 lw s3, -0x7594(gp) | s3 = *(gp);
0x0008835c lw s4, -0x7fd8(gp) | s4 = *(gp);
0x00088360 sw v1, 0x2c(sp) | *(var_2ch_2) = v1;
| /* str.readwrite */
0x00088364 addiu v1, s6, -0x1e3c | v1 = s6 + -0x1e3c;
0x00088368 lw s7, -0x7fd8(gp) | s7 = *(gp);
| /* fcn.00087c6c */
0x0008836c addiu s3, s3, 0x7c6c | s3 += 0x7c6c;
0x00088370 sw v1, 0x28(sp) | *(var_28h_2) = v1;
| /* str.read */
0x00088374 addiu s4, s4, -0x1e30 | s4 += -0x1e30;
0x00088378 b 0x88474 |
| while (v0 != a1) {
0x0008837c andi a0, a0, 2 | a0 &= 2;
0x00088380 addiu a0, zero, 0x50 | a0 = 0x50;
| if (a0 == 0) {
0x00088384 bnez a0, 0x88450 |
0x00088388 sltiu a0, v0, 0x51 | a0 = (v0 < 0x51) ? 1 : 0;
| if (v0 == a0) {
0x0008838c beq v0, a0, 0x884bc | goto label_6;
| }
0x00088390 addiu a0, zero, 0x53 | a0 = 0x53;
| if (a0 != 0) {
0x00088394 bnez a0, 0x88540 | goto label_7;
| }
0x00088398 addiu a0, zero, 0x57 | a0 = 0x57;
| if (v0 == a0) {
0x0008839c bnel v0, a0, 0x884b4 | goto label_8;
| }
0x000883a0 lw a2, -0x7fd8(gp) | a2 = *(gp);
0x000883a4 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x000883a8 lw a3, 8(fp) | a3 = *(arg_8h);
0x000883ac lw a0, (s0) | a0 = *(s0);
| /* str.___signal_name__s___n */
0x000883b0 addiu a2, a2, -0x1d78 | a2 += -0x1d78;
0x000883b4 addiu a1, zero, 1 | a1 = 1;
0x000883b8 jalr t9 | t9 ();
0x000883bc lw gp, 0x18(sp) | gp = *(var_18h);
0x000883c0 lw t9, -0x7474(gp) | t9 = sym.bus_vtable_has_names;
0x000883c4 move a0, s1 | a0 = s1;
0x000883c8 bal 0x7d9b8 | sym_bus_vtable_has_names ();
0x000883cc lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x000883d0 beqz v0, 0x883e0 |
0x000883d4 lw v0, 0x1c(fp) | v0 = *(arg_1ch);
| if (v0 != 0) {
0x000883d8 movz v0, s2, v0 | v0 = s2;
| }
0x000883dc sw v0, 0x30(sp) | *(var_30h) = v0;
| }
0x000883e0 lw t9, -0x7594(gp) | t9 = *(gp);
0x000883e4 lw a1, 0xc(fp) | a1 = *(arg_ch);
0x000883e8 move a3, zero | a3 = 0;
0x000883ec addiu a2, sp, 0x30 | a2 = sp + 0x30;
| if (a1 != 0) {
0x000883f0 movz a1, s2, a1 | a1 = s2;
| }
| /* fcn.00087e64 */
0x000883f4 addiu t9, t9, 0x7e64 | t9 += 0x7e64;
0x000883f8 move a0, s0 | a0 = s0;
0x000883fc bal 0x87e64 | fcn_00087e64 ();
0x00088400 lwl a3, 4(fp) | __asm ("lwl a3, (arg_4h)");
0x00088404 lw v0, 4(fp) | v0 = *(arg_4h);
0x00088408 lbu a2, (fp) | a2 = *(fp);
0x0008840c lwr a3, 1(fp) | __asm ("lwr a3, (arg_1h)");
0x00088410 ext v0, v0, 8, 0x18 | __asm ("ext v0, v0, 8, 0x18");
0x00088414 addiu a1, s0, 0xc | a1 = s0 + 0xc;
0x00088418 move a0, s0 | a0 = s0;
0x0008841c sw a3, 0x10(sp) | *(var_10h) = a3;
0x00088420 move t9, s3 | t9 = s3;
0x00088424 sw v0, 0x14(sp) | *(var_14h) = v0;
0x00088428 bal 0x87c6c | fcn_00087c6c ();
0x0008842c lw gp, 0x18(sp) | gp = *(var_18h);
0x00088430 lw a3, (s0) | a3 = *(s0);
0x00088434 addiu a2, zero, 0xc | a2 = 0xc;
0x00088438 lw a0, -0x7fd8(gp) | a0 = *(gp);
0x0008843c lw t9, -0x6e8c(gp) | t9 = sym.imp.fwrite;
0x00088440 addiu a1, zero, 1 | a1 = 1;
| /* str.____signal__n */
0x00088444 addiu a0, a0, -0x1d60 | a0 += -0x1d60;
0x00088448 jalr t9 | t9 ();
0x0008844c lw gp, 0x18(sp) | gp = *(var_18h);
| }
| label_1:
0x00088450 lw t9, -0x7514(gp) | t9 = sym.bus_vtable_next;
| label_0:
0x00088454 move a1, fp | a1 = fp;
0x00088458 move a0, s1 | a0 = s1;
0x0008845c bal 0x7d9f0 | sym_bus_vtable_next ();
0x00088460 move fp, v0 | fp = v0;
0x00088464 lbu v0, (v0) | v0 = *(v0);
0x00088468 addiu a0, zero, 0x3e | a0 = 0x3e;
0x0008846c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == a0) {
0x00088470 beq v0, a0, 0x8862c | goto label_5;
| }
0x00088474 lwl a0, 4(fp) | __asm ("lwl a0, (arg_4h)");
0x00088478 addiu a1, zero, 0x3c | a1 = 0x3c;
0x0008847c lwr a0, 1(fp) | __asm ("lwr a0, (arg_1h)");
0x00088480 bne v0, a1, 0x8837c |
| }
0x00088484 andi a0, a0, 1 | a0 &= 1;
0x00088488 lw t9, -0x7514(gp) | t9 = sym.bus_vtable_next;
| if (a0 == 0) {
0x0008848c beqz a0, 0x88454 | goto label_0;
| }
0x00088490 lw v0, 0x2c(sp) | v0 = *(var_2ch_2);
0x00088494 lw t9, -0x6e8c(gp) | t9 = sym.imp.fwrite;
0x00088498 lw a3, (s0) | a3 = *(s0);
0x0008849c addiu a2, zero, 0x44 | a2 = 0x44;
0x000884a0 addiu a1, zero, 1 | a1 = 1;
0x000884a4 addiu a0, v0, -0x1e28 | a0 = v0 + -aav.0x00001e28;
0x000884a8 jalr t9 | t9 ();
0x000884ac lw gp, 0x18(sp) | gp = *(var_18h);
0x000884b0 b 0x88450 | goto label_1;
| label_8:
0x000884b4 lw t9, -0x7514(gp) | t9 = sym.bus_vtable_next;
| if (v0 != a0) {
0x000884b8 bne v0, a0, 0x88454 | goto label_0;
| }
| label_6:
0x000884bc addiu a1, zero, 0x57 | a1 = 0x57;
0x000884c0 lw a0, (s0) | a0 = *(s0);
0x000884c4 lw a3, 8(fp) | a3 = *(arg_8h);
0x000884c8 lw t0, 0xc(fp) | t0 = *(arg_ch);
| if (v0 == a1) {
0x000884cc beq v0, a1, 0x8866c | goto label_9;
| }
0x000884d0 move v0, s4 | v0 = s4;
| label_2:
0x000884d4 lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x000884d8 sw t0, 0x10(sp) | *(var_10h) = t0;
| /* str.___property_name__s__type__s__access__s___n */
0x000884dc addiu a2, s7, -0x1db8 | a2 = s7 + -0x1db8;
0x000884e0 addiu a1, zero, 1 | a1 = 1;
0x000884e4 sw v0, 0x14(sp) | *(var_14h) = v0;
0x000884e8 jalr t9 | t9 ();
0x000884ec lwl a3, 4(fp) | __asm ("lwl a3, (arg_4h)");
0x000884f0 lw v0, 4(fp) | v0 = *(arg_4h);
0x000884f4 lbu a2, (fp) | a2 = *(fp);
0x000884f8 lwr a3, 1(fp) | __asm ("lwr a3, (arg_1h)");
0x000884fc ext v0, v0, 8, 0x18 | __asm ("ext v0, v0, 8, 0x18");
0x00088500 addiu a1, s0, 0xc | a1 = s0 + 0xc;
0x00088504 move a0, s0 | a0 = s0;
0x00088508 sw a3, 0x10(sp) | *(var_10h) = a3;
0x0008850c move t9, s3 | t9 = s3;
0x00088510 sw v0, 0x14(sp) | *(var_14h) = v0;
0x00088514 bal 0x87c6c | fcn_00087c6c ();
0x00088518 lw gp, 0x18(sp) | gp = *(var_18h);
0x0008851c lw a3, (s0) | a3 = *(s0);
0x00088520 addiu a2, zero, 0xe | a2 = 0xe;
0x00088524 lw a0, -0x7fd8(gp) | a0 = *(gp);
0x00088528 lw t9, -0x6e8c(gp) | t9 = sym.imp.fwrite;
0x0008852c addiu a1, zero, 1 | a1 = 1;
| /* str.____property__n */
0x00088530 addiu a0, a0, -0x1d88 | a0 += -0x1d88;
0x00088534 jalr t9 | t9 ();
0x00088538 lw gp, 0x18(sp) | gp = *(var_18h);
0x0008853c b 0x88450 | goto label_1;
| label_7:
0x00088540 addiu a0, zero, 0x4d | a0 = 0x4d;
0x00088544 lw a2, -0x7fd8(gp) | a2 = *(gp);
| if (v0 != a0) {
0x00088548 bne v0, a0, 0x88450 | goto label_1;
| }
0x0008854c lw t9, -0x70d0(gp) | t9 = sym.imp.__fprintf_chk
0x00088550 lw a3, 8(fp) | a3 = *(arg_8h);
0x00088554 lw a0, (s0) | a0 = *(s0);
| /* str.___method_name__s___n */
0x00088558 addiu a2, a2, -0x1de0 | a2 += -0x1de0;
0x0008855c addiu a1, zero, 1 | a1 = 1;
0x00088560 jalr t9 | t9 ();
0x00088564 lw gp, 0x18(sp) | gp = *(var_18h);
0x00088568 lw t9, -0x7474(gp) | t9 = sym.bus_vtable_has_names;
0x0008856c move a0, s1 | a0 = s1;
0x00088570 bal 0x7d9b8 | sym_bus_vtable_has_names ();
0x00088574 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00088578 beqz v0, 0x88588 |
0x0008857c lw v0, 0x1c(fp) | v0 = *(arg_1ch);
| if (v0 != 0) {
0x00088580 movz v0, s2, v0 | v0 = s2;
| }
0x00088584 sw v0, 0x30(sp) | *(var_30h) = v0;
| }
0x00088588 lw t9, -0x7594(gp) | t9 = *(gp);
0x0008858c lw a3, -0x7fd8(gp) | a3 = *(gp);
0x00088590 lw a1, 0xc(fp) | a1 = *(arg_ch);
| /* fcn.00087e64 */
0x00088594 addiu t9, t9, 0x7e64 | t9 += 0x7e64;
0x00088598 addiu s6, sp, 0x30 | s6 = sp + 0x30;
| /* esilref: 'in' */
0x0008859c addiu a3, a3, 0x42fc | a3 += 0x42fc;
0x000885a0 move a2, s6 | a2 = s6;
| if (a1 != 0) {
0x000885a4 movz a1, s2, a1 | a1 = s2;
| }
0x000885a8 move a0, s0 | a0 = s0;
0x000885ac sw t9, 0x24(sp) | *(var_24h_3) = t9;
0x000885b0 bal 0x87e64 | fcn_00087e64 ();
0x000885b4 lw gp, 0x18(sp) | gp = *(var_18h);
0x000885b8 lw a1, 0x10(fp) | a1 = *(arg_10h);
0x000885bc lw t9, 0x24(sp) | t9 = *(var_24h_3);
0x000885c0 lw a3, -0x7fd4(gp) | a3 = *(gp);
0x000885c4 move a2, s6 | a2 = s6;
| /* esilref: 'out' */
0x000885c8 addiu a3, a3, 0x629c | a3 += 0x629c;
| if (a1 != 0) {
0x000885cc movz a1, s2, a1 | a1 = s2;
| }
0x000885d0 move a0, s0 | a0 = s0;
0x000885d4 jalr t9 | t9 ();
0x000885d8 lwl a3, 4(fp) | __asm ("lwl a3, (arg_4h)");
0x000885dc lw v0, 4(fp) | v0 = *(arg_4h);
0x000885e0 lbu a2, (fp) | a2 = *(fp);
0x000885e4 lwr a3, 1(fp) | __asm ("lwr a3, (arg_1h)");
0x000885e8 ext v0, v0, 8, 0x18 | __asm ("ext v0, v0, 8, 0x18");
0x000885ec addiu a1, s0, 0xc | a1 = s0 + 0xc;
0x000885f0 move a0, s0 | a0 = s0;
0x000885f4 sw a3, 0x10(sp) | *(var_10h) = a3;
0x000885f8 move t9, s3 | t9 = s3;
0x000885fc sw v0, 0x14(sp) | *(var_14h) = v0;
0x00088600 bal 0x87c6c | fcn_00087c6c ();
0x00088604 lw gp, 0x18(sp) | gp = *(var_18h);
0x00088608 lw a3, (s0) | a3 = *(s0);
0x0008860c addiu a2, zero, 0xc | a2 = 0xc;
0x00088610 lw a0, -0x7fd8(gp) | a0 = *(gp);
0x00088614 lw t9, -0x6e8c(gp) | t9 = sym.imp.fwrite;
0x00088618 addiu a1, zero, 1 | a1 = 1;
| /* str.____method__n */
0x0008861c addiu a0, a0, -0x1dc8 | a0 += -0x1dc8;
0x00088620 jalr t9 | t9 ();
0x00088624 lw gp, 0x18(sp) | gp = *(var_18h);
0x00088628 b 0x88450 | goto label_1;
| label_5:
0x0008862c lw a0, 0x34(sp) | a0 = *(var_34h);
0x00088630 lw v1, (s5) | v1 = *(s5);
0x00088634 move v0, zero | v0 = 0;
| if (a0 == v1) {
0x00088638 bne a0, v1, 0x886c8 |
0x0008863c lw ra, 0x5c(sp) | ra = *(var_5ch);
0x00088640 lw fp, 0x58(sp) | fp = *(var_58h);
0x00088644 lw s7, 0x54(sp) | s7 = *(var_54h);
0x00088648 lw s6, 0x50(sp) | s6 = *(var_50h);
0x0008864c lw s5, 0x4c(sp) | s5 = *(var_4ch);
0x00088650 lw s4, 0x48(sp) | s4 = *(var_48h);
0x00088654 lw s3, 0x44(sp) | s3 = *(var_44h);
0x00088658 lw s2, 0x40(sp) | s2 = *(var_40h);
0x0008865c lw s1, 0x3c(sp) | s1 = *(var_3ch);
0x00088660 lw s0, 0x38(sp) | s0 = *(var_38h);
0x00088664 addiu sp, sp, 0x60 |
0x00088668 jr ra | return v0;
| label_9:
0x0008866c lw v0, 0x28(sp) | v0 = *(var_28h_2);
0x00088670 b 0x884d4 | goto label_2;
| label_3:
0x00088674 lw v0, -0x7fd8(gp) | v0 = *(gp);
0x00088678 lw a2, -0x7fd8(gp) | a2 = *(gp);
0x0008867c lw a1, -0x7fd8(gp) | a1 = *(gp);
| /* str.introspect_write_interface */
0x00088680 addiu v0, v0, -0x1d20 | v0 += -aav.0x00001d20;
0x00088684 lw t9, -0x7f88(gp) | t9 = sym.log_assert_failed_realm;
0x00088688 sw v0, 0x10(sp) | *(var_10h) = v0;
0x0008868c addiu a3, zero, 0x79 | a3 = 0x79;
| /* esilref: 'src/libsystemd/sd-bus/bus-introspect.c' */
0x00088690 addiu a2, a2, -0x253d | a2 += -0x253d;
0x00088694 addiu a1, a1, -0x3f2c | a1 += -0x3f2c;
0x00088698 bal 0x991c4 | sym_log_assert_failed_realm ();
| label_4:
0x0008869c lw v0, -0x7fd8(gp) | v0 = *(gp);
0x000886a0 lw a2, -0x7fd8(gp) | a2 = *(gp);
0x000886a4 lw a1, -0x7fcc(gp) | a1 = *(gp);
| /* str.introspect_write_interface */
0x000886a8 addiu v0, v0, -0x1d20 | v0 += -aav.0x00001d20;
0x000886ac lw t9, -0x7f88(gp) | t9 = sym.log_assert_failed_realm;
0x000886b0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x000886b4 addiu a3, zero, 0x7a | a3 = 0x7a;
| /* esilref: 'src/libsystemd/sd-bus/bus-introspect.c' */
0x000886b8 addiu a2, a2, -0x253d | a2 += -0x253d;
0x000886bc addiu a1, a1, -0x214c | a1 += -0x214c;
0x000886c0 move a0, zero | a0 = 0;
0x000886c4 bal 0x991c4 | sym_log_assert_failed_realm ();
| }
0x000886c8 lw t9, -0x6e2c(gp) | t9 = sym.imp.__stack_chk_fail;
0x000886cc jalr t9 | t9 ();
0x000886d0 nop |
| }
[*] Function fprintf used 16 times udevadm