[*] Binary protection state of sqlcipher
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of sqlcipher
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/sqlcipher @ 0x32524 */
| #include <stdint.h>
|
; (fcn) fcn.00032524 () | void fcn_00032524 (int16_t arg1) {
| int16_t var_0h;
| r0 = arg1;
| if (? != ?) {
0x00032524 ldreq r8, [fp], r3, lsl 23 | r8 = *(fp);
| fp += 23;
| }
| if (? < ?) {
0x00032528 bpl 0x3256c |
0x0003252a push {r4, r5, lr} |
0x0003252c mov r1, r0 | r1 = r0;
0x0003252e ldrd r4, r3, [r0, 0x14] | __asm ("ldrd r4, r3, [r0, 0x14]");
0x00032532 sub sp, 0xc |
0x00032534 ldr.w r2, [r4, 0xa8] | r2 = *((r4 + 0xa8));
0x00032538 add.w ip, r3, -1 |
0x0003253c ldr.w r3, [r4, 0x80] | r3 = *((r4 + 0x80));
0x00032540 ldr.w r5, [r4, 0xac] | r5 = *((r4 + 0xac));
0x00032544 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x00032546 subs r3, 1 | r3--;
0x00032548 str.w r3, [r4, 0x80] | __asm ("str.w r3, [r4, 0x80]");
0x0003254c umull r2, r3, r2, ip | r2:r3 = r2 * ip;
0x00032550 mla r3, ip, r5, r3 | __asm ("mla r3, ip, r5, r3");
0x00032554 ldr.w r5, [r4, 0x90] | r5 = *((r4 + 0x90));
0x00032558 str r5, [r1, 0x10] | *((r1 + 0x10)) = r5;
0x0003255a str.w r1, [r4, 0x90] | __asm ("str.w r1, [r4, 0x90]");
0x0003255e ldr r4, [r1, 4] | r4 = *((r1 + 4));
0x00032560 ldr r1, [r0] | r1 = *(r0);
0x00032562 str r4, [sp] | *(sp) = r4;
0x00032564 ldr r1, [r1, 0x48] | r1 = *((r1 + 0x48));
0x00032566 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00032568 add sp, 0xc |
0x0003256a pop {r4, r5, pc} |
| }
0x0003256c b.w 0x2a55c | return void (*0x2a55c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/sqlcipher @ 0x7ba2c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007ba2c () | void fcn_0007ba2c (int16_t arg_c8h, arithmetic arg_cch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_1h;
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| char * s1;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| arithmetic x;
| int16_t var_38h;
| int16_t var_48h;
| int16_t var_49h;
| int16_t var_4ch;
| int16_t var_6ch;
| int16_t var_78h;
| int16_t var_9ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0007ba2c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007ba30 mov r8, r2 | r8 = r2;
0x0007ba32 sub sp, 0xa4 |
0x0007ba34 ldr.w r2, [pc, 0x5d8] |
0x0007ba38 mov sb, r0 | sb = r0;
0x0007ba3a mov r7, r1 | r7 = r1;
0x0007ba3c str r3, [sp, 0x10] | var_10h = r3;
0x0007ba3e ldr.w r3, [pc, 0x5d4] | r3 = *(0x7c016);
0x0007ba42 add r2, pc | r2 = 0xf7a56;
0x0007ba44 ldr r3, [r2, r3] |
0x0007ba46 ldr r3, [r3] | r3 = *(0xf7a56);
0x0007ba48 str r3, [sp, 0x9c] | var_9ch = r3;
0x0007ba4a mov.w r3, 0 | r3 = 0;
| if (r1 != 0) {
0x0007ba4e cbz r1, 0x7ba68 |
0x0007ba50 ldr.w r1, [pc, 0x5c4] |
0x0007ba54 mov r0, r7 | r0 = r7;
0x0007ba56 add r1, pc | r1 = 0xf7a72;
0x0007ba58 blx 0x6634 | fcn_00006634 ();
0x0007ba5c ldrb r3, [r7] | r3 = *(r7);
0x0007ba5e mov r6, r0 | r6 = r0;
| if (r3 != 0) {
0x0007ba60 cbnz r3, 0x7ba8a | goto label_33;
| }
0x0007ba62 cmp r0, 0 |
| if (r0 == 0) {
0x0007ba64 beq.w 0x7bbc6 | goto label_34;
| }
| }
0x0007ba68 ldrb.w r3, [r8, 0x56] | r3 = *((r8 + 0x56));
0x0007ba6c cmp r3, 2 |
| if (r3 == 2) {
0x0007ba6e beq.w 0x7bbc6 | goto label_34;
| }
0x0007ba72 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007ba74 ands r3, r3, 0x80 | r3 &= 0x80;
0x0007ba76 lsls r0, r0, 0xe | r0 <<= 0xe;
0x0007ba78 str r3, [sp, 0xc] | var_ch = r3;
| if (r0 != r0) {
0x0007ba7a bne.w 0x7bbc6 | goto label_34;
| }
0x0007ba7e ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007ba80 lsls r6, r3, 0x17 | r6 = r3 << 0x17;
| if (r6 >= r3) {
0x0007ba82 bpl.w 0x7beb0 | goto label_35;
| }
0x0007ba86 movs r6, 1 | r6 = 1;
0x0007ba88 b 0x7baa6 | goto label_36;
| label_33:
0x0007ba8a cmp r0, 0 |
| if (r0 != 0) {
0x0007ba8c bne.w 0x7be34 | goto label_37;
| }
| label_0:
0x0007ba90 ldr r3, [sp, 0xc8] | r3 = *(arg_c8h);
0x0007ba92 orr r3, r3, 2 | r3 |= 2;
0x0007ba96 str r3, [sp, 0xc8] | *(arg_c8h) = r3;
0x0007ba98 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007ba9a tst.w r3, 0x100 |
0x0007ba9e mov.w r3, 1 | r3 = 1;
0x0007baa2 str r3, [sp, 0xc] | var_ch = r3;
| if ((r3 & 0x100) != 0) {
0x0007baa4 beq 0x7bab2 |
| label_36:
0x0007baa6 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007baa8 bic r3, r3, 0x300 | r3 = BIT_MASK (r3, 0x300);
0x0007baac orr r3, r3, 0x200 | r3 |= 0x200;
0x0007bab0 str r3, [sp, 0xcc] | *(arg_cch) = r3;
| }
0x0007bab2 movs r0, 0x30 | r0 = 0x30;
0x0007bab4 movs r1, 0 | r1 = 0;
0x0007bab6 bl 0x28c3c | r0 = fcn_00028c3c (r0);
0x0007baba mov r4, r0 | r4 = r0;
0x0007babc cmp r0, 0 |
| if (r0 == 0) {
0x0007babe beq.w 0x7bf08 | goto label_38;
| }
0x0007bac2 movs r2, 0x2c | r2 = 0x2c;
0x0007bac4 movs r1, 0 | r1 = 0;
0x0007bac6 adds r0, 4 | r0 += 4;
0x0007bac8 blx 0x62ec | fcn_000062ec ();
0x0007bacc movs r3, 1 | r3 = 1;
0x0007bace str.w r8, [r4] | __asm ("str.w r8, [r4]");
0x0007bad2 str r4, [r4, 0x20] | *((r4 + 0x20)) = r4;
0x0007bad4 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x0007bad6 cmp r6, 0 |
| if (r6 != 0) {
0x0007bad8 bne 0x7bbca | goto label_39;
| }
0x0007bada ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x0007badc cbz r3, 0x7bae4 |
0x0007bade ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007bae0 lsls r5, r3, 0x19 | r5 = r3 << 0x19;
| if (r5 >= r3) {
0x0007bae2 bpl 0x7bbcc | goto label_2;
| }
| }
0x0007bae4 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007bae6 ands r6, r3, 0x20000 | r6 = r3 & 0x20000;
| if (r6 == r3) {
0x0007baea beq 0x7bbcc | goto label_2;
| }
0x0007baec movs r5, 1 | r5 = 1;
| if (r7 != 0) {
0x0007baee cbz r7, 0x7bafc |
| label_1:
0x0007baf0 mov r0, r7 | r0 = r7;
0x0007baf2 blx 0x65dc | r0 = strcmp (r0, r1);
0x0007baf6 bic r5, r0, 0xc0000000 | r5 = BIT_MASK (r0, 0xc0000000);
0x0007bafa adds r5, 1 | r5++;
| }
0x0007bafc ldr.w r6, [sb, 8] | r6 = *((sb + 8));
0x0007bb00 adds r6, 1 | r6++;
0x0007bb02 cmp r6, r5 |
0x0007bb04 mov r0, r6 | r0 = r6;
0x0007bb06 it lt |
| if (r6 >= r5) {
0x0007bb08 movlt r0, r5 | r0 = r5;
| }
0x0007bb0a asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0007bb0c bl 0x28c3c | fcn_00028c3c (r0);
0x0007bb10 movs r3, 1 | r3 = 1;
0x0007bb12 mov sl, r0 | sl = r0;
0x0007bb14 strb r3, [r4, 9] | *((r4 + 9)) = r3;
0x0007bb16 cmp r0, 0 |
| if (r0 == 0) {
0x0007bb18 beq.w 0x7bf02 | goto label_40;
| }
0x0007bb1c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007bb1e cmp r3, 0 |
| if (r3 != 0) {
0x0007bb20 bne.w 0x7bed4 | goto label_41;
| }
0x0007bb24 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007bb26 mov r2, r6 | r2 = r6;
0x0007bb28 mov r1, r7 | r1 = r7;
0x0007bb2a strb r3, [r0] | *(r0) = r3;
0x0007bb2c mov r3, r0 | r3 = r0;
0x0007bb2e ldr.w r5, [sb, 0x24] | r5 = *((sb + 0x24));
0x0007bb30 str r4, [r4, r0] | *((r4 + r0)) = r4;
0x0007bb32 mov r0, sb | r0 = sb;
0x0007bb34 blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0007bb36 bics r3, r0, 0x200 | __asm ("bics r3, r0, 0x200");
0x0007bb3a mov fp, r0 |
| if (r3 != 0) {
0x0007bb3c bne.w 0x7c40e | goto label_42;
| }
| label_3:
0x0007bb40 ldr.w r5, [pc, 0x4d8] |
0x0007bb44 add r5, pc | r5 = 0xf7b64;
0x0007bb46 ldrb r6, [r5, 4] | r6 = *((r5 + 4));
0x0007bb48 cmp r6, 0 |
| if (r6 == 0) {
0x0007bb4a beq.w 0x7c322 | goto label_43;
| }
0x0007bb4e ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x0007bb50 movs r0, 4 | r0 = 4;
0x0007bb52 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0007bb54 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x0007bb56 cbz r0, 0x7bb5c |
0x0007bb58 ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x0007bb5a blx r3 | uint32_t (*r3)(uint32_t) (r3);
| }
0x0007bb5c ldr.w r5, [pc, 0x4c0] |
0x0007bb60 add r5, pc | r5 = 0xf7b84;
0x0007bb62 ldrb r3, [r5, 4] | r3 = *((r5 + 4));
0x0007bb64 cmp r3, 0 |
| if (r3 == 0) {
0x0007bb66 beq.w 0x7c322 | goto label_43;
| }
0x0007bb6a ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x0007bb6c movs r0, 2 | r0 = 2;
0x0007bb6e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0007bb70 mov fp, r0 |
0x0007bb72 cmp r0, 0 |
| if (r0 == 0) {
0x0007bb74 beq.w 0x7c182 | goto label_44;
| }
0x0007bb78 ldr r2, [r5, 0x50] | r2 = *((r5 + 0x50));
0x0007bb7a blx r2 | uint32_t (*r2)(uint32_t) (r2);
0x0007bb7c ldr.w r2, [pc, 0x4a4] |
0x0007bb80 add r2, pc | r2 = 0xf7ba8;
0x0007bb82 ldr.w r3, [r2, 0x520] | r3 = *(0xf80c8);
0x0007bb84 adds r5, 0x20 | r5 += 0x20;
0x0007bb86 str r3, [sp, 8] | var_8h = r3;
| if (r3 == 0) {
0x0007bb88 cbz r3, 0x7bbb2 | goto label_45;
| }
| label_10:
0x0007bb8a ldr r5, [sp, 8] | r5 = var_8h;
0x0007bb8c str r7, [sp, 8] | var_8h = r7;
| do {
| label_18:
0x0007bb8e ldr r7, [r5] | r7 = *(r5);
0x0007bb90 mov r0, sl | r0 = sl;
0x0007bb92 ldr.w r1, [r7, 0xb8] | r1 = *((r7 + 0xb8));
0x0007bb96 blx 0x6634 | r0 = fcn_00006634 ();
| if (r0 == 0) {
0x0007bb9a cbnz r0, 0x7bba4 |
0x0007bb9c ldr r3, [r7] | r3 = *(r7);
0x0007bb9e cmp sb, r3 |
| if (sb == r3) {
0x0007bba0 beq.w 0x7c064 | goto label_46;
| }
| }
0x0007bba4 ldr r5, [r5, 0x48] | r5 = *((r5 + 0x48));
0x0007bba6 cmp r5, 0 |
0x0007bba8 bne 0x7bb8e |
| } while (r5 != 0);
0x0007bbaa ldr r7, [sp, 8] | r7 = var_8h;
0x0007bbac cmp.w fp, 0 |
| if (fp != 0) {
0x0007bbb0 beq 0x7bbbe |
| label_45:
0x0007bbb2 ldr.w r3, [pc, 0x474] |
0x0007bbb6 mov r0, fp | r0 = fp;
0x0007bbb8 add r3, pc |
0x0007bbba ldr r3, [r3, 0x58] | r3 = *(0xf7c3e);
0x0007bbbc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
| label_11:
0x0007bbbe mov r0, sl | r0 = sl;
0x0007bbc0 bl 0x26dbc | fcn_00026dbc (r0);
0x0007bbc4 b 0x7bbcc | goto label_2;
| label_34:
0x0007bbc6 movs r6, 1 | r6 = 1;
0x0007bbc8 b 0x7ba90 | goto label_0;
| label_39:
0x0007bbca movs r6, 0 | r6 = 0;
| label_2:
0x0007bbcc movs r0, 0x5c | r0 = 0x5c;
0x0007bbce movs r1, 0 | r1 = 0;
0x0007bbd0 bl 0x28c3c | fcn_00028c3c (r0);
0x0007bbd4 str r0, [sp, 8] | var_8h = r0;
0x0007bbd6 cmp r0, 0 |
| if (r0 == 0) {
0x0007bbd8 beq.w 0x7be6c | goto label_47;
| }
0x0007bbdc movs r2, 0x5c | r2 = 0x5c;
0x0007bbde movs r1, 0 | r1 = 0;
0x0007bbe0 blx 0x62ec | fcn_000062ec ();
0x0007bbe4 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0007bbe8 mov.w r2, 0x1000 | r2 = 0x1000;
0x0007bbec str r2, [sp, 0x30] | var_30h = r2;
0x0007bbee cmp r3, 0x40 |
0x0007bbf0 mov r2, r3 | r2 = r3;
0x0007bbf2 it lt |
| if (r3 >= 0x40) {
0x0007bbf4 movlt r2, 0x40 | r2 = 0x40;
| }
0x0007bbf6 adds r2, 7 | r2 += 7;
0x0007bbf8 bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x0007bbfc str r2, [sp, 0x20] | var_20h = r2;
0x0007bbfe ldr r2, [sp, 0xc8] | r2 = *(arg_c8h);
0x0007bc00 ands fp, r2, 2 |
| if (fp == r2) {
0x0007bc04 beq.w 0x7bede | goto label_48;
| }
0x0007bc08 cmp r7, 0 |
| if (r7 == 0) {
0x0007bc0a beq.w 0x7bfd0 | goto label_49;
| }
0x0007bc0e ldrb r2, [r7] | r2 = *(r7);
0x0007bc10 cmp r2, 0 |
| if (r2 != 0) {
0x0007bc12 bne.w 0x7c41c | goto label_50;
| }
0x0007bc16 mov r0, r2 | r0 = r2;
0x0007bc18 str r2, [sp, 0x14] | var_14h = r2;
0x0007bc1a mov fp, r0 |
0x0007bc1c mov.w r2, 0x14a | r2 = 0x14a;
0x0007bc20 movs r1, 1 | r1 = 1;
0x0007bc22 str r7, [sp, 0x24] | var_24h = r7;
0x0007bc24 str r1, [sp, 0x1c] | var_1ch = r1;
0x0007bc26 str r1, [sp, 0x28] | var_28h = r1;
0x0007bc28 str r0, [sp, 0x2c] | var_2ch = r0;
0x0007bc2a str r0, [sp, 0x18] | s1 = r0;
| label_4:
0x0007bc2c ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0007bc2e adds r3, 7 | r3 += 7;
0x0007bc30 ldr r5, [sp, 0x20] | r5 = var_20h;
0x0007bc32 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0007bc36 add r2, r1 | r2 += r1;
0x0007bc38 movs r1, 0 | r1 = 0;
0x0007bc3a add.w r2, r2, r5, lsl 1 | r2 += (r5 << 1);
0x0007bc3e add r2, r3 | r2 += r3;
0x0007bc40 mov r0, r2 | r0 = r2;
0x0007bc42 str r2, [sp, 0x20] | var_20h = r2;
0x0007bc44 bl 0x28c3c | r0 = fcn_00028c3c (r0);
0x0007bc48 mov sl, r0 | sl = r0;
0x0007bc4a cmp r0, 0 |
| if (r0 == 0) {
0x0007bc4c beq.w 0x7c172 | goto label_51;
| }
0x0007bc50 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0007bc52 movs r1, 0 | r1 = 0;
0x0007bc54 blx 0x62ec | fcn_000062ec ();
0x0007bc58 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0007bc5c add.w r1, sl, 0x100 | r1 = sl + 0x100;
0x0007bc60 str.w r1, [sl, 0xf4] | __asm ("str.w r1, [sl, 0xf4]");
0x0007bc64 adds r2, r3, 7 | r2 = r3 + 7;
0x0007bc66 add.w r3, sl, 0x130 | r3 = sl + 0x130;
0x0007bc6a bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x0007bc6e str.w r3, [sl, 0x40] | __asm ("str.w r3, [sl, 0x40]");
0x0007bc72 add r2, r3 | r2 += r3;
0x0007bc74 str.w r2, [sl, 0x48] | __asm ("str.w r2, [sl, 0x48]");
0x0007bc78 add r2, r5 | r2 += r5;
0x0007bc7a adds r3, r2, r5 | r3 = r2 + r5;
0x0007bc7c str.w r2, [sl, 0x44] | __asm ("str.w r2, [sl, 0x44]");
0x0007bc80 adds r3, 8 | r3 += 8;
0x0007bc82 str.w sl, [r2, r5] | __asm ("str.w sl, [r2, r5]");
0x0007bc86 str.w r3, [sl, 0xb8] | __asm ("str.w r3, [sl, 0xb8]");
0x0007bc8a cmp.w fp, 0 |
| if (fp != 0) {
0x0007bc8e bne.w 0x7c33c | goto label_52;
| }
0x0007bc92 str.w fp, [sl, 0xbc] | __asm ("str.w fp, [sl, 0xbc]");
0x0007bc96 str.w fp, [sl, 0xfc] | __asm ("str.w fp, [sl, 0xfc]");
| label_19:
0x0007bc9a ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007bc9c str.w sb, [sl] | __asm ("str.w sb, [sl]");
0x0007bca0 str.w r3, [sl, 0x98] | __asm ("str.w r3, [sl, 0x98]");
0x0007bca4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007bca6 cmp r3, 0 |
| if (r3 == 0) {
0x0007bca8 beq.w 0x7c3b0 | goto label_53;
| }
0x0007bcac ldrb r3, [r3] | r3 = *(r3);
0x0007bcae cmp r3, 0 |
| if (r3 != 0) {
0x0007bcb0 bne.w 0x7c2ac | goto label_54;
| }
0x0007bcb4 ldr r2, [sp, 0xcc] | r2 = *(arg_cch);
0x0007bcb6 str r3, [sp, 0x18] | s1 = r3;
0x0007bcb8 and r2, r2, 1 | r2 &= 1;
0x0007bcbc mov r5, r2 | r5 = r2;
| label_17:
0x0007bcbe movs r3, 1 | r3 = 1;
0x0007bcc0 strb.w r3, [sl, 0xd] | *((sl + 0xd)) = r3;
0x0007bcc4 str r3, [sp, 0x14] | var_14h = r3;
0x0007bcc6 movw r3, 0x401 | r3 = 0x401;
0x0007bcca strh.w r3, [sl, 0x11] | *((sl + 0x11)) = r3;
| label_24:
0x0007bcce mov.w r2, -1 | r2 = -1;
0x0007bcd2 add r1, sp, 0x30 | r1 += var_30h;
0x0007bcd4 mov r0, sl | r0 = sl;
0x0007bcd6 bl 0x33fa0 | r0 = fcn_00033fa0 (r0, r1, r2);
0x0007bcda mov fp, r0 |
0x0007bcdc cmp r0, 0 |
| if (r0 != 0) {
0x0007bcde bne.w 0x7c042 | goto label_16;
| }
0x0007bce2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0007bce4 str r3, [sp, 0x1c] | var_1ch = r3;
0x0007bce6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007bce8 eor sb, r3, 1 | sb = r3 ^ 1;
| if (r3 == 0) {
0x0007bcec cbnz r3, 0x7bcf4 |
0x0007bcee ldr.w fp, [pc, 0x33c] | fp = *(0x0007c02c);
0x0007bcf2 add fp, pc |
| }
0x0007bcf4 ldr.w r3, [sl, 0xf4] | r3 = *((sl + 0xf4));
0x0007bcf8 movs r2, 0x30 | r2 = 0x30;
0x0007bcfa movs r1, 0 | r1 = 0;
0x0007bcfc mov r0, r3 | r0 = r3;
0x0007bcfe blx 0x62ec | fcn_000062ec ();
0x0007bd00 invalid |
0x0007bd04 lsrs r7, r7, 0xe | r7 >>= 0xe;
0x0007bd06 vldr d17, [pc, 0x300] | __asm ("vldr d17, [0x0007c00c]");
0x0007bd0a add.w r2, r0, 0x10 | r2 = r0 + 0x10;
0x0007bd0e strb.w sb, [r0, 0x20] | *((r0 + 0x20)) = sb;
0x0007bd12 mov r3, r0 | r3 = r0;
0x0007bd14 str.w fp, [r0, 0x24] | __asm ("str.w fp, [r0, 0x24]");
0x0007bd18 str.w sl, [r0, 0x28] | __asm ("str.w sl, [r0, 0x28]");
0x0007bd1c movs r0, 2 | r0 = 2;
0x0007bd1e strb.w r0, [r3, 0x21] | *((r3 + 0x21)) = r0;
0x0007bd22 mov r0, r3 | r0 = r3;
0x0007bd24 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0007bd26 vst1.32 {d16, d17}, [r2] | __asm ("vst1.32 {d16, d17}, [r2]");
0x0007bd2a bl 0x224cc | r0 = fcn_000224cc (r0, r1);
0x0007bd2e mov sb, r0 | sb = r0;
0x0007bd30 cmp r0, 0 |
| if (r0 != 0) {
0x0007bd32 bne.w 0x7c040 | goto label_55;
| }
0x0007bd36 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0007bd38 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007bd3a strb.w r5, [sl, 0xe] | *((sl + 0xe)) = r5;
0x0007bd3e strb.w r3, [sl, 0xf] | *((sl + 0xf)) = r3;
0x0007bd42 uxtb r3, r2 | r3 = (int8_t) r2;
0x0007bd44 strb.w r3, [sl, 0xc] | *((sl + 0xc)) = r3;
0x0007bd48 strb.w r3, [sl, 4] | *((sl + 4)) = r3;
0x0007bd4c strb.w r3, [sl, 0x13] | *((sl + 0x13)) = r3;
0x0007bd50 strb.w r3, [sl, 7] | *((sl + 7)) = r3;
0x0007bd54 ldr r3, [sp, 0xc8] | r3 = *(arg_c8h);
0x0007bd56 and fp, r3, 1 |
0x0007bd5a mvn r3, 0xc0000000 | r3 = ~0xc0000000;
0x0007bd5e str.w r3, [sl, 0xa0] | __asm ("str.w r3, [sl, 0xa0]");
0x0007bd62 eor r3, fp, 1 | r3 = fp ^ 1;
0x0007bd66 strb.w r3, [sl, 6] | *((sl + 6)) = r3;
| if (r2 == 0) {
0x0007bd6a cbnz r2, 0x7bd76 |
0x0007bd6c movs r3, 1 |
0x0007bd6e movt r3, 0xa02 | r3 = 0xa020001;
0x0007bd72 str.w r3, [sl, 8] | __asm ("str.w r3, [sl, 8]");
| }
0x0007bd76 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0007bd7a movs r3, 0x58 | r3 = 0x58;
0x0007bd7c mov r0, sl | r0 = sl;
0x0007bd7e strh.w r3, [sl, 0x94] | *((sl + 0x94)) = r3;
0x0007bd82 vstr d16, [sl, 0xb0] | __asm ("vstr d16, [sl, 0xb0]");
0x0007bd86 bl 0x2b554 | fcn_0002b554 (r0);
0x0007bd8a cmp.w fp, 0 |
| if (fp == 0) {
0x0007bd8e beq.w 0x7c4a4 | goto label_56;
| }
0x0007bd92 movs r3, 2 | r3 = 2;
0x0007bd94 strb.w r3, [sl, 5] | *((sl + 5)) = r3;
| label_23:
0x0007bd98 ldr r2, [pc, 0x294] |
0x0007bd9a ldr.w r3, [sl, 0x2c] | r3 = *((sl + 0x2c));
0x0007bd9e add r2, pc | r2 = 0xf7dd2;
0x0007bda0 str.w r2, [sl, 0xd8] | __asm ("str.w r2, [sl, 0xd8]");
0x0007bda4 cmp r3, 0 |
| if (r3 != 0) {
0x0007bda6 bne.w 0x7c49e | goto label_57;
| }
0x0007bdaa ldrb.w r3, [sl, 0x17] | r3 = *((sl + 0x17));
0x0007bdae cmp r3, 0 |
| if (r3 == 0) {
0x0007bdb0 beq.w 0x7c500 | goto label_58;
| }
0x0007bdb4 ldr.w r3, [sl, 0xe0] | r3 = *((sl + 0xe0));
0x0007bdb8 cmp r3, 0 |
| if (r3 == 0) {
0x0007bdba beq.w 0x7c532 | goto label_59;
| }
0x0007bdbe ldr r3, [pc, 0x274] |
0x0007bdc0 add r3, pc | r3 = 0xf7dfa;
| label_22:
0x0007bdc2 str.w r3, [sl, 0xdc] | __asm ("str.w r3, [sl, 0xdc]");
0x0007bdc6 ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
0x0007bdca ldr r5, [sp, 8] | r5 = var_8h;
0x0007bdcc ldrd r0, r1, [r8, 0x30] | __asm ("ldrd r0, r1, [r8, 0x30]");
0x0007bdd0 ldr r3, [r3] | r3 = *(r3);
0x0007bdd2 str.w sl, [r5] | __asm ("str.w sl, [r5]");
0x0007bdd6 strd r0, r1, [sl, 0x88] | __asm ("strd r0, r1, [sl, 0x88]");
| if (r3 != 0) {
0x0007bdda cbz r3, 0x7bdec |
0x0007bddc ldr r3, [r3] | r3 = *(r3);
0x0007bdde cmp r3, 2 |
| if (r3 <= 2) {
0x0007bde0 ble 0x7bdec | goto label_60;
| }
0x0007bde2 mov r0, sl | r0 = sl;
0x0007bde4 bl 0x2b830 | fcn_0002b830 (r0, r1);
0x0007bde8 ldr.w sl, [r5] | sl = *(r5);
| }
| label_60:
0x0007bdec add r3, sp, 0x38 | r3 += var_38h;
0x0007bdee movs r2, 0x64 | r2 = 0x64;
0x0007bdf0 mov r0, r3 | r0 = r3;
0x0007bdf2 movs r1, 0 | r1 = 0;
0x0007bdf4 blx 0x62ec | r0 = fcn_000062ec ();
0x0007bdf8 mov r3, r0 | r3 = r0;
0x0007bdfa ldr.w r0, [sl, 0x40] | r0 = *((sl + 0x40));
0x0007bdfe ldr r2, [r0] | r2 = *(r0);
0x0007be00 cmp r2, 0 |
| if (r2 == 0) {
0x0007be02 beq.w 0x7c19e | goto label_61;
| }
0x0007be06 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0007be0a mov r1, r3 | r1 = r3;
0x0007be0c vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0007be10 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0007be12 movs r2, 0x64 | r2 = 0x64;
0x0007be14 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0007be16 movw r2, 0x20a | r2 = 0x20a;
0x0007be1a mov fp, r0 |
0x0007be1c cmp r0, r2 |
0x0007be1e it ne |
| if (r0 != r2) {
0x0007be20 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
| if (r0 == r2) {
0x0007be22 beq.w 0x7c19e | goto label_61;
| }
| label_5:
0x0007be26 ldr r3, [sp, 8] | r3 = var_8h;
0x0007be28 ldr r0, [r3] | r0 = *(r3);
| if (r0 == 0) {
0x0007be2a cbz r0, 0x7be70 | goto label_62;
| }
0x0007be2c movs r1, 0 | r1 = 0;
0x0007be2e bl 0x78ad0 | fcn_00078ad0 (r0, r1);
0x0007be32 b 0x7be70 | goto label_62;
| label_37:
0x0007be34 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007be36 ands r3, r3, 0x80 | r3 &= 0x80;
0x0007be3a str r3, [sp, 0xc] | var_ch = r3;
| if (r3 != r3) {
0x0007be3c bne 0x7beac | goto label_63;
| }
0x0007be3e movs r0, 0x30 | r0 = 0x30;
0x0007be40 movs r1, 0 | r1 = 0;
0x0007be42 bl 0x28c3c | r0 = fcn_00028c3c (r0);
0x0007be46 mov r4, r0 | r4 = r0;
0x0007be48 cmp r0, 0 |
| if (r0 == 0) {
0x0007be4a beq 0x7bf08 | goto label_38;
| }
0x0007be4c ldr r6, [sp, 0xc] | r6 = var_ch;
0x0007be4e movs r2, 0x2c | r2 = 0x2c;
0x0007be50 adds r0, 4 | r0 += 4;
0x0007be52 mov r1, r6 | r1 = r6;
0x0007be54 blx 0x62ec | fcn_000062ec ();
0x0007be58 movs r3, 1 | r3 = 1;
0x0007be5a str.w r8, [r4] | __asm ("str.w r8, [r4]");
0x0007be5e str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x0007be60 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007be62 str r4, [r4, 0x20] | *((r4 + 0x20)) = r4;
0x0007be64 lsls r3, r3, 0xe | r3 <<= 0xe;
| if (r3 < r3) {
0x0007be66 bmi.w 0x7baf0 | goto label_1;
| }
0x0007be6a b 0x7bbcc | goto label_2;
| label_47:
0x0007be6c mov.w fp, 7 |
| label_62:
0x0007be70 ldr r0, [sp, 8] | r0 = var_8h;
0x0007be72 bl 0x26dbc | fcn_00026dbc (r0);
0x0007be76 mov r0, r4 | r0 = r4;
0x0007be78 bl 0x26dbc | fcn_00026dbc (r0);
0x0007be7c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007be7e movs r2, 0 | r2 = 0;
0x0007be80 str r2, [r3] | *(r3) = r2;
| if (r6 == 0) {
| label_6:
0x0007be82 cbz r6, 0x7be8e | goto label_21;
| }
0x0007be84 ldr r2, [pc, 0x1b0] |
0x0007be86 mov r0, r6 | r0 = r6;
0x0007be88 add r2, pc |
0x0007be8a ldr r2, [r2, 0x58] | r2 = *(0xf7f1c);
0x0007be8c blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
| do {
| label_21:
0x0007be8e ldr r1, [pc, 0x1ac] |
0x0007be90 ldr r2, [pc, 0x180] | r2 = *(0x7c014);
0x0007be92 add r1, pc | r1 = 0xf7ed4;
0x0007be94 ldr r2, [r1, r2] | r2 = *(0xf7ed4);
0x0007be96 ldr r1, [r2] | r1 = *(0xf7ed4);
0x0007be98 ldr r2, [sp, 0x9c] | r2 = var_9ch;
0x0007be9a eors r1, r2 | r1 ^= r2;
0x0007be9c mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0007bea0 bne.w 0x7c538 | goto label_64;
| }
0x0007bea4 mov r0, fp | r0 = fp;
0x0007bea6 add sp, 0xa4 |
0x0007bea8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_63:
0x0007beac movs r6, 0 | r6 = 0;
0x0007beae b 0x7ba90 | goto label_0;
| label_35:
0x0007beb0 movs r0, 0x30 | r0 = 0x30;
0x0007beb2 movs r1, 0 | r1 = 0;
0x0007beb4 bl 0x28c3c | r0 = fcn_00028c3c (r0);
0x0007beb8 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0007beba cbz r0, 0x7bf08 |
0x0007bebc ldr r6, [sp, 0xc] | r6 = var_ch;
0x0007bebe movs r2, 0x2c | r2 = 0x2c;
0x0007bec0 adds r0, r4, 4 | r0 = r4 + 4;
0x0007bec2 mov r1, r6 | r1 = r6;
0x0007bec4 blx 0x62ec | fcn_000062ec ();
0x0007bec8 movs r3, 1 | r3 = 1;
0x0007beca str.w r8, [r4] | __asm ("str.w r8, [r4]");
0x0007bece str r4, [r4, 0x20] | *((r4 + 0x20)) = r4;
0x0007bed0 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x0007bed2 b 0x7bbcc | goto label_2;
| label_41:
0x0007bed4 mov r2, r5 | r2 = r5;
0x0007bed6 mov r1, r7 | r1 = r7;
0x0007bed8 blx 0x65ac | EVP_CIPHER_CTX_free ();
0x0007bedc b 0x7bb40 | goto label_3;
| label_48:
0x0007bede cmp r7, 0 |
| if (r7 == 0) {
0x0007bee0 beq.w 0x7bfe8 | goto label_65;
| }
0x0007bee4 ldrb r2, [r7] | r2 = *(r7);
| if (r2 != 0) {
0x0007bee6 cbnz r2, 0x7bf0e | goto label_66;
| }
0x0007bee8 movs r1, 1 | r1 = 1;
0x0007beea mov.w r2, 0x14a | r2 = 0x14a;
0x0007beee strd r7, fp, [sp, 0x24] | __asm ("strd r7, fp, [var_24h]");
0x0007bef2 str r1, [sp, 0x1c] | var_1ch = r1;
0x0007bef4 str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x0007bef8 str.w fp, [sp, 0x2c] | __asm ("str.w fp, [var_2ch]");
0x0007befc str.w fp, [sp, 0x18] | __asm ("str.w fp, [s1]");
0x0007bf00 b 0x7bc2c | goto label_4;
| label_40:
0x0007bf02 mov r0, r4 | r0 = r4;
0x0007bf04 bl 0x26dbc | fcn_00026dbc (r0);
| }
| label_38:
0x0007bf08 mov.w fp, 7 |
0x0007bf0c b 0x7be8e |
| } while (1);
| label_66:
0x0007bf0e ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0007bf12 add.w sl, r3, 1 | sl = r3 + 1;
0x0007bf16 lsl.w r0, sl, 1 | r0 = sl << 1;
0x0007bf1a asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0007bf1c bl 0x28c3c | r0 = fcn_00028c3c (r0);
0x0007bf20 mov r3, r0 | r3 = r0;
0x0007bf22 str r0, [sp, 0x18] | s1 = r0;
0x0007bf24 cmp r0, 0 |
| if (r0 == 0) {
0x0007bf26 beq.w 0x7c17c | goto label_14;
| }
0x0007bf2a strb.w fp, [r0] | *(r0) = fp;
0x0007bf2e mov r2, sl | r2 = sl;
0x0007bf30 ldr.w r5, [sb, 0x24] | r5 = *((sb + 0x24));
0x0007bf34 mov r1, r7 | r1 = r7;
0x0007bf36 mov r0, sb | r0 = sb;
0x0007bf38 blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0007bf3a str r0, [sp, 0x28] | var_28h = r0;
| if (r0 != 0) {
0x0007bf3c cbz r0, 0x7bf54 |
0x0007bf3e cmp.w r0, 0x200 |
| if (r0 != 0x200) {
0x0007bf42 bne 0x7bf54 | goto label_67;
| }
0x0007bf44 ldr r2, [sp, 0xcc] | r2 = *(arg_cch);
0x0007bf46 movw r3, 0x60e | r3 = 0x60e;
0x0007bf4a ands r2, r2, 0x1000000 | r2 &= 0x1000000;
0x0007bf4e it eq |
| if (r2 != r2) {
0x0007bf50 moveq r3, r2 | r3 = r2;
| }
0x0007bf52 str r3, [sp, 0x28] | var_28h = r3;
| }
| label_67:
0x0007bf54 ldr r0, [sp, 0x18] | r0 = s1;
0x0007bf56 blx 0x65dc | r0 = strcmp (r0, r1);
0x0007bf5a bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x0007bf5e mov r0, r7 | r0 = r7;
0x0007bf60 mov r5, r3 | r5 = r3;
0x0007bf62 str r3, [sp, 0x14] | var_14h = r3;
0x0007bf64 blx 0x65dc | r0 = strcmp (r0, r1);
0x0007bf68 bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x0007bf6c mov fp, r5 |
0x0007bf6e adds r3, 1 | r3++;
0x0007bf70 ldrb r2, [r7, r3] | r2 = *((r7 + r3));
0x0007bf72 adds r3, r7, r3 | r3 = r7 + r3;
0x0007bf74 str r3, [sp, 0x2c] | var_2ch = r3;
0x0007bf76 cmp r2, 0 |
| if (r2 == 0) {
0x0007bf78 beq.w 0x7c506 | goto label_68;
| }
0x0007bf7c ldr r5, [sp, 8] | r5 = var_8h;
0x0007bf7e mov sl, r3 | sl = r3;
| do {
0x0007bf80 mov r0, sl | r0 = sl;
0x0007bf82 blx 0x65dc | strcmp (r0, r1);
0x0007bf86 adds r0, 1 | r0++;
0x0007bf88 add sl, r0 | sl += r0;
0x0007bf8a mov r0, sl | r0 = sl;
0x0007bf8c blx 0x65dc | strcmp (r0, r1);
0x0007bf90 adds r0, 1 | r0++;
0x0007bf92 ldrb.w r3, [sl, r0] | r3 = *((sl + r0));
0x0007bf94 adds r0, 0 | r0 += 0;
0x0007bf96 add sl, r0 | sl += r0;
0x0007bf98 cmp r3, 0 |
0x0007bf9a bne 0x7bf80 |
| } while (r3 != 0);
0x0007bf9c str r5, [sp, 8] | var_8h = r5;
| label_27:
0x0007bf9e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007bfa0 cmp r3, 0 |
| if (r3 != 0) {
0x0007bfa2 bne.w 0x7c488 | goto label_69;
| }
0x0007bfa6 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0007bfa8 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0007bfac adds r2, r1, 7 | r2 = r1 + 7;
0x0007bfae cmp r2, r3 |
| if (r2 >= r3) {
0x0007bfb0 bge.w 0x7c46a | goto label_70;
| }
0x0007bfb4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0007bfb6 add.w r2, r1, r1, lsl 1 | r2 = r1 + (r1 << 1);
0x0007bfba add.w sl, sl, 1 | sl++;
0x0007bfbe str r7, [sp, 0x24] | var_24h = r7;
0x0007bfc0 add.w r2, r2, 0x14a | r2 += 0x14a;
0x0007bfc4 sub.w r3, sl, r3 | r3 = sl - r3;
0x0007bfc8 str r3, [sp, 0x1c] | var_1ch = r3;
0x0007bfca ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0007bfcc adds r0, 4 | r0 += 4;
0x0007bfce b 0x7bc2c | goto label_4;
| label_49:
0x0007bfd0 movs r2, 1 | r2 = 1;
0x0007bfd2 mov fp, r7 |
0x0007bfd4 mov r1, r2 | r1 = r2;
0x0007bfd6 str r2, [sp, 0x1c] | var_1ch = r2;
0x0007bfd8 str r7, [sp, 0x24] | var_24h = r7;
0x0007bfda mov.w r2, 0x14a | r2 = 0x14a;
0x0007bfde str r7, [sp, 0x2c] | var_2ch = r7;
0x0007bfe0 str r7, [sp, 0x18] | s1 = r7;
0x0007bfe2 str r7, [sp, 0x14] | var_14h = r7;
0x0007bfe4 str r1, [sp, 0x28] | var_28h = r1;
0x0007bfe6 b 0x7bc2c | goto label_4;
| label_65:
0x0007bfe8 movs r1, 1 | r1 = 1;
0x0007bfea mov.w r2, 0x14a | r2 = 0x14a;
0x0007bfee strd r7, r7, [sp, 0x24] | __asm ("strd r7, r7, [var_24h]");
0x0007bff2 str r7, [sp, 0x2c] | var_2ch = r7;
0x0007bff4 str r7, [sp, 0x18] | s1 = r7;
0x0007bff6 str r1, [sp, 0x1c] | var_1ch = r1;
0x0007bff8 str r7, [sp, 0x14] | var_14h = r7;
0x0007bffa b 0x7bc2c | goto label_4;
| label_55:
0x0007c040 mov fp, r0 |
| label_16:
0x0007c042 ldr.w r7, [sl, 0x40] | r7 = *((sl + 0x40));
0x0007c046 ldr r2, [r7] | r2 = *(r7);
| if (r2 != 0) {
0x0007c048 cbz r2, 0x7c054 |
0x0007c04a ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0007c04c mov r0, r7 | r0 = r7;
0x0007c04e blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
0x0007c050 movs r2, 0 | r2 = 0;
0x0007c052 str r2, [r7] | *(r7) = r2;
| }
0x0007c054 ldr.w r0, [sl, 0xf0] | r0 = *((sl + 0xf0));
0x0007c058 bl 0x26f64 | fcn_00026f64 (r0);
0x0007c05c mov r0, sl | r0 = sl;
0x0007c05e bl 0x26dbc | fcn_00026dbc (r0);
0x0007c062 b 0x7be26 | goto label_5;
| label_46:
0x0007c064 ldr.w r0, [r8, 0x14] | r0 = *((r8 + 0x14));
0x0007c068 str r5, [sp, 8] | var_8h = r5;
0x0007c06a subs r1, r0, 1 | r1 = r0 - 1;
| if (r1 < r0) {
0x0007c06c bmi 0x7c08e | goto label_71;
| }
0x0007c06e ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x0007c072 add.w r2, r2, r0, lsl 4 | r2 += (r0 << 4);
| do {
0x0007c076 ldr r3, [r2, -0xc] | r3 = *((r2 - 0xc));
| if (r3 != 0) {
0x0007c07a cbz r3, 0x7c084 |
0x0007c07c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0007c07e cmp r3, r5 |
| if (r3 == r5) {
0x0007c080 beq.w 0x7c3e0 | goto label_72;
| }
| }
0x0007c084 subs r1, 1 | r1--;
0x0007c086 subs r2, 0x10 | r2 -= 0x10;
0x0007c088 adds r0, r1, 1 | r0 = r1 + 1;
0x0007c08a bne 0x7c076 |
| } while (r0 != r1);
0x0007c08c str r5, [sp, 8] | var_8h = r5;
| label_71:
0x0007c08e ldr r3, [sp, 8] | r3 = var_8h;
0x0007c090 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x0007c092 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x0007c094 adds r2, 1 | r2++;
0x0007c096 str r2, [r3, 0x44] | *((r3 + 0x44)) = r2;
0x0007c098 cmp.w fp, 0 |
| if (fp == 0) {
0x0007c09c beq.w 0x7c494 | goto label_73;
| }
0x0007c0a0 ldr.w r3, [pc, 0x498] |
0x0007c0a4 mov r0, fp | r0 = fp;
0x0007c0a6 add r3, pc |
0x0007c0a8 ldr r3, [r3, 0x58] | r3 = *(0xf863e);
0x0007c0aa blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0007c0ac mov r0, sl | r0 = sl;
0x0007c0ae bl 0x26dbc | fcn_00026dbc (r0);
0x0007c0b2 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| label_15:
0x0007c0b4 cmp r3, 0 |
| if (r3 == 0) {
0x0007c0b6 beq 0x7c132 | goto label_13;
| }
| label_28:
0x0007c0b8 ldr.w r7, [r8, 0x14] | r7 = *((r8 + 0x14));
0x0007c0bc cmp r7, 0 |
| if (r7 <= 0) {
0x0007c0be ble 0x7c0da | goto label_74;
| }
0x0007c0c0 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x0007c0c4 movs r1, 0 | r1 = 0;
0x0007c0c6 ldr r5, [sp, 8] | r5 = var_8h;
| do {
0x0007c0c8 ldr r3, [r2, 4] | r3 = *((r2 + 4));
| if (r3 != 0) {
0x0007c0ca cbz r3, 0x7c0d0 |
0x0007c0cc ldrb r0, [r3, 9] | r0 = *((r3 + 9));
| if (r0 != 0) {
0x0007c0ce cbnz r0, 0x7c118 | goto label_75;
| }
| }
0x0007c0d0 adds r1, 1 | r1++;
0x0007c0d2 adds r2, 0x10 | r2 += 0x10;
0x0007c0d4 cmp r1, r7 |
0x0007c0d6 bne 0x7c0c8 |
| } while (r1 != r7);
0x0007c0d8 str r5, [sp, 8] | var_8h = r5;
| label_74:
0x0007c0da ldr r7, [r4, 4] | r7 = *((r4 + 4));
| label_7:
0x0007c0dc ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007c0de str r4, [r3] | *(r3) = r4;
0x0007c0e0 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0007c0e2 ldrb r2, [r4, 0xa] | r2 = *((r4 + 0xa));
0x0007c0e4 adds r1, r3, 1 | r1 = r3 + 1;
0x0007c0e6 str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
| if (r2 == 0) {
0x0007c0e8 cbnz r2, 0x7c0f8 |
0x0007c0ea mov r0, r4 | r0 = r4;
0x0007c0ec bl 0x2adac | fcn_0002adac (r0);
0x0007c0f0 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 == 0) {
0x0007c0f2 cbz r3, 0x7c0fc | goto label_9;
| }
0x0007c0f4 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0007c0f6 subs r3, 1 | r3--;
| }
0x0007c0f8 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| if (r3 == 0) {
0x0007c0fa cbz r3, 0x7c14e | goto label_76;
| }
| label_9:
0x0007c0fc ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
| if (r3 == 0) {
0x0007c0fe cbz r3, 0x7c13e | goto label_77;
| }
| label_8:
0x0007c100 ldr r2, [sp, 8] | r2 = var_8h;
0x0007c102 ldr r3, [r2] | r3 = *(r2);
0x0007c104 ldr r0, [r3, 0x40] | r0 = *((r3 + 0x40));
0x0007c106 ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0007c108 cbz r3, 0x7c112 |
0x0007c10a ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0007c10c adds r2, 4 | r2 += 4;
0x0007c10e movs r1, 0x1e | r1 = 0x1e;
0x0007c110 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| }
0x0007c112 mov.w fp, 0 |
0x0007c116 b 0x7be82 | goto label_6;
| do {
| label_75:
0x0007c118 mov r2, r3 | r2 = r3;
0x0007c11a ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0007c11c cmp r3, 0 |
0x0007c11e bne 0x7c118 |
| } while (r3 != 0);
0x0007c120 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x0007c122 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0007c124 str r5, [sp, 8] | var_8h = r5;
0x0007c126 cmp r1, r7 |
| if (r1 < r7) {
0x0007c128 bls 0x7c156 | goto label_78;
| }
0x0007c12a strd r2, r3, [r4, 0x18] | __asm ("strd r2, r3, [r4, 0x18]");
0x0007c12e str r4, [r2, 0x1c] | *((r2 + 0x1c)) = r4;
0x0007c130 b 0x7c0dc | goto label_7;
| label_13:
0x0007c132 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007c134 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x0007c136 str r4, [r3] | *(r3) = r4;
0x0007c138 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x0007c13a cmp r3, 0 |
| if (r3 != 0) {
0x0007c13c bne 0x7c100 | goto label_8;
| }
| label_77:
0x0007c13e movw r1, 0xf830 |
0x0007c142 mov r0, r4 | r0 = r4;
0x0007c144 movt r1, 0xffff | r1 = 0xfffff830;
0x0007c148 bl 0x30538 | fcn_00030538 (r0, r1);
0x0007c14a invalid |
| label_76:
0x0007c14e mov r0, r4 | r0 = r4;
0x0007c150 bl 0x22944 | fcn_00022944 (r0);
0x0007c154 b 0x7c0fc | goto label_9;
| label_78:
0x0007c156 ldr r5, [sp, 8] | r5 = var_8h;
0x0007c158 b 0x7c160 |
| while (r2 != 0) {
0x0007c15a ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0007c15c cmp r3, r7 |
| if (r3 >= r7) {
0x0007c15e bhs 0x7c194 | goto label_79;
| }
0x0007c160 mov r1, r2 | r1 = r2;
0x0007c162 ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
0x0007c164 cmp r2, 0 |
0x0007c166 bne 0x7c15a |
| }
0x0007c168 str r5, [sp, 8] | var_8h = r5;
0x0007c16a strd r2, r1, [r4, 0x18] | __asm ("strd r2, r1, [r4, 0x18]");
| label_12:
0x0007c16e str r4, [r1, 0x18] | *((r1 + 0x18)) = r4;
0x0007c170 b 0x7c0dc | goto label_7;
| label_51:
0x0007c172 ldr r3, [sp, 0x18] | r3 = s1;
| if (r3 != 0) {
0x0007c174 cbz r3, 0x7c17c |
0x0007c176 mov r0, r3 | r0 = r3;
0x0007c178 bl 0x26dbc | fcn_00026dbc (r0);
| }
| label_14:
0x0007c17c mov.w fp, 7 |
0x0007c180 b 0x7be26 | goto label_5;
| label_44:
0x0007c182 ldr r2, [pc, 0x3bc] |
0x0007c184 add r2, pc | r2 = 0xf86ca;
0x0007c186 ldr.w r3, [r2, 0x520] | r3 = *(0xf8bea);
0x0007c18a str r3, [sp, 8] | var_8h = r3;
0x0007c18c cmp r3, 0 |
| if (r3 != 0) {
0x0007c18e bne.w 0x7bb8a | goto label_10;
| }
0x0007c192 b 0x7bbbe | goto label_11;
| label_79:
0x0007c194 strd r2, r1, [r4, 0x18] | __asm ("strd r2, r1, [r4, 0x18]");
0x0007c198 str r5, [sp, 8] | var_8h = r5;
0x0007c19a str r4, [r2, 0x1c] | *((r2 + 0x1c)) = r4;
0x0007c19c b 0x7c16e | goto label_12;
| label_61:
0x0007c19e ldr r2, [sp, 8] | r2 = var_8h;
0x0007c1a0 ldr r3, [sp, 0xc8] | r3 = *(arg_c8h);
0x0007c1a2 ldr r0, [r2] | r0 = *(r2);
0x0007c1a4 strb r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x0007c1a6 ldr r3, [pc, 0x39c] |
0x0007c1a8 ldr r1, [r0, 0x40] | r1 = *((r0 + 0x40));
0x0007c1aa str.w r8, [r2, 4] | __asm ("str.w r8, [r2, 4]");
0x0007c1ae add r3, pc | r3 = 0xf86f8;
0x0007c1b0 str.w r2, [r0, 0xc4] | __asm ("str.w r2, [r0, 0xc4]");
0x0007c1b4 str.w r3, [r0, 0xc0] | __asm ("str.w r3, [r0, 0xc0]");
0x0007c1b8 ldr r3, [r1] | r3 = *(r1);
| if (r3 != 0) {
0x0007c1ba cbz r3, 0x7c1cc |
0x0007c1bc ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0007c1be add.w r2, r0, 0xc0 | r2 = r0 + 0xc0;
0x0007c1c2 mov r0, r1 | r0 = r1;
0x0007c1c4 movs r1, 0xf | r1 = 0xf;
0x0007c1c6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0007c1c8 ldr r3, [sp, 8] | r3 = var_8h;
0x0007c1ca ldr r0, [r3] | r0 = *(r3);
| }
0x0007c1cc ldr r2, [sp, 8] | r2 = var_8h;
0x0007c1ce vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0007c1d2 add.w r3, r2, 8 | r3 = r2 + 8;
0x0007c1d6 str r2, [r4, 4] | *((r4 + 4)) = r2;
0x0007c1d8 vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x0007c1dc ldrb r3, [r0, 0xe] | r3 = *((r0 + 0xe));
| if (r3 != 0) {
0x0007c1de cbz r3, 0x7c1e8 |
0x0007c1e0 ldrh r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x0007c1e2 orr r3, r3, 1 | r3 |= 1;
0x0007c1e6 strh r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
| }
0x0007c1e8 ldrb.w r3, [sp, 0x49] | r3 = var_49h;
0x0007c1ec ldrb.w r2, [sp, 0x48] | r2 = var_48h;
0x0007c1f0 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x0007c1f2 orr.w r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x0007c1f6 ldr r2, [sp, 8] | r2 = var_8h;
0x0007c1f8 str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x0007c1fa sub.w r2, r3, 0x200 | r2 = r3 - 0x200;
0x0007c1fe cmp.w r2, 0xfe00 |
| if (r2 > 0xfe00) {
0x0007c202 bhi.w 0x7c3be | goto label_80;
| }
0x0007c206 subs r2, r3, 1 | r2 = r3 - 1;
0x0007c208 tst r2, r3 |
| if ((r2 & r3) != 0) {
0x0007c20a bne.w 0x7c3be | goto label_80;
| }
0x0007c20e ldr r2, [sp, 8] | r2 = var_8h;
0x0007c210 ldrb.w r7, [sp, 0x4c] | r7 = var_4ch;
0x0007c214 ldrh r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x0007c216 mov sb, r7 | sb = r7;
0x0007c218 orr r3, r3, 2 | r3 |= 2;
0x0007c21c strh r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
0x0007c21e ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0007c220 subs r3, 0 |
0x0007c222 it ne |
| if (r3 == 0) {
0x0007c224 movne r3, 1 | r3 = 1;
| }
0x0007c226 strb r3, [r2, 0x11] | *((r2 + 0x11)) = r3;
0x0007c228 ldr r3, [sp, 0x78] | r3 = var_78h;
0x0007c22a subs r3, 0 |
0x0007c22c it ne |
| if (r3 == 0) {
0x0007c22e movne r3, 1 | r3 = 1;
| }
0x0007c230 strb r3, [r2, 0x12] | *((r2 + 0x12)) = r3;
| label_20:
0x0007c232 ldr r5, [sp, 8] | r5 = var_8h;
0x0007c234 mov r2, sb | r2 = sb;
0x0007c236 add.w r1, r5, 0x24 | r1 = r5 + 0x24;
0x0007c23a bl 0x33fa0 | r0 = fcn_00033fa0 (r0, r1, r2);
0x0007c23e mov fp, r0 |
0x0007c240 cmp r0, 0 |
| if (r0 != 0) {
0x0007c242 bne.w 0x7be26 | goto label_5;
| }
0x0007c246 ldr r2, [r5, 0x24] | r2 = *((r5 + 0x24));
0x0007c248 subs r2, r2, r7 | r2 -= r7;
0x0007c24a str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0007c24c movs r2, 1 | r2 = 1;
0x0007c24e str r2, [r5, 0x44] | *((r5 + 0x44)) = r2;
0x0007c250 ldrb r2, [r4, 9] | r2 = *((r4 + 9));
0x0007c252 cmp r2, 0 |
| if (r2 == 0) {
0x0007c254 beq.w 0x7c132 | goto label_13;
| }
0x0007c258 ldr r7, [pc, 0x2ec] |
0x0007c25a add r7, pc | r7 = 0xf87a6;
0x0007c25c ldrb r2, [r7, 4] | r2 = *((r7 + 4));
0x0007c25e cmp r2, 0 |
| if (r2 == 0) {
0x0007c260 beq.w 0x7c50c | goto label_81;
| }
0x0007c264 ldr r2, [r7, 0x48] | r2 = *((r7 + 0x48));
0x0007c266 movs r0, 2 | r0 = 2;
0x0007c268 blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
0x0007c26a ldrb r2, [r7, 4] | r2 = *((r7 + 4));
0x0007c26c mov sb, r0 | sb = r0;
| if (r2 == 0) {
0x0007c26e cbz r2, 0x7c280 | goto label_82;
| }
0x0007c270 ldr r2, [r7, 0x48] | r2 = *((r7 + 0x48));
0x0007c272 mov r0, fp | r0 = fp;
0x0007c274 blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
0x0007c276 ldr r3, [sp, 8] | r3 = var_8h;
0x0007c278 str r0, [r3, 0x3c] | *((r3 + 0x3c)) = r0;
0x0007c27a cmp r0, 0 |
| if (r0 == 0) {
0x0007c27c beq.w 0x7c17c | goto label_14;
| }
| label_82:
0x0007c280 cmp.w sb, 0 |
| if (sb == 0) {
0x0007c284 beq.w 0x7c51e | goto label_83;
| }
0x0007c286 strh r3, [r1, 0xa] | *((r1 + 0xa)) = r3;
0x0007c288 ldr r7, [pc, 0x2c0] |
0x0007c28a mov r0, sb | r0 = sb;
0x0007c28c add r7, pc | r7 = 0xf87dc;
0x0007c28e ldr r3, [r7, 0x50] | r3 = *(0xf882c);
0x0007c290 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0007c292 ldr r3, [pc, 0x2bc] |
0x0007c294 mov r0, sb | r0 = sb;
0x0007c296 ldr r5, [sp, 8] | r5 = var_8h;
0x0007c298 ldr r2, [r7, 0x58] | r2 = *(0xf8834);
0x0007c29a add r3, pc | r3 = 0xf87f0;
0x0007c29c ldr.w r1, [r3, 0x520] | r1 = *(0xf8d10);
0x0007c2a0 str.w r5, [r3, 0x520] | __asm ("str.w r5, [r3, 0x520]");
0x0007c2a4 str r1, [r5, 0x48] | *((r5 + 0x48)) = r1;
0x0007c2a6 blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0007c2a8 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0007c2aa b 0x7c0b4 | goto label_15;
| label_54:
0x0007c2ac ldr r0, [sp, 0xcc] | r0 = *(arg_cch);
0x0007c2ae movw r3, 0x7f7f |
0x0007c2b2 movt r3, 0x108 | r3 = 0x1087f7f;
0x0007c2b6 ldr.w r2, [sl, 0x40] | r2 = *((sl + 0x40));
0x0007c2ba ldr.w r1, [sl, 0xb8] | r1 = *((sl + 0xb8));
0x0007c2be ands r3, r0 | r3 &= r0;
0x0007c2c0 movs r0, 0 | r0 = 0;
0x0007c2c2 str r0, [sp, 0x34] | x = r0;
0x0007c2c4 add r0, sp, 0x34 | r0 += x;
0x0007c2c6 str r0, [sp] | *(sp) = r0;
0x0007c2c8 mov r0, sb | r0 = sb;
0x0007c2ca ldr.w fp, [sb, 0x18] | fp = *((sb + 0x18));
0x0007c2ce blx fp | fp (r0, r1, r2, r3);
0x0007c2d0 ldr r2, [sp, 0x34] | r2 = x;
0x0007c2d2 mov fp, r0 |
0x0007c2d4 ubfx r1, r2, 7, 1 | r1 = (r2 >> 7) & ((1 << 1) - 1);
0x0007c2d8 strb.w r1, [sl, 0x10] | *((sl + 0x10)) = r1;
0x0007c2dc cmp r0, 0 |
| if (r0 != 0) {
0x0007c2de bne.w 0x7c042 | goto label_16;
| }
0x0007c2e2 ldr.w r0, [sl, 0x40] | r0 = *((sl + 0x40));
0x0007c2e6 and r5, r2, 1 | r5 = r2 & 1;
0x0007c2ea str r1, [sp, 0x18] | s1 = r1;
0x0007c2ec ldr r2, [r0] | r2 = *(r0);
0x0007c2ee cmp r2, 0 |
| if (r2 == 0) {
0x0007c2f0 beq.w 0x7c4b4 | goto label_84;
| }
0x0007c2f4 ldr r3, [r2, 0x30] | r3 = *((r2 + 0x30));
0x0007c2f6 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0007c2f8 mov sb, r0 | sb = r0;
0x0007c2fa cmp r5, 0 |
| if (r5 == 0) {
0x0007c2fc beq.w 0x7c4e0 | goto label_85;
| }
| label_26:
0x0007c300 ldr.w fp, [sl, 0xb8] | fp = *((sl + 0xb8));
0x0007c304 movs r2, 0 | r2 = 0;
0x0007c306 ldr r1, [pc, 0x24c] |
0x0007c308 mov r0, fp | r0 = fp;
0x0007c30a add r1, pc | r1 = 0xf8864;
0x0007c30c bl 0x2c518 | fcn_0002c518 (r0, r1, r2);
0x0007c310 tst.w sb, 0x2000 |
0x0007c314 strb.w r0, [sl, 0xd] | *((sl + 0xd)) = r0;
0x0007c316 movs r5, r1 | r5 = r1;
| if (r5 == r1) {
0x0007c318 beq.w 0x7c4c8 | goto label_86;
| }
| label_25:
0x0007c31c movs r3, 1 | r3 = 1;
0x0007c31e mov r5, r3 | r5 = r3;
0x0007c320 b 0x7bcbe | goto label_17;
| label_43:
0x0007c322 ldr r3, [pc, 0x234] |
0x0007c324 add r3, pc |
0x0007c326 ldr.w r3, [r3, 0x520] | r3 = *(0xf8da2);
0x0007c32a str r3, [sp, 8] | var_8h = r3;
0x0007c32c cmp r3, 0 |
| if (r3 == 0) {
0x0007c32e beq.w 0x7bbbe | goto label_11;
| }
0x0007c332 ldr r5, [sp, 8] | r5 = var_8h;
0x0007c334 mov.w fp, 0 |
0x0007c338 str r7, [sp, 8] | var_8h = r7;
0x0007c33a b 0x7bb8e | goto label_18;
| label_52:
0x0007c33c ldr r5, [sp, 0x14] | r5 = var_14h;
0x0007c33e mov r0, r3 | r0 = r3;
0x0007c340 ldr r1, [sp, 0x18] | r1 = s1;
0x0007c342 mov r2, r5 | r2 = r5;
0x0007c344 blx 0x65ac | EVP_CIPHER_CTX_free ();
0x0007c348 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0007c34a mov r2, r5 | r2 = r5;
0x0007c34c adds r2, 1 | r2++;
0x0007c34e add r0, r2 | r0 += r2;
0x0007c350 add.w fp, r0, 1 |
| if (r1 != 0) {
0x0007c354 cbz r1, 0x7c360 |
0x0007c356 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0007c358 add.w fp, r0, r2 |
0x0007c35c blx 0x65ac | EVP_CIPHER_CTX_free ();
| }
0x0007c360 ldrd r2, r5, [sp, 0x14] | __asm ("ldrd r2, r5, [s1]");
0x0007c364 mov r0, fp | r0 = fp;
0x0007c366 str.w fp, [sl, 0xbc] | __asm ("str.w fp, [sl, 0xbc]");
0x0007c36a mov r1, r5 | r1 = r5;
0x0007c36c blx 0x65ac | EVP_CIPHER_CTX_free ();
0x0007c370 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007c372 ldr.w ip, [pc, 0x1e8] |
0x0007c376 add.w lr, fp, r3 | lr = fp + r3;
0x0007c37a mov r2, r3 | r2 = r3;
0x0007c37c add.w r0, lr, 9 | r0 = lr + 9;
0x0007c380 add ip, pc | ip = 0xf88e2;
0x0007c382 str r0, [sp, 0x18] | s1 = r0;
0x0007c384 ldm.w ip!, {r0, r1} | r0 = *(ip!);
| r1 = *((ip! + 4));
0x0007c388 str.w r0, [fp, r3] | __asm ("str.w r0, [fp, r3]");
0x0007c38c ldr r0, [sp, 0x18] | r0 = s1;
0x0007c38e str.w r1, [lr, 4] | __asm ("str.w r1, [lr, 4]");
0x0007c392 mov r1, r5 | r1 = r5;
0x0007c394 str.w r0, [sl, 0xfc] | __asm ("str.w r0, [sl, 0xfc]");
0x0007c398 blx 0x65ac | EVP_CIPHER_CTX_free ();
0x0007c39c ldr r2, [pc, 0x1c0] |
0x0007c39e mov r1, r0 | r1 = r0;
0x0007c3a0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007c3a2 add r2, pc | r2 = 0xf8906;
0x0007c3a4 ldr r0, [r2] | r0 = *(0xf8906);
0x0007c3a6 str r0, [r1, r3] | *((r1 + r3)) = r0;
0x0007c3a8 mov r0, r5 | r0 = r5;
0x0007c3aa bl 0x26dbc | fcn_00026dbc (r0);
0x0007c3ae b 0x7bc9a | goto label_19;
| label_53:
0x0007c3b0 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0007c3b2 and r3, r3, 1 | r3 &= 1;
0x0007c3b6 mov r5, r3 | r5 = r3;
0x0007c3b8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007c3ba str r3, [sp, 0x18] | s1 = r3;
0x0007c3bc b 0x7bcbe | goto label_17;
| label_80:
0x0007c3be ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007c3c0 movs r2, 0 | r2 = 0;
0x0007c3c2 ldr r1, [sp, 8] | r1 = var_8h;
0x0007c3c4 eor r3, r3, 1 | r3 ^= 1;
0x0007c3c8 cmp r7, 0 |
0x0007c3ca ite eq |
| if (r7 != 0) {
0x0007c3cc moveq r3, 0 | r3 = 0;
| }
| if (r7 == 0) {
0x0007c3ce andne r3, r3, 1 | r3 &= 1;
| }
0x0007c3d2 str r2, [r1, 0x24] | *((r1 + 0x24)) = r2;
| if (r3 != 0) {
0x0007c3d4 cbz r3, 0x7c3dc |
0x0007c3d6 ldr r3, [sp, 8] | r3 = var_8h;
0x0007c3d8 strh.w r2, [r3, 0x11] | *((r3 + 0x11)) = r2;
| }
0x0007c3dc movs r7, 0 | r7 = 0;
0x0007c3de b 0x7c232 | goto label_20;
| label_72:
0x0007c3e0 cmp.w fp, 0 |
| if (fp != 0) {
0x0007c3e4 beq 0x7c3f0 |
0x0007c3e6 ldr r2, [pc, 0x17c] |
0x0007c3e8 mov r0, fp | r0 = fp;
0x0007c3ea add r2, pc | r2 = 0xf8954;
0x0007c3ec ldr r3, [r2, 0x58] | r3 = *(0xf89ac);
0x0007c3ee blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
| }
| if (r6 != 0) {
0x0007c3f0 cbz r6, 0x7c3fc |
0x0007c3f2 ldr r3, [pc, 0x174] |
0x0007c3f4 mov r0, r6 | r0 = r6;
0x0007c3f6 add r3, pc |
0x0007c3f8 ldr r3, [r3, 0x58] | r3 = *(0xf89bc);
0x0007c3fa blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0007c3fc mov r0, sl | r0 = sl;
0x0007c3fe mov.w fp, 0x13 |
0x0007c402 bl 0x26dbc | fcn_00026dbc (r0);
0x0007c406 mov r0, r4 | r0 = r4;
0x0007c408 bl 0x26dbc | fcn_00026dbc (r0);
0x0007c40c b 0x7be8e | goto label_21;
| label_42:
0x0007c40e mov r0, sl | r0 = sl;
0x0007c410 bl 0x26dbc | fcn_00026dbc (r0);
0x0007c414 mov r0, r4 | r0 = r4;
0x0007c416 bl 0x26dbc | fcn_00026dbc (r0);
0x0007c41a b 0x7be8e | goto label_21;
| label_50:
0x0007c41c mov r0, r7 | r0 = r7;
0x0007c41e blx 0x65dc | r0 = strcmp (r0, r1);
0x0007c422 add.w sl, r0, 1 | sl = r0 + 1;
0x0007c426 movs r1, 0 | r1 = 0;
0x0007c428 mov r0, sl | r0 = sl;
0x0007c42a bl 0x28c3c | r0 = fcn_00028c3c (r0);
0x0007c42e mov r5, r0 | r5 = r0;
0x0007c430 str r0, [sp, 0x18] | s1 = r0;
0x0007c432 cmp r0, 0 |
| if (r0 == 0) {
0x0007c434 beq.w 0x7c17c | goto label_14;
| }
0x0007c438 mov r2, sl | r2 = sl;
0x0007c43a mov r1, r7 | r1 = r7;
0x0007c43c blx 0x65ac | EVP_CIPHER_CTX_free ();
0x0007c440 mov r0, r5 | r0 = r5;
0x0007c442 movs r5, 0 | r5 = 0;
0x0007c444 blx 0x65dc | r0 = strcmp (r0, r1);
0x0007c448 bic r1, r0, 0xc0000000 | r1 = BIT_MASK (r0, 0xc0000000);
0x0007c44c movs r0, 1 | r0 = 1;
0x0007c44e add.w r2, r1, r1, lsl 1 | r2 = r1 + (r1 << 1);
0x0007c450 lsls r1, r0, 9 | r1 = r0 << 9;
0x0007c452 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0007c456 mov fp, r1 |
0x0007c458 str r1, [sp, 0x14] | var_14h = r1;
0x0007c45a add.w r2, r2, 0x14a | r2 += 0x14a;
0x0007c45e str r0, [sp, 0x1c] | var_1ch = r0;
0x0007c460 str r5, [sp, 0x24] | var_24h = r5;
0x0007c462 strd r0, r5, [sp, 0x28] | __asm ("strd r0, r5, [var_2ch]");
0x0007c466 b.w 0x7bc2c | goto label_4;
| label_70:
0x0007c46a ldr r3, [pc, 0x100] |
0x0007c46c movs r0, 0xe | r0 = 0xe;
0x0007c46e ldr r2, [pc, 0x100] |
0x0007c470 ldr r1, [pc, 0x100] |
0x0007c472 add r3, pc | r3 = 0xf89e4;
0x0007c474 adds r3, 0x14 | r3 += 0x14;
0x0007c476 add r2, pc | r2 = 0xf89ec;
0x0007c478 str r3, [sp] | *(sp) = r3;
0x0007c47a movs r3, 0xe | r3 = 0xe;
0x0007c47c str r3, [sp, 0x28] | var_28h = r3;
0x0007c47e add r1, pc | r1 = 0xf89f6;
0x0007c480 movw r3, 0xe615 | r3 = 0xe615;
0x0007c484 bl 0x50814 | fcn_00050814 (r0, r1, r2);
| label_69:
0x0007c488 ldr r0, [sp, 0x18] | r0 = s1;
0x0007c48a bl 0x26dbc | fcn_00026dbc (r0);
0x0007c48e ldr.w fp, [sp, 0x28] | fp = var_28h;
0x0007c492 b 0x7be26 | goto label_5;
| label_73:
0x0007c494 mov r0, sl | r0 = sl;
0x0007c496 bl 0x26dbc | fcn_00026dbc (r0);
0x0007c49a ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0007c49c b 0x7c0b4 | goto label_15;
| label_57:
0x0007c49e ldr r3, [pc, 0xd8] |
0x0007c4a0 add r3, pc | r3 = 0xf8a1e;
0x0007c4a2 b 0x7bdc2 | goto label_22;
| label_56:
0x0007c4a4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007c4a6 ldr r2, [sp, 0x18] | r2 = s1;
0x0007c4a8 orrs r3, r2 | r3 |= r2;
0x0007c4aa itt ne |
| if (r3 == r2) {
0x0007c4ac movne r3, 4 | r3 = 4;
| }
| if (r3 == r2) {
0x0007c4ae strbne r3, [sl, 5] | *((sl + 5)) = r3;
| }
0x0007c4b2 b 0x7bd98 | goto label_23;
| if (r5 == 0) {
| label_84:
0x0007c4b4 cbz r5, 0x7c4de | goto label_87;
| }
0x0007c4b6 ldr.w fp, [sl, 0xb8] | fp = *((sl + 0xb8));
0x0007c4ba ldr r1, [pc, 0xc0] |
0x0007c4bc mov r0, fp | r0 = fp;
0x0007c4be add r1, pc | r1 = 0xf8a40;
0x0007c4c0 bl 0x2c518 | fcn_0002c518 (r0, r1, r2);
0x0007c4c4 strb.w r0, [sl, 0xd] | *((sl + 0xd)) = r0;
0x0007c4c6 movs r5, r1 | r5 = r1;
| label_86:
0x0007c4c8 ldr r1, [pc, 0xb4] |
0x0007c4ca mov r0, fp | r0 = fp;
0x0007c4cc movs r2, 0 | r2 = 0;
0x0007c4ce add r1, pc | r1 = 0xf8a52;
0x0007c4d0 bl 0x2c518 | fcn_0002c518 (r0, r1, r2);
0x0007c4d4 str r0, [sp, 0x14] | var_14h = r0;
0x0007c4d6 cmp r0, 0 |
| if (r0 == 0) {
0x0007c4d8 beq.w 0x7bcce | goto label_24;
| }
0x0007c4dc b 0x7c31c | goto label_25;
| label_87:
0x0007c4de mov sb, r5 | sb = r5;
| label_85:
0x0007c4e0 mov r0, sl | r0 = sl;
0x0007c4e2 bl 0x2b554 | fcn_0002b554 (r0);
0x0007c4e6 ldr.w r3, [sl, 0x9c] | r3 = *((sl + 0x9c));
0x0007c4ea cmp.w r3, 0x1000 |
| if (r3 < 0x1000) {
0x0007c4ee bls.w 0x7c300 | goto label_26;
| }
0x0007c4f2 cmp.w r3, 0x2000 |
0x0007c4f6 it hi |
| if (r3 <= 0x2000) {
0x0007c4f8 movhi r3, 0x2000 | r3 = 0x2000;
| }
0x0007c4fc str r3, [sp, 0x30] | var_30h = r3;
0x0007c4fe b 0x7c300 | goto label_26;
| label_58:
0x0007c500 ldr r3, [pc, 0x80] |
0x0007c502 add r3, pc | r3 = 0xf8a8a;
0x0007c504 b 0x7bdc2 | goto label_22;
| label_68:
0x0007c506 ldr.w sl, [sp, 0x2c] | sl = var_2ch;
0x0007c50a b 0x7bf9e | goto label_27;
| label_81:
0x0007c50c ldr r3, [pc, 0x78] |
0x0007c50e ldr r1, [sp, 8] | r1 = var_8h;
0x0007c510 add r3, pc | r3 = 0xf8a9c;
0x0007c512 ldr.w r2, [r3, 0x520] | r2 = *(0xf8fbc);
0x0007c516 str.w r1, [r3, 0x520] | __asm ("str.w r1, [r3, 0x520]");
0x0007c51a str r2, [r1, 0x48] | *((r1 + 0x48)) = r2;
0x0007c51c b 0x7c0b8 | goto label_28;
| label_83:
0x0007c51e ldr r2, [pc, 0x6c] |
0x0007c520 ldr r0, [sp, 8] | r0 = var_8h;
0x0007c522 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0007c524 add r2, pc | r2 = 0xf8ab6;
0x0007c526 ldr.w r1, [r2, 0x520] | r1 = *(0xf8fd6);
0x0007c52a str.w r0, [r2, 0x520] | __asm ("str.w r0, [r2, 0x520]");
0x0007c52e str r1, [r0, 0x48] | *((r0 + 0x48)) = r1;
0x0007c530 b 0x7c0b4 | goto label_15;
| label_59:
0x0007c532 ldr r3, [pc, 0x5c] |
0x0007c534 add r3, pc | r3 = 0xf8aca;
0x0007c536 b 0x7bdc2 | goto label_22;
| label_64:
0x0007c538 blx 0x6430 | fcn_00006430 ();
0x0007c53c b 0x7c91c | goto label_88;
| label_29:
0x0007c900 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x0007c904 lsls r3, r5, 4 | r3 = r5 << 4;
0x0007c906 adds r1, r2, r3 | r1 = r2 + r3;
0x0007c908 ldr r1, [r1, 4] | r1 = *((r1 + 4));
| if (r1 == 0) {
0x0007c90a cbz r1, 0x7c936 | goto label_31;
| }
| if (r7 == 0) {
0x0007c90c cbz r7, 0x7c944 | goto label_89;
| }
0x0007c90e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007c910 add.w lr, r7, -1 | lr = r7 + -1;
0x0007c914 add.w ip, r3, -1 |
| do {
| label_30:
0x0007c918 ldrb r3, [lr, 1]! | r3 = *((lr += 1));
| label_88:
0x0007c91c ldrb r2, [ip, 1]! | r2 = *((ip += 1));
0x0007c920 adds r0, r4, r3 | r0 = r4 + r3;
0x0007c922 cmp r3, r2 |
0x0007c924 add.w r1, r4, r2 | r1 = r4 + r2;
| if (r3 == r2) {
0x0007c928 beq 0x7c940 | goto label_90;
| }
0x0007c92a ldrb.w r2, [r0, 0x140] | r2 = *((r0 + 0x140));
0x0007c92e ldrb.w r3, [r1, 0x140] | r3 = *((r1 + 0x140));
0x0007c932 cmp r2, r3 |
0x0007c934 beq 0x7c918 |
| } while (r2 == r3);
| label_31:
0x0007c936 adds r5, 1 | r5++;
0x0007c938 cmp sl, r5 |
| if (sl > r5) {
0x0007c93a bgt 0x7c900 | goto label_29;
| }
| label_32:
0x0007c93c pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_90:
0x0007c940 cmp r3, 0 |
| if (r3 != 0) {
0x0007c942 bne 0x7c918 | goto label_30;
| }
| label_89:
0x0007c944 ldr r0, [r6, 0x74] | r0 = *((r6 + 0x74));
0x0007c946 lsl.w r2, sb, r5 | r2 = sb << r5;
0x0007c94a cmp r0, 0 |
0x0007c94c it eq |
| if (r0 != 0) {
0x0007c94e moveq r0, r6 | r0 = r6;
| }
0x0007c950 ldr r3, [r0, 0x54] | r3 = *((r0 + 0x54));
0x0007c952 tst r3, r2 |
| if ((r3 & r2) != 0) {
0x0007c954 bne 0x7c936 | goto label_31;
| }
0x0007c956 cmp r5, 1 |
0x0007c958 orr.w r3, r3, r2 | r3 |= r2;
0x0007c95a lsls r2, r0, 0xc | r2 = r0 << 0xc;
0x0007c95c str r3, [r0, 0x54] | *((r0 + 0x54)) = r3;
| if (r2 != r0) {
0x0007c95e bne 0x7c936 | goto label_31;
| }
0x0007c960 bl 0x7c594 | fcn_0007c594 (r0);
0x0007c964 ldr.w sl, [r8, 0x14] | sl = *((r8 + 0x14));
0x0007c968 adds r5, 1 | r5++;
0x0007c96a cmp sl, r5 |
| if (sl > r5) {
0x0007c96c bgt 0x7c900 | goto label_29;
| }
0x0007c96e b 0x7c93c | goto label_32;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/sqlcipher @ 0xb4430 */
| #include <stdint.h>
|
; (fcn) fcn.000b4430 () | void fcn_000b4430 (int16_t arg1) {
| r0 = arg1;
0x000b4430 push.w {r4, r5, r6, r7, r8, lr} |
0x000b4434 mov r5, r0 | r5 = r0;
0x000b4436 ldrb.w ip, [r0, 5] | ip = *((r0 + 5));
0x000b443a rsb.w r4, ip, 1 | r4 = 1 - ip;
0x000b443e add.w r4, r0, r4, lsl 2 | r4 = r0 + (r4 << 2);
0x000b4442 ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
| if (r1 != 0) {
0x000b4444 cbz r1, 0xb445c |
0x000b4446 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x000b4448 ldr r0, [r0] | r0 = *(r0);
0x000b444a subs r3, 1 | r3--;
0x000b444c str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
| if (r3 == 0) {
0x000b444e cbnz r3, 0xb4458 |
0x000b4450 bl 0xb4180 | fcn_000b4180 (r0, r1);
0x000b4454 ldrb.w ip, [r5, 5] | ip = *((r5 + 5));
| }
0x000b4458 movs r3, 0 | r3 = 0;
0x000b445a str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
| }
0x000b445c cmp.w ip, 0 |
| if (ip == 0) {
0x000b4460 beq 0xb4478 | goto label_5;
| }
0x000b4462 ldrb.w r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x000b4466 movs r1, 0 | r1 = 0;
0x000b4468 add.w r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
0x000b446c ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x000b446e subs r2, 1 | r2--;
0x000b4470 str r2, [r3, 0x54] | *((r3 + 0x54)) = r2;
0x000b4472 strb r1, [r5, 5] | *((r5 + 5)) = r1;
| do {
| label_0:
0x000b4474 pop.w {r4, r5, r6, r7, r8, pc} |
| label_5:
0x000b4478 ldr.w r8, [r5, 0x18] | r8 = *((r5 + 0x18));
0x000b447c cmp.w r8, 0 |
0x000b4480 beq 0xb4474 |
| } while (r8 == 0);
0x000b4482 ldr r7, [r5, 0x20] | r7 = *((r5 + 0x20));
0x000b4484 add.w r6, r8, -1 | r6 = r8 + -1;
0x000b4488 add.w r4, r6, r6, lsl 1 | r4 = r6 + (r6 << 1);
0x000b448c cmp r6, 3 |
0x000b448e ldrb r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000b4490 mov lr, r7 | lr = r7;
0x000b4492 add.w r4, r7, r4, lsl 3 | r4 = r7 + (r4 << 3);
0x000b4496 add.w r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
0x000b449a ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x000b449c add.w r2, r2, -1 | r2 += -1;
0x000b44a0 str r2, [r3, 0x54] | *((r3 + 0x54)) = r2;
0x000b44a2 ldm r4!, {r0, r1, r2, r3} | r0 = *(r4!);
| r1 = *((r4! + 4));
| r2 = *((r4! + 8));
| r3 = *((r4! + 12));
0x000b44a4 str r6, [r5, 0x18] | *((r5 + 0x18)) = r6;
0x000b44a6 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000b44aa ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x000b44ae stm.w lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
| if (r6 <= 3) {
0x000b44b2 ble 0xb4558 | goto label_6;
| }
| label_4:
0x000b44b4 movs r1, 0 | r1 = 0;
0x000b44b6 movs r4, 1 | r4 = 1;
0x000b44b8 mov r3, r1 | r3 = r1;
0x000b44ba b 0xb44fe | goto label_7;
| if (r4 >= 1) {
| label_2:
0x000b44bc bmi 0xb44ca |
0x000b44be ldrb.w r0, [ip, 0x10] | r0 = *((ip + 0x10));
0x000b44c2 ldrb.w r2, [lr, 0x10] | r2 = *((lr + 0x10));
0x000b44c6 cmp r0, r2 |
| if (r0 <= r2) {
0x000b44c8 blo 0xb452c | goto label_8;
| }
| }
| label_1:
0x000b44ca add r3, r1 | r3 += r1;
0x000b44cc add.w r3, r7, r3, lsl 3 | r3 = r7 + (r3 << 3);
0x000b44d0 vldr d17, [r3] | __asm ("vldr d17, [r3]");
0x000b44d4 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x000b44d8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < r2) {
0x000b44dc bmi 0xb44ea | goto label_9;
| }
| if (r0 > r2) {
0x000b44de bgt 0xb4474 | goto label_0;
| }
0x000b44e0 ldrb.w r2, [lr, 0x10] | r2 = *((lr + 0x10));
0x000b44e4 ldrb r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000b44e6 cmp r2, r3 |
| if (r2 >= r3) {
0x000b44e8 bhs 0xb4474 | goto label_0;
| }
| label_9:
0x000b44ea mov r2, r4 | r2 = r4;
0x000b44ec mov r0, r5 | r0 = r5;
0x000b44ee bl 0xb42cc | fcn_000b42cc (r0, r1, r2);
0x000b44f2 mov r1, r4 | r1 = r4;
| label_3:
0x000b44f4 lsls r3, r1, 1 | r3 = r1 << 1;
0x000b44f6 adds r4, r3, 1 | r4 = r3 + 1;
0x000b44f8 cmp r6, r4 |
| if (r6 <= r4) {
0x000b44fa ble 0xb4474 | goto label_0;
| }
0x000b44fc ldr r7, [r5, 0x20] | r7 = *((r5 + 0x20));
| label_7:
0x000b44fe add.w ip, r1, 1 |
0x000b4502 add.w lr, r4, r4, lsl 1 | lr = r4 + (r4 << 1);
0x000b4506 lsl.w r8, ip, 1 | r8 = ip << 1;
0x000b450a add.w lr, r7, lr, lsl 3 | lr = r7 + (lr << 3);
0x000b450e cmp r6, r8 |
0x000b4510 vldr d16, [lr] | __asm ("vldr d16, [lr]");
| if (r6 <= r8) {
0x000b4514 ble 0xb44ca | goto label_1;
| }
0x000b4516 add.w ip, r8, ip, lsl 2 |
0x000b451a add.w ip, r7, ip, lsl 3 |
0x000b451e vldr d17, [ip] | __asm ("vldr d17, [ip]");
0x000b4522 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x000b4526 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r6 <= r8) {
0x000b452a ble 0xb44bc | goto label_2;
| }
| label_8:
0x000b452c add r3, r1 | r3 += r1;
0x000b452e add.w r3, r7, r3, lsl 3 | r3 = r7 + (r3 << 3);
0x000b4532 vldr d16, [r3] | __asm ("vldr d16, [r3]");
0x000b4536 vcmpe.f64 d17, d16 | __asm ("vcmpe.f64 d17, d16");
0x000b453a vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r6 < r8) {
0x000b453e bmi 0xb454c | goto label_10;
| }
| if (r6 > r8) {
0x000b4540 bgt 0xb4474 | goto label_0;
| }
0x000b4542 ldrb.w r2, [ip, 0x10] | r2 = *((ip + 0x10));
0x000b4546 ldrb r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000b4548 cmp r2, r3 |
| if (r2 >= r3) {
0x000b454a bhs 0xb4474 | goto label_0;
| }
| label_10:
0x000b454c mov r2, r8 | r2 = r8;
0x000b454e mov r0, r5 | r0 = r5;
0x000b4550 bl 0xb42cc | fcn_000b42cc (r0, r1, r2);
0x000b4554 mov r1, r8 | r1 = r8;
0x000b4556 b 0xb44f4 | goto label_3;
| label_6:
0x000b4558 add.w r8, r5, r8, lsl 2 | r8 = r5 + (r8 << 2);
0x000b455c cmp r6, 1 |
0x000b455e ldr.w r3, [r8, 0x40] | r3 = *((r8 + 0x40));
0x000b4562 str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x000b4564 str.w ip, [r8, 0x40] | __asm ("str.w ip, [r8, 0x40]");
| if (r6 > 1) {
0x000b4568 bgt 0xb44b4 | goto label_4;
| }
0x000b456a b 0xb4474 | goto label_0;
| }
[*] Function sprintf used 1 times sqlcipher