[*] Binary protection state of libmbedcrypto.so.2.2.1
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function printf tear down of libmbedcrypto.so.2.2.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0xac0c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_aes_self_test () | void mbedtls_aes_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| void * s1;
| char * format;
| int32_t var_20h;
| void * s2;
| char * var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_4h_2;
| int32_t var_8h_2;
| int32_t var_ch;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| int32_t var_70h;
| void * s;
| void * var_a0h;
| int32_t var_a4h;
| int32_t var_a8h;
| int32_t var_ach;
| int32_t var_e0h;
| int32_t var_1fch;
| r0 = arg1;
0x0000ac0c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000ac10 ldr sb, [pc, 0x7fc] |
0x0000ac14 sub sp, sp, 0x1fc |
0x0000ac18 add r3, sp, 0x80 | r3 += s;
0x0000ac1c str r0, [sp, 0x14] | var_14h = r0;
0x0000ac20 mov r2, 0x20 | r2 = 0x20;
0x0000ac24 mov r0, r3 | r0 = r3;
0x0000ac28 mov r1, 0 | r1 = 0;
0x0000ac2c add r5, sp, 0xe0 | r5 += var_e0h;
0x0000ac30 str r3, [sp, 0x18] | s1 = r3;
0x0000ac34 bl 0x8c28 | memset (r0, r1, r2);
0x0000ac38 mov r0, r5 | r0 = r5;
0x0000ac3c bl 0x8cc4 | fcn_00008cc4 ();
0x0000ac40 ldr sl, [pc, 0x7d0] | sl = *(0xb414);
0x0000ac44 add sb, pc, sb | sb = pc + sb;
0x0000ac48 add sl, pc, sl | sl = pc + sl;
0x0000ac4c add sb, sb, 0x30 | sb = 0xb440;
0x0000ac50 mov r8, 0 | r8 = 0;
0x0000ac54 add r4, sp, 0xa0 | r4 += var_a0h;
| label_1:
0x0000ac58 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000ac5c asr r7, r8, 1 | r7 = r8 >> 1;
0x0000ac60 add r6, r7, 2 | r6 = r7 + 2;
0x0000ac64 cmp r3, 0 |
0x0000ac68 lsl r6, r6, 6 | r6 <<= 6;
0x0000ac6c and fp, r8, 1 |
| if (r3 != 0) {
0x0000ac70 beq 0xac90 |
0x0000ac74 cmp fp, 0 |
| if (fp != 0) {
0x0000ac78 bne 0xb1d0 | goto label_19;
| }
0x0000ac7c ldr r2, [pc, 0x798] | r2 = *(0xb418);
0x0000ac80 add r2, pc, r2 | r2 = pc + r2;
| label_7:
0x0000ac84 mov r1, r6 | r1 = r6;
0x0000ac88 mov r0, sl | r0 = sl;
0x0000ac8c bl 0x8298 | printf (r0, r1, r2)
| }
0x0000ac90 mov r3, 0 | r3 = 0;
0x0000ac94 cmp fp, 0 |
0x0000ac98 mov r2, r6 | r2 = r6;
0x0000ac9c str r3, [r4] | *(r4) = r3;
0x0000aca0 str r3, [r4, 4] | var_a4h = r3;
0x0000aca4 str r3, [r4, 8] | var_a8h = r3;
0x0000aca8 str r3, [r4, 0xc] | var_ach = r3;
0x0000acac ldr r1, [sp, 0x18] | r1 = s1;
0x0000acb0 mov r0, r5 | r0 = r5;
| if (fp != 0) {
0x0000acb4 bne 0xad1c | goto label_20;
| }
0x0000acb8 bl 0x85bc | fcn_000085bc ();
0x0000acbc ldr r6, [pc, 0x75c] | r6 = *(0xb41c);
| do {
0x0000acc0 mov r3, r4 | r3 = r4;
0x0000acc4 mov r2, r4 | r2 = r4;
0x0000acc8 mov r1, 0 | r1 = 0;
0x0000accc mov r0, r5 | r0 = r5;
0x0000acd0 bl 0x8e20 | fcn_00008e20 ();
0x0000acd4 subs r6, r6, 1 | r6--;
0x0000acd8 bne 0xacc0 |
| } while (r6 != r6);
0x0000acdc ldr r3, [pc, 0x740] | r3 = "_";
0x0000ace0 ldr r1, [r4] | r1 = *(r4);
0x0000ace4 add r3, pc, r3 | r3 = pc + r3;
0x0000ace8 ldr r2, [r3, r7, lsl 4] | r2 = "_";
0x0000acec add r3, r3, r7, lsl 4 | r3 += (r7 << 4);
0x0000acf0 cmp r1, r2 |
| if (r1 == r2) {
0x0000acf4 beq 0xb1dc | goto label_21;
| }
| label_0:
0x0000acf8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000acfc cmp r3, 0 |
| if (r3 != 0) {
0x0000ad00 moveq r4, 1 | r4 = 1;
| }
| if (r3 != 0) {
0x0000ad04 bne 0xb214 | goto label_22;
| }
| label_9:
0x0000ad08 mov r0, r5 | r0 = r5;
0x0000ad0c bl 0x8334 | fcn_00008334 ();
0x0000ad10 mov r0, r4 | r0 = r4;
0x0000ad14 add sp, sp, 0x1fc |
0x0000ad18 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x0000ad1c bl 0x8928 | fcn_00008928 ();
0x0000ad20 ldr r6, [pc, 0x6f8] | r6 = *(0xb41c);
| do {
0x0000ad24 mov r3, r4 | r3 = r4;
0x0000ad28 mov r2, r4 | r2 = r4;
0x0000ad2c mov r1, 1 | r1 = 1;
0x0000ad30 mov r0, r5 | r0 = r5;
0x0000ad34 bl 0x8e20 | fcn_00008e20 ();
0x0000ad38 subs r6, r6, 1 | r6--;
0x0000ad3c bne 0xad24 |
| } while (r6 != r6);
0x0000ad40 ldr r3, [sb, r7, lsl 4] | offset_0 = r7 << 4;
| r3 = *((sb + offset_0));
0x0000ad44 ldr r2, [r4] | r2 = *(r4);
0x0000ad48 add r7, sb, r7, lsl 4 | r7 = sb + (r7 << 4);
0x0000ad4c cmp r2, r3 |
| if (r2 != r3) {
0x0000ad50 bne 0xacf8 | goto label_0;
| }
0x0000ad54 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000ad58 ldr r2, [sp, 0xa4] | r2 = var_a4h;
0x0000ad5c add r7, r7, 4 | r7 += 4;
0x0000ad60 cmp r2, r3 |
0x0000ad64 add r6, sp, 0xa4 | r6 += var_a4h;
| if (r2 != r3) {
0x0000ad68 bne 0xacf8 | goto label_0;
| }
0x0000ad6c ldr r2, [sp, 0xa8] | r2 = var_a8h;
0x0000ad70 ldr r3, [r7, 4]! | r3 = *((r7 += 4));
0x0000ad74 add r1, sp, 0xa8 | r1 += var_a8h;
0x0000ad78 cmp r2, r3 |
0x0000ad7c str r1, [sp, 0x30] | var_30h = r1;
| if (r2 != r3) {
0x0000ad80 bne 0xacf8 | goto label_0;
| }
0x0000ad84 ldr r3, [r7, 4] | r3 = *((r7 + 4));
| label_8:
0x0000ad88 ldr r2, [sp, 0xac] | r2 = var_ach;
0x0000ad8c add r1, sp, 0xac | r1 += var_ach;
0x0000ad90 cmp r2, r3 |
0x0000ad94 str r1, [sp, 0x34] | var_34h = r1;
| if (r2 != r3) {
0x0000ad98 bne 0xacf8 | goto label_0;
| }
0x0000ad9c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000ada0 cmp r3, 0 |
| if (r3 != 0) {
0x0000ada4 bne 0xb2c0 | goto label_23;
| }
| label_11:
0x0000ada8 add r8, r8, 1 | r8++;
0x0000adac cmp r8, 6 |
| if (r8 != 6) {
0x0000adb0 bne 0xac58 | goto label_1;
| }
0x0000adb4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000adb8 str r6, [sp, 0x2c] | var_2ch = r6;
0x0000adbc cmp r3, 0 |
| if (r3 != 0) {
0x0000adc0 beq 0xadcc |
0x0000adc4 mov r0, 0xa | r0 = 0xa;
0x0000adc8 bl 0x81d8 | putchar (r0);
| }
0x0000adcc ldr r1, [pc, 0x654] | r1 = *(0xb424);
0x0000add0 ldr r2, [pc, 0x654] |
0x0000add4 add r1, pc, r1 | r1 = pc + r1;
0x0000add8 ldr r3, [pc, 0x650] |
0x0000addc str r1, [sp, 0x1c] | format = r1;
0x0000ade0 ldr r1, [pc, 0x64c] | r1 = *(0xb430);
0x0000ade4 add r2, pc, r2 | r2 = pc + r2;
0x0000ade8 add r3, pc, r3 | r3 = pc + r3;
0x0000adec add r1, pc, r1 | r1 = pc + r1;
0x0000adf0 add r2, r2, 0x90 | r2 = 0xb4b8;
0x0000adf4 add r3, r3, 0x60 | r3 = 0xb48c;
0x0000adf8 mov fp, 0 |
0x0000adfc add r6, sp, 0x40 | r6 += var_40h;
0x0000ae00 add r7, sp, 0x50 | r7 += var_50h;
0x0000ae04 str r1, [sp, 0x28] | var_28h = r1;
0x0000ae08 str r2, [sp, 0x20] | var_20h = r2;
0x0000ae0c str r3, [sp, 0x24] | s2 = r3;
| label_2:
0x0000ae10 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000ae14 asr sl, fp, 1 | sl = fp >> 1;
0x0000ae18 add r8, sl, 2 | r8 = sl + 2;
0x0000ae1c cmp r3, 0 |
0x0000ae20 lsl r8, r8, 6 | r8 <<= 6;
0x0000ae24 and sb, fp, 1 | sb = fp & 1;
| if (r3 != 0) {
0x0000ae28 beq 0xae48 |
0x0000ae2c cmp sb, 0 |
| if (sb != 0) {
0x0000ae30 bne 0xb3f4 | goto label_24;
| }
0x0000ae34 ldr r2, [pc, 0x5fc] | r2 = *(0xb434);
0x0000ae38 add r2, pc, r2 | r2 = pc + r2;
| label_16:
0x0000ae3c mov r1, r8 | r1 = r8;
0x0000ae40 ldr r0, [sp, 0x1c] | r0 = format;
0x0000ae44 bl 0x8298 | printf (r0, r1, r2)
| }
0x0000ae48 mov r3, 0 | r3 = 0;
0x0000ae4c cmp sb, 0 |
0x0000ae50 mov r2, r8 | r2 = r8;
0x0000ae54 str r3, [r6] | *(r6) = r3;
0x0000ae58 str r3, [r6, 4] | var_4h_2 = r3;
0x0000ae5c str r3, [r6, 8] | var_8h_2 = r3;
0x0000ae60 str r3, [r6, 0xc] | var_ch = r3;
0x0000ae64 str r3, [r7] | *(r7) = r3;
0x0000ae68 str r3, [r7, 4] | var_54h = r3;
0x0000ae6c str r3, [r7, 8] | var_58h = r3;
0x0000ae70 str r3, [r7, 0xc] | var_5ch = r3;
0x0000ae74 str r3, [r4] | *(r4) = r3;
0x0000ae78 str r3, [r4, 4] | var_a4h = r3;
0x0000ae7c str r3, [r4, 8] | var_a8h = r3;
0x0000ae80 str r3, [r4, 0xc] | var_ach = r3;
0x0000ae84 ldr r1, [sp, 0x18] | r1 = s1;
0x0000ae88 mov r0, r5 | r0 = r5;
| if (sb != 0) {
0x0000ae8c bne 0xb228 | goto label_25;
| }
0x0000ae90 bl 0x85bc | fcn_000085bc ();
0x0000ae94 ldr r8, [pc, 0x584] | r8 = *(0xb41c);
| do {
0x0000ae98 str r4, [sp, 4] | var_4h = r4;
0x0000ae9c str r4, [sp] | *(sp) = r4;
0x0000aea0 mov r3, r6 | r3 = r6;
0x0000aea4 mov r2, 0x10 | r2 = 0x10;
0x0000aea8 mov r1, 0 | r1 = 0;
0x0000aeac mov r0, r5 | r0 = r5;
0x0000aeb0 bl 0x9000 | fcn_00009000 ();
0x0000aeb4 subs r8, r8, 1 | r8--;
0x0000aeb8 bne 0xae98 |
| } while (r8 != r8);
0x0000aebc ldr r1, [sp, 0x24] | r1 = s2;
0x0000aec0 ldr r2, [r4] | r2 = *(r4);
0x0000aec4 ldr r3, [r1, sl, lsl 4] | offset_1 = sl << 4;
| r3 = *((r1 + offset_1));
0x0000aec8 add sl, r1, sl, lsl 4 | sl = r1 + (sl << 4);
0x0000aecc cmp r2, r3 |
| if (r2 != r3) {
0x0000aed0 bne 0xacf8 | goto label_0;
| }
0x0000aed4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000aed8 add sl, sl, 4 | sl += 4;
0x0000aedc ldr r2, [r3] | r2 = *(r3);
0x0000aee0 ldr r3, [sl] | r3 = *(sl);
0x0000aee4 cmp r2, r3 |
| if (r2 != r3) {
0x0000aee8 bne 0xacf8 | goto label_0;
| }
0x0000aeec ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000aef0 ldr r2, [r3] | r2 = *(r3);
0x0000aef4 ldr r3, [sl, 4]! | r3 = *((sl += 4));
0x0000aef8 cmp r2, r3 |
| if (r2 != r3) {
0x0000aefc bne 0xacf8 | goto label_0;
| }
0x0000af00 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0000af04 ldr r3, [sl, 4] | r3 = *((sl + 4));
0x0000af08 ldr r2, [r2] | r2 = *(r2);
0x0000af0c cmp r2, r3 |
| if (r2 != r3) {
0x0000af10 bne 0xacf8 | goto label_0;
| }
| label_10:
0x0000af14 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000af18 cmp r3, 0 |
| if (r3 != 0) {
0x0000af1c bne 0xb354 | goto label_26;
| }
| label_13:
0x0000af20 add fp, fp, 1 |
0x0000af24 cmp fp, 6 |
| if (fp != 6) {
0x0000af28 bne 0xae10 | goto label_2;
| }
0x0000af2c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000af30 cmp r3, 0 |
| if (r3 != 0) {
0x0000af34 bne 0xb408 | goto label_27;
| }
| label_18:
0x0000af38 ldr sb, [pc, 0x4fc] | sb = *(0xb438);
0x0000af3c ldr r3, [pc, 0x4fc] | r3 = *(0xb43c);
0x0000af40 add sb, pc, sb | sb = pc + sb;
0x0000af44 add r3, pc, r3 | r3 = pc + r3;
0x0000af48 str r3, [sp, 0x28] | var_28h = r3;
0x0000af4c add r3, sb, 0xc0 | r3 = sb + 0xc0;
0x0000af50 str r3, [sp, 0x24] | s2 = r3;
0x0000af54 mov r8, 0 | r8 = 0;
0x0000af58 add r3, sp, 0x3c | r3 += var_3ch;
0x0000af5c str r3, [sp, 0x20] | var_20h = r3;
0x0000af60 str r6, [sp, 0x1c] | format = r6;
| label_3:
0x0000af64 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000af68 asr r6, r8, 1 | r6 = r8 >> 1;
0x0000af6c add sl, r6, 2 | sl = r6 + 2;
0x0000af70 cmp r3, 0 |
0x0000af74 lsl r7, sl, 6 | r7 = sl << 6;
0x0000af78 and fp, r8, 1 |
| if (r3 != 0) {
0x0000af7c beq 0xaf9c |
0x0000af80 cmp fp, 0 |
| if (fp != 0) {
0x0000af84 bne 0xb3fc | goto label_28;
| }
0x0000af88 ldr r2, [pc, 0x4b4] | r2 = *(0xb440);
0x0000af8c add r2, pc, r2 | r2 = pc + r2;
| label_17:
0x0000af90 mov r1, r7 | r1 = r7;
0x0000af94 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000af98 bl 0x8298 | printf (r0, r1, r2)
| }
0x0000af9c ldr r3, [sp, 0x24] | r3 = s2;
0x0000afa0 ldr lr, [sp, 0x1c] | lr = format;
0x0000afa4 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0000afa8 add ip, sb, 0xd0 |
0x0000afac stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x0000afb0 lsl r2, sl, 3 | r2 = sl << 3;
0x0000afb4 ldr sl, [sp, 0x18] | sl = s1;
0x0000afb8 add r1, ip, r6, lsl 5 | r1 = ip + (r6 << 5);
0x0000afbc mov r0, sl | r0 = sl;
0x0000afc0 bl 0x8550 | memcpy (r0, r1, r2);
0x0000afc4 mov r3, 0 | r3 = 0;
0x0000afc8 mov r2, r7 | r2 = r7;
0x0000afcc mov r1, sl | r1 = sl;
0x0000afd0 mov r0, r5 | r0 = r5;
0x0000afd4 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000afd8 bl 0x8928 | fcn_00008928 ();
0x0000afdc cmp fp, 0 |
| if (fp != 0) {
0x0000afe0 bne 0xb2d0 | goto label_29;
| }
0x0000afe4 add ip, sb, r6, lsl 6 |
0x0000afe8 add ip, ip, 0x130 |
0x0000afec ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0000aff0 mov lr, r4 | lr = r4;
0x0000aff4 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0000aff8 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0000affc stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0000b000 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0000b004 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0000b008 ldm ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x0000b00c stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x0000b010 str r4, [sp, 8] | var_8h = r4;
0x0000b014 ldr lr, [sp, 0x1c] | lr = format;
0x0000b018 mov r1, fp | r1 = fp;
0x0000b01c str lr, [sp] |
0x0000b020 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000b024 mov r2, 0x40 | r2 = 0x40;
0x0000b028 str r4, [sp, 4] | var_4h = r4;
0x0000b02c mov r0, r5 | r0 = r5;
0x0000b030 bl 0x84d8 | fcn_000084d8 ();
0x0000b034 mov r2, 0x40 | r2 = 0x40;
0x0000b038 add r1, sb, 0x1f0 | r1 = sb + 0x1f0;
0x0000b03c mov r0, r4 | r0 = r4;
0x0000b040 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000b044 cmp r0, 0 |
| if (r0 != 0) {
0x0000b048 bne 0xacf8 | goto label_0;
| }
0x0000b04c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b050 cmp r3, 0 |
| if (r3 != 0) {
0x0000b054 bne 0xb344 | goto label_30;
| }
| label_12:
0x0000b058 add r8, r8, 1 | r8++;
0x0000b05c cmp r8, 6 |
| if (r8 != 6) {
0x0000b060 bne 0xaf64 | goto label_3;
| }
0x0000b064 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b068 cmp r3, 0 |
| if (r3 != 0) {
0x0000b06c beq 0xb078 |
0x0000b070 mov r0, 0xa | r0 = 0xa;
0x0000b074 bl 0x81d8 | putchar (r0);
| }
0x0000b078 ldr sb, [pc, 0x3c8] | sb = *(0xb444);
0x0000b07c ldr r3, [pc, 0x3c8] | r3 = *(0xb448);
0x0000b080 add sb, pc, sb | sb = pc + sb;
0x0000b084 add r3, pc, r3 | r3 = pc + r3;
0x0000b088 str r3, [sp, 0x28] | var_28h = r3;
0x0000b08c add r3, sb, 0x260 | r3 = sb + 0x260;
0x0000b090 str r3, [sp, 0x1c] | format = r3;
0x0000b094 add r3, sp, 0x70 | r3 += var_70h;
0x0000b098 str r3, [sp, 0x24] | s2 = r3;
0x0000b09c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b0a0 mov r7, 0 | r7 = 0;
0x0000b0a4 cmp r3, 0 |
0x0000b0a8 mov r6, r7 | r6 = r7;
0x0000b0ac mov r8, 0x10 | r8 = 0x10;
0x0000b0b0 add fp, sp, 0x60 |
0x0000b0b4 and sl, r7, 1 | sl = r7 & 1;
| if (r3 != 0) {
0x0000b0b8 beq 0xb0d4 |
0x0000b0bc cmp sl, 0 |
| if (sl != 0) {
0x0000b0c0 bne 0xb1c4 | goto label_31;
| }
| label_5:
0x0000b0c4 ldr r1, [pc, 0x384] | r1 = *(0xb44c);
0x0000b0c8 add r1, pc, r1 | r1 = pc + r1;
| label_6:
0x0000b0cc ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000b0d0 bl 0x8298 | printf (r0, r1)
| }
| label_4:
0x0000b0d4 lsl ip, r6, 4 |
0x0000b0d8 add r3, sb, ip | r3 = sb + ip;
0x0000b0dc add r3, r3, 0x230 | r3 += 0x230;
0x0000b0e0 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0000b0e4 ldr lr, [sp, 0x1c] | lr = format;
0x0000b0e8 stm fp, {r0, r1, r2, r3} | *(fp) = r0;
| *((fp + 4)) = r1;
| *((fp + 8)) = r2;
| *((fp + 12)) = r3;
0x0000b0ec add ip, lr, ip |
0x0000b0f0 ldm ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x0000b0f4 ldr lr, [sp, 0x18] | lr = s1;
0x0000b0f8 mov ip, 0 |
0x0000b0fc stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x0000b100 add r6, r6, r6, lsl 1 | r6 += (r6 << 1);
0x0000b104 mov r2, 0x80 | r2 = 0x80;
0x0000b108 mov r1, lr | r1 = lr;
0x0000b10c mov r0, r5 | r0 = r5;
0x0000b110 str ip, [sp, 0x3c] | var_3ch = ip;
0x0000b114 bl 0x8928 | fcn_00008928 ();
0x0000b118 lsl r3, r6, 4 | r3 = r6 << 4;
0x0000b11c cmp sl, 0 |
0x0000b120 add r6, sb, 0x290 | r6 = sb + 0x290;
0x0000b124 add sl, sb, 0x320 | sl = sb + 0x320;
0x0000b128 add r6, r6, r3 | r6 += r3;
0x0000b12c add sl, sl, r3 | sl += r3;
| if (sl != 0) {
0x0000b130 bne 0xb364 | goto label_32;
| }
0x0000b134 mov r1, r6 | r1 = r6;
0x0000b138 mov r2, r8 | r2 = r8;
0x0000b13c mov r0, r4 | r0 = r4;
0x0000b140 bl 0x8550 | memcpy (r0, r1, r2);
0x0000b144 ldr r3, [sp, 0x24] | r3 = s2;
0x0000b148 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000b14c str r3, [sp] | *(sp) = r3;
0x0000b150 mov r1, r8 | r1 = r8;
0x0000b154 mov r3, fp | r3 = fp;
0x0000b158 str r4, [sp, 8] | var_8h = r4;
0x0000b15c str r4, [sp, 4] | var_4h = r4;
0x0000b160 mov r0, r5 | r0 = r5;
0x0000b164 bl 0x8e38 | fcn_00008e38 ();
0x0000b168 mov r2, r8 | r2 = r8;
0x0000b16c mov r1, sl | r1 = sl;
0x0000b170 mov r0, r4 | r0 = r4;
0x0000b174 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000b178 cmp r0, 0 |
| if (r0 != 0) {
0x0000b17c bne 0xacf8 | goto label_0;
| }
0x0000b180 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b184 cmp r3, 0 |
| if (r3 != 0) {
0x0000b188 bne 0xb3bc | goto label_33;
| }
| label_14:
0x0000b18c add r7, r7, 1 | r7++;
0x0000b190 cmp r7, 6 |
| if (r7 == 6) {
0x0000b194 beq 0xb3d4 | goto label_34;
| }
| label_15:
0x0000b198 ldr r3, [pc, 0x2b4] | r3 = *(0xb450);
0x0000b19c asr r6, r7, 1 | r6 = r7 >> 1;
0x0000b1a0 add r3, pc, r3 | r3 = pc + r3;
0x0000b1a4 add r3, r3, r6, lsl 2 | r3 += (r6 << 2);
0x0000b1a8 ldr r8, [r3, 0x3b0] | r8 = *((r3 + 0x3b0));
0x0000b1ac ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b1b0 and sl, r7, 1 | sl = r7 & 1;
0x0000b1b4 cmp r3, 0 |
| if (r3 == 0) {
0x0000b1b8 beq 0xb0d4 | goto label_4;
| }
0x0000b1bc cmp sl, 0 |
| if (sl == 0) {
0x0000b1c0 beq 0xb0c4 | goto label_5;
| }
| label_31:
0x0000b1c4 ldr r1, [pc, 0x28c] | r1 = *(0xb454);
0x0000b1c8 add r1, pc, r1 | r1 = pc + r1;
0x0000b1cc b 0xb0cc | goto label_6;
| label_19:
0x0000b1d0 ldr r2, [pc, 0x284] | r2 = *(0xb458);
0x0000b1d4 add r2, pc, r2 | r2 = pc + r2;
0x0000b1d8 b 0xac84 | goto label_7;
| label_21:
0x0000b1dc ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0000b1e0 ldr r1, [sp, 0xa4] | r1 = var_a4h;
0x0000b1e4 add r3, r3, 4 | r3 += 4;
0x0000b1e8 cmp r1, r2 |
0x0000b1ec add r6, sp, 0xa4 | r6 += var_a4h;
| if (r1 != r2) {
0x0000b1f0 bne 0xacf8 | goto label_0;
| }
0x0000b1f4 ldr r1, [sp, 0xa8] | r1 = var_a8h;
0x0000b1f8 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x0000b1fc add r0, sp, 0xa8 | r0 += var_a8h;
0x0000b200 cmp r1, r2 |
0x0000b204 str r0, [sp, 0x30] | var_30h = r0;
| if (r1 != r2) {
0x0000b208 bne 0xacf8 | goto label_0;
| }
0x0000b20c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000b210 b 0xad88 | goto label_8;
| label_22:
0x0000b214 ldr r0, [pc, 0x244] | r0 = *(0xb45c);
0x0000b218 mov r4, 1 | r4 = 1;
0x0000b21c add r0, pc, r0 | r0 = pc + r0;
0x0000b220 bl 0x858c | puts (r0);
0x0000b224 b 0xad08 | goto label_9;
| label_25:
0x0000b228 bl 0x8928 | fcn_00008928 ();
0x0000b22c ldr sb, [pc, 0x1ec] | sb = *(0xb41c);
0x0000b230 add r8, sp, 0x70 | r8 += var_70h;
| do {
0x0000b234 mov r3, r6 | r3 = r6;
0x0000b238 mov r2, 0x10 | r2 = 0x10;
0x0000b23c mov r1, 1 | r1 = 1;
0x0000b240 str r4, [sp, 4] | var_4h = r4;
0x0000b244 str r4, [sp] | *(sp) = r4;
0x0000b248 mov r0, r5 | r0 = r5;
0x0000b24c bl 0x9000 | r0 = fcn_00009000 ();
0x0000b250 ldm r7, {r0, r1, r2, r3} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
0x0000b254 subs sb, sb, 1 | sb--;
0x0000b258 stm r8, {r0, r1, r2, r3} | *(r8) = r0;
| *((r8 + 4)) = r1;
| *((r8 + 8)) = r2;
| *((r8 + 12)) = r3;
0x0000b25c ldm r4, {r0, r1, r2, r3} | r0 = *(r4);
| r1 = *((r4 + 4));
| r2 = *((r4 + 8));
| r3 = *((r4 + 12));
0x0000b260 stm r7, {r0, r1, r2, r3} | *(r7) = r0;
| *((r7 + 4)) = r1;
| *((r7 + 8)) = r2;
| *((r7 + 12)) = r3;
0x0000b264 ldm r8, {r0, r1, r2, r3} | r0 = *(r8);
| r1 = *((r8 + 4));
| r2 = *((r8 + 8));
| r3 = *((r8 + 12));
0x0000b268 stm r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x0000b26c bne 0xb234 |
| } while (sb != sb);
0x0000b270 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000b274 ldr r2, [r7] | r2 = *(r7);
0x0000b278 ldr r3, [r1, sl, lsl 4] | offset_2 = sl << 4;
| r3 = *((r1 + offset_2));
0x0000b27c add sl, r1, sl, lsl 4 | sl = r1 + (sl << 4);
0x0000b280 cmp r2, r3 |
| if (r2 != r3) {
0x0000b284 bne 0xacf8 | goto label_0;
| }
0x0000b288 ldr r3, [sl, 4] | r3 = *((sl + 4));
0x0000b28c ldr r2, [sp, 0x54] | r2 = var_54h;
0x0000b290 add sl, sl, 4 | sl += 4;
0x0000b294 cmp r2, r3 |
| if (r2 != r3) {
0x0000b298 bne 0xacf8 | goto label_0;
| }
0x0000b29c ldr r2, [sp, 0x58] | r2 = var_58h;
0x0000b2a0 ldr r3, [sl, 4]! | r3 = *((sl += 4));
0x0000b2a4 cmp r2, r3 |
| if (r2 != r3) {
0x0000b2a8 bne 0xacf8 | goto label_0;
| }
0x0000b2ac ldr r3, [sl, 4] | r3 = *((sl + 4));
0x0000b2b0 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0000b2b4 cmp r2, r3 |
| if (r2 != r3) {
0x0000b2b8 bne 0xacf8 | goto label_0;
| }
0x0000b2bc b 0xaf14 | goto label_10;
| label_23:
0x0000b2c0 ldr r0, [pc, 0x19c] | r0 = *(0xb460);
0x0000b2c4 add r0, pc, r0 | r0 = pc + r0;
0x0000b2c8 bl 0x858c | puts (r0);
0x0000b2cc b 0xada8 | goto label_11;
| label_29:
0x0000b2d0 add lr, sb, 0x1f0 | lr = sb + 0x1f0;
0x0000b2d4 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0000b2d8 mov ip, r4 |
0x0000b2dc stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0000b2e0 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0000b2e4 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0000b2e8 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0000b2ec stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0000b2f0 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x0000b2f4 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0000b2f8 str r4, [sp, 8] | var_8h = r4;
0x0000b2fc ldr r2, [sp, 0x1c] | r2 = format;
0x0000b300 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000b304 str r2, [sp] | *(sp) = r2;
0x0000b308 mov r1, 1 | r1 = 1;
0x0000b30c mov r2, 0x40 | r2 = 0x40;
0x0000b310 str r4, [sp, 4] | var_4h = r4;
0x0000b314 mov r0, r5 | r0 = r5;
0x0000b318 bl 0x84d8 | fcn_000084d8 ();
0x0000b31c add r1, sb, r7 | r1 = sb + r7;
0x0000b320 add r1, r1, 0xb0 | r1 += 0xb0;
0x0000b324 mov r2, 0x40 | r2 = 0x40;
0x0000b328 mov r0, r4 | r0 = r4;
0x0000b32c bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000b330 cmp r0, 0 |
| if (r0 != 0) {
0x0000b334 bne 0xacf8 | goto label_0;
| }
0x0000b338 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b33c cmp r3, 0 |
| if (r3 == 0) {
0x0000b340 beq 0xb058 | goto label_12;
| }
| label_30:
0x0000b344 ldr r0, [pc, 0x11c] | r0 = *(0xb464);
0x0000b348 add r0, pc, r0 | r0 = pc + r0;
0x0000b34c bl 0x858c | puts (r0);
0x0000b350 b 0xb058 | goto label_12;
| label_26:
0x0000b354 ldr r0, [pc, 0x110] | r0 = *(0xb468);
0x0000b358 add r0, pc, r0 | r0 = pc + r0;
0x0000b35c bl 0x858c | puts (r0);
0x0000b360 b 0xaf20 | goto label_13;
| label_32:
0x0000b364 mov r1, sl | r1 = sl;
0x0000b368 mov r2, r8 | r2 = r8;
0x0000b36c mov r0, r4 | r0 = r4;
0x0000b370 bl 0x8550 | memcpy (r0, r1, r2);
0x0000b374 ldr r3, [sp, 0x24] | r3 = s2;
0x0000b378 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000b37c str r3, [sp] | *(sp) = r3;
0x0000b380 mov r1, r8 | r1 = r8;
0x0000b384 mov r3, fp | r3 = fp;
0x0000b388 str r4, [sp, 8] | var_8h = r4;
0x0000b38c str r4, [sp, 4] | var_4h = r4;
0x0000b390 mov r0, r5 | r0 = r5;
0x0000b394 bl 0x8e38 | fcn_00008e38 ();
0x0000b398 mov r2, r8 | r2 = r8;
0x0000b39c mov r1, r6 | r1 = r6;
0x0000b3a0 mov r0, r4 | r0 = r4;
0x0000b3a4 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000b3a8 cmp r0, 0 |
| if (r0 != 0) {
0x0000b3ac bne 0xacf8 | goto label_0;
| }
0x0000b3b0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b3b4 cmp r3, 0 |
| if (r3 == 0) {
0x0000b3b8 beq 0xb18c | goto label_14;
| }
| label_33:
0x0000b3bc ldr r0, [pc, 0xac] | r0 = *(0xb46c);
0x0000b3c0 add r7, r7, 1 | r7++;
0x0000b3c4 add r0, pc, r0 | r0 = pc + r0;
0x0000b3c8 bl 0x858c | puts (r0);
0x0000b3cc cmp r7, 6 |
| if (r7 != 6) {
0x0000b3d0 bne 0xb198 | goto label_15;
| }
| label_34:
0x0000b3d4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b3d8 cmp r3, 0 |
| if (r3 == 0) {
0x0000b3dc ldreq r4, [sp, 0x14] | r4 = var_14h;
| goto label_35;
| }
| if (r3 == 0) {
| label_35:
0x0000b3e0 beq 0xad08 | goto label_9;
| }
0x0000b3e4 mov r0, 0xa | r0 = 0xa;
0x0000b3e8 bl 0x81d8 | putchar (r0);
0x0000b3ec mov r4, 0 | r4 = 0;
0x0000b3f0 b 0xad08 | goto label_9;
| label_24:
0x0000b3f4 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000b3f8 b 0xae3c | goto label_16;
| label_28:
0x0000b3fc ldr r2, [pc, 0x70] | r2 = *(0xb470);
0x0000b400 add r2, pc, r2 | r2 = pc + r2;
0x0000b404 b 0xaf90 | goto label_17;
| label_27:
0x0000b408 mov r0, 0xa | r0 = 0xa;
0x0000b40c bl 0x81d8 | putchar (r0);
0x0000b410 b 0xaf38 | goto label_18;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0xb59c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_arc4_self_test () | void mbedtls_arc4_self_test (int32_t arg1) {
| int32_t var_0h;
| void * s1;
| int32_t var_10h;
| int32_t var_11ch;
| r0 = arg1;
0x0000b59c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000b5a0 ldr sb, [pc, 0x100] | sb = *(0xb6a4);
0x0000b5a4 sub sp, sp, 0x11c |
0x0000b5a8 add r8, sp, 0x10 | r8 += var_10h;
0x0000b5ac mov r7, r0 | r7 = r0;
0x0000b5b0 mov r0, r8 | r0 = r8;
0x0000b5b4 bl 0x8a3c | fcn_00008a3c ();
0x0000b5b8 add sb, pc, sb | sb = pc + sb;
0x0000b5bc mov r4, 0 | r4 = 0;
0x0000b5c0 add fp, sb, 0x18 |
0x0000b5c4 mov r5, r4 | r5 = r4;
0x0000b5c8 mov r6, sp | r6 = sp;
0x0000b5cc add sl, sp, 8 | sl += s1;
| do {
0x0000b5d0 cmp r7, 0 |
| if (r7 != 0) {
0x0000b5d4 bne 0xb664 | goto label_3;
| }
| label_0:
0x0000b5d8 add r3, sb, r5, lsl 3 | r3 = sb + (r5 << 3);
0x0000b5dc ldm r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x0000b5e0 mov r2, 8 | r2 = 8;
0x0000b5e4 stm r6, {r0, r1} | *(r6) = r0;
| *((r6 + 4)) = r1;
0x0000b5e8 add r1, fp, r4 | r1 = fp + r4;
0x0000b5ec mov r0, r8 | r0 = r8;
0x0000b5f0 bl 0x8e80 | fcn_00008e80 ();
0x0000b5f4 mov r3, sl | r3 = sl;
0x0000b5f8 mov r2, r6 | r2 = r6;
0x0000b5fc mov r1, 8 | r1 = 8;
0x0000b600 mov r0, r8 | r0 = r8;
0x0000b604 bl 0x90cc | fcn_000090cc ();
0x0000b608 add r1, sb, 0x30 | r1 = sb + 0x30;
0x0000b60c add r1, r1, r4 | r1 += r4;
0x0000b610 mov r2, 8 | r2 = 8;
0x0000b614 mov r0, sl | r0 = sl;
0x0000b618 bl 0x8b08 | memcmp (r0, r1, r2);
0x0000b61c add r5, r5, 1 | r5++;
0x0000b620 add r4, r4, 8 | r4 += 8;
0x0000b624 cmp r0, 0 |
| if (r0 != 0) {
0x0000b628 bne 0xb688 | goto label_4;
| }
0x0000b62c cmp r7, 0 |
| if (r7 != 0) {
0x0000b630 bne 0xb678 | goto label_5;
| }
| label_1:
0x0000b634 cmp r5, 3 |
0x0000b638 bne 0xb5d0 |
| } while (r5 != 3);
0x0000b63c cmp r7, 0 |
| if (r7 == 0) {
0x0000b640 beq 0xb650 | goto label_2;
| }
0x0000b644 mov r0, 0xa | r0 = 0xa;
0x0000b648 bl 0x81d8 | putchar (r0);
0x0000b64c mov r7, 0 | r7 = 0;
| do {
| label_2:
0x0000b650 mov r0, r8 | r0 = r8;
0x0000b654 bl 0x85b0 | fcn_000085b0 ();
0x0000b658 mov r0, r7 | r0 = r7;
0x0000b65c add sp, sp, 0x11c |
0x0000b660 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x0000b664 ldr r0, [pc, 0x40] | r0 = *(0xb6a8);
0x0000b668 add r1, r5, 1 | r1 = r5 + 1;
0x0000b66c add r0, pc, r0 | r0 = pc + r0;
0x0000b670 bl 0x8298 | printf (r0, r1)
0x0000b674 b 0xb5d8 | goto label_0;
| label_5:
0x0000b678 ldr r0, [pc, 0x30] | r0 = *(0xb6ac);
0x0000b67c add r0, pc, r0 | r0 = pc + r0;
0x0000b680 bl 0x858c | puts (r0);
0x0000b684 b 0xb634 | goto label_1;
| label_4:
0x0000b688 cmp r7, 0 |
| if (r7 != 0) {
0x0000b68c moveq r7, 1 | r7 = 1;
| }
0x0000b690 beq 0xb650 |
| } while (r7 == 0);
0x0000b694 ldr r0, [pc, 0x18] | r0 = *(0xb6b0);
0x0000b698 mov r7, 1 | r7 = 1;
0x0000b69c add r0, pc, r0 | r0 = pc + r0;
0x0000b6a0 bl 0x858c | puts (r0);
0x0000b6a4 b 0xb650 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0xc828 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_base64_self_test () | void mbedtls_base64_self_test (uint32_t arg1) {
| int32_t var_0h;
| int32_t var_ch;
| void * s2;
| int32_t var_90h;
| r0 = arg1;
0x0000c828 cmp r0, 0 |
0x0000c82c push {r4, r5, r6, r7, r8, lr} |
0x0000c830 sub sp, sp, 0x90 |
| if (r0 != 0) {
0x0000c834 bne 0xc880 | goto label_3;
| }
0x0000c838 ldr r4, [pc, 0x170] | r4 = *(0xc9ac);
0x0000c83c add r6, sp, 0xc | r6 += var_ch;
0x0000c840 add r4, pc, r4 | r4 = pc + r4;
0x0000c844 add r7, r4, 0xc0 | r7 = r4 + 0xc0;
0x0000c848 add r5, sp, 0x10 | r5 += s2;
0x0000c84c mov r8, 0x40 | r8 = 0x40;
0x0000c850 mov r3, r7 | r3 = r7;
0x0000c854 mov r2, r6 | r2 = r6;
0x0000c858 mov r0, r5 | r0 = r5;
0x0000c85c str r8, [sp] | *(sp) = r8;
0x0000c860 mov r1, 0x80 | r1 = 0x80;
0x0000c864 bl 0x90f0 | r0 = fcn_000090f0 ();
0x0000c868 cmp r0, 0 |
0x0000c86c beq 0xc8fc |
| while (r0 != 0) {
| label_0:
0x0000c870 mov r4, 1 | r4 = 1;
| label_1:
0x0000c874 mov r0, r4 | r0 = r4;
0x0000c878 add sp, sp, 0x90 |
0x0000c87c pop {r4, r5, r6, r7, r8, pc} |
| label_3:
0x0000c880 ldr r4, [pc, 0x12c] | r4 = *(0xc9b0);
0x0000c884 ldr r0, [pc, 0x12c] | r0 = *(0xc9b4);
0x0000c888 add r4, pc, r4 | r4 = pc + r4;
0x0000c88c add r0, pc, r0 | r0 = pc + r0;
0x0000c890 add r7, r4, 0xc0 | r7 = r4 + 0xc0;
0x0000c894 add r6, sp, 0xc | r6 += var_ch;
0x0000c898 add r5, sp, 0x10 | r5 += s2;
0x0000c89c mov r8, 0x40 | r8 = 0x40;
0x0000c8a0 bl 0x8298 | printf (r0, r1, r2, r3, r4, r5, r6)
0x0000c8a4 mov r3, r7 | r3 = r7;
0x0000c8a8 mov r2, r6 | r2 = r6;
0x0000c8ac mov r0, r5 | r0 = r5;
0x0000c8b0 str r8, [sp] | *(sp) = r8;
0x0000c8b4 mov r1, 0x80 | r1 = 0x80;
0x0000c8b8 bl 0x90f0 | r0 = fcn_000090f0 ();
0x0000c8bc cmp r0, 0 |
| if (r0 == 0) {
0x0000c8c0 bne 0xc8e0 |
0x0000c8c4 add r4, r4, 0x100 | r4 += 0x100;
0x0000c8c8 mov r0, r4 | r0 = r4;
0x0000c8cc mov r2, 0x58 | r2 = 0x58;
0x0000c8d0 mov r1, r5 | r1 = r5;
0x0000c8d4 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000c8d8 cmp r0, 0 |
| if (r0 == 0) {
0x0000c8dc beq 0xc958 | goto label_4;
| }
| }
| label_2:
0x0000c8e0 ldr r0, [pc, 0xd4] | r0 = *(0xc9b8);
0x0000c8e4 mov r4, 1 | r4 = 1;
0x0000c8e8 add r0, pc, r0 | r0 = pc + r0;
0x0000c8ec bl 0x858c | puts (r0);
0x0000c8f0 mov r0, r4 | r0 = r4;
0x0000c8f4 add sp, sp, 0x90 |
0x0000c8f8 pop {r4, r5, r6, r7, r8, pc} |
0x0000c8fc add r4, r4, 0x100 | r4 += 0x100;
0x0000c900 mov r0, r4 | r0 = r4;
0x0000c904 mov r2, 0x58 | r2 = 0x58;
0x0000c908 mov r1, r5 | r1 = r5;
0x0000c90c bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000c910 cmp r0, 0 |
0x0000c914 bne 0xc870 |
| }
0x0000c918 mov r1, 0x58 | r1 = 0x58;
0x0000c91c str r1, [sp] | *(sp) = r1;
0x0000c920 mov r3, r4 | r3 = r4;
0x0000c924 mov r2, r6 | r2 = r6;
0x0000c928 mov r1, 0x80 | r1 = 0x80;
0x0000c92c mov r0, r5 | r0 = r5;
0x0000c930 bl 0x8e5c | r0 = fcn_00008e5c ();
0x0000c934 cmp r0, 0 |
| if (r0 != 0) {
0x0000c938 bne 0xc870 | goto label_0;
| }
0x0000c93c mov r2, r8 | r2 = r8;
0x0000c940 mov r1, r5 | r1 = r5;
0x0000c944 mov r0, r7 | r0 = r7;
0x0000c948 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000c94c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0000c950 bne 0xc870 | goto label_0;
| }
0x0000c954 b 0xc874 | goto label_1;
| label_4:
0x0000c958 ldr r0, [pc, 0x60] | r0 = *(0xc9bc);
0x0000c95c add r0, pc, r0 | r0 = pc + r0;
0x0000c960 bl 0x8298 | printf (r0)
0x0000c964 mov r1, 0x58 | r1 = 0x58;
0x0000c968 str r1, [sp] | *(sp) = r1;
0x0000c96c mov r3, r4 | r3 = r4;
0x0000c970 mov r2, r6 | r2 = r6;
0x0000c974 mov r1, 0x80 | r1 = 0x80;
0x0000c978 mov r0, r5 | r0 = r5;
0x0000c97c bl 0x8e5c | r0 = fcn_00008e5c ();
0x0000c980 cmp r0, 0 |
| if (r0 != 0) {
0x0000c984 bne 0xc8e0 | goto label_2;
| }
0x0000c988 mov r2, r8 | r2 = r8;
0x0000c98c mov r1, r5 | r1 = r5;
0x0000c990 mov r0, r7 | r0 = r7;
0x0000c994 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0000c998 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0000c99c bne 0xc8e0 | goto label_2;
| }
0x0000c9a0 ldr r0, [pc, 0x1c] | r0 = *(0xc9c0);
0x0000c9a4 add r0, pc, r0 | r0 = pc + r0;
0x0000c9a8 bl 0x858c | puts (r0);
0x0000c9ac b 0xc874 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x11ffc */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_camellia_self_test () | void mbedtls_camellia_self_test (int32_t arg1) {
| void * var_0h;
| int32_t var_sp_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| void * s1;
| int32_t var_2ch;
| char * var_30h;
| int32_t var_34h;
| void * s2;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| char * format;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_6ch;
| int32_t var_70h;
| int32_t var_74h;
| int32_t var_78h;
| int32_t var_7ch;
| int32_t var_8ch;
| int32_t var_9ch;
| void * s;
| int32_t var_d0h;
| int32_t var_d4h;
| int32_t var_d8h;
| int32_t var_10ch;
| int32_t var_224h;
| r0 = arg1;
0x00011ffc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012000 sub sp, sp, 0x224 |
0x00012004 add r3, sp, 0xac | r3 += s;
0x00012008 str r0, [sp, 0x14] | var_14h = r0;
0x0001200c mov r2, 0x20 | r2 = 0x20;
0x00012010 mov r0, r3 | r0 = r3;
0x00012014 mov r1, 0 | r1 = 0;
0x00012018 str r3, [sp, 0x28] | s1 = r3;
0x0001201c bl 0x8c28 | memset (r0, r1, r2);
0x00012020 ldr r3, [pc, 0x6c4] |
0x00012024 ldr r2, [pc, 0x6c4] |
0x00012028 add r3, pc, r3 | r3 = pc + r3;
0x0001202c ldr r1, [pc, 0x6c0] | r1 = *(0x126f0);
0x00012030 add r3, r3, 0x630 | r3 = 0x12d18;
0x00012034 add r2, pc, r2 | r2 = pc + r2;
0x00012038 add r3, r3, 8 | r3 += 8;
0x0001203c str r2, [sp, 0x34] | var_34h = r2;
0x00012040 str r3, [sp, 0x40] | var_40h = r3;
0x00012044 add r2, r2, 0x510 | r2 = 0x12bfc;
0x00012048 add r3, sp, 0x10c | r3 += var_10ch;
0x0001204c add r1, pc, r1 | r1 = pc + r1;
0x00012050 add r2, r2, 8 | r2 += 8;
0x00012054 str r3, [sp, 0x1c] | var_1ch = r3;
0x00012058 mov r8, 0 | r8 = 0;
0x0001205c add r3, sp, 0x5c | r3 += var_5ch;
0x00012060 add sb, sp, 0x6c | sb += var_6ch;
0x00012064 add fp, sp, 0xcc |
0x00012068 str r1, [sp, 0x50] | format = r1;
0x0001206c str r2, [sp, 0x38] | s2 = r2;
0x00012070 str r3, [sp, 0x18] | var_18h = r3;
| label_1:
0x00012074 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00012078 asr sl, r8, 1 | sl = r8 >> 1;
0x0001207c add r5, sl, 2 | r5 = sl + 2;
0x00012080 cmp r3, 0 |
0x00012084 lsl r6, r5, 6 | r6 = r5 << 6;
0x00012088 and r7, r8, 1 | r7 = r8 & 1;
| if (r3 != 0) {
0x0001208c beq 0x120ac |
0x00012090 cmp r7, 0 |
| if (r7 != 0) {
0x00012094 bne 0x125a8 | goto label_19;
| }
0x00012098 ldr r2, [pc, 0x658] | r2 = *(0x126f4);
0x0001209c add r2, pc, r2 | r2 = pc + r2;
| label_7:
0x000120a0 mov r1, r6 | r1 = r6;
0x000120a4 ldr r0, [sp, 0x50] | r0 = format;
0x000120a8 bl 0x8298 | printf (r0, r1, r2)
| }
0x000120ac ldr r4, [pc, 0x648] |
0x000120b0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000120b4 add r4, pc, r4 | r4 = pc + r4;
0x000120b8 add r2, r3, 0x5d0 | r2 = r3 + 0x5d0;
0x000120bc add r4, r4, 0x630 | r4 = 0x12d28;
0x000120c0 sub r3, r6, 0x80 | r3 = r6 - 0x80;
0x000120c4 lsl r1, r5, 3 | r1 = r5 << 3;
0x000120c8 add r4, r4, 8 | r4 += 8;
0x000120cc mov r5, r3 | r5 = r3;
0x000120d0 ldr r3, [sp, 0x38] | r3 = s2;
0x000120d4 str r8, [sp, 0x2c] | var_2ch = r8;
0x000120d8 str r4, [sp, 0x30] | var_30h = r4;
0x000120dc ldr r8, [sp, 0x28] | r8 = s1;
0x000120e0 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x000120e4 add r2, r2, 8 | r2 += 8;
0x000120e8 add r2, r2, sl, lsl 5 | r2 += (sl << 5);
0x000120ec add r5, r3, r5 | r5 = r3 + r5;
0x000120f0 mov sl, 0 | sl = 0;
0x000120f4 str r1, [sp, 0x24] | var_24h = r1;
0x000120f8 str r2, [sp, 0x20] | var_20h = r2;
| label_8:
0x000120fc ldr r2, [sp, 0x24] | r2 = var_24h;
0x00012100 mov r1, r5 | r1 = r5;
0x00012104 mov r0, r8 | r0 = r8;
0x00012108 bl 0x8550 | memcpy (r0, r1, r2);
0x0001210c cmp r7, 0 |
0x00012110 mov r2, r6 | r2 = r6;
0x00012114 mov r1, r8 | r1 = r8;
0x00012118 mov r0, r4 | r0 = r4;
| if (r7 != 0) {
0x0001211c bne 0x12188 | goto label_20;
| }
0x00012120 bl 0x8604 | fcn_00008604 ();
0x00012124 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00012128 ldr ip, [sp, 0x30] | ip = var_30h;
0x0001212c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00012130 ldr lr, [sp, 0x18] | lr = var_18h;
0x00012134 add ip, ip, sl, lsl 4 |
0x00012138 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x0001213c ldm ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x00012140 stm sb, {r0, r1, r2, r3} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
| *((sb + 12)) = r3;
| do {
0x00012144 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00012148 mov r3, fp | r3 = fp;
0x0001214c mov r1, r7 | r1 = r7;
0x00012150 mov r0, r4 | r0 = r4;
0x00012154 bl 0x879c | fcn_0000879c ();
0x00012158 ldr r2, [fp] | r2 = *(fp);
0x0001215c ldr r3, [sb] | r3 = *(sb);
0x00012160 cmp r2, r3 |
| if (r2 == r3) {
0x00012164 beq 0x121b0 | goto label_21;
| }
| label_0:
0x00012168 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001216c cmp r3, 0 |
| if (r3 != 0) {
0x00012170 moveq r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x00012174 streq r3, [sp, 0x18] | var_18h = r3;
| }
| if (r3 != 0) {
0x00012178 bne 0x125b4 | goto label_22;
| }
| label_18:
0x0001217c ldr r0, [sp, 0x18] | r0 = var_18h;
0x00012180 add sp, sp, 0x224 |
0x00012184 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x00012188 bl 0x8fa0 | fcn_00008fa0 ();
0x0001218c ldr r3, [sp, 0x40] | r3 = var_40h;
0x00012190 ldr ip, [sp, 0x18] | ip = var_18h;
0x00012194 add r3, r3, sl, lsl 4 | r3 += (sl << 4);
0x00012198 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001219c stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x000121a0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000121a4 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000121a8 stm sb, {r0, r1, r2, r3} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
| *((sb + 12)) = r3;
0x000121ac b 0x12144 |
| } while (1);
| label_21:
0x000121b0 ldr r2, [sp, 0x70] | r2 = var_70h;
0x000121b4 ldr r1, [sp, 0xd0] | r1 = var_d0h;
0x000121b8 add r3, sp, 0xd0 | r3 += var_d0h;
0x000121bc cmp r1, r2 |
0x000121c0 add r2, sp, 0x70 | r2 += var_70h;
| if (r1 != r2) {
0x000121c4 bne 0x12168 | goto label_0;
| }
0x000121c8 ldr r0, [sp, 0x74] | r0 = var_74h;
0x000121cc ldr ip, [sp, 0xd4] | ip = var_d4h;
0x000121d0 add r1, sp, 0xd4 | r1 += var_d4h;
0x000121d4 cmp ip, r0 |
0x000121d8 add r0, sp, 0x74 | r0 += var_74h;
| if (ip != r0) {
0x000121dc bne 0x12168 | goto label_0;
| }
0x000121e0 add lr, sp, 0xd8 | lr += var_d8h;
0x000121e4 ldr ip, [sp, 0x78] | ip = var_78h;
0x000121e8 str lr, [sp, 0x54] | var_54h = lr;
0x000121ec ldr lr, [sp, 0xd8] | lr = var_d8h;
0x000121f0 cmp lr, ip |
0x000121f4 add ip, sp, 0x78 |
| if (lr != ip) {
0x000121f8 bne 0x12168 | goto label_0;
| }
0x000121fc ldr lr, [sp, 0x20] | lr = var_20h;
0x00012200 cmp sl, 1 |
0x00012204 add lr, lr, 0x10 | lr += 0x10;
0x00012208 add r5, r5, 0x20 | r5 += 0x20;
0x0001220c str lr, [sp, 0x20] | var_20h = lr;
| if (sl != 1) {
0x00012210 bne 0x125d4 | goto label_23;
| }
0x00012214 str r3, [sp, 0x30] | var_30h = r3;
0x00012218 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001221c ldr r8, [sp, 0x2c] | r8 = var_2ch;
0x00012220 cmp r3, 0 |
0x00012224 str r1, [sp, 0x44] | var_44h = r1;
0x00012228 str r2, [sp, 0x3c] | var_3ch = r2;
0x0001222c str r0, [sp, 0x48] | var_48h = r0;
0x00012230 str ip, [sp, 0x4c] | var_4ch = ip;
| if (r3 != 0) {
0x00012234 bne 0x125fc | goto label_24;
| }
| label_10:
0x00012238 add r8, r8, 1 | r8++;
0x0001223c cmp r8, 6 |
| if (r8 != 6) {
0x00012240 bne 0x12074 | goto label_1;
| }
0x00012244 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00012248 cmp r3, 0 |
| if (r3 != 0) {
0x0001224c bne 0x126c8 | goto label_25;
| }
| label_16:
0x00012250 ldr r2, [pc, 0x4a8] |
0x00012254 ldr r3, [pc, 0x4a8] |
0x00012258 mov r8, 0 | r8 = 0;
0x0001225c add sl, sp, 0x7c | sl += var_7ch;
0x00012260 add r2, pc, r2 | r2 = pc + r2;
0x00012264 add r3, pc, r3 | r3 = pc + r3;
0x00012268 str r8, [sp, 0x24] | var_24h = r8;
0x0001226c mov r8, sl | r8 = sl;
0x00012270 ldr sl, [sp, 0x18] | sl = var_18h;
0x00012274 add r1, r2, 0x650 | r1 = r2 + 0x650;
0x00012278 str r2, [sp, 0x34] | var_34h = r2;
0x0001227c add r3, r3, 0x750 | r3 = mbedtls_ccm_self_test;
0x00012280 add r2, r2, 0x6c0 | r2 = 0x12dbc;
0x00012284 add r1, r1, 8 | r1 += 8;
0x00012288 add r2, r2, 8 | r2 += 8;
0x0001228c add r3, r3, 8 | r3 += 8;
0x00012290 str r1, [sp, 0x38] | s2 = r1;
0x00012294 str r2, [sp, 0x40] | var_40h = r2;
0x00012298 str r3, [sp, 0x2c] | var_2ch = r3;
| label_3:
0x0001229c ldr r3, [sp, 0x24] | r3 = var_24h;
0x000122a0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000122a4 asr r4, r3, 1 | r4 = r3 >> 1;
0x000122a8 add r5, r4, 2 | r5 = r4 + 2;
0x000122ac cmp r2, 0 |
0x000122b0 lsl r7, r5, 6 | r7 = r5 << 6;
0x000122b4 and r6, r3, 1 | r6 = r3 & 1;
| if (r2 != 0) {
0x000122b8 beq 0x122dc |
0x000122bc cmp r6, 0 |
| if (r6 != 0) {
0x000122c0 bne 0x126bc | goto label_26;
| }
0x000122c4 ldr r2, [pc, 0x43c] | r2 = *(0x12704);
0x000122c8 add r2, pc, r2 | r2 = pc + r2;
| label_15:
0x000122cc ldr r0, [pc, 0x438] | r0 = *(0x12708);
0x000122d0 mov r1, r7 | r1 = r7;
0x000122d4 add r0, pc, r0 | r0 = pc + r0;
0x000122d8 bl 0x8298 | printf (r0, r1, r2)
| }
0x000122dc ldr lr, [sp, 0x38] | lr = s2;
0x000122e0 ldr ip, [sp, 0x34] | ip = var_34h;
0x000122e4 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x000122e8 add ip, ip, 0x660 |
0x000122ec stm sl, {r0, r1, r2, r3} | *(sl) = r0;
| *((sl + 4)) = r1;
| *((sl + 8)) = r2;
| *((sl + 12)) = r3;
0x000122f0 stm sb, {r0, r1, r2, r3} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
| *((sb + 12)) = r3;
0x000122f4 lsl r2, r5, 3 | r2 = r5 << 3;
0x000122f8 ldr r5, [sp, 0x28] | r5 = s1;
0x000122fc add ip, ip, 8 |
0x00012300 add r1, ip, r4, lsl 5 | r1 = ip + (r4 << 5);
0x00012304 mov r0, r5 | r0 = r5;
0x00012308 bl 0x8550 | memcpy (r0, r1, r2);
0x0001230c cmp r6, 0 |
0x00012310 mov r2, r7 | r2 = r7;
| if (r6 != 0) {
0x00012314 bne 0x1260c | goto label_27;
| }
0x00012318 mov r1, r5 | r1 = r5;
0x0001231c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00012320 bl 0x8604 | fcn_00008604 ();
| label_11:
0x00012324 ldr r5, [pc, 0x3e4] |
0x00012328 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001232c add r5, pc, r5 | r5 = pc + r5;
0x00012330 add r5, r5, 0x750 | r5 = 0x12e5c;
0x00012334 add r5, r5, 8 | r5 += 8;
0x00012338 add r4, r4, r4, lsl 1 | r4 += (r4 << 1);
0x0001233c mov r7, 0 | r7 = 0;
0x00012340 str r5, [sp, 0x20] | var_20h = r5;
0x00012344 add r4, r3, r4, lsl 4 | r4 = r3 + (r4 << 4);
0x00012348 mov r5, r7 | r5 = r7;
| label_2:
0x0001234c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00012350 lsl lr, r5, 4 | lr = r5 << 4;
0x00012354 add r3, lr, r3 | r3 = lr + r3;
0x00012358 str r3, [sp, 0x18] | var_18h = r3;
0x0001235c ldr r3, [sp, 0x20] | r3 = var_20h;
0x00012360 cmp r6, 0 |
0x00012364 add r7, r4, lr | r7 = r4 + lr;
0x00012368 add lr, lr, r3 | lr += r3;
| if (r6 != 0) {
0x0001236c bne 0x125dc | goto label_28;
| }
0x00012370 ldm sl, {r0, r1, r2, r3} | r0 = *(sl);
| r1 = *((sl + 4));
| r2 = *((sl + 8));
| r3 = *((sl + 12));
0x00012374 stm r8, {r0, r1, r2, r3} | *(r8) = r0;
| *((r8 + 4)) = r1;
| *((r8 + 8)) = r2;
| *((r8 + 12)) = r3;
0x00012378 ldm r7, {r0, r1, r2, r3} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
0x0001237c stm sl, {r0, r1, r2, r3} | *(sl) = r0;
| *((sl + 4)) = r1;
| *((sl + 8)) = r2;
| *((sl + 12)) = r3;
0x00012380 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00012384 stm sb, {r0, r1, r2, r3} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
| *((sb + 12)) = r3;
| label_9:
0x00012388 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0001238c mov r3, r8 | r3 = r8;
0x00012390 mov r2, 0x10 | r2 = 0x10;
0x00012394 stm sp, {sl, fp} | *(sp) = sl;
| *((sp + 4)) = fp;
0x00012398 mov r1, r6 | r1 = r6;
0x0001239c bl 0x8d60 | fcn_00008d60 ();
0x000123a0 ldr r2, [fp] | r2 = *(fp);
0x000123a4 ldr r3, [sb] | r3 = *(sb);
0x000123a8 cmp r2, r3 |
| if (r2 != r3) {
0x000123ac bne 0x12168 | goto label_0;
| }
0x000123b0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000123b4 ldr r2, [r3] | r2 = *(r3);
0x000123b8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000123bc ldr r3, [r3] | r3 = *(r3);
0x000123c0 cmp r2, r3 |
| if (r2 != r3) {
0x000123c4 bne 0x12168 | goto label_0;
| }
0x000123c8 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000123cc ldr r2, [r3] | r2 = *(r3);
0x000123d0 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000123d4 ldr r3, [r3] | r3 = *(r3);
0x000123d8 cmp r2, r3 |
| if (r2 != r3) {
0x000123dc bne 0x12168 | goto label_0;
| }
0x000123e0 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000123e4 ldr r2, [r3] | r2 = *(r3);
0x000123e8 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000123ec ldr r3, [r3] | r3 = *(r3);
0x000123f0 cmp r2, r3 |
| if (r2 != r3) {
0x000123f4 bne 0x12168 | goto label_0;
| }
0x000123f8 add r5, r5, 1 | r5++;
0x000123fc cmp r5, 3 |
0x00012400 mov r3, 0 | r3 = 0;
| if (r5 != 3) {
0x00012404 bne 0x1234c | goto label_2;
| }
0x00012408 str r3, [sp, 0x18] | var_18h = r3;
0x0001240c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00012410 cmp r3, 0 |
| if (r3 != 0) {
0x00012414 bne 0x126ac | goto label_29;
| }
| label_14:
0x00012418 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001241c add r3, r3, 1 | r3++;
0x00012420 cmp r3, 6 |
0x00012424 str r3, [sp, 0x24] | var_24h = r3;
| if (r3 != 6) {
0x00012428 bne 0x1229c | goto label_3;
| }
0x0001242c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00012430 cmp r3, 0 |
| if (r3 != 0) {
0x00012434 bne 0x126d4 | goto label_30;
| }
| label_17:
0x00012438 ldr r7, [pc, 0x2d4] | r7 = *(0x12710);
0x0001243c ldr r3, [pc, 0x2d4] | r3 = *(0x12714);
0x00012440 add r7, pc, r7 | r7 = pc + r7;
0x00012444 add r3, pc, r3 | r3 = pc + r3;
0x00012448 str r3, [sp, 0x30] | var_30h = r3;
0x0001244c add r3, r7, 0x7b0 | r3 = r7 + 0x7b0;
0x00012450 add r3, r3, 8 | r3 += 8;
0x00012454 str r3, [sp, 0x20] | var_20h = r3;
0x00012458 add r3, sp, 0x58 | r3 += var_58h;
0x0001245c str r3, [sp, 0x24] | var_24h = r3;
0x00012460 add r3, sp, 0x9c | r3 += var_9ch;
0x00012464 str r3, [sp, 0x2c] | var_2ch = r3;
0x00012468 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001246c mov r5, 0 | r5 = 0;
0x00012470 cmp r3, 0 |
0x00012474 mov r4, r5 | r4 = r5;
0x00012478 mov r6, 0x10 | r6 = 0x10;
0x0001247c add sl, sp, 0x8c | sl += var_8ch;
0x00012480 ldr sb, [sp, 0x28] | sb = s1;
0x00012484 and r8, r5, 1 | r8 = r5 & 1;
| if (r3 != 0) {
0x00012488 beq 0x124a4 |
0x0001248c cmp r8, 0 |
| if (r8 != 0) {
0x00012490 bne 0x1259c | goto label_31;
| }
| label_5:
0x00012494 ldr r1, [pc, 0x280] | r1 = *(0x12718);
0x00012498 add r1, pc, r1 | r1 = pc + r1;
| label_6:
0x0001249c ldr r0, [sp, 0x30] | r0 = var_30h;
0x000124a0 bl 0x8298 | printf (r0, r1)
| }
| label_4:
0x000124a4 lsl ip, r4, 4 |
0x000124a8 add r3, r7, ip | r3 = r7 + ip;
0x000124ac add r3, r3, 0x780 | r3 += 0x780;
0x000124b0 add r3, r3, 8 | r3 += 8;
0x000124b4 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000124b8 ldr lr, [sp, 0x20] | lr = var_20h;
0x000124bc stm sl, {r0, r1, r2, r3} | *(sl) = r0;
| *((sl + 4)) = r1;
| *((sl + 8)) = r2;
| *((sl + 12)) = r3;
0x000124c0 add ip, lr, ip |
0x000124c4 ldm ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x000124c8 mov ip, 0 |
0x000124cc stm sb, {r0, r1, r2, r3} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
| *((sb + 12)) = r3;
0x000124d0 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000124d4 mov r2, 0x80 | r2 = 0x80;
0x000124d8 mov r1, sb | r1 = sb;
0x000124dc str ip, [sp, 0x58] | var_58h = ip;
0x000124e0 add r4, r4, r4, lsl 1 | r4 += (r4 << 1);
0x000124e4 bl 0x8fa0 | fcn_00008fa0 ();
0x000124e8 add r2, r7, 0x7e0 | r2 = r7 + 0x7e0;
0x000124ec add r3, r7, 0x870 | r3 = r7 + 0x870;
0x000124f0 lsl r4, r4, 4 | r4 <<= 4;
0x000124f4 cmp r8, 0 |
0x000124f8 add r2, r2, 8 | r2 += 8;
0x000124fc add r3, r3, 8 | r3 += 8;
0x00012500 add r8, r2, r4 | r8 = r2 + r4;
0x00012504 add r4, r3, r4 | r4 = r3 + r4;
| if (r8 != 0) {
0x00012508 bne 0x1261c | goto label_32;
| }
0x0001250c mov r1, r8 | r1 = r8;
0x00012510 mov r2, r6 | r2 = r6;
0x00012514 mov r0, fp | r0 = fp;
0x00012518 bl 0x8550 | memcpy (r0, r1, r2);
0x0001251c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00012520 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00012524 str r3, [sp] | *(sp) = r3;
0x00012528 mov r1, r6 | r1 = r6;
0x0001252c mov r3, sl | r3 = sl;
0x00012530 str fp, [sp, 8] | var_8h = fp;
0x00012534 str fp, [sp, 4] | var_4h = fp;
0x00012538 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0001253c bl 0x8d9c | fcn_00008d9c ();
0x00012540 mov r2, r6 | r2 = r6;
0x00012544 mov r1, r4 | r1 = r4;
0x00012548 mov r0, fp | r0 = fp;
0x0001254c bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00012550 cmp r0, 0 |
| if (r0 != 0) {
0x00012554 bne 0x12168 | goto label_0;
| }
0x00012558 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001255c cmp r3, 0 |
| if (r3 != 0) {
0x00012560 bne 0x12674 | goto label_33;
| }
| label_12:
0x00012564 add r5, r5, 1 | r5++;
0x00012568 cmp r5, 6 |
| if (r5 == 6) {
0x0001256c beq 0x1268c | goto label_34;
| }
| label_13:
0x00012570 ldr r3, [pc, 0x1a8] | r3 = *(0x1271c);
0x00012574 asr r4, r5, 1 | r4 = r5 >> 1;
0x00012578 add r3, pc, r3 | r3 = pc + r3;
0x0001257c add r3, r3, r4, lsl 2 | r3 += (r4 << 2);
0x00012580 ldr r6, [r3, 0x908] | r6 = *((r3 + 0x908));
0x00012584 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00012588 and r8, r5, 1 | r8 = r5 & 1;
0x0001258c cmp r3, 0 |
| if (r3 == 0) {
0x00012590 beq 0x124a4 | goto label_4;
| }
0x00012594 cmp r8, 0 |
| if (r8 == 0) {
0x00012598 beq 0x12494 | goto label_5;
| }
| label_31:
0x0001259c ldr r1, [pc, 0x180] | r1 = *(0x12720);
0x000125a0 add r1, pc, r1 | r1 = pc + r1;
0x000125a4 b 0x1249c | goto label_6;
| label_19:
0x000125a8 ldr r2, [pc, 0x178] | r2 = *(0x12724);
0x000125ac add r2, pc, r2 | r2 = pc + r2;
0x000125b0 b 0x120a0 | goto label_7;
| label_22:
0x000125b4 ldr r0, [pc, 0x170] | r0 = *(0x12728);
0x000125b8 add r0, pc, r0 | r0 = pc + r0;
0x000125bc bl 0x858c | puts (r0);
0x000125c0 mov r3, 1 | r3 = 1;
0x000125c4 str r3, [sp, 0x18] | var_18h = r3;
0x000125c8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000125cc add sp, sp, 0x224 |
0x000125d0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_23:
0x000125d4 mov sl, 1 | sl = 1;
0x000125d8 b 0x120fc | goto label_8;
| label_28:
0x000125dc ldm sb, {r0, r1, r2, r3} | r0 = *(sb);
| r1 = *((sb + 4));
| r2 = *((sb + 8));
| r3 = *((sb + 12));
0x000125e0 stm r8, {r0, r1, r2, r3} | *(r8) = r0;
| *((r8 + 4)) = r1;
| *((r8 + 8)) = r2;
| *((r8 + 12)) = r3;
0x000125e4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000125e8 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000125ec stm sl, {r0, r1, r2, r3} | *(sl) = r0;
| *((sl + 4)) = r1;
| *((sl + 8)) = r2;
| *((sl + 12)) = r3;
0x000125f0 ldm r7, {r0, r1, r2, r3} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
0x000125f4 stm sb, {r0, r1, r2, r3} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
| *((sb + 12)) = r3;
0x000125f8 b 0x12388 | goto label_9;
| label_24:
0x000125fc ldr r0, [pc, 0x12c] | r0 = *(0x1272c);
0x00012600 add r0, pc, r0 | r0 = pc + r0;
0x00012604 bl 0x858c | puts (r0);
0x00012608 b 0x12238 | goto label_10;
| label_27:
0x0001260c ldr r1, [sp, 0x28] | r1 = s1;
0x00012610 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00012614 bl 0x8fa0 | fcn_00008fa0 ();
0x00012618 b 0x12324 | goto label_11;
| label_32:
0x0001261c mov r1, r4 | r1 = r4;
0x00012620 mov r2, r6 | r2 = r6;
0x00012624 mov r0, fp | r0 = fp;
0x00012628 bl 0x8550 | memcpy (r0, r1, r2);
0x0001262c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00012630 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00012634 str r3, [sp] | *(sp) = r3;
0x00012638 mov r1, r6 | r1 = r6;
0x0001263c mov r3, sl | r3 = sl;
0x00012640 str fp, [sp, 8] | var_8h = fp;
0x00012644 str fp, [sp, 4] | var_4h = fp;
0x00012648 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0001264c bl 0x8d9c | fcn_00008d9c ();
0x00012650 mov r2, r6 | r2 = r6;
0x00012654 mov r1, r8 | r1 = r8;
0x00012658 mov r0, fp | r0 = fp;
0x0001265c bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00012660 cmp r0, 0 |
| if (r0 != 0) {
0x00012664 bne 0x12168 | goto label_0;
| }
0x00012668 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001266c cmp r3, 0 |
| if (r3 == 0) {
0x00012670 beq 0x12564 | goto label_12;
| }
| label_33:
0x00012674 ldr r0, [pc, 0xb8] | r0 = *(0x12730);
0x00012678 add r5, r5, 1 | r5++;
0x0001267c add r0, pc, r0 | r0 = pc + r0;
0x00012680 bl 0x858c | puts (r0);
0x00012684 cmp r5, 6 |
| if (r5 != 6) {
0x00012688 bne 0x12570 | goto label_13;
| }
| label_34:
0x0001268c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00012690 cmp r3, 0 |
| if (r3 == 0) {
0x00012694 bne 0x126e0 |
0x00012698 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001269c str r3, [sp, 0x18] | var_18h = r3;
0x000126a0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000126a4 add sp, sp, 0x224 |
0x000126a8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_29:
0x000126ac ldr r0, [pc, 0x84] | r0 = *(0x12734);
0x000126b0 add r0, pc, r0 | r0 = pc + r0;
0x000126b4 bl 0x858c | puts (r0);
0x000126b8 b 0x12418 | goto label_14;
| label_26:
0x000126bc ldr r2, [pc, 0x78] | r2 = *(0x12738);
0x000126c0 add r2, pc, r2 | r2 = pc + r2;
0x000126c4 b 0x122cc | goto label_15;
| label_25:
0x000126c8 mov r0, 0xa | r0 = 0xa;
0x000126cc bl 0x81d8 | putchar (r0);
0x000126d0 b 0x12250 | goto label_16;
| label_30:
0x000126d4 mov r0, 0xa | r0 = 0xa;
0x000126d8 bl 0x81d8 | putchar (r0);
0x000126dc b 0x12438 | goto label_17;
| }
0x000126e0 mov r0, 0xa | r0 = 0xa;
0x000126e4 bl 0x81d8 | putchar (r0);
0x000126e8 b 0x1217c | goto label_18;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x12e50 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_ccm_self_test () | void mbedtls_ccm_self_test (int32_t arg_10h, int32_t arg_1ch, int32_t arg_34h, int32_t arg_48h, int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| char * format;
| char * s;
| int32_t var_40h;
| int32_t var_0h_2;
| int32_t var_60h;
| int32_t var_1h;
| int32_t var_a4h;
| r0 = arg1;
0x00012e50 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012e54 ldr fp, [pc, 0x22c] | fp = *(0x13084);
0x00012e58 sub sp, sp, 0xa4 |
0x00012e5c add r8, sp, 0x60 | r8 += var_60h;
0x00012e60 add fp, pc, fp |
0x00012e64 mov sl, r0 | sl = r0;
0x00012e68 mov r0, r8 | r0 = r8;
0x00012e6c bl 0x88b0 | fcn_000088b0 ();
0x00012e70 mov r0, r8 | r0 = r8;
0x00012e74 mov r2, fp | r2 = fp;
0x00012e78 mov r3, 0x80 | r3 = 0x80;
0x00012e7c mov r1, 2 | r1 = 2;
0x00012e80 bl 0x8850 | fcn_00008850 ();
0x00012e84 subs r4, r0, 0 | r4 -= var_60h;
| if (r4 != var_60h) {
0x00012e88 beq 0x12ea4 |
0x00012e8c cmp sl, 0 |
| if (sl != 0) {
0x00012e90 bne 0x13050 | goto label_4;
| }
| label_3:
0x00012e94 mov r5, 1 | r5 = 1;
| label_0:
0x00012e98 mov r0, r5 | r0 = r5;
0x00012e9c add sp, sp, 0xa4 |
0x00012ea0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00012ea4 ldr r2, [pc, 0x1e0] | r2 = *(0x13088);
0x00012ea8 ldr r3, [pc, 0x1e0] |
0x00012eac add r2, pc, r2 | r2 = pc + r2;
0x00012eb0 str r2, [sp, 0x38] | format = r2;
0x00012eb4 ldr r2, [pc, 0x1d8] | r2 = *(0x13090);
0x00012eb8 add r3, pc, r3 | r3 = pc + r3;
0x00012ebc str r3, [sp, 0x30] | var_30h = r3;
0x00012ec0 add r3, r3, 0xa8 | r3 = 0x13134;
0x00012ec4 add r2, pc, r2 | r2 = pc + r2;
0x00012ec8 mov sb, 4 | sb = 4;
0x00012ecc str r3, [sp, 0x34] | var_34h = r3;
0x00012ed0 mov r3, 8 | r3 = 8;
0x00012ed4 str r2, [sp, 0x3c] | s = r2;
0x00012ed8 str r3, [sp, 0x20] | var_20h = r3;
0x00012edc add r2, fp, 0x10 | r2 += arg_10h;
0x00012ee0 mov r3, 7 | r3 = 7;
0x00012ee4 mov r5, sb | r5 = sb;
0x00012ee8 add r7, sp, 0x40 | r7 += var_40h;
0x00012eec str r2, [sp, 0x2c] | var_2ch = r2;
0x00012ef0 str r3, [sp, 0x1c] | var_1ch = r3;
0x00012ef4 str sl, [sp, 0x24] | var_24h = sl;
0x00012ef8 str r8, [sp, 0x28] | var_28h = r8;
| do {
0x00012efc ldr r3, [sp, 0x24] | r3 = var_24h;
0x00012f00 add r8, fp, 0x1c | r8 += arg_1ch;
0x00012f04 cmp r3, 0 |
0x00012f08 add sl, fp, 0x34 | sl += arg_34h;
| if (r3 != 0) {
0x00012f0c bne 0x13034 | goto label_5;
| }
| label_1:
0x00012f10 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00012f14 add r3, r7, r5 | r3 = r7 + r5;
0x00012f18 str r2, [sp, 4] | var_4h = r2;
0x00012f1c str r3, [sp, 0x10] | var_10h = r3;
0x00012f20 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00012f24 mov r1, r5 | r1 = r5;
0x00012f28 str sb, [sp, 0x14] | var_14h = sb;
0x00012f2c str r7, [sp, 0xc] | var_ch = r7;
0x00012f30 str r8, [sp, 8] | var_8h = r8;
0x00012f34 str sl, [sp] | *(sp) = sl;
0x00012f38 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00012f3c ldr r0, [sp, 0x28] | r0 = var_28h;
0x00012f40 bl 0x85ec | fcn_000085ec ();
0x00012f44 add r6, fp, 0x48 | r6 += arg_48h;
0x00012f48 add r6, r6, r4, lsl 5 | r6 += (r4 << 5);
0x00012f4c add r2, r5, sb | r2 = r5 + sb;
0x00012f50 mov r1, r6 | r1 = r6;
0x00012f54 add r4, r4, 1 | r4 += var_1h;
0x00012f58 cmp r0, 0 |
0x00012f5c mov r0, r7 | r0 = r7;
| if (r0 != 0) {
0x00012f60 bne 0x1306c | goto label_6;
| }
0x00012f64 bl 0x8b08 | memcmp (r0, r1, r2);
0x00012f68 add ip, r6, r5 |
0x00012f6c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00012f70 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00012f74 mov r1, r5 | r1 = r5;
0x00012f78 cmp r0, 0 |
0x00012f7c ldr r0, [sp, 0x28] | r0 = var_28h;
| if (r0 != 0) {
0x00012f80 bne 0x1306c | goto label_6;
| }
0x00012f84 str ip, [sp, 0x10] | var_10h = ip;
0x00012f88 ldr ip, [sp, 0x20] | ip = var_20h;
0x00012f8c str sb, [sp, 0x14] | var_14h = sb;
0x00012f90 str r7, [sp, 0xc] | var_ch = r7;
0x00012f94 str r6, [sp, 8] | var_8h = r6;
0x00012f98 stm sp, {sl, ip} | *(sp) = sl;
| *((sp + 4)) = ip;
0x00012f9c bl 0x8d6c | fcn_00008d6c ();
0x00012fa0 mov r2, r5 | r2 = r5;
0x00012fa4 mov r1, r8 | r1 = r8;
0x00012fa8 cmp r0, 0 |
0x00012fac mov r0, r7 | r0 = r7;
| if (r0 != 0) {
0x00012fb0 bne 0x1306c | goto label_6;
| }
0x00012fb4 bl 0x8b08 | memcmp (r0, r1, r2);
0x00012fb8 subs r5, r0, 0 | r5 -= var_40h;
| if (r5 != var_40h) {
0x00012fbc bne 0x1306c | goto label_6;
| }
0x00012fc0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00012fc4 cmp r3, 0 |
| if (r3 != 0) {
0x00012fc8 bne 0x13044 | goto label_7;
| }
| label_2:
0x00012fcc ldr r3, [sp, 0x30] | r3 = var_30h;
0x00012fd0 cmp r4, 3 |
0x00012fd4 add r1, r3, 0xb4 | r1 = r3 + 0xb4;
0x00012fd8 add r2, r3, 0xc0 | r2 = r3 + 0xc0;
0x00012fdc add r3, r3, 0xcc | r3 += 0xcc;
| if (r4 == 3) {
0x00012fe0 beq 0x13004 | goto label_8;
| }
0x00012fe4 ldr r1, [r1, r4, lsl 2] | offset_0 = r4 << 2;
| r1 = *((r1 + offset_0));
0x00012fe8 ldr r2, [r2, r4, lsl 2] | offset_1 = r4 << 2;
| r2 = *((r2 + offset_1));
0x00012fec ldr sb, [r3, r4, lsl 2] | offset_2 = r4 << 2;
| sb = *((r3 + offset_2));
0x00012ff0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00012ff4 str r1, [sp, 0x1c] | var_1ch = r1;
0x00012ff8 str r2, [sp, 0x20] | var_20h = r2;
0x00012ffc ldr r5, [r3, r4, lsl 2] | offset_3 = r4 << 2;
| r5 = *((r3 + offset_3));
0x00013000 b 0x12efc |
| } while (1);
| label_8:
0x00013004 ldr r8, [sp, 0x28] | r8 = var_28h;
0x00013008 ldr sl, [sp, 0x24] | sl = var_24h;
0x0001300c mov r0, r8 | r0 = r8;
0x00013010 bl 0x88c8 | fcn_000088c8 ();
0x00013014 cmp sl, 0 |
| if (sl == 0) {
0x00013018 moveq r5, sl | r5 = sl;
| goto label_9;
| }
| if (sl == 0) {
| label_9:
0x0001301c beq 0x12e98 | goto label_0;
| }
0x00013020 mov r0, 0xa | r0 = 0xa;
0x00013024 bl 0x81d8 | putchar (r0);
0x00013028 mov r0, r5 | r0 = r5;
0x0001302c add sp, sp, 0xa4 |
0x00013030 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00013034 add r1, r4, 1 | r1 += var_1h;
0x00013038 ldr r0, [sp, 0x38] | r0 = format;
0x0001303c bl 0x8298 | printf (r0, r1)
0x00013040 b 0x12f10 | goto label_1;
| label_7:
0x00013044 ldr r0, [sp, 0x3c] | r0 = s;
0x00013048 bl 0x858c | puts (r0);
0x0001304c b 0x12fcc | goto label_2;
| label_4:
0x00013050 ldr r0, [pc, 0x40] | r0 = *(0x13094);
0x00013054 mov r5, 1 | r5 = 1;
0x00013058 add r0, pc, r0 | r0 = pc + r0;
0x0001305c bl 0x8298 | printf (r0, r1, r2, r3, r4, r5)
0x00013060 mov r0, r5 | r0 = r5;
0x00013064 add sp, sp, 0xa4 |
0x00013068 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0001306c ldr sl, [sp, 0x24] | sl = var_24h;
0x00013070 cmp sl, 0 |
| if (sl == 0) {
0x00013074 beq 0x12e94 | goto label_3;
| }
0x00013078 ldr r0, [pc, 0x1c] | r0 = *(0x13098);
0x0001307c add r0, pc, r0 | r0 = pc + r0;
0x00013080 bl 0x858c | puts (r0);
0x00013084 b 0x12e94 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x14b28 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_ctr_drbg_self_test () | void mbedtls_ctr_drbg_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| void * s1;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_15ch;
| r0 = arg1;
0x00014b28 push {r4, r5, r6, r7, r8, sb, lr} |
0x00014b2c sub sp, sp, 0x15c |
0x00014b30 add r4, sp, 0x18 | r4 += var_18h;
0x00014b34 mov r5, r0 | r5 = r0;
0x00014b38 mov r0, r4 | r0 = r4;
0x00014b3c bl 0x81e4 | fcn_000081e4 ();
0x00014b40 cmp r5, 0 |
| if (r5 != 0) {
0x00014b44 bne 0x14bfc | goto label_6;
| }
0x00014b48 mov r1, 0x20 | r1 = 0x20;
0x00014b4c ldr r3, [pc, 0x2fc] | r3 = *(0x14e4c);
0x00014b50 ldr ip, [pc, 0x2fc] | ip = "TLS_ECP_NIST_OPTIM";
0x00014b54 str r1, [sp, 4] | var_4h = r1;
0x00014b58 ldr r1, [pc, 0x2f8] | r1 = "TLS_ECP_NIST_OPTIM";
0x00014b5c add r3, pc, r3 | r3 = pc + r3;
0x00014b60 add ip, pc, ip |
0x00014b64 mov r6, 0x10 | r6 = 0x10;
0x00014b68 str r6, [sp] | *(sp) = r6;
0x00014b6c add r2, r3, r6 | r2 = r3 + r6;
0x00014b70 add r1, pc, r1 | r1 = pc + r1;
0x00014b74 mov r0, r4 | r0 = r4;
0x00014b78 str r5, [ip] | *(ip) = r5;
0x00014b7c bl 0x8544 | r0 = fcn_00008544 ();
0x00014b80 cmp r0, 0 |
0x00014b84 beq 0x14b98 |
| while (r0 != 0) {
| label_0:
0x00014b88 mov r6, 1 | r6 = 1;
| label_4:
0x00014b8c mov r0, r6 | r0 = r6;
0x00014b90 add sp, sp, 0x15c |
0x00014b94 pop {r4, r5, r6, r7, r8, sb, pc} |
0x00014b98 mov r1, 1 | r1 = 1;
0x00014b9c mov r0, r4 | r0 = r4;
0x00014ba0 add r7, sp, 8 | r7 += s1;
0x00014ba4 bl 0x8208 | fcn_00008208 ();
0x00014ba8 mov r1, r7 | r1 = r7;
0x00014bac mov r2, r6 | r2 = r6;
0x00014bb0 mov r0, r4 | r0 = r4;
0x00014bb4 bl 0x84c0 | r0 = fcn_000084c0 ();
0x00014bb8 cmp r0, 0 |
0x00014bbc bne 0x14b88 |
| }
0x00014bc0 mov r2, r6 | r2 = r6;
0x00014bc4 mov r1, r7 | r1 = r7;
0x00014bc8 mov r0, r4 | r0 = r4;
0x00014bcc bl 0x84c0 | r0 = fcn_000084c0 ();
0x00014bd0 cmp r0, 0 |
| if (r0 != 0) {
0x00014bd4 bne 0x14b88 | goto label_0;
| }
| label_2:
0x00014bd8 ldr r6, [pc, 0x27c] | r6 = *(0x14e58);
0x00014bdc ldr r2, [sp, 8] | r2 = s1;
0x00014be0 add r6, pc, r6 | r6 = pc + r6;
0x00014be4 ldr r3, [r6, 0x70] | r3 = *(0x14ec8);
0x00014be8 cmp r2, r3 |
| if (r2 == r3) {
0x00014bec beq 0x14cac | goto label_7;
| }
| label_3:
0x00014bf0 cmp r5, 0 |
| if (r5 != 0) {
0x00014bf4 bne 0x14c4c | goto label_1;
| }
0x00014bf8 b 0x14b88 | goto label_0;
| label_6:
0x00014bfc ldr r0, [pc, 0x25c] | r0 = *(0x14e5c);
0x00014c00 mov r6, 0x10 | r6 = 0x10;
0x00014c04 add r0, pc, r0 | r0 = pc + r0;
0x00014c08 bl 0x8298 | printf (r0, r1, r2, r3, r4, r5, r6)
0x00014c0c mov r1, 0x20 | r1 = 0x20;
0x00014c10 ldr r3, [pc, 0x24c] | r3 = *(0x14e60);
0x00014c14 ldr r0, [pc, 0x24c] | r0 = *(0x14e64);
0x00014c18 str r1, [sp, 4] | var_4h = r1;
0x00014c1c ldr r1, [pc, 0x248] | r1 = "DP_SECP224K1_ENABLED";
0x00014c20 add r3, pc, r3 | r3 = pc + r3;
0x00014c24 add r0, pc, r0 | r0 = pc + r0;
0x00014c28 mov ip, 0 |
0x00014c2c str r6, [sp] | *(sp) = r6;
0x00014c30 add r2, r3, r6 | r2 = r3 + r6;
0x00014c34 str ip, [r0] | *(r0) = ip;
0x00014c38 add r1, pc, r1 | r1 = pc + r1;
0x00014c3c mov r0, r4 | r0 = r4;
0x00014c40 bl 0x8544 | r0 = fcn_00008544 ();
0x00014c44 cmp r0, 0 |
0x00014c48 beq 0x14c68 |
| while (r0 != 0) {
| label_1:
0x00014c4c ldr r0, [pc, 0x21c] | r0 = *(0x14e6c);
0x00014c50 mov r6, 1 | r6 = 1;
0x00014c54 add r0, pc, r0 | r0 = pc + r0;
0x00014c58 bl 0x858c | puts (r0);
0x00014c5c mov r0, r6 | r0 = r6;
0x00014c60 add sp, sp, 0x15c |
0x00014c64 pop {r4, r5, r6, r7, r8, sb, pc} |
0x00014c68 mov r1, 1 | r1 = 1;
0x00014c6c mov r0, r4 | r0 = r4;
0x00014c70 add r7, sp, 8 | r7 += s1;
0x00014c74 bl 0x8208 | fcn_00008208 ();
0x00014c78 mov r1, r7 | r1 = r7;
0x00014c7c mov r2, r6 | r2 = r6;
0x00014c80 mov r0, r4 | r0 = r4;
0x00014c84 bl 0x84c0 | r0 = fcn_000084c0 ();
0x00014c88 cmp r0, 0 |
0x00014c8c bne 0x14c4c |
| }
0x00014c90 mov r2, r6 | r2 = r6;
0x00014c94 mov r1, r7 | r1 = r7;
0x00014c98 mov r0, r4 | r0 = r4;
0x00014c9c bl 0x84c0 | r0 = fcn_000084c0 ();
0x00014ca0 cmp r0, 0 |
| if (r0 != 0) {
0x00014ca4 bne 0x14c4c | goto label_1;
| }
0x00014ca8 b 0x14bd8 | goto label_2;
| label_7:
0x00014cac ldr r2, [sp, 0xc] | r2 = var_ch;
0x00014cb0 ldr r3, [r6, 0x74] | r3 = *((r6 + 0x74));
0x00014cb4 cmp r2, r3 |
| if (r2 != r3) {
0x00014cb8 bne 0x14bf0 | goto label_3;
| }
0x00014cbc ldr r2, [sp, 0x10] | r2 = var_10h;
0x00014cc0 ldr r3, [r6, 0x78] | r3 = *((r6 + 0x78));
0x00014cc4 cmp r2, r3 |
| if (r2 != r3) {
0x00014cc8 bne 0x14bf0 | goto label_3;
| }
0x00014ccc ldr r2, [sp, 0x14] | r2 = var_14h;
0x00014cd0 ldr r3, [r6, 0x7c] | r3 = *((r6 + 0x7c));
0x00014cd4 cmp r2, r3 |
| if (r2 != r3) {
0x00014cd8 bne 0x14bf0 | goto label_3;
| }
0x00014cdc mov r0, r4 | r0 = r4;
0x00014ce0 bl 0x83f4 | fcn_000083f4 ();
0x00014ce4 cmp r5, 0 |
0x00014ce8 mov sb, 0 | sb = 0;
| if (r5 != 0) {
0x00014cec bne 0x14dc4 | goto label_8;
| }
0x00014cf0 mov r0, r4 | r0 = r4;
0x00014cf4 bl 0x81e4 | fcn_000081e4 ();
0x00014cf8 ldr ip, [pc, 0x174] | ip = "ECP_DP_SECP192R1_ENABLED";
0x00014cfc ldr r1, [pc, 0x174] | r1 = "ECP_DP_SECP192R1_ENABLED";
0x00014d00 add ip, pc, ip |
0x00014d04 mov r3, 0x20 | r3 = 0x20;
0x00014d08 mov r8, 0x10 | r8 = 0x10;
0x00014d0c str r3, [sp, 4] | var_4h = r3;
0x00014d10 str r8, [sp] | *(sp) = r8;
0x00014d14 add r3, r6, 0x80 | r3 = r6 + 0x80;
0x00014d18 add r2, r6, 0x90 | r2 = r6 + 0x90;
0x00014d1c add r1, pc, r1 | r1 = pc + r1;
0x00014d20 mov r0, r4 | r0 = r4;
0x00014d24 str r5, [ip] | *(ip) = r5;
0x00014d28 bl 0x8544 | r0 = fcn_00008544 ();
0x00014d2c cmp r0, 0 |
| if (r0 != 0) {
0x00014d30 bne 0x14b88 | goto label_0;
| }
0x00014d34 mov r2, r8 | r2 = r8;
0x00014d38 mov r1, r7 | r1 = r7;
0x00014d3c mov r0, r4 | r0 = r4;
0x00014d40 bl 0x84c0 | r0 = fcn_000084c0 ();
0x00014d44 cmp r0, 0 |
| if (r0 != 0) {
0x00014d48 bne 0x14b88 | goto label_0;
| }
0x00014d4c mov r2, r5 | r2 = r5;
0x00014d50 mov r1, r5 | r1 = r5;
0x00014d54 mov r0, r4 | r0 = r4;
0x00014d58 bl 0x8868 | r0 = fcn_00008868 ();
0x00014d5c cmp r0, 0 |
| if (r0 != 0) {
0x00014d60 bne 0x14b88 | goto label_0;
| }
| label_5:
0x00014d64 mov r2, 0x10 | r2 = 0x10;
0x00014d68 mov r1, r7 | r1 = r7;
0x00014d6c mov r0, r4 | r0 = r4;
0x00014d70 bl 0x84c0 | r0 = fcn_000084c0 ();
0x00014d74 cmp r0, 0 |
| if (r0 != 0) {
0x00014d78 bne 0x14bf0 | goto label_3;
| }
0x00014d7c ldr r1, [pc, 0xf8] |
0x00014d80 mov r0, r7 | r0 = r7;
0x00014d84 add r1, pc, r1 | r1 = pc + r1;
0x00014d88 add r1, r1, 0xd0 | r1 = 0x14f48;
0x00014d8c mov r2, 0x10 | r2 = 0x10;
0x00014d90 bl 0x8b08 | memcmp (r0, r1, r2);
0x00014d94 subs r6, r0, 0 | r6 -= s1;
| if (r6 != s1) {
0x00014d98 bne 0x14bf0 | goto label_3;
| }
0x00014d9c mov r0, r4 | r0 = r4;
0x00014da0 bl 0x83f4 | fcn_000083f4 ();
0x00014da4 cmp r5, 0 |
| if (r5 == 0) {
0x00014da8 beq 0x14b8c | goto label_4;
| }
0x00014dac ldr r0, [pc, 0xcc] | r0 = *(0x14e7c);
0x00014db0 add r0, pc, r0 | r0 = pc + r0;
0x00014db4 bl 0x858c | puts (r0);
0x00014db8 mov r0, 0xa | r0 = 0xa;
0x00014dbc bl 0x81d8 | putchar (r0);
0x00014dc0 b 0x14b8c | goto label_4;
| label_8:
0x00014dc4 ldr r0, [pc, 0xb8] | r0 = *(0x14e80);
0x00014dc8 mov r8, 0x10 | r8 = 0x10;
0x00014dcc add r0, pc, r0 | r0 = pc + r0;
0x00014dd0 bl 0x858c | puts (r0);
0x00014dd4 ldr r0, [pc, 0xac] | r0 = *(0x14e84);
0x00014dd8 add r0, pc, r0 | r0 = pc + r0;
0x00014ddc bl 0x8298 | printf (r0)
0x00014de0 mov r0, r4 | r0 = r4;
0x00014de4 bl 0x81e4 | fcn_000081e4 ();
0x00014de8 ldr r0, [pc, 0x9c] | r0 = *(0x14e88);
0x00014dec ldr r1, [pc, 0x9c] | r1 = "CBC";
0x00014df0 add r0, pc, r0 | r0 = pc + r0;
0x00014df4 mov r3, 0x20 | r3 = 0x20;
0x00014df8 str r3, [sp, 4] | var_4h = r3;
0x00014dfc str r8, [sp] | *(sp) = r8;
0x00014e00 add r3, r6, 0x80 | r3 = r6 + 0x80;
0x00014e04 str sb, [r0] | *(r0) = sb;
0x00014e08 add r2, r6, 0x90 | r2 = r6 + 0x90;
0x00014e0c add r1, pc, r1 | r1 = pc + r1;
0x00014e10 mov r0, r4 | r0 = r4;
0x00014e14 bl 0x8544 | r0 = fcn_00008544 ();
0x00014e18 cmp r0, sb |
| if (r0 != sb) {
0x00014e1c bne 0x14c4c | goto label_1;
| }
0x00014e20 mov r2, r8 | r2 = r8;
0x00014e24 mov r1, r7 | r1 = r7;
0x00014e28 mov r0, r4 | r0 = r4;
0x00014e2c bl 0x84c0 | fcn_000084c0 ();
0x00014e30 subs r2, r0, 0 | r2 -= var_18h;
| if (r2 != var_18h) {
0x00014e34 bne 0x14c4c | goto label_1;
| }
0x00014e38 mov r1, r2 | r1 = r2;
0x00014e3c mov r0, r4 | r0 = r4;
0x00014e40 bl 0x8868 | r0 = fcn_00008868 ();
0x00014e44 cmp r0, 0 |
| if (r0 != 0) {
0x00014e48 bne 0x14c4c | goto label_1;
| }
0x00014e4c b 0x14d64 | goto label_5;
| }
r2dec has crashed (info: /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x16178).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x172bc */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_dhm_self_test () | void mbedtls_dhm_self_test (int32_t arg1) {
| int32_t var_4h;
| int32_t var_84h;
| r0 = arg1;
0x000172bc push {r4, r5, lr} |
0x000172c0 sub sp, sp, 0x84 |
0x000172c4 add r4, sp, 4 | r4 += var_4h;
0x000172c8 mov r5, r0 | r5 = r0;
0x000172cc mov r0, r4 | r0 = r4;
0x000172d0 bl 0x8ff4 | fcn_00008ff4 ();
0x000172d4 cmp r5, 0 |
| if (r5 != 0) {
0x000172d8 bne 0x1730c | goto label_1;
| }
0x000172dc ldr r1, [pc, 0x74] | r1 = *(0x17354);
0x000172e0 mov r2, 0xfb | r2 = 0xfb;
0x000172e4 add r1, pc, r1 | r1 = pc + r1;
0x000172e8 mov r0, r4 | r0 = r4;
0x000172ec bl 0x8b44 | fcn_00008b44 ();
0x000172f0 adds r5, r0, 0 | r5 += var_4h;
0x000172f4 movne r5, 1 | r5 = 1;
| while (1) {
| label_0:
0x000172f8 mov r0, r4 | r0 = r4;
0x000172fc bl 0x86ac | fcn_000086ac ();
0x00017300 mov r0, r5 | r0 = r5;
0x00017304 add sp, sp, 0x84 |
0x00017308 pop {r4, r5, pc} |
| label_1:
0x0001730c ldr r0, [pc, 0x48] | r0 = *(0x17358);
0x00017310 add r0, pc, r0 | r0 = pc + r0;
0x00017314 bl 0x8298 | printf (r0)
0x00017318 ldr r1, [pc, 0x40] | r1 = *(0x1735c);
0x0001731c mov r2, 0xfb | r2 = 0xfb;
0x00017320 add r1, pc, r1 | r1 = pc + r1;
0x00017324 mov r0, r4 | r0 = r4;
0x00017328 bl 0x8b44 | fcn_00008b44 ();
0x0001732c subs r5, r0, 0 | r5 -= var_4h;
| if (r5 == var_4h) {
0x00017330 beq 0x17348 | goto label_2;
| }
0x00017334 ldr r0, [pc, 0x28] | r0 = *(0x17360);
0x00017338 mov r5, 1 | r5 = 1;
0x0001733c add r0, pc, r0 | r0 = pc + r0;
0x00017340 bl 0x858c | puts (r0);
0x00017344 b 0x172f8 |
| }
| label_2:
0x00017348 ldr r0, [pc, 0x18] | r0 = *(0x17364);
0x0001734c add r0, pc, r0 | r0 = pc + r0;
0x00017350 bl 0x858c | puts (r0);
0x00017354 b 0x172f8 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x1b94c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_ecp_self_test () | void mbedtls_ecp_self_test (int32_t arg_0h, int32_t arg_4h, int32_t arg_3ch, int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_2ch;
| int32_t var_0h_2;
| int32_t var_44h;
| int32_t var_68h;
| int32_t var_8ch;
| int32_t var_b4h;
| int32_t var_10ch;
| r0 = arg1;
0x0001b94c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001b950 ldr lr, [pc, 0x480] | lr = "A3C12710F10A09FA08AB87";
0x0001b954 mov sb, r0 | sb = r0;
0x0001b958 add lr, pc, lr | lr = pc + lr;
0x0001b95c ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0001b960 sub sp, sp, 0x10c |
0x0001b964 add sl, sp, 0x2c | sl += var_2ch;
0x0001b968 mov ip, sl |
0x0001b96c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0001b970 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x0001b974 add r5, sp, 0x8c | r5 += var_8ch;
0x0001b978 stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x0001b97c add r8, sp, 0x44 | r8 += var_44h;
0x0001b980 mov r0, r5 | r0 = r5;
0x0001b984 bl 0x8f1c | fcn_00008f1c ();
0x0001b988 add r7, sp, 0x68 | r7 += var_68h;
0x0001b98c mov r0, r8 | r0 = r8;
0x0001b990 bl 0x8244 | fcn_00008244 ();
0x0001b994 add r6, sp, 0x20 | r6 += var_20h;
0x0001b998 mov r0, r7 | r0 = r7;
0x0001b99c bl 0x8244 | fcn_00008244 ();
0x0001b9a0 mov r0, r6 | r0 = r6;
0x0001b9a4 bl 0x86c4 | fcn_000086c4 ();
0x0001b9a8 mov r0, r5 | r0 = r5;
0x0001b9ac mov r1, 1 | r1 = 1;
0x0001b9b0 bl 0x8b20 | fcn_00008b20 ();
0x0001b9b4 subs r4, r0, 0 | r4 -= var_8ch;
| if (r4 != var_8ch) {
0x0001b9b8 bne 0x1ba08 | goto label_0;
| }
0x0001b9bc cmp sb, 0 |
| if (sb != 0) {
0x0001b9c0 bne 0x1ba90 | goto label_9;
| }
0x0001b9c4 mov r1, 2 | r1 = 2;
0x0001b9c8 mov r0, r6 | r0 = r6;
0x0001b9cc bl 0x8874 | fcn_00008874 ();
0x0001b9d0 subs r4, r0, 0 | r4 -= var_20h;
| if (r4 == var_20h) {
0x0001b9d4 beq 0x1bcfc | goto label_10;
| }
| label_3:
0x0001b9d8 mov r0, r5 | r0 = r5;
0x0001b9dc bl 0x85c8 | fcn_000085c8 ();
0x0001b9e0 mov r0, r8 | r0 = r8;
0x0001b9e4 bl 0x89ac | fcn_000089ac ();
0x0001b9e8 mov r0, r7 | r0 = r7;
0x0001b9ec bl 0x89ac | fcn_000089ac ();
0x0001b9f0 mov r0, r6 | r0 = r6;
0x0001b9f4 bl 0x8fac | fcn_00008fac ();
0x0001b9f8 mov r0, r4 | r0 = r4;
0x0001b9fc add sp, sp, 0x10c |
0x0001ba00 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x0001ba04 mov r4, ip | r4 = ip;
| do {
| label_0:
0x0001ba08 adds r3, sb, 0 | r3 = sb + 0;
| if (r3 == sb) {
0x0001ba0c movne r3, 1 | r3 = 1;
| }
0x0001ba10 ands r3, r3, r4, lsr 31 | r3 &= (r4 >> 31);
| if (r3 == r3) {
0x0001ba14 bne 0x1ba4c |
0x0001ba18 mov r0, r5 | r0 = r5;
0x0001ba1c bl 0x85c8 | fcn_000085c8 ();
0x0001ba20 mov r0, r8 | r0 = r8;
0x0001ba24 bl 0x89ac | fcn_000089ac ();
0x0001ba28 mov r0, r7 | r0 = r7;
0x0001ba2c bl 0x89ac | fcn_000089ac ();
0x0001ba30 mov r0, r6 | r0 = r6;
0x0001ba34 bl 0x8fac | fcn_00008fac ();
0x0001ba38 cmp sb, 0 |
| if (sb != 0) {
0x0001ba3c bne 0x1ba7c | goto label_11;
| }
0x0001ba40 mov r0, r4 | r0 = r4;
0x0001ba44 add sp, sp, 0x10c |
0x0001ba48 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0001ba4c ldr r0, [pc, 0x388] | r0 = "A3C12710F10A09FA08AB87";
0x0001ba50 mov r1, r4 | r1 = r4;
0x0001ba54 add r0, pc, r0 | r0 = pc + r0;
0x0001ba58 bl 0x8298 | printf ("A3C12710F10A09FA08AB87", r1)
| label_5:
0x0001ba5c mov r0, r5 | r0 = r5;
0x0001ba60 bl 0x85c8 | fcn_000085c8 ();
0x0001ba64 mov r0, r8 | r0 = r8;
0x0001ba68 bl 0x89ac | fcn_000089ac ();
0x0001ba6c mov r0, r7 | r0 = r7;
0x0001ba70 bl 0x89ac | fcn_000089ac ();
0x0001ba74 mov r0, r6 | r0 = r6;
0x0001ba78 bl 0x8fac | fcn_00008fac ();
| label_11:
0x0001ba7c mov r0, 0xa | r0 = 0xa;
0x0001ba80 bl 0x81d8 | putchar (r0);
0x0001ba84 mov r0, r4 | r0 = r4;
0x0001ba88 add sp, sp, 0x10c |
0x0001ba8c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x0001ba90 ldr r0, [pc, 0x348] | r0 = *(0x1bddc);
0x0001ba94 add r0, pc, r0 | r0 = pc + r0;
0x0001ba98 bl 0x8298 | printf (r0)
0x0001ba9c mov r1, 2 | r1 = 2;
0x0001baa0 mov r0, r6 | r0 = r6;
0x0001baa4 bl 0x8874 | fcn_00008874 ();
0x0001baa8 subs r4, r0, 0 | r4 -= var_20h;
0x0001baac bne 0x1ba08 |
| } while (r4 != var_20h);
0x0001bab0 add r3, sp, 0xb4 | r3 += var_b4h;
0x0001bab4 str r4, [sp, 4] | var_4h = r4;
0x0001bab8 str r4, [sp] | *(sp) = r4;
0x0001babc mov r2, r6 | r2 = r6;
0x0001bac0 mov r1, r7 | r1 = r7;
0x0001bac4 mov r0, r5 | r0 = r5;
0x0001bac8 str r3, [sp, 0xc] | var_ch = r3;
0x0001bacc bl 0x8c10 | fcn_00008c10 ();
0x0001bad0 subs r4, r0, 0 | r4 -= var_8ch;
| if (r4 != var_8ch) {
0x0001bad4 bne 0x1ba08 | goto label_0;
| }
| label_6:
0x0001bad8 ldr fp, [pc, 0x304] | fp = *(0x1bde0);
0x0001badc ldr r2, [pc, 0x304] | r2 = *(0x1bde4);
0x0001bae0 mov r3, 0 | r3 = 0;
0x0001bae4 add fp, pc, fp |
0x0001bae8 add r2, pc, r2 | r2 = pc + r2;
0x0001baec mov r1, 0x10 | r1 = 0x10;
0x0001baf0 mov r0, r6 | r0 = r6;
0x0001baf4 str r3, [fp, 0x3c] | *(arg_3ch) = r3;
0x0001baf8 str r3, [fp, 4] | *(arg_4h) = r3;
0x0001bafc str r3, [fp] | *(fp) = r3;
0x0001bb00 bl 0x83e8 | fcn_000083e8 ();
0x0001bb04 subs r4, r0, 0 | r4 -= var_20h;
| if (r4 != var_20h) {
0x0001bb08 bne 0x1ba08 | goto label_0;
| }
0x0001bb0c str r4, [sp, 4] | var_4h = r4;
0x0001bb10 str r4, [sp] | *(sp) = r4;
0x0001bb14 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001bb18 mov r2, r6 | r2 = r6;
0x0001bb1c mov r1, r8 | r1 = r8;
0x0001bb20 mov r0, r5 | r0 = r5;
0x0001bb24 bl 0x8c10 | fcn_00008c10 ();
0x0001bb28 subs r4, r0, 0 | r4 -= var_8ch;
| if (r4 != var_8ch) {
0x0001bb2c bne 0x1ba08 | goto label_0;
| }
0x0001bb30 ldr r3, [fp, 0x3c] | r3 = *(arg_3ch);
0x0001bb34 str r4, [sp, 0x10] | var_10h = r4;
0x0001bb38 str r3, [sp, 0x18] | var_18h = r3;
0x0001bb3c ldr r3, [fp, 4] | r3 = *(arg_4h);
0x0001bb40 str r3, [sp, 0x14] | var_14h = r3;
0x0001bb44 ldr r3, [fp] | r3 = *(fp);
0x0001bb48 str r3, [sp, 0x1c] | var_1ch = r3;
0x0001bb4c mov r3, 1 | r3 = 1;
0x0001bb50 mov r4, r3 | r4 = r3;
| label_2:
0x0001bb54 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0001bb58 ldr r2, [sl, r4, lsl 2] | offset_0 = r4 << 2;
| r2 = *((sl + offset_0));
0x0001bb5c mov r1, 0x10 | r1 = 0x10;
0x0001bb60 mov r0, r6 | r0 = r6;
0x0001bb64 str r3, [fp, 0x3c] | *(arg_3ch) = r3;
0x0001bb68 str r3, [fp, 4] | *(arg_4h) = r3;
0x0001bb6c str r3, [fp] | *(fp) = r3;
0x0001bb70 bl 0x83e8 | fcn_000083e8 ();
0x0001bb74 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001bb78 mov r2, r6 | r2 = r6;
0x0001bb7c mov r1, r8 | r1 = r8;
0x0001bb80 subs ip, r0, 0 |
0x0001bb84 mov r0, r5 | r0 = r5;
| if (ip != var_20h) {
0x0001bb88 bne 0x1ba04 | goto label_1;
| }
0x0001bb8c str ip, [sp, 4] | var_4h = ip;
0x0001bb90 str ip, [sp] | *(sp) = ip;
0x0001bb94 bl 0x8c10 | fcn_00008c10 ();
0x0001bb98 subs ip, r0, 0 |
| if (ip != var_8ch) {
0x0001bb9c bne 0x1ba04 | goto label_1;
| }
0x0001bba0 ldr r3, [fp, 0x3c] | r3 = *(arg_3ch);
0x0001bba4 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0001bba8 cmp r3, r2 |
| if (r3 != r2) {
0x0001bbac bne 0x1bd28 | goto label_12;
| }
0x0001bbb0 ldr r3, [fp, 4] | r3 = *(arg_4h);
0x0001bbb4 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0001bbb8 cmp r3, r2 |
| if (r3 != r2) {
0x0001bbbc bne 0x1bd28 | goto label_12;
| }
0x0001bbc0 ldr r3, [fp] | r3 = *(fp);
0x0001bbc4 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0001bbc8 cmp r3, r2 |
| if (r3 != r2) {
0x0001bbcc bne 0x1bd28 | goto label_12;
| }
0x0001bbd0 add r4, r4, 1 | r4++;
0x0001bbd4 cmp r4, 6 |
| if (r4 != 6) {
0x0001bbd8 bne 0x1bb54 | goto label_2;
| }
0x0001bbdc cmp sb, 0 |
0x0001bbe0 mov r4, ip | r4 = ip;
| if (sb != 0) {
0x0001bbe4 bne 0x1bd38 | goto label_13;
| }
0x0001bbe8 ldr r2, [pc, 0x1fc] | r2 = *(0x1bde8);
0x0001bbec mov r1, 0x10 | r1 = 0x10;
0x0001bbf0 add r2, pc, r2 | r2 = pc + r2;
0x0001bbf4 mov r0, r6 | r0 = r6;
0x0001bbf8 str sb, [fp, 0x3c] | *(arg_3ch) = sb;
0x0001bbfc str sb, [fp, 4] | *(arg_4h) = sb;
0x0001bc00 str sb, [fp] | *(fp) = sb;
0x0001bc04 bl 0x83e8 | fcn_000083e8 ();
0x0001bc08 subs r4, r0, 0 | r4 -= var_20h;
| if (r4 != var_20h) {
0x0001bc0c bne 0x1b9d8 | goto label_3;
| }
0x0001bc10 str sb, [sp, 4] | var_4h = sb;
0x0001bc14 str sb, [sp] | *(sp) = sb;
0x0001bc18 mov r3, r7 | r3 = r7;
0x0001bc1c mov r2, r6 | r2 = r6;
0x0001bc20 mov r1, r8 | r1 = r8;
0x0001bc24 mov r0, r5 | r0 = r5;
0x0001bc28 bl 0x8c10 | fcn_00008c10 ();
0x0001bc2c subs r4, r0, 0 | r4 -= var_8ch;
| if (r4 != var_8ch) {
0x0001bc30 bne 0x1b9d8 | goto label_3;
| }
| label_7:
0x0001bc34 ldr fp, [pc, 0x1b4] | fp = *(0x1bdec);
0x0001bc38 mov r4, 1 | r4 = 1;
0x0001bc3c add fp, pc, fp |
0x0001bc40 ldr r3, [fp, 0x3c] | r3 = *(arg_3ch);
0x0001bc44 str r3, [sp, 0x10] | var_10h = r3;
0x0001bc48 ldr r3, [fp, 4] | r3 = *(arg_4h);
0x0001bc4c str r3, [sp, 0xc] | var_ch = r3;
0x0001bc50 ldr r3, [fp] | r3 = *(0x1bdec);
0x0001bc54 str r3, [sp, 0x14] | var_14h = r3;
| label_4:
0x0001bc58 mov r3, 0 | r3 = 0;
0x0001bc5c ldr r2, [sl, r4, lsl 2] | offset_1 = r4 << 2;
| r2 = *((sl + offset_1));
0x0001bc60 mov r1, 0x10 | r1 = 0x10;
0x0001bc64 mov r0, r6 | r0 = r6;
0x0001bc68 str r3, [fp, 0x3c] | *(arg_3ch) = r3;
0x0001bc6c str r3, [fp, 4] | *(arg_4h) = r3;
0x0001bc70 str r3, [fp] | *(fp) = r3;
0x0001bc74 bl 0x83e8 | fcn_000083e8 ();
0x0001bc78 mov r3, r7 | r3 = r7;
0x0001bc7c mov r2, r6 | r2 = r6;
0x0001bc80 mov r1, r8 | r1 = r8;
0x0001bc84 subs ip, r0, 0 |
0x0001bc88 mov r0, r5 | r0 = r5;
| if (ip != var_20h) {
0x0001bc8c bne 0x1ba04 | goto label_1;
| }
0x0001bc90 str ip, [sp, 4] | var_4h = ip;
0x0001bc94 str ip, [sp] | *(sp) = ip;
0x0001bc98 bl 0x8c10 | fcn_00008c10 ();
0x0001bc9c subs ip, r0, 0 |
| if (ip != var_8ch) {
0x0001bca0 bne 0x1ba04 | goto label_1;
| }
0x0001bca4 ldr r3, [fp, 0x3c] | r3 = *(arg_3ch);
0x0001bca8 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0001bcac cmp r3, r2 |
| if (r3 != r2) {
0x0001bcb0 bne 0x1bdb8 | goto label_14;
| }
0x0001bcb4 ldr r3, [fp, 4] | r3 = *(arg_4h);
0x0001bcb8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001bcbc cmp r3, r2 |
| if (r3 != r2) {
0x0001bcc0 bne 0x1bdb8 | goto label_14;
| }
0x0001bcc4 ldr r3, [fp] | r3 = *(fp);
0x0001bcc8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0001bccc cmp r3, r2 |
| if (r3 != r2) {
0x0001bcd0 bne 0x1bdb8 | goto label_14;
| }
0x0001bcd4 add r4, r4, 1 | r4++;
0x0001bcd8 cmp r4, 6 |
| if (r4 != 6) {
0x0001bcdc bne 0x1bc58 | goto label_4;
| }
0x0001bce0 cmp sb, 0 |
0x0001bce4 mov r4, ip | r4 = ip;
| if (sb == 0) {
0x0001bce8 beq 0x1b9d8 | goto label_3;
| }
0x0001bcec ldr r0, [pc, 0x100] | r0 = *(0x1bdf0);
0x0001bcf0 add r0, pc, r0 | r0 = pc + r0;
0x0001bcf4 bl 0x858c | puts (r0);
0x0001bcf8 b 0x1ba5c | goto label_5;
| label_10:
0x0001bcfc add r3, sp, 0xb4 | r3 += var_b4h;
0x0001bd00 str r4, [sp, 4] | var_4h = r4;
0x0001bd04 str r4, [sp] | *(sp) = r4;
0x0001bd08 mov r2, r6 | r2 = r6;
0x0001bd0c mov r1, r7 | r1 = r7;
0x0001bd10 mov r0, r5 | r0 = r5;
0x0001bd14 str r3, [sp, 0xc] | var_ch = r3;
0x0001bd18 bl 0x8c10 | fcn_00008c10 ();
0x0001bd1c subs r4, r0, 0 | r4 -= var_8ch;
| if (r4 != var_8ch) {
0x0001bd20 bne 0x1b9d8 | goto label_3;
| }
0x0001bd24 b 0x1bad8 | goto label_6;
| label_12:
0x0001bd28 cmp sb, 0 |
| if (sb != 0) {
0x0001bd2c bne 0x1bda0 | goto label_15;
| }
| label_8:
0x0001bd30 mov r4, 1 | r4 = 1;
0x0001bd34 b 0x1b9d8 | goto label_3;
| label_13:
0x0001bd38 ldr r0, [pc, 0xb8] | r0 = *(0x1bdf4);
0x0001bd3c add r0, pc, r0 | r0 = pc + r0;
0x0001bd40 bl 0x858c | puts (r0);
0x0001bd44 ldr r0, [pc, 0xb0] | r0 = *(0x1bdf8);
0x0001bd48 add r0, pc, r0 | r0 = pc + r0;
0x0001bd4c bl 0x8298 | printf (r0)
0x0001bd50 ldr r2, [pc, 0xa8] | r2 = *(0x1bdfc);
0x0001bd54 mov r1, 0x10 | r1 = 0x10;
0x0001bd58 add r2, pc, r2 | r2 = pc + r2;
0x0001bd5c mov r0, r6 | r0 = r6;
0x0001bd60 str r4, [fp, 0x3c] | *(arg_3ch) = r4;
0x0001bd64 str r4, [fp, 4] | *(arg_4h) = r4;
0x0001bd68 str r4, [fp] | *(fp) = r4;
0x0001bd6c bl 0x83e8 | fcn_000083e8 ();
0x0001bd70 subs r4, r0, 0 | r4 -= var_20h;
| if (r4 != var_20h) {
0x0001bd74 bne 0x1ba08 | goto label_0;
| }
0x0001bd78 str r4, [sp, 4] | var_4h = r4;
0x0001bd7c str r4, [sp] | *(sp) = r4;
0x0001bd80 mov r3, r7 | r3 = r7;
0x0001bd84 mov r2, r6 | r2 = r6;
0x0001bd88 mov r1, r8 | r1 = r8;
0x0001bd8c mov r0, r5 | r0 = r5;
0x0001bd90 bl 0x8c10 | fcn_00008c10 ();
0x0001bd94 subs r4, r0, 0 | r4 -= var_8ch;
| if (r4 != var_8ch) {
0x0001bd98 bne 0x1ba08 | goto label_0;
| }
0x0001bd9c b 0x1bc34 | goto label_7;
| label_15:
0x0001bda0 ldr r0, [pc, 0x5c] | r0 = *(0x1be00);
0x0001bda4 mov r1, r4 | r1 = r4;
0x0001bda8 add r0, pc, r0 | r0 = pc + r0;
0x0001bdac bl 0x8298 | printf (r0, r1)
0x0001bdb0 mov r4, 1 | r4 = 1;
0x0001bdb4 b 0x1ba5c | goto label_5;
| label_14:
0x0001bdb8 cmp sb, 0 |
| if (sb == 0) {
0x0001bdbc beq 0x1bd30 | goto label_8;
| }
0x0001bdc0 ldr r0, [pc, 0x40] | r0 = *(0x1be04);
0x0001bdc4 mov r1, r4 | r1 = r4;
0x0001bdc8 add r0, pc, r0 | r0 = pc + r0;
0x0001bdcc bl 0x8298 | printf (r0, r1)
0x0001bdd0 mov r4, 1 | r4 = 1;
0x0001bdd4 b 0x1ba5c | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x1e2e8 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_entropy_self_test () | void mbedtls_entropy_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_1h_2;
| void * s;
| int32_t var_1h;
| void * var_48h;
| int32_t var_1h_3;
| int32_t var_3fh;
| int32_t var_88h;
| int32_t var_2f8h;
| r0 = arg1;
0x0001e2e8 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001e2ec sub sp, sp, 0x2f8 |
0x0001e2f0 add r7, sp, 8 | r7 += s;
0x0001e2f4 mov r8, r0 | r8 = r0;
0x0001e2f8 mov r2, 0x40 | r2 = 0x40;
0x0001e2fc mov r1, 0 | r1 = 0;
0x0001e300 mov r0, r7 | r0 = r7;
0x0001e304 add r6, sp, 0x48 | r6 += var_48h;
0x0001e308 bl 0x8c28 | memset (r0, r1, r2);
0x0001e30c mov r0, r6 | r0 = r6;
0x0001e310 mov r2, 0x40 | r2 = 0x40;
0x0001e314 mov r1, 0 | r1 = 0;
0x0001e318 bl 0x8c28 | memset (r0, r1, r2);
0x0001e31c cmp r8, 0 |
| if (r8 != 0) {
0x0001e320 bne 0x1e390 | goto label_6;
| }
0x0001e324 add r5, sp, 0x88 | r5 += var_88h;
0x0001e328 mov r0, r5 | r0 = r5;
0x0001e32c bl 0x8a18 | fcn_00008a18 ();
0x0001e330 mov r0, r5 | r0 = r5;
0x0001e334 bl 0x8b74 | r0 = fcn_00008b74 ();
0x0001e338 cmp r0, 0 |
| if (r0 == 0) {
0x0001e33c beq 0x1e358 | goto label_0;
| }
0x0001e340 mov r0, r5 | r0 = r5;
0x0001e344 bl 0x89a0 | fcn_000089a0 ();
| do {
0x0001e348 mov sl, 1 | sl = 1;
| label_4:
0x0001e34c mov r0, sl | r0 = sl;
0x0001e350 add sp, sp, 0x2f8 |
0x0001e354 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_0:
0x0001e358 ldr r1, [pc, 0x124] | r1 = *(0x1e480);
0x0001e35c mov r2, 0 | r2 = 0;
0x0001e360 str r2, [sp] | *(sp) = r2;
0x0001e364 mov r3, 0x10 | r3 = 0x10;
0x0001e368 add r1, pc, r1 | r1 = pc + r1;
0x0001e36c mov r0, r5 | r0 = r5;
0x0001e370 bl 0x90fc | r0 = fcn_000090fc ();
0x0001e374 cmp r0, 0 |
| if (r0 == 0) {
0x0001e378 beq 0x1e3e4 | goto label_7;
| }
| label_1:
0x0001e37c mov r0, r5 | r0 = r5;
0x0001e380 bl 0x89a0 | fcn_000089a0 ();
0x0001e384 cmp r8, 0 |
0x0001e388 beq 0x1e348 |
| } while (r8 == 0);
0x0001e38c b 0x1e3c0 | goto label_8;
| label_6:
0x0001e390 ldr r0, [pc, 0xf0] | r0 = *(0x1e484);
0x0001e394 add r5, sp, 0x88 | r5 += var_88h;
0x0001e398 add r0, pc, r0 | r0 = pc + r0;
0x0001e39c bl 0x8298 | printf (r0, r1, r2, r3, r4, r5)
0x0001e3a0 mov r0, r5 | r0 = r5;
0x0001e3a4 bl 0x8a18 | fcn_00008a18 ();
0x0001e3a8 mov r0, r5 | r0 = r5;
0x0001e3ac bl 0x8b74 | r0 = fcn_00008b74 ();
0x0001e3b0 cmp r0, 0 |
| if (r0 == 0) {
0x0001e3b4 beq 0x1e358 | goto label_0;
| }
0x0001e3b8 mov r0, r5 | r0 = r5;
0x0001e3bc bl 0x89a0 | fcn_000089a0 ();
| label_8:
0x0001e3c0 ldr r0, [pc, 0xc4] | r0 = *(0x1e488);
0x0001e3c4 mov sl, 1 | sl = 1;
0x0001e3c8 add r0, pc, r0 | r0 = pc + r0;
0x0001e3cc bl 0x858c | puts (r0);
| label_5:
0x0001e3d0 mov r0, 0xa | r0 = 0xa;
0x0001e3d4 bl 0x81d8 | putchar (r0);
0x0001e3d8 mov r0, sl | r0 = sl;
0x0001e3dc add sp, sp, 0x2f8 |
0x0001e3e0 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_7:
0x0001e3e4 mov r2, 0x40 | r2 = 0x40;
0x0001e3e8 mov r1, r7 | r1 = r7;
0x0001e3ec mov r0, r5 | r0 = r5;
0x0001e3f0 bl 0x8d78 | r0 = fcn_00008d78 ();
0x0001e3f4 cmp r0, 0 |
| if (r0 != 0) {
0x0001e3f8 bne 0x1e37c | goto label_1;
| }
0x0001e3fc mov sb, 8 | sb = 8;
0x0001e400 add r4, r6, 0x3f | r4 += var_3fh;
| label_2:
0x0001e404 mov r2, 0x40 | r2 = 0x40;
0x0001e408 mov r1, r7 | r1 = r7;
0x0001e40c mov r0, r5 | r0 = r5;
0x0001e410 bl 0x90d8 | fcn_000090d8 ();
0x0001e414 subs sl, r0, 0 | sl -= var_88h;
| if (sl != var_88h) {
0x0001e418 bne 0x1e37c | goto label_1;
| }
0x0001e41c sub r3, r6, 1 | r3 -= var_1h;
0x0001e420 sub r1, r7, 1 | r1 -= var_1h_2;
0x0001e424 mov ip, r6 |
| do {
0x0001e428 ldrb r2, [r3, 1]! | r2 = var_48h;
0x0001e42c ldrb r0, [r1, 1]! | r0 = s;
0x0001e430 cmp r3, r4 |
0x0001e434 orr r2, r2, r0 | r2 |= r0;
0x0001e438 strb r2, [r3] | *(r3) = r2;
0x0001e43c bne 0x1e428 |
| } while (r3 != r4);
0x0001e440 subs sb, sb, 1 | sb--;
| if (sb != sb) {
0x0001e444 bne 0x1e404 | goto label_2;
| }
0x0001e448 add r6, r6, 0x40 | r6 += var_88h;
| label_3:
0x0001e44c ldrb r3, [ip], 1 | r3 = *(ip);
| ip++;
0x0001e450 cmp r3, 0 |
| if (r3 == 0) {
0x0001e454 beq 0x1e37c | goto label_1;
| }
0x0001e458 cmp r6, ip |
| if (r6 != ip) {
0x0001e45c bne 0x1e44c | goto label_3;
| }
0x0001e460 mov r0, r5 | r0 = r5;
0x0001e464 bl 0x89a0 | fcn_000089a0 ();
0x0001e468 cmp r8, 0 |
| if (r8 == 0) {
0x0001e46c moveq sl, r8 | sl = r8;
| goto label_9;
| }
| if (r8 == 0) {
| label_9:
0x0001e470 beq 0x1e34c | goto label_4;
| }
0x0001e474 ldr r0, [pc, 0x14] | r0 = mbedtls_ecp_curve_list;
0x0001e478 add r0, pc, r0 | r0 = pc + r0;
0x0001e47c bl 0x858c | puts (r0);
0x0001e480 b 0x1e3d0 | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x20d3c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_gcm_self_test () | void mbedtls_gcm_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_24h;
| int32_t var_28h;
| void * var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| void * var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| void * s2;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_5ch;
| void * var_60h;
| void * s1;
| int32_t var_90h;
| int32_t var_b0h;
| int32_t var_23ch;
| r0 = arg1;
0x00020d3c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00020d40 sub sp, sp, 0x23c |
0x00020d44 add fp, sp, 0xb0 |
0x00020d48 str r0, [sp, 0x28] | var_28h = r0;
0x00020d4c mov r0, fp | r0 = fp;
0x00020d50 bl 0x82a4 | fcn_000082a4 ();
0x00020d54 ldr r3, [pc, 0x63c] |
0x00020d58 ldr r2, [pc, 0x63c] | r2 = *(0x21398);
0x00020d5c add r3, pc, r3 | r3 = pc + r3;
0x00020d60 str r3, [sp, 0x54] | var_54h = r3;
0x00020d64 add r3, r3, 0xb70 | r3 = 0x21f04;
0x00020d68 add r3, r3, 8 | r3 += 8;
0x00020d6c str r3, [sp, 0x58] | var_58h = r3;
0x00020d70 add sl, sp, 0x60 | sl += var_60h;
0x00020d74 mov r3, 0x80 | r3 = 0x80;
0x00020d78 add r2, pc, r2 | r2 = pc + r2;
0x00020d7c str r3, [sp, 0x24] | var_24h = r3;
0x00020d80 mov sb, fp | sb = fp;
0x00020d84 mov r3, 0 | r3 = 0;
0x00020d88 add r8, sp, 0x70 | r8 += s1;
0x00020d8c mov fp, sl |
0x00020d90 str r2, [sp, 0x30] | var_30h = r2;
0x00020d94 str r3, [sp, 0x48] | var_48h = r3;
| label_8:
0x00020d98 mov r3, 0xc | r3 = 0xc;
0x00020d9c str r3, [sp, 0x34] | var_34h = r3;
0x00020da0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00020da4 mov r7, 0 | r7 = 0;
0x00020da8 add r2, r3, 0x5c0 | r2 = r3 + 0x5c0;
0x00020dac add r3, r3, 0x5e0 | r3 += 0x5e0;
0x00020db0 str r3, [sp, 0x5c] | var_5ch = r3;
0x00020db4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00020db8 mov sl, fp | sl = fp;
0x00020dbc cmp r3, 0 |
0x00020dc0 str r7, [sp, 0x38] | var_38h = r7;
0x00020dc4 mov r6, r7 | r6 = r7;
0x00020dc8 mov r4, r7 | r4 = r7;
0x00020dcc str r7, [sp, 0x2c] | var_2ch = r7;
0x00020dd0 str r2, [sp, 0x4c] | s2 = r2;
0x00020dd4 str r7, [sp, 0x3c] | var_3ch = r7;
0x00020dd8 mov fp, r7 |
| if (r3 != 0) {
0x00020ddc bne 0x2122c | goto label_10;
| }
| do {
| label_0:
0x00020de0 ldr r5, [sp, 0x30] | r5 = var_30h;
0x00020de4 mov r1, 2 | r1 = 2;
0x00020de8 add r3, r5, 0x80 | r3 = r5 + 0x80;
0x00020dec add r3, r3, r4, lsl 5 | r3 += (r4 << 5);
0x00020df0 mov r2, r3 | r2 = r3;
0x00020df4 str r3, [sp, 0x40] | var_40h = r3;
0x00020df8 mov r0, sb | r0 = sb;
0x00020dfc ldr r3, [sp, 0x24] | r3 = var_24h;
0x00020e00 bl 0x87b4 | fcn_000087b4 ();
0x00020e04 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00020e08 add r2, r5, 0x140 | r2 = r5 + 0x140;
0x00020e0c add r2, r2, r1, lsl 6 | r2 += (r1 << 6);
0x00020e10 ldr r1, [sp, 0x38] | r1 = var_38h;
0x00020e14 mov r3, r5 | r3 = r5;
0x00020e18 str r1, [sp, 8] | var_8h = r1;
0x00020e1c ldr r1, [sp, 0x34] | r1 = var_34h;
0x00020e20 str r3, [sp, 0x30] | var_30h = r3;
0x00020e24 add r5, r5, 0x2c0 | r5 += 0x2c0;
0x00020e28 add r3, r3, 0x440 | r3 += 0x440;
0x00020e2c add r5, r5, fp, lsl 6 | r5 += (fp << 6);
0x00020e30 add r4, r3, r7, lsl 6 | r4 = r3 + (r7 << 6);
0x00020e34 mov fp, 0x10 |
0x00020e38 str r2, [sp, 0x44] | var_44h = r2;
0x00020e3c str r1, [sp] | *(sp) = r1;
0x00020e40 mov r3, r2 | r3 = r2;
0x00020e44 str sl, [sp, 0x18] | var_18h = sl;
0x00020e48 str r8, [sp, 0x10] | var_10h = r8;
0x00020e4c str r5, [sp, 4] | var_4h = r5;
0x00020e50 str r4, [sp, 0xc] | var_ch = r4;
0x00020e54 str fp, [sp, 0x14] | var_14h = fp;
0x00020e58 mov r2, r6 | r2 = r6;
0x00020e5c mov r1, 1 | r1 = 1;
0x00020e60 mov r0, sb | r0 = sb;
0x00020e64 bl 0x8c7c | r0 = fcn_00008c7c ();
0x00020e68 cmp r0, 0 |
| if (r0 != 0) {
0x00020e6c bne 0x21268 | goto label_3;
| }
0x00020e70 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00020e74 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00020e78 mov r0, r8 | r0 = r8;
0x00020e7c add r3, r2, r1 | r3 = r2 + r1;
0x00020e80 ldr r1, [sp, 0x4c] | r1 = s2;
0x00020e84 lsl r2, r3, 6 | r2 = r3 << 6;
0x00020e88 add r7, r1, r2 | r7 = r1 + r2;
0x00020e8c str r2, [sp, 0x50] | var_50h = r2;
0x00020e90 mov r1, r7 | r1 = r7;
0x00020e94 mov r2, r6 | r2 = r6;
0x00020e98 str r3, [sp, 0x3c] | var_3ch = r3;
0x00020e9c bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00020ea0 cmp r0, 0 |
| if (r0 != 0) {
0x00020ea4 bne 0x21268 | goto label_3;
| }
0x00020ea8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00020eac mov r0, sl | r0 = sl;
0x00020eb0 add r2, r3, 0xa40 | r2 = r3 + 0xa40;
0x00020eb4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00020eb8 add r3, r2, r3, lsl 4 | r3 = r2 + (r3 << 4);
0x00020ebc mov r1, r3 | r1 = r3;
0x00020ec0 mov r2, fp | r2 = fp;
0x00020ec4 str r3, [sp, 0x3c] | var_3ch = r3;
0x00020ec8 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00020ecc cmp r0, 0 |
| if (r0 != 0) {
0x00020ed0 bne 0x21268 | goto label_3;
| }
0x00020ed4 mov r0, sb | r0 = sb;
0x00020ed8 bl 0x8f04 | fcn_00008f04 ();
0x00020edc ldr r3, [sp, 0x28] | r3 = var_28h;
0x00020ee0 cmp r3, 0 |
| if (r3 != 0) {
0x00020ee4 bne 0x212a0 | goto label_11;
| }
| label_4:
0x00020ee8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00020eec ldr r2, [sp, 0x40] | r2 = var_40h;
0x00020ef0 mov r1, 2 | r1 = 2;
0x00020ef4 mov r0, sb | r0 = sb;
0x00020ef8 bl 0x87b4 | fcn_000087b4 ();
0x00020efc ldr r3, [sp, 0x38] | r3 = var_38h;
0x00020f00 mov fp, 0x10 |
0x00020f04 str r3, [sp, 8] | var_8h = r3;
0x00020f08 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00020f0c str sl, [sp, 0x18] | var_18h = sl;
0x00020f10 str r3, [sp] | *(sp) = r3;
0x00020f14 str r8, [sp, 0x10] | var_10h = r8;
0x00020f18 str r7, [sp, 0xc] | var_ch = r7;
0x00020f1c str r5, [sp, 4] | var_4h = r5;
0x00020f20 str fp, [sp, 0x14] | var_14h = fp;
0x00020f24 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00020f28 mov r2, r6 | r2 = r6;
0x00020f2c mov r1, 0 | r1 = 0;
0x00020f30 mov r0, sb | r0 = sb;
0x00020f34 bl 0x8c7c | r0 = fcn_00008c7c ();
0x00020f38 cmp r0, 0 |
| if (r0 != 0) {
0x00020f3c bne 0x21268 | goto label_3;
| }
0x00020f40 mov r2, r6 | r2 = r6;
0x00020f44 mov r1, r4 | r1 = r4;
0x00020f48 mov r0, r8 | r0 = r8;
0x00020f4c bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00020f50 cmp r0, 0 |
| if (r0 != 0) {
0x00020f54 bne 0x21268 | goto label_3;
| }
0x00020f58 mov r2, fp | r2 = fp;
0x00020f5c ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00020f60 mov r0, sl | r0 = sl;
0x00020f64 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00020f68 cmp r0, 0 |
| if (r0 != 0) {
0x00020f6c bne 0x21268 | goto label_3;
| }
0x00020f70 mov r0, sb | r0 = sb;
0x00020f74 bl 0x8f04 | fcn_00008f04 ();
0x00020f78 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00020f7c cmp r3, 0 |
| if (r3 != 0) {
0x00020f80 bne 0x212cc | goto label_12;
| }
| label_5:
0x00020f84 ldr r2, [sp, 0x40] | r2 = var_40h;
0x00020f88 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00020f8c mov r1, 2 | r1 = 2;
0x00020f90 mov r0, sb | r0 = sb;
0x00020f94 bl 0x87b4 | fcn_000087b4 ();
0x00020f98 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00020f9c str r5, [sp] | *(sp) = r5;
0x00020fa0 str r3, [sp, 4] | var_4h = r3;
0x00020fa4 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00020fa8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00020fac mov r1, 1 | r1 = 1;
0x00020fb0 mov r0, sb | r0 = sb;
0x00020fb4 bl 0x8814 | r0 = fcn_00008814 ();
0x00020fb8 cmp r0, 0 |
| if (r0 != 0) {
0x00020fbc bne 0x21268 | goto label_3;
| }
0x00020fc0 cmp r6, 0x20 |
| if (r6 < 0x20) {
0x00020fc4 bls 0x2124c | goto label_13;
| }
0x00020fc8 mov r1, 0x20 | r1 = 0x20;
0x00020fcc mov r3, r8 | r3 = r8;
0x00020fd0 mov r2, r4 | r2 = r4;
0x00020fd4 mov r0, sb | r0 = sb;
0x00020fd8 bl 0x8ee0 | fcn_00008ee0 ();
0x00020fdc sub r1, r6, 0x20 | r1 = r6 - 0x20;
0x00020fe0 cmp r0, 0 |
| if (r0 != 0) {
0x00020fe4 bne 0x21268 | goto label_3;
| }
0x00020fe8 add r2, r4, 0x20 | r2 = r4 + 0x20;
0x00020fec add r3, sp, 0x90 | r3 += var_90h;
0x00020ff0 mov r0, sb | r0 = sb;
0x00020ff4 bl 0x8ee0 | r0 = fcn_00008ee0 ();
0x00020ff8 cmp r0, 0 |
| if (r0 != 0) {
0x00020ffc bne 0x21268 | goto label_3;
| }
| label_1:
0x00021000 mov r2, 0x10 | r2 = 0x10;
0x00021004 mov r1, sl | r1 = sl;
0x00021008 mov r0, sb | r0 = sb;
0x0002100c bl 0x8b14 | r0 = fcn_00008b14 ();
0x00021010 cmp r0, 0 |
| if (r0 != 0) {
0x00021014 bne 0x21268 | goto label_3;
| }
0x00021018 ldr r3, [pc, 0x380] |
0x0002101c ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x00021020 add r3, pc, r3 | r3 = pc + r3;
0x00021024 add r3, r3, 0xb60 | r3 = 0x21efc;
0x00021028 ldr r5, [r3, r4, lsl 2] | r5 = *(0x21efc);
0x0002102c mov r1, r7 | r1 = r7;
0x00021030 mov r0, r8 | r0 = r8;
0x00021034 mov r2, r5 | r2 = r5;
0x00021038 bl 0x8b08 | memcmp (r0, r1, r2);
0x0002103c lsl r4, r4, 2 | r4 <<= 2;
0x00021040 cmp r0, 0 |
| if (r0 != 0) {
0x00021044 bne 0x21268 | goto label_3;
| }
0x00021048 mov r2, 0x10 | r2 = 0x10;
0x0002104c ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00021050 mov r0, sl | r0 = sl;
0x00021054 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00021058 cmp r0, 0 |
| if (r0 != 0) {
0x0002105c bne 0x21268 | goto label_3;
| }
0x00021060 mov r0, sb | r0 = sb;
0x00021064 bl 0x8f04 | fcn_00008f04 ();
0x00021068 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002106c cmp r3, 0 |
| if (r3 != 0) {
0x00021070 bne 0x212f8 | goto label_14;
| }
| label_6:
0x00021074 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00021078 ldr r6, [sp, 0x54] | r6 = var_54h;
0x0002107c ldr r2, [r4, r3] | r2 = *((r4 + r3));
0x00021080 add r3, r6, 0x80 | r3 = r6 + 0x80;
0x00021084 add r2, r3, r2, lsl 5 | r2 = r3 + (r2 << 5);
0x00021088 mov r1, 2 | r1 = 2;
0x0002108c ldr r3, [sp, 0x24] | r3 = var_24h;
0x00021090 mov r0, sb | r0 = sb;
0x00021094 bl 0x87b4 | fcn_000087b4 ();
0x00021098 add r3, r6, 0xbd0 | r3 = r6 + 0xbd0;
0x0002109c add r3, r3, 8 | r3 += 8;
0x000210a0 add r1, r6, 0xba0 | r1 = r6 + 0xba0;
0x000210a4 ldr lr, [r4, r3] |
0x000210a8 add r1, r1, 8 | r1 += 8;
0x000210ac add r2, r6, 0xbc0 | r2 = r6 + 0xbc0;
0x000210b0 ldr r0, [r4, r2] | r0 = *((r4 + r2));
0x000210b4 ldr ip, [r4, r1] | ip = *((r4 + r1));
0x000210b8 add r1, r6, 0x2c0 | r1 = r6 + 0x2c0;
0x000210bc add r1, r1, lr, lsl 6 | r1 += (lr << 6);
0x000210c0 add r3, r6, 0xb90 | r3 = r6 + 0xb90;
0x000210c4 add r2, r6, 0x140 | r2 = r6 + 0x140;
0x000210c8 str r1, [sp] | *(sp) = r1;
0x000210cc str r0, [sp, 4] | var_4h = r0;
0x000210d0 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000210d4 add r2, r2, ip, lsl 6 | r2 += (ip << 6);
0x000210d8 mov r1, 0 | r1 = 0;
0x000210dc mov r0, sb | r0 = sb;
0x000210e0 bl 0x8814 | r0 = fcn_00008814 ();
0x000210e4 cmp r0, 0 |
| if (r0 != 0) {
0x000210e8 bne 0x21268 | goto label_3;
| }
0x000210ec cmp r5, 0x20 |
0x000210f0 mov r2, r7 | r2 = r7;
| if (r5 < 0x20) {
0x000210f4 bls 0x21284 | goto label_15;
| }
0x000210f8 mov r1, 0x20 | r1 = 0x20;
0x000210fc mov r3, r8 | r3 = r8;
0x00021100 mov r0, sb | r0 = sb;
0x00021104 bl 0x8ee0 | fcn_00008ee0 ();
0x00021108 sub r1, r5, 0x20 | r1 = r5 - 0x20;
0x0002110c cmp r0, 0 |
| if (r0 != 0) {
0x00021110 bne 0x21268 | goto label_3;
| }
0x00021114 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00021118 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0002111c mov r0, sb | r0 = sb;
0x00021120 add r2, r3, r2 | r2 = r3 + r2;
0x00021124 add r3, sp, 0x90 | r3 += var_90h;
0x00021128 bl 0x8ee0 | r0 = fcn_00008ee0 ();
0x0002112c cmp r0, 0 |
| if (r0 != 0) {
0x00021130 bne 0x21268 | goto label_3;
| }
| label_2:
0x00021134 mov r2, 0x10 | r2 = 0x10;
0x00021138 mov r1, sl | r1 = sl;
0x0002113c mov r0, sb | r0 = sb;
0x00021140 bl 0x8b14 | r0 = fcn_00008b14 ();
0x00021144 cmp r0, 0 |
| if (r0 != 0) {
0x00021148 bne 0x21268 | goto label_3;
| }
0x0002114c ldr r2, [pc, 0x250] | r2 = *(0x213a0);
0x00021150 ldr r3, [pc, 0x250] |
0x00021154 add r2, pc, r2 | r2 = pc + r2;
0x00021158 ldr r1, [r4, r2] | r1 = *((r4 + r2));
0x0002115c add r3, pc, r3 | r3 = pc + r3;
0x00021160 add r2, r3, 0x440 | r2 = r3 + 0x440;
0x00021164 add r3, r3, 0xb60 | r3 = 0x21f04;
0x00021168 add r1, r2, r1, lsl 6 | r1 = r2 + (r1 << 6);
0x0002116c mov r0, r8 | r0 = r8;
0x00021170 ldr r2, [r3, r4] | r2 = *(0x21f04);
0x00021174 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x00021178 cmp r0, 0 |
| if (r0 != 0) {
0x0002117c bne 0x21268 | goto label_3;
| }
0x00021180 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00021184 mov r2, 0x10 | r2 = 0x10;
0x00021188 mov r0, sl | r0 = sl;
0x0002118c bl 0x8b08 | memcmp (r0, r1, r2);
0x00021190 subs r5, r0, 0 | r5 -= var_60h;
| if (r5 != var_60h) {
0x00021194 bne 0x21268 | goto label_3;
| }
0x00021198 mov r0, sb | r0 = sb;
0x0002119c bl 0x8f04 | fcn_00008f04 ();
0x000211a0 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000211a4 cmp r3, 0 |
| if (r3 != 0) {
0x000211a8 bne 0x21324 | goto label_16;
| }
| label_7:
0x000211ac ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000211b0 add r3, r3, 1 | r3++;
0x000211b4 cmp r3, 6 |
0x000211b8 str r3, [sp, 0x2c] | var_2ch = r3;
| if (r3 == 6) {
0x000211bc beq 0x21334 | goto label_17;
| }
0x000211c0 ldr r3, [pc, 0x1e4] |
0x000211c4 add r2, r4, 4 | r2 = r4 + 4;
0x000211c8 add r3, pc, r3 | r3 = pc + r3;
0x000211cc add r6, r3, 0xb70 | r6 = r3 + 0xb70;
0x000211d0 add r5, r3, 0xba0 | r5 = r3 + 0xba0;
0x000211d4 add r0, r3, 0xbd0 | r0 = r3 + 0xbd0;
0x000211d8 add lr, r3, 0xb60 | lr = r3 + 0xb60;
0x000211dc add ip, r3, 0xb90 |
0x000211e0 add r3, r3, 0xbc0 | r3 = 0x21f68;
0x000211e4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000211e8 add r0, r0, 8 | r0 += 8;
0x000211ec ldr r1, [pc, 0x1bc] | r1 = *(0x213ac);
0x000211f0 add r5, r5, 8 | r5 += 8;
0x000211f4 str r3, [sp, 0x38] | var_38h = r3;
0x000211f8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000211fc ldr r5, [r2, r5] | r5 = *((r2 + r5));
0x00021200 ldr fp, [r2, r0] | fp = *((r2 + r0));
0x00021204 ldr r0, [r2, ip] | r0 = *((r2 + ip));
0x00021208 add r6, r6, 8 | r6 += 8;
0x0002120c add r1, pc, r1 | r1 = pc + r1;
0x00021210 cmp r3, 0 |
0x00021214 ldr r4, [r2, r6] | r4 = *((r2 + r6));
0x00021218 str r5, [sp, 0x3c] | var_3ch = r5;
0x0002121c ldr r6, [r2, lr] | r6 = *((r2 + lr));
0x00021220 str r0, [sp, 0x34] | var_34h = r0;
0x00021224 ldr r7, [r2, r1] | r7 = *((r2 + r1));
0x00021228 beq 0x20de0 |
| } while (r3 == 0);
| label_10:
0x0002122c ldr r3, [pc, 0x180] | r3 = *(0x213b0);
0x00021230 ldr r0, [pc, 0x180] | r0 = *(0x213b4);
0x00021234 add r3, pc, r3 | r3 = pc + r3;
0x00021238 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0002123c ldr r1, [sp, 0x24] | r1 = var_24h;
0x00021240 add r0, pc, r0 | r0 = pc + r0;
0x00021244 bl 0x8298 | printf (r0, r1, r2, r3)
0x00021248 b 0x20de0 | goto label_0;
| label_13:
0x0002124c mov r2, r4 | r2 = r4;
0x00021250 mov r1, r6 | r1 = r6;
0x00021254 mov r3, r8 | r3 = r8;
0x00021258 mov r0, sb | r0 = sb;
0x0002125c bl 0x8ee0 | r0 = fcn_00008ee0 ();
0x00021260 cmp r0, 0 |
| if (r0 == 0) {
0x00021264 beq 0x21000 | goto label_1;
| }
| label_3:
0x00021268 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002126c cmp r3, 0 |
| if (r3 != 0) {
0x00021270 moveq r5, 1 | r5 = 1;
| }
| if (r3 != 0) {
0x00021274 bne 0x2137c | goto label_18;
| }
| label_9:
0x00021278 mov r0, r5 | r0 = r5;
0x0002127c add sp, sp, 0x23c |
0x00021280 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x00021284 mov r1, r5 | r1 = r5;
0x00021288 mov r3, r8 | r3 = r8;
0x0002128c mov r0, sb | r0 = sb;
0x00021290 bl 0x8ee0 | r0 = fcn_00008ee0 ();
0x00021294 cmp r0, 0 |
| if (r0 == 0) {
0x00021298 beq 0x21134 | goto label_2;
| }
0x0002129c b 0x21268 | goto label_3;
| label_11:
0x000212a0 ldr r0, [pc, 0x114] | r0 = *(0x213b8);
0x000212a4 add r0, pc, r0 | r0 = pc + r0;
0x000212a8 bl 0x858c | puts (r0);
0x000212ac ldr r3, [pc, 0x10c] | r3 = *(0x213bc);
0x000212b0 ldr r0, [pc, 0x10c] | r0 = *(0x213c0);
0x000212b4 add r3, pc, r3 | r3 = pc + r3;
0x000212b8 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000212bc ldr r1, [sp, 0x24] | r1 = var_24h;
0x000212c0 add r0, pc, r0 | r0 = pc + r0;
0x000212c4 bl 0x8298 | printf (r0, r1, r2, r3)
0x000212c8 b 0x20ee8 | goto label_4;
| label_12:
0x000212cc ldr r0, [pc, 0xf4] | r0 = ecp_modp;
0x000212d0 add r0, pc, r0 | r0 = pc + r0;
0x000212d4 bl 0x858c | puts (r0);
0x000212d8 ldr r3, [pc, 0xec] | r3 = *(0x213c8);
0x000212dc ldr r0, [pc, 0xec] | r0 = *(0x213cc);
0x000212e0 add r3, pc, r3 | r3 = pc + r3;
0x000212e4 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000212e8 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000212ec add r0, pc, r0 | r0 = pc + r0;
0x000212f0 bl 0x8298 | printf (r0, r1, r2, r3)
0x000212f4 b 0x20f84 | goto label_5;
| label_14:
0x000212f8 ldr r0, [pc, 0xd4] | r0 = *(0x213d0);
0x000212fc add r0, pc, r0 | r0 = pc + r0;
0x00021300 bl 0x858c | puts (r0);
0x00021304 ldr r3, [pc, 0xcc] | r3 = *(0x213d4);
0x00021308 ldr r0, [pc, 0xcc] | r0 = *(0x213d8);
0x0002130c add r3, pc, r3 | r3 = pc + r3;
0x00021310 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00021314 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00021318 add r0, pc, r0 | r0 = pc + r0;
0x0002131c bl 0x8298 | printf (r0, r1, r2, r3)
0x00021320 b 0x21074 | goto label_6;
| label_16:
0x00021324 ldr r0, [pc, 0xb4] | r0 = *(0x213dc);
0x00021328 add r0, pc, r0 | r0 = pc + r0;
0x0002132c bl 0x858c | puts (r0);
0x00021330 b 0x211ac | goto label_7;
| label_17:
0x00021334 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00021338 mov fp, sl |
0x0002133c add r3, r3, 0x40 | r3 += 0x40;
0x00021340 str r3, [sp, 0x24] | var_24h = r3;
0x00021344 cmp r3, 0x140 |
0x00021348 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0002134c add r3, r3, 6 | r3 += 6;
0x00021350 str r3, [sp, 0x48] | var_48h = r3;
| if (r3 != 0x140) {
0x00021354 bne 0x20d98 | goto label_8;
| }
0x00021358 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002135c cmp r3, 0 |
| if (r3 == 0) {
0x00021360 ldreq r5, [sp, 0x28] | r5 = var_28h;
| goto label_19;
| }
| if (r3 == 0) {
| label_19:
0x00021364 beq 0x21278 | goto label_9;
| }
0x00021368 mov r0, 0xa | r0 = 0xa;
0x0002136c bl 0x81d8 | putchar (r0);
0x00021370 mov r0, r5 | r0 = r5;
0x00021374 add sp, sp, 0x23c |
0x00021378 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x0002137c ldr r0, [pc, 0x60] | r0 = *(0x213e0);
0x00021380 mov r5, 1 | r5 = 1;
0x00021384 add r0, pc, r0 | r0 = pc + r0;
0x00021388 bl 0x858c | puts (r0);
0x0002138c mov r0, r5 | r0 = r5;
0x00021390 add sp, sp, 0x23c |
0x00021394 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x219cc */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_hmac_drbg_self_test () | void mbedtls_hmac_drbg_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| void * s1;
| int32_t var_5ch;
| int32_t var_c4h;
| r0 = arg1;
0x000219cc push {r4, r5, r6, r7, r8, sb, lr} |
0x000219d0 mov r4, r0 | r4 = r0;
0x000219d4 sub sp, sp, 0xc4 |
0x000219d8 mov r0, 4 | r0 = 4;
0x000219dc bl 0x90e4 | fcn_000090e4 ();
0x000219e0 add r5, sp, 0x5c | r5 += var_5ch;
0x000219e4 mov r6, r0 | r6 = r0;
0x000219e8 mov r0, r5 | r0 = r5;
0x000219ec bl 0x900c | fcn_0000900c ();
0x000219f0 cmp r4, 0 |
| if (r4 != 0) {
0x000219f4 bne 0x21aac | goto label_6;
| }
0x000219f8 ldr ip, [pc, 0x2c4] | ip = *(0x21cc0);
0x000219fc ldr r3, [pc, 0x2c4] | r3 = *(0x21cc4);
0x00021a00 ldr r2, [pc, 0x2c4] | r2 = *(0x21cc8);
0x00021a04 add ip, pc, ip |
0x00021a08 str r4, [sp, 4] | var_4h = r4;
0x00021a0c str r4, [sp] | *(sp) = r4;
0x00021a10 add r3, pc, r3 | r3 = pc + r3;
0x00021a14 add r2, pc, r2 | r2 = pc + r2;
0x00021a18 mov r1, r6 | r1 = r6;
0x00021a1c mov r0, r5 | r0 = r5;
0x00021a20 str r4, [ip] | *(ip) = r4;
0x00021a24 bl 0x8dd8 | r0 = fcn_00008dd8 ();
0x00021a28 cmp r0, 0 |
0x00021a2c beq 0x21a40 |
| while (r0 != 0) {
| label_0:
0x00021a30 mov r6, 1 | r6 = 1;
| label_4:
0x00021a34 mov r0, r6 | r0 = r6;
0x00021a38 add sp, sp, 0xc4 |
0x00021a3c pop {r4, r5, r6, r7, r8, sb, pc} |
0x00021a40 mov r1, 1 | r1 = 1;
0x00021a44 mov r0, r5 | r0 = r5;
0x00021a48 add r7, sp, 0xc | r7 += s1;
0x00021a4c bl 0x8778 | fcn_00008778 ();
0x00021a50 mov r1, r7 | r1 = r7;
0x00021a54 mov r2, 0x50 | r2 = 0x50;
0x00021a58 mov r0, r5 | r0 = r5;
0x00021a5c bl 0x8fd0 | r0 = fcn_00008fd0 ();
0x00021a60 cmp r0, 0 |
0x00021a64 bne 0x21a30 |
| }
0x00021a68 mov r2, 0x50 | r2 = 0x50;
0x00021a6c mov r1, r7 | r1 = r7;
0x00021a70 mov r0, r5 | r0 = r5;
0x00021a74 bl 0x8fd0 | r0 = fcn_00008fd0 ();
0x00021a78 cmp r0, 0 |
| if (r0 != 0) {
0x00021a7c bne 0x21a30 | goto label_0;
| }
| label_2:
0x00021a80 ldr r8, [pc, 0x248] | r8 = *(0x21ccc);
0x00021a84 mov r2, 0x50 | r2 = 0x50;
0x00021a88 add r8, pc, r8 | r8 = pc + r8;
0x00021a8c add r1, r8, 0x38 | r1 = r8 + 0x38;
0x00021a90 mov r0, r7 | r0 = r7;
0x00021a94 bl 0x8b08 | memcmp (r0, r1, r2);
0x00021a98 subs sb, r0, 0 | sb -= s1;
| if (sb == s1) {
0x00021a9c beq 0x21b54 | goto label_7;
| }
| label_3:
0x00021aa0 cmp r4, 0 |
| if (r4 != 0) {
0x00021aa4 bne 0x21af4 | goto label_1;
| }
0x00021aa8 b 0x21a30 | goto label_0;
| label_6:
0x00021aac ldr r0, [pc, 0x220] | r0 = *(0x21cd0);
0x00021ab0 add r0, pc, r0 | r0 = pc + r0;
0x00021ab4 bl 0x8298 | printf (r0)
0x00021ab8 ldr r0, [pc, 0x218] | r0 = *(0x21cd4);
0x00021abc ldr r3, [pc, 0x218] | r3 = *(0x21cd8);
0x00021ac0 ldr r2, [pc, 0x218] | r2 = *(0x21cdc);
0x00021ac4 mov ip, 0 |
0x00021ac8 add r0, pc, r0 | r0 = pc + r0;
0x00021acc str ip, [sp, 4] | var_4h = ip;
0x00021ad0 str ip, [sp] | *(sp) = ip;
0x00021ad4 add r3, pc, r3 | r3 = pc + r3;
0x00021ad8 str ip, [r0] | *(r0) = ip;
0x00021adc add r2, pc, r2 | r2 = pc + r2;
0x00021ae0 mov r1, r6 | r1 = r6;
0x00021ae4 mov r0, r5 | r0 = r5;
0x00021ae8 bl 0x8dd8 | r0 = fcn_00008dd8 ();
0x00021aec cmp r0, 0 |
0x00021af0 beq 0x21b10 |
| while (r0 != 0) {
| label_1:
0x00021af4 ldr r0, [pc, 0x1e8] | r0 = *(0x21ce0);
0x00021af8 mov r6, 1 | r6 = 1;
0x00021afc add r0, pc, r0 | r0 = pc + r0;
0x00021b00 bl 0x858c | puts (r0);
0x00021b04 mov r0, r6 | r0 = r6;
0x00021b08 add sp, sp, 0xc4 |
0x00021b0c pop {r4, r5, r6, r7, r8, sb, pc} |
0x00021b10 mov r1, 1 | r1 = 1;
0x00021b14 mov r0, r5 | r0 = r5;
0x00021b18 add r7, sp, 0xc | r7 += s1;
0x00021b1c bl 0x8778 | fcn_00008778 ();
0x00021b20 mov r1, r7 | r1 = r7;
0x00021b24 mov r2, 0x50 | r2 = 0x50;
0x00021b28 mov r0, r5 | r0 = r5;
0x00021b2c bl 0x8fd0 | r0 = fcn_00008fd0 ();
0x00021b30 cmp r0, 0 |
0x00021b34 bne 0x21af4 |
| }
0x00021b38 mov r2, 0x50 | r2 = 0x50;
0x00021b3c mov r1, r7 | r1 = r7;
0x00021b40 mov r0, r5 | r0 = r5;
0x00021b44 bl 0x8fd0 | r0 = fcn_00008fd0 ();
0x00021b48 cmp r0, 0 |
| if (r0 != 0) {
0x00021b4c bne 0x21af4 | goto label_1;
| }
0x00021b50 b 0x21a80 | goto label_2;
| label_7:
0x00021b54 mov r0, r5 | r0 = r5;
0x00021b58 bl 0x8bc8 | fcn_00008bc8 ();
0x00021b5c mov r0, r5 | r0 = r5;
0x00021b60 bl 0x8bc8 | fcn_00008bc8 ();
0x00021b64 cmp r4, 0 |
| if (r4 != 0) {
0x00021b68 bne 0x21c40 | goto label_8;
| }
0x00021b6c mov r0, r5 | r0 = r5;
0x00021b70 bl 0x900c | fcn_0000900c ();
0x00021b74 ldr ip, [pc, 0x16c] | ip = *(0x21ce4);
0x00021b78 ldr r2, [pc, 0x16c] | r2 = *(0x21ce8);
0x00021b7c add ip, pc, ip |
0x00021b80 str r4, [sp, 4] | var_4h = r4;
0x00021b84 str r4, [sp] | *(sp) = r4;
0x00021b88 add r3, r8, 0x88 | r3 = r8 + 0x88;
0x00021b8c mov r1, r6 | r1 = r6;
0x00021b90 add r2, pc, r2 | r2 = pc + r2;
0x00021b94 mov r0, r5 | r0 = r5;
0x00021b98 str r4, [ip] | *(ip) = r4;
0x00021b9c bl 0x8dd8 | r0 = fcn_00008dd8 ();
0x00021ba0 cmp r0, 0 |
| if (r0 != 0) {
0x00021ba4 bne 0x21a30 | goto label_0;
| }
0x00021ba8 mov r2, r4 | r2 = r4;
0x00021bac mov r1, r4 | r1 = r4;
0x00021bb0 mov r0, r5 | r0 = r5;
0x00021bb4 bl 0x8724 | r0 = fcn_00008724 ();
0x00021bb8 cmp r0, 0 |
| if (r0 != 0) {
0x00021bbc bne 0x21a30 | goto label_0;
| }
0x00021bc0 mov r2, 0x50 | r2 = 0x50;
0x00021bc4 mov r1, r7 | r1 = r7;
0x00021bc8 mov r0, r5 | r0 = r5;
0x00021bcc bl 0x8fd0 | r0 = fcn_00008fd0 ();
0x00021bd0 cmp r0, 0 |
| if (r0 != 0) {
0x00021bd4 bne 0x21a30 | goto label_0;
| }
| label_5:
0x00021bd8 mov r2, 0x50 | r2 = 0x50;
0x00021bdc mov r1, r7 | r1 = r7;
0x00021be0 mov r0, r5 | r0 = r5;
0x00021be4 bl 0x8fd0 | r0 = fcn_00008fd0 ();
0x00021be8 cmp r0, 0 |
| if (r0 != 0) {
0x00021bec bne 0x21aa0 | goto label_3;
| }
0x00021bf0 ldr r1, [pc, 0xf8] |
0x00021bf4 mov r0, r7 | r0 = r7;
0x00021bf8 add r1, pc, r1 | r1 = pc + r1;
0x00021bfc add r1, r1, 0xb0 | r1 = 0x21d9c;
0x00021c00 mov r2, 0x50 | r2 = 0x50;
0x00021c04 bl 0x8b08 | memcmp (r0, r1, r2);
0x00021c08 subs r6, r0, 0 | r6 -= s1;
| if (r6 != s1) {
0x00021c0c bne 0x21aa0 | goto label_3;
| }
0x00021c10 mov r0, r5 | r0 = r5;
0x00021c14 bl 0x8bc8 | fcn_00008bc8 ();
0x00021c18 mov r0, r5 | r0 = r5;
0x00021c1c bl 0x8bc8 | fcn_00008bc8 ();
0x00021c20 cmp r4, 0 |
| if (r4 == 0) {
0x00021c24 beq 0x21a34 | goto label_4;
| }
0x00021c28 ldr r0, [pc, 0xc4] | r0 = *(0x21cf0);
0x00021c2c add r0, pc, r0 | r0 = pc + r0;
0x00021c30 bl 0x858c | puts (r0);
0x00021c34 mov r0, 0xa | r0 = 0xa;
0x00021c38 bl 0x81d8 | putchar (r0);
0x00021c3c b 0x21a34 | goto label_4;
| label_8:
0x00021c40 ldr r0, [pc, 0xb0] | r0 = *(0x21cf4);
0x00021c44 add r0, pc, r0 | r0 = pc + r0;
0x00021c48 bl 0x858c | puts (r0);
0x00021c4c ldr r0, [pc, 0xa8] | r0 = *(0x21cf8);
0x00021c50 add r0, pc, r0 | r0 = pc + r0;
0x00021c54 bl 0x8298 | printf (r0)
0x00021c58 mov r0, r5 | r0 = r5;
0x00021c5c bl 0x900c | fcn_0000900c ();
0x00021c60 ldr r0, [pc, 0x98] | r0 = *(0x21cfc);
0x00021c64 ldr r2, [pc, 0x98] | r2 = *(0x21d00);
0x00021c68 add r0, pc, r0 | r0 = pc + r0;
0x00021c6c str sb, [sp, 4] | var_4h = sb;
0x00021c70 str sb, [sp] | *(sp) = sb;
0x00021c74 add r2, pc, r2 | r2 = pc + r2;
0x00021c78 str sb, [r0] | *(r0) = sb;
0x00021c7c add r3, r8, 0x88 | r3 = r8 + 0x88;
0x00021c80 mov r1, r6 | r1 = r6;
0x00021c84 mov r0, r5 | r0 = r5;
0x00021c88 bl 0x8dd8 | fcn_00008dd8 ();
0x00021c8c subs r2, r0, 0 | r2 -= var_5ch;
| if (r2 != var_5ch) {
0x00021c90 bne 0x21af4 | goto label_1;
| }
0x00021c94 mov r1, r2 | r1 = r2;
0x00021c98 mov r0, r5 | r0 = r5;
0x00021c9c bl 0x8724 | r0 = fcn_00008724 ();
0x00021ca0 cmp r0, 0 |
| if (r0 != 0) {
0x00021ca4 bne 0x21af4 | goto label_1;
| }
0x00021ca8 mov r2, 0x50 | r2 = 0x50;
0x00021cac mov r1, r7 | r1 = r7;
0x00021cb0 mov r0, r5 | r0 = r5;
0x00021cb4 bl 0x8fd0 | r0 = fcn_00008fd0 ();
0x00021cb8 cmp r0, 0 |
| if (r0 != 0) {
0x00021cbc bne 0x21af4 | goto label_1;
| }
0x00021cc0 b 0x21bd8 | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x23600 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_md5_self_test () | void mbedtls_md5_self_test (int32_t arg1) {
| void * s1;
| int32_t var_10h;
| r0 = arg1;
0x00023600 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00023604 ldr r7, [pc, 0xf8] |
0x00023608 ldr sl, [pc, 0xf8] |
0x0002360c mov r6, r0 | r6 = r0;
0x00023610 add r7, pc, r7 | r7 = pc + r7;
0x00023614 sub sp, sp, 0x10 |
0x00023618 add sl, pc, sl | sl = pc + sl;
0x0002361c mov sb, 0 | sb = 0;
0x00023620 cmp r6, 0 |
0x00023624 add r5, r7, 0x40 | r5 = r7 + 0x40;
0x00023628 add sl, sl, 0x2e8 | sl = 0x239ec;
0x0002362c add r7, r7, 0x278 | r7 = 0x23978;
0x00023630 mov r4, sb | r4 = sb;
0x00023634 mov r8, sp | r8 = sp;
| if (r6 != 0) {
0x00023638 bne 0x23688 | goto label_2;
| }
| do {
| label_0:
0x0002363c mov r1, sb | r1 = sb;
0x00023640 mov r0, r5 | r0 = r5;
0x00023644 mov r2, r8 | r2 = r8;
0x00023648 bl 0x918c | fcn_0000918c ();
0x0002364c add r1, r7, r4, lsl 4 | r1 = r7 + (r4 << 4);
0x00023650 mov r2, 0x10 | r2 = 0x10;
0x00023654 mov r0, r8 | r0 = r8;
0x00023658 bl 0x8b08 | memcmp (r0, r1, r2);
0x0002365c add r4, r4, 1 | r4++;
0x00023660 add r5, r5, 0x51 | r5 += 0x51;
0x00023664 subs sb, r0, 0 | sb -= s1;
| if (sb != s1) {
0x00023668 bne 0x236dc | goto label_3;
| }
0x0002366c cmp r6, 0 |
| if (r6 != 0) {
0x00023670 bne 0x2369c | goto label_4;
| }
0x00023674 cmp r4, 7 |
| if (r4 == 7) {
0x00023678 beq 0x236b0 | goto label_5;
| }
| label_1:
0x0002367c cmp r6, 0 |
0x00023680 ldr sb, [sl, r4, lsl 2] | offset_0 = r4 << 2;
| sb = *((sl + offset_0));
0x00023684 beq 0x2363c |
| } while (r6 == 0);
| label_2:
0x00023688 ldr r0, [pc, 0x7c] | r0 = *(0x23708);
0x0002368c add r1, r4, 1 | r1 = r4 + 1;
0x00023690 add r0, pc, r0 | r0 = pc + r0;
0x00023694 bl 0x8298 | printf (r0, r1)
0x00023698 b 0x2363c | goto label_0;
| label_4:
0x0002369c ldr r0, [pc, 0x6c] | r0 = *(0x2370c);
0x000236a0 add r0, pc, r0 | r0 = pc + r0;
0x000236a4 bl 0x858c | puts (r0);
0x000236a8 cmp r4, 7 |
| if (r4 != 7) {
0x000236ac bne 0x2367c | goto label_1;
| }
| label_5:
0x000236b0 cmp r6, 0 |
| if (r6 != 0) {
0x000236b4 moveq sb, r6 | sb = r6;
| }
0x000236b8 bne 0x236c8 |
| while (r6 == 0) {
0x000236bc mov r0, sb | r0 = sb;
0x000236c0 add sp, sp, 0x10 |
0x000236c4 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
0x000236c8 mov r0, 0xa | r0 = 0xa;
0x000236cc bl 0x81d8 | putchar (r0);
0x000236d0 mov r0, sb | r0 = sb;
0x000236d4 add sp, sp, 0x10 |
0x000236d8 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x000236dc cmp r6, 0 |
| if (r6 != 0) {
0x000236e0 moveq sb, 1 | sb = 1;
| }
0x000236e4 beq 0x236bc |
| }
0x000236e8 ldr r0, [pc, 0x24] | r0 = *(0x23710);
0x000236ec mov sb, 1 | sb = 1;
0x000236f0 add r0, pc, r0 | r0 = pc + r0;
0x000236f4 bl 0x858c | puts (r0);
0x000236f8 mov r0, sb | r0 = sb;
0x000236fc add sp, sp, 0x10 |
0x00023700 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x105dc */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_mpi_self_test () | void mbedtls_mpi_self_test (int32_t arg_2a0h, int32_t arg1) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| char * s;
| int32_t var_1ch;
| int32_t var_28h;
| int32_t var_34h;
| int32_t var_40h;
| int32_t var_4ch;
| int32_t var_58h;
| int32_t var_64h;
| int32_t var_74h;
| r0 = arg1;
0x000105dc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000105e0 sub sp, sp, 0x74 |
0x000105e4 add r4, sp, 0x1c | r4 += var_1ch;
0x000105e8 str r0, [sp, 0xc] | var_ch = r0;
0x000105ec add r5, sp, 0x28 | r5 += var_28h;
0x000105f0 mov r0, r4 | r0 = r4;
0x000105f4 bl 0x86c4 | fcn_000086c4 ();
0x000105f8 add r6, sp, 0x34 | r6 += var_34h;
0x000105fc mov r0, r5 | r0 = r5;
0x00010600 bl 0x86c4 | fcn_000086c4 ();
0x00010604 add r7, sp, 0x40 | r7 += var_40h;
0x00010608 mov r0, r6 | r0 = r6;
0x0001060c bl 0x86c4 | fcn_000086c4 ();
0x00010610 add sb, sp, 0x4c | sb += var_4ch;
0x00010614 mov r0, r7 | r0 = r7;
0x00010618 bl 0x86c4 | fcn_000086c4 ();
0x0001061c add r8, sp, 0x58 | r8 += var_58h;
0x00010620 mov r0, sb | r0 = sb;
0x00010624 bl 0x86c4 | fcn_000086c4 ();
0x00010628 add sl, sp, 0x64 | sl += var_64h;
0x0001062c mov r0, r8 | r0 = r8;
0x00010630 bl 0x86c4 | fcn_000086c4 ();
0x00010634 mov r0, sl | r0 = sl;
0x00010638 bl 0x86c4 | fcn_000086c4 ();
0x0001063c ldr r2, [pc, 0x514] | r2 = *(0x10b54);
0x00010640 mov r0, r4 | r0 = r4;
0x00010644 add r2, pc, r2 | r2 = pc + r2;
0x00010648 mov r1, 0x10 | r1 = 0x10;
0x0001064c bl 0x83e8 | fcn_000083e8 ();
0x00010650 subs fp, r0, 0 |
0x00010654 beq 0x106a8 |
| while (fp != var_28h) {
| label_0:
0x00010658 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001065c cmp r3, 0 |
| if (r3 != 0) {
0x00010660 bne 0x1076c | goto label_4;
| }
| label_1:
0x00010664 mov r0, r4 | r0 = r4;
0x00010668 bl 0x8fac | fcn_00008fac ();
0x0001066c mov r0, r5 | r0 = r5;
0x00010670 bl 0x8fac | fcn_00008fac ();
0x00010674 mov r0, r6 | r0 = r6;
0x00010678 bl 0x8fac | fcn_00008fac ();
0x0001067c mov r0, r7 | r0 = r7;
0x00010680 bl 0x8fac | fcn_00008fac ();
0x00010684 mov r0, sb | r0 = sb;
0x00010688 bl 0x8fac | fcn_00008fac ();
0x0001068c mov r0, r8 | r0 = r8;
0x00010690 bl 0x8fac | fcn_00008fac ();
0x00010694 mov r0, sl | r0 = sl;
0x00010698 bl 0x8fac | fcn_00008fac ();
0x0001069c mov r0, fp | r0 = fp;
0x000106a0 add sp, sp, 0x74 |
0x000106a4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000106a8 ldr r2, [pc, 0x4ac] | r2 = *(0x10b58);
0x000106ac mov r1, 0x10 | r1 = 0x10;
0x000106b0 add r2, pc, r2 | r2 = pc + r2;
0x000106b4 mov r0, r5 | r0 = r5;
0x000106b8 bl 0x83e8 | fcn_000083e8 ();
0x000106bc subs fp, r0, 0 |
0x000106c0 bne 0x10658 |
| }
0x000106c4 ldr r2, [pc, 0x494] | r2 = *(0x10b5c);
0x000106c8 mov r1, 0x10 | r1 = 0x10;
0x000106cc add r2, pc, r2 | r2 = pc + r2;
0x000106d0 mov r0, r6 | r0 = r6;
0x000106d4 bl 0x83e8 | fcn_000083e8 ();
0x000106d8 subs fp, r0, 0 |
| if (fp != var_34h) {
0x000106dc bne 0x10658 | goto label_0;
| }
0x000106e0 mov r2, r6 | r2 = r6;
0x000106e4 mov r1, r4 | r1 = r4;
0x000106e8 mov r0, r7 | r0 = r7;
0x000106ec bl 0x8694 | fcn_00008694 ();
0x000106f0 subs fp, r0, 0 |
| if (fp != var_40h) {
0x000106f4 bne 0x10658 | goto label_0;
| }
0x000106f8 ldr r2, [pc, 0x464] | r2 = *(0x10b60);
0x000106fc mov r1, 0x10 | r1 = 0x10;
0x00010700 add r2, pc, r2 | r2 = pc + r2;
0x00010704 mov r0, r8 | r0 = r8;
0x00010708 bl 0x83e8 | fcn_000083e8 ();
0x0001070c subs fp, r0, 0 |
| if (fp != var_58h) {
0x00010710 bne 0x10658 | goto label_0;
| }
0x00010714 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00010718 cmp r3, 0 |
| if (r3 == 0) {
0x0001071c bne 0x1073c |
0x00010720 mov r1, r8 | r1 = r8;
0x00010724 mov r0, r7 | r0 = r7;
0x00010728 bl 0x8afc | r0 = fcn_00008afc ();
0x0001072c cmp r0, 0 |
| if (r0 == 0) {
0x00010730 beq 0x107c8 | goto label_8;
| }
| label_2:
0x00010734 mov fp, 1 |
0x00010738 b 0x10664 | goto label_1;
| }
0x0001073c ldr r0, [pc, 0x424] | r0 = *(0x10b64);
0x00010740 add r0, pc, r0 | r0 = pc + r0;
0x00010744 bl 0x8298 | printf (r0)
0x00010748 mov r1, r8 | r1 = r8;
0x0001074c mov r0, r7 | r0 = r7;
0x00010750 bl 0x8afc | r0 = fcn_00008afc ();
0x00010754 cmp r0, 0 |
| if (r0 == 0) {
0x00010758 beq 0x109a4 | goto label_9;
| }
| label_6:
0x0001075c ldr r0, [pc, 0x408] | r0 = *(0x10b68);
0x00010760 mov fp, 1 |
0x00010764 add r0, pc, r0 | r0 = pc + r0;
0x00010768 bl 0x858c | puts (r0);
| label_4:
0x0001076c ldr r0, [pc, 0x3fc] | r0 = *(0x10b6c);
0x00010770 mov r1, fp | r1 = fp;
0x00010774 add r0, pc, r0 | r0 = pc + r0;
0x00010778 bl 0x8298 | printf (r0, r1)
| label_3:
0x0001077c mov r0, r4 | r0 = r4;
0x00010780 bl 0x8fac | fcn_00008fac ();
0x00010784 mov r0, r5 | r0 = r5;
0x00010788 bl 0x8fac | fcn_00008fac ();
0x0001078c mov r0, r6 | r0 = r6;
0x00010790 bl 0x8fac | fcn_00008fac ();
0x00010794 mov r0, r7 | r0 = r7;
0x00010798 bl 0x8fac | fcn_00008fac ();
0x0001079c mov r0, sb | r0 = sb;
0x000107a0 bl 0x8fac | fcn_00008fac ();
0x000107a4 mov r0, r8 | r0 = r8;
0x000107a8 bl 0x8fac | fcn_00008fac ();
0x000107ac mov r0, sl | r0 = sl;
0x000107b0 bl 0x8fac | fcn_00008fac ();
0x000107b4 mov r0, 0xa | r0 = 0xa;
0x000107b8 bl 0x81d8 | putchar (r0);
0x000107bc mov r0, fp | r0 = fp;
0x000107c0 add sp, sp, 0x74 |
0x000107c4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x000107c8 mov r3, r6 | r3 = r6;
0x000107cc mov r2, r4 | r2 = r4;
0x000107d0 mov r1, sb | r1 = sb;
0x000107d4 mov r0, r7 | r0 = r7;
0x000107d8 bl 0x8dfc | fcn_00008dfc ();
0x000107dc subs fp, r0, 0 |
| if (fp != var_40h) {
0x000107e0 bne 0x10664 | goto label_1;
| }
0x000107e4 ldr r2, [pc, 0x388] | r2 = *(0x10b70);
0x000107e8 mov r1, 0x10 | r1 = 0x10;
0x000107ec add r2, pc, r2 | r2 = pc + r2;
0x000107f0 mov r0, r8 | r0 = r8;
0x000107f4 bl 0x83e8 | fcn_000083e8 ();
0x000107f8 subs fp, r0, 0 |
| if (fp != var_58h) {
0x000107fc bne 0x10664 | goto label_1;
| }
| label_5:
0x00010800 ldr r2, [pc, 0x370] | r2 = *(0x10b74);
0x00010804 mov r1, 0x10 | r1 = 0x10;
0x00010808 add r2, pc, r2 | r2 = pc + r2;
0x0001080c mov r0, sl | r0 = sl;
0x00010810 bl 0x83e8 | fcn_000083e8 ();
0x00010814 subs r3, r0, 0 | r3 -= var_64h;
0x00010818 str r3, [sp, 0x10] | var_10h = r3;
| if (r3 != var_64h) {
0x0001081c bne 0x109ec | goto label_10;
| }
0x00010820 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00010824 cmp r3, 0 |
| if (r3 != 0) {
0x00010828 bne 0x109f4 | goto label_11;
| }
0x0001082c mov r1, r8 | r1 = r8;
0x00010830 mov r0, r7 | r0 = r7;
0x00010834 bl 0x8afc | r0 = fcn_00008afc ();
0x00010838 cmp r0, 0 |
| if (r0 != 0) {
0x0001083c bne 0x10734 | goto label_2;
| }
0x00010840 mov r1, sl | r1 = sl;
0x00010844 mov r0, sb | r0 = sb;
0x00010848 bl 0x8afc | r0 = fcn_00008afc ();
0x0001084c cmp r0, 0 |
| if (r0 != 0) {
0x00010850 bne 0x10734 | goto label_2;
| }
0x00010854 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00010858 mov r2, r5 | r2 = r5;
0x0001085c str r3, [sp] | *(sp) = r3;
0x00010860 mov r1, r4 | r1 = r4;
0x00010864 mov r3, r6 | r3 = r6;
0x00010868 mov r0, r7 | r0 = r7;
0x0001086c bl 0x8910 | fcn_00008910 ();
0x00010870 subs fp, r0, 0 |
| if (fp != var_40h) {
0x00010874 bne 0x10664 | goto label_1;
| }
0x00010878 ldr r2, [pc, 0x2fc] | r2 = *(0x10b78);
0x0001087c mov r1, 0x10 | r1 = 0x10;
0x00010880 add r2, pc, r2 | r2 = pc + r2;
0x00010884 mov r0, r8 | r0 = r8;
0x00010888 bl 0x83e8 | fcn_000083e8 ();
0x0001088c subs fp, r0, 0 |
| if (fp != var_58h) {
0x00010890 bne 0x10664 | goto label_1;
| }
0x00010894 mov r1, r8 | r1 = r8;
0x00010898 mov r0, r7 | r0 = r7;
0x0001089c bl 0x8afc | r0 = fcn_00008afc ();
0x000108a0 cmp r0, 0 |
| if (r0 != 0) {
0x000108a4 bne 0x10734 | goto label_2;
| }
0x000108a8 mov r2, r6 | r2 = r6;
0x000108ac mov r1, r4 | r1 = r4;
0x000108b0 mov r0, r7 | r0 = r7;
0x000108b4 bl 0x8dcc | fcn_00008dcc ();
0x000108b8 subs fp, r0, 0 |
| if (fp != var_40h) {
0x000108bc bne 0x10664 | goto label_1;
| }
0x000108c0 ldr r2, [pc, 0x2b8] | r2 = *(0x10b7c);
0x000108c4 mov r1, 0x10 | r1 = 0x10;
0x000108c8 add r2, pc, r2 | r2 = pc + r2;
0x000108cc mov r0, r8 | r0 = r8;
0x000108d0 bl 0x83e8 | fcn_000083e8 ();
0x000108d4 subs fp, r0, 0 |
| if (fp != var_58h) {
0x000108d8 bne 0x10664 | goto label_1;
| }
0x000108dc mov r1, r8 | r1 = r8;
0x000108e0 mov r0, r7 | r0 = r7;
0x000108e4 bl 0x8afc | r0 = fcn_00008afc ();
0x000108e8 cmp r0, 0 |
| if (r0 != 0) {
0x000108ec bne 0x10734 | goto label_2;
| }
| label_7:
0x000108f0 ldr fp, [pc, 0x28c] | fp = *(0x10b80);
0x000108f4 add fp, pc, fp |
0x000108f8 add r3, fp, 0x2a0 | r3 += arg_2a0h;
0x000108fc mov fp, r5 |
0x00010900 mov r5, r4 | r5 = r4;
0x00010904 mov r4, r6 | r4 = r6;
0x00010908 mov r6, r3 | r6 = r3;
| do {
0x0001090c ldr r1, [r6] | r1 = *(r6);
0x00010910 mov r0, r7 | r0 = r7;
0x00010914 bl 0x8874 | fcn_00008874 ();
0x00010918 subs r3, r0, 0 | r3 -= var_40h;
0x0001091c mov r0, sb | r0 = sb;
| if (r3 != var_40h) {
0x00010920 bne 0x10b44 | goto label_12;
| }
0x00010924 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00010928 bl 0x8874 | fcn_00008874 ();
0x0001092c mov r2, sb | r2 = sb;
0x00010930 mov r1, r7 | r1 = r7;
0x00010934 subs r3, r0, 0 | r3 -= var_4ch;
0x00010938 mov r0, r5 | r0 = r5;
| if (r3 != var_4ch) {
0x0001093c bne 0x10b44 | goto label_12;
| }
0x00010940 bl 0x8be0 | fcn_00008be0 ();
0x00010944 subs r3, r0, 0 | r3 -= var_1ch;
0x00010948 mov r0, r5 | r0 = r5;
| if (r3 != var_1ch) {
0x0001094c bne 0x10b44 | goto label_12;
| }
0x00010950 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x00010954 bl 0x89d0 | fcn_000089d0 ();
0x00010958 add r6, r6, 0xc | r6 += 0xc;
0x0001095c subs r3, r0, 0 | r3 -= var_1ch;
| if (r3 != var_1ch) {
0x00010960 bne 0x10b14 | goto label_13;
| }
0x00010964 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00010968 add r2, r2, 1 | r2++;
0x0001096c cmp r2, 3 |
0x00010970 str r2, [sp, 0x10] | var_10h = r2;
0x00010974 bne 0x1090c |
| } while (r2 != 3);
0x00010978 mov r6, r4 | r6 = r4;
0x0001097c mov r4, r5 | r4 = r5;
0x00010980 mov r5, fp | r5 = fp;
0x00010984 mov fp, r3 |
0x00010988 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001098c cmp r3, 0 |
| if (r3 == 0) {
0x00010990 beq 0x10664 | goto label_1;
| }
0x00010994 ldr r0, [pc, 0x1ec] | r0 = *(0x10b84);
0x00010998 add r0, pc, r0 | r0 = pc + r0;
0x0001099c bl 0x858c | puts (r0);
0x000109a0 b 0x1077c | goto label_3;
| label_9:
0x000109a4 ldr r0, [pc, 0x1e0] | r0 = mbedtls_hmac_drbg_self_test;
0x000109a8 add r0, pc, r0 | r0 = pc + r0;
0x000109ac bl 0x858c | puts (r0);
0x000109b0 mov r3, r6 | r3 = r6;
0x000109b4 mov r2, r4 | r2 = r4;
0x000109b8 mov r1, sb | r1 = sb;
0x000109bc mov r0, r7 | r0 = r7;
0x000109c0 bl 0x8dfc | fcn_00008dfc ();
0x000109c4 subs fp, r0, 0 |
| if (fp != var_40h) {
0x000109c8 bne 0x1076c | goto label_4;
| }
0x000109cc ldr r2, [pc, 0x1bc] | r2 = *(0x10b8c);
0x000109d0 mov r1, 0x10 | r1 = 0x10;
0x000109d4 add r2, pc, r2 | r2 = pc + r2;
0x000109d8 mov r0, r8 | r0 = r8;
0x000109dc bl 0x83e8 | fcn_000083e8 ();
0x000109e0 subs fp, r0, 0 |
| if (fp != var_58h) {
0x000109e4 bne 0x1076c | goto label_4;
| }
0x000109e8 b 0x10800 | goto label_5;
| label_10:
0x000109ec ldr fp, [sp, 0x10] | fp = var_10h;
0x000109f0 b 0x10658 | goto label_0;
| label_11:
0x000109f4 ldr r0, [pc, 0x198] | r0 = *(0x10b90);
0x000109f8 add r0, pc, r0 | r0 = pc + r0;
0x000109fc bl 0x8298 | printf (r0)
0x00010a00 mov r1, r8 | r1 = r8;
0x00010a04 mov r0, r7 | r0 = r7;
0x00010a08 bl 0x8afc | r0 = fcn_00008afc ();
0x00010a0c cmp r0, 0 |
| if (r0 != 0) {
0x00010a10 bne 0x1075c | goto label_6;
| }
0x00010a14 mov r1, sl | r1 = sl;
0x00010a18 mov r0, sb | r0 = sb;
0x00010a1c bl 0x8afc | r0 = fcn_00008afc ();
0x00010a20 cmp r0, 0 |
| if (r0 != 0) {
0x00010a24 bne 0x1075c | goto label_6;
| }
0x00010a28 ldr r3, [pc, 0x168] | r3 = *(0x10b94);
0x00010a2c add r3, pc, r3 | r3 = pc + r3;
0x00010a30 mov r0, r3 | r0 = r3;
0x00010a34 str r3, [sp, 0x14] | s = r3;
0x00010a38 bl 0x858c | puts (r0);
0x00010a3c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00010a40 mov r2, r5 | r2 = r5;
0x00010a44 str r3, [sp] | *(sp) = r3;
0x00010a48 mov r1, r4 | r1 = r4;
0x00010a4c mov r3, r6 | r3 = r6;
0x00010a50 mov r0, r7 | r0 = r7;
0x00010a54 bl 0x8910 | fcn_00008910 ();
0x00010a58 subs fp, r0, 0 |
| if (fp != var_40h) {
0x00010a5c bne 0x1076c | goto label_4;
| }
0x00010a60 ldr r2, [pc, 0x134] | r2 = *(0x10b98);
0x00010a64 mov r1, 0x10 | r1 = 0x10;
0x00010a68 add r2, pc, r2 | r2 = pc + r2;
0x00010a6c mov r0, r8 | r0 = r8;
0x00010a70 bl 0x83e8 | fcn_000083e8 ();
0x00010a74 subs fp, r0, 0 |
| if (fp != var_58h) {
0x00010a78 bne 0x1076c | goto label_4;
| }
0x00010a7c ldr r0, [pc, 0x11c] | r0 = *(0x10b9c);
0x00010a80 add r0, pc, r0 | r0 = pc + r0;
0x00010a84 bl 0x8298 | printf (r0)
0x00010a88 mov r1, r8 | r1 = r8;
0x00010a8c mov r0, r7 | r0 = r7;
0x00010a90 bl 0x8afc | r0 = fcn_00008afc ();
0x00010a94 cmp r0, 0 |
| if (r0 != 0) {
0x00010a98 bne 0x1075c | goto label_6;
| }
0x00010a9c ldr r0, [sp, 0x14] | r0 = s;
0x00010aa0 bl 0x858c | puts (r0);
0x00010aa4 mov r2, r6 | r2 = r6;
0x00010aa8 mov r1, r4 | r1 = r4;
0x00010aac mov r0, r7 | r0 = r7;
0x00010ab0 bl 0x8dcc | fcn_00008dcc ();
0x00010ab4 subs fp, r0, 0 |
| if (fp != var_40h) {
0x00010ab8 bne 0x1076c | goto label_4;
| }
0x00010abc ldr r2, [pc, 0xe0] | r2 = *(0x10ba0);
0x00010ac0 mov r1, 0x10 | r1 = 0x10;
0x00010ac4 add r2, pc, r2 | r2 = pc + r2;
0x00010ac8 mov r0, r8 | r0 = r8;
0x00010acc bl 0x83e8 | fcn_000083e8 ();
0x00010ad0 subs fp, r0, 0 |
| if (fp != var_58h) {
0x00010ad4 bne 0x1076c | goto label_4;
| }
0x00010ad8 ldr r0, [pc, 0xc8] | r0 = *(0x10ba4);
0x00010adc add r0, pc, r0 | r0 = pc + r0;
0x00010ae0 bl 0x8298 | printf (r0)
0x00010ae4 mov r1, r8 | r1 = r8;
0x00010ae8 mov r0, r7 | r0 = r7;
0x00010aec bl 0x8afc | r0 = fcn_00008afc ();
0x00010af0 cmp r0, 0 |
| if (r0 != 0) {
0x00010af4 bne 0x1075c | goto label_6;
| }
0x00010af8 ldr r0, [pc, 0xac] | r0 = *(0x10ba8);
0x00010afc add r0, pc, r0 | r0 = pc + r0;
0x00010b00 bl 0x858c | puts (r0);
0x00010b04 ldr r0, [pc, 0xa4] | r0 = *(0x10bac);
0x00010b08 add r0, pc, r0 | r0 = pc + r0;
0x00010b0c bl 0x8298 | printf (r0)
0x00010b10 b 0x108f0 | goto label_7;
| label_13:
0x00010b14 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00010b18 mov r6, r4 | r6 = r4;
0x00010b1c cmp r3, 0 |
0x00010b20 mov r4, r5 | r4 = r5;
0x00010b24 mov r5, fp | r5 = fp;
| if (r3 == 0) {
0x00010b28 beq 0x10734 | goto label_2;
| }
0x00010b2c ldr r0, [pc, 0x80] | r0 = *(0x10bb0);
0x00010b30 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00010b34 add r0, pc, r0 | r0 = pc + r0;
0x00010b38 bl 0x8298 | printf (r0, r1)
0x00010b3c mov fp, 1 |
0x00010b40 b 0x1076c | goto label_4;
| label_12:
0x00010b44 mov r6, r4 | r6 = r4;
0x00010b48 mov r4, r5 | r4 = r5;
0x00010b4c mov r5, fp | r5 = fp;
0x00010b50 mov fp, r3 |
0x00010b54 b 0x10658 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0xeec4 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_mpi_write_file () | void mbedtls_mpi_write_file (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| char * ptr;
| int32_t var_2h;
| int32_t var_10h;
| int32_t var_9c0h;
| int32_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0000eec4 push {r4, r5, r6, r7, r8, sb, lr} |
0x0000eec8 sub sp, sp, 0x9c0 |
0x0000eecc sub sp, sp, 4 |
0x0000eed0 add r5, sp, 0xc | r5 += ptr;
0x0000eed4 add r4, sp, 0x10 | r4 += var_10h;
0x0000eed8 mov r8, r1 | r8 = r1;
0x0000eedc mov sb, r2 | sb = r2;
0x0000eee0 mov r1, 0 | r1 = 0;
0x0000eee4 ldr r2, [pc, 0xf8] | r2 = *(0xefe0);
0x0000eee8 mov r6, r0 | r6 = r0;
0x0000eeec sub r4, r4, 8 | r4 -= var_8h;
0x0000eef0 mov r0, r5 | r0 = r5;
0x0000eef4 mov r7, r3 | r7 = r3;
0x0000eef8 bl 0x8c28 | memset (r0, r1, r2);
0x0000eefc mov r0, r8 | r0 = r8;
0x0000ef00 str r4, [sp] | *(sp) = r4;
0x0000ef04 mov r1, sb | r1 = sb;
0x0000ef08 mov r2, r5 | r2 = r5;
0x0000ef0c ldr r3, [pc, 0xd4] | r3 = *(0xefe4);
0x0000ef10 bl 0x9114 | r0 = fcn_00009114 ();
0x0000ef14 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x0000ef18 bne 0xef98 | goto label_0;
| }
0x0000ef1c cmp r6, 0 |
| if (r6 == 0) {
0x0000ef20 beq 0xefa8 | goto label_1;
| }
0x0000ef24 mov r0, r6 | r0 = r6;
0x0000ef28 bl 0x9048 | r0 = strlen (r0);
0x0000ef2c mov sb, r0 | sb = r0;
| do {
0x0000ef30 mov r0, r5 | r0 = r5;
0x0000ef34 bl 0x9048 | strlen (r0);
0x0000ef38 add r3, sp, 0x9c0 | r3 += var_9c0h;
0x0000ef3c mov r1, 0xd | r1 = 0xd;
0x0000ef40 mov r2, 0xa | r2 = 0xa;
0x0000ef44 cmp r7, 0 |
0x0000ef48 add r3, r3, r0 | r3 += r0;
0x0000ef4c mov r4, r0 | r4 = r0;
0x0000ef50 strb r1, [r3, -0x9b4] | *((r3 - 0x9b4)) = r1;
0x0000ef54 strb r2, [r3, -0x9b3] | *((r3 - 0x9b3)) = r2;
| if (r7 == 0) {
0x0000ef58 beq 0xefb8 | goto label_2;
| }
0x0000ef5c mov r0, r6 | r0 = r6;
0x0000ef60 mov r3, r7 | r3 = r7;
0x0000ef64 mov r2, sb | r2 = sb;
0x0000ef68 mov r1, 1 | r1 = 1;
0x0000ef6c bl 0x8eb0 | r0 = fwrite (r0, r1, r2, r3);
0x0000ef70 cmp r0, sb |
| if (r0 != sb) {
0x0000ef74 bne 0xefdc | goto label_3;
| }
0x0000ef78 add r4, r4, 2 | r4 += var_2h;
0x0000ef7c mov r3, r7 | r3 = r7;
0x0000ef80 mov r0, r5 | r0 = r5;
0x0000ef84 mov r2, r4 | r2 = r4;
0x0000ef88 mov r1, 1 | r1 = 1;
0x0000ef8c bl 0x8eb0 | r0 = fwrite (r0, r1, r2, r3);
0x0000ef90 cmp r0, r4 |
| if (r0 != r4) {
0x0000ef94 bne 0xefdc | goto label_3;
| }
| label_0:
0x0000ef98 mov r0, r8 | r0 = r8;
0x0000ef9c add sp, sp, 0x9c0 |
0x0000efa0 add sp, sp, 4 |
0x0000efa4 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x0000efa8 mov sb, r6 | sb = r6;
0x0000efac ldr r6, [pc, 0x38] | r6 = *(0xefe8);
0x0000efb0 add r6, pc, r6 | r6 = pc + r6;
0x0000efb4 b 0xef30 |
| } while (1);
| label_2:
0x0000efb8 ldr r0, [pc, 0x30] | r0 = *(0xefec);
0x0000efbc mov r2, r5 | r2 = r5;
0x0000efc0 mov r1, r6 | r1 = r6;
0x0000efc4 add r0, pc, r0 | r0 = pc + r0;
0x0000efc8 bl 0x8298 | printf (r0, r1, r2)
0x0000efcc mov r0, r8 | r0 = r8;
0x0000efd0 add sp, sp, 0x9c0 |
0x0000efd4 add sp, sp, 4 |
0x0000efd8 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_3:
0x0000efdc mvn r8, 1 | r8 = ~1;
0x0000efe0 b 0xef98 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x262f0 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_pkcs5_self_test () | void mbedtls_pkcs5_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| char * format;
| char * s;
| int32_t var_34h;
| int32_t var_1h;
| int32_t var_40h;
| int32_t var_84h;
| r0 = arg1;
0x000262f0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000262f4 sub sp, sp, 0x84 |
0x000262f8 add r5, sp, 0x34 | r5 += var_34h;
0x000262fc mov sl, r0 | sl = r0;
0x00026300 mov r0, r5 | r0 = r5;
0x00026304 bl 0x8958 | fcn_00008958 ();
0x00026308 mov r0, 4 | r0 = 4;
0x0002630c bl 0x90e4 | r0 = fcn_000090e4 ();
0x00026310 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x00026314 beq 0x26458 | goto label_2;
| }
0x00026318 mov r2, 1 | r2 = 1;
0x0002631c mov r0, r5 | r0 = r5;
0x00026320 bl 0x8ba4 | fcn_00008ba4 ();
0x00026324 subs r4, r0, 0 | r4 -= var_34h;
| if (r4 != var_34h) {
0x00026328 bne 0x26458 | goto label_2;
| }
0x0002632c ldr r3, [pc, 0x158] | r3 = *(0x26488);
0x00026330 ldr r6, [pc, 0x158] | r6 = *(0x2648c);
0x00026334 add r3, pc, r3 | r3 = pc + r3;
0x00026338 str r3, [sp, 0x28] | format = r3;
0x0002633c ldr r3, [pc, 0x150] | r3 = *(0x26490);
0x00026340 ldr r7, [pc, 0x150] | r7 = *(0x26494);
0x00026344 add r6, pc, r6 | r6 = pc + r6;
0x00026348 add r3, pc, r3 | r3 = pc + r3;
0x0002634c add r7, pc, r7 | r7 = pc + r7;
0x00026350 str r3, [sp, 0x2c] | s = r3;
0x00026354 add r3, r6, 0xf0 | r3 = r6 + 0xf0;
0x00026358 mov r2, 8 | r2 = 8;
0x0002635c str r3, [sp, 0x18] | var_18h = r3;
0x00026360 mov r1, 1 | r1 = 1;
0x00026364 add r3, r7, 0x270 | r3 = r7 + 0x270;
0x00026368 cmp sl, 0 |
0x0002636c str r3, [sp, 0x1c] | var_1ch = r3;
0x00026370 mov r8, r2 | r8 = r2;
0x00026374 str r5, [sp, 0x10] | var_10h = r5;
0x00026378 str r6, [sp, 0x14] | var_14h = r6;
0x0002637c mov sb, 0x14 | sb = 0x14;
0x00026380 mov r3, 4 | r3 = 4;
0x00026384 add fp, sp, 0x40 |
0x00026388 mov r2, r1 | r2 = r1;
0x0002638c lsl r5, r4, 5 | r5 = r4 << 5;
| if (sl != 0) {
0x00026390 bne 0x26420 | goto label_3;
| }
| do {
| label_0:
0x00026394 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00026398 stmib sp, {r2, sb, fp} | __asm ("stmib sp, {r2, sb, fp}");
0x0002639c ldr r0, [sp, 0x10] | r0 = var_10h;
0x000263a0 str r3, [sp] | *(sp) = r3;
0x000263a4 mov r2, r8 | r2 = r8;
0x000263a8 mov r3, r6 | r3 = r6;
0x000263ac add r1, r1, r5 | r1 += r5;
0x000263b0 bl 0x8a0c | fcn_00008a0c ();
0x000263b4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000263b8 mov r2, sb | r2 = sb;
0x000263bc add r3, r3, 0x1b0 | r3 += 0x1b0;
0x000263c0 mov r1, fp | r1 = fp;
0x000263c4 add r4, r4, 1 | r4 += var_1h;
0x000263c8 add r6, r6, 0x28 | r6 += 0x28;
0x000263cc cmp r0, 0 |
0x000263d0 add r0, r3, r5 | r0 = r3 + r5;
| if (r0 != 0) {
0x000263d4 bne 0x26440 | goto label_4;
| }
0x000263d8 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x000263dc subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x000263e0 bne 0x26440 | goto label_4;
| }
0x000263e4 cmp sl, 0 |
| if (sl != 0) {
0x000263e8 bne 0x26470 | goto label_5;
| }
| label_1:
0x000263ec cmp r4, 6 |
0x000263f0 add r3, r7, 0x288 | r3 = r7 + 0x288;
0x000263f4 add r2, r7, 0x2a0 | r2 = r7 + 0x2a0;
0x000263f8 add r1, r7, 0x2b8 | r1 = r7 + 0x2b8;
| if (r4 == 6) {
0x000263fc beq 0x2647c | goto label_6;
| }
0x00026400 ldr sb, [r1, r4, lsl 2] | offset_0 = r4 << 2;
| sb = *((r1 + offset_0));
0x00026404 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00026408 cmp sl, 0 |
0x0002640c ldr r3, [r3, r4, lsl 2] | offset_1 = r4 << 2;
| r3 = *((r3 + offset_1));
0x00026410 ldr r2, [r2, r4, lsl 2] | offset_2 = r4 << 2;
| r2 = *((r2 + offset_2));
0x00026414 ldr r8, [r1, r4, lsl 2] | offset_3 = r4 << 2;
| r8 = *((r1 + offset_3));
0x00026418 lsl r5, r4, 5 | r5 = r4 << 5;
0x0002641c beq 0x26394 |
| } while (sl == 0);
| label_3:
0x00026420 mov r1, r4 | r1 = r4;
0x00026424 ldr r0, [sp, 0x28] | r0 = format;
0x00026428 str r2, [sp, 0x24] | var_24h = r2;
0x0002642c str r3, [sp, 0x20] | var_20h = r3;
0x00026430 bl 0x8298 | printf (r0, r1, r2, r3)
0x00026434 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00026438 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0002643c b 0x26394 | goto label_0;
| label_4:
0x00026440 cmp sl, 0 |
0x00026444 ldr r5, [sp, 0x10] | r5 = var_10h;
| if (sl != 0) {
0x00026448 beq 0x26458 |
0x0002644c ldr r0, [pc, 0x48] | r0 = *(0x26498);
0x00026450 add r0, pc, r0 | r0 = pc + r0;
0x00026454 bl 0x858c | puts (r0);
| }
| label_2:
0x00026458 mov r8, 1 | r8 = 1;
| do {
0x0002645c mov r0, r5 | r0 = r5;
0x00026460 bl 0x9108 | fcn_00009108 ();
0x00026464 mov r0, r8 | r0 = r8;
0x00026468 add sp, sp, 0x84 |
0x0002646c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00026470 ldr r0, [sp, 0x2c] | r0 = s;
0x00026474 bl 0x858c | puts (r0);
0x00026478 b 0x263ec | goto label_1;
| label_6:
0x0002647c mov r0, 0xa | r0 = 0xa;
0x00026480 ldr r5, [sp, 0x10] | r5 = var_10h;
0x00026484 bl 0x81d8 | putchar (r0);
0x00026488 b 0x2645c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x2a24c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_ripemd160_self_test () | void mbedtls_ripemd160_self_test (int32_t arg1) {
| void * s1;
| int32_t var_4h_2;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_1ch;
| r0 = arg1;
0x0002a24c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002a250 ldr r5, [pc, 0x118] |
0x0002a254 ldr r6, [pc, 0x118] | r6 = *(0x2a370);
0x0002a258 ldr fp, [pc, 0x118] | fp = *(0x2a374);
0x0002a25c ldr sl, [pc, 0x118] | sl = *(0x2a378);
0x0002a260 ldr sb, [pc, 0x118] | sb = *(0x2a37c);
0x0002a264 sub sp, sp, 0x1c |
0x0002a268 mov r8, r0 | r8 = r0;
0x0002a26c mov r3, 0 | r3 = 0;
0x0002a270 add r7, sp, 4 | r7 += s1;
0x0002a274 add r5, pc, r5 | r5 = pc + r5;
0x0002a278 add r6, pc, r6 | r6 = pc + r6;
0x0002a27c cmp r8, 0 |
0x0002a280 str r3, [r7, 4] | var_4h_2 = r3;
0x0002a284 add fp, pc, fp |
0x0002a288 str r3, [sp, 4] | s1 = r3;
0x0002a28c add sl, pc, sl | sl = pc + sl;
0x0002a290 add sb, pc, sb | sb = pc + sb;
0x0002a294 add r5, r5, 0x40 | r5 = 0x2a3ac;
0x0002a298 mov r4, 1 | r4 = 1;
0x0002a29c str r3, [r7, 8] | var_8h = r3;
0x0002a2a0 str r3, [r7, 0xc] | var_ch = r3;
0x0002a2a4 str r3, [r7, 0x10] | var_10h = r3;
0x0002a2a8 mov r0, r6 | r0 = r6;
| if (r8 != 0) {
0x0002a2ac bne 0x2a2fc | goto label_1;
| }
| do {
0x0002a2b0 bl 0x9048 | strlen (r0);
0x0002a2b4 mov r2, r7 | r2 = r7;
0x0002a2b8 mov r1, r0 | r1 = r0;
0x0002a2bc mov r0, r6 | r0 = r6;
0x0002a2c0 bl 0x8658 | fcn_00008658 ();
0x0002a2c4 mov r2, 0x14 | r2 = 0x14;
0x0002a2c8 mov r1, r5 | r1 = r5;
0x0002a2cc mov r0, r7 | r0 = r7;
0x0002a2d0 bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0002a2d4 cmp r0, 0 |
| if (r0 != 0) {
0x0002a2d8 bne 0x2a364 | goto label_2;
| }
0x0002a2dc cmp r4, 8 |
0x0002a2e0 add r5, r5, 0x14 | r5 += 0x14;
| if (r4 == 8) {
0x0002a2e4 beq 0x2a34c | goto label_3;
| }
| label_0:
0x0002a2e8 ldr r6, [sb, r4, lsl 2] | offset_0 = r4 << 2;
| r6 = *((sb + offset_0));
0x0002a2ec cmp r8, 0 |
0x0002a2f0 add r4, r4, 1 | r4++;
0x0002a2f4 mov r0, r6 | r0 = r6;
0x0002a2f8 beq 0x2a2b0 |
| } while (r8 == 0);
| label_1:
0x0002a2fc mov r1, r4 | r1 = r4;
0x0002a300 mov r0, fp | r0 = fp;
0x0002a304 bl 0x8298 | printf (r0, r1)
0x0002a308 mov r0, r6 | r0 = r6;
0x0002a30c bl 0x9048 | strlen (r0);
0x0002a310 mov r2, r7 | r2 = r7;
0x0002a314 mov r1, r0 | r1 = r0;
0x0002a318 mov r0, r6 | r0 = r6;
0x0002a31c bl 0x8658 | fcn_00008658 ();
0x0002a320 mov r2, 0x14 | r2 = 0x14;
0x0002a324 mov r1, r5 | r1 = r5;
0x0002a328 mov r0, r7 | r0 = r7;
0x0002a32c bl 0x8b08 | r0 = memcmp (r0, r1, r2);
0x0002a330 cmp r0, 0 |
0x0002a334 mov r0, sl | r0 = sl;
| if (r0 != 0) {
0x0002a338 bne 0x2a358 | goto label_4;
| }
0x0002a33c bl 0x858c | puts (r0);
0x0002a340 cmp r4, 8 |
0x0002a344 add r5, r5, 0x14 | r5 += 0x14;
| if (r4 != 8) {
0x0002a348 bne 0x2a2e8 | goto label_0;
| }
| label_3:
0x0002a34c mov r0, 0 | r0 = 0;
0x0002a350 add sp, sp, 0x1c |
0x0002a354 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x0002a358 ldr r0, [pc, 0x24] | r0 = *(0x2a380);
0x0002a35c add r0, pc, r0 | r0 = pc + r0;
0x0002a360 bl 0x858c | puts (r0);
| label_2:
0x0002a364 mov r0, 1 | r0 = 1;
0x0002a368 add sp, sp, 0x1c |
0x0002a36c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x2c5f8 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_rsa_self_test () | void mbedtls_rsa_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| void * s2;
| void * s1;
| int32_t var_5ch;
| int32_t var_dch;
| int32_t var_e0h;
| int32_t var_e4h;
| int32_t var_f0h;
| int32_t var_fch;
| int32_t var_108h;
| int32_t var_114h;
| int32_t var_120h;
| int32_t var_12ch;
| int32_t var_138h;
| int32_t var_18ch;
| r0 = arg1;
0x0002c5f8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002c5fc sub sp, sp, 0x18c |
0x0002c600 mov r2, 0 | r2 = 0;
0x0002c604 add r4, sp, 0xdc | r4 += var_dch;
0x0002c608 mov r1, r2 | r1 = r2;
0x0002c60c mov r6, r0 | r6 = r0;
0x0002c610 mov r0, r4 | r0 = r4;
0x0002c614 bl 0x9084 | fcn_00009084 ();
0x0002c618 ldr r2, [pc, 0x3d0] | r2 = *(0x2c9ec);
0x0002c61c mov r3, 0x80 | r3 = 0x80;
0x0002c620 add r2, pc, r2 | r2 = pc + r2;
0x0002c624 mov r1, 0x10 | r1 = 0x10;
0x0002c628 add r0, sp, 0xe4 | r0 += var_e4h;
0x0002c62c str r3, [sp, 0xe0] | var_e0h = r3;
0x0002c630 bl 0x83e8 | fcn_000083e8 ();
0x0002c634 subs r5, r0, 0 | r5 -= var_e4h;
| if (r5 != var_e4h) {
0x0002c638 bne 0x2c658 | goto label_0;
| }
0x0002c63c ldr r2, [pc, 0x3b0] | r2 = *(0x2c9f0);
0x0002c640 mov r1, 0x10 | r1 = 0x10;
0x0002c644 add r2, pc, r2 | r2 = pc + r2;
0x0002c648 add r0, sp, 0xf0 | r0 += var_f0h;
0x0002c64c bl 0x83e8 | fcn_000083e8 ();
0x0002c650 subs r5, r0, 0 | r5 -= var_f0h;
0x0002c654 beq 0x2c66c |
| while (r5 != var_fch) {
| label_0:
0x0002c658 mov r0, r4 | r0 = r4;
0x0002c65c bl 0x8250 | fcn_00008250 ();
| label_1:
0x0002c660 mov r0, r5 | r0 = r5;
0x0002c664 add sp, sp, 0x18c |
0x0002c668 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0002c66c ldr r2, [pc, 0x384] | r2 = *(0x2c9f4);
0x0002c670 mov r1, 0x10 | r1 = 0x10;
0x0002c674 add r2, pc, r2 | r2 = pc + r2;
0x0002c678 add r0, sp, 0xfc | r0 += var_fch;
0x0002c67c bl 0x83e8 | fcn_000083e8 ();
0x0002c680 subs r5, r0, 0 | r5 -= var_fch;
0x0002c684 bne 0x2c658 |
| }
0x0002c688 ldr r2, [pc, 0x36c] | r2 = *(0x2c9f8);
0x0002c68c mov r1, 0x10 | r1 = 0x10;
0x0002c690 add r2, pc, r2 | r2 = pc + r2;
0x0002c694 add r0, sp, 0x108 | r0 += var_108h;
0x0002c698 bl 0x83e8 | fcn_000083e8 ();
0x0002c69c subs r5, r0, 0 | r5 -= var_108h;
| if (r5 != var_108h) {
0x0002c6a0 bne 0x2c658 | goto label_0;
| }
0x0002c6a4 ldr r2, [pc, 0x354] | r2 = *(0x2c9fc);
0x0002c6a8 mov r1, 0x10 | r1 = 0x10;
0x0002c6ac add r2, pc, r2 | r2 = pc + r2;
0x0002c6b0 add r0, sp, 0x114 | r0 += var_114h;
0x0002c6b4 bl 0x83e8 | fcn_000083e8 ();
0x0002c6b8 subs r5, r0, 0 | r5 -= var_114h;
| if (r5 != var_114h) {
0x0002c6bc bne 0x2c658 | goto label_0;
| }
0x0002c6c0 ldr r2, [pc, 0x33c] | r2 = *(0x2ca00);
0x0002c6c4 mov r1, 0x10 | r1 = 0x10;
0x0002c6c8 add r2, pc, r2 | r2 = pc + r2;
0x0002c6cc add r0, sp, 0x120 | r0 += var_120h;
0x0002c6d0 bl 0x83e8 | fcn_000083e8 ();
0x0002c6d4 subs r5, r0, 0 | r5 -= var_120h;
| if (r5 != var_120h) {
0x0002c6d8 bne 0x2c658 | goto label_0;
| }
0x0002c6dc ldr r2, [pc, 0x324] | r2 = *(0x2ca04);
0x0002c6e0 mov r1, 0x10 | r1 = 0x10;
0x0002c6e4 add r2, pc, r2 | r2 = pc + r2;
0x0002c6e8 add r0, sp, 0x12c | r0 += var_12ch;
0x0002c6ec bl 0x83e8 | fcn_000083e8 ();
0x0002c6f0 subs r5, r0, 0 | r5 -= var_12ch;
| if (r5 != var_12ch) {
0x0002c6f4 bne 0x2c658 | goto label_0;
| }
0x0002c6f8 ldr r2, [pc, 0x30c] | r2 = *(0x2ca08);
0x0002c6fc mov r1, 0x10 | r1 = 0x10;
0x0002c700 add r2, pc, r2 | r2 = pc + r2;
0x0002c704 add r0, sp, 0x138 | r0 += var_138h;
0x0002c708 bl 0x83e8 | fcn_000083e8 ();
0x0002c70c subs r5, r0, 0 | r5 -= var_138h;
| if (r5 != var_138h) {
0x0002c710 bne 0x2c658 | goto label_0;
| }
0x0002c714 cmp r6, 0 |
| if (r6 != 0) {
0x0002c718 bne 0x2c734 | goto label_3;
| }
0x0002c71c mov r0, r4 | r0 = r4;
0x0002c720 bl 0x864c | r0 = fcn_0000864c ();
0x0002c724 cmp r0, 0 |
0x0002c728 beq 0x2c8dc |
| while (r6 != var_dch) {
| label_2:
0x0002c72c mov r5, 1 | r5 = 1;
0x0002c730 b 0x2c660 | goto label_1;
| label_3:
0x0002c734 ldr r0, [pc, 0x2d4] | r0 = *(0x2ca0c);
0x0002c738 add r0, pc, r0 | r0 = pc + r0;
0x0002c73c bl 0x8298 | printf (r0)
0x0002c740 mov r0, r4 | r0 = r4;
0x0002c744 bl 0x864c | r0 = fcn_0000864c ();
0x0002c748 cmp r0, 0 |
| if (r0 == 0) {
0x0002c74c bne 0x2c8c8 |
0x0002c750 mov r0, r4 | r0 = r4;
0x0002c754 bl 0x83d0 | fcn_000083d0 ();
0x0002c758 subs r6, r0, 0 | r6 -= var_dch;
| if (r6 != var_dch) {
0x0002c75c bne 0x2c8c8 | goto label_4;
| }
0x0002c760 ldr r0, [pc, 0x2ac] | r0 = *(0x2ca10);
0x0002c764 ldr r7, [pc, 0x2ac] | r7 = *(0x2ca14);
0x0002c768 add r0, pc, r0 | r0 = pc + r0;
0x0002c76c bl 0x8298 | printf (r0)
0x0002c770 ldr lr, [pc, 0x2a4] | lr = *(0x2ca18);
0x0002c774 add ip, sp, 0x2c |
0x0002c778 add lr, pc, lr | lr = pc + lr;
0x0002c77c ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0002c780 add r7, pc, r7 | r7 = pc + r7;
0x0002c784 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002c788 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x0002c78c add r5, sp, 0x5c | r5 += var_5ch;
0x0002c790 add r8, sp, 0x2c | r8 += s2;
0x0002c794 mov sb, 0x18 | sb = 0x18;
0x0002c798 stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x0002c79c mov r3, r6 | r3 = r6;
0x0002c7a0 str r5, [sp, 8] | var_8h = r5;
0x0002c7a4 mov r1, r7 | r1 = r7;
0x0002c7a8 str r8, [sp, 4] | var_4h = r8;
0x0002c7ac str sb, [sp] | *(sp) = sb;
0x0002c7b0 mov r2, r6 | r2 = r6;
0x0002c7b4 mov r0, r4 | r0 = r4;
0x0002c7b8 bl 0x8820 | fcn_00008820 ();
0x0002c7bc subs sl, r0, 0 | sl -= var_dch;
| if (sl != var_dch) {
0x0002c7c0 bne 0x2c8c8 | goto label_4;
| }
0x0002c7c4 ldr r0, [pc, 0x254] | r0 = *(0x2ca1c);
0x0002c7c8 add r6, sp, 0x44 | r6 += s1;
0x0002c7cc add r0, pc, r0 | r0 = pc + r0;
0x0002c7d0 bl 0x8298 | printf (r0, r1, r2, r3, r4, r5, r6)
0x0002c7d4 add r3, sp, 0x14 | r3 += var_14h;
0x0002c7d8 str r3, [sp] | *(sp) = r3;
0x0002c7dc str sb, [sp, 0xc] | var_ch = sb;
0x0002c7e0 str r5, [sp, 4] | var_4h = r5;
0x0002c7e4 mov r2, sl | r2 = sl;
0x0002c7e8 str r6, [sp, 8] | var_8h = r6;
0x0002c7ec mov r3, 1 | r3 = 1;
0x0002c7f0 mov r1, r7 | r1 = r7;
0x0002c7f4 mov r0, r4 | r0 = r4;
0x0002c7f8 bl 0x8394 | r0 = fcn_00008394 ();
0x0002c7fc cmp r0, 0 |
| if (r0 != 0) {
0x0002c800 bne 0x2c8c8 | goto label_4;
| }
0x0002c804 mov r0, r6 | r0 = r6;
0x0002c808 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0002c80c mov r1, r8 | r1 = r8;
0x0002c810 bl 0x8b08 | memcmp (r0, r1, r2);
0x0002c814 subs fp, r0, 0 |
| if (fp != s1) {
0x0002c818 bne 0x2c8c8 | goto label_4;
| }
0x0002c81c ldr sl, [pc, 0x200] | sl = "ls_pkcs12_pbe";
0x0002c820 add r6, sp, 0x18 | r6 += var_18h;
0x0002c824 add sl, pc, sl | sl = pc + sl;
0x0002c828 mov r0, sl | r0 = sl;
0x0002c82c bl 0x858c | puts (r0);
0x0002c830 ldr r0, [pc, 0x1f0] | r0 = "ls_pkcs12_pbe";
0x0002c834 add r0, pc, r0 | r0 = pc + r0;
0x0002c838 bl 0x8298 | printf ("ls_pkcs12_pbe")
0x0002c83c mov r0, r8 | r0 = r8;
0x0002c840 mov r1, sb | r1 = sb;
0x0002c844 mov r2, r6 | r2 = r6;
0x0002c848 mov r8, 4 | r8 = 4;
0x0002c84c bl 0x8ea4 | fcn_00008ea4 ();
0x0002c850 mov r1, r7 | r1 = r7;
0x0002c854 str r6, [sp, 8] | var_8h = r6;
0x0002c858 str r5, [sp, 0xc] | var_ch = r5;
0x0002c85c str fp, [sp, 4] | var_4h = fp;
0x0002c860 mov r2, fp | r2 = fp;
0x0002c864 str r8, [sp] | *(sp) = r8;
0x0002c868 mov r3, 1 | r3 = 1;
0x0002c86c mov r0, r4 | r0 = r4;
0x0002c870 bl 0x9090 | fcn_00009090 ();
0x0002c874 subs r7, r0, 0 | r7 -= var_dch;
| if (r7 != var_dch) {
0x0002c878 bne 0x2c8c8 | goto label_4;
| }
0x0002c87c ldr r0, [pc, 0x1a8] | r0 = *(0x2ca28);
0x0002c880 add r0, pc, r0 | r0 = pc + r0;
0x0002c884 bl 0x8298 | printf (r0)
0x0002c888 str r5, [sp, 0xc] | var_ch = r5;
0x0002c88c str r6, [sp, 8] | var_8h = r6;
0x0002c890 str r7, [sp, 4] | var_4h = r7;
0x0002c894 str r8, [sp] | *(sp) = r8;
0x0002c898 mov r3, r7 | r3 = r7;
0x0002c89c mov r2, r7 | r2 = r7;
0x0002c8a0 mov r1, r7 | r1 = r7;
0x0002c8a4 mov r0, r4 | r0 = r4;
0x0002c8a8 bl 0x8b50 | fcn_00008b50 ();
0x0002c8ac subs r5, r0, 0 | r5 -= var_dch;
| if (r5 != var_dch) {
0x0002c8b0 bne 0x2c8c8 | goto label_4;
| }
0x0002c8b4 mov r0, sl | r0 = sl;
0x0002c8b8 bl 0x858c | puts (r0);
0x0002c8bc mov r0, 0xa | r0 = 0xa;
0x0002c8c0 bl 0x81d8 | putchar (r0);
0x0002c8c4 b 0x2c658 | goto label_0;
| }
| label_4:
0x0002c8c8 ldr r0, [pc, 0x160] | r0 = *(0x2ca2c);
0x0002c8cc mov r5, 1 | r5 = 1;
0x0002c8d0 add r0, pc, r0 | r0 = pc + r0;
0x0002c8d4 bl 0x858c | puts (r0);
0x0002c8d8 b 0x2c660 | goto label_1;
0x0002c8dc mov r0, r4 | r0 = r4;
0x0002c8e0 bl 0x83d0 | fcn_000083d0 ();
0x0002c8e4 subs r6, r0, 0 | r6 -= var_dch;
0x0002c8e8 bne 0x2c72c |
| }
0x0002c8ec ldr lr, [pc, 0x140] | lr = *(0x2ca30);
0x0002c8f0 add ip, sp, 0x2c |
0x0002c8f4 add lr, pc, lr | lr = pc + lr;
0x0002c8f8 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0002c8fc ldr r7, [pc, 0x134] | r7 = *(0x2ca34);
0x0002c900 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002c904 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x0002c908 add r7, pc, r7 | r7 = pc + r7;
0x0002c90c add r5, sp, 0x5c | r5 += var_5ch;
0x0002c910 add r8, sp, 0x2c | r8 += s2;
0x0002c914 mov sb, 0x18 | sb = 0x18;
0x0002c918 stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x0002c91c mov r2, r6 | r2 = r6;
0x0002c920 str r5, [sp, 8] | var_8h = r5;
0x0002c924 mov r1, r7 | r1 = r7;
0x0002c928 str r8, [sp, 4] | var_4h = r8;
0x0002c92c str sb, [sp] | *(sp) = sb;
0x0002c930 mov r3, r6 | r3 = r6;
0x0002c934 mov r0, r4 | r0 = r4;
0x0002c938 bl 0x8820 | fcn_00008820 ();
0x0002c93c subs r2, r0, 0 | r2 -= var_dch;
| if (r2 != var_dch) {
0x0002c940 bne 0x2c72c | goto label_2;
| }
0x0002c944 add r3, sp, 0x14 | r3 += var_14h;
0x0002c948 add r6, sp, 0x44 | r6 += s1;
0x0002c94c str r3, [sp] | *(sp) = r3;
0x0002c950 stmib sp, {r5, r6, sb} | __asm ("stmib sp, {r5, r6, sb}");
0x0002c954 mov r3, 1 | r3 = 1;
0x0002c958 mov r1, r7 | r1 = r7;
0x0002c95c mov r0, r4 | r0 = r4;
0x0002c960 bl 0x8394 | r0 = fcn_00008394 ();
0x0002c964 cmp r0, 0 |
| if (r0 != 0) {
0x0002c968 bne 0x2c72c | goto label_2;
| }
0x0002c96c mov r0, r6 | r0 = r6;
0x0002c970 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0002c974 mov r1, r8 | r1 = r8;
0x0002c978 bl 0x8b08 | memcmp (r0, r1, r2);
0x0002c97c subs sl, r0, 0 | sl -= s1;
| if (sl != s1) {
0x0002c980 bne 0x2c72c | goto label_2;
| }
0x0002c984 add r6, sp, 0x18 | r6 += var_18h;
0x0002c988 mov r0, r8 | r0 = r8;
0x0002c98c mov r1, sb | r1 = sb;
0x0002c990 mov r2, r6 | r2 = r6;
0x0002c994 mov r8, 4 | r8 = 4;
0x0002c998 bl 0x8ea4 | fcn_00008ea4 ();
0x0002c99c mov r3, 1 | r3 = 1;
0x0002c9a0 str r6, [sp, 8] | var_8h = r6;
0x0002c9a4 str r5, [sp, 0xc] | var_ch = r5;
0x0002c9a8 str sl, [sp, 4] | var_4h = sl;
0x0002c9ac mov r2, sl | r2 = sl;
0x0002c9b0 mov r1, r7 | r1 = r7;
0x0002c9b4 str r8, [sp] | *(sp) = r8;
0x0002c9b8 mov r0, r4 | r0 = r4;
0x0002c9bc bl 0x9090 | fcn_00009090 ();
0x0002c9c0 subs r3, r0, 0 | r3 -= var_dch;
| if (r3 != var_dch) {
0x0002c9c4 bne 0x2c72c | goto label_2;
| }
0x0002c9c8 str r5, [sp, 0xc] | var_ch = r5;
0x0002c9cc stmib sp, {r3, r6} | __asm ("stmib sp, {r3, r6}");
0x0002c9d0 str r8, [sp] | *(sp) = r8;
0x0002c9d4 mov r2, r3 | r2 = r3;
0x0002c9d8 mov r1, r3 | r1 = r3;
0x0002c9dc mov r0, r4 | r0 = r4;
0x0002c9e0 bl 0x8b50 | fcn_00008b50 ();
0x0002c9e4 subs r5, r0, 0 | r5 -= var_dch;
| if (r5 != var_dch) {
0x0002c9e8 bne 0x2c72c | goto label_2;
| }
0x0002c9ec b 0x2c658 | goto label_0;
| }
r2dec has crashed (info: /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x2e568).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
r2dec has crashed (info: /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x2f5b8).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
r2dec has crashed (info: /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x311b4).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x3157c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_timing_self_test () | void mbedtls_timing_self_test (int32_t arg1) {
| int32_t var_0h;
| int32_t var_20h;
| int32_t var_4ch;
| r0 = arg1;
0x0003157c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00031580 ldr r4, [pc, 0x2a0] | r4 = *(0x31824);
0x00031584 subs r7, r0, 0 | r7 = r0 - 0;
0x00031588 sub sp, sp, 0x4c |
0x0003158c add r4, pc, r4 | r4 = pc + r4;
| if (r7 != r0) {
0x00031590 bne 0x316e8 | goto label_8;
| }
| label_2:
0x00031594 ldr r3, [pc, 0x290] | r3 = *(0x31828);
0x00031598 ldr r8, [pc, 0x290] | r8 = *(0x3182c);
0x0003159c ldr r4, [r4, r3] | r4 = *((r4 + r3));
0x000315a0 mov r6, 0x320 | r6 = 0x320;
0x000315a4 mov r5, 1 | r5 = 1;
0x000315a8 mov sb, sp | sb = sp;
| label_0:
0x000315ac mov r1, 1 | r1 = 1;
0x000315b0 mov r0, sb | r0 = sb;
0x000315b4 bl 0x8730 | fcn_00008730 ();
0x000315b8 mov r0, r5 | r0 = r5;
0x000315bc bl 0x8ab4 | fcn_00008ab4 ();
| do {
0x000315c0 ldr r3, [r4] | r3 = *(r4);
0x000315c4 cmp r3, 0 |
0x000315c8 beq 0x315c0 |
| } while (r3 == 0);
0x000315cc mov r1, 0 | r1 = 0;
0x000315d0 mov r0, sb | r0 = sb;
0x000315d4 bl 0x8730 | r0 = fcn_00008730 ();
0x000315d8 cmp r0, r6 |
| if (r0 <= r6) {
0x000315dc blo 0x316d0 | goto label_9;
| }
0x000315e0 cmp r8, r0 |
| if (r8 <= r0) {
0x000315e4 blo 0x316d0 | goto label_9;
| }
0x000315e8 add r5, r5, 1 | r5++;
0x000315ec cmp r5, 4 |
0x000315f0 add r8, r8, 0x4b0 | r8 += 0x4b0;
0x000315f4 add r6, r6, 0x320 | r6 += 0x320;
| if (r5 != 4) {
0x000315f8 bne 0x315ac | goto label_0;
| }
0x000315fc cmp r7, 0 |
| if (r7 != 0) {
0x00031600 bne 0x31720 | goto label_10;
| }
| label_3:
0x00031604 mov r6, 0xc8 | r6 = 0xc8;
0x00031608 add r5, sp, 0x20 | r5 += var_20h;
| label_1:
0x0003160c lsr sb, r6, 3 | sb = r6 >> 3;
0x00031610 sub fp, r6, sb |
0x00031614 lsr sl, r6, 2 | sl = r6 >> 2;
0x00031618 mov r4, 0xc8 | r4 = 0xc8;
| do {
0x0003161c add r2, r6, r4 | r2 = r6 + r4;
0x00031620 mov r1, r6 | r1 = r6;
0x00031624 mov r0, r5 | r0 = r5;
0x00031628 bl 0x8424 | fcn_00008424 ();
0x0003162c mov r0, fp | r0 = fp;
0x00031630 bl 0x31484 | busy_msleep ();
0x00031634 mov r0, r5 | r0 = r5;
0x00031638 bl 0x9174 | fcn_00009174 ();
0x0003163c subs r8, r0, 0 | r8 -= var_20h;
0x00031640 mov r0, sl | r0 = sl;
| if (r8 != var_20h) {
0x00031644 bne 0x316d0 | goto label_9;
| }
0x00031648 bl 0x31484 | busy_msleep ();
0x0003164c mov r0, r5 | r0 = r5;
0x00031650 bl 0x9174 | fcn_00009174 ();
0x00031654 sub r3, r4, sb | r3 = r4 - sb;
0x00031658 cmp r0, 1 |
0x0003165c sub r0, r3, r4, lsr 3 | r0 = r3 - (r4 >> 3);
| if (r0 != 1) {
0x00031660 bne 0x316d0 | goto label_9;
| }
0x00031664 bl 0x31484 | busy_msleep ();
0x00031668 mov r0, r5 | r0 = r5;
0x0003166c bl 0x9174 | r0 = fcn_00009174 ();
0x00031670 cmp r0, 1 |
0x00031674 lsr r0, r4, 2 | r0 = r4 >> 2;
0x00031678 add r4, r4, 0xc8 | r4 += 0xc8;
| if (r0 != 1) {
0x0003167c bne 0x316d0 | goto label_9;
| }
0x00031680 bl 0x31484 | busy_msleep ();
0x00031684 mov r0, r5 | r0 = r5;
0x00031688 bl 0x9174 | r0 = fcn_00009174 ();
0x0003168c cmp r0, 2 |
| if (r0 != 2) {
0x00031690 bne 0x316d0 | goto label_9;
| }
0x00031694 cmp r4, 0x258 |
0x00031698 bne 0x3161c |
| } while (r4 != 0x258);
0x0003169c add r6, r6, 0xc8 | r6 += 0xc8;
0x000316a0 cmp r6, 0x258 |
| if (r6 != 0x258) {
0x000316a4 bne 0x3160c | goto label_1;
| }
0x000316a8 mov r2, r8 | r2 = r8;
0x000316ac mov r1, r8 | r1 = r8;
0x000316b0 mov r0, r5 | r0 = r5;
0x000316b4 bl 0x8424 | fcn_00008424 ();
0x000316b8 mov r0, 0xc8 | r0 = 0xc8;
0x000316bc bl 0x31484 | busy_msleep ();
0x000316c0 mov r0, r5 | r0 = r5;
0x000316c4 bl 0x9174 | r0 = fcn_00009174 ();
0x000316c8 cmn r0, 1 |
| if (r0 != 1) {
0x000316cc beq 0x3173c |
| label_9:
0x000316d0 cmp r7, 0 |
| if (r7 != 0) {
0x000316d4 moveq r8, 1 | r8 = 1;
| }
| if (r7 == 0) {
0x000316d8 bne 0x31704 |
| label_5:
0x000316dc mov r0, r8 | r0 = r8;
0x000316e0 add sp, sp, 0x4c |
0x000316e4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x000316e8 ldr r0, [pc, 0x144] | r0 = *(0x31830);
0x000316ec add r0, pc, r0 | r0 = pc + r0;
0x000316f0 bl 0x858c | puts (r0);
0x000316f4 ldr r0, [pc, 0x13c] | r0 = *(0x31834);
0x000316f8 add r0, pc, r0 | r0 = pc + r0;
0x000316fc bl 0x8298 | printf (r0)
0x00031700 b 0x31594 | goto label_2;
| }
0x00031704 ldr r0, [pc, 0x130] | r0 = *(0x31838);
0x00031708 mov r8, 1 | r8 = 1;
0x0003170c add r0, pc, r0 | r0 = pc + r0;
0x00031710 bl 0x858c | puts (r0);
0x00031714 mov r0, r8 | r0 = r8;
0x00031718 add sp, sp, 0x4c |
0x0003171c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x00031720 ldr r0, [pc, 0x118] | r0 = "write_key_der";
0x00031724 add r0, pc, r0 | r0 = pc + r0;
0x00031728 bl 0x858c | puts (r0);
0x0003172c ldr r0, [pc, 0x110] | r0 = *(0x31840);
0x00031730 add r0, pc, r0 | r0 = pc + r0;
0x00031734 bl 0x8298 | printf (r0)
0x00031738 b 0x31604 | goto label_3;
| }
0x0003173c cmp r7, 0 |
| if (r7 != 0) {
0x00031740 bne 0x317cc | goto label_11;
| }
| label_4:
0x00031744 ldr sb, [pc, 0xfc] | sb = *(0x00031848);
0x00031748 mov sl, 2 | sl = 2;
| label_7:
0x0003174c bl 0x8718 | fcn_00008718 ();
0x00031750 mov r4, 2 | r4 = 2;
0x00031754 mov r5, r0 | r5 = r0;
0x00031758 mov r0, 1 | r0 = 1;
0x0003175c bl 0x31484 | busy_msleep ();
0x00031760 bl 0x8718 | r0 = fcn_00008718 ();
0x00031764 sub r0, r0, r5 | r0 -= r5;
0x00031768 umull r2, r3, r0, sb | r2:r3 = r0 * sb;
0x0003176c lsr r5, r3, r4 | r5 = r3 >> r4;
0x00031770 sub r6, r0, r5 | r6 = r0 - r5;
0x00031774 add r5, r5, r0 | r5 += r0;
| do {
0x00031778 bl 0x8718 | r0 = fcn_00008718 ();
0x0003177c mov fp, r0 |
0x00031780 mov r0, r4 | r0 = r4;
0x00031784 bl 0x31484 | busy_msleep ();
0x00031788 bl 0x8718 | fcn_00008718 ();
0x0003178c mov r1, r4 | r1 = r4;
0x00031790 add r4, r4, 1 | r4++;
0x00031794 sub r0, r0, fp | r0 -= fp;
0x00031798 bl 0x31d10 | r0 = loc_udivsi3_skip_div0_test (r0, r1);
0x0003179c cmp r0, r6 |
| if (r0 <= r6) {
0x000317a0 blo 0x31800 | goto label_12;
| }
0x000317a4 cmp r0, r5 |
| if (r0 > r5) {
0x000317a8 bhi 0x31800 | goto label_12;
| }
0x000317ac cmp r4, 5 |
0x000317b0 bne 0x31778 |
| } while (r4 != 5);
0x000317b4 cmp r7, 0 |
0x000317b8 bne 0x317e8 |
| while (r7 == 0) {
0x000317bc mov r8, r7 | r8 = r7;
0x000317c0 mov r0, r8 | r0 = r8;
0x000317c4 add sp, sp, 0x4c |
0x000317c8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x000317cc ldr r0, [pc, 0x78] | r0 = *(0x31848);
0x000317d0 add r0, pc, r0 | r0 = pc + r0;
0x000317d4 bl 0x858c | puts (r0);
0x000317d8 ldr r0, [pc, 0x70] | r0 = *(0x3184c);
0x000317dc add r0, pc, r0 | r0 = pc + r0;
0x000317e0 bl 0x8298 | printf (r0)
0x000317e4 b 0x31744 | goto label_4;
0x000317e8 ldr r0, [pc, 0x64] | r0 = *(0x31850);
0x000317ec add r0, pc, r0 | r0 = pc + r0;
0x000317f0 bl 0x858c | puts (r0);
| label_6:
0x000317f4 mov r0, 0xa | r0 = 0xa;
0x000317f8 bl 0x81d8 | putchar (r0);
0x000317fc b 0x316dc | goto label_5;
| label_12:
0x00031800 cmp sl, 1 |
| if (sl != 1) {
0x00031804 bne 0x31820 | goto label_13;
| }
0x00031808 cmp r7, 0 |
0x0003180c beq 0x317bc |
| }
0x00031810 ldr r0, [pc, 0x40] | r0 = *(0x31854);
0x00031814 add r0, pc, r0 | r0 = pc + r0;
0x00031818 bl 0x858c | puts (r0);
0x0003181c b 0x317f4 | goto label_6;
| label_13:
0x00031820 mov sl, 1 | sl = 1;
0x00031824 b 0x3174c | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x31bf8 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_xtea_self_test () | void mbedtls_xtea_self_test (int32_t arg1) {
| void * s1;
| int32_t var_8h;
| int32_t var_1ch;
| r0 = arg1;
0x00031bf8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00031bfc ldr sb, [pc, 0xfc] | sb = *(0x31cfc);
0x00031c00 sub sp, sp, 0x1c |
0x00031c04 add r7, sp, 8 | r7 += var_8h;
0x00031c08 mov r8, r0 | r8 = r0;
0x00031c0c mov r0, r7 | r0 = r7;
0x00031c10 bl 0x8b68 | fcn_00008b68 ();
0x00031c14 ldr fp, [pc, 0xe8] | fp = *(0x31d00);
0x00031c18 add sb, pc, sb | sb = pc + sb;
0x00031c1c add fp, pc, fp |
0x00031c20 add sl, sb, 0x30 | sl = sb + 0x30;
0x00031c24 mov r4, 0 | r4 = 0;
0x00031c28 mov r5, sp | r5 = sp;
| do {
0x00031c2c cmp r8, 0 |
0x00031c30 lsl r6, r4, 3 | r6 = r4 << 3;
| if (r8 != 0) {
0x00031c34 bne 0x31cb4 | goto label_3;
| }
| label_0:
0x00031c38 add r3, sb, r6 | r3 = sb + r6;
0x00031c3c ldm r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00031c40 stm r5, {r0, r1} | *(r5) = r0;
| *((r5 + 4)) = r1;
0x00031c44 add r1, sl, r4, lsl 4 | r1 = sl + (r4 << 4);
0x00031c48 mov r0, r7 | r0 = r7;
0x00031c4c bl 0x8ae4 | fcn_00008ae4 ();
0x00031c50 mov r3, r5 | r3 = r5;
0x00031c54 mov r2, r5 | r2 = r5;
0x00031c58 mov r1, 1 | r1 = 1;
0x00031c5c mov r0, r7 | r0 = r7;
0x00031c60 bl 0x8d30 | fcn_00008d30 ();
0x00031c64 add r1, sb, 0x90 | r1 = sb + 0x90;
0x00031c68 add r1, r1, r6 | r1 += r6;
0x00031c6c mov r2, 8 | r2 = 8;
0x00031c70 mov r0, r5 | r0 = r5;
0x00031c74 bl 0x8b08 | memcmp (r0, r1, r2);
0x00031c78 add r4, r4, 1 | r4++;
0x00031c7c subs r6, r0, 0 | r6 -= s1;
| if (r6 != s1) {
0x00031c80 bne 0x31ce0 | goto label_4;
| }
0x00031c84 cmp r8, 0 |
| if (r8 != 0) {
0x00031c88 bne 0x31cc4 | goto label_5;
| }
| label_1:
0x00031c8c cmp r4, 6 |
0x00031c90 bne 0x31c2c |
| } while (r4 != 6);
0x00031c94 cmp r8, 0 |
| if (r8 != 0) {
0x00031c98 moveq r6, r8 | r6 = r8;
| }
0x00031c9c bne 0x31cd4 |
| while (1) {
| label_2:
0x00031ca0 mov r0, r7 | r0 = r7;
0x00031ca4 bl 0x8fdc | fcn_00008fdc ();
0x00031ca8 mov r0, r6 | r0 = r6;
0x00031cac add sp, sp, 0x1c |
0x00031cb0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00031cb4 add r1, r4, 1 | r1 = r4 + 1;
0x00031cb8 mov r0, fp | r0 = fp;
0x00031cbc bl 0x8298 | printf (r0, r1)
0x00031cc0 b 0x31c38 | goto label_0;
| label_5:
0x00031cc4 ldr r0, [pc, 0x3c] | r0 = *(0x31d04);
0x00031cc8 add r0, pc, r0 | r0 = pc + r0;
0x00031ccc bl 0x858c | puts (r0);
0x00031cd0 b 0x31c8c | goto label_1;
0x00031cd4 mov r0, 0xa | r0 = 0xa;
0x00031cd8 bl 0x81d8 | putchar (r0);
0x00031cdc b 0x31ca0 |
| }
| label_4:
0x00031ce0 cmp r8, 0 |
| if (r8 == 0) {
0x00031ce4 moveq r6, 1 | r6 = 1;
| goto label_6;
| }
| if (r8 == 0) {
| label_6:
0x00031ce8 beq 0x31ca0 | goto label_2;
| }
0x00031cec ldr r0, [pc, 0x18] | r0 = "_";
0x00031cf0 mov r6, 1 | r6 = 1;
0x00031cf4 add r0, pc, r0 | r0 = pc + r0;
0x00031cf8 bl 0x858c | puts (r0);
0x00031cfc b 0x31ca0 | goto label_2;
| }
[*] Function printf used 48 times libmbedcrypto.so.2.2.1