[*] Binary protection state of api-discovery
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function system tear down of api-discovery
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/api-discovery @ 0x1c5c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00001c5c () | void fcn_00001c5c (int16_t arg1) {
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_48h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int32_t var_0h_3;
| int16_t var_80h;
| int32_t var_ch_3;
| int16_t var_8ch;
| r0 = arg1;
0x00001c5c ldr r2, [pc, 0x294] |
0x00001c5e ldr r3, [pc, 0x298] | r3 = *(0x1efa);
0x00001c60 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001c64 sub sp, 0x94 |
0x00001c66 ldr.w r8, [pc, 0x294] | r8 = *(0x00001efc);
0x00001c6a add r2, pc | r2 = 0x3b62;
0x00001c6c str r0, [sp, 0x18] | var_18h = r0;
0x00001c6e ldr r3, [r2, r3] |
0x00001c70 add r8, pc | r8 += pc;
0x00001c72 mov r0, r8 | r0 = r8;
0x00001c74 ldr r3, [r3] | r3 = *(0x3b62);
0x00001c76 str r3, [sp, 0x8c] | var_8ch = r3;
0x00001c78 mov.w r3, 0 | r3 = 0;
0x00001c7c blx 0x1264 | r0 = g_hash_table_new_full ();
0x00001c80 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00001c82 blt.w 0x1e4c | goto label_2;
| }
0x00001c86 ldr r3, [pc, 0x278] |
0x00001c88 movs r6, 0 | r6 = 0;
0x00001c8a ldr.w r0, [r8] | r0 = *(r8);
0x00001c8e mov r1, r6 | r1 = r6;
0x00001c90 ldr r2, [pc, 0x270] |
0x00001c92 add r3, pc | r3 = 0x3b98;
0x00001c94 strd r3, r6, [sp] | __asm ("strd r3, r6, [sp]");
0x00001c98 ldr r3, [pc, 0x26c] |
0x00001c9a add r2, pc | r2 = 0x3ba2;
0x00001c9c add r3, pc | r3 = 0x3ba8;
0x00001c9e blx 0x13f8 | r0 = fcn_000013f8 ();
0x00001ca2 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00001ca4 blt.w 0x1e78 | goto label_3;
| }
0x00001ca8 ldr r4, [pc, 0x260] |
0x00001caa add r3, sp, 0x48 | r3 += var_48h;
0x00001cac mov r5, r3 | r5 = r3;
0x00001cae str r3, [sp, 0x1c] | var_1ch = r3;
0x00001cb0 add r7, sp, 0x28 | r7 += var_28h;
0x00001cb2 str r6, [sp, 0x24] | var_24h = r6;
0x00001cb4 add r4, pc | r4 = 0x3bc4;
0x00001cb6 ldm r4!, {r0, r1, r2, r3} | r0 = *(r4!);
| r1 = *((r4! + 4));
| r2 = *((r4! + 8));
| r3 = *((r4! + 12));
0x00001cb8 stm r7!, {r0, r1, r2, r3} | *(r7!) = r0;
| *((r7! + 4)) = r1;
| *((r7! + 8)) = r2;
| *((r7! + 12)) = r3;
0x00001cba ldm.w r4, {r0, r1, r2, r3} | r0 = *(r4);
| r1 = *((r4 + 4));
| r2 = *((r4 + 8));
| r3 = *((r4 + 12));
0x00001cbe stm.w r7, {r0, r1, r2, r3} | *(r7) = r0;
| *((r7 + 4)) = r1;
| *((r7 + 8)) = r2;
| *((r7 + 12)) = r3;
0x00001cc2 movs r2, 0x20 | r2 = 0x20;
0x00001cc4 mov r1, r6 | r1 = r6;
0x00001cc6 mov r0, r5 | r0 = r5;
0x00001cc8 blx 0x12d0 | g_hash_table_insert ();
0x00001ccc add r0, sp, 0x24 | r0 += var_24h;
0x00001cce bl 0x276c | r0 = fcn_0000276c (r0, r1, r2);
0x00001cd2 mov r4, r0 | r4 = r0;
0x00001cd4 adds r0, 2 | r0 += 2;
0x00001cd6 adds r4, 1 | r4++;
0x00001cd8 lsls r0, r0, 5 | r0 <<= 5;
0x00001cda lsls r4, r4, 2 | r4 <<= 2;
0x00001cdc blx 0x13a4 | r0 = fcn_000013a4 ();
0x00001ce0 mov r5, r0 | r5 = r0;
0x00001ce2 str r0, [sp, 0xc] | var_ch_2 = r0;
0x00001ce4 mov r0, r4 | r0 = r4;
0x00001ce6 blx 0x13a4 | fcn_000013a4 ();
0x00001cea str.w r0, [r8, 8] | __asm ("str.w r0, [r8, 8]");
0x00001cee mov r0, r4 | r0 = r4;
0x00001cf0 blx 0x13a4 | fcn_000013a4 ();
0x00001cf4 add.w lr, sp, 0x28 | lr += var_28h;
0x00001cf8 mov r4, r0 | r4 = r0;
0x00001cfa str.w r0, [r8, 0xc] | __asm ("str.w r0, [r8, 0xc]");
0x00001cfe mov ip, r5 |
0x00001d00 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00001d04 ldr r5, [sp, 0x24] | r5 = var_24h;
0x00001d06 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00001d0a ldm.w r7, {r0, r1, r2, r3} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
0x00001d0e stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00001d12 cmp r5, 0 |
| if (r5 == 0) {
0x00001d14 beq.w 0x1e72 | goto label_4;
| }
0x00001d16 strh r5, [r5, 4] | *((r5 + 4)) = r5;
0x00001d18 ldr.w fp, [pc, 0x1f4] |
0x00001d1c mov r4, r6 | r4 = r6;
0x00001d1e add.w sb, sp, 0x78 | sb += var_78h;
0x00001d22 ldr r3, [pc, 0x1f0] |
0x00001d24 add fp, pc | fp = 0x3c38;
0x00001d26 add r3, pc | r3 = 0x3c40;
0x00001d28 str r3, [sp, 0x10] | var_10h_2 = r3;
0x00001d2a add r3, sp, 0x68 | r3 += var_68h;
0x00001d2c str r3, [sp, 0x14] | var_14h_2 = r3;
| do {
0x00001d2e ldr r6, [r5] | r6 = *(r5);
0x00001d30 lsl.w sl, r4, 2 | sl = r4 << 2;
0x00001d34 ldr r0, [r6] | r0 = *(r6);
0x00001d36 blx 0x13bc | fcn_000013bc ();
0x00001d3a ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x00001d3e movs r2, 0x5f | r2 = 0x5f;
0x00001d40 mov r1, fp | r1 = fp;
0x00001d42 mov r7, r0 | r7 = r0;
0x00001d44 str r3, [sp, 8] | var_8h = r3;
0x00001d46 blx 0x1434 | fcn_00001434 ();
0x00001d4a ldr r3, [sp, 8] | r3 = var_8h;
0x00001d4c str.w r0, [r3, r4, lsl 2] | __asm ("str.w r0, [r3, r4, lsl 2]");
0x00001d50 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00001d52 ldr.w r6, [r8, 0xc] | r6 = *((r8 + 0xc));
0x00001d56 blx 0x13bc | fcn_000013bc ();
0x00001d5a ldr r3, [sp, 0x10] | r3 = var_10h_2;
0x00001d5c movs r2, 0x50 | r2 = 0x50;
0x00001d5e strb.w r2, [sp, 0x68] | var_68h = r2;
0x00001d62 str.w r0, [r6, r4, lsl 2] | __asm ("str.w r0, [r6, r4, lsl 2]");
0x00001d66 adds r4, 1 | r4++;
0x00001d68 str r3, [sp, 0x74] | var_74h = r3;
0x00001d6a movs r3, 0 | r3 = 0;
0x00001d6c strb.w r3, [sp, 0x6c] | var_6ch = r3;
0x00001d70 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x00001d72 str.w r3, [sb, 0xc] | __asm ("str.w r3, [var_ch_3]");
0x00001d76 str.w sl, [sp, 0x80] | __asm ("str.w sl, [var_80h]");
0x00001d7a bfi r2, r3, 8, 0x18 | value_0 = BIT_MASK (8, 0x18);
| value_1 = r3 & value_0;
| value_0 = ~value_0;
| r2 &= value_0;
| r2 |= value_1;
0x00001d7e strd r3, r3, [sb] | __asm ("strd r3, r3, [sb]");
0x00001d82 ldrb.w r3, [sp, 0x68] | r3 = var_68h;
0x00001d86 ldr.w ip, [sp, 0x14] | ip = var_14h_2;
0x00001d8a str r7, [sp, 0x70] | var_70h = r7;
0x00001d8c lsls r7, r4, 5 | r7 = r4 << 5;
0x00001d8e orr r3, r3, 0x1000 | r3 |= 0x1000;
0x00001d92 str r2, [sp, 0x6c] | var_6ch = r2;
0x00001d94 str r3, [sp, 0x68] | var_68h = r3;
0x00001d96 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00001d98 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00001d9a adds r6, r3, r7 | r6 = r3 + r7;
0x00001d9c ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00001da0 stm r6!, {r0, r1, r2, r3} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r3;
0x00001da2 ldm.w ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x00001da6 stm.w r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
0x00001daa cmp r5, 0 |
0x00001dac bne 0x1d2e |
| } while (r5 != 0);
0x00001dae ldr r0, [sp, 0x24] | r0 = var_24h;
0x00001db0 mov r6, sl | r6 = sl;
0x00001db2 adds r5, r6, 4 | r5 = r6 + 4;
0x00001db4 adds r7, 0x20 | r7 += 0x20;
0x00001db6 blx 0x1374 | fcn_00001374 ();
0x00001dba ldr.w r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x00001dbe adds r3, r4, r5 | r3 = r4 + r5;
| label_0:
0x00001dc0 ldr.w r8, [pc, 0x154] | r8 = *(0x00001f18);
0x00001dc4 movs r2, 0x3e | r2 = 0x3e;
0x00001dc6 ldr.w ip, [sp, 0x1c] | ip = var_1ch;
0x00001dca movs r6, 0 | r6 = 0;
0x00001dcc ldr r1, [sp, 0xc] | r1 = var_ch_2;
0x00001dce add r8, pc | r8 += pc;
0x00001dd0 strb.w r2, [sp, 0x48] | var_48h = r2;
0x00001dd4 ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x00001dd8 add r7, r1 | r7 += r1;
0x00001dda str r6, [r2, r5] | *((r2 + r5)) = r6;
0x00001ddc str r6, [r3] | *(r3) = r6;
0x00001dde strd r1, r4, [sp] | __asm ("strd r1, r4, [sp]");
0x00001de2 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00001de6 ldr.w r4, [r8] | r4 = *(r8);
0x00001dea stm r7!, {r0, r1, r2, r3} | *(r7!) = r0;
| *((r7! + 4)) = r1;
| *((r7! + 8)) = r2;
| *((r7! + 12)) = r3;
0x00001dec ldm.w ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x00001df0 stm.w r7, {r0, r1, r2, r3} | *(r7) = r0;
| *((r7 + 4)) = r1;
| *((r7 + 8)) = r2;
| *((r7 + 12)) = r3;
0x00001df4 mov r0, r4 | r0 = r4;
0x00001df6 ldr r3, [pc, 0x124] |
0x00001df8 mov r1, r6 | r1 = r6;
0x00001dfa ldr r2, [pc, 0x124] |
0x00001dfc add r3, pc | r3 = 0x3d1e;
0x00001dfe add r2, pc | r2 = 0x3d24;
0x00001e00 blx 0x13f8 | r0 = fcn_000013f8 ();
0x00001e04 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00001e06 blt 0x1e96 | goto label_5;
| }
0x00001e08 ldr r1, [pc, 0x118] |
0x00001e0a movs r2, 0 | r2 = 0;
0x00001e0c ldr.w r0, [r8] | r0 = *(r8);
0x00001e10 movs r3, 0 | r3 = 0;
0x00001e12 add r1, pc | r1 = 0x3d3a;
0x00001e14 blx 0x11f0 | fcn_000011f0 ();
0x00001e16 strd r1, lr, [ip, 0x14]! | __asm ("strd r1, lr, [ip, 0x14]!");
| if (r3 < 0) {
0x00001e1a blt 0x1eb4 | goto label_6;
| }
0x00001e1c ldr.w r0, [r8] | r0 = *(r8);
0x00001e20 mov r2, r6 | r2 = r6;
0x00001e22 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00001e24 blx 0x12a0 | r0 = errno_location ();
0x00001e28 subs r5, r0, 0 | r5 = r0 - 0;
0x00001e2a it ge |
| if (r5 < r0) {
0x00001e2c movge r5, r6 | r5 = r6;
| }
| if (r5 < r0) {
0x00001e2e blt 0x1ed2 | goto label_7;
| }
| do {
0x00001e30 ldr r2, [pc, 0xf4] |
0x00001e32 ldr r3, [pc, 0xc4] | r3 = *(0x1efa);
0x00001e34 add r2, pc | r2 = 0x3d60;
0x00001e36 ldr r3, [r2, r3] | r3 = *(0x3d60);
0x00001e38 ldr r2, [r3] | r2 = *(0x3d60);
0x00001e3a ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x00001e3c eors r2, r3 | r2 ^= r3;
0x00001e3e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001e42 bne 0x1ef0 | goto label_8;
| }
0x00001e44 mov r0, r5 | r0 = r5;
0x00001e46 add sp, 0x94 |
0x00001e48 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x00001e4c rsbs r0, r5, 0 | r0 = r5 - ;
0x00001e4e blx 0x1258 | sd_bus_open_system ()
0x00001e52 ldr r3, [pc, 0xd8] |
0x00001e54 mov.w r1, 0x100 | r1 = 0x100;
0x00001e58 ldr r2, [pc, 0xd4] |
0x00001e5a str r0, [sp] | *(sp) = r0;
0x00001e5c movs r0, 0 | r0 = 0;
0x00001e5e add r3, pc | r3 = 0x3d90;
0x00001e60 add r2, pc | r2 = 0x3d94;
0x00001e62 blx 0x1314 | fcn_00001314 ();
| label_1:
0x00001e66 ldr r3, [pc, 0xcc] |
0x00001e68 add r3, pc | r3 = 0x3da2;
0x00001e6a ldr r0, [r3] | r0 = *(0x3da2);
0x00001e6c blx 0x1398 | fcn_00001398 ();
0x00001e70 b 0x1e30 |
| } while (1);
| label_4:
0x00001e72 mov r3, r4 | r3 = r4;
0x00001e74 movs r7, 0x20 | r7 = 0x20;
0x00001e76 b 0x1dc0 | goto label_0;
| label_3:
0x00001e78 rsbs r0, r5, 0 | r0 = r5 - ;
0x00001e7a blx 0x1258 | sd_bus_open_system ()
0x00001e7e ldr r3, [pc, 0xb8] |
0x00001e80 mov r1, r0 | r1 = r0;
0x00001e82 ldr r2, [pc, 0xb8] |
0x00001e84 mov r0, r6 | r0 = r6;
0x00001e86 str r1, [sp] | *(sp) = r1;
0x00001e88 mov.w r1, 0x100 | r1 = 0x100;
0x00001e8c add r3, pc | r3 = 0x3dca;
0x00001e8e add r2, pc | r2 = 0x3dd0;
0x00001e90 blx 0x1314 | fcn_00001314 ();
0x00001e94 b 0x1e66 | goto label_1;
| label_5:
0x00001e96 rsbs r0, r5, 0 | r0 = r5 - ;
0x00001e98 blx 0x1258 | sd_bus_open_system ()
0x00001e9c ldr r3, [pc, 0xa0] |
0x00001e9e mov r1, r0 | r1 = r0;
0x00001ea0 ldr r2, [pc, 0xa0] |
0x00001ea2 mov r0, r6 | r0 = r6;
0x00001ea4 str r1, [sp] | *(sp) = r1;
0x00001ea6 mov.w r1, 0x100 | r1 = 0x100;
0x00001eaa add r3, pc | r3 = 0x3dee;
0x00001eac add r2, pc | r2 = 0x3df4;
0x00001eae blx 0x1314 | fcn_00001314 ();
0x00001eb2 b 0x1e66 | goto label_1;
| label_6:
0x00001eb4 rsbs r0, r5, 0 | r0 = r5 - ;
0x00001eb6 blx 0x1258 | sd_bus_open_system ()
0x00001eba ldr r3, [pc, 0x8c] |
0x00001ebc mov r1, r0 | r1 = r0;
0x00001ebe ldr r2, [pc, 0x8c] |
0x00001ec0 mov r0, r6 | r0 = r6;
0x00001ec2 str r1, [sp] | *(sp) = r1;
0x00001ec4 mov.w r1, 0x100 | r1 = 0x100;
0x00001ec8 add r3, pc | r3 = 0x3e16;
0x00001eca add r2, pc | r2 = 0x3e1c;
0x00001ecc blx 0x1314 | fcn_00001314 ();
0x00001ed0 b 0x1e66 | goto label_1;
| label_7:
0x00001ed2 rsbs r0, r5, 0 | r0 = r5 - ;
0x00001ed4 blx 0x1258 | sd_bus_open_system ()
0x00001ed8 ldr r3, [pc, 0x74] |
0x00001eda mov r1, r0 | r1 = r0;
0x00001edc ldr r2, [pc, 0x74] |
0x00001ede mov r0, r6 | r0 = r6;
0x00001ee0 str r1, [sp] | *(sp) = r1;
0x00001ee2 mov.w r1, 0x100 | r1 = 0x100;
0x00001ee6 add r3, pc | r3 = 0x3e3a;
0x00001ee8 add r2, pc | r2 = 0x3e40;
0x00001eea blx 0x1314 | fcn_00001314 ();
0x00001eee b 0x1e66 | goto label_1;
| label_8:
0x00001ef0 blx 0x11b4 | fcn_000011b4 ();
0x00001ef4 movs r2, 0x42 | r2 = 0x42;
0x00001ef6 movs r1, r0 | r1 = r0;
0x00001ef8 lsls r4, r7, 4 | r4 = r7 << 4;
0x00001efa movs r0, r0 |
0x00001efc movs r3, 0xc8 | r3 = 0xc8;
0x00001efe movs r1, r0 | r1 = r0;
0x00001f00 movs r0, 0xa2 | r0 = 0xa2;
0x00001f02 movs r1, r0 | r1 = r0;
0x00001f04 asrs r6, r3, 0x20 | r6 = r3 >> 0x20;
0x00001f06 movs r0, r0 |
0x00001f08 asrs r4, r0, 0x20 | r4 = r0 >> 0x20;
0x00001f0a movs r0, r0 |
0x00001f0c movs r3, 0x50 | r3 = 0x50;
0x00001f0e movs r1, r0 | r1 = r0;
0x00001f10 lsrs r0, r2, 0x1f | r0 = r2 >> 0x1f;
0x00001f12 movs r0, r0 |
0x00001f14 lsrs r6, r3, 0x12 | r6 = r3 >> 0x12;
0x00001f16 movs r0, r0 |
0x00001f18 movs r2, 0x6a | r2 = 0x6a;
0x00001f1a movs r1, r0 | r1 = r0;
0x00001f1c lsrs r4, r7, 0x1b | r4 = r7 >> 0x1b;
0x00001f1e movs r0, r0 |
0x00001f20 lsrs r2, r7, 0x1a | r2 = r7 >> 0x1a;
0x00001f22 movs r0, r0 |
0x00001f24 lsrs r6, r1, 0x1a | r6 = r1 >> 0x1a;
0x00001f26 movs r0, r0 |
0x00001f28 movs r0, 0x78 | r0 = 0x78;
0x00001f2a movs r1, r0 | r1 = r0;
0x00001f2c asrs r2, r7, 0xa | r2 = r7 >> 0xa;
0x00001f2e movs r0, r0 |
0x00001f30 lsrs r4, r2, 0x18 | r4 = r2 >> 0x18;
0x00001f32 movs r0, r0 |
0x00001f34 movs r1, 0xd0 | r1 = 0xd0;
0x00001f36 movs r1, r0 | r1 = r0;
0x00001f38 asrs r4, r1, 0xa | r4 = r1 >> 0xa;
0x00001f3a movs r0, r0 |
0x00001f3c lsrs r2, r0, 0x19 | r2 = r0 >> 0x19;
0x00001f3e movs r0, r0 |
0x00001f40 asrs r6, r5, 9 | r6 = r5 >> 9;
0x00001f42 movs r0, r0 |
0x00001f44 lsrs r4, r4, 0x18 | r4 >>= 0x18;
0x00001f46 movs r0, r0 |
0x00001f48 asrs r0, r2, 9 | r0 = r2 >> 9;
0x00001f4a movs r0, r0 |
0x00001f4c lsrs r2, r2, 0x19 | r2 >>= 0x19;
0x00001f4e movs r0, r0 |
0x00001f50 asrs r2, r6, 8 | r2 = r6 >> 8;
0x00001f52 movs r0, r0 |
0x00001f54 lsrs r4, r3, 0x19 | r4 = r3 >> 0x19;
0x00001f56 movs r0, r0 |
| }
[*] Function system used 6 times api-discovery