[*] Binary protection state of dev-conf-service
Full RELRO No Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of dev-conf-service
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x22055e */
| #include <stdint.h>
|
; (fcn) case.0x206252.145 () | void case_0x206252_145 (int16_t arg_bp_a0h, int16_t arg_710h, int16_t arg_3ch, int16_t arg2) {
| r1 = arg2;
0x0022055e adr r0, 0x180 | r0 = 0x180;
0x00220560 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x00220564 cmp r0, 0 |
| if (r0 == 0) {
0x00220566 beq.w 0x222280 | goto label_0;
| }
0x0022056a mov r5, r0 | r5 = r0;
0x0022056c movs r0, 2 | r0 = 2;
0x0022056e strd r0, r6, [r5, 0x1c] | __asm ("strd r0, r6, [r5, 0x1c]");
0x00220572 addw r0, sp, 0x9c8 | __asm ("addw r0, sp, aav.0x000000ff");
0x00220576 adds r0, 3 | r0 += 3;
0x00220578 add.w r1, sp, 0x550 | r1 = sp + 0x550;
0x0022057c mov.w sl, 0 | sl = 0;
0x00220580 mov.w sb, 1 | sb = 1;
0x00220584 movs r2, 0x48 | r2 = 0x48;
0x00220586 strb.w sl, [r5, 0x18] | *((r5 + 0x18)) = sl;
0x0022058a strd sl, sl, [r5, 0x10] | __asm ("strd sl, sl, [r5, 0x10]");
0x0022058e strb.w sl, [r5, 0xc] | *((r5 + 0xc)) = sl;
0x00220592 strd sb, sb, [r5] | __asm ("strd sb, sb, [r5]");
0x00220596 str.w sl, [r5, 8] | __asm ("str.w sl, [r5, 8]");
0x0022059a blx 0x26b48 | fcn_00026b48 ();
0x0022059e movs r0, 0x58 | r0 = 0x58;
0x002205a0 movs r1, 8 | r1 = 8;
0x002205a2 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x002205a6 cmp r0, 0 |
| if (r0 == 0) {
0x002205a8 beq.w 0x222284 | goto label_1;
| }
0x002205ac mov r4, r0 | r4 = r0;
0x002205ae strb.w sl, [r0, 0xc] | *((r0 + 0xc)) = sl;
0x002205b2 strd sb, sb, [r0] | __asm ("strd sb, sb, [r0]");
0x002205b6 addw r1, sp, 0x9c8 | __asm ("addw r1, sp, aav.0x000000ff");
0x002205ba str.w sl, [r0, 8] | __asm ("str.w sl, [r0, 8]");
0x002205be adds r0, 0xd | r0 += 0xd;
0x002205c0 movs r2, 0x4b | r2 = 0x4b;
0x002205c2 blx 0x26b48 | fcn_00026b48 ();
0x002205c6 str.w r4, [fp, 0x710] | __asm ("str.w r4, [arg_710h]");
| do {
0x002205ca ldrex r0, [r4] | __asm ("ldrex r0, [r4]");
0x002205ce adds r1, r0, 1 | r1 = r0 + 1;
0x002205d0 strex r2, r1, [r4] | __asm ("strex r2, r1, [r4]");
0x002205d4 cmp r2, 0 |
0x002205d6 bne 0x2205ca |
| } while (r2 != 0);
0x002205d8 cmp.w r0, -1 |
0x002205dc str r5, [sp, 0x90] | *((sp + 0x90)) = r5;
| if (r0 <= -1) {
0x002205de ble.w 0x223fec | void (*0x223fec)() ();
| }
0x002205e2 movs r0, 0x14 | r0 = 0x14;
0x002205e4 movs r1, 4 | r1 = 4;
0x002205e6 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x002205ea cmp r0, 0 |
| if (r0 == 0) {
0x002205ec beq.w 0x222288 | goto label_2;
| }
0x002205f0 mov sl, r0 | sl = r0;
0x002205f2 movs r0, 1 | r0 = 1;
0x002205f4 strd r0, r0, [sl] | __asm ("strd r0, r0, [sl]");
0x002205f8 strd r4, r7, [sl, 8] | __asm ("strd r4, r7, [sl, 8]");
0x002205fc str.w r6, [sl, 0x10] | __asm ("str.w r6, [sl, 0x10]");
0x00220600 bl 0x1ae138 | r0 = fcn_001ae138 (r0);
0x00220604 mov fp, r0 |
0x00220606 ldr r0, [pc, 0x3e4] |
0x00220608 mov sb, r1 | sb = r1;
0x0022060a add r0, pc | r0 = 0x440ffc;
0x0022060c bl 0x1ae094 | fcn_001ae094 (r0);
0x00220610 mov r6, r1 | r6 = r1;
0x00220612 str.w r1, [sp, 0x8e4] | __asm ("str.w r1, aav.0x000000ff");
0x00220616 add.w r1, sp, 0x8e0 | r1 = sp + 0x8e0;
0x0022061a cmp r0, 0 |
0x0022061c add.w r5, r1, 4 | r5 = r1 + 4;
0x00220620 str.w r0, [sp, 0x8e0] | __asm ("str.w r0, aav.0x000000ff");
| if (r0 == 0) {
0x00220624 beq 0x2206f4 | goto label_3;
| }
0x00220626 add.w r3, r6, 8 | r3 = r6 + 8;
0x0022062a add r4, sp, 0x2d0 | r4 = sp + 0x2d0;
| do {
0x0022062c ldrex r0, [r6] | __asm ("ldrex r0, [r6]");
0x00220630 adds r1, r0, 1 | r1 = r0 + 1;
0x00220632 strex r2, r1, [r6] | __asm ("strex r2, r1, [r6]");
0x00220636 cmp r2, 0 |
0x00220638 bne 0x22062c |
| } while (r2 != 0);
0x0022063a cmp.w r0, -1 |
| if (r0 <= -1) {
0x0022063e ble.w 0x223fec | void (*0x223fec)() ();
| }
0x00220642 mov.w r0, 0x1d0 | r0 = 0x1d0;
0x00220646 movs r1, 8 | r1 = 8;
0x00220648 str r3, [sp, 0x8c] | *(arg_3ch) = r3;
0x0022064a bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x0022064e cmp r0, 0 |
| if (r0 == 0) {
0x00220650 beq.w 0x22228c | goto label_4;
| }
0x00220654 mov r7, r0 | r7 = r0;
0x00220656 mov r0, r4 | r0 = r4;
0x00220658 vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x0022065c movs r5, 0 | r5 = 0;
0x0022065e movs r2, 0xcc | r2 = 0xcc;
0x00220660 ldr r1, [pc, 0x38c] |
0x00220662 strd r2, r5, [r7] | __asm ("strd r2, r5, [r7]");
0x00220666 movw r2, 0x173 | r2 = 0x173;
0x0022066a add r1, pc | r1 = 0x44105e;
0x0022066c str r1, [r7, 8] | *((r7 + 8)) = r1;
0x0022066e strd r5, r5, [r7, 0x10] | __asm ("strd r5, r5, [r7, 0x10]");
0x00220672 addw r1, sp, 0x9c8 | __asm ("addw r1, sp, aav.0x000000ff");
0x00220676 vldr d18, [r0] | __asm ("vldr d18, [r0]");
0x0022067a add.w r0, r7, 0x30 | r0 = r7 + 0x30;
0x0022067e vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x00220682 vstr d18, [r0] | __asm ("vstr d18, [r0]");
0x00220686 add.w r0, r7, 0x4d | r0 = r7 + 0x4d;
0x0022068a str r6, [r7, 0x18] | *((r7 + 0x18)) = r6;
0x0022068c strb.w r5, [r7, 0x4c] | *((r7 + 0x4c)) = r5;
0x00220690 str.w sl, [r7, 0x48] | __asm ("str.w sl, [r7, 0x48]");
0x00220694 strd fp, sb, [r7, 0x20] | __asm ("strd fp, sb, [r7, 0x20]");
0x00220698 strd r5, r5, [r7, 0x28] | __asm ("strd r5, r5, [r7, 0x28]");
0x0022069c blx 0x26b48 | fcn_00026b48 ();
0x002206a0 vmov.i32 q8, 0 | __asm ("vmov.i32 q8, 0");
0x002206a4 add.w r0, r7, 0x1c0 | r0 = r7 + 0x1c0;
0x002206a8 vst1.64 {d16, d17}, [r0] | __asm ("vst1.64 {d16, d17}, [r0]");
0x002206ac ldrd r0, r1, [r6, 8] | __asm ("ldrd r0, r1, [r6, 8]");
0x002206b0 strd r0, r1, [r7, 0x10] | __asm ("strd r0, r1, [r7, 0x10]");
0x002206b4 add.w r1, r6, 0x10 | r1 = r6 + 0x10;
0x002206b8 mov r6, r4 | r6 = r4;
0x002206ba add r4, sp, 0xc0 | r4 = sp + 0xc0;
0x002206bc mov r0, r4 | r0 = r4;
0x002206be bl 0x1ab3b4 | fcn_001ab3b4 (r0, r1, r2);
0x002206c2 ldr r0, [sp, 0xc4] | r0 = *(arg_bp_a0h);
0x002206c4 ldrb.w r1, [sp, 0xc8] | r1 = *((sp + 0xc8));
0x002206c8 strb.w r1, [sp, 0x24c] | *((sp + 0x24c)) = r1;
0x002206cc ldrb r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x002206ce str r0, [sp, 0x248] | *((sp + 0x248)) = r0;
0x002206d0 cmp r2, 0 |
| if (r2 == 0) {
0x002206d2 beq.w 0x2207da | goto label_5;
| }
0x002206d6 str r0, [sp, 0xc0] | *((sp + 0xc0)) = r0;
0x002206d8 add r0, sp, 0xc0 | r0 = sp + 0xc0;
0x002206da strb.w r1, [sp, 0xc4] | *(arg_bp_a0h) = r1;
0x002206de invalid |
0x002206e2 movs r0, r0 |
0x002206e4 movs r1, r0 | r1 = r0;
0x002206e6 movs r0, r0 |
0x002206e8 movs r0, r0 |
0x002206ea movs r0, r0 |
0x002206ec ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x002206ee mov r0, r7 | r0 = r7;
0x002206f0 movs r0, r0 |
0x002206f2 movs r0, r0 |
| label_3:
0x002206f4 movs r0, r0 |
0x002206f6 movs r0, r0 |
0x002206f8 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
0x002206fa adds r1, r0, 1 | r1 = r0 + 1;
0x002206fc movs r2, r0 | r2 = r0;
0x002206fe movs r0, r0 |
0x00220700 movs r0, r0 |
0x00220702 movs r0, r0 |
0x00220704 cmp.w r0, -1 |
| if (r0 <= -1) {
0x00220708 ble.w 0x223fec | void (*0x223fec)() ();
| }
0x0022070c mov.w r0, 0x1d0 | r0 = 0x1d0;
0x00220710 movs r1, 8 | r1 = 8;
0x00220712 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x00220716 cmp r0, 0 |
| if (r0 != 0) {
0x00220718 beq.w 0x22228c |
0x0022071c mov r7, r0 | r7 = r0;
0x0022071e vld1.64 {d16, d17}, [r4]! | __asm ("vld1.64 {d16, d17}, [r4]!");
0x00220722 movs r1, 0 | r1 = 0;
0x00220724 movs r2, 0xcc | r2 = 0xcc;
0x00220726 ldr r0, [pc, 0x2cc] |
0x00220728 strd r2, r1, [r7] | __asm ("strd r2, r1, [r7]");
0x0022072c movw r2, 0x173 | r2 = 0x173;
0x00220730 add r0, pc | r0 = 0x44112a;
0x00220732 str r0, [r7, 8] | *((r7 + 8)) = r0;
0x00220734 add.w r0, r7, 0x30 | r0 = r7 + 0x30;
0x00220738 strd r1, r1, [r7, 0x10] | __asm ("strd r1, r1, [r7, 0x10]");
0x0022073c vldr d18, [r4] | __asm ("vldr d18, [r4]");
0x00220740 vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x00220744 vstr d18, [r0] | __asm ("vstr d18, [r0]");
0x00220748 add.w r0, r7, 0x4d | r0 = r7 + 0x4d;
0x0022074c strb.w r1, [r7, 0x4c] | *((r7 + 0x4c)) = r1;
0x00220750 strd r1, r1, [r7, 0x28] | __asm ("strd r1, r1, [r7, 0x28]");
0x00220754 addw r1, sp, 0x9c8 | __asm ("addw r1, sp, aav.0x000000ff");
0x00220758 str r6, [r7, 0x18] | *((r7 + 0x18)) = r6;
0x0022075a str.w sl, [r7, 0x48] | __asm ("str.w sl, [r7, 0x48]");
0x0022075e strd fp, sb, [r7, 0x20] | __asm ("strd fp, sb, [r7, 0x20]");
0x00220762 blx 0x26b48 | fcn_00026b48 ();
0x00220766 vmov.i32 q8, 0 | __asm ("vmov.i32 q8, 0");
0x0022076a add.w r0, r7, 0x1c0 | r0 = r7 + 0x1c0;
0x0022076e ldr.w fp, [sp, 0x88] | fp = *((sp + 0x88));
0x00220772 add.w r4, r6, 0x10 | r4 = r6 + 0x10;
0x00220776 invalid |
| label_5:
0x002207da adds r0, 8 | r0 += 8;
0x002207dc mov r1, r7 | r1 = r7;
0x002207de bl 0x1f2b0c | fcn_001f2b0c (r0, r1);
0x002207e2 add r0, sp, 0x248 | r0 = sp + 0x248;
0x002207e4 bl 0x1f2ac0 | fcn_001f2ac0 (r0, r1);
0x002207e8 ldr r0, [sp, 0x8c] | r0 = *(arg_3ch);
0x002207ea str r0, [sp, 0x2d0] | *((sp + 0x2d0)) = r0;
0x002207ec addw r0, sp, 0x9c8 | __asm ("addw r0, sp, aav.0x000000ff");
0x002207f0 strb.w r5, [sp, 0xc0] | *((sp + 0xc0)) = r5;
0x002207f4 str.w r4, [sp, 0x9d0] | __asm ("str.w r4, aav.0x000000ff");
0x002207f8 str.w r7, [sp, 0x9cc] | __asm ("str.w r7, aav.0x000000ff");
0x002207fc str.w r6, [sp, 0x9c8] | __asm ("str.w r6, aav.0x000000ff");
0x00220800 bl 0x1ad9e4 | fcn_001ad9e4 (r0);
0x00220804 ldr.w fp, [sp, 0x88] | fp = *((sp + 0x88));
| label_0:
0x00222280 movs r0, 0x24 | r0 = 0x24;
0x00222282 b 0x2222b4 | goto label_6;
| label_1:
0x00222284 movs r0, 0x58 | r0 = 0x58;
0x00222286 b 0x222296 | void (*0x222296)() ();
| label_2:
0x00222288 movs r0, 0x14 | r0 = 0x14;
0x0022228a b 0x2222b4 |
| } else {
| label_4:
0x0022228c mov.w r0, 0x1d0 | r0 = 0x1d0;
0x00222290 b 0x222296 | void (*0x222296)() ();
| }
| label_6:
0x002222b4 movs r1, 4 | r1 = 4;
0x002222b6 bl 0x281ae | fcn_000281ae ();
0x002222ba trap | __asm ("trap");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x21b26a */
| #include <stdint.h>
|
; (fcn) case.0x206252.222 () | void case_0x206252_222 (int16_t arg2, int16_t arg3) {
| int16_t var_190h;
| int16_t var_194h;
| int16_t var_198h;
| int16_t var_19ch;
| r1 = arg2;
| r2 = arg3;
0x0021b26a ldrd r0, r1, [r5, 8] | __asm ("ldrd r0, r1, [r5, 8]");
0x0021b26e strd r0, r1, [r4, 0x10] | __asm ("strd r0, r1, [r4, 0x10]");
0x0021b272 movs r0, 1 | r0 = 1;
| do {
0x0021b274 ldrex r1, [r6] | __asm ("ldrex r1, [r6]");
0x0021b278 cmp r1, 0 |
| if (r1 != 0) {
0x0021b27a bne 0x21b30c | goto label_1;
| }
0x0021b27c strex r1, r0, [r6] | __asm ("strex r1, r0, [r6]");
0x0021b280 cmp r1, 0 |
0x0021b282 bne 0x21b274 |
| } while (r1 != 0);
0x0021b284 dmb ish | __asm ("dmb ish");
| do {
0x0021b288 ldr r0, [pc, 0xb0] |
0x0021b28a add r0, pc |
0x0021b28c ldr r0, [r0] | r0 = *(0x4365ca);
0x0021b28e lsls r0, r0, 1 | r0 <<= 1;
| if (r0 != r0) {
0x0021b290 bne 0x21b318 | goto label_2;
| }
0x0021b292 movs r0, 0 | r0 = 0;
| label_0:
0x0021b294 ldrb r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x0021b296 ldrb.w r1, [r5, 0x20] | r1 = *((r5 + 0x20));
0x0021b29a strb.w r0, [sp, 0x194] | var_194h = r0;
0x0021b29e str r6, [sp, 0x190] | var_190h = r6;
| if (r1 != 0) {
0x0021b2a0 cbz r1, 0x21b2e6 |
0x0021b2a2 strb.w r0, [sp, 0x19c] | var_19ch = r0;
0x0021b2a6 add r0, sp, 0x198 | r0 += var_198h;
0x0021b2a8 str r6, [sp, 0x198] | var_198h = r6;
0x0021b2aa bl 0x203270 | fcn_00203270 (r0, r1);
0x0021b2ae add r0, sp, 0x198 | r0 += var_198h;
0x0021b2b0 str r4, [sp, 0x198] | var_198h = r4;
0x0021b2b2 bl 0x1a5b24 | fcn_001a5b24 (r0, r1);
0x0021b2b6 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0021b2b8 ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x0021b2ba mov r0, r4 | r0 = r4;
0x0021b2bc blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0021b2be b 0x21b2fe |
| } else {
0x0021b2e6 add.w r0, r5, 0x18 | r0 = r5 + 0x18;
0x0021b2ea mov r1, r4 | r1 = r4;
0x0021b2ec bl 0x2032bc | fcn_002032bc (r0, r1);
0x0021b2f0 add r0, sp, 0x190 | r0 += var_190h;
0x0021b2f2 bl 0x203270 | fcn_00203270 (r0, r1);
0x0021b2f6 mov r0, r8 | r0 = r8;
0x0021b2f8 mov r1, r4 | r1 = r4;
0x0021b2fa bl 0x1b144c | fcn_001b144c (r0, r1);
| }
0x0021b2fe mov r0, sp | r0 = sp;
0x0021b300 bl 0x1f2a70 | fcn_001f2a70 (r0);
0x0021b304 mov r0, r4 | r0 = r4;
0x0021b306 add sp, 0x1a4 |
0x0021b308 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x0021b30c mov r0, r6 | r0 = r6;
0x0021b30e clrex | __asm ("clrex");
0x0021b312 bl 0x3129c | fcn_0003129c (r0, r1, r2);
0x0021b316 b 0x21b288 |
| } while (1);
| label_2:
0x0021b318 bl 0x30fe0 | r0 = fcn_00030fe0 ();
0x0021b31c eor r0, r0, 1 | r0 ^= 1;
0x0021b320 b 0x21b294 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x220778 */
| #include <stdint.h>
|
; (fcn) case.0x21822e.171 () | void case_0x21822e_171 (int16_t arg_538h_2, int16_t arg_53ch_2, int16_t arg_540h_2, int16_t arg_544h_2, int16_t arg_548h_2, int16_t arg_54ch_2, int16_t arg_554h_2, int16_t arg_558h_2, int16_t arg_560h_2, int16_t arg_698h_2, int16_t arg_69ch_2, int16_t arg_6a0h_2, int16_t arg_6a4h_2, int16_t arg_6a8h_2, int16_t arg_6ach_2, int16_t arg_6b0h_2, int16_t arg_6b4h_2, int16_t arg_6c0h_2, int16_t arg_6c1h_2, int16_t arg_6c8h_2, int16_t arg_6cch_2, int16_t arg_6d0h_2, int16_t arg_6d4h_2, int16_t arg_6d8h_2, int16_t arg_6e0h_2, int16_t arg_6e8h_2, int16_t arg_6f0h_2, int16_t arg_710h_2, int16_t arg_bp_a0h, int16_t arg_198h, int16_t arg_2b8h, int16_t arg_368h, int16_t arg_370h, int16_t arg_538h, int16_t arg_53ch, int16_t arg_540h, int16_t arg_544h, int16_t arg_548h, int16_t arg_54ch, int16_t arg_bp_550h, int16_t arg_554h, int16_t arg_558h, int16_t arg_560h, int16_t arg_698h, int16_t arg_69ch, int16_t arg_6a0h, int16_t arg_6a4h, int16_t arg_6a8h, int16_t arg_6ach, int16_t arg_6b0h, int16_t arg_6b4h, int16_t arg_6c0h, int16_t arg_6c1h, int16_t arg_6c8h, int16_t arg_6cch, int16_t arg_6d0h, int16_t arg_6d4h, int16_t arg_6d8h, int16_t arg_6e0h, int16_t arg_6e8h, int16_t arg_6ech, int16_t arg_6f0h, int16_t arg_6f8h, int16_t arg_6fch, int16_t arg_700h, int16_t arg_704h, int16_t arg_708h, int16_t arg_710h, int16_t arg_718h, int16_t arg_720h, int16_t arg_3ch, int16_t arg_550h, int16_t arg_8a0h, int16_t arg_8b4h, int16_t arg_8c8h, int16_t arg_9f0h, int16_t arg_a20h, int16_t arg2, int16_t arg3) {
| r1 = arg2;
| r2 = arg3;
0x00220778 lsrs r7, r1, 0xb | r7 = r1 >> 0xb;
0x0022077a ldrd r0, r1, [r6, 8] | __asm ("ldrd r0, r1, [r6, 8]");
0x0022077e strd r0, r1, [r7, 0x10] | __asm ("strd r0, r1, [r7, 0x10]");
0x00220782 movs r0, 1 | r0 = 1;
| do {
0x00220784 ldrex r1, [r4] | __asm ("ldrex r1, [r4]");
0x00220788 cmp r1, 0 |
| if (r1 != 0) {
0x0022078a bne.w 0x221600 | goto label_2;
| }
0x0022078e strex r1, r0, [r4] | __asm ("strex r1, r0, [r4]");
0x00220792 cmp r1, 0 |
0x00220794 bne 0x220784 |
| } while (r1 != 0);
0x00220796 dmb ish | __asm ("dmb ish");
| label_0:
0x0022079a ldr r0, [pc, 0x25c] |
0x0022079c add r0, pc |
0x0022079e ldr r0, [r0] | r0 = *(0x44119a);
0x002207a0 lsls r0, r0, 1 | r0 <<= 1;
0x002207a2 mov.w r0, 0 | r0 = 0;
| if (r0 != r0) {
0x002207a6 bne.w 0x22160e | goto label_3;
| }
| label_1:
0x002207aa ldrb r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x002207ac ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x002207b0 strb.w r0, [sp, 0x24c] | *((sp + 0x24c)) = r0;
0x002207b4 cmp r1, 0 |
0x002207b6 str r4, [sp, 0x248] | *((sp + 0x248)) = r4;
| if (r1 == 0) {
0x002207b8 beq.w 0x220bae | goto label_4;
| }
0x002207bc strb.w r0, [sp, 0xc4] | *(arg_bp_a0h) = r0;
0x002207c0 add r0, sp, 0xc0 | r0 = sp + 0xc0;
0x002207c2 str r4, [sp, 0xc0] | *((sp + 0xc0)) = r4;
0x002207c4 bl 0x203270 | fcn_00203270 (r0, r1);
0x002207c8 add r0, sp, 0xc0 | r0 = sp + 0xc0;
0x002207ca str r7, [sp, 0xc0] | *((sp + 0xc0)) = r7;
0x002207cc bl 0x1a5b24 | fcn_001a5b24 (r0, r1);
0x002207d0 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x002207d2 ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x002207d4 mov r0, r7 | r0 = r7;
0x002207d6 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x002207d8 b 0x220808 |
| while (1) {
0x00220808 add.w r0, sp, 0x8e0 | r0 = sp + 0x8e0;
0x0022080c bl 0x1f2a70 | fcn_001f2a70 (r0);
0x00220810 add.w r1, sp, 0x550 | r1 = sp + 0x550;
0x00220814 ldr.w r0, [sp, 0x5a0] | r0 = *(arg_550h);
0x00220818 str.w r0, [sp, 0x9d4] | __asm ("str.w r0, aav.0x000000ff");
0x0022081c vldr d16, [r1, 0x48] | __asm ("vldr d16, [r1, 0x48]");
0x00220820 ldr.w r1, [fp, 0x710] | r1 = *(arg_710h);
0x00220824 str r1, [sp, 0x8c] | *(arg_3ch) = r1;
0x00220826 addw r1, sp, 0x968 | __asm ("addw r1, sp, aav.0x000000ff");
0x0022082a vstr d16, [r1, 0x64] | __asm ("vstr d16, [r1, 0x64]");
0x0022082e bl 0x10036c | r0 = fcn_0010036c ();
0x00220832 mov r6, r0 | r6 = r0;
0x00220834 add r0, sp, 0x7c | r0 = sp + 0x7c;
0x00220836 stm r0!, {r1, r2, r3} | *(r0!) = r1;
| *((r0! + 4)) = r2;
| *((r0! + 8)) = r3;
0x00220838 bl 0x10036c | r0 = fcn_0010036c ();
0x0022083c mov r4, r0 | r4 = r0;
0x0022083e str r1, [sp, 0x74] | *((sp + 0x74)) = r1;
0x00220840 mov.w r0, 0x138 | r0 = 0x138;
0x00220844 movs r1, 8 | r1 = 8;
0x00220846 mov sb, r2 | sb = r2;
0x00220848 mov sl, r3 | sl = r3;
0x0022084a bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x0022084e cmp r0, 0 |
| if (r0 == 0) {
0x00220850 beq.w 0x222292 | goto label_5;
| }
0x00220854 mov r3, r0 | r3 = r0;
0x00220856 ldr r0, [pc, 0x1a4] |
0x00220858 movs r1, 2 | r1 = 2;
0x0022085a str r6, [r3, 0x58] | *((r3 + 0x58)) = r6;
0x0022085c add r0, pc | r0 = 0x44125e;
0x0022085e movs r6, 0 | r6 = 0;
0x00220860 ldr r2, [sp, 0x7c] | r2 = *((sp + 0x7c));
0x00220862 movs r5, 1 | r5 = 1;
0x00220864 str r2, [r3, 0x5c] | *((r3 + 0x5c)) = r2;
0x00220866 ldr r2, [sp, 0x80] | r2 = *((sp + 0x80));
0x00220868 str r1, [r3, 0x54] | *((r3 + 0x54)) = r1;
0x0022086a strd r1, r4, [r3, 0x1c] | __asm ("strd r1, r4, [r3, 0x1c]");
0x0022086e str r0, [r3, 0x6c] | *((r3 + 0x6c)) = r0;
0x00220870 strd r6, r0, [r3, 0x30] | __asm ("strd r6, r0, [r3, 0x30]");
0x00220874 ldr r0, [sp, 0x84] | r0 = *((sp + 0x84));
0x00220876 ldr r1, [sp, 0x74] | r1 = *((sp + 0x74));
0x00220878 str r2, [r3, 0x60] | *((r3 + 0x60)) = r2;
0x0022087a add.w r2, r3, 0x24 | r2 = r3 + 0x24;
0x0022087e str r0, [r3, 0x64] | *((r3 + 0x64)) = r0;
0x00220880 add.w r0, r3, 0x70 | r0 = r3 + 0x70;
0x00220884 stm.w r2, {r1, sb, sl} | *(r2) = r1;
| *((r2 + 4)) = sb;
| *((r2 + 8)) = sl;
0x00220888 movs r1, 0 | r1 = 0;
0x0022088a movs r2, 0x8c | r2 = 0x8c;
0x0022088c str r6, [r3, 0x3c] | *((r3 + 0x3c)) = r6;
0x0022088e strb r6, [r3, 0x18] | *((r3 + 0x18)) = r6;
0x00220890 strd r6, r6, [r3, 0x10] | __asm ("strd r6, r6, [r3, 0x10]");
0x00220894 strb r6, [r3, 0xc] | *((r3 + 0xc)) = r6;
0x00220896 strd r5, r5, [r3] | __asm ("strd r5, r5, [r3]");
0x0022089a str r6, [r3, 8] | *((r3 + 8)) = r6;
0x0022089c str.w r6, [r3, 0x41] | __asm ("str.w r6, [r3, 0x41]");
0x002208a0 str.w r6, [r3, 0x3d] | __asm ("str.w r6, [r3, 0x3d]");
0x002208a4 str r6, [r3, 0x68] | *((r3 + 0x68)) = r6;
0x002208a6 strb.w r6, [r3, 0x50] | *((r3 + 0x50)) = r6;
0x002208aa strd r6, r6, [r3, 0x48] | __asm ("strd r6, r6, [r3, 0x48]");
0x002208ae str r6, [r3, 0x38] | *((r3 + 0x38)) = r6;
0x002208b0 str r3, [sp, 0x84] | *((sp + 0x84)) = r3;
0x002208b2 blx 0x2699c | gai_strerror ();
0x002208b6 ldr r1, [sp, 0x84] | r1 = *((sp + 0x84));
0x002208b8 addw r0, sp, 0x9c8 | __asm ("addw r0, sp, aav.0x000000ff");
0x002208bc vld1.64 {d16, d17}, [r0] | __asm ("vld1.64 {d16, d17}, [r0]");
0x002208c0 add.w r3, r1, 0x11c | r3 = r1 + 0x11c;
0x002208c4 ldr r0, [sp, 0x98] | r0 = *((sp + 0x98));
0x002208c6 strb.w r0, [r1, 0x134] | *((r1 + 0x134)) = r0;
0x002208ca movs r0, 3 | r0 = 3;
0x002208cc strd r0, r6, [r1, 0x110] | __asm ("strd r0, r6, aav.0x000000ff");
0x002208d0 ldr r0, [sp, 0x8c] | r0 = *(arg_3ch);
0x002208d2 ldr.w sl, [sp, 0x64] | sl = *((sp + 0x64));
0x002208d6 stm r3!, {r0, r5, r7} | *(r3!) = r0;
| *((r3! + 4)) = r5;
| *((r3! + 8)) = r7;
0x002208d8 add.w r0, r1, 0xfc | r0 = r1 + 0xfc;
0x002208dc vst1.32 {d16, d17}, [r0]! | __asm ("vst1.32 {d16, d17}, [r0]!");
0x002208e0 ldr r2, [sp, 0x9c] | r2 = *((sp + 0x9c));
0x002208e2 str r6, [r0] | *(r0) = r6;
0x002208e4 ldr r0, [sp, 0x90] | r0 = *((sp + 0x90));
0x002208e6 cmp r2, 0 |
0x002208e8 strb.w r2, [r1, 0x135] | *((r1 + 0x135)) = r2;
0x002208ec str.w r6, [r1, 0x118] | __asm ("str.w r6, aav.0x000000ff");
0x002208f0 strd r6, r6, [r1, 0x128] | __asm ("strd r6, r6, aav.0x000000ff");
0x002208f4 str.w r1, [sl, 0x5d4] | __asm ("str.w r1, aav.0x000000ff");
0x002208f8 strb.w r5, [sl, 0x5e7] | *((sl + 0x5e7)) = r5;
0x002208fc str.w r8, [fp, 0x718] | __asm ("str.w r8, [arg_718h]");
0x00220900 str.w r0, [sl, 0x5dc] | __asm ("str.w r0, aav.0x000000ff");
0x00220904 addw r0, sl, 0x5d4 | __asm ("addw r0, sl, aav.0x000000ff");
0x00220908 strb.w r6, [fp, 0x720] | *(arg_720h) = r6;
| if (r2 != 0) {
0x0022090c beq 0x2209be |
0x0022090e ldr.w sl, [sp, 0x60] | sl = *((sp + 0x60));
0x00220912 add.w r7, fp, 0x198 | r7 += arg_198h;
0x00220916 add.w r5, fp, 0x1a0 | r5 = fp + 0x1a0;
0x0022091a strb.w r6, [fp, 0x1a0] | *((fp + 0x1a0)) = r6;
0x0022091e str.w r0, [fp, 0x198] | __asm ("str.w r0, [arg_198h]");
0x00220922 ldr r1, [r7] | r1 = *(r7);
0x00220924 addw r4, sp, 0x9c8 | __asm ("addw r4, sp, aav.0x000000ff");
0x00220928 str r1, [r7, 4] | *((r7 + 4)) = r1;
0x0022092a mov r0, r4 | r0 = r4;
0x0022092c bl 0x1f4608 | fcn_001f4608 (r0, r1, r2);
0x00220930 movs r0, 1 | r0 = 1;
0x00220932 mov r1, r4 | r1 = r4;
0x00220934 strb.w r0, [sp, 0xa20] | *(arg_a20h) = r0;
0x00220938 add.w r0, fp, 0x1a8 | r0 = fp + 0x1a8;
0x0022093c movs r2, 0x60 | r2 = 0x60;
0x0022093e blx 0x26b48 | fcn_00026b48 ();
0x00220942 movs r0, 0 | r0 = 0;
0x00220944 strb.w r0, [fp, 0x2b8] | *(arg_2b8h) = r0;
0x00220948 add.w sb, fp, 0x1a8 | sb = fp + 0x1a8;
0x0022094c ldr r2, [sp, 0xa0] | r2 = *((sp + 0xa0));
0x0022094e invalid |
0x00220950 asrs r0, r1, 3 | r0 = r1 >> 3;
0x00220952 mov r1, sb | r1 = sb;
0x00220954 bl 0x1f3b08 | fcn_001f3b08 (r0, r1, r2, r3, r4, r5, r6);
0x00220958 ldr.w r4, [sp, 0x9c8] | r4 = *((sp + 0x9c8));
0x0022095c cmp r4, 2 |
| if (r4 == 2) {
0x0022095e bne 0x220968 |
0x00220960 movs r0, 3 | r0 = 3;
| }
0x00220968 ldr.w r0, [sp, 0x9d4] | r0 = *((sp + 0x9d4));
0x0022096c mov r8, r5 | r8 = r5;
0x0022096e str r0, [sp, 0x74] | *((sp + 0x74)) = r0;
0x00220970 ldr.w r0, [sp, 0x9d8] | r0 = *((sp + 0x9d8));
0x00220974 str r0, [sp, 0x9c] | *((sp + 0x9c)) = r0;
0x00220976 ldr.w r0, [sp, 0x9f4] | r0 = *((sp + 0x9f4));
0x0022097a str r0, [sp, 0x80] | *((sp + 0x80)) = r0;
0x0022097c ldr.w r0, [sp, 0x9f0] | r0 = *((sp + 0x9f0));
0x00220980 str r0, [sp, 0x7c] | *((sp + 0x7c)) = r0;
0x00220982 ldr.w r0, [sp, 0x9ec] | r0 = *((sp + 0x9ec));
0x00220986 str r0, [sp, 0x68] | *((sp + 0x68)) = r0;
0x00220988 ldr.w r0, [sp, 0x9e8] | r0 = *((sp + 0x9e8));
0x0022098c str r0, [sp, 0x8c] | *(arg_3ch) = r0;
0x0022098e ldr.w r0, [sp, 0x9e4] | r0 = *((sp + 0x9e4));
0x00220992 str r0, [sp, 0x70] | *((sp + 0x70)) = r0;
0x00220994 ldr.w r0, [sp, 0x9e0] | r0 = *((sp + 0x9e0));
0x00220998 str r0, [sp, 0x90] | *((sp + 0x90)) = r0;
0x0022099a ldr.w r0, [sp, 0x9dc] | r0 = *(arg_9f0h);
0x0022099e str r0, [sp, 0x98] | *((sp + 0x98)) = r0;
0x002209a0 mov r0, sb | r0 = sb;
0x002209a2 str.w sl, [sp, 0x60] | __asm ("str.w sl, [sp, 0x60]");
0x002209a6 ldr.w r5, [sp, 0x9cc] | r5 = *((sp + 0x9cc));
0x002209aa ldr.w r6, [sp, 0x9d0] | r6 = *((sp + 0x9d0));
0x002209ae bl 0x1f3178 | fcn_001f3178 (r0, r1);
| if (r4 == 0) {
0x002209b2 cbz r4, 0x220a00 | goto label_6;
| }
0x002209b4 ldr.w sl, [sp, 0x64] | sl = *((sp + 0x64));
0x002209b8 mov sb, r6 | sb = r6;
0x002209ba b.w 0x221b9e | void (*0x221b9e)() ();
| }
0x002209be ldr r0, [sp, 0x6c] | r0 = *((sp + 0x6c));
0x002209c0 movs r4, 0 | r4 = 0;
0x002209c2 ldr r5, [sp, 0x60] | r5 = *((sp + 0x60));
0x002209c4 ldrd sb, r0, [r0, 0x1b0] | __asm ("ldrd sb, r0, aav.0x000000ff");
0x002209c8 str r0, [sp, 0x74] | *((sp + 0x74)) = r0;
0x002209ca ldr.w r0, [fp, 0x720] | r0 = *(arg_720h);
0x002209ce str r0, [sp, 0x9c] | *((sp + 0x9c)) = r0;
| label_6:
0x00220a00 mov r1, r7 | r1 = r7;
0x00220a02 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00220a04 str r5, [r1, 0xc]! | *((r1 += 0xc)) = r5;
0x00220a08 mov r5, r8 | r5 = r8;
0x00220a0a str.w r1, [fp, 0x368] | __asm ("str.w r1, [arg_368h]");
0x00220a0e movs r1, 0 | r1 = 0;
0x00220a10 strb.w r1, [r7, 0x1d4] | *((r7 + 0x1d4)) = r1;
0x00220a14 mov r8, sb | r8 = sb;
0x00220a16 str.w r0, [fp, 0x708] | __asm ("str.w r0, [arg_708h]");
0x00220a1a addw r0, sb, 0x564 | __asm ("addw r0, sb, aav.0x000000ff");
0x00220a1e strb.w r1, [r7, 0x574] | *((r7 + 0x574)) = r1;
0x00220a22 str r0, [sp, 0x50] | *((sp + 0x50)) = r0;
0x00220a24 ldr.w sl, [sp, 0x60] | sl = *((sp + 0x60));
0x00220a28 ldr.w r0, [fp, 0x708] | r0 = *(arg_708h);
0x00220a2c add.w sb, fp, 0x370 | sb += arg_370h;
0x00220a30 mov r1, r8 | r1 = r8;
0x00220a32 mov.w r2, 0x1c8 | r2 = 0x1c8;
0x00220a36 ldr r4, [r0] | r4 = *(r0);
0x00220a38 mov r0, sb | r0 = sb;
0x00220a3a blx 0x26b48 | fcn_00026b48 ();
0x00220a3e add.w r0, r4, 8 | r0 = r4 + 8;
0x00220a42 addw r4, fp, 0x704 | __asm ("addw r4, arg_704h");
0x00220a46 str.w r0, [fp, 0x700] | __asm ("str.w r0, [arg_700h]");
0x00220a4a movs r0, 0 | r0 = 0;
0x00220a4c strb.w r0, [r8, 0x55c] | *((r8 + 0x55c)) = r0;
0x00220a50 add.w r0, fp, 0x538 | r0 += arg_538h;
0x00220a54 mov r1, sb | r1 = sb;
0x00220a56 mov.w r2, 0x1c8 | r2 = 0x1c8;
0x00220a5a blx 0x26b48 | fcn_00026b48 ();
0x00220a5e ldrb.w r0, [fp, 0x6fc] | r0 = *(arg_6fch);
0x00220a62 add.w lr, fp, 0x538 | lr += arg_538h;
0x00220a66 cmp r0, 4 |
| if (r0 == 4) {
0x00220a68 beq.w 0x22238a | goto label_7;
| }
0x00220a6c cmp r0, 0 |
0x00220a6e str r7, [sp, 0x54] | *((sp + 0x54)) = r7;
0x00220a70 strd r5, r4, [sp, 0x48] | __asm ("strd r5, r4, [sp, 0x48]");
0x00220a74 strd sb, r8, [sp, 0x38] | __asm ("strd sb, r8, [sp, 0x38]");
0x00220a78 strd lr, sl, [sp, 0x5c] | __asm ("strd lr, sl, [sp, 0x5c]");
| if (r0 != 0) {
0x00220a7c beq.w 0x220b78 |
0x00220a7e strh r4, [r7, 2] | *((r7 + 2)) = r4;
0x00220a80 cmp r0, 3 |
| if (r0 != 3) {
0x00220a82 bne.w 0x222444 | goto label_8;
| }
0x00220a86 ldrb.w r0, [fp, 0x6f0] | r0 = *(arg_6f0h_2);
0x00220a8a add.w r1, fp, 0x6f0 | r1 += arg_6f0h_2;
0x00220a8e str r1, [sp, 0x94] | *((sp + 0x94)) = r1;
0x00220a90 addw r3, sp, 0x8b4 | __asm ("addw r3, arg_8b4h");
0x00220a94 add.w r2, sp, 0x870 | r2 = sp + 0x870;
0x00220a98 addw r1, sp, 0x85c | __asm ("addw r1, sp, aav.0x000000ff");
0x00220a9c cmp r0, 0 |
0x00220a9e invalid |
0x00220aa0 strh r3, [r2, 4] | *((r2 + 4)) = r3;
0x00220aa2 cmp r0, 3 |
| if (r0 != 3) {
0x00220aa4 bne.w 0x222512 | goto label_9;
| }
0x00220aa8 ldrb.w r0, [fp, 0x6d8] | r0 = *(arg_6d8h_2);
0x00220aac add.w r1, fp, 0x6d8 | r1 += arg_6d8h_2;
0x00220ab0 str r1, [sp, 0x58] | *((sp + 0x58)) = r1;
0x00220ab2 add.w r7, sp, 0x8a0 | r7 += arg_8a0h;
0x00220ab6 addw r1, sp, 0x85c | __asm ("addw r1, sp, aav.0x000000ff");
0x00220aba add.w r2, sp, 0x870 | r2 = sp + 0x870;
0x00220abe addw r3, sp, 0x8b4 | __asm ("addw r3, arg_8b4h");
0x00220ac2 cmp r0, 0 |
| if (r0 == 0) {
0x00220ac4 beq.w 0x221278 | goto label_10;
| }
0x00220ac8 cmp r0, 3 |
| if (r0 != 3) {
0x00220aca bne.w 0x222540 | goto label_11;
| }
0x00220ace add.w r1, fp, 0x558 | r1 += arg_558h_2;
0x00220ad2 str r1, [sp, 0x80] | *((sp + 0x80)) = r1;
0x00220ad4 addw r1, sp, 0x914 | __asm ("addw r1, sp, aav.0x000000ff");
0x00220ad8 str r1, [sp, 0x44] | *((sp + 0x44)) = r1;
0x00220ada invalid |
0x00220adc lsls r0, r1, 7 | r0 = r1 << 7;
0x00220ade str r1, [sp, 0x8c] | *((sp + 0x8c)) = r1;
0x00220ae0 addw r1, sp, 0x85c | __asm ("addw r1, sp, aav.0x000000ff");
0x00220ae4 str r1, [sp, 0x84] | *((sp + 0x84)) = r1;
0x00220ae6 add.w r1, sp, 0x870 | r1 = sp + 0x870;
0x00220aea str r1, [sp, 0x40] | *((sp + 0x40)) = r1;
0x00220aec addw r1, sp, 0x8b4 | __asm ("addw r1, sp, aav.0x000000ff");
0x00220af0 ldrb.w r0, [fp, 0x558] | r0 = *((fp + 0x558));
0x00220af4 str r1, [sp, 0x90] | *((sp + 0x90)) = r1;
0x00220af6 add.w r1, sp, 0x8a0 | r1 = sp + 0x8a0;
0x00220afa str r1, [sp, 0x68] | *((sp + 0x68)) = r1;
0x00220afc ldr.w sl, [sp, 0x64] | sl = *((sp + 0x64));
| /* switch table (4 cases) at 0x220b04 */
0x00220b00 tbh [pc, r0, lsl 1] | __asm ("tbh [pc, r0, lsl 1]");
| }
0x00220b78 ldr.w r0, [fp, 0x6f8] | r0 = *(arg_6f8h);
0x00220b7c movs r2, 0 | r2 = 0;
0x00220b7e ldr r1, [pc, 0x3c8] |
0x00220b80 add.w r3, fp, 0x6e0 | r3 += arg_6e0h;
0x00220b84 strb.w r2, [fp, 0x6f0] | *(arg_6f0h) = r2;
0x00220b88 movs r2, 5 | r2 = 5;
0x00220b8a add r1, pc | r1 = 0x441ad8;
0x00220b8c stm r3!, {r0, r1, r2} | *(r3!) = r0;
| *((r3! + 4)) = r1;
| *((r3! + 8)) = r2;
0x00220b8e ldr r0, [sp, 0x94] | r0 = *((sp + 0x94));
0x00220b90 str.w r0, [fp, 0x6ec] | __asm ("str.w r0, [arg_6ech]");
0x00220b94 add.w r0, fp, 0x6f0 | r0 += arg_6f0h;
0x00220b98 str r0, [sp, 0x94] | *((sp + 0x94)) = r0;
0x00220b9a addw r0, sp, 0x8b4 | __asm ("addw r0, arg_8b4h");
0x00220b9e str r0, [sp, 0x90] | *((sp + 0x90)) = r0;
0x00220ba0 add.w r0, sp, 0x870 | r0 = sp + 0x870;
0x00220ba4 str r0, [sp, 0x40] | *((sp + 0x40)) = r0;
0x00220ba6 addw r0, sp, 0x85c | __asm ("addw r0, sp, aav.0x000000ff");
0x00220baa str r0, [sp, 0x84] | *((sp + 0x84)) = r0;
0x00220bac b 0x220bce | goto label_12;
| label_4:
0x00220bae add.w r0, r6, 0x18 | r0 = r6 + 0x18;
0x00220bb2 mov r1, r7 | r1 = r7;
0x00220bb4 bl 0x2032bc | fcn_002032bc (r0, r1);
0x00220bb8 add r0, sp, 0x248 | r0 = sp + 0x248;
0x00220bba bl 0x203270 | fcn_00203270 (r0, r1);
0x00220bbe mov r0, r5 | r0 = r5;
0x00220bc0 mov r1, r7 | r1 = r7;
0x00220bc2 bl 0x1b144c | fcn_001b144c (r0, r1);
0x00220bc6 b 0x220808 |
| }
0x00220bc8 str r3, [sp, 0x90] | *((sp + 0x90)) = r3;
0x00220bca str r2, [sp, 0x40] | *((sp + 0x40)) = r2;
0x00220bcc str r1, [sp, 0x84] | *((sp + 0x84)) = r1;
| label_12:
0x00220bce ldr.w r0, [fp, 0x6e0] | r0 = *(arg_6e0h);
0x00220bd2 movs r7, 0 | r7 = 0;
0x00220bd4 ldr.w r1, [fp, 0x6e8] | r1 = *(arg_6e8h);
0x00220bd8 ldr.w r2, [lr, 0x1ac] | r2 = *((lr + 0x1ac));
0x00220bdc ldr.w r3, [lr, 0x1b4] | r3 = *((lr + 0x1b4));
0x00220be0 str.w r0, [fp, 0x6c8] | __asm ("str.w r0, [arg_6c8h]");
0x00220be4 add.w r0, fp, 0x6d8 | r0 += arg_6d8h_2;
0x00220be8 str r0, [sp, 0x58] | *((sp + 0x58)) = r0;
0x00220bea add.w r0, sp, 0x8a0 | r0 += arg_8a0h;
0x00220bee strb.w r7, [fp, 0x6d8] | *(arg_6d8h_2) = r7;
0x00220bf2 str.w r2, [fp, 0x6cc] | __asm ("str.w r2, [arg_6cch]");
0x00220bf6 str.w r1, [fp, 0x6d0] | __asm ("str.w r1, [arg_6d0h]");
0x00220bfa str.w r3, [fp, 0x6d4] | __asm ("str.w r3, [arg_6d4h]");
0x00220bfe str r0, [sp, 0x68] | *((sp + 0x68)) = r0;
| do {
0x00220c00 ldr.w r1, [fp, 0x6c8] | r1 = *(arg_6c8h);
0x00220c04 ldr.w ip, [fp, 0x6d0] | ip = *(arg_6d0h);
0x00220c08 ldr.w r2, [lr, 0x194] | r2 = *((lr + 0x194));
0x00220c0c ldr r3, [r1] | r3 = *(r1);
0x00220c0e ldr.w r1, [lr, 0x19c] | r1 = *((lr + 0x19c));
0x00220c12 ldr.w sl, [sp, 0x64] | sl = *((sp + 0x64));
0x00220c16 add.w r7, r3, 0xa8 | r7 = r3 + 0xa8;
0x00220c1a ldr.w r5, [r3, 0xb8] | r5 = *((r3 + 0xb8));
0x00220c1e add.w r6, r3, 0x28 | r6 = r3 + 0x28;
| if (r5 != 0) {
0x00220c22 cbz r5, 0x220c28 |
0x00220c24 cmp r5, 1 |
| if (r5 != 1) {
0x00220c26 bne 0x220c2e | goto label_13;
| }
| }
0x00220c28 ldr.w r5, [r3, 0xbc] | r5 = *((r3 + 0xbc));
0x00220c2c b 0x220c34 | goto label_14;
| label_13:
0x00220c2e ldr.w r5, [r3, 0xbc] | r5 = *((r3 + 0xbc));
0x00220c32 adds r5, 8 | r5 += 8;
| label_14:
0x00220c34 ldr.w r0, [r3, 0xc0] | r0 = *((r3 + 0xc0));
0x00220c38 movs r4, 0 | r4 = 0;
0x00220c3a str.w r0, [fp, 0x544] | __asm ("str.w r0, [arg_544h]");
0x00220c3e add.w r0, fp, 0x558 | r0 += arg_558h_2;
0x00220c42 str r0, [sp, 0x80] | *((sp + 0x80)) = r0;
0x00220c44 addw r0, sp, 0x914 | __asm ("addw r0, sp, aav.0x000000ff");
0x00220c48 adds r3, 0xc4 | r3 += 0xc4;
0x00220c4a str r0, [sp, 0x44] | *((sp + 0x44)) = r0;
0x00220c4c addw r0, sp, 0x8c8 | __asm ("addw r0, arg_8c8h");
0x00220c50 strb.w r4, [fp, 0x558] | *(arg_558h_2) = r4;
0x00220c54 str.w r6, [fp, 0x538] | __asm ("str.w r6, [arg_538h]");
0x00220c58 str.w r7, [fp, 0x53c] | __asm ("str.w r7, [arg_53ch]");
0x00220c5c str.w r5, [fp, 0x540] | __asm ("str.w r5, [arg_540h]");
0x00220c60 str.w r3, [fp, 0x548] | __asm ("str.w r3, [arg_548h]");
0x00220c64 str.w r2, [fp, 0x54c] | __asm ("str.w r2, [arg_54ch]");
0x00220c68 str.w ip, [fp, 0x550] | __asm ("str.w ip, [arg_bp_550h]");
0x00220c6c str.w r1, [fp, 0x554] | __asm ("str.w r1, [arg_554h]");
0x00220c70 str r0, [sp, 0x8c] | *(arg_3ch) = r0;
0x00220c72 ldr.w r0, [lr, 4] | r0 = *((lr + 4));
0x00220c76 movs r2, 0 | r2 = 0;
0x00220c78 ldr.w r1, [lr, 0x14] | r1 = *((lr + 0x14));
0x00220c7c ldr.w ip, [lr, 0x1c] | ip = *((lr + 0x1c));
0x00220c80 str.w r0, [fp, 0x69c] | __asm ("str.w r0, [arg_69ch]");
0x00220c84 addw r0, fp, 0x6c1 | __asm ("addw r0, arg_6c1h");
0x00220c88 ldr.w r3, [fp, 0x538] | r3 = *(arg_538h);
0x00220c8c ldr.w r7, [fp, 0x540] | r7 = *(arg_540h);
0x00220c90 ldr.w r6, [fp, 0x544] | r6 = *(arg_544h);
0x00220c94 ldr.w r5, [fp, 0x548] | r5 = *(arg_548h);
0x00220c98 ldr.w r4, [fp, 0x550] | r4 = *(arg_bp_550h);
0x00220c9c str r0, [sp, 0x7c] | *((sp + 0x7c)) = r0;
0x00220c9e add r0, sp, 0xc0 | r0 = sp + 0xc0;
0x00220ca0 str.w r5, [fp, 0x6a8] | __asm ("str.w r5, [arg_6a8h]");
0x00220ca4 add.w r5, fp, 0x560 | r5 += arg_560h;
0x00220ca8 str r0, [sp, 0x70] | *((sp + 0x70)) = r0;
0x00220caa add r0, sp, 0x248 | r0 = sp + 0x248;
0x00220cac str.w sl, [sp, 0x64] | __asm ("str.w sl, [sp, 0x64]");
0x00220cb0 strh.w r2, [fp, 0x6c0] | *(arg_6c0h) = r2;
0x00220cb4 str.w r3, [fp, 0x698] | __asm ("str.w r3, [arg_698h]");
0x00220cb8 str.w r7, [fp, 0x6a0] | __asm ("str.w r7, [arg_6a0h]");
0x00220cbc str.w r6, [fp, 0x6a4] | __asm ("str.w r6, [arg_6a4h]");
0x00220cc0 str.w r1, [fp, 0x6ac] | __asm ("str.w r1, [arg_6ach]");
0x00220cc4 str.w r4, [fp, 0x6b0] | __asm ("str.w r4, [arg_6b0h]");
0x00220cc8 str.w ip, [fp, 0x6b4] | __asm ("str.w ip, [arg_6b4h]");
0x00220ccc str r0, [sp, 0x74] | *((sp + 0x74)) = r0;
| label_10:
0x00221278 str r7, [sp, 0x68] | *((sp + 0x68)) = r7;
0x0022127a str r3, [sp, 0x90] | *((sp + 0x90)) = r3;
0x0022127c str r2, [sp, 0x40] | *((sp + 0x40)) = r2;
0x0022127e str r1, [sp, 0x84] | *((sp + 0x84)) = r1;
0x00221280 b 0x220c00 |
| } while (1);
| label_2:
0x00221600 mov r0, r4 | r0 = r4;
0x00221602 clrex | __asm ("clrex");
0x00221606 bl 0x3129c | fcn_0003129c (r0, r1, r2);
0x0022160a b.w 0x22079a | goto label_0;
| label_3:
0x0022160e bl 0x30fe0 | r0 = fcn_00030fe0 ();
0x00221612 eor r0, r0, 1 | r0 ^= 1;
0x00221616 b.w 0x2207aa | goto label_1;
| label_5:
0x00222292 mov.w r0, 0x138 | r0 = 0x138;
| label_7:
0x0022238a ldr r0, [pc, 0x278] |
0x0022238c movs r1, 0x36 | r1 = 0x36;
0x0022238e ldr r2, [pc, 0x278] |
0x00222390 add r0, pc | r0 = 0x44499a;
0x00222392 add r2, pc | r2 = 0x4449a0;
0x00222394 bl 0x2e2d8 | fcn_0002e2d8 ();
0x00222398 trap | __asm ("trap");
| label_8:
0x00222444 ldr r0, [pc, 0x1d0] |
0x00222446 ldr r2, [pc, 0x1d4] |
0x00222448 add r0, pc | r0 = 0x444a64;
0x0022244a add r2, pc | r2 = 0x444a6c;
0x0022244c b.w 0x223ff8 | void (*0x223ff8)() ();
| label_9:
0x00222512 ldr r0, [pc, 0x148] |
0x00222514 ldr r2, [pc, 0x148] |
0x00222516 add r0, pc | r0 = 0x444b78;
0x00222518 add r2, pc | r2 = 0x444b7c;
0x0022251a b.w 0x223ff8 | void (*0x223ff8)() ();
| label_11:
0x00222540 ldr r0, [pc, 0x130] |
0x00222542 ldr r2, [pc, 0x134] |
0x00222544 add r0, pc | r0 = 0x444bbc;
0x00222546 add r2, pc | r2 = 0x444bc4;
0x00222548 b.w 0x223ff8 | return void (*0x223ff8)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x77b76 */
| #include <stdint.h>
|
; (fcn) case.0x68ade.218 () | void case_0x68ade_218 (int16_t arg_34h, int16_t arg_2ech, int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00077b76 strb.w r1, [sp, 0x2ec] | *(arg_2ech) = r1;
0x00077b7a bl 0x46f64 | fcn_00046f64 (r0, r1);
0x00077b7e add r0, sp, 0x2e8 | r0 += arg_34h;
0x00077b80 str r5, [sp, 0x2e8] | *(arg_34h) = r5;
0x00077b82 bl 0x1a5790 | fcn_001a5790 (r0, r1);
0x00077b86 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00077b88 ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x00077b8a mov r0, r5 | r0 = r5;
0x00077b8c blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x00077b8e b 0x77c8c | return void (*0x77c8c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x4ba9c */
| #include <stdint.h>
|
; (fcn) fcn.0004ba9c () | void fcn_0004ba9c (int16_t arg1) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_194h;
| int16_t var_198h;
| int16_t var_19fh;
| int16_t var_1a0h;
| int16_t var_1a4h;
| int16_t var_1a8h;
| r0 = arg1;
0x0004ba9c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0004baa0 sub sp, 0x1ac |
0x0004baa2 mov r4, r0 | r4 = r0;
0x0004baa4 bl 0x1ae138 | r0 = fcn_001ae138 (r0);
0x0004baa8 mov r6, r0 | r6 = r0;
0x0004baaa ldr r0, [pc, 0x1f0] |
0x0004baac mov sb, r1 | sb = r1;
0x0004baae add r0, pc | r0 = 0x97750;
0x0004bab0 bl 0x1ae094 | r0 = fcn_001ae094 (r0);
0x0004bab4 mov r7, r0 | r7 = r0;
0x0004bab6 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0004baba add r0, sp, 8 | r0 += var_8h;
0x0004babc mov r5, r1 | r5 = r1;
0x0004babe mov r1, r4 | r1 = r4;
0x0004bac0 mov.w r2, 0x188 | r2 = 0x188;
0x0004bac4 blx 0x26b48 | fcn_00026b48 ();
0x0004bac8 cmp r7, 0 |
| if (r7 == 0) {
0x0004baca beq 0x4bb68 | goto label_1;
| }
0x0004bacc add.w r8, r5, 8 | r8 = r5 + 8;
| do {
0x0004bad0 ldrex r0, [r5] | __asm ("ldrex r0, [r5]");
0x0004bad4 adds r1, r0, 1 | r1 = r0 + 1;
0x0004bad6 strex r2, r1, [r5] | __asm ("strex r2, r1, [r5]");
0x0004bada cmp r2, 0 |
0x0004badc bne 0x4bad0 |
| } while (r2 != 0);
0x0004bade cmp.w r0, -1 |
| if (r0 <= -1) {
0x0004bae2 ble.w 0x4bc8a | goto label_2;
| }
0x0004bae6 mov.w r0, 0x1c8 | r0 = 0x1c8;
0x0004baea movs r1, 8 | r1 = 8;
0x0004baec bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x0004baf0 cmp r0, 0 |
| if (r0 == 0) {
0x0004baf2 beq.w 0x4bc8e | goto label_3;
| }
0x0004baf6 mov r4, r0 | r4 = r0;
0x0004baf8 ldr r0, [pc, 0x1ac] |
0x0004bafa movs r7, 0 | r7 = 0;
0x0004bafc movs r1, 0xcc | r1 = 0xcc;
0x0004bafe add r0, pc | r0 = 0x977aa;
0x0004bb00 strd r1, r7, [r4] | __asm ("strd r1, r7, [r4]");
0x0004bb04 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0004bb06 add.w r0, r4, 0x30 | r0 = r4 + 0x30;
0x0004bb0a add r1, sp, 8 | r1 += var_8h;
0x0004bb0c mov.w r2, 0x188 | r2 = 0x188;
0x0004bb10 strd r7, r7, [r4, 0x10] | __asm ("strd r7, r7, [r4, 0x10]");
0x0004bb14 str r5, [r4, 0x18] | *((r4 + 0x18)) = r5;
0x0004bb16 strd r6, sb, [r4, 0x20] | __asm ("strd r6, sb, [r4, 0x20]");
0x0004bb1a strd r7, r7, [r4, 0x28] | __asm ("strd r7, r7, [r4, 0x28]");
0x0004bb1e blx 0x26b48 | fcn_00026b48 ();
0x0004bb22 vmov.i32 q8, 0 | __asm ("vmov.i32 q8, 0");
0x0004bb26 add.w r0, r4, 0x1b8 | r0 = r4 + 0x1b8;
0x0004bb2a vst1.64 {d16, d17}, [r0] | __asm ("vst1.64 {d16, d17}, [r0]");
0x0004bb2e ldrd r0, r1, [r5, 8] | __asm ("ldrd r0, r1, [r5, 8]");
0x0004bb32 strd r0, r1, [r4, 0x10] | __asm ("strd r0, r1, [r4, 0x10]");
0x0004bb36 add.w r1, r5, 0x10 | r1 = r5 + 0x10;
0x0004bb3a add r0, sp, 0x1a0 | r0 += var_1a0h;
0x0004bb3c bl 0x1ab3b4 | fcn_001ab3b4 (r0, r1, r2);
0x0004bb40 ldr r0, [sp, 0x1a4] | r0 = var_1a4h;
0x0004bb42 ldrb.w r1, [sp, 0x1a8] | r1 = var_1a8h;
0x0004bb46 strb.w r1, [sp, 0x198] | var_198h = r1;
0x0004bb4a ldrb r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x0004bb4c str r0, [sp, 0x194] | var_194h = r0;
0x0004bb4e cmp r2, 0 |
| if (r2 == 0) {
0x0004bb50 beq 0x4bc24 | goto label_4;
| }
0x0004bb52 str r0, [sp, 0x1a0] | var_1a0h = r0;
0x0004bb54 add r0, sp, 0x1a0 | r0 += var_1a0h;
0x0004bb56 strb.w r1, [sp, 0x1a4] | var_1a4h = r1;
0x0004bb5a bl 0x46f64 | fcn_00046f64 (r0, r1);
0x0004bb5e add r0, sp, 0x1a0 | r0 += var_1a0h;
0x0004bb60 str r4, [sp, 0x1a0] | var_1a0h = r4;
0x0004bb62 bl 0x1a5790 | fcn_001a5790 (r0, r1);
0x0004bb66 b 0x4bc1a | goto label_5;
| label_1:
0x0004bb68 mov r0, sp | r0 = sp;
0x0004bb6a add.w r8, r0, 4 | r8 += var_0h_2;
| do {
0x0004bb6e ldrex r0, [r5] | __asm ("ldrex r0, [r5]");
0x0004bb72 adds r1, r0, 1 | r1 = r0 + 1;
0x0004bb74 strex r2, r1, [r5] | __asm ("strex r2, r1, [r5]");
0x0004bb78 cmp r2, 0 |
0x0004bb7a bne 0x4bb6e |
| } while (r2 != 0);
0x0004bb7c cmp.w r0, -1 |
| if (r0 <= -1) {
0x0004bb80 ble.w 0x4bc8a | goto label_2;
| }
0x0004bb84 mov.w r0, 0x1c8 | r0 = 0x1c8;
0x0004bb88 movs r1, 8 | r1 = 8;
0x0004bb8a bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x0004bb8e cmp r0, 0 |
| if (r0 == 0) {
0x0004bb90 beq 0x4bc8e | goto label_3;
| }
0x0004bb92 mov r4, r0 | r4 = r0;
0x0004bb94 ldr r0, [pc, 0x108] |
0x0004bb96 movs r1, 0 | r1 = 0;
0x0004bb98 movs r2, 0xcc | r2 = 0xcc;
0x0004bb9a add r0, pc | r0 = 0x9783e;
0x0004bb9c strd r2, r1, [r4] | __asm ("strd r2, r1, [r4]");
0x0004bba0 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0004bba2 add.w r0, r4, 0x30 | r0 = r4 + 0x30;
0x0004bba6 strd r1, r1, [r4, 0x10] | __asm ("strd r1, r1, [r4, 0x10]");
0x0004bbaa mov.w r2, 0x188 | r2 = 0x188;
0x0004bbae strd r1, r1, [r4, 0x28] | __asm ("strd r1, r1, [r4, 0x28]");
0x0004bbb2 add r1, sp, 8 | r1 += var_8h;
0x0004bbb4 str r5, [r4, 0x18] | *((r4 + 0x18)) = r5;
0x0004bbb6 strd r6, sb, [r4, 0x20] | __asm ("strd r6, sb, [r4, 0x20]");
0x0004bbba blx 0x26b48 | fcn_00026b48 ();
0x0004bbbe vmov.i32 q8, 0 | __asm ("vmov.i32 q8, 0");
0x0004bbc2 add.w r0, r4, 0x1b8 | r0 = r4 + 0x1b8;
0x0004bbc6 add.w r6, r5, 0x10 | r6 = r5 + 0x10;
0x0004bbca vst1.64 {d16, d17}, [r0] | __asm ("vst1.64 {d16, d17}, [r0]");
0x0004bbce ldrd r0, r1, [r5, 8] | __asm ("ldrd r0, r1, [r5, 8]");
0x0004bbd2 strd r0, r1, [r4, 0x10] | __asm ("strd r0, r1, [r4, 0x10]");
0x0004bbd6 movs r0, 1 | r0 = 1;
| do {
0x0004bbd8 ldrex r1, [r6] | __asm ("ldrex r1, [r6]");
0x0004bbdc cmp r1, 0 |
| if (r1 != 0) {
0x0004bbde bne 0x4bc74 | goto label_6;
| }
0x0004bbe0 strex r1, r0, [r6] | __asm ("strex r1, r0, [r6]");
0x0004bbe4 cmp r1, 0 |
0x0004bbe6 bne 0x4bbd8 |
| } while (r1 != 0);
0x0004bbe8 dmb ish | __asm ("dmb ish");
| do {
0x0004bbec ldr r0, [pc, 0xb4] |
0x0004bbee add r0, pc |
0x0004bbf0 ldr r0, [r0] | r0 = *(0x97896);
0x0004bbf2 lsls r0, r0, 1 | r0 <<= 1;
| if (r0 != r0) {
0x0004bbf4 bne 0x4bc80 | goto label_7;
| }
0x0004bbf6 movs r0, 0 | r0 = 0;
| label_0:
0x0004bbf8 ldrb r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x0004bbfa ldrb.w r1, [r5, 0x20] | r1 = *((r5 + 0x20));
0x0004bbfe strb.w r0, [sp, 0x198] | var_198h = r0;
0x0004bc02 str r6, [sp, 0x194] | var_194h = r6;
| if (r1 != 0) {
0x0004bc04 cbz r1, 0x4bc4e |
0x0004bc06 strb.w r0, [sp, 0x1a4] | var_1a4h = r0;
0x0004bc0a add r0, sp, 0x1a0 | r0 += var_1a0h;
0x0004bc0c str r6, [sp, 0x1a0] | var_1a0h = r6;
0x0004bc0e bl 0x46d40 | fcn_00046d40 (r0, r1);
0x0004bc12 add r0, sp, 0x1a0 | r0 += var_1a0h;
0x0004bc14 str r4, [sp, 0x1a0] | var_1a0h = r4;
0x0004bc16 bl 0x1a5b24 | fcn_001a5b24 (r0, r1);
| label_5:
0x0004bc1a ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0004bc1c ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x0004bc1e mov r0, r4 | r0 = r4;
0x0004bc20 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0004bc22 b 0x4bc66 | goto label_8;
| label_4:
0x0004bc24 adds r0, 8 | r0 += 8;
0x0004bc26 mov r1, r4 | r1 = r4;
0x0004bc28 bl 0x1f2b0c | fcn_001f2b0c (r0, r1);
0x0004bc2c add r5, sp, 0x194 | r5 += var_194h;
0x0004bc2e mov r0, r5 | r0 = r5;
0x0004bc30 bl 0x46f64 | fcn_00046f64 (r0, r1);
0x0004bc34 addw r0, sp, 0x19f | __asm ("addw r0, var_19fh");
0x0004bc38 str r0, [sp, 0x1a8] | var_1a8h = r0;
0x0004bc3a add r0, sp, 0x1a0 | r0 += var_1a0h;
0x0004bc3c strb.w r7, [sp, 0x19f] | var_19fh = r7;
0x0004bc40 str.w r8, [sp, 0x194] | __asm ("str.w r8, [var_194h]");
0x0004bc44 strd r5, r4, [sp, 0x1a0] | __asm ("strd r5, r4, [var_1a4h]");
0x0004bc48 bl 0x1ad9e4 | fcn_001ad9e4 (r0);
0x0004bc4c b 0x4bc66 |
| } else {
0x0004bc4e add.w r0, r5, 0x18 | r0 = r5 + 0x18;
0x0004bc52 mov r1, r4 | r1 = r4;
0x0004bc54 bl 0x2032bc | fcn_002032bc (r0, r1);
0x0004bc58 add r0, sp, 0x194 | r0 += var_194h;
0x0004bc5a bl 0x46d40 | fcn_00046d40 (r0, r1);
0x0004bc5e mov r0, r8 | r0 = r8;
0x0004bc60 mov r1, r4 | r1 = r4;
0x0004bc62 bl 0x1b144c | fcn_001b144c (r0, r1);
| }
| label_8:
0x0004bc66 mov r0, sp | r0 = sp;
0x0004bc68 bl 0x4a076 | fcn_0004a076 (r0);
0x0004bc6c mov r0, r4 | r0 = r4;
0x0004bc6e add sp, 0x1ac |
0x0004bc70 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_6:
0x0004bc74 mov r0, r6 | r0 = r6;
0x0004bc76 clrex | __asm ("clrex");
0x0004bc7a bl 0x3129c | fcn_0003129c (r0, r1, r2);
0x0004bc7e b 0x4bbec |
| } while (1);
| label_7:
0x0004bc80 bl 0x30fe0 | r0 = fcn_00030fe0 ();
0x0004bc84 eor r0, r0, 1 | r0 ^= 1;
0x0004bc88 b 0x4bbf8 | goto label_0;
| label_2:
0x0004bc8a trap | __asm ("trap");
| label_3:
0x0004bc8e mov.w r0, 0x1c8 | r0 = 0x1c8;
0x0004bc92 movs r1, 8 | r1 = 8;
0x0004bc94 bl 0x281ae | fcn_000281ae ();
0x0004bc98 trap | __asm ("trap");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x5d540 */
| #include <stdint.h>
|
; (fcn) fcn.0005d540 () | void fcn_0005d540 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5bh;
| int16_t var_68h;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_dh;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_c8h;
| int16_t var_cch;
| int16_t var_d0h;
| int16_t var_d4h;
| int16_t var_108h;
| int32_t var_108h_2;
| int16_t var_110h;
| int16_t var_114h;
| int16_t var_118h;
| int32_t var_11ch;
| int16_t var_120h;
| int16_t var_124h;
| int16_t var_158h;
| int16_t var_15ch;
| int16_t var_160h;
| int16_t var_164h;
| int32_t var_164h_2;
| int16_t var_16ch;
| int16_t var_170h;
| int16_t var_174h;
| r0 = arg1;
| r1 = arg2;
0x0005d540 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005d544 sub sp, 4 |
0x0005d546 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0005d54a sub sp, 0x178 |
0x0005d54c strd r1, r0, [sp, 0x50] | __asm ("strd r1, r0, [var_50h]");
0x0005d54e asrs r4, r2, 0x20 | r4 = r2 >> 0x20;
0x0005d550 add r1, sp, 0x70 | r1 += var_70h;
0x0005d552 add.w r0, r1, 8 | r0 += var_78h;
0x0005d556 str r0, [sp, 0x38] | var_38h = r0;
0x0005d558 add.w r0, r1, 0xd | r0 += var_dh;
0x0005d55c str r0, [sp, 0x4c] | var_4ch = r0;
0x0005d55e add r0, sp, 0x98 | r0 += var_98h;
0x0005d560 vmov.i32 q4, 0 | __asm ("vmov.i32 q4, 0");
0x0005d564 adds r0, 8 | r0 += 8;
0x0005d566 add r7, sp, 0xc0 | r7 += var_c0h;
0x0005d568 str r0, [sp, 0x3c] | var_3ch = r0;
0x0005d56a add r0, sp, 0x158 | r0 += var_158h;
0x0005d56c movs r2, 0 | r2 = 0;
0x0005d56e adds r0, 4 | r0 += 4;
0x0005d570 str r0, [sp, 0x44] | var_44h = r0;
| do {
0x0005d572 cmp r2, 0x10 |
| if (r2 == 0x10) {
0x0005d574 beq.w 0x5e8aa | goto label_14;
| }
0x0005d578 ldr r5, [sp, 0x54] | r5 = var_54h;
0x0005d57a str r2, [sp, 0x48] | var_48h = r2;
0x0005d57c ldrb.w r0, [r5, 0x1b0] | r0 = *((r5 + 0x1b0));
| if (r0 == 0) {
0x0005d580 cbz r0, 0x5d5b0 | goto label_15;
| }
| label_1:
0x0005d582 ldr r4, [sp, 0x54] | r4 = var_54h;
0x0005d584 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005d586 mov r0, r4 | r0 = r4;
0x0005d588 bl 0x5873c | r0 = fcn_0005873c (r0, r1);
0x0005d58c mov r2, r0 | r2 = r0;
0x0005d58e movs r0, 0 | r0 = 0;
| if (r2 == 0) {
0x0005d590 cbnz r2, 0x5d59a |
0x0005d592 mov r8, r1 | r8 = r1;
0x0005d594 cmp r1, 0 |
| if (r1 != 0) {
0x0005d596 bne.w 0x5ec8e | goto label_16;
| }
| }
0x0005d59a ldr r2, [sp, 0x48] | r2 = var_48h;
0x0005d59c add r7, sp, 0xc0 | r7 += var_c0h;
0x0005d59e ldrb.w r1, [r4, 0xb7] | r1 = *((r4 + 0xb7));
0x0005d5a2 adds r2, 1 | r2++;
0x0005d5a4 strb.w r0, [r4, 0xb7] | *((r4 + 0xb7)) = r0;
0x0005d5a8 cmp r1, 0 |
0x0005d5aa bne 0x5d572 |
| } while (r1 != 0);
0x0005d5ac b.w 0x5e9b0 | goto label_17;
| label_15:
0x0005d5b0 add.w sl, r5, 0x198 | sl = r5 + 0x198;
0x0005d5b4 addw sb, r5, 0x1a5 | __asm ("addw sb, r5, aav.0x000000ff");
| label_0:
0x0005d5b8 ldrd r0, r1, [r5, 0x58] | __asm ("ldrd r0, r1, [r5, 0x58]");
0x0005d5bc orrs.w r2, r0, r1 | r2 = r0 | r1;
| if (r2 == r0) {
0x0005d5c0 beq.w 0x5d758 | goto label_18;
| }
0x0005d5c4 ldrb.w r2, [r5, 0x1a4] | r2 = *((r5 + 0x1a4));
0x0005d5c8 mov r7, r5 | r7 = r5;
0x0005d5ca vldr d16, [sl] | __asm ("vldr d16, [sl]");
0x0005d5ce mov r3, r5 | r3 = r5;
0x0005d5d0 movs r5, 3 | r5 = 3;
0x0005d5d2 ldr.w ip, [sb] | ip = *(sb);
0x0005d5d6 ldr.w r4, [sl, 8] | r4 = *((sl + 8));
0x0005d5da cmp r2, 3 |
0x0005d5dc strb.w r5, [r3, 0x1a4] | *((r3 + 0x1a4)) = r5;
0x0005d5e0 mov.w r5, 0 | r5 = 0;
0x0005d5e4 ldr.w r6, [sb, 3] | r6 = *((sb + 3));
0x0005d5e8 str.w r5, [sb] | __asm ("str.w r5, [sb]");
0x0005d5ec str.w ip, [sp, 0x58] | __asm ("str.w ip, [var_58h]");
0x0005d5f0 str.w r5, [sb, 3] | __asm ("str.w r5, [sb, 3]");
0x0005d5f4 strd r5, r5, [sl] | __asm ("strd r5, r5, [sl]");
0x0005d5f8 str.w r5, [sl, 8] | __asm ("str.w r5, [sl, 8]");
0x0005d5fc str r4, [sp, 0x68] | var_68h = r4;
0x0005d5fe str.w r6, [sp, 0x5b] | __asm ("str.w r6, [var_5bh]");
0x0005d602 vstr d16, [sp, 0x60] | __asm ("vstr d16, [sp, 0x60]");
| if (r2 == 3) {
0x0005d606 beq.w 0x5ddf2 | goto label_19;
| }
0x0005d60a ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0005d60c subs r0, 1 | r0--;
0x0005d60e vldr d16, [sp, 0x60] | __asm ("vldr d16, [sp, 0x60]");
0x0005d612 cmp r0, 2 |
0x0005d614 ldr r1, [sp, 0x58] | r1 = var_58h;
0x0005d616 mov r5, r7 | r5 = r7;
0x0005d618 ldr r6, [sp, 0x68] | r6 = var_68h;
0x0005d61a ldr.w r3, [sp, 0x5b] | r3 = var_5bh;
0x0005d61e str r1, [r4] | *(r4) = r1;
0x0005d620 str.w r3, [r4, 3] | __asm ("str.w r3, [r4, 3]");
0x0005d624 str r6, [sp, 0x78] | var_78h = r6;
0x0005d626 strb.w r2, [sp, 0x7c] | var_7ch = r2;
0x0005d62a vstr d16, [sp, 0x70] | __asm ("vstr d16, [sp, 0x70]");
| if (r0 >= 2) {
0x0005d62e bhs.w 0x5dc64 | goto label_3;
| }
0x0005d632 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005d634 add r0, sp, 0x70 | r0 += var_70h;
0x0005d636 bl 0x1133a0 | r0 = fcn_001133a0 (r0, r1, r2);
0x0005d63a cmp r0, 0 |
| if (r0 != 0) {
0x0005d63c bne.w 0x5de28 | goto label_20;
| }
0x0005d640 cmp r1, 0 |
| if (r1 == 0) {
0x0005d642 beq.w 0x5d772 | goto label_21;
| }
0x0005d646 ldr r7, [pc, 0x2b8] |
0x0005d648 str r1, [sp, 0x16c] | var_16ch = r1;
0x0005d64a add r7, pc | r7 = 0xbaf50;
0x0005d64c ldr r0, [r7] | r0 = *(0xbaf50);
0x0005d64e subs r0, 1 | r0--;
0x0005d650 cmp r0, 5 |
| if (r0 <= 5) {
0x0005d652 blo.w 0x5d968 | goto label_22;
| }
0x0005d656 ldr r4, [pc, 0x2ac] |
0x0005d658 add r4, pc | r4 = 0xbaf62;
0x0005d65a ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0005d65c cmp r1, 0 |
| if (r1 == 0) {
0x0005d65e beq.w 0x5d968 | goto label_22;
| }
0x0005d662 cmp r1, 1 |
| if (r1 == 1) {
0x0005d664 beq 0x5d66e | goto label_23;
| }
0x0005d666 cmp r1, 2 |
| if (r1 != 2) {
0x0005d668 bne.w 0x5d958 | goto label_24;
| }
0x0005d66c movs r1, 2 | r1 = 2;
| do {
| label_23:
0x0005d66e ldr r0, [r4] | r0 = *(r4);
0x0005d670 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005d674 cmp r0, 0 |
| if (r0 == 0) {
0x0005d676 beq.w 0x5d968 | goto label_22;
| }
0x0005d67a ldr r0, [r4] | r0 = *(r4);
0x0005d67c add.w fp, sp, 0x88 |
0x0005d680 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005d682 cmp r2, 0 |
| if (r2 == 0) {
0x0005d684 beq.w 0x5ed9e | goto label_25;
| }
0x0005d688 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005d68c ldrd lr, r6, [r0, 0x34] | __asm ("ldrd lr, r6, [r0, 0x34]");
0x0005d690 ldr r1, [pc, 0x274] |
0x0005d692 ldr r3, [pc, 0x278] |
0x0005d694 add r1, pc | r1 = 0xbafa0;
0x0005d696 add r3, pc | r3 = 0xbafa8;
0x0005d698 mov r8, r1 | r8 = r1;
0x0005d69a ldr r1, [pc, 0x274] |
0x0005d69c strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005d6a0 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005d6a4 add r1, pc | r1 = 0xbafba;
0x0005d6a6 str r1, [sp, 0x40] | var_40h = r1;
0x0005d6a8 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005d6aa str r1, [sp, 0x9c] | var_9ch = r1;
0x0005d6ac add r1, sp, 0x110 | r1 += var_110h;
0x0005d6ae str r1, [sp, 0x98] | var_98h = r1;
0x0005d6b0 add r1, sp, 0x98 | r1 += var_98h;
0x0005d6b2 str r1, [sp, 0x88] | var_88h = r1;
0x0005d6b4 movs r1, 0 | r1 = 0;
0x0005d6b6 str r2, [sp, 0x90] | var_90h = r2;
0x0005d6b8 movs r2, 1 | r2 = 1;
0x0005d6ba str r1, [sp, 0x110] | var_110h = r1;
0x0005d6bc str r1, [sp, 0xd4] | var_d4h = r1;
0x0005d6be strd r1, r3, [sp, 0xcc] | __asm ("strd r1, r3, [var_d0h]");
0x0005d6c2 strd r2, r1, [sp, 0xc4] | __asm ("strd r2, r1, [var_c8h]");
0x0005d6c6 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0005d6c8 str r1, [sp, 0xc0] | var_c0h = r1;
0x0005d6ca mov r1, fp | r1 = fp;
0x0005d6cc strd lr, r6, [sp, 0x11c] | __asm ("strd lr, r6, [var_120h]");
0x0005d6d0 mov r6, r3 | r6 = r3;
0x0005d6d2 str r2, [sp, 0x8c] | var_8ch = r2;
0x0005d6d4 str.w r8, [sp, 0xa0] | __asm ("str.w r8, [var_a0h]");
0x0005d6d8 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005d6dc ldr r0, [pc, 0x234] |
0x0005d6de add r0, pc | r0 = 0xbaff6;
0x0005d6e0 ldrb r0, [r0] | r0 = *(r0);
0x0005d6e2 cmp r0, 0 |
| if (r0 != 0) {
0x0005d6e4 bne.w 0x5da52 | goto label_26;
| }
0x0005d6e8 ldr r0, [pc, 0x22c] |
0x0005d6ea add r0, pc |
0x0005d6ec ldr r0, [r0] | r0 = *(0xbb006);
0x0005d6ee cmp r0, 5 |
| if (r0 <= 5) {
0x0005d6f0 blo.w 0x5da52 | goto label_26;
| }
0x0005d6f4 str r7, [sp, 0x40] | var_40h = r7;
0x0005d6f6 ldr r7, [r4] | r7 = *(r4);
0x0005d6f8 ldr r0, [pc, 0x220] |
0x0005d6fa ldr r1, [pc, 0x224] |
0x0005d6fc ldr r2, [pc, 0x224] |
0x0005d6fe add r0, pc |
0x0005d700 ldr r3, [pc, 0x224] |
0x0005d702 add r1, pc | r1 = 0xbb028;
0x0005d704 ldr.w ip, [r7, 8] | ip = *((r7 + 8));
0x0005d708 add r2, pc | r2 = 0xbb030;
0x0005d70a ldr r4, [r7, 0xc] | r4 = *((r7 + 0xc));
0x0005d70c add r3, pc | r3 = 0xbb038;
0x0005d70e str r7, [sp, 0x34] | var_34h = r7;
0x0005d710 movs r7, 5 | r7 = 5;
0x0005d712 str r4, [sp, 0x160] | var_160h = r4;
0x0005d714 strd r7, ip, [sp, 0x158] | __asm ("strd r7, ip, [var_158h]");
0x0005d718 ldr r0, [r0] | r0 = *(0xbb01e);
0x0005d71a dmb ish | __asm ("dmb ish");
0x0005d71e ldr.w fp, [r1] | fp = *(0xbb028);
0x0005d722 ldr r1, [r2] | r1 = *(0xbb030);
0x0005d724 cmp r0, 2 |
0x0005d726 it ne |
| if (r0 == 2) {
0x0005d728 movne fp, r3 |
| }
0x0005d72a ldr.w r2, [fp, 0x10] | r2 = var_98h;
0x0005d72e it eq |
| if (r0 != 2) {
0x0005d730 moveq r6, r1 | r6 = r1;
| }
0x0005d732 add r1, sp, 0x158 | r1 += var_158h;
0x0005d734 mov r0, r6 | r0 = r6;
0x0005d736 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005d738 cmp r0, 0 |
| if (r0 == 0) {
0x0005d73a beq.w 0x5da50 | goto label_27;
| }
0x0005d73e ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005d740 mov r2, fp | r2 = fp;
0x0005d742 ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005d746 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005d74a add r0, sp, 0x88 | r0 += var_88h;
0x0005d74c str r0, [sp, 8] | var_8h = r0;
0x0005d74e mov r1, r6 | r1 = r6;
0x0005d750 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005d752 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005d756 b 0x5da50 | goto label_27;
| label_18:
0x0005d758 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005d75a mov r0, r5 | r0 = r5;
0x0005d75c bl 0x59708 | r0 = fcn_00059708 (r0, r1, r2, r3, r4, r5, r6);
0x0005d760 cmp r0, 0 |
| if (r0 != 0) {
0x0005d762 bne.w 0x5de46 | goto label_28;
| }
0x0005d766 mov r8, r1 | r8 = r1;
0x0005d768 cmp r1, 0 |
| if (r1 == 0) {
0x0005d76a beq.w 0x5dc6a | goto label_29;
| }
0x0005d76e b.w 0x5e9d8 | goto label_10;
| label_21:
0x0005d772 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005d774 add r0, sp, 0x158 | r0 += var_158h;
0x0005d776 mov r1, r5 | r1 = r5;
0x0005d778 bl 0x4f160 | fcn_0004f160 (r0, r1, r2);
0x0005d77c ldr r0, [sp, 0x158] | r0 = var_158h;
| if (r0 != 0) {
0x0005d77e cbz r0, 0x5d7ac |
0x0005d780 cmp r0, 2 |
| if (r0 == 2) {
0x0005d782 beq.w 0x5dc64 | goto label_3;
| }
0x0005d786 cmp r0, 3 |
| if (r0 == 3) {
0x0005d788 beq.w 0x5de28 | goto label_20;
| }
0x0005d78c movs r0, 0xb | r0 = 0xb;
0x0005d78e ldrd r8, r6, [sp, 0x15c] | __asm ("ldrd r8, r6, [var_160h]");
0x0005d792 bl 0x1106f0 | fcn_001106f0 (r0, r1);
0x0005d796 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005d798 mov r4, r0 | r4 = r0;
0x0005d79a strd r8, r6, [sp, 0xc0] | __asm ("strd r8, r6, [var_c0h]");
0x0005d79e bl 0x1139f0 | fcn_001139f0 (r0, r1);
0x0005d7a2 add r0, sp, 0x70 | r0 += var_70h;
0x0005d7a4 mov r1, r4 | r1 = r4;
0x0005d7a6 bl 0x113660 | fcn_00113660 (r0, r1);
0x0005d7aa b 0x5dc64 | goto label_3;
| }
0x0005d7ac ldr r0, [sp, 0x44] | r0 = var_44h;
0x0005d7ae add r2, sp, 0xc0 | r2 += var_c0h;
0x0005d7b0 add r1, sp, 0x70 | r1 += var_70h;
0x0005d7b2 vld1.32 {d16, d17}, [r0] | __asm ("vld1.32 {d16, d17}, [r0]");
0x0005d7b6 add r0, sp, 0x88 | r0 += var_88h;
0x0005d7b8 vst1.64 {d16, d17}, [r2] | __asm ("vst1.64 {d16, d17}, [r2]");
0x0005d7bc bl 0x113430 | fcn_00113430 (r0, r1);
0x0005d7c0 ldr r0, [sp, 0x94] | r0 = var_94h;
0x0005d7c2 cmp r0, 0 |
| if (r0 != 0) {
0x0005d7c4 beq.w 0x5d8de |
0x0005d7c8 add r0, sp, 0x88 | r0 += var_88h;
0x0005d7ca add r1, sp, 0x98 | r1 += var_98h;
0x0005d7cc vld1.64 {d16, d17}, [r0] | __asm ("vld1.64 {d16, d17}, [r0]");
0x0005d7d0 ldr r0, [r5, 0x58] | r0 = *((r5 + 0x58));
0x0005d7d2 vst1.64 {d16, d17}, [r1] | __asm ("vst1.64 {d16, d17}, [r1]");
0x0005d7d6 subs r0, 1 | r0--;
0x0005d7d8 cmp r0, 2 |
| if (r0 >= 2) {
0x0005d7da bhs.w 0x5dde4 | goto label_30;
| }
0x0005d7de ldr r0, [pc, 0x14c] |
0x0005d7e0 add r0, pc |
0x0005d7e2 ldr r0, [r0] | r0 = *(0xbb112);
0x0005d7e4 subs r0, 1 | r0--;
0x0005d7e6 cmp r0, 5 |
| if (r0 <= 5) {
0x0005d7e8 blo.w 0x5dd08 | goto label_31;
| }
0x0005d7ec ldr r6, [pc, 0x140] |
0x0005d7ee add r6, pc | r6 = 0xbb122;
0x0005d7f0 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005d7f2 cmp r1, 0 |
| if (r1 == 0) {
0x0005d7f4 beq.w 0x5dd08 | goto label_31;
| }
0x0005d7f8 cmp r1, 1 |
| if (r1 != 1) {
0x0005d7fa beq 0x5d804 |
0x0005d7fc cmp r1, 2 |
| if (r1 != 2) {
0x0005d7fe bne.w 0x5dcf8 | goto label_32;
| }
0x0005d802 movs r1, 2 | r1 = 2;
| }
| label_2:
0x0005d804 ldr r0, [r6] | r0 = *(r6);
0x0005d806 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005d80a cmp r0, 0 |
| if (r0 == 0) {
0x0005d80c beq.w 0x5dd08 | goto label_31;
| }
0x0005d810 ldr r0, [r6] | r0 = *(r6);
0x0005d812 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005d814 cmp r2, 0 |
| if (r2 == 0) {
0x0005d816 beq.w 0x5edfc | goto label_33;
| }
0x0005d81a ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005d81e ldrd lr, r3, [r0, 0x34] | __asm ("ldrd lr, r3, [r0, 0x34]");
0x0005d822 ldr r1, [pc, 0x110] |
0x0005d824 ldr r4, [pc, 0x110] |
0x0005d826 add r1, pc | r1 = 0xbb160;
0x0005d828 ldr r7, [pc, 0x110] |
0x0005d82a add r4, pc | r4 = 0xbb166;
0x0005d82c strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005d830 mov r8, r1 | r8 = r1;
0x0005d832 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005d834 str r1, [sp, 0xb8] | var_b8h = r1;
0x0005d836 add r1, sp, 0x110 | r1 += var_110h;
0x0005d838 str r1, [sp, 0xb4] | var_b4h = r1;
0x0005d83a add r1, sp, 0xb4 | r1 += var_b4h;
0x0005d83c str r1, [sp, 0xa8] | var_a8h = r1;
0x0005d83e movs r1, 0 | r1 = 0;
0x0005d840 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005d844 str r1, [sp, 0x110] | var_110h = r1;
0x0005d846 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005d848 add r7, pc | r7 = 0xbb188;
0x0005d84a strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x0005d84e add r1, sp, 0xa8 | r1 += var_a8h;
0x0005d850 str r2, [sp, 0xb0] | var_b0h = r2;
0x0005d852 movs r2, 1 | r2 = 1;
0x0005d854 strd lr, r3, [sp, 0x11c] | __asm ("strd lr, r3, [var_120h]");
0x0005d858 mov fp, r4 |
0x0005d85a str r2, [sp, 0xac] | var_ach = r2;
0x0005d85c str.w r8, [sp, 0xbc] | __asm ("str.w r8, [var_bch]");
0x0005d860 str r4, [sp, 0xd0] | var_d0h = r4;
0x0005d862 strd r7, r2, [sp, 0xc0] | __asm ("strd r7, r2, [var_c0h]");
0x0005d866 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005d86a ldr r0, [pc, 0xd4] |
0x0005d86c add r0, pc | r0 = 0xbb1b2;
0x0005d86e ldrb r0, [r0] | r0 = *(r0);
0x0005d870 cmp r0, 0 |
| if (r0 != 0) {
0x0005d872 bne.w 0x5ddde | goto label_34;
| }
0x0005d876 ldr r0, [pc, 0xcc] |
0x0005d878 add r0, pc |
0x0005d87a ldr r0, [r0] | r0 = *(0xbb1c2);
0x0005d87c cmp r0, 5 |
| if (r0 <= 5) {
0x0005d87e blo.w 0x5ddde | goto label_34;
| }
0x0005d882 ldr.w r8, [r6] | r8 = *(r6);
0x0005d886 movs r7, 5 | r7 = 5;
0x0005d888 ldr r0, [pc, 0xbc] |
0x0005d88a mov r6, fp | r6 = fp;
0x0005d88c ldr r1, [pc, 0xbc] |
0x0005d88e ldr r2, [pc, 0xc0] |
0x0005d890 add r0, pc |
0x0005d892 ldr r3, [pc, 0xc0] |
0x0005d894 add r1, pc | r1 = 0xbb1e4;
0x0005d896 ldrd ip, r4, [r8, 8] | __asm ("ldrd ip, r4, [r8, 8]");
0x0005d89a add r2, pc | r2 = 0xbb1f0;
0x0005d89c str r7, [sp, 0x16c] | var_16ch = r7;
0x0005d89e add r3, pc | r3 = 0xbb1f8;
0x0005d8a0 strd ip, r4, [sp, 0x170] | __asm ("strd ip, r4, [var_174h]");
0x0005d8a4 mov r7, fp | r7 = fp;
0x0005d8a6 ldr r0, [r0] | r0 = *(0xbb1dc);
0x0005d8a8 dmb ish | __asm ("dmb ish");
0x0005d8ac ldr r6, [r1] | r6 = *(0xbb1e4);
0x0005d8ae ldr r1, [r2] | r1 = *(0xbb1f0);
0x0005d8b0 cmp r0, 2 |
0x0005d8b2 it ne |
| if (r0 == 2) {
0x0005d8b4 movne r6, r3 | r6 = r3;
| }
0x0005d8b6 ldr r2, [r6, 0x10] | r2 = *(0xbb1f4);
0x0005d8b8 it eq |
| if (r0 != 2) {
0x0005d8ba moveq r7, r1 | r7 = r1;
| }
0x0005d8bc add r1, sp, 0x16c | r1 += var_16ch;
0x0005d8be mov r0, r7 | r0 = r7;
0x0005d8c0 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005d8c2 cmp r0, 0 |
| if (r0 == 0) {
0x0005d8c4 beq.w 0x5ddde | goto label_34;
| }
0x0005d8c8 ldr r1, [sp, 0x174] | r1 = var_174h;
0x0005d8ca mov r2, r6 | r2 = r6;
0x0005d8cc ldrd r3, r0, [sp, 0x16c] | __asm ("ldrd r3, r0, [var_16ch]");
0x0005d8d0 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005d8d4 add r0, sp, 0xa8 | r0 += var_a8h;
0x0005d8d6 str r0, [sp, 8] | var_8h = r0;
0x0005d8d8 mov r0, r8 | r0 = r8;
0x0005d8da mov r1, r7 | r1 = r7;
0x0005d8dc b 0x5ddda | goto label_35;
| }
0x0005d8de ldrb.w r0, [r5, 0x1a4] | r0 = *((r5 + 0x1a4));
0x0005d8e2 cmp r0, 3 |
0x0005d8e4 itt ne |
| if (r0 == 3) {
0x0005d8e6 movne r0, sl | r0 = sl;
| }
| if (r0 != 3) {
0x0005d8e8 blne 0x495d0 | __asm ("blne fcn.000495d0");
| }
0x0005d8ec add r0, sp, 0x70 | r0 += var_70h;
0x0005d8ee mov r1, sl | r1 = sl;
0x0005d8f0 vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x0005d8f4 vst1.64 {d16, d17}, [r1]! | __asm ("vst1.64 {d16, d17}, [r1]!");
0x0005d8f8 ldr r0, [r0] | r0 = *(r0);
0x0005d8fa str r0, [r1] | *(r1) = r0;
0x0005d8fc b 0x5dc6a | goto label_29;
| label_24:
0x0005d958 ldr r0, [pc, 0x31c] |
0x0005d95a add r0, pc | r0 = 0xbb5d6;
0x0005d95c bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005d960 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005d962 cmp r1, 0 |
0x0005d964 bne.w 0x5d66e |
| } while (r1 != 0);
| label_22:
0x0005d968 ldr r0, [pc, 0x310] |
0x0005d96a add r0, pc | r0 = 0xbb5ea;
0x0005d96c ldrb r0, [r0] | r0 = *(r0);
0x0005d96e cmp r0, 0 |
| if (r0 == 0) {
0x0005d970 bne 0x5da52 |
0x0005d972 ldr r0, [pc, 0x30c] |
0x0005d974 add r0, pc |
0x0005d976 ldr r0, [r0] | r0 = *(0xbb5fa);
0x0005d978 cmp r0, 5 |
| if (r0 <= 5) {
0x0005d97a blo 0x5da52 | goto label_26;
| }
0x0005d97c str r7, [sp, 0x40] | var_40h = r7;
0x0005d97e movs r7, 5 | r7 = 5;
0x0005d980 ldr r0, [pc, 0x300] |
0x0005d982 add r0, pc | r0 = 0xbb60a;
0x0005d984 str r0, [sp, 0x34] | var_34h = r0;
0x0005d986 ldr.w r8, [r0] | r8 = *(0xbb60a);
0x0005d98a ldr r0, [pc, 0x2fc] |
0x0005d98c ldr r1, [pc, 0x2fc] |
0x0005d98e ldr r2, [pc, 0x300] |
0x0005d990 add r0, pc |
0x0005d992 ldr r3, [pc, 0x300] |
0x0005d994 add r1, pc | r1 = 0xbb624;
0x0005d996 ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005d99a add r2, pc | r2 = 0xbb630;
0x0005d99c add r3, pc | r3 = 0xbb636;
0x0005d99e str r4, [sp, 0x90] | var_90h = r4;
0x0005d9a0 strd r7, r6, [sp, 0x88] | __asm ("strd r7, r6, [var_88h]");
0x0005d9a4 ldr r0, [r0] | r0 = *(0xbb61e);
0x0005d9a6 ldr r7, [pc, 0x2f0] |
0x0005d9a8 dmb ish | __asm ("dmb ish");
0x0005d9ac ldr.w fp, [r1] | fp = *(0xbb624);
0x0005d9b0 cmp r0, 2 |
0x0005d9b2 ldr r4, [r2] | r4 = *(0xbb630);
0x0005d9b4 it ne |
| if (r0 == 2) {
0x0005d9b6 movne fp, r3 |
| }
0x0005d9b8 ldr.w r2, [fp, 0x10] | r2 = var_98h;
0x0005d9bc add r1, sp, 0x88 | r1 += var_88h;
0x0005d9be add r7, pc | r7 = 0xbb65c;
0x0005d9c0 it ne |
| if (r0 == 2) {
0x0005d9c2 movne r4, r7 | r4 = r7;
| }
0x0005d9c4 mov r0, r4 | r0 = r4;
0x0005d9c6 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005d9c8 cmp r0, 0 |
| if (r0 != 0) {
0x0005d9ca beq 0x5da50 |
0x0005d9cc ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005d9ce mov lr, r7 | lr = r7;
0x0005d9d0 mov r7, sb | r7 = sb;
0x0005d9d2 add.w sb, sp, 0x158 | sb += var_158h;
0x0005d9d6 ldr r0, [r0] | r0 = *(r0);
0x0005d9d8 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005d9da cmp r1, 0 |
| if (r1 == 0) {
0x0005d9dc beq.w 0x5ed9e | goto label_25;
| }
0x0005d9e0 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0005d9e2 add.w ip, sp, 0x110 |
0x0005d9e6 str r2, [sp, 0x34] | var_34h = r2;
0x0005d9e8 ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0005d9ea str r2, [sp, 0x30] | var_30h = r2;
0x0005d9ec ldr r2, [sp, 0x90] | r2 = var_90h;
0x0005d9ee str r2, [sp, 0x2c] | var_2ch = r2;
0x0005d9f0 ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x0005d9f2 str r2, [sp, 0x20] | var_20h = r2;
0x0005d9f4 ldrd r2, r6, [r0, 0x34] | __asm ("ldrd r2, r6, [r0, 0x34]");
0x0005d9f8 adds r0, 0x2c | r0 += 0x2c;
0x0005d9fa ldr r3, [pc, 0x2a0] |
0x0005d9fc add r3, pc | r3 = 0xbb69e;
0x0005d9fe str r3, [sp, 0x24] | var_24h = r3;
0x0005da00 ldr r3, [pc, 0x29c] |
0x0005da02 str r0, [sp, 0xa0] | var_a0h = r0;
0x0005da04 movs r0, 1 | r0 = 1;
0x0005da06 add r3, pc | r3 = 0xbb6aa;
0x0005da08 str r3, [sp, 0x28] | var_28h = r3;
0x0005da0a add r3, sp, 0xc0 | r3 += var_c0h;
0x0005da0c str r3, [sp, 0x15c] | var_15ch = r3;
0x0005da0e add r3, sp, 0x118 | r3 += var_118h;
0x0005da10 str r0, [sp, 0x9c] | var_9ch = r0;
0x0005da12 stm r3!, {r1, r2, r6} | *(r3!) = r1;
| *((r3! + 4)) = r2;
| *((r3! + 8)) = r6;
0x0005da14 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0005da16 str r1, [sp, 0x114] | var_114h = r1;
0x0005da18 movs r1, 0 | r1 = 0;
0x0005da1a strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005da1e ldr r0, [sp, 0x28] | r0 = var_28h;
0x0005da20 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005da22 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005da24 str r0, [sp] | *(sp) = r0;
0x0005da26 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005da28 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005da2a ldr r2, [sp, 0x24] | r2 = var_24h;
0x0005da2c str r0, [sp, 4] | var_4h = r0;
0x0005da2e add r0, sp, 0x98 | r0 += var_98h;
0x0005da30 str r2, [sp, 0x160] | var_160h = r2;
0x0005da32 mov r2, fp | r2 = fp;
0x0005da34 str r0, [sp, 8] | var_8h = r0;
0x0005da36 mov r0, r8 | r0 = r8;
0x0005da38 str r1, [sp, 0x110] | var_110h = r1;
0x0005da3a str r1, [sp, 0xd4] | var_d4h = r1;
0x0005da3c strd r1, lr, [sp, 0xcc] | __asm ("strd r1, lr, [var_d0h]");
0x0005da40 mov r1, r4 | r1 = r4;
0x0005da42 str.w ip, [sp, 0x158] | __asm ("str.w ip, [var_158h]");
0x0005da46 str.w sb, [sp, 0x98] | __asm ("str.w sb, [var_98h]");
0x0005da4a bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005da4e mov sb, r7 | sb = r7;
| }
| label_27:
0x0005da50 ldr r7, [sp, 0x40] | r7 = var_40h;
| }
| label_26:
0x0005da52 add r4, sp, 0xc0 | r4 += var_c0h;
0x0005da54 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005da56 mov r1, r5 | r1 = r5;
0x0005da58 mov r0, r4 | r0 = r4;
0x0005da5a bl 0x4f160 | fcn_0004f160 (r0, r1, r2);
0x0005da5e mov r0, r4 | r0 = r4;
0x0005da60 bl 0x46458 | fcn_00046458 (r0);
0x0005da64 ldr r0, [r5, 0x58] | r0 = *((r5 + 0x58));
| if (r0 != 0) {
0x0005da66 cbz r0, 0x5da6c |
0x0005da68 cmp r0, 3 |
| if (r0 != 3) {
0x0005da6a bne 0x5db62 | goto label_36;
| }
| }
0x0005da6c ldr r0, [r7] | r0 = *(r7);
0x0005da6e subs r0, 1 | r0--;
0x0005da70 cmp r0, 5 |
| if (r0 <= 5) {
0x0005da72 blo.w 0x5db78 | goto label_37;
| }
0x0005da76 ldr r6, [pc, 0x22c] |
0x0005da78 add r6, pc | r6 = 0xbb722;
0x0005da7a ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005da7c cmp r1, 0 |
| if (r1 == 0) {
0x0005da7e beq 0x5db78 | goto label_37;
| }
0x0005da80 cmp r1, 1 |
| if (r1 == 1) {
0x0005da82 beq 0x5da8a | goto label_38;
| }
0x0005da84 cmp r1, 2 |
| if (r1 != 2) {
0x0005da86 bne 0x5db6a | goto label_39;
| }
0x0005da88 movs r1, 2 | r1 = 2;
| do {
| label_38:
0x0005da8a ldr r0, [r6] | r0 = *(r6);
0x0005da8c bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005da90 cmp r0, 0 |
| if (r0 == 0) {
0x0005da92 beq 0x5db78 | goto label_37;
| }
0x0005da94 ldr r0, [r6] | r0 = *(r6);
0x0005da96 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005da98 cmp r2, 0 |
| if (r2 == 0) {
0x0005da9a beq.w 0x5eda8 | goto label_40;
| }
0x0005da9e ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005daa2 ldrd lr, r3, [r0, 0x34] | __asm ("ldrd lr, r3, [r0, 0x34]");
0x0005daa6 ldr r1, [pc, 0x200] |
0x0005daa8 ldr r4, [pc, 0x200] |
0x0005daaa add r1, pc | r1 = 0xbb758;
0x0005daac ldr r7, [pc, 0x200] |
0x0005daae add r4, pc | r4 = 0xbb75e;
0x0005dab0 strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005dab4 mov r8, r1 | r8 = r1;
0x0005dab6 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005dab8 str r1, [sp, 0x9c] | var_9ch = r1;
0x0005daba add r1, sp, 0x110 | r1 += var_110h;
0x0005dabc str r1, [sp, 0x98] | var_98h = r1;
0x0005dabe add r1, sp, 0x98 | r1 += var_98h;
0x0005dac0 str r1, [sp, 0x88] | var_88h = r1;
0x0005dac2 movs r1, 0 | r1 = 0;
0x0005dac4 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005dac8 str r1, [sp, 0x110] | var_110h = r1;
0x0005daca str r1, [sp, 0xd4] | var_d4h = r1;
0x0005dacc add r7, pc | r7 = 0xbb780;
0x0005dace strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x0005dad2 add r1, sp, 0x88 | r1 += var_88h;
0x0005dad4 str r2, [sp, 0x90] | var_90h = r2;
0x0005dad6 movs r2, 1 | r2 = 1;
0x0005dad8 strd lr, r3, [sp, 0x11c] | __asm ("strd lr, r3, [var_120h]");
0x0005dadc mov fp, r4 |
0x0005dade str r2, [sp, 0x8c] | var_8ch = r2;
0x0005dae0 str.w r8, [sp, 0xa0] | __asm ("str.w r8, [var_a0h]");
0x0005dae4 str r4, [sp, 0xd0] | var_d0h = r4;
0x0005dae6 strd r7, r2, [sp, 0xc0] | __asm ("strd r7, r2, [var_c0h]");
0x0005daea bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005daee ldr r0, [pc, 0x1c4] |
0x0005daf0 add r0, pc | r0 = 0xbb7aa;
0x0005daf2 ldrb r0, [r0] | r0 = *(r0);
0x0005daf4 cmp r0, 0 |
| if (r0 != 0) {
0x0005daf6 bne.w 0x5dc5e | goto label_41;
| }
0x0005dafa ldr r0, [pc, 0x1bc] |
0x0005dafc add r0, pc |
0x0005dafe ldr r0, [r0] | r0 = *(0xbb7ba);
0x0005db00 cmp r0, 5 |
| if (r0 <= 5) {
0x0005db02 blo.w 0x5dc5e | goto label_41;
| }
0x0005db06 ldr.w r8, [r6] | r8 = *(r6);
0x0005db0a movs r7, 5 | r7 = 5;
0x0005db0c ldr r0, [pc, 0x1ac] |
0x0005db0e ldr r1, [pc, 0x1b0] |
0x0005db10 ldr r2, [pc, 0x1b0] |
0x0005db12 add r0, pc |
0x0005db14 ldr r3, [pc, 0x1b0] |
0x0005db16 add r1, pc | r1 = 0xbb7dc;
0x0005db18 ldrd ip, r4, [r8, 8] | __asm ("ldrd ip, r4, [r8, 8]");
0x0005db1c add r2, pc | r2 = 0xbb7e4;
0x0005db1e add r3, pc | r3 = 0xbb7ea;
0x0005db20 str r4, [sp, 0x160] | var_160h = r4;
0x0005db22 strd r7, ip, [sp, 0x158] | __asm ("strd r7, ip, [var_158h]");
0x0005db26 ldr r0, [r0] | r0 = *(0xbb7d2);
0x0005db28 dmb ish | __asm ("dmb ish");
0x0005db2c ldr r6, [r1] | r6 = *(0xbb7dc);
0x0005db2e ldr r1, [r2] | r1 = *(0xbb7e4);
0x0005db30 cmp r0, 2 |
0x0005db32 it ne |
| if (r0 == 2) {
0x0005db34 movne r6, r3 | r6 = r3;
| }
0x0005db36 ldr r2, [r6, 0x10] | r2 = *(0xbb7ec);
0x0005db38 it eq |
| if (r0 != 2) {
0x0005db3a moveq fp, r1 |
| }
0x0005db3c add r1, sp, 0x158 | r1 += var_158h;
0x0005db3e mov r0, fp | r0 = fp;
0x0005db40 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005db42 cmp r0, 0 |
| if (r0 == 0) {
0x0005db44 beq.w 0x5dc5e | goto label_41;
| }
0x0005db48 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005db4a mov r2, r6 | r2 = r6;
0x0005db4c ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005db50 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005db54 add r0, sp, 0x88 | r0 += var_88h;
0x0005db56 str r0, [sp, 8] | var_8h = r0;
0x0005db58 mov r0, r8 | r0 = r8;
0x0005db5a mov r1, fp | r1 = fp;
0x0005db5c bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005db60 b 0x5dc5e | goto label_41;
| label_36:
0x0005db62 mov r0, r5 | r0 = r5;
0x0005db64 bl 0x114880 | fcn_00114880 (r0);
0x0005db68 b 0x5dc5e | goto label_41;
| label_39:
0x0005db6a ldr r0, [pc, 0x160] |
0x0005db6c add r0, pc | r0 = 0xbb83e;
0x0005db6e bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005db72 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005db74 cmp r1, 0 |
0x0005db76 bne 0x5da8a |
| } while (r1 != 0);
| label_37:
0x0005db78 ldr r0, [pc, 0x154] |
0x0005db7a add r0, pc | r0 = 0xbb84e;
0x0005db7c ldrb r0, [r0] | r0 = *(r0);
0x0005db7e cmp r0, 0 |
| if (r0 == 0) {
0x0005db80 bne 0x5dc5e |
0x0005db82 ldr r0, [pc, 0x150] |
0x0005db84 add r0, pc |
0x0005db86 ldr r0, [r0] | r0 = *(0xbb85e);
0x0005db88 cmp r0, 5 |
| if (r0 <= 5) {
0x0005db8a blo 0x5dc5e | goto label_41;
| }
0x0005db8c ldr r0, [pc, 0x148] |
0x0005db8e movs r7, 5 | r7 = 5;
0x0005db90 add r0, pc | r0 = 0xbb86c;
0x0005db92 str r0, [sp, 0x40] | var_40h = r0;
0x0005db94 ldr.w r8, [r0] | r8 = *(0xbb86c);
0x0005db98 ldr r0, [pc, 0x140] |
0x0005db9a ldr r1, [pc, 0x144] |
0x0005db9c ldr r2, [pc, 0x144] |
0x0005db9e add r0, pc |
0x0005dba0 ldr r3, [pc, 0x144] |
0x0005dba2 add r1, pc | r1 = 0xbb888;
0x0005dba4 ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005dba8 add r2, pc | r2 = 0xbb890;
0x0005dbaa add r3, pc | r3 = 0xbb896;
0x0005dbac str r4, [sp, 0x90] | var_90h = r4;
0x0005dbae strd r7, r6, [sp, 0x88] | __asm ("strd r7, r6, [var_88h]");
0x0005dbb2 ldr r0, [r0] | r0 = *(0xbb87e);
0x0005dbb4 ldr r7, [pc, 0x134] |
0x0005dbb6 dmb ish | __asm ("dmb ish");
0x0005dbba ldr r6, [r1] | r6 = *(0xbb888);
0x0005dbbc cmp r0, 2 |
0x0005dbbe ldr r4, [r2] | r4 = *(0xbb890);
0x0005dbc0 it ne |
| if (r0 == 2) {
0x0005dbc2 movne r6, r3 | r6 = r3;
| }
0x0005dbc4 ldr r2, [r6, 0x10] | r2 = *(0xbb898);
0x0005dbc6 add r1, sp, 0x88 | r1 += var_88h;
0x0005dbc8 add r7, pc | r7 = 0xbb8b8;
0x0005dbca it ne |
| if (r0 == 2) {
0x0005dbcc movne r4, r7 | r4 = r7;
| }
0x0005dbce mov r0, r4 | r0 = r4;
0x0005dbd0 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005dbd2 cmp r0, 0 |
| if (r0 == 0) {
0x0005dbd4 beq 0x5dc5e | goto label_41;
| }
0x0005dbd6 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0005dbd8 str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
0x0005dbdc add.w sb, sp, 0x158 | sb += var_158h;
0x0005dbe0 ldr r0, [r0] | r0 = *(r0);
0x0005dbe2 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005dbe4 cmp r1, 0 |
| if (r1 == 0) {
0x0005dbe6 beq.w 0x5eda8 | goto label_40;
| }
0x0005dbea ldr r2, [sp, 0x88] | r2 = var_88h;
0x0005dbec add.w lr, sp, 0x110 | lr += var_110h;
0x0005dbf0 str r2, [sp, 0x40] | var_40h = r2;
0x0005dbf2 ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0005dbf4 str r2, [sp, 0x30] | var_30h = r2;
0x0005dbf6 ldr r2, [sp, 0x90] | r2 = var_90h;
0x0005dbf8 str r2, [sp, 0x2c] | var_2ch = r2;
0x0005dbfa ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x0005dbfc str r2, [sp, 0x24] | var_24h = r2;
0x0005dbfe ldrd ip, r2, [r0, 0x34] | __asm ("ldrd ip, r2, [r0, 0x34]");
0x0005dc02 adds r0, 0x2c | r0 += 0x2c;
0x0005dc04 ldr r3, [pc, 0xe8] |
0x0005dc06 add r3, pc | r3 = 0xbb8fa;
0x0005dc08 mov fp, r3 |
0x0005dc0a ldr r3, [pc, 0xe8] |
0x0005dc0c strd r1, ip, [sp, 0x118] | __asm ("strd r1, ip, [var_118h]");
0x0005dc10 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005dc12 add r3, pc | r3 = 0xbb90c;
0x0005dc14 str r3, [sp, 0x28] | var_28h = r3;
0x0005dc16 add r3, sp, 0xc0 | r3 += var_c0h;
0x0005dc18 str r1, [sp, 0x114] | var_114h = r1;
0x0005dc1a movs r1, 0 | r1 = 0;
0x0005dc1c str r0, [sp, 0xa0] | var_a0h = r0;
0x0005dc1e movs r0, 1 | r0 = 1;
0x0005dc20 str r0, [sp, 0x9c] | var_9ch = r0;
0x0005dc22 strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005dc26 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0005dc28 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005dc2a ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005dc2c str r3, [sp, 0x15c] | var_15ch = r3;
0x0005dc2e str r0, [sp] | *(sp) = r0;
0x0005dc30 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005dc32 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0005dc34 str r0, [sp, 4] | var_4h = r0;
0x0005dc36 add r0, sp, 0x98 | r0 += var_98h;
0x0005dc38 str r2, [sp, 0x120] | var_120h = r2;
0x0005dc3a mov r2, r6 | r2 = r6;
0x0005dc3c str r0, [sp, 8] | var_8h = r0;
0x0005dc3e mov r0, r8 | r0 = r8;
0x0005dc40 str r1, [sp, 0x110] | var_110h = r1;
0x0005dc42 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005dc44 strd r1, r7, [sp, 0xcc] | __asm ("strd r1, r7, [var_d0h]");
0x0005dc48 mov r1, r4 | r1 = r4;
0x0005dc4a str.w lr, [sp, 0x158] | __asm ("str.w lr, [var_158h]");
0x0005dc4e str.w sb, [sp, 0x98] | __asm ("str.w sb, [var_98h]");
0x0005dc52 str.w fp, [sp, 0x160] | __asm ("str.w fp, [var_160h]");
0x0005dc56 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005dc5a ldr.w sb, [sp, 0x34] | sb = var_34h;
| }
| label_41:
0x0005dc5e add r0, sp, 0x16c | r0 += var_16ch;
0x0005dc60 bl 0x48934 | fcn_00048934 (r0);
| label_3:
0x0005dc64 add r0, sp, 0x70 | r0 += var_70h;
0x0005dc66 bl 0x495d0 | fcn_000495d0 (r0, r1);
| label_29:
0x0005dc6a ldrb.w r0, [r5, 0x1b0] | r0 = *((r5 + 0x1b0));
0x0005dc6e cmp r0, 0 |
| if (r0 == 0) {
0x0005dc70 beq.w 0x5d5b8 | goto label_0;
| }
0x0005dc74 b 0x5d582 | goto label_1;
| label_32:
0x0005dcf8 ldr r0, [pc, 0x328] |
0x0005dcfa add r0, pc | r0 = 0xbbd22;
0x0005dcfc bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005dd00 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005dd02 cmp r1, 0 |
| if (r1 != 0) {
0x0005dd04 bne.w 0x5d804 | goto label_2;
| }
| label_31:
0x0005dd08 ldr r0, [pc, 0x31c] |
0x0005dd0a add r0, pc | r0 = 0xbbd36;
0x0005dd0c ldrb r0, [r0] | r0 = *(r0);
0x0005dd0e cmp r0, 0 |
| if (r0 == 0) {
0x0005dd10 bne 0x5ddde |
0x0005dd12 ldr r0, [pc, 0x318] |
0x0005dd14 add r0, pc |
0x0005dd16 ldr r0, [r0] | r0 = *(0xbbd46);
0x0005dd18 cmp r0, 5 |
| if (r0 <= 5) {
0x0005dd1a blo 0x5ddde | goto label_34;
| }
0x0005dd1c ldr r0, [pc, 0x310] |
0x0005dd1e movs r7, 5 | r7 = 5;
0x0005dd20 add r0, pc | r0 = 0xbbd54;
0x0005dd22 str r0, [sp, 0x40] | var_40h = r0;
0x0005dd24 ldr.w r8, [r0] | r8 = *(0xbbd54);
0x0005dd28 ldr r0, [pc, 0x308] |
0x0005dd2a ldr r1, [pc, 0x30c] |
0x0005dd2c ldr r2, [pc, 0x30c] |
0x0005dd2e add r0, pc |
0x0005dd30 ldr r3, [pc, 0x30c] |
0x0005dd32 add r1, pc | r1 = 0xbbd70;
0x0005dd34 ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005dd38 add r2, pc | r2 = 0xbbd78;
0x0005dd3a add r3, pc | r3 = 0xbbd7e;
0x0005dd3c str r4, [sp, 0xb0] | var_b0h = r4;
0x0005dd3e strd r7, r6, [sp, 0xa8] | __asm ("strd r7, r6, [var_a8h]");
0x0005dd42 ldr r0, [r0] | r0 = *(0xbbd66);
0x0005dd44 ldr r7, [pc, 0x2fc] |
0x0005dd46 dmb ish | __asm ("dmb ish");
0x0005dd4a ldr r6, [r1] | r6 = *(0xbbd70);
0x0005dd4c cmp r0, 2 |
0x0005dd4e ldr r4, [r2] | r4 = *(0xbbd78);
0x0005dd50 it ne |
| if (r0 == 2) {
0x0005dd52 movne r6, r3 | r6 = r3;
| }
0x0005dd54 ldr r2, [r6, 0x10] | r2 = *(0xbbd80);
0x0005dd56 add r1, sp, 0xa8 | r1 += var_a8h;
0x0005dd58 add r7, pc | r7 = 0xbbda0;
0x0005dd5a it ne |
| if (r0 == 2) {
0x0005dd5c movne r4, r7 | r4 = r7;
| }
0x0005dd5e mov r0, r4 | r0 = r4;
0x0005dd60 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 == 0) {
0x0005dd62 cbz r0, 0x5ddde | goto label_34;
| }
0x0005dd64 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0005dd66 ldr r0, [r0] | r0 = *(r0);
0x0005dd68 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005dd6a cmp r1, 0 |
| if (r1 == 0) {
0x0005dd6c beq.w 0x5edfc | goto label_33;
| }
0x0005dd70 ldr r2, [sp, 0xa8] | r2 = var_a8h;
0x0005dd72 add.w ip, sp, 0x110 |
0x0005dd76 str r2, [sp, 0x40] | var_40h = r2;
0x0005dd78 ldr r2, [sp, 0xac] | r2 = var_ach;
0x0005dd7a str r2, [sp, 0x34] | var_34h = r2;
0x0005dd7c ldr r2, [sp, 0xb0] | r2 = var_b0h;
0x0005dd7e str r2, [sp, 0x30] | var_30h = r2;
0x0005dd80 ldr.w lr, [r0, 0x2c] |
0x0005dd84 ldrd fp, r2, [r0, 0x34] | __asm ("ldrd fp, r2, [r0, 0x34]");
0x0005dd88 adds r0, 0x2c | r0 += 0x2c;
0x0005dd8a ldr r3, [pc, 0x2bc] |
0x0005dd8c add r3, pc | r3 = 0xbbdda;
0x0005dd8e str r3, [sp, 0x28] | var_28h = r3;
0x0005dd90 ldr r3, [pc, 0x2b8] |
0x0005dd92 strd lr, r1, [sp, 0x114] | __asm ("strd lr, r1, [var_114h]");
0x0005dd96 movs r1, 0 | r1 = 0;
0x0005dd98 add r3, pc | r3 = 0xbbde8;
0x0005dd9a str r3, [sp, 0x2c] | var_2ch = r3;
0x0005dd9c str r0, [sp, 0xbc] | var_bch = r0;
0x0005dd9e movs r0, 1 | r0 = 1;
0x0005dda0 str r0, [sp, 0xb8] | var_b8h = r0;
0x0005dda2 add r3, sp, 0xc0 | r3 += var_c0h;
0x0005dda4 strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005dda8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005ddaa str r0, [sp, 0xc0] | var_c0h = r0;
0x0005ddac ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005ddae str r0, [sp] | *(sp) = r0;
0x0005ddb0 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005ddb2 str r3, [sp, 0x170] | var_170h = r3;
0x0005ddb4 add r3, sp, 0x16c | r3 += var_16ch;
0x0005ddb6 strd fp, r2, [sp, 0x11c] | __asm ("strd fp, r2, [var_120h]");
0x0005ddba ldr r2, [sp, 0x28] | r2 = var_28h;
0x0005ddbc str r0, [sp, 4] | var_4h = r0;
0x0005ddbe add r0, sp, 0xb4 | r0 += var_b4h;
0x0005ddc0 str r3, [sp, 0xb4] | var_b4h = r3;
0x0005ddc2 str r2, [sp, 0x174] | var_174h = r2;
0x0005ddc4 mov r2, r6 | r2 = r6;
0x0005ddc6 str r0, [sp, 8] | var_8h = r0;
0x0005ddc8 mov r0, r8 | r0 = r8;
0x0005ddca str.w ip, [sp, 0x16c] | __asm ("str.w ip, [var_16ch]");
0x0005ddce str r1, [sp, 0x110] | var_110h = r1;
0x0005ddd0 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005ddd2 strd r1, r7, [sp, 0xcc] | __asm ("strd r1, r7, [var_d0h]");
0x0005ddd6 mov r1, r4 | r1 = r4;
0x0005ddd8 ldr r3, [sp, 0x40] | r3 = var_40h;
| label_35:
0x0005ddda bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_34:
0x0005ddde mov r0, r5 | r0 = r5;
0x0005dde0 bl 0x114880 | fcn_00114880 (r0);
| label_30:
0x0005dde4 ldr r0, [sp, 0xa4] | r0 = var_a4h;
0x0005dde6 ldrd r1, r2, [sp, 0x98] | __asm ("ldrd r1, r2, [var_98h]");
0x0005ddea ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0005ddec ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0005ddee blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005ddf0 b 0x5dc64 | goto label_3;
| label_19:
0x0005ddf2 eor r0, r0, 4 | r0 ^= 4;
0x0005ddf6 mov r5, r7 | r5 = r7;
0x0005ddf8 orrs r0, r1 | r0 |= r1;
| if (r0 != r1) {
0x0005ddfa beq 0x5de46 |
0x0005ddfc ldrb.w r0, [r5, 0xac] | r0 = *((r5 + 0xac));
| if (r0 != 0) {
0x0005de00 cbnz r0, 0x5de46 | goto label_28;
| }
0x0005de02 ldr.w r0, [r5, 0x114] | r0 = *((r5 + 0x114));
| if (r0 != 0) {
0x0005de06 cbnz r0, 0x5de46 | goto label_28;
| }
0x0005de08 add r7, sp, 0xc0 | r7 += var_c0h;
0x0005de0a ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005de0c mov r1, r5 | r1 = r5;
0x0005de0e mov r0, r7 | r0 = r7;
0x0005de10 bl 0x4e1bc | fcn_0004e1bc (r0, r1, r2);
0x0005de14 ldr r0, [sp, 0xc0] | r0 = var_c0h;
0x0005de16 cmp r0, 2 |
| if (r0 == 2) {
0x0005de18 beq 0x5de46 | goto label_28;
| }
0x0005de1a ldr r4, [sp, 0xc4] | r4 = var_c4h;
0x0005de1c cmp r0, 0 |
| if (r0 != 0) {
0x0005de1e bne.w 0x5e9ec | goto label_42;
| }
| if (r4 != 0) {
0x0005de22 cbnz r4, 0x5de46 | goto label_28;
| }
0x0005de24 b.w 0x5ea8c | goto label_43;
| label_20:
0x0005de28 ldrb.w r0, [r5, 0x1a4] | r0 = *((r5 + 0x1a4));
0x0005de2c cmp r0, 3 |
0x0005de2e itt ne |
| if (r0 == 3) {
0x0005de30 movne r0, sl | r0 = sl;
| }
| if (r0 != 3) {
0x0005de32 blne 0x495d0 | __asm ("blne fcn.000495d0");
| }
0x0005de36 add r0, sp, 0x70 | r0 += var_70h;
0x0005de38 vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x0005de3c vst1.64 {d16, d17}, [sl]! | __asm ("vst1.64 {d16, d17}, [sl]!");
0x0005de40 ldr r0, [r0] | r0 = *(r0);
0x0005de42 str.w r0, [sl] | __asm ("str.w r0, [sl]");
| }
| label_28:
0x0005de46 ldrb.w r0, [r5, 0x1b0] | r0 = *((r5 + 0x1b0));
0x0005de4a cmp r0, 0 |
| if (r0 != 0) {
0x0005de4c bne.w 0x5d582 | goto label_1;
| }
0x0005de50 add.w r0, r5, 0x78 | r0 = r5 + 0x78;
0x0005de54 add.w sl, r5, 0x70 | sl = r5 + 0x70;
0x0005de58 add.w sb, r5, 0x12c | sb = r5 + 0x12c;
0x0005de5c str r0, [sp, 0x2c] | var_2ch = r0;
0x0005de5e add.w r0, r5, 0x158 | r0 = r5 + 0x158;
0x0005de62 str r0, [sp, 0x28] | var_28h = r0;
0x0005de64 add.w r0, r5, 0x140 | r0 = r5 + 0x140;
0x0005de68 str r0, [sp, 0x40] | var_40h = r0;
0x0005de6a strd sb, sl, [sp, 0x30] | __asm ("strd sb, sl, [var_30h]");
| label_7:
0x0005de6e ldr.w r0, [r5, 0x1ac] | r0 = *((r5 + 0x1ac));
0x0005de72 ldr r0, [r0] | r0 = *(r0);
0x0005de74 cmp r0, 0 |
| if (r0 == 0) {
0x0005de76 beq.w 0x5e080 | goto label_44;
| }
| label_4:
0x0005de7a ldrb.w r0, [r5, 0x154] | r0 = *((r5 + 0x154));
| if (r0 == 0) {
0x0005de7e cbnz r0, 0x5de8c |
0x0005de80 mov r0, sb | r0 = sb;
0x0005de82 bl 0x4c5d0 | r0 = fcn_0004c5d0 (r0, r1);
0x0005de86 cmp r0, 0 |
| if (r0 == 0) {
0x0005de88 beq.w 0x5e1b6 | goto label_45;
| }
| }
0x0005de8c ldr.w r7, [r5, 0x1ac] | r7 = *((r5 + 0x1ac));
0x0005de90 ldr r4, [r7] | r4 = *(r7);
0x0005de92 cmp r4, 0 |
0x0005de94 it ne |
| if (r4 != 0) {
0x0005de96 movne r4, r7 | r4 = r7;
| goto label_46;
| }
| if (r4 == 0) {
| label_46:
0x0005de98 beq.w 0x5d582 | goto label_1;
| }
0x0005de9c ldrd r0, r1, [r5, 0x70] | __asm ("ldrd r0, r1, [r5, 0x70]");
0x0005dea0 subs r0, 3 | r0 -= 3;
0x0005dea2 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005dea6 rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005deaa mov.w r2, 0 | r2 = 0;
0x0005deae sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r0 > 3) {
0x0005deb2 blo.w 0x5dfd4 |
0x0005deb6 cmp r0, 1 |
| if (r0 == 1) {
0x0005deb8 beq.w 0x5dfd4 | goto label_47;
| }
0x0005debc ldr r0, [pc, 0x190] |
0x0005debe add.w r8, sp, 0xc0 | r8 += var_c0h;
0x0005dec2 add r0, pc |
0x0005dec4 ldr r0, [r0] | r0 = *(0xbbf16);
0x0005dec6 subs r0, 1 | r0--;
0x0005dec8 cmp r0, 5 |
| if (r0 <= 5) {
0x0005deca blo.w 0x5e4e2 | goto label_48;
| }
0x0005dece ldr r6, [pc, 0x184] |
0x0005ded0 add r6, pc | r6 = 0xbbf2a;
0x0005ded2 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005ded4 cmp r1, 0 |
| if (r1 == 0) {
0x0005ded6 beq.w 0x5e4e2 | goto label_48;
| }
0x0005deda cmp r1, 1 |
| if (r1 != 1) {
0x0005dedc beq 0x5dee6 |
0x0005dede cmp r1, 2 |
| if (r1 != 2) {
0x0005dee0 bne.w 0x5e4d2 | goto label_49;
| }
0x0005dee4 movs r1, 2 | r1 = 2;
| }
| label_5:
0x0005dee6 ldr r0, [r6] | r0 = *(r6);
0x0005dee8 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005deec cmp r0, 0 |
| if (r0 == 0) {
0x0005deee beq.w 0x5e4e2 | goto label_48;
| }
0x0005def2 mov sb, r6 | sb = r6;
0x0005def4 ldr r6, [r6] | r6 = *(r6);
0x0005def6 add.w fp, sp, 0x88 |
0x0005defa ldr r0, [r6, 0x30] | r0 = *((r6 + 0x30));
0x0005defc cmp r0, 0 |
| if (r0 == 0) {
0x0005defe beq.w 0x5edb2 | goto label_50;
| }
0x0005df02 ldrd r2, r3, [r6, 0x34] | __asm ("ldrd r2, r3, [r6, 0x34]");
0x0005df06 mov sl, r5 | sl = r5;
0x0005df08 ldr r1, [r6, 0x2c] | r1 = *((r6 + 0x2c));
0x0005df0a movs r5, 0 | r5 = 0;
0x0005df0c strd r2, r3, [sp, 0x11c] | __asm ("strd r2, r3, [var_120h]");
0x0005df10 strd r1, r0, [sp, 0x114] | __asm ("strd r1, r0, [var_114h]");
0x0005df14 str r5, [sp, 0x110] | var_110h = r5;
0x0005df16 ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
0x0005df1a ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0005df1c blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005df1e ldr r1, [pc, 0x138] |
0x0005df20 ldr r2, [pc, 0x138] |
0x0005df22 ldr r3, [pc, 0x13c] |
0x0005df24 add r1, pc | r1 = 0xbbf82;
0x0005df26 strb.w r0, [sp, 0x16c] | var_16ch = r0;
0x0005df2a add r0, sp, 0x16c | r0 += var_16ch;
0x0005df2c str r0, [sp, 0x88] | var_88h = r0;
0x0005df2e add r0, sp, 0x110 | r0 += var_110h;
0x0005df30 str r0, [sp, 0x70] | var_70h = r0;
0x0005df32 add.w r0, r6, 0x2c | r0 = r6 + 0x2c;
0x0005df36 str r1, [sp, 0x8c] | var_8ch = r1;
0x0005df38 movs r1, 1 | r1 = 1;
0x0005df3a add r2, pc | r2 = 0xbbf9a;
0x0005df3c strd r1, r0, [sp, 0x9c] | __asm ("strd r1, r0, [var_a0h]");
0x0005df40 strd fp, r1, [sp, 0xd0] | __asm ("strd fp, r1, [var_d0h]");
0x0005df44 add r3, pc | r3 = 0xbbfaa;
0x0005df46 strd r2, r1, [sp, 0xc0] | __asm ("strd r2, r1, [var_c0h]");
0x0005df4a add r1, sp, 0x70 | r1 += var_70h;
0x0005df4c ldr.w r0, [sb] | r0 = *(sb);
0x0005df50 str r1, [sp, 0x98] | var_98h = r1;
0x0005df52 add r1, sp, 0x98 | r1 += var_98h;
0x0005df54 strd r5, r5, [sp, 0xc8] | __asm ("strd r5, r5, [var_cch]");
0x0005df58 strd r8, r3, [sp, 0x74] | __asm ("strd r8, r3, [var_78h]");
0x0005df5c bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005df60 ldr r0, [pc, 0x100] |
0x0005df62 add r0, pc | r0 = 0xbbfca;
0x0005df64 ldrb r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x0005df66 cbnz r0, 0x5dfcc |
0x0005df68 ldr r0, [pc, 0xfc] |
0x0005df6a add r0, pc |
0x0005df6c ldr r0, [r0] | r0 = *(0xbbfd6);
0x0005df6e cmp r0, 5 |
| if (r0 <= 5) {
0x0005df70 blo 0x5dfcc | goto label_51;
| }
0x0005df72 ldr.w r8, [sb] | r8 = *(sb);
0x0005df76 movs r1, 5 | r1 = 5;
0x0005df78 ldr r0, [pc, 0xf0] |
0x0005df7a ldr r3, [pc, 0xf4] |
0x0005df7c ldr r2, [pc, 0xf4] |
0x0005df7e add r0, pc |
0x0005df80 ldr r5, [pc, 0xf4] |
0x0005df82 add r3, pc | r3 = 0xbbff8;
0x0005df84 ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005df88 add r2, pc | r2 = 0xbc000;
0x0005df8a add r5, pc | r5 = 0xbc006;
0x0005df8c str r4, [sp, 0x160] | var_160h = r4;
0x0005df8e strd r1, r6, [sp, 0x158] | __asm ("strd r1, r6, [var_158h]");
0x0005df92 ldr r0, [r0] | r0 = *(0xbbfee);
0x0005df94 ldr r1, [pc, 0xe4] |
0x0005df96 dmb ish | __asm ("dmb ish");
0x0005df9a ldr r6, [r3] | r6 = *(0xbbff8);
0x0005df9c cmp r0, 2 |
0x0005df9e ldr r4, [r2] | r4 = *(0xbc000);
0x0005dfa0 it ne |
| if (r0 == 2) {
0x0005dfa2 movne r6, r5 | r6 = r5;
| }
0x0005dfa4 add r1, pc | r1 = 0xbc024;
0x0005dfa6 ldr r2, [r6, 0x10] | r2 = *(0xbc008);
0x0005dfa8 it ne |
| if (r0 == 2) {
0x0005dfaa movne r4, r1 | r4 = r1;
| }
0x0005dfac add r1, sp, 0x158 | r1 += var_158h;
0x0005dfae mov r0, r4 | r0 = r4;
0x0005dfb0 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 == 0) {
0x0005dfb2 cbz r0, 0x5dfcc | goto label_51;
| }
0x0005dfb4 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005dfb6 mov r2, r6 | r2 = r6;
0x0005dfb8 ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005dfbc strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005dfc0 add r0, sp, 0x98 | r0 += var_98h;
0x0005dfc2 str r0, [sp, 8] | var_8h = r0;
0x0005dfc4 mov r0, r8 | r0 = r8;
0x0005dfc6 mov r1, r4 | r1 = r4;
0x0005dfc8 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_51:
0x0005dfcc mov r5, sl | r5 = sl;
0x0005dfce ldrd sb, sl, [sp, 0x30] | __asm ("ldrd sb, sl, [var_30h]");
0x0005dfd2 b 0x5e776 | goto label_52;
| }
| label_47:
0x0005dfd4 ldrd r1, r0, [r4] | __asm ("ldrd r1, r0, [r4]");
0x0005dfd8 add.w r8, sp, 0xc0 | r8 += var_c0h;
0x0005dfdc ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0005dfde ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005dfe0 mov r0, r8 | r0 = r8;
0x0005dfe2 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005dfe4 ldr r0, [sp, 0xc0] | r0 = var_c0h;
0x0005dfe6 cmp r0, 3 |
| if (r0 == 3) {
0x0005dfe8 beq.w 0x5d582 | goto label_1;
| }
0x0005dfec mov r0, r8 | r0 = r8;
0x0005dfee add r1, sp, 0x158 | r1 += var_158h;
0x0005dff0 vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x0005dff4 vst1.64 {d16, d17}, [r1]! | __asm ("vst1.64 {d16, d17}, [r1]!");
0x0005dff8 ldr r2, [sp, 0x158] | r2 = var_158h;
0x0005dffa ldr r0, [r0] | r0 = *(r0);
0x0005dffc cmp r2, 2 |
0x0005dffe str r0, [r1] | *(r1) = r0;
| if (r2 != 2) {
0x0005e000 bne.w 0x5e142 | goto label_53;
| }
0x0005e004 mov r0, r5 | r0 = r5;
0x0005e006 bl 0x51014 | r0 = fcn_00051014 (r0);
0x0005e00a mov r8, r0 | r8 = r0;
0x0005e00c ldr r0, [sp, 0x158] | r0 = var_158h;
0x0005e00e cmp.w r8, 0 |
| if (r8 != 0) {
0x0005e012 bne.w 0x5e9b6 | goto label_54;
| }
0x0005e016 cmp r0, 2 |
| if (r0 == 2) {
0x0005e018 beq.w 0x5e776 | goto label_52;
| }
0x0005e01c add r0, sp, 0x158 | r0 += var_158h;
0x0005e01e bl 0x4ab30 | fcn_0004ab30 (r0);
0x0005e022 b 0x5e776 | goto label_52;
| label_44:
0x0005e080 ldrd r0, r1, [r5, 0x70] | __asm ("ldrd r0, r1, [r5, 0x70]");
0x0005e084 subs r0, 3 | r0 -= 3;
0x0005e086 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005e08a rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005e08e mov.w r2, 0 | r2 = 0;
0x0005e092 sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r0 <= 3) {
0x0005e096 blo.w 0x5de7a | goto label_4;
| }
0x0005e09a cmp r0, 0 |
| if (r0 != 0) {
0x0005e09c bne.w 0x5de7a | goto label_4;
| }
0x0005e0a0 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0005e0a2 bl 0x6cb58 | r0 = fcn_0006cb58 (r0, r1);
0x0005e0a6 cmp r0, 0 |
| if (r0 != 0) {
0x0005e0a8 bne.w 0x5de7a | goto label_4;
| }
0x0005e0ac ldr.w r0, [r5, 0x190] | r0 = *((r5 + 0x190));
0x0005e0b0 ldrd r0, r1, [r0] | __asm ("ldrd r0, r1, [r0]");
0x0005e0b4 eor r0, r0, 2 | r0 ^= 2;
0x0005e0b8 orrs r0, r1 | r0 |= r1;
| if (r0 == r1) {
0x0005e0ba beq.w 0x5de7a | goto label_4;
| }
0x0005e0be add r6, sp, 0xc0 | r6 += var_c0h;
0x0005e0c0 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0005e0c2 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005e0c4 mov r0, r6 | r0 = r6;
0x0005e0c6 bl 0x39958 | fcn_00039958 (r0, r1, r2);
0x0005e0ca ldrd r0, r1, [sp, 0xc0] | __asm ("ldrd r0, r1, [var_c0h]");
0x0005e0ce eor r2, r0, 4 | r2 = r0 ^ 4;
0x0005e0d2 orrs r2, r1 | r2 |= r1;
| if (r2 == r1) {
0x0005e0d4 beq.w 0x5d582 | goto label_1;
| }
0x0005e0d8 eor r0, r0, 3 | r0 ^= 3;
0x0005e0dc orrs r0, r1 | r0 |= r1;
| if (r0 == r1) {
0x0005e0de beq.w 0x5e894 | goto label_55;
| }
0x0005e0e2 ldrd r8, fp, [sp, 0x108] | __asm ("ldrd r8, fp, [var_108h]");
0x0005e0e6 ldr.w r1, [fp, 0x14] | r1 = var_9ch;
0x0005e0ea mov r0, r8 | r0 = r8;
0x0005e0ec blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0005e0ee cmp r0, 0 |
| if (r0 == 0) {
0x0005e0f0 beq.w 0x5e46e | goto label_56;
| }
0x0005e0f4 ldr.w r4, [r5, 0x1ac] | r4 = *((r5 + 0x1ac));
0x0005e0f8 mov r7, r5 | r7 = r5;
0x0005e0fa ldr r0, [r4] | r0 = *(r4);
| if (r0 != 0) {
0x0005e0fc cbz r0, 0x5e104 |
0x0005e0fe mov r0, r4 | r0 = r4;
0x0005e100 bl 0x4448c | fcn_0004448c (r0);
| }
0x0005e104 movs r5, 0 | r5 = 0;
0x0005e106 mov r1, r6 | r1 = r6;
0x0005e108 strd r5, r5, [r4] | __asm ("strd r5, r5, [r4]");
0x0005e10c add r4, sp, 0x110 | r4 += var_110h;
0x0005e10e movs r2, 0x48 | r2 = 0x48;
0x0005e110 mov r0, r4 | r0 = r4;
0x0005e112 blx 0x26b48 | fcn_00026b48 ();
0x0005e116 mov r0, r7 | r0 = r7;
0x0005e118 mov r1, r4 | r1 = r4;
0x0005e11a movs r2, 2 | r2 = 2;
0x0005e11c movs r3, 0 | r3 = 0;
0x0005e11e strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x0005e122 mov r5, r7 | r5 = r7;
0x0005e124 bl 0x4df90 | fcn_0004df90 (r0, r1, r2, r3, r4, r5, r6);
0x0005e128 ldr.w r1, [fp] | r1 = *(fp);
0x0005e12c mov r0, r8 | r0 = r8;
0x0005e12e blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0005e130 ldr.w r0, [fp, 4] | r0 = var_8ch;
0x0005e134 cmp r0, 0 |
| if (r0 == 0) {
0x0005e136 beq.w 0x5e786 | goto label_9;
| }
0x0005e13a mov r0, r8 | r0 = r8;
0x0005e13c blx 0x26a3c | fcn_00026a3c ();
0x0005e140 b 0x5e786 | goto label_9;
| label_53:
0x0005e142 ldrd r0, r1, [sp, 0x15c] | __asm ("ldrd r0, r1, [var_160h]");
0x0005e146 cmp r2, 0 |
| if (r2 != 0) {
0x0005e148 bne.w 0x5e9c2 | goto label_57;
| }
0x0005e14c add.w ip, sp, 0x74 |
0x0005e150 ldrd r2, r3, [sp, 0x164] | __asm ("ldrd r2, r3, [var_164h]");
0x0005e154 stm.w ip, {r1, r2, r3} | *(ip) = r1;
| *((ip + 4)) = r2;
| *((ip + 8)) = r3;
0x0005e158 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0005e15a str r0, [sp, 0x70] | var_70h = r0;
0x0005e15c ldr r0, [r4] | r0 = *(r4);
0x0005e15e ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0005e160 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005e162 ldr r1, [sp, 0x74] | r1 = var_74h;
| if (r0 == 0) {
0x0005e164 cbz r0, 0x5e1d0 | goto label_58;
| }
0x0005e166 cmp r1, 0 |
| if (r1 == 0) {
0x0005e168 beq 0x5e256 | goto label_59;
| }
0x0005e16a ldrd r0, r1, [sl] | __asm ("ldrd r0, r1, [sl]");
0x0005e16e subs r0, 3 | r0 -= 3;
0x0005e170 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005e174 rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005e178 mov.w r2, 0 | r2 = 0;
0x0005e17c sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r0 > 3) {
0x0005e180 blo 0x5e188 |
0x0005e182 cmp r0, 1 |
| if (r0 != 1) {
0x0005e184 bne.w 0x5edc2 | goto label_60;
| }
| }
0x0005e188 add r0, sp, 0x70 | r0 += var_70h;
0x0005e18a mov r1, r8 | r1 = r8;
0x0005e18c vld1.64 {d16, d17}, [r0] | __asm ("vld1.64 {d16, d17}, [r0]");
0x0005e190 mov r0, sl | r0 = sl;
0x0005e192 mov r2, sb | r2 = sb;
0x0005e194 vst1.64 {d16, d17}, [r8] | __asm ("vst1.64 {d16, d17}, [r8]");
0x0005e198 bl 0x55940 | fcn_00055940 (r0, r1, r2, r3, r4, r5, r6);
0x0005e19c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0005e19e cmp r0, 0 |
0x0005e1a0 mov.w r0, 6 | r0 = 6;
0x0005e1a4 vst1.64 {d8, d9}, [r1] | __asm ("vst1.64 {d8, d9}, [r1]");
0x0005e1a8 mov.w r1, 0 | r1 = 0;
0x0005e1ac it ne |
| if (r0 == 0) {
0x0005e1ae movne r0, 5 | r0 = 5;
| }
0x0005e1b0 strd r0, r1, [r5, 0x70] | __asm ("strd r0, r1, [r5, 0x70]");
0x0005e1b4 b 0x5e776 | goto label_52;
| label_45:
0x0005e1b6 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005e1b8 mov r0, r5 | r0 = r5;
0x0005e1ba bl 0x5873c | r0 = fcn_0005873c (r0, r1);
0x0005e1be cmp r0, 0 |
| if (r0 != 0) {
0x0005e1c0 bne.w 0x5d582 | goto label_1;
| }
0x0005e1c4 mov r8, r1 | r8 = r1;
0x0005e1c6 cmp r1, 0 |
| if (r1 == 0) {
0x0005e1c8 beq.w 0x5e786 | goto label_9;
| }
0x0005e1cc b.w 0x5e9d8 | goto label_10;
| label_58:
0x0005e1d0 cmp r1, 0 |
| if (r1 != 0) {
0x0005e1d2 beq.w 0x5e364 |
0x0005e1d6 ldrd r0, r1, [sl] | __asm ("ldrd r0, r1, [sl]");
0x0005e1da subs r0, 3 | r0 -= 3;
0x0005e1dc sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005e1e0 rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005e1e4 mov.w r2, 0 | r2 = 0;
0x0005e1e8 sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r0 > 3) {
0x0005e1ec blo 0x5e1f4 |
0x0005e1ee cmp r0, 1 |
| if (r0 != 1) {
0x0005e1f0 bne.w 0x5edd0 | goto label_61;
| }
| }
0x0005e1f4 add r0, sp, 0x70 | r0 += var_70h;
0x0005e1f6 add r4, sp, 0x110 | r4 += var_110h;
0x0005e1f8 vld1.64 {d16, d17}, [r0] | __asm ("vld1.64 {d16, d17}, [r0]");
0x0005e1fc mov r1, sl | r1 = sl;
0x0005e1fe mov r0, r4 | r0 = r4;
0x0005e200 mov r2, r8 | r2 = r8;
0x0005e202 vst1.64 {d16, d17}, [r8] | __asm ("vst1.64 {d16, d17}, [r8]");
0x0005e206 bl 0x56f34 | fcn_00056f34 (r0, r1, r2, r3);
0x0005e20a mov r1, r4 | r1 = r4;
0x0005e20c mov r0, r8 | r0 = r8;
0x0005e20e ldm r1!, {r2, r3, r4, r6, r7} | r2 = *(r1!);
| r3 = *((r1! + 4));
| r4 = *((r1! + 8));
| r6 = *((r1! + 12));
| r7 = *((r1! + 16));
0x0005e210 stm r0!, {r2, r3, r4, r6, r7} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r6;
| *((r0! + 16)) = r7;
0x0005e212 ldm.w r1, {r2, r3, r4, r6, r7} | r2 = *(r1);
| r3 = *((r1 + 4));
| r4 = *((r1 + 8));
| r6 = *((r1 + 12));
| r7 = *((r1 + 16));
0x0005e216 mov r1, r8 | r1 = r8;
0x0005e218 stm r0!, {r2, r3, r4, r6, r7} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r6;
| *((r0! + 16)) = r7;
0x0005e21a mov r0, sb | r0 = sb;
0x0005e21c bl 0x4c664 | fcn_0004c664 (r0, r1, r2, r3, r4);
0x0005e220 ldrd r0, r1, [r5, 0x70] | __asm ("ldrd r0, r1, [r5, 0x70]");
0x0005e224 eor r0, r0, 1 | r0 ^= 1;
0x0005e228 orrs r0, r1 | r0 |= r1;
0x0005e22a itt eq |
| if (r0 == r1) {
0x0005e22c ldrdeq r0, r1, [r5, 0x78] | __asm ("ldrdeq r0, r1, [r5, 0x78]");
| }
| if (r0 == r1) {
0x0005e230 orrs.w r0, r0, r1 | r0 |= r1;
| }
| if (r0 != r0) {
0x0005e234 bne.w 0x5e786 | goto label_9;
| }
0x0005e238 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0005e23a ldrb.w r0, [r5, 0x80] | r0 = *((r5 + 0x80));
0x0005e23e vst1.64 {d8, d9}, [r1] | __asm ("vst1.64 {d8, d9}, [r1]");
0x0005e242 cmp r0, 0 |
0x0005e244 mov.w r0, 6 | r0 = 6;
0x0005e248 mov.w r1, 0 | r1 = 0;
0x0005e24c it eq |
| if (r0 != 0) {
0x0005e24e moveq r0, 5 | r0 = 5;
| }
0x0005e250 strd r0, r1, [r5, 0x70] | __asm ("strd r0, r1, [r5, 0x70]");
0x0005e254 b 0x5e786 | goto label_9;
| label_59:
0x0005e256 ldr r0, [pc, 0x388] |
0x0005e258 add r0, pc |
0x0005e25a ldr r0, [r0] | r0 = *(0xbc83e);
0x0005e25c subs r0, 1 | r0--;
0x0005e25e cmp r0, 5 |
| if (r0 <= 5) {
0x0005e260 blo.w 0x5e678 | goto label_62;
| }
0x0005e264 ldr r6, [pc, 0x37c] |
0x0005e266 add r6, pc | r6 = 0xbc84e;
0x0005e268 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005e26a cmp r1, 0 |
| if (r1 == 0) {
0x0005e26c beq.w 0x5e678 | goto label_62;
| }
0x0005e270 cmp r1, 1 |
| if (r1 != 1) {
0x0005e272 beq 0x5e27c |
0x0005e274 cmp r1, 2 |
| if (r1 != 2) {
0x0005e276 bne.w 0x5e668 | goto label_63;
| }
0x0005e27a movs r1, 2 | r1 = 2;
| }
| label_6:
0x0005e27c ldr r0, [r6] | r0 = *(r6);
0x0005e27e bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005e282 cmp r0, 0 |
| if (r0 == 0) {
0x0005e284 beq.w 0x5e678 | goto label_62;
| }
0x0005e288 ldr r0, [r6] | r0 = *(r6);
0x0005e28a ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005e28c cmp r2, 0 |
| if (r2 == 0) {
0x0005e28e beq.w 0x5ee1a | goto label_64;
| }
0x0005e292 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005e296 ldrd lr, r3, [r0, 0x34] | __asm ("ldrd lr, r3, [r0, 0x34]");
0x0005e29a ldr r1, [pc, 0x34c] |
0x0005e29c ldr r4, [pc, 0x34c] |
0x0005e29e add r1, pc | r1 = 0xbc88c;
0x0005e2a0 add r4, pc | r4 = 0xbc890;
0x0005e2a2 mov fp, r1 |
0x0005e2a4 ldr r1, [pc, 0x348] |
0x0005e2a6 strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005e2aa add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005e2ae add r1, pc | r1 = 0xbc8a2;
0x0005e2b0 str r1, [sp, 0x24] | var_24h = r1;
0x0005e2b2 add r1, sp, 0x110 | r1 += var_110h;
0x0005e2b4 str r1, [sp, 0x88] | var_88h = r1;
0x0005e2b6 add r1, sp, 0x88 | r1 += var_88h;
0x0005e2b8 str r1, [sp, 0x16c] | var_16ch = r1;
0x0005e2ba movs r1, 0 | r1 = 0;
0x0005e2bc str r2, [sp, 0x174] | var_174h = r2;
0x0005e2be movs r2, 1 | r2 = 1;
0x0005e2c0 str r1, [sp, 0x110] | var_110h = r1;
0x0005e2c2 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005e2c4 strd r1, r4, [sp, 0xcc] | __asm ("strd r1, r4, [var_d0h]");
0x0005e2c8 strd r2, r1, [sp, 0xc4] | __asm ("strd r2, r1, [var_c8h]");
0x0005e2cc ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005e2ce str r1, [sp, 0xc0] | var_c0h = r1;
0x0005e2d0 add r1, sp, 0x16c | r1 += var_16ch;
0x0005e2d2 str.w r8, [sp, 0x8c] | __asm ("str.w r8, [var_8ch]");
0x0005e2d6 strd lr, r3, [sp, 0x11c] | __asm ("strd lr, r3, [var_120h]");
0x0005e2da str r2, [sp, 0x170] | var_170h = r2;
0x0005e2dc str.w fp, [sp, 0x90] | __asm ("str.w fp, [var_90h]");
0x0005e2e0 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005e2e4 ldr r0, [pc, 0x30c] |
0x0005e2e6 add r0, pc | r0 = 0xbc8de;
0x0005e2e8 ldrb r0, [r0] | r0 = *(r0);
0x0005e2ea cmp r0, 0 |
| if (r0 != 0) {
0x0005e2ec bne.w 0x5e75e | goto label_65;
| }
0x0005e2f0 ldr r0, [pc, 0x304] |
0x0005e2f2 add r0, pc |
0x0005e2f4 ldr r0, [r0] | r0 = *(0xbc8ee);
0x0005e2f6 cmp r0, 5 |
| if (r0 <= 5) {
0x0005e2f8 blo.w 0x5e75e | goto label_65;
| }
0x0005e2fc ldr.w r8, [r6] | r8 = *(r6);
0x0005e300 mov r6, r4 | r6 = r4;
0x0005e302 ldr r0, [pc, 0x2f8] |
0x0005e304 ldr r1, [pc, 0x2f8] |
0x0005e306 ldr r2, [pc, 0x2fc] |
0x0005e308 add r0, pc |
0x0005e30a ldr r3, [pc, 0x2fc] |
0x0005e30c add r1, pc | r1 = 0xbc910;
0x0005e30e ldr.w ip, [r8, 8] | ip = *((r8 + 8));
0x0005e312 add r2, pc | r2 = 0xbc91c;
0x0005e314 add r3, pc | r3 = 0xbc922;
0x0005e316 ldr.w r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x0005e31a str r4, [sp, 0xa0] | var_a0h = r4;
0x0005e31c mov r4, r6 | r4 = r6;
0x0005e31e mov lr, r3 | lr = r3;
0x0005e320 movs r3, 5 | r3 = 5;
0x0005e322 str r3, [sp, 0x98] | var_98h = r3;
0x0005e324 str.w ip, [sp, 0x9c] | __asm ("str.w ip, [var_9ch]");
0x0005e328 ldr r0, [r0] | r0 = *(0xbc90a);
0x0005e32a dmb ish | __asm ("dmb ish");
0x0005e32e ldr r6, [r1] | r6 = *(0xbc910);
0x0005e330 ldr r1, [r2] | r1 = *(0xbc91c);
0x0005e332 cmp r0, 2 |
0x0005e334 it ne |
| if (r0 == 2) {
0x0005e336 movne r6, lr | r6 = lr;
| }
0x0005e338 ldr r2, [r6, 0x10] | r2 = *(0xbc920);
0x0005e33a it eq |
| if (r0 != 2) {
0x0005e33c moveq r4, r1 | r4 = r1;
| }
0x0005e33e add r1, sp, 0x98 | r1 += var_98h;
0x0005e340 mov r0, r4 | r0 = r4;
0x0005e342 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005e344 cmp r0, 0 |
| if (r0 == 0) {
0x0005e346 beq.w 0x5e75e | goto label_65;
| }
0x0005e34a ldr r1, [sp, 0xa0] | r1 = var_a0h;
0x0005e34c mov r2, r6 | r2 = r6;
0x0005e34e ldrd r3, r0, [sp, 0x98] | __asm ("ldrd r3, r0, [var_98h]");
0x0005e352 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005e356 add r0, sp, 0x16c | r0 += var_16ch;
0x0005e358 str r0, [sp, 8] | var_8h = r0;
0x0005e35a mov r0, r8 | r0 = r8;
0x0005e35c mov r1, r4 | r1 = r4;
0x0005e35e bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005e362 b 0x5e75e | goto label_65;
| }
0x0005e364 ldr r0, [pc, 0x2a4] |
0x0005e366 add r0, pc |
0x0005e368 ldr r0, [r0] | r0 = *(0xbc976);
0x0005e36a subs r0, 1 | r0--;
0x0005e36c cmp r0, 5 |
| if (r0 <= 5) {
0x0005e36e blo.w 0x5e7a4 | goto label_66;
| }
0x0005e372 ldr r6, [pc, 0x29c] |
0x0005e374 add r6, pc | r6 = 0xbc98a;
0x0005e376 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005e378 cmp r1, 0 |
| if (r1 == 0) {
0x0005e37a beq.w 0x5e7a4 | goto label_66;
| }
0x0005e37e cmp r1, 1 |
| if (r1 != 1) {
0x0005e380 beq 0x5e38a |
0x0005e382 cmp r1, 2 |
| if (r1 != 2) {
0x0005e384 bne.w 0x5e794 | goto label_67;
| }
0x0005e388 movs r1, 2 | r1 = 2;
| }
| label_8:
0x0005e38a ldr r0, [r6] | r0 = *(r6);
0x0005e38c bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005e390 cmp r0, 0 |
| if (r0 == 0) {
0x0005e392 beq.w 0x5e7a4 | goto label_66;
| }
0x0005e396 ldr r0, [r6] | r0 = *(r6);
0x0005e398 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005e39a cmp r2, 0 |
| if (r2 == 0) {
0x0005e39c beq.w 0x5ee10 | goto label_68;
| }
0x0005e3a0 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005e3a4 ldrd r7, r3, [r0, 0x34] | __asm ("ldrd r7, r3, [r0, 0x34]");
0x0005e3a8 ldr r1, [pc, 0x268] |
0x0005e3aa ldr r4, [pc, 0x26c] |
0x0005e3ac add r1, pc | r1 = 0xbc9c4;
0x0005e3ae add r4, pc | r4 = 0xbc9cc;
0x0005e3b0 mov fp, r1 |
0x0005e3b2 ldr r1, [pc, 0x268] |
0x0005e3b4 strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005e3b8 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005e3bc add r1, pc | r1 = 0xbc9de;
0x0005e3be str r2, [sp, 0x174] | var_174h = r2;
0x0005e3c0 movs r2, 1 | r2 = 1;
0x0005e3c2 str.w r8, [sp, 0x8c] | __asm ("str.w r8, [var_8ch]");
0x0005e3c6 mov lr, r1 | lr = r1;
0x0005e3c8 add r1, sp, 0x110 | r1 += var_110h;
0x0005e3ca str r1, [sp, 0x88] | var_88h = r1;
0x0005e3cc add r1, sp, 0x88 | r1 += var_88h;
0x0005e3ce str r1, [sp, 0x16c] | var_16ch = r1;
0x0005e3d0 movs r1, 0 | r1 = 0;
0x0005e3d2 str r1, [sp, 0x110] | var_110h = r1;
0x0005e3d4 strd r4, r1, [sp, 0xd0] | __asm ("strd r4, r1, [var_d0h]");
0x0005e3d8 strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x0005e3dc add r1, sp, 0x16c | r1 += var_16ch;
0x0005e3de strd r7, r3, [sp, 0x11c] | __asm ("strd r7, r3, [var_120h]");
0x0005e3e2 str r2, [sp, 0x170] | var_170h = r2;
0x0005e3e4 str.w fp, [sp, 0x90] | __asm ("str.w fp, [var_90h]");
0x0005e3e8 strd lr, r2, [sp, 0xc0] | __asm ("strd lr, r2, [var_c0h]");
0x0005e3ec bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005e3f0 ldr r0, [pc, 0x22c] |
0x0005e3f2 add r0, pc | r0 = 0xbca16;
0x0005e3f4 ldrb r0, [r0] | r0 = *(r0);
0x0005e3f6 cmp r0, 0 |
| if (r0 != 0) {
0x0005e3f8 bne.w 0x5e886 | goto label_69;
| }
0x0005e3fc ldr r0, [pc, 0x224] |
0x0005e3fe add r0, pc |
0x0005e400 ldr r0, [r0] | r0 = *(0xbca26);
0x0005e402 cmp r0, 5 |
| if (r0 <= 5) {
0x0005e404 blo.w 0x5e886 | goto label_69;
| }
0x0005e408 ldr.w r8, [r6] | r8 = *(r6);
0x0005e40c mov r6, r4 | r6 = r4;
0x0005e40e ldr r0, [pc, 0x218] |
0x0005e410 ldr r1, [pc, 0x218] |
0x0005e412 ldr r2, [pc, 0x21c] |
0x0005e414 add r0, pc |
0x0005e416 ldr r3, [pc, 0x21c] |
0x0005e418 add r1, pc | r1 = 0xbca48;
0x0005e41a ldr.w r7, [r8, 8] | r7 = *((r8 + 8));
0x0005e41e add r2, pc | r2 = 0xbca54;
0x0005e420 add r3, pc | r3 = 0xbca5a;
0x0005e422 ldr.w r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x0005e426 str r4, [sp, 0xa0] | var_a0h = r4;
0x0005e428 mov r4, r6 | r4 = r6;
0x0005e42a mov ip, r3 |
0x0005e42c movs r3, 5 | r3 = 5;
0x0005e42e str r3, [sp, 0x98] | var_98h = r3;
0x0005e430 str r7, [sp, 0x9c] | var_9ch = r7;
0x0005e432 ldr r0, [r0] | r0 = *(0xbca42);
0x0005e434 dmb ish | __asm ("dmb ish");
0x0005e438 ldr r7, [r1] | r7 = *(0xbca48);
0x0005e43a ldr r1, [r2] | r1 = *(0xbca54);
0x0005e43c cmp r0, 2 |
0x0005e43e it ne |
| if (r0 == 2) {
0x0005e440 movne r7, ip | r7 = ip;
| }
0x0005e442 ldr r2, [r7, 0x10] | r2 = *(0xbca58);
0x0005e444 it eq |
| if (r0 != 2) {
0x0005e446 moveq r4, r1 | r4 = r1;
| }
0x0005e448 add r1, sp, 0x98 | r1 += var_98h;
0x0005e44a mov r0, r4 | r0 = r4;
0x0005e44c blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005e44e cmp r0, 0 |
| if (r0 == 0) {
0x0005e450 beq.w 0x5e886 | goto label_69;
| }
0x0005e454 ldr r1, [sp, 0xa0] | r1 = var_a0h;
0x0005e456 mov r2, r7 | r2 = r7;
0x0005e458 ldrd r3, r0, [sp, 0x98] | __asm ("ldrd r3, r0, [var_98h]");
0x0005e45c strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005e460 add r0, sp, 0x16c | r0 += var_16ch;
0x0005e462 str r0, [sp, 8] | var_8h = r0;
0x0005e464 mov r0, r8 | r0 = r8;
0x0005e466 mov r1, r4 | r1 = r4;
0x0005e468 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005e46c b 0x5e886 | goto label_69;
| label_56:
0x0005e46e ldr.w r2, [fp, 0x18] | r2 = var_a0h;
0x0005e472 add r0, sp, 0x110 | r0 += var_110h;
0x0005e474 mov r1, r8 | r1 = r8;
0x0005e476 mov sb, sl | sb = sl;
0x0005e478 blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005e47a add r7, sp, 0x110 | r7 += var_110h;
0x0005e47c ldr r4, [sp, 0x124] | r4 = var_124h;
0x0005e47e ldr.w r6, [r5, 0x1ac] | r6 = *((r5 + 0x1ac));
0x0005e482 ldm r7, {r0, r1, r2, r3, r7} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
| r7 = *((r7 + 16));
0x0005e484 eors r1, r4 | r1 ^= r4;
0x0005e486 eors r0, r7 | r0 ^= r7;
0x0005e488 eor r2, r2, 1 | r2 ^= 1;
0x0005e48c orrs r1, r3 | r1 |= r3;
0x0005e48e orrs r0, r2 | r0 |= r2;
0x0005e490 orrs.w sl, r0, r1 | sl = r0 | r1;
0x0005e494 itt ne |
| if (sl == r0) {
0x0005e496 movne r4, 0 | r4 = 0;
| }
| if (sl == r0) {
0x0005e498 movne r7, 0 | r7 = 0;
| }
0x0005e49a ldr r0, [r6] | r0 = *(r6);
0x0005e49c it ne |
| if (sl == r0) {
0x0005e49e movne sl, 1 | sl = 1;
| }
| if (r0 != 0) {
0x0005e4a2 cbz r0, 0x5e4aa |
0x0005e4a4 mov r0, r6 | r0 = r6;
0x0005e4a6 bl 0x4448c | fcn_0004448c (r0);
| }
0x0005e4aa strd r8, fp, [r6] | __asm ("strd r8, fp, [r6]");
0x0005e4ae add r6, sp, 0x110 | r6 += var_110h;
0x0005e4b0 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005e4b2 movs r2, 0x48 | r2 = 0x48;
0x0005e4b4 mov r0, r6 | r0 = r6;
0x0005e4b6 blx 0x26b48 | fcn_00026b48 ();
0x0005e4ba mov r0, r5 | r0 = r5;
0x0005e4bc mov r1, r6 | r1 = r6;
0x0005e4be mov r2, sl | r2 = sl;
0x0005e4c0 movs r3, 0 | r3 = 0;
0x0005e4c2 strd r7, r4, [sp] | __asm ("strd r7, r4, [sp]");
0x0005e4c6 bl 0x4df90 | fcn_0004df90 (r0, r1, r2, r3, r4, r5, r6);
0x0005e4ca mov sl, sb | sl = sb;
0x0005e4cc ldr.w sb, [sp, 0x30] | sb = var_30h;
0x0005e4d0 b 0x5e786 | goto label_9;
| label_49:
0x0005e4d2 ldr r0, [pc, 0x164] |
0x0005e4d4 add r0, pc | r0 = 0xbcb12;
0x0005e4d6 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005e4da uxtb r1, r0 | r1 = (int8_t) r0;
0x0005e4dc cmp r1, 0 |
| if (r1 != 0) {
0x0005e4de bne.w 0x5dee6 | goto label_5;
| }
| label_48:
0x0005e4e2 ldr r0, [pc, 0x158] |
0x0005e4e4 add r0, pc | r0 = 0xbcb26;
0x0005e4e6 ldrb r0, [r0] | r0 = *(r0);
0x0005e4e8 cmp r0, 0 |
| if (r0 != 0) {
0x0005e4ea bne.w 0x5e776 | goto label_52;
| }
0x0005e4ee ldr r0, [pc, 0x150] |
0x0005e4f0 add r0, pc |
0x0005e4f2 ldr r0, [r0] | r0 = *(0xbcb36);
0x0005e4f4 cmp r0, 5 |
| if (r0 <= 5) {
0x0005e4f6 blo.w 0x5e776 | goto label_52;
| }
0x0005e4fa ldr r0, [pc, 0x148] |
0x0005e4fc add r0, pc | r0 = 0xbcb46;
0x0005e4fe str r0, [sp, 0x24] | var_24h = r0;
0x0005e500 ldr.w r8, [r0] | r8 = *(0xbcb46);
0x0005e504 ldr r0, [pc, 0x140] |
0x0005e506 ldr r1, [pc, 0x144] |
0x0005e508 ldr r2, [pc, 0x144] |
0x0005e50a add r0, pc |
0x0005e50c ldr r3, [pc, 0x144] |
0x0005e50e add r1, pc | r1 = 0xbcb60;
0x0005e510 ldrd ip, r6, [r8, 8] | __asm ("ldrd ip, r6, [r8, 8]");
0x0005e514 add r2, pc | r2 = 0xbcb68;
0x0005e516 add r3, pc | r3 = 0xbcb6e;
0x0005e518 str r6, [sp, 0xa0] | var_a0h = r6;
0x0005e51a mov lr, r3 | lr = r3;
0x0005e51c movs r3, 5 | r3 = 5;
0x0005e51e strd r3, ip, [sp, 0x98] | __asm ("strd r3, ip, [var_98h]");
0x0005e522 ldr r0, [r0] | r0 = *(0xbcb56);
0x0005e524 ldr r6, [pc, 0x130] |
0x0005e526 dmb ish | __asm ("dmb ish");
0x0005e52a ldr.w sl, [r1] | sl = *(0xbcb60);
0x0005e52e cmp r0, 2 |
0x0005e530 ldr.w fp, [r2] | fp = *(0xbcb68);
0x0005e534 it ne |
| if (r0 == 2) {
0x0005e536 movne sl, lr | sl = lr;
| }
0x0005e538 ldr.w r2, [sl, 0x10] | r2 = *(0xbcb70);
0x0005e53c add r1, sp, 0x98 | r1 += var_98h;
0x0005e53e add r6, pc | r6 = 0xbcb9a;
0x0005e540 it ne |
| if (r0 == 2) {
0x0005e542 movne fp, r6 |
| }
0x0005e544 mov r0, fp | r0 = fp;
0x0005e546 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005e548 cmp r0, 0 |
| if (r0 != 0) {
0x0005e54a beq 0x5e5da |
0x0005e54c ldr r0, [sp, 0x24] | r0 = var_24h;
0x0005e54e add.w sb, sp, 0x158 | sb += var_158h;
0x0005e552 ldr r6, [r0] | r6 = *(r0);
0x0005e554 ldr r0, [r6, 0x30] | r0 = *((r6 + 0x30));
0x0005e556 cmp r0, 0 |
| if (r0 == 0) {
0x0005e558 beq.w 0x5edb2 | goto label_50;
| }
0x0005e55c ldr r1, [sp, 0x98] | r1 = var_98h;
0x0005e55e str r1, [sp, 0x24] | var_24h = r1;
0x0005e560 ldr r1, [sp, 0x9c] | r1 = var_9ch;
0x0005e562 str r1, [sp, 0x20] | var_20h = r1;
0x0005e564 ldr r1, [sp, 0xa0] | r1 = var_a0h;
0x0005e566 str r1, [sp, 0x1c] | var_1ch = r1;
0x0005e568 ldr r1, [r6, 0x2c] | r1 = *((r6 + 0x2c));
0x0005e56a ldrd r2, r3, [r6, 0x34] | __asm ("ldrd r2, r3, [r6, 0x34]");
0x0005e56e strd r1, r0, [sp, 0x114] | __asm ("strd r1, r0, [var_114h]");
0x0005e572 movs r0, 0 | r0 = 0;
0x0005e574 strd r2, r3, [sp, 0x11c] | __asm ("strd r2, r3, [var_120h]");
0x0005e578 str r0, [sp, 0x110] | var_110h = r0;
0x0005e57a ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
0x0005e57e ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0005e580 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005e582 ldr r1, [pc, 0xd8] |
0x0005e584 ldr r2, [pc, 0xd8] |
0x0005e586 ldr r3, [pc, 0xdc] |
0x0005e588 add r1, pc | r1 = 0xbcbea;
0x0005e58a strb.w r0, [sp, 0x16c] | var_16ch = r0;
0x0005e58e add r0, sp, 0x16c | r0 += var_16ch;
0x0005e590 str r0, [sp, 0x88] | var_88h = r0;
0x0005e592 add r0, sp, 0x88 | r0 += var_88h;
0x0005e594 str r0, [sp, 0xd0] | var_d0h = r0;
0x0005e596 movs r0, 0 | r0 = 0;
0x0005e598 strd r0, r0, [sp, 0xc8] | __asm ("strd r0, r0, [var_cch]");
0x0005e59c add r0, sp, 0xc0 | r0 += var_c0h;
0x0005e59e str r0, [sp, 0x15c] | var_15ch = r0;
0x0005e5a0 add r0, sp, 0x110 | r0 += var_110h;
0x0005e5a2 str r0, [sp, 0x158] | var_158h = r0;
0x0005e5a4 add.w r0, r6, 0x2c | r0 = r6 + 0x2c;
0x0005e5a8 add r3, pc | r3 = 0xbcc12;
0x0005e5aa str r0, [sp, 0x78] | var_78h = r0;
0x0005e5ac ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005e5ae add r2, pc | r2 = 0xbcc12;
0x0005e5b0 str r3, [sp, 0x160] | var_160h = r3;
0x0005e5b2 str r0, [sp] | *(sp) = r0;
0x0005e5b4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0005e5b6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005e5b8 str r1, [sp, 0x8c] | var_8ch = r1;
0x0005e5ba movs r1, 1 | r1 = 1;
0x0005e5bc str r0, [sp, 4] | var_4h = r0;
0x0005e5be add r0, sp, 0x70 | r0 += var_70h;
0x0005e5c0 strd r2, r1, [sp, 0xc0] | __asm ("strd r2, r1, [var_c0h]");
0x0005e5c4 mov r2, sl | r2 = sl;
0x0005e5c6 str r0, [sp, 8] | var_8h = r0;
0x0005e5c8 mov r0, r8 | r0 = r8;
0x0005e5ca str r1, [sp, 0xd4] | var_d4h = r1;
0x0005e5cc strd sb, r1, [sp, 0x70] | __asm ("strd sb, r1, [var_70h]");
0x0005e5d0 mov r1, fp | r1 = fp;
0x0005e5d2 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005e5d6 ldr.w sb, [sp, 0x30] | sb = var_30h;
| }
0x0005e5da ldr.w sl, [sp, 0x34] | sl = var_34h;
0x0005e5de b 0x5e776 | goto label_52;
| label_63:
0x0005e668 ldr r0, [pc, 0x398] |
0x0005e66a add r0, pc | r0 = 0xbd072;
0x0005e66c bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005e670 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005e672 cmp r1, 0 |
| if (r1 != 0) {
0x0005e674 bne.w 0x5e27c | goto label_6;
| }
| label_62:
0x0005e678 ldr r0, [pc, 0x38c] |
0x0005e67a add r0, pc | r0 = 0xbd086;
0x0005e67c ldrb r0, [r0] | r0 = *(r0);
0x0005e67e cmp r0, 0 |
| if (r0 == 0) {
0x0005e680 bne 0x5e75e |
0x0005e682 ldr r0, [pc, 0x388] |
0x0005e684 add r0, pc |
0x0005e686 ldr r0, [r0] | r0 = *(0xbd096);
0x0005e688 cmp r0, 5 |
| if (r0 <= 5) {
0x0005e68a blo 0x5e75e | goto label_65;
| }
0x0005e68c ldr r0, [pc, 0x380] |
0x0005e68e add r0, pc | r0 = 0xbd0a2;
0x0005e690 str r0, [sp, 0x24] | var_24h = r0;
0x0005e692 ldr.w r8, [r0] | r8 = *(0xbd0a2);
0x0005e696 ldr r0, [pc, 0x37c] |
0x0005e698 ldr r1, [pc, 0x37c] |
0x0005e69a ldr r2, [pc, 0x380] |
0x0005e69c add r0, pc |
0x0005e69e ldr r3, [pc, 0x380] |
0x0005e6a0 add r1, pc | r1 = 0xbd0bc;
0x0005e6a2 ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005e6a6 add r2, pc | r2 = 0xbd0c8;
0x0005e6a8 add r3, pc | r3 = 0xbd0ce;
0x0005e6aa str r4, [sp, 0x174] | var_174h = r4;
0x0005e6ac mov ip, r3 |
0x0005e6ae movs r3, 5 | r3 = 5;
0x0005e6b0 strd r3, r6, [sp, 0x16c] | __asm ("strd r3, r6, [var_16ch]");
0x0005e6b4 ldr r0, [r0] | r0 = *(0xbd0b6);
0x0005e6b6 ldr r3, [pc, 0x36c] |
0x0005e6b8 dmb ish | __asm ("dmb ish");
0x0005e6bc ldr r6, [r1] | r6 = *(0xbd0bc);
0x0005e6be cmp r0, 2 |
0x0005e6c0 ldr r4, [r2] | r4 = *(0xbd0c8);
0x0005e6c2 it ne |
| if (r0 == 2) {
0x0005e6c4 movne r6, ip | r6 = ip;
| }
0x0005e6c6 ldr r2, [r6, 0x10] | r2 = *(0xbd0cc);
0x0005e6c8 add r1, sp, 0x16c | r1 += var_16ch;
0x0005e6ca add r3, pc | r3 = 0xbd0f4;
0x0005e6cc str r3, [sp, 0x20] | var_20h = r3;
0x0005e6ce it ne |
| if (r0 == 2) {
0x0005e6d0 movne r4, r3 | r4 = r3;
| }
0x0005e6d2 mov r0, r4 | r0 = r4;
0x0005e6d4 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005e6d6 cmp r0, 0 |
| if (r0 == 0) {
0x0005e6d8 beq 0x5e75e | goto label_65;
| }
0x0005e6da ldr r0, [sp, 0x24] | r0 = var_24h;
0x0005e6dc add.w ip, sp, 0x88 |
0x0005e6e0 ldr r0, [r0] | r0 = *(r0);
0x0005e6e2 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005e6e4 cmp r1, 0 |
| if (r1 == 0) {
0x0005e6e6 beq.w 0x5ee1a | goto label_64;
| }
0x0005e6ea ldr r2, [sp, 0x16c] | r2 = var_16ch;
0x0005e6ec mov sb, sl | sb = sl;
0x0005e6ee str r2, [sp, 0x24] | var_24h = r2;
0x0005e6f0 add.w lr, sp, 0x110 | lr += var_110h;
0x0005e6f4 ldr r2, [sp, 0x170] | r2 = var_170h;
0x0005e6f6 str r2, [sp, 0x1c] | var_1ch = r2;
0x0005e6f8 ldr r2, [sp, 0x174] | r2 = var_174h;
0x0005e6fa str r2, [sp, 0x18] | var_18h = r2;
0x0005e6fc ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x0005e6fe ldrd sl, fp, [r0, 0x34] | __asm ("ldrd sl, fp, [r0, 0x34]");
0x0005e702 adds r0, 0x2c | r0 += 0x2c;
0x0005e704 ldr r3, [pc, 0x320] |
0x0005e706 add r3, pc | r3 = 0xbd132;
0x0005e708 str r3, [sp, 0x10] | var_10h = r3;
0x0005e70a ldr r3, [pc, 0x320] |
0x0005e70c strd r2, r1, [sp, 0x114] | __asm ("strd r2, r1, [var_114h]");
0x0005e710 movs r1, 0 | r1 = 0;
0x0005e712 add r3, pc | r3 = 0xbd144;
0x0005e714 str r3, [sp, 0x14] | var_14h = r3;
0x0005e716 add r3, sp, 0xc0 | r3 += var_c0h;
0x0005e718 str r0, [sp, 0x90] | var_90h = r0;
0x0005e71a movs r0, 1 | r0 = 1;
0x0005e71c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005e71e str r3, [sp, 0x9c] | var_9ch = r3;
0x0005e720 add r3, sp, 0x98 | r3 += var_98h;
0x0005e722 str r2, [sp, 0xa0] | var_a0h = r2;
0x0005e724 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005e726 str r0, [sp, 0x8c] | var_8ch = r0;
0x0005e728 strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005e72c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005e72e str r3, [sp, 0x88] | var_88h = r3;
0x0005e730 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005e732 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0005e734 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005e736 str r0, [sp] | *(sp) = r0;
0x0005e738 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0005e73a strd r1, r2, [sp, 0xcc] | __asm ("strd r1, r2, [var_d0h]");
0x0005e73e mov r2, r6 | r2 = r6;
0x0005e740 strd r0, ip, [sp, 4] | __asm ("strd r0, ip, [var_4h]");
0x0005e744 mov r0, r8 | r0 = r8;
0x0005e746 str r1, [sp, 0x110] | var_110h = r1;
0x0005e748 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005e74a mov r1, r4 | r1 = r4;
0x0005e74c str.w lr, [sp, 0x98] | __asm ("str.w lr, [var_98h]");
0x0005e750 strd sl, fp, [sp, 0x11c] | __asm ("strd sl, fp, [var_0hx11c]");
0x0005e754 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005e758 mov sl, sb | sl = sb;
0x0005e75a ldr.w sb, [sp, 0x30] | sb = var_30h;
| }
| label_65:
0x0005e75e mov r0, r5 | r0 = r5;
0x0005e760 bl 0x51014 | r0 = fcn_00051014 (r0);
0x0005e764 cmp r0, 0 |
| if (r0 != 0) {
0x0005e766 bne.w 0x5e9dc | goto label_70;
| }
0x0005e76a ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x0005e76c ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [var_70h]");
0x0005e770 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0005e772 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0005e774 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_52:
0x0005e776 ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x0005e778 cbz r0, 0x5e780 |
0x0005e77a mov r0, r7 | r0 = r7;
0x0005e77c bl 0x4448c | fcn_0004448c (r0);
| }
0x0005e780 movs r0, 0 | r0 = 0;
0x0005e782 str r0, [r7] | *(r7) = r0;
0x0005e784 str r0, [r7, 4] | *((r7 + 4)) = r0;
| label_9:
0x0005e786 ldrb.w r0, [r5, 0x1b0] | r0 = *((r5 + 0x1b0));
0x0005e78a cmp r0, 0 |
| if (r0 == 0) {
0x0005e78c beq.w 0x5de6e | goto label_7;
| }
0x0005e790 b.w 0x5d582 | goto label_1;
| label_67:
0x0005e794 ldr r0, [pc, 0x298] |
0x0005e796 add r0, pc | r0 = 0xbd1ca;
0x0005e798 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005e79c uxtb r1, r0 | r1 = (int8_t) r0;
0x0005e79e cmp r1, 0 |
| if (r1 != 0) {
0x0005e7a0 bne.w 0x5e38a | goto label_8;
| }
| label_66:
0x0005e7a4 ldr r0, [pc, 0x28c] |
0x0005e7a6 add r0, pc | r0 = 0xbd1de;
0x0005e7a8 ldrb r0, [r0] | r0 = *(r0);
0x0005e7aa cmp r0, 0 |
| if (r0 == 0) {
0x0005e7ac bne 0x5e886 |
0x0005e7ae ldr r0, [pc, 0x288] |
0x0005e7b0 add r0, pc |
0x0005e7b2 ldr r0, [r0] | r0 = *(0xbd1ee);
0x0005e7b4 cmp r0, 5 |
| if (r0 <= 5) {
0x0005e7b6 blo 0x5e886 | goto label_69;
| }
0x0005e7b8 ldr r0, [pc, 0x280] |
0x0005e7ba movs r4, 5 | r4 = 5;
0x0005e7bc add r0, pc | r0 = 0xbd1fc;
0x0005e7be str r0, [sp, 0x24] | var_24h = r0;
0x0005e7c0 ldr.w r8, [r0] | r8 = *(0xbd1fc);
0x0005e7c4 ldr r0, [pc, 0x278] |
0x0005e7c6 ldr r1, [pc, 0x27c] |
0x0005e7c8 ldr r2, [pc, 0x27c] |
0x0005e7ca add r0, pc |
0x0005e7cc ldr r3, [pc, 0x27c] |
0x0005e7ce add r1, pc | r1 = 0xbd218;
0x0005e7d0 ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x0005e7d4 add r2, pc | r2 = 0xbd220;
0x0005e7d6 add r3, pc | r3 = 0xbd226;
0x0005e7d8 str r6, [sp, 0x174] | var_174h = r6;
0x0005e7da strd r4, r7, [sp, 0x16c] | __asm ("strd r4, r7, [var_16ch]");
0x0005e7de ldr r0, [r0] | r0 = *(0xbd20e);
0x0005e7e0 ldr r4, [pc, 0x26c] |
0x0005e7e2 dmb ish | __asm ("dmb ish");
0x0005e7e6 ldr r6, [r1] | r6 = *(0xbd218);
0x0005e7e8 cmp r0, 2 |
0x0005e7ea ldr r7, [r2] | r7 = *(0xbd220);
0x0005e7ec it ne |
| if (r0 == 2) {
0x0005e7ee movne r6, r3 | r6 = r3;
| }
0x0005e7f0 ldr r2, [r6, 0x10] | r2 = *(0xbd228);
0x0005e7f2 add r1, sp, 0x16c | r1 += var_16ch;
0x0005e7f4 add r4, pc | r4 = 0xbd248;
0x0005e7f6 it ne |
| if (r0 == 2) {
0x0005e7f8 movne r7, r4 | r7 = r4;
| }
0x0005e7fa mov r0, r7 | r0 = r7;
0x0005e7fc blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005e7fe cmp r0, 0 |
| if (r0 == 0) {
0x0005e800 beq 0x5e886 | goto label_69;
| }
0x0005e802 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0005e804 add.w fp, sp, 0x88 |
0x0005e808 ldr r0, [r0] | r0 = *(r0);
0x0005e80a ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005e80c cmp r1, 0 |
| if (r1 == 0) {
0x0005e80e beq.w 0x5ee10 | goto label_68;
| }
0x0005e812 ldr r2, [sp, 0x16c] | r2 = var_16ch;
0x0005e814 mov lr, r4 | lr = r4;
0x0005e816 str r2, [sp, 0x24] | var_24h = r2;
0x0005e818 mov sb, sl | sb = sl;
0x0005e81a ldr r2, [sp, 0x170] | r2 = var_170h;
0x0005e81c add.w ip, sp, 0x110 |
0x0005e820 str r2, [sp, 0x20] | var_20h = r2;
0x0005e822 ldr r2, [sp, 0x174] | r2 = var_174h;
0x0005e824 str r2, [sp, 0x1c] | var_1ch = r2;
0x0005e826 ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x0005e828 ldrd sl, r4, [r0, 0x34] | __asm ("ldrd sl, r4, [r0, 0x34]");
0x0005e82c adds r0, 0x2c | r0 += 0x2c;
0x0005e82e ldr r3, [pc, 0x224] |
0x0005e830 add r3, pc | r3 = 0xbd28a;
0x0005e832 str r3, [sp, 0x14] | var_14h = r3;
0x0005e834 ldr r3, [pc, 0x220] |
0x0005e836 strd r2, r1, [sp, 0x114] | __asm ("strd r2, r1, [var_114h]");
0x0005e83a movs r1, 0 | r1 = 0;
0x0005e83c add r3, pc | r3 = 0xbd298;
0x0005e83e str r3, [sp, 0x18] | var_18h = r3;
0x0005e840 add r3, sp, 0xc0 | r3 += var_c0h;
0x0005e842 str r0, [sp, 0x90] | var_90h = r0;
0x0005e844 movs r0, 1 | r0 = 1;
0x0005e846 str r3, [sp, 0x9c] | var_9ch = r3;
0x0005e848 add r3, sp, 0x98 | r3 += var_98h;
0x0005e84a str r0, [sp, 0x8c] | var_8ch = r0;
0x0005e84c strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005e850 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0005e852 str r3, [sp, 0x88] | var_88h = r3;
0x0005e854 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005e856 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005e858 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005e85a ldr r2, [sp, 0x14] | r2 = var_14h;
0x0005e85c str r0, [sp] | *(sp) = r0;
0x0005e85e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0005e860 str r2, [sp, 0xa0] | var_a0h = r2;
0x0005e862 mov r2, r6 | r2 = r6;
0x0005e864 strd r0, fp, [sp, 4] | __asm ("strd r0, fp, [var_4h]");
0x0005e868 mov r0, r8 | r0 = r8;
0x0005e86a str r1, [sp, 0x110] | var_110h = r1;
0x0005e86c str r1, [sp, 0xd4] | var_d4h = r1;
0x0005e86e strd r1, lr, [sp, 0xcc] | __asm ("strd r1, lr, [var_d0h]");
0x0005e872 mov r1, r7 | r1 = r7;
0x0005e874 str.w ip, [sp, 0x98] | __asm ("str.w ip, [var_98h]");
0x0005e878 strd sl, r4, [sp, 0x11c] | __asm ("strd sl, r4, [var_120h]");
0x0005e87c bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005e880 mov sl, sb | sl = sb;
0x0005e882 ldr.w sb, [sp, 0x30] | sb = var_30h;
| }
| label_69:
0x0005e886 ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x0005e888 ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [var_70h]");
0x0005e88c ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0005e88e ldr r0, [sp, 0x38] | r0 = var_38h;
0x0005e890 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005e892 b 0x5e786 | goto label_9;
| label_55:
0x0005e894 movs r0, 1 | r0 = 1;
0x0005e896 strb.w r0, [r5, 0x1b0] | *((r5 + 0x1b0)) = r0;
0x0005e89a mov r0, r5 | r0 = r5;
0x0005e89c bl 0x114880 | fcn_00114880 (r0);
0x0005e8a0 mov r0, r5 | r0 = r5;
0x0005e8a2 bl 0x114adc | fcn_00114adc (r0);
0x0005e8a6 b.w 0x5d582 | goto label_1;
| label_14:
0x0005e8aa ldr r0, [pc, 0x1b0] |
0x0005e8ac add r0, pc |
0x0005e8ae ldr r0, [r0] | r0 = *(0xbd30e);
0x0005e8b0 subs r0, 1 | r0--;
0x0005e8b2 cmp r0, 5 |
| if (r0 <= 5) {
0x0005e8b4 blo.w 0x5eb9e | goto label_71;
| }
0x0005e8b8 ldr r5, [pc, 0x1a4] |
0x0005e8ba add r5, pc | r5 = 0xbd31e;
0x0005e8bc ldrb r1, [r5, 8] | r1 = *((r5 + 8));
0x0005e8be cmp r1, 0 |
| if (r1 == 0) {
0x0005e8c0 beq.w 0x5eb9e | goto label_71;
| }
0x0005e8c4 cmp r1, 1 |
| if (r1 != 1) {
0x0005e8c6 beq 0x5e8d0 |
0x0005e8c8 cmp r1, 2 |
| if (r1 != 2) {
0x0005e8ca bne.w 0x5eb8e | goto label_72;
| }
0x0005e8ce movs r1, 2 | r1 = 2;
| }
| label_11:
0x0005e8d0 ldr r0, [r5] | r0 = *(r5);
0x0005e8d2 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005e8d6 cmp r0, 0 |
| if (r0 == 0) {
0x0005e8d8 beq.w 0x5eb9e | goto label_71;
| }
0x0005e8dc ldr r0, [r5] | r0 = *(r5);
0x0005e8de ldr r3, [r0, 0x30] | r3 = *((r0 + 0x30));
0x0005e8e0 cmp r3, 0 |
| if (r3 == 0) {
0x0005e8e2 beq.w 0x5ee06 | goto label_73;
| }
0x0005e8e6 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005e8ea ldrd r6, r4, [r0, 0x34] | __asm ("ldrd r6, r4, [r0, 0x34]");
0x0005e8ee ldr r1, [pc, 0x174] |
0x0005e8f0 ldr r2, [pc, 0x174] |
0x0005e8f2 add r1, pc | r1 = 0xbd35c;
0x0005e8f4 add r2, pc | r2 = 0xbd360;
0x0005e8f6 mov lr, r2 | lr = r2;
0x0005e8f8 ldr r2, [pc, 0x170] |
0x0005e8fa str r1, [sp, 0x78] | var_78h = r1;
0x0005e8fc add r1, sp, 0x88 | r1 += var_88h;
0x0005e8fe add r2, pc | r2 = 0xbd36e;
0x0005e900 strd r6, r4, [sp, 0x11c] | __asm ("strd r6, r4, [var_120h]");
0x0005e904 str r1, [sp, 0xd0] | var_d0h = r1;
0x0005e906 movs r1, 2 | r1 = 2;
0x0005e908 add r4, sp, 0x98 | r4 += var_98h;
0x0005e90a str r7, [sp, 0x74] | var_74h = r7;
0x0005e90c add.w r7, r0, 0x2c | r7 = r0 + 0x2c;
0x0005e910 strd lr, r1, [sp, 0xc0] | __asm ("strd lr, r1, [var_c0h]");
0x0005e914 add r1, sp, 0x54 | r1 += var_54h;
0x0005e916 mov r8, r2 | r8 = r2;
0x0005e918 add r2, sp, 0x110 | r2 += var_110h;
0x0005e91a strd ip, r3, [sp, 0x114] | __asm ("strd ip, r3, [var_114h]");
0x0005e91e movs r3, 0 | r3 = 0;
0x0005e920 str r7, [sp, 0xa0] | var_a0h = r7;
0x0005e922 movs r7, 1 | r7 = 1;
0x0005e924 str r1, [sp, 0x88] | var_88h = r1;
0x0005e926 mov r1, r4 | r1 = r4;
0x0005e928 str r2, [sp, 0x70] | var_70h = r2;
0x0005e92a add r2, sp, 0x70 | r2 += var_70h;
0x0005e92c str r2, [sp, 0x98] | var_98h = r2;
0x0005e92e str r3, [sp, 0x110] | var_110h = r3;
0x0005e930 str r7, [sp, 0x9c] | var_9ch = r7;
0x0005e932 str r7, [sp, 0xd4] | var_d4h = r7;
0x0005e934 strd r3, r3, [sp, 0xc8] | __asm ("strd r3, r3, [var_cch]");
0x0005e938 str.w r8, [sp, 0x8c] | __asm ("str.w r8, [var_8ch]");
0x0005e93c bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005e940 ldr r0, [pc, 0x12c] |
0x0005e942 add r0, pc | r0 = 0xbd3b6;
0x0005e944 ldrb r0, [r0] | r0 = *(r0);
0x0005e946 cmp r0, 0 |
| if (r0 != 0) {
0x0005e948 bne.w 0x5ec80 | goto label_74;
| }
0x0005e94c ldr r0, [pc, 0x124] |
0x0005e94e add r0, pc |
0x0005e950 ldr r0, [r0] | r0 = *(0xbd3c6);
0x0005e952 cmp r0, 5 |
| if (r0 <= 5) {
0x0005e954 blo.w 0x5ec80 | goto label_74;
| }
0x0005e958 ldr.w r8, [r5] | r8 = *(r5);
0x0005e95c movs r3, 5 | r3 = 5;
0x0005e95e ldr r0, [pc, 0x118] |
0x0005e960 ldr r1, [pc, 0x118] |
0x0005e962 ldr r2, [pc, 0x11c] |
0x0005e964 add r0, pc |
0x0005e966 ldr r5, [pc, 0x11c] |
0x0005e968 add r1, pc | r1 = 0xbd3e8;
0x0005e96a ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x0005e96e add r2, pc | r2 = 0xbd3f4;
0x0005e970 add r5, pc | r5 = 0xbd3fa;
0x0005e972 str r6, [sp, 0x160] | var_160h = r6;
0x0005e974 strd r3, r7, [sp, 0x158] | __asm ("strd r3, r7, [var_158h]");
0x0005e978 ldr r0, [r0] | r0 = *(0xbd3e2);
0x0005e97a ldr r3, [pc, 0x10c] |
0x0005e97c dmb ish | __asm ("dmb ish");
0x0005e980 ldr r6, [r1] | r6 = *(0xbd3e8);
0x0005e982 cmp r0, 2 |
0x0005e984 ldr r7, [r2] | r7 = *(0xbd3f4);
0x0005e986 it ne |
| if (r0 == 2) {
0x0005e988 movne r6, r5 | r6 = r5;
| }
0x0005e98a ldr r2, [r6, 0x10] | r2 = *(0xbd3f8);
0x0005e98c add r1, sp, 0x158 | r1 += var_158h;
0x0005e98e add r3, pc | r3 = 0xbd41c;
0x0005e990 it ne |
| if (r0 == 2) {
0x0005e992 movne r7, r3 | r7 = r3;
| }
0x0005e994 mov r0, r7 | r0 = r7;
0x0005e996 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005e998 cmp r0, 0 |
| if (r0 == 0) {
0x0005e99a beq.w 0x5ec80 | goto label_74;
| }
0x0005e99e ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005e9a2 mov r2, r6 | r2 = r6;
0x0005e9a4 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005e9a6 stm.w sp, {r0, r1, r4} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r4;
0x0005e9aa mov r0, r8 | r0 = r8;
0x0005e9ac mov r1, r7 | r1 = r7;
0x0005e9ae b 0x5ec7c | goto label_75;
| label_17:
0x0005e9b0 mov.w r8, 0 | r8 = 0;
0x0005e9b4 b 0x5ec8e | goto label_16;
| label_54:
0x0005e9b6 cmp r0, 2 |
| if (r0 == 2) {
0x0005e9b8 beq 0x5e9c8 | goto label_76;
| }
0x0005e9ba add r0, sp, 0x158 | r0 += var_158h;
0x0005e9bc bl 0x4ab30 | fcn_0004ab30 (r0);
0x0005e9c0 b 0x5e9c8 | goto label_76;
| label_57:
0x0005e9c2 bl 0x4c548 | r0 = fcn_0004c548 (r0, r1);
0x0005e9c6 mov r8, r0 | r8 = r0;
| do {
| label_76:
0x0005e9c8 ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x0005e9ca cbz r0, 0x5e9d2 |
0x0005e9cc mov r0, r7 | r0 = r7;
0x0005e9ce bl 0x4448c | fcn_0004448c (r0);
| }
0x0005e9d2 movs r0, 0 | r0 = 0;
0x0005e9d4 strd r0, r0, [r7] | __asm ("strd r0, r0, [r7]");
| label_10:
0x0005e9d8 movs r0, 0 | r0 = 0;
0x0005e9da b 0x5ec8e | goto label_16;
| label_70:
0x0005e9dc mov r8, r0 | r8 = r0;
0x0005e9de ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x0005e9e0 ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [var_70h]");
0x0005e9e4 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0005e9e6 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0005e9e8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005e9ea b 0x5e9c8 |
| } while (1);
| label_42:
0x0005e9ec movs r0, 6 | r0 = 6;
0x0005e9ee ldr r5, [sp, 0xc8] | r5 = var_c8h;
0x0005e9f0 bl 0x1106f0 | fcn_001106f0 (r0, r1);
0x0005e9f4 add r1, sp, 0x110 | r1 += var_110h;
0x0005e9f6 mov r8, r0 | r8 = r0;
0x0005e9f8 strd r4, r5, [sp, 0x110] | __asm ("strd r4, r5, [var_110h]");
0x0005e9fc bl 0x1139f0 | fcn_001139f0 (r0, r1);
0x0005ea00 b 0x5e9d8 | goto label_10;
| label_43:
0x0005ea8c ldr r0, [pc, 0x3a0] |
0x0005ea8e add r0, pc |
0x0005ea90 ldr r0, [r0] | r0 = *(0xbd8c2);
0x0005ea92 subs r0, 1 | r0--;
0x0005ea94 cmp r0, 5 |
| if (r0 <= 5) {
0x0005ea96 blo.w 0x5ecac | goto label_77;
| }
0x0005ea9a ldr r6, [pc, 0x398] |
0x0005ea9c add r6, pc | r6 = 0xbd8d6;
0x0005ea9e ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005eaa0 cmp r1, 0 |
| if (r1 == 0) {
0x0005eaa2 beq.w 0x5ecac | goto label_77;
| }
0x0005eaa6 cmp r1, 1 |
| if (r1 != 1) {
0x0005eaa8 beq 0x5eab2 |
0x0005eaaa cmp r1, 2 |
| if (r1 != 2) {
0x0005eaac bne.w 0x5ec9c | goto label_78;
| }
0x0005eab0 movs r1, 2 | r1 = 2;
| }
| label_12:
0x0005eab2 ldr r0, [r6] | r0 = *(r6);
0x0005eab4 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005eab8 cmp r0, 0 |
| if (r0 == 0) {
0x0005eaba beq.w 0x5ecac | goto label_77;
| }
0x0005eabe ldr r0, [r6] | r0 = *(r6);
0x0005eac0 ldr r3, [r0, 0x30] | r3 = *((r0 + 0x30));
0x0005eac2 cmp r3, 0 |
| if (r3 == 0) {
0x0005eac4 beq.w 0x5ee24 | goto label_79;
| }
0x0005eac8 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005eacc ldrd lr, r4, [r0, 0x34] | __asm ("ldrd lr, r4, [r0, 0x34]");
0x0005ead0 ldr r1, [pc, 0x370] |
0x0005ead2 ldr r2, [pc, 0x374] |
0x0005ead4 add r1, pc | r1 = 0xbd91c;
0x0005ead6 add r2, pc | r2 = 0xbd924;
0x0005ead8 mov r8, r2 | r8 = r2;
0x0005eada ldr r2, [pc, 0x370] |
0x0005eadc strd lr, r4, [sp, 0x11c] | __asm ("strd lr, r4, [var_120h]");
0x0005eae0 add r4, sp, 0x98 | r4 += var_98h;
0x0005eae2 add r2, pc | r2 = 0xbd934;
0x0005eae4 str r7, [sp, 0x74] | var_74h = r7;
0x0005eae6 add.w r7, r0, 0x2c | r7 = r0 + 0x2c;
0x0005eaea str r1, [sp, 0x78] | var_78h = r1;
0x0005eaec add r1, sp, 0x88 | r1 += var_88h;
0x0005eaee mov sb, r2 | sb = r2;
0x0005eaf0 add r2, sp, 0x110 | r2 += var_110h;
0x0005eaf2 strd ip, r3, [sp, 0x114] | __asm ("strd ip, r3, [var_114h]");
0x0005eaf6 movs r3, 0 | r3 = 0;
0x0005eaf8 str r7, [sp, 0xa0] | var_a0h = r7;
0x0005eafa movs r7, 1 | r7 = 1;
0x0005eafc str r1, [sp, 0xd0] | var_d0h = r1;
0x0005eafe mov r1, r4 | r1 = r4;
0x0005eb00 str r2, [sp, 0x70] | var_70h = r2;
0x0005eb02 add r2, sp, 0x70 | r2 += var_70h;
0x0005eb04 str r2, [sp, 0x98] | var_98h = r2;
0x0005eb06 str r3, [sp, 0x110] | var_110h = r3;
0x0005eb08 str r7, [sp, 0x9c] | var_9ch = r7;
0x0005eb0a str r7, [sp, 0xd4] | var_d4h = r7;
0x0005eb0c strd r3, r3, [sp, 0xc8] | __asm ("strd r3, r3, [var_cch]");
0x0005eb0e adds r3, 0x32 | r3 += 0x32;
0x0005eb10 strd r8, r7, [sp, 0xc0] | __asm ("strd r8, r7, [var_c0h]");
0x0005eb14 strd r5, sb, [sp, 0x88] | __asm ("strd r5, sb, [var_88h]");
0x0005eb18 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005eb1c ldr r0, [pc, 0x330] |
0x0005eb1e add r0, pc | r0 = 0xbd972;
0x0005eb20 ldrb r0, [r0] | r0 = *(r0);
0x0005eb22 cmp r0, 0 |
| if (r0 != 0) {
0x0005eb24 bne.w 0x5ed8e | goto label_80;
| }
0x0005eb28 ldr r0, [pc, 0x328] |
0x0005eb2a add r0, pc |
0x0005eb2c ldr r0, [r0] | r0 = *(0xbd982);
0x0005eb2e cmp r0, 5 |
| if (r0 <= 5) {
0x0005eb30 blo.w 0x5ed8e | goto label_80;
| }
0x0005eb34 ldr.w r8, [r6] | r8 = *(r6);
0x0005eb38 ldr r0, [pc, 0x31c] |
0x0005eb3a ldr r1, [pc, 0x320] |
0x0005eb3c ldr r2, [pc, 0x320] |
0x0005eb3e add r0, pc |
0x0005eb40 ldr r3, [pc, 0x320] |
0x0005eb42 add r1, pc | r1 = 0xbd9a4;
0x0005eb44 ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x0005eb48 add r2, pc | r2 = 0xbd9ac;
0x0005eb4a add r3, pc | r3 = 0xbd9b2;
0x0005eb4c str r6, [sp, 0x160] | var_160h = r6;
0x0005eb4e mov ip, r3 |
0x0005eb50 movs r3, 5 | r3 = 5;
0x0005eb52 strd r3, r7, [sp, 0x158] | __asm ("strd r3, r7, [var_158h]");
0x0005eb56 ldr r0, [r0] | r0 = *(0xbd99a);
0x0005eb58 ldr r3, [pc, 0x30c] |
0x0005eb5a dmb ish | __asm ("dmb ish");
0x0005eb5e ldr r7, [r1] | r7 = *(0xbd9a4);
0x0005eb60 cmp r0, 2 |
0x0005eb62 ldr r6, [r2] | r6 = *(0xbd9ac);
0x0005eb64 it ne |
| if (r0 == 2) {
0x0005eb66 movne r7, ip | r7 = ip;
| }
0x0005eb68 ldr r2, [r7, 0x10] | r2 = *(0xbd9b4);
0x0005eb6a add r1, sp, 0x158 | r1 += var_158h;
0x0005eb6c add r3, pc | r3 = 0xbd9d8;
0x0005eb6e it ne |
| if (r0 == 2) {
0x0005eb70 movne r6, r3 | r6 = r3;
| }
0x0005eb72 mov r0, r6 | r0 = r6;
0x0005eb74 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005eb76 cmp r0, 0 |
| if (r0 == 0) {
0x0005eb78 beq.w 0x5ed8e | goto label_80;
| }
0x0005eb7c ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005eb80 mov r2, r7 | r2 = r7;
0x0005eb82 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005eb84 stm.w sp, {r0, r1, r4} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r4;
0x0005eb88 mov r0, r8 | r0 = r8;
0x0005eb8a mov r1, r6 | r1 = r6;
0x0005eb8c b 0x5ed8a | goto label_81;
| label_72:
0x0005eb8e ldr r0, [pc, 0x350] |
0x0005eb90 add r0, pc | r0 = 0xbda76;
0x0005eb92 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005eb96 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005eb98 cmp r1, 0 |
| if (r1 != 0) {
0x0005eb9a bne.w 0x5e8d0 | goto label_11;
| }
| label_71:
0x0005eb9e ldr r0, [pc, 0x34c] |
0x0005eba0 add r0, pc | r0 = 0xbda92;
0x0005eba2 ldrb r0, [r0] | r0 = *(r0);
0x0005eba4 cmp r0, 0 |
| if (r0 == 0) {
0x0005eba6 bne 0x5ec80 |
0x0005eba8 ldr r0, [pc, 0x344] |
0x0005ebaa add r0, pc |
0x0005ebac ldr r0, [r0] | r0 = *(0xbda9e);
0x0005ebae cmp r0, 5 |
| if (r0 <= 5) {
0x0005ebb0 blo 0x5ec80 | goto label_74;
| }
0x0005ebb2 ldr r6, [pc, 0x340] |
0x0005ebb4 movs r4, 5 | r4 = 5;
0x0005ebb6 add r6, pc | r6 = 0xbdab0;
0x0005ebb8 ldr.w r8, [r6] | r8 = *(0xbdab0);
0x0005ebba strh r0, [r0] | *(r0) = r0;
0x0005ebbc ldr r0, [pc, 0x338] |
0x0005ebbe ldr r1, [pc, 0x33c] |
0x0005ebc0 ldr r2, [pc, 0x33c] |
0x0005ebc2 add r0, pc |
0x0005ebc4 ldr r3, [pc, 0x33c] |
0x0005ebc6 add r1, pc | r1 = 0xbdac8;
0x0005ebc8 ldrd r7, r5, [r8, 8] | __asm ("ldrd r7, r5, [r8, 8]");
0x0005ebcc add r2, pc | r2 = 0xbdad0;
0x0005ebce add r3, pc | r3 = 0xbdad6;
0x0005ebd0 str r5, [sp, 0xa0] | var_a0h = r5;
0x0005ebd2 strd r4, r7, [sp, 0x98] | __asm ("strd r4, r7, [var_98h]");
0x0005ebd6 ldr r0, [r0] | r0 = *(0xbdabe);
0x0005ebd8 ldr r4, [pc, 0x32c] |
0x0005ebda dmb ish | __asm ("dmb ish");
0x0005ebde ldr r5, [r1] | r5 = *(0xbdac8);
0x0005ebe0 cmp r0, 2 |
0x0005ebe2 ldr r7, [r2] | r7 = *(0xbdad0);
0x0005ebe4 it ne |
| if (r0 == 2) {
0x0005ebe6 movne r5, r3 | r5 = r3;
| }
0x0005ebe8 ldr r2, [r5, 0x10] | r2 = *(0xbdad8);
0x0005ebea add r1, sp, 0x98 | r1 += var_98h;
0x0005ebec add r4, pc | r4 = 0xbdaf8;
0x0005ebee it ne |
| if (r0 == 2) {
0x0005ebf0 movne r7, r4 | r7 = r4;
| }
0x0005ebf2 mov r0, r7 | r0 = r7;
0x0005ebf4 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005ebf6 cmp r0, 0 |
| if (r0 == 0) {
0x0005ebf8 beq 0x5ec80 | goto label_74;
| }
0x0005ebfa ldr r2, [r6] | r2 = *(r6);
0x0005ebfc add.w lr, sp, 0x158 | lr += var_158h;
0x0005ec00 ldr r1, [r2, 0x30] | r1 = *((r2 + 0x30));
0x0005ec02 cmp r1, 0 |
| if (r1 == 0) {
0x0005ec04 beq.w 0x5ee06 | goto label_73;
| }
0x0005ec08 ldr r0, [sp, 0x98] | r0 = var_98h;
0x0005ec0a add.w ip, sp, 0x110 |
0x0005ec0e str r0, [sp, 0x4c] | var_4ch = r0;
0x0005ec10 ldr r0, [sp, 0x9c] | r0 = var_9ch;
0x0005ec12 str r0, [sp, 0x48] | var_48h = r0;
0x0005ec14 ldr r0, [sp, 0xa0] | r0 = var_a0h;
0x0005ec16 str r0, [sp, 0x44] | var_44h = r0;
0x0005ec18 ldr.w sb, [r2, 0x2c] | sb = *((r2 + 0x2c));
0x0005ec1c ldrd sl, r4, [r2, 0x34] | __asm ("ldrd sl, r4, [r2, 0x34]");
0x0005ec20 adds r2, 0x2c | r2 += 0x2c;
0x0005ec22 ldr r0, [pc, 0x2e8] |
0x0005ec24 ldr r6, [pc, 0x2e8] |
0x0005ec26 add r0, pc | r0 = 0xbdb38;
0x0005ec28 ldr r3, [pc, 0x2e8] |
0x0005ec2a str r0, [sp, 0x160] | var_160h = r0;
0x0005ec2c add r0, sp, 0x88 | r0 += var_88h;
0x0005ec2e str r0, [sp, 0xd0] | var_d0h = r0;
0x0005ec30 movs r0, 2 | r0 = 2;
0x0005ec32 add r6, pc | r6 = 0xbdb46;
0x0005ec34 strd r6, r0, [sp, 0xc0] | __asm ("strd r6, r0, [var_c0h]");
0x0005ec38 add r0, sp, 0x54 | r0 += var_54h;
0x0005ec3a add r3, pc | r3 = 0xbdb52;
0x0005ec3c str r0, [sp, 0x88] | var_88h = r0;
0x0005ec3e ldr r0, [sp, 0x48] | r0 = var_48h;
0x0005ec40 mov fp, r3 |
0x0005ec42 str r0, [sp] | *(sp) = r0;
0x0005ec44 add r3, sp, 0xc0 | r3 += var_c0h;
0x0005ec46 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0005ec48 strd sb, r1, [sp, 0x114] | __asm ("strd sb, r1, [var_114h]");
0x0005ec4c movs r1, 0 | r1 = 0;
0x0005ec4e str r2, [sp, 0x78] | var_78h = r2;
0x0005ec50 movs r2, 1 | r2 = 1;
0x0005ec52 str r0, [sp, 4] | var_4h = r0;
0x0005ec54 add r0, sp, 0x70 | r0 += var_70h;
0x0005ec56 str r3, [sp, 0x15c] | var_15ch = r3;
0x0005ec58 str r0, [sp, 8] | var_8h = r0;
0x0005ec5a mov r0, r8 | r0 = r8;
0x0005ec5c str.w ip, [sp, 0x158] | __asm ("str.w ip, [var_158h]");
0x0005ec60 str.w lr, [sp, 0x70] | __asm ("str.w lr, [var_70h]");
0x0005ec64 strd sl, r4, [sp, 0x11c] | __asm ("strd sl, r4, [var_120h]");
0x0005ec68 str r1, [sp, 0x110] | var_110h = r1;
0x0005ec6a strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x0005ec6e mov r1, r7 | r1 = r7;
0x0005ec70 str r2, [sp, 0x74] | var_74h = r2;
0x0005ec72 str r2, [sp, 0xd4] | var_d4h = r2;
0x0005ec74 mov r2, r5 | r2 = r5;
0x0005ec76 str.w fp, [sp, 0x8c] | __asm ("str.w fp, [var_8ch]");
0x0005ec7a ldr r3, [sp, 0x4c] | r3 = var_4ch;
| label_75:
0x0005ec7c bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_74:
0x0005ec80 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0005ec82 ldr r1, [r0] | r1 = *(r0);
0x0005ec84 ldrd r0, r1, [r1] | __asm ("ldrd r0, r1, [r1]");
0x0005ec88 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x0005ec8a blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0005ec8c movs r0, 1 | r0 = 1;
| label_16:
0x0005ec8e mov r1, r8 | r1 = r8;
0x0005ec90 add sp, 0x178 |
0x0005ec92 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0005ec96 add sp, 4 |
0x0005ec98 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_78:
0x0005ec9c ldr r0, [pc, 0x198] |
0x0005ec9e add r0, pc | r0 = 0xbdada;
0x0005eca0 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005eca4 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005eca6 cmp r1, 0 |
| if (r1 != 0) {
0x0005eca8 bne.w 0x5eab2 | goto label_12;
| }
| label_77:
0x0005ecac ldr r0, [pc, 0x1bc] |
0x0005ecae add r0, pc | r0 = 0xbdb1e;
0x0005ecb0 ldrb r0, [r0] | r0 = *(r0);
0x0005ecb2 cmp r0, 0 |
| if (r0 == 0) {
0x0005ecb4 bne 0x5ed8e |
0x0005ecb6 ldr r0, [pc, 0x1b8] |
0x0005ecb8 add r0, pc |
0x0005ecba ldr r0, [r0] | r0 = *(0xbdb2e);
0x0005ecbc cmp r0, 5 |
| if (r0 <= 5) {
0x0005ecbe blo 0x5ed8e | goto label_80;
| }
0x0005ecc0 ldr r0, [pc, 0x1b0] |
0x0005ecc2 movs r4, 5 | r4 = 5;
0x0005ecc4 add r0, pc | r0 = 0xbdb3c;
0x0005ecc6 ldr.w r8, [r0] | r8 = *(0xbdb3c);
0x0005ecca mov sb, r0 | sb = r0;
0x0005eccc ldr r0, [pc, 0x1a8] |
0x0005ecce ldr r1, [pc, 0x1ac] |
0x0005ecd0 ldr r2, [pc, 0x1ac] |
0x0005ecd2 add r0, pc |
0x0005ecd4 ldr r3, [pc, 0x1ac] |
0x0005ecd6 add r1, pc | r1 = 0xbdb58;
0x0005ecd8 ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x0005ecdc add r2, pc | r2 = 0xbdb60;
0x0005ecde add r3, pc | r3 = 0xbdb66;
0x0005ece0 str r6, [sp, 0xa0] | var_a0h = r6;
0x0005ece2 strd r4, r7, [sp, 0x98] | __asm ("strd r4, r7, [var_98h]");
0x0005ece6 ldr r0, [r0] | r0 = *(0xbdb4e);
0x0005ece8 ldr r4, [pc, 0x19c] |
0x0005ecea dmb ish | __asm ("dmb ish");
0x0005ecee ldr r6, [r1] | r6 = *(0xbdb58);
0x0005ecf0 cmp r0, 2 |
0x0005ecf2 ldr r7, [r2] | r7 = *(0xbdb60);
0x0005ecf4 it ne |
| if (r0 == 2) {
0x0005ecf6 movne r6, r3 | r6 = r3;
| }
0x0005ecf8 ldr r2, [r6, 0x10] | r2 = *(0xbdb68);
0x0005ecfa add r1, sp, 0x98 | r1 += var_98h;
0x0005ecfc add r4, pc | r4 = 0xbdb88;
0x0005ecfe it ne |
| if (r0 == 2) {
0x0005ed00 movne r7, r4 | r7 = r4;
| }
0x0005ed02 mov r0, r7 | r0 = r7;
0x0005ed04 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005ed06 cmp r0, 0 |
| if (r0 == 0) {
0x0005ed08 beq 0x5ed8e | goto label_80;
| }
0x0005ed0a ldr.w r2, [sb] | r2 = *(sb);
0x0005ed0e add.w lr, sp, 0x158 | lr += var_158h;
0x0005ed12 ldr r4, [r2, 0x30] | r4 = *((r2 + 0x30));
0x0005ed14 cmp r4, 0 |
| if (r4 == 0) {
0x0005ed16 beq.w 0x5ee24 | goto label_79;
| }
0x0005ed1a ldr r0, [sp, 0x98] | r0 = var_98h;
0x0005ed1c add.w ip, sp, 0x110 |
0x0005ed20 str r0, [sp, 0x50] | var_50h = r0;
0x0005ed22 ldr r0, [sp, 0x9c] | r0 = var_9ch;
0x0005ed24 str r0, [sp, 0x4c] | var_4ch = r0;
0x0005ed26 ldr r0, [sp, 0xa0] | r0 = var_a0h;
0x0005ed28 str r0, [sp, 0x48] | var_48h = r0;
0x0005ed2a ldr.w sb, [r2, 0x2c] | sb = *((r2 + 0x2c));
0x0005ed2e ldrd sl, fp, [r2, 0x34] | __asm ("ldrd sl, fp, [r2, 0x34]");
0x0005ed32 adds r2, 0x2c | r2 += 0x2c;
0x0005ed34 ldr r0, [pc, 0x154] |
0x0005ed36 ldr r1, [pc, 0x158] |
0x0005ed38 add r0, pc | r0 = 0xbdbc8;
0x0005ed3a add r1, pc | r1 = 0xbdbd0;
0x0005ed3c str r1, [sp, 0x44] | var_44h = r1;
0x0005ed3e ldr r3, [pc, 0x154] |
0x0005ed40 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005ed42 str r0, [sp, 0x160] | var_160h = r0;
0x0005ed44 add r0, sp, 0x88 | r0 += var_88h;
0x0005ed46 strd sb, r4, [sp, 0x114] | __asm ("strd sb, r4, [var_114h]");
0x0005ed4a movs r4, 0 | r4 = 0;
0x0005ed4c strd r4, r0, [sp, 0xcc] | __asm ("strd r4, r0, [var_d0h]");
0x0005ed50 add r3, pc | r3 = 0xbdbea;
0x0005ed52 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0005ed54 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005ed56 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x0005ed58 str r0, [sp] | *(sp) = r0;
0x0005ed5a ldr r0, [sp, 0x48] | r0 = var_48h;
0x0005ed5c str r2, [sp, 0x78] | var_78h = r2;
0x0005ed5e movs r2, 1 | r2 = 1;
0x0005ed60 str r0, [sp, 4] | var_4h = r0;
0x0005ed62 add r0, sp, 0x70 | r0 += var_70h;
0x0005ed64 str r1, [sp, 0x15c] | var_15ch = r1;
0x0005ed66 mov r1, r7 | r1 = r7;
0x0005ed68 strd r5, r3, [sp, 0x88] | __asm ("strd r5, r3, [var_88h]");
0x0005ed6c str r0, [sp, 8] | var_8h = r0;
0x0005ed6e mov r0, r8 | r0 = r8;
0x0005ed70 str.w ip, [sp, 0x158] | __asm ("str.w ip, [var_158h]");
0x0005ed74 str.w lr, [sp, 0x70] | __asm ("str.w lr, [var_70h]");
0x0005ed78 strd sl, fp, [sp, 0x11c] | __asm ("strd sl, fp, [var_0hx11c]");
0x0005ed7c str r4, [sp, 0x110] | var_110h = r4;
0x0005ed7e str r2, [sp, 0x74] | var_74h = r2;
0x0005ed80 str r2, [sp, 0xd4] | var_d4h = r2;
0x0005ed82 strd r2, r4, [sp, 0xc4] | __asm ("strd r2, r4, [var_c8h]");
0x0005ed86 mov r2, r6 | r2 = r6;
0x0005ed88 ldr r3, [sp, 0x50] | r3 = var_50h;
| label_81:
0x0005ed8a bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_80:
0x0005ed8e mov r0, r5 | r0 = r5;
0x0005ed90 bl 0x114880 | fcn_00114880 (r0);
0x0005ed94 movs r0, 2 | r0 = 2;
0x0005ed96 bl 0x1106f0 | fcn_001106f0 (r0, r1);
0x0005ed98 stc2 p6, c4, [fp], 0x200 | __asm ("stc2 p6, c4, [fp], aav.0x000000ff");
0x0005ed9c b 0x5e9d8 | goto label_10;
| label_25:
0x0005ed9e ldr r0, [pc, 0xf8] |
0x0005eda0 ldr r2, [pc, 0xf8] |
0x0005eda2 add r0, pc | r0 = 0xbdc40;
0x0005eda4 add r2, pc | r2 = 0xbdc44;
0x0005eda6 b 0x5edba | goto label_13;
| label_40:
0x0005eda8 ldr r0, [pc, 0xf4] |
0x0005edaa ldr r2, [pc, 0xf8] |
0x0005edac add r0, pc | r0 = 0xbdc50;
0x0005edae add r2, pc | r2 = 0xbdc58;
0x0005edb0 b 0x5edba | goto label_13;
| label_50:
0x0005edb2 ldr r0, [pc, 0xfc] |
0x0005edb4 ldr r2, [pc, 0xfc] |
0x0005edb6 add r0, pc | r0 = 0xbdc6c;
0x0005edb8 add r2, pc | r2 = 0xbdc70;
| do {
| label_13:
0x0005edba movs r1, 0x22 | r1 = 0x22;
0x0005edbc bl 0x29c28 | fcn_00029c28 (r0, r1, r2);
0x0005edc0 trap | __asm ("trap");
| label_60:
0x0005edc2 ldr r0, [pc, 0xf4] |
0x0005edc4 ldr r2, [pc, 0xf4] |
0x0005edc6 ldr r1, [pc, 0xf8] |
0x0005edc8 add r0, pc | r0 = 0xbdc86;
0x0005edca add r2, pc | r2 = 0xbdc8a;
0x0005edcc add r1, pc | r1 = 0xbdc92;
0x0005edce b 0x5eddc | goto label_82;
| label_61:
0x0005edd0 ldr r0, [pc, 0xf8] |
0x0005edd2 ldr r2, [pc, 0xfc] |
0x0005edd4 ldr r1, [pc, 0xfc] |
0x0005edd6 add r0, pc | r0 = 0xbdca6;
0x0005edd8 add r2, pc | r2 = 0xbdcae;
0x0005edda add r1, pc | r1 = 0xbdcb2;
| label_82:
0x0005eddc add r7, sp, 0x110 | r7 += var_110h;
0x0005edde str r0, [sp, 0x114] | var_114h = r0;
0x0005ede0 add r0, sp, 0xc0 | r0 += var_c0h;
0x0005ede2 movs r3, 1 | r3 = 1;
0x0005ede4 str r7, [sp, 0xd0] | var_d0h = r7;
0x0005ede6 movs r7, 0 | r7 = 0;
0x0005ede8 str r3, [sp, 0xd4] | var_d4h = r3;
0x0005edea str r7, [sp, 0xcc] | var_cch = r7;
0x0005edec str r7, [sp, 0xc8] | var_c8h = r7;
0x0005edee str r3, [sp, 0xc4] | var_c4h = r3;
0x0005edf0 str.w sl, [sp, 0x110] | __asm ("str.w sl, [var_110h]");
0x0005edf4 str r2, [sp, 0xc0] | var_c0h = r2;
0x0005edf6 bl 0x29b38 | fcn_00029b38 (r0, r1);
0x0005edfa trap | __asm ("trap");
| label_33:
0x0005edfc ldr r0, [pc, 0xa8] |
0x0005edfe ldr r2, [pc, 0xac] |
0x0005ee00 add r0, pc | r0 = 0xbdcac;
0x0005ee02 add r2, pc | r2 = 0xbdcb4;
0x0005ee04 b 0x5edba |
| } while (1);
| label_73:
0x0005ee06 ldr r0, [pc, 0xdc] |
0x0005ee08 ldr r2, [pc, 0xdc] |
0x0005ee0a add r0, pc | r0 = 0xbdcf4;
0x0005ee0c add r2, pc | r2 = 0xbdcf8;
0x0005ee0e b 0x5edba | goto label_13;
| label_68:
0x0005ee10 ldr r0, [pc, 0xc4] |
0x0005ee12 ldr r2, [pc, 0xc8] |
0x0005ee14 add r0, pc | r0 = 0xbdcf0;
0x0005ee16 add r2, pc | r2 = 0xbdcf8;
0x0005ee18 b 0x5edba | goto label_13;
| label_64:
0x0005ee1a ldr r0, [pc, 0xa8] |
0x0005ee1c ldr r2, [pc, 0xa8] |
0x0005ee1e add r0, pc | r0 = 0xbdce8;
0x0005ee20 add r2, pc | r2 = 0xbdcec;
0x0005ee22 b 0x5edba | goto label_13;
| label_79:
0x0005ee24 ldr r0, [pc, 0x14] |
0x0005ee26 ldr r2, [pc, 0x18] |
0x0005ee28 add r0, pc | r0 = 0xbdc68;
0x0005ee2a add r2, pc | r2 = 0xbdc70;
0x0005ee2c b 0x5edba | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x5ef18 */
| #include <stdint.h>
|
; (fcn) fcn.0005ef18 () | void fcn_0005ef18 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5bh;
| int16_t var_68h;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_dh;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_c8h;
| int16_t var_cch;
| int16_t var_d0h;
| int16_t var_d4h;
| int16_t var_108h;
| int32_t var_108h_2;
| int16_t var_110h;
| int16_t var_114h;
| int16_t var_118h;
| int32_t var_11ch;
| int16_t var_120h;
| int16_t var_124h;
| int16_t var_158h;
| int16_t var_15ch;
| int16_t var_160h;
| int16_t var_164h;
| int32_t var_164h_2;
| int16_t var_16ch;
| int16_t var_170h;
| int16_t var_174h;
| r0 = arg1;
| r1 = arg2;
0x0005ef18 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005ef1c sub sp, 4 |
0x0005ef1e vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0005ef22 sub sp, 0x178 |
0x0005ef24 strd r1, r0, [sp, 0x50] | __asm ("strd r1, r0, [var_50h]");
0x0005ef28 add r1, sp, 0x70 | r1 += var_70h;
0x0005ef2a add.w r0, r1, 8 | r0 += var_78h;
0x0005ef2e str r0, [sp, 0x38] | var_38h = r0;
0x0005ef30 add.w r0, r1, 0xd | r0 += var_dh;
0x0005ef34 str r0, [sp, 0x4c] | var_4ch = r0;
0x0005ef36 add r0, sp, 0x98 | r0 += var_98h;
0x0005ef38 vmov.i32 q4, 0 | __asm ("vmov.i32 q4, 0");
0x0005ef3c adds r0, 8 | r0 += 8;
0x0005ef3e add r7, sp, 0xc0 | r7 += var_c0h;
0x0005ef40 str r0, [sp, 0x3c] | var_3ch = r0;
0x0005ef42 add r0, sp, 0x158 | r0 += var_158h;
0x0005ef44 movs r2, 0 | r2 = 0;
0x0005ef46 adds r0, 4 | r0 += 4;
0x0005ef48 str r0, [sp, 0x44] | var_44h = r0;
| do {
0x0005ef4a cmp r2, 0x10 |
| if (r2 == 0x10) {
0x0005ef4c beq.w 0x60282 | goto label_14;
| }
0x0005ef50 ldr r5, [sp, 0x54] | r5 = var_54h;
0x0005ef52 str r2, [sp, 0x48] | var_48h = r2;
0x0005ef54 ldrb.w r0, [r5, 0x170] | r0 = *((r5 + 0x170));
| if (r0 == 0) {
0x0005ef58 cbz r0, 0x5ef88 | goto label_15;
| }
| label_1:
0x0005ef5a ldr r4, [sp, 0x54] | r4 = var_54h;
0x0005ef5c ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005ef5e mov r0, r4 | r0 = r4;
0x0005ef60 bl 0x5775c | r0 = fcn_0005775c (r0, r1);
0x0005ef64 mov r2, r0 | r2 = r0;
0x0005ef66 movs r0, 0 | r0 = 0;
| if (r2 == 0) {
0x0005ef68 cbnz r2, 0x5ef72 |
0x0005ef6a mov r8, r1 | r8 = r1;
0x0005ef6c cmp r1, 0 |
| if (r1 != 0) {
0x0005ef6e bne.w 0x60666 | goto label_16;
| }
| }
0x0005ef72 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0005ef74 add r7, sp, 0xc0 | r7 += var_c0h;
0x0005ef76 ldrb.w r1, [r4, 0xb7] | r1 = *((r4 + 0xb7));
0x0005ef7a adds r2, 1 | r2++;
0x0005ef7c strb.w r0, [r4, 0xb7] | *((r4 + 0xb7)) = r0;
0x0005ef80 cmp r1, 0 |
0x0005ef82 bne 0x5ef4a |
| } while (r1 != 0);
0x0005ef84 b.w 0x60388 | goto label_17;
| label_15:
0x0005ef88 add.w sl, r5, 0x158 | sl = r5 + 0x158;
0x0005ef8c addw sb, r5, 0x165 | __asm ("addw sb, r5, aav.0x000000ff");
| label_0:
0x0005ef90 ldrd r0, r1, [r5, 0x58] | __asm ("ldrd r0, r1, [r5, 0x58]");
0x0005ef94 orrs.w r2, r0, r1 | r2 = r0 | r1;
| if (r2 == r0) {
0x0005ef98 beq.w 0x5f130 | goto label_18;
| }
0x0005ef9c ldrb.w r2, [r5, 0x164] | r2 = *((r5 + 0x164));
0x0005efa0 mov r7, r5 | r7 = r5;
0x0005efa2 vldr d16, [sl] | __asm ("vldr d16, [sl]");
0x0005efa6 mov r3, r5 | r3 = r5;
0x0005efa8 movs r5, 3 | r5 = 3;
0x0005efaa ldr.w ip, [sb] | ip = *(sb);
0x0005efae ldr.w r4, [sl, 8] | r4 = *((sl + 8));
0x0005efb2 cmp r2, 3 |
0x0005efb4 strb.w r5, [r3, 0x164] | *((r3 + 0x164)) = r5;
0x0005efb8 mov.w r5, 0 | r5 = 0;
0x0005efbc ldr.w r6, [sb, 3] | r6 = *((sb + 3));
0x0005efc0 str.w r5, [sb] | __asm ("str.w r5, [sb]");
0x0005efc4 str.w ip, [sp, 0x58] | __asm ("str.w ip, [var_58h]");
0x0005efc8 str.w r5, [sb, 3] | __asm ("str.w r5, [sb, 3]");
0x0005efcc strd r5, r5, [sl] | __asm ("strd r5, r5, [sl]");
0x0005efd0 str.w r5, [sl, 8] | __asm ("str.w r5, [sl, 8]");
0x0005efd4 str r4, [sp, 0x68] | var_68h = r4;
0x0005efd6 str.w r6, [sp, 0x5b] | __asm ("str.w r6, [var_5bh]");
0x0005efda vstr d16, [sp, 0x60] | __asm ("vstr d16, [sp, 0x60]");
| if (r2 == 3) {
0x0005efde beq.w 0x5f7ca | goto label_19;
| }
0x0005efe2 ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0005efe4 subs r0, 1 | r0--;
0x0005efe6 vldr d16, [sp, 0x60] | __asm ("vldr d16, [sp, 0x60]");
0x0005efea cmp r0, 2 |
0x0005efec ldr r1, [sp, 0x58] | r1 = var_58h;
0x0005efee mov r5, r7 | r5 = r7;
0x0005eff0 ldr r6, [sp, 0x68] | r6 = var_68h;
0x0005eff2 ldr.w r3, [sp, 0x5b] | r3 = var_5bh;
0x0005eff6 str r1, [r4] | *(r4) = r1;
0x0005eff8 str.w r3, [r4, 3] | __asm ("str.w r3, [r4, 3]");
0x0005effc str r6, [sp, 0x78] | var_78h = r6;
0x0005effe strb.w r2, [sp, 0x7c] | var_7ch = r2;
0x0005f002 vstr d16, [sp, 0x70] | __asm ("vstr d16, [sp, 0x70]");
| if (r0 >= 2) {
0x0005f006 bhs.w 0x5f63c | goto label_3;
| }
0x0005f00a ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005f00c add r0, sp, 0x70 | r0 += var_70h;
0x0005f00e bl 0x1133a0 | fcn_001133a0 (r0, r1, r2);
0x0005f010 vst1.32 {d18[0]}, [r7], r0 | __asm ("vst1.32 {d18[0]}, [r7], r0");
0x0005f012 cmp r0, 0 |
| if (r0 != 0) {
0x0005f014 bne.w 0x5f800 | goto label_20;
| }
0x0005f016 strh r4, [r6, 0x1e] | *((r6 + 0x1e)) = r4;
0x0005f018 cmp r1, 0 |
| if (r1 == 0) {
0x0005f01a beq.w 0x5f14a | goto label_21;
| }
0x0005f01e ldr r7, [pc, 0x2b8] |
0x0005f020 str r1, [sp, 0x16c] | var_16ch = r1;
0x0005f022 add r7, pc | r7 = 0xbe300;
0x0005f024 ldr r0, [r7] | r0 = *(0xbe300);
0x0005f026 subs r0, 1 | r0--;
0x0005f028 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f02a blo.w 0x5f340 | goto label_22;
| }
0x0005f02e ldr r4, [pc, 0x2ac] |
0x0005f030 add r4, pc | r4 = 0xbe312;
0x0005f032 ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0005f034 cmp r1, 0 |
| if (r1 == 0) {
0x0005f036 beq.w 0x5f340 | goto label_22;
| }
0x0005f03a cmp r1, 1 |
| if (r1 == 1) {
0x0005f03c beq 0x5f046 | goto label_23;
| }
0x0005f03e cmp r1, 2 |
| if (r1 != 2) {
0x0005f040 bne.w 0x5f330 | goto label_24;
| }
0x0005f044 movs r1, 2 | r1 = 2;
| do {
| label_23:
0x0005f046 ldr r0, [r4] | r0 = *(r4);
0x0005f048 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005f04c cmp r0, 0 |
| if (r0 == 0) {
0x0005f04e beq.w 0x5f340 | goto label_22;
| }
0x0005f050 strh r7, [r6, 0xa] | *((r6 + 0xa)) = r7;
0x0005f052 ldr r0, [r4] | r0 = *(r4);
0x0005f054 add.w fp, sp, 0x88 |
0x0005f058 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005f05a cmp r2, 0 |
| if (r2 == 0) {
0x0005f05c beq.w 0x60776 | goto label_25;
| }
0x0005f060 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005f064 ldrd lr, r6, [r0, 0x34] | __asm ("ldrd lr, r6, [r0, 0x34]");
0x0005f068 ldr r1, [pc, 0x274] |
0x0005f06a ldr r3, [pc, 0x278] |
0x0005f06c add r1, pc | r1 = 0xbe350;
0x0005f06e add r3, pc | r3 = 0xbe358;
0x0005f070 mov r8, r1 | r8 = r1;
0x0005f072 ldr r1, [pc, 0x274] |
0x0005f074 strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005f078 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005f07c add r1, pc | r1 = 0xbe36a;
0x0005f07e str r1, [sp, 0x40] | var_40h = r1;
0x0005f080 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005f082 str r1, [sp, 0x9c] | var_9ch = r1;
0x0005f084 add r1, sp, 0x110 | r1 += var_110h;
0x0005f086 str r1, [sp, 0x98] | var_98h = r1;
0x0005f088 add r1, sp, 0x98 | r1 += var_98h;
0x0005f08a str r1, [sp, 0x88] | var_88h = r1;
0x0005f08c movs r1, 0 | r1 = 0;
0x0005f08e str r2, [sp, 0x90] | var_90h = r2;
0x0005f090 movs r2, 1 | r2 = 1;
0x0005f092 str r1, [sp, 0x110] | var_110h = r1;
0x0005f094 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005f096 strd r1, r3, [sp, 0xcc] | __asm ("strd r1, r3, [var_d0h]");
0x0005f09a strd r2, r1, [sp, 0xc4] | __asm ("strd r2, r1, [var_c8h]");
0x0005f09e ldr r1, [sp, 0x40] | r1 = var_40h;
0x0005f0a0 str r1, [sp, 0xc0] | var_c0h = r1;
0x0005f0a2 mov r1, fp | r1 = fp;
0x0005f0a4 strd lr, r6, [sp, 0x11c] | __asm ("strd lr, r6, [var_120h]");
0x0005f0a8 mov r6, r3 | r6 = r3;
0x0005f0aa str r2, [sp, 0x8c] | var_8ch = r2;
0x0005f0ac str.w r8, [sp, 0xa0] | __asm ("str.w r8, [var_a0h]");
0x0005f0b0 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005f0b4 ldr r0, [pc, 0x234] |
0x0005f0b6 add r0, pc | r0 = 0xbe3a6;
0x0005f0b8 ldrb r0, [r0] | r0 = *(r0);
0x0005f0ba cmp r0, 0 |
| if (r0 != 0) {
0x0005f0bc bne.w 0x5f42a | goto label_26;
| }
0x0005f0c0 ldr r0, [pc, 0x22c] |
0x0005f0c2 add r0, pc |
0x0005f0c4 ldr r0, [r0] | r0 = *(0xbe3b6);
0x0005f0c6 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f0c8 blo.w 0x5f42a | goto label_26;
| }
0x0005f0cc str r7, [sp, 0x40] | var_40h = r7;
0x0005f0ce ldr r7, [r4] | r7 = *(r4);
0x0005f0d0 ldr r0, [pc, 0x220] |
0x0005f0d2 ldr r1, [pc, 0x224] |
0x0005f0d4 ldr r2, [pc, 0x224] |
0x0005f0d6 add r0, pc |
0x0005f0d8 ldr r3, [pc, 0x224] |
0x0005f0da add r1, pc | r1 = 0xbe3d8;
0x0005f0dc ldr.w ip, [r7, 8] | ip = *((r7 + 8));
0x0005f0e0 add r2, pc | r2 = 0xbe3e0;
0x0005f0e2 ldr r4, [r7, 0xc] | r4 = *((r7 + 0xc));
0x0005f0e4 add r3, pc | r3 = 0xbe3e8;
0x0005f0e6 str r7, [sp, 0x34] | var_34h = r7;
0x0005f0e8 movs r7, 5 | r7 = 5;
0x0005f0ea str r4, [sp, 0x160] | var_160h = r4;
0x0005f0ec strd r7, ip, [sp, 0x158] | __asm ("strd r7, ip, [var_158h]");
0x0005f0f0 ldr r0, [r0] | r0 = *(0xbe3ce);
0x0005f0f2 dmb ish | __asm ("dmb ish");
0x0005f0f4 ldrh r3, [r3, 0x3a] | r3 = *((r3 + 0x3a));
0x0005f0f6 ldr.w fp, [r1] | fp = *(0xbe3d8);
0x0005f0fa ldr r1, [r2] | r1 = *(0xbe3e0);
0x0005f0fc cmp r0, 2 |
0x0005f0fe it ne |
| if (r0 == 2) {
0x0005f100 movne fp, r3 |
| }
0x0005f102 ldr.w r2, [fp, 0x10] | r2 = var_98h;
0x0005f106 it eq |
| if (r0 != 2) {
0x0005f108 moveq r6, r1 | r6 = r1;
| }
0x0005f10a add r1, sp, 0x158 | r1 += var_158h;
0x0005f10c mov r0, r6 | r0 = r6;
0x0005f10e blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005f110 cmp r0, 0 |
| if (r0 == 0) {
0x0005f112 beq.w 0x5f428 | goto label_27;
| }
0x0005f116 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005f118 mov r2, fp | r2 = fp;
0x0005f11a ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005f11e strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005f122 add r0, sp, 0x88 | r0 += var_88h;
0x0005f124 str r0, [sp, 8] | var_8h = r0;
0x0005f126 mov r1, r6 | r1 = r6;
0x0005f128 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005f12a bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005f12e b 0x5f428 | goto label_27;
| label_18:
0x0005f130 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005f132 mov r0, r5 | r0 = r5;
0x0005f134 bl 0x5b624 | r0 = fcn_0005b624 (r0, r1, r2, r3, r4, r5, r6);
0x0005f138 cmp r0, 0 |
| if (r0 != 0) {
0x0005f13a bne.w 0x5f81e | goto label_28;
| }
0x0005f13e mov r8, r1 | r8 = r1;
0x0005f140 cmp r1, 0 |
| if (r1 == 0) {
0x0005f142 beq.w 0x5f642 | goto label_29;
| }
0x0005f146 b.w 0x603b0 | goto label_10;
| label_21:
0x0005f14a ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005f14c add r0, sp, 0x158 | r0 += var_158h;
0x0005f14e mov r1, r5 | r1 = r5;
0x0005f150 bl 0x4e734 | fcn_0004e734 (r0, r1, r2);
0x0005f154 ldr r0, [sp, 0x158] | r0 = var_158h;
| if (r0 != 0) {
0x0005f156 cbz r0, 0x5f184 |
0x0005f158 cmp r0, 2 |
| if (r0 == 2) {
0x0005f15a beq.w 0x5f63c | goto label_3;
| }
0x0005f15e cmp r0, 3 |
| if (r0 == 3) {
0x0005f160 beq.w 0x5f800 | goto label_20;
| }
0x0005f164 movs r0, 0xb | r0 = 0xb;
0x0005f166 ldrd r8, r6, [sp, 0x15c] | __asm ("ldrd r8, r6, [var_160h]");
0x0005f16a bl 0x1106f0 | fcn_001106f0 (r0, r1);
0x0005f16e add r1, sp, 0xc0 | r1 += var_c0h;
0x0005f170 mov r4, r0 | r4 = r0;
0x0005f172 strd r8, r6, [sp, 0xc0] | __asm ("strd r8, r6, [var_c0h]");
0x0005f176 bl 0x1139f0 | fcn_001139f0 (r0, r1);
0x0005f17a add r0, sp, 0x70 | r0 += var_70h;
0x0005f17c mov r1, r4 | r1 = r4;
0x0005f17e bl 0x113660 | fcn_00113660 (r0, r1);
0x0005f180 invalid |
| }
0x0005f184 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0005f186 add r2, sp, 0xc0 | r2 += var_c0h;
0x0005f188 add r1, sp, 0x70 | r1 += var_70h;
0x0005f18a vld1.32 {d16, d17}, [r0] | __asm ("vld1.32 {d16, d17}, [r0]");
0x0005f18e add r0, sp, 0x88 | r0 += var_88h;
0x0005f190 vst1.64 {d16, d17}, [r2] | __asm ("vst1.64 {d16, d17}, [r2]");
0x0005f194 bl 0x113430 | fcn_00113430 (r0, r1);
0x0005f198 ldr r0, [sp, 0x94] | r0 = var_94h;
0x0005f19a cmp r0, 0 |
| if (r0 != 0) {
0x0005f19c beq.w 0x5f2b6 |
0x0005f1a0 add r0, sp, 0x88 | r0 += var_88h;
0x0005f1a2 add r1, sp, 0x98 | r1 += var_98h;
0x0005f1a4 vld1.64 {d16, d17}, [r0] | __asm ("vld1.64 {d16, d17}, [r0]");
0x0005f1a8 ldr r0, [r5, 0x58] | r0 = *((r5 + 0x58));
0x0005f1aa vst1.64 {d16, d17}, [r1] | __asm ("vst1.64 {d16, d17}, [r1]");
0x0005f1ae subs r0, 1 | r0--;
0x0005f1b0 cmp r0, 2 |
| if (r0 >= 2) {
0x0005f1b2 bhs.w 0x5f7bc | goto label_30;
| }
0x0005f1b6 ldr r0, [pc, 0x14c] |
0x0005f1b8 add r0, pc |
0x0005f1ba ldr r0, [r0] | r0 = *(0xbe4c2);
0x0005f1bc subs r0, 1 | r0--;
0x0005f1be cmp r0, 5 |
| if (r0 <= 5) {
0x0005f1c0 blo.w 0x5f6e0 | goto label_31;
| }
0x0005f1c4 ldr r6, [pc, 0x140] |
0x0005f1c6 add r6, pc | r6 = 0xbe4d2;
0x0005f1c8 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005f1ca cmp r1, 0 |
| if (r1 == 0) {
0x0005f1cc beq.w 0x5f6e0 | goto label_31;
| }
0x0005f1d0 cmp r1, 1 |
| if (r1 != 1) {
0x0005f1d2 beq 0x5f1dc |
0x0005f1d4 cmp r1, 2 |
| if (r1 != 2) {
0x0005f1d6 bne.w 0x5f6d0 | goto label_32;
| }
0x0005f1da movs r1, 2 | r1 = 2;
| }
| label_2:
0x0005f1dc ldr r0, [r6] | r0 = *(r6);
0x0005f1de bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005f1e2 cmp r0, 0 |
| if (r0 == 0) {
0x0005f1e4 beq.w 0x5f6e0 | goto label_31;
| }
0x0005f1e8 ldr r0, [r6] | r0 = *(r6);
0x0005f1ea ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005f1ec cmp r2, 0 |
| if (r2 == 0) {
0x0005f1ee beq.w 0x607d4 | goto label_33;
| }
0x0005f1f2 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005f1f6 ldrd lr, r3, [r0, 0x34] | __asm ("ldrd lr, r3, [r0, 0x34]");
0x0005f1fa ldr r1, [pc, 0x110] |
0x0005f1fc ldr r4, [pc, 0x110] |
0x0005f1fe add r1, pc | r1 = 0xbe510;
0x0005f200 ldr r7, [pc, 0x110] |
0x0005f202 add r4, pc | r4 = 0xbe516;
0x0005f204 strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005f208 mov r8, r1 | r8 = r1;
0x0005f20a add r1, sp, 0xc0 | r1 += var_c0h;
0x0005f20c str r1, [sp, 0xb8] | var_b8h = r1;
0x0005f20e add r1, sp, 0x110 | r1 += var_110h;
0x0005f210 str r1, [sp, 0xb4] | var_b4h = r1;
0x0005f212 add r1, sp, 0xb4 | r1 += var_b4h;
0x0005f214 str r1, [sp, 0xa8] | var_a8h = r1;
0x0005f216 movs r1, 0 | r1 = 0;
0x0005f218 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005f21c str r1, [sp, 0x110] | var_110h = r1;
0x0005f21e str r1, [sp, 0xd4] | var_d4h = r1;
0x0005f220 add r7, pc | r7 = 0xbe538;
0x0005f222 strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x0005f226 add r1, sp, 0xa8 | r1 += var_a8h;
0x0005f228 str r2, [sp, 0xb0] | var_b0h = r2;
0x0005f22a movs r2, 1 | r2 = 1;
0x0005f22c strd lr, r3, [sp, 0x11c] | __asm ("strd lr, r3, [var_120h]");
0x0005f230 mov fp, r4 |
0x0005f232 str r2, [sp, 0xac] | var_ach = r2;
0x0005f234 str.w r8, [sp, 0xbc] | __asm ("str.w r8, [var_bch]");
0x0005f238 str r4, [sp, 0xd0] | var_d0h = r4;
0x0005f23a strd r7, r2, [sp, 0xc0] | __asm ("strd r7, r2, [var_c0h]");
0x0005f23e bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005f242 ldr r0, [pc, 0xd4] |
0x0005f244 add r0, pc | r0 = 0xbe562;
0x0005f246 ldrb r0, [r0] | r0 = *(r0);
0x0005f248 cmp r0, 0 |
| if (r0 != 0) {
0x0005f24a bne.w 0x5f7b6 | goto label_34;
| }
0x0005f24e ldr r0, [pc, 0xcc] |
0x0005f250 add r0, pc |
0x0005f252 ldr r0, [r0] | r0 = *(0xbe572);
0x0005f254 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f256 blo.w 0x5f7b6 | goto label_34;
| }
0x0005f25a ldr.w r8, [r6] | r8 = *(r6);
0x0005f25e movs r7, 5 | r7 = 5;
0x0005f260 ldr r0, [pc, 0xbc] |
0x0005f262 mov r6, fp | r6 = fp;
0x0005f264 ldr r1, [pc, 0xbc] |
0x0005f266 ldr r2, [pc, 0xc0] |
0x0005f268 add r0, pc |
0x0005f26a ldr r3, [pc, 0xc0] |
0x0005f26c add r1, pc | r1 = 0xbe594;
0x0005f26e ldrd ip, r4, [r8, 8] | __asm ("ldrd ip, r4, [r8, 8]");
0x0005f272 add r2, pc | r2 = 0xbe5a0;
0x0005f274 str r7, [sp, 0x16c] | var_16ch = r7;
0x0005f276 add r3, pc | r3 = 0xbe5a8;
0x0005f278 strd ip, r4, [sp, 0x170] | __asm ("strd ip, r4, [var_174h]");
0x0005f27c mov r7, fp | r7 = fp;
0x0005f27e ldr r0, [r0] | r0 = *(0xbe58c);
0x0005f280 dmb ish | __asm ("dmb ish");
0x0005f284 ldr r6, [r1] | r6 = *(0xbe594);
0x0005f286 ldr r1, [r2] | r1 = *(0xbe5a0);
0x0005f288 cmp r0, 2 |
0x0005f28a it ne |
| if (r0 == 2) {
0x0005f28c movne r6, r3 | r6 = r3;
| }
0x0005f28e ldr r2, [r6, 0x10] | r2 = *(0xbe5a4);
0x0005f290 it eq |
| if (r0 != 2) {
0x0005f292 moveq r7, r1 | r7 = r1;
| }
0x0005f294 add r1, sp, 0x16c | r1 += var_16ch;
0x0005f296 mov r0, r7 | r0 = r7;
0x0005f298 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005f29a cmp r0, 0 |
| if (r0 == 0) {
0x0005f29c beq.w 0x5f7b6 | goto label_34;
| }
0x0005f2a0 ldr r1, [sp, 0x174] | r1 = var_174h;
0x0005f2a2 mov r2, r6 | r2 = r6;
0x0005f2a4 ldrd r3, r0, [sp, 0x16c] | __asm ("ldrd r3, r0, [var_16ch]");
0x0005f2a8 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005f2ac add r0, sp, 0xa8 | r0 += var_a8h;
0x0005f2ae str r0, [sp, 8] | var_8h = r0;
0x0005f2b0 mov r0, r8 | r0 = r8;
0x0005f2b2 mov r1, r7 | r1 = r7;
0x0005f2b4 b 0x5f7b2 | goto label_35;
| }
0x0005f2b6 ldrb.w r0, [r5, 0x164] | r0 = *((r5 + 0x164));
0x0005f2ba cmp r0, 3 |
0x0005f2bc itt ne |
| if (r0 == 3) {
0x0005f2be movne r0, sl | r0 = sl;
| }
| if (r0 != 3) {
0x0005f2c0 blne 0x495d0 | __asm ("blne fcn.000495d0");
| }
0x0005f2c4 add r0, sp, 0x70 | r0 += var_70h;
0x0005f2c6 mov r1, sl | r1 = sl;
0x0005f2c8 vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x0005f2cc vst1.64 {d16, d17}, [r1]! | __asm ("vst1.64 {d16, d17}, [r1]!");
0x0005f2d0 ldr r0, [r0] | r0 = *(r0);
0x0005f2d2 str r0, [r1] | *(r1) = r0;
0x0005f2d4 b 0x5f642 | goto label_29;
| label_24:
0x0005f330 ldr r0, [pc, 0x31c] |
0x0005f332 add r0, pc | r0 = 0xbe986;
0x0005f334 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005f338 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005f33a cmp r1, 0 |
0x0005f33c bne.w 0x5f046 |
| } while (r1 != 0);
| label_22:
0x0005f340 ldr r0, [pc, 0x310] |
0x0005f342 add r0, pc | r0 = 0xbe99a;
0x0005f344 ldrb r0, [r0] | r0 = *(r0);
0x0005f346 cmp r0, 0 |
| if (r0 == 0) {
0x0005f348 bne 0x5f42a |
0x0005f34a ldr r0, [pc, 0x30c] |
0x0005f34c add r0, pc |
0x0005f34e ldr r0, [r0] | r0 = *(0xbe9aa);
0x0005f350 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f352 blo 0x5f42a | goto label_26;
| }
0x0005f354 str r7, [sp, 0x40] | var_40h = r7;
0x0005f356 movs r7, 5 | r7 = 5;
0x0005f358 ldr r0, [pc, 0x300] |
0x0005f35a add r0, pc | r0 = 0xbe9ba;
0x0005f35c str r0, [sp, 0x34] | var_34h = r0;
0x0005f35e ldr.w r8, [r0] | r8 = *(0xbe9ba);
0x0005f362 ldr r0, [pc, 0x2fc] |
0x0005f364 ldr r1, [pc, 0x2fc] |
0x0005f366 ldr r2, [pc, 0x300] |
0x0005f368 add r0, pc |
0x0005f36a ldr r3, [pc, 0x300] |
0x0005f36c add r1, pc | r1 = 0xbe9d4;
0x0005f36e ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005f372 add r2, pc | r2 = 0xbe9e0;
0x0005f374 add r3, pc | r3 = 0xbe9e6;
0x0005f376 str r4, [sp, 0x90] | var_90h = r4;
0x0005f378 strd r7, r6, [sp, 0x88] | __asm ("strd r7, r6, [var_88h]");
0x0005f37c ldr r0, [r0] | r0 = *(0xbe9ce);
0x0005f37e ldr r7, [pc, 0x2f0] |
0x0005f380 dmb ish | __asm ("dmb ish");
0x0005f384 ldr.w fp, [r1] | fp = *(0xbe9d4);
0x0005f388 cmp r0, 2 |
0x0005f38a ldr r4, [r2] | r4 = *(0xbe9e0);
0x0005f38c it ne |
| if (r0 == 2) {
0x0005f38e movne fp, r3 |
| }
0x0005f390 ldr.w r2, [fp, 0x10] | r2 = var_98h;
0x0005f394 add r1, sp, 0x88 | r1 += var_88h;
0x0005f396 add r7, pc | r7 = 0xbea0c;
0x0005f398 it ne |
| if (r0 == 2) {
0x0005f39a movne r4, r7 | r4 = r7;
| }
0x0005f39c mov r0, r4 | r0 = r4;
0x0005f39e blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005f3a0 cmp r0, 0 |
| if (r0 != 0) {
0x0005f3a2 beq 0x5f428 |
0x0005f3a4 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005f3a6 mov lr, r7 | lr = r7;
0x0005f3a8 mov r7, sb | r7 = sb;
0x0005f3aa add.w sb, sp, 0x158 | sb += var_158h;
0x0005f3ae ldr r0, [r0] | r0 = *(r0);
0x0005f3b0 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005f3b2 cmp r1, 0 |
| if (r1 == 0) {
0x0005f3b4 beq.w 0x60776 | goto label_25;
| }
0x0005f3b8 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0005f3ba add.w ip, sp, 0x110 |
0x0005f3be str r2, [sp, 0x34] | var_34h = r2;
0x0005f3c0 ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0005f3c2 str r2, [sp, 0x30] | var_30h = r2;
0x0005f3c4 ldr r2, [sp, 0x90] | r2 = var_90h;
0x0005f3c6 str r2, [sp, 0x2c] | var_2ch = r2;
0x0005f3c8 ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x0005f3ca str r2, [sp, 0x20] | var_20h = r2;
0x0005f3cc ldrd r2, r6, [r0, 0x34] | __asm ("ldrd r2, r6, [r0, 0x34]");
0x0005f3d0 adds r0, 0x2c | r0 += 0x2c;
0x0005f3d2 ldr r3, [pc, 0x2a0] |
0x0005f3d4 add r3, pc | r3 = 0xbea4e;
0x0005f3d6 str r3, [sp, 0x24] | var_24h = r3;
0x0005f3d8 ldr r3, [pc, 0x29c] |
0x0005f3da str r0, [sp, 0xa0] | var_a0h = r0;
0x0005f3dc movs r0, 1 | r0 = 1;
0x0005f3de add r3, pc | r3 = 0xbea5a;
0x0005f3e0 str r3, [sp, 0x28] | var_28h = r3;
0x0005f3e2 add r3, sp, 0xc0 | r3 += var_c0h;
0x0005f3e4 str r3, [sp, 0x15c] | var_15ch = r3;
0x0005f3e6 add r3, sp, 0x118 | r3 += var_118h;
0x0005f3e8 str r0, [sp, 0x9c] | var_9ch = r0;
0x0005f3ea stm r3!, {r1, r2, r6} | *(r3!) = r1;
| *((r3! + 4)) = r2;
| *((r3! + 8)) = r6;
0x0005f3ec ldr r1, [sp, 0x20] | r1 = var_20h;
0x0005f3ee str r1, [sp, 0x114] | var_114h = r1;
0x0005f3f0 movs r1, 0 | r1 = 0;
0x0005f3f2 strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005f3f6 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0005f3f8 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005f3fa ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005f3fc str r0, [sp] | *(sp) = r0;
0x0005f3fe ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005f400 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005f402 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0005f404 str r0, [sp, 4] | var_4h = r0;
0x0005f406 add r0, sp, 0x98 | r0 += var_98h;
0x0005f408 str r2, [sp, 0x160] | var_160h = r2;
0x0005f40a mov r2, fp | r2 = fp;
0x0005f40c str r0, [sp, 8] | var_8h = r0;
0x0005f40e mov r0, r8 | r0 = r8;
0x0005f410 str r1, [sp, 0x110] | var_110h = r1;
0x0005f412 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005f414 strd r1, lr, [sp, 0xcc] | __asm ("strd r1, lr, [var_d0h]");
0x0005f418 mov r1, r4 | r1 = r4;
0x0005f41a str.w ip, [sp, 0x158] | __asm ("str.w ip, [var_158h]");
0x0005f41e str.w sb, [sp, 0x98] | __asm ("str.w sb, [var_98h]");
0x0005f422 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005f426 mov sb, r7 | sb = r7;
| }
| label_27:
0x0005f428 ldr r7, [sp, 0x40] | r7 = var_40h;
| }
| label_26:
0x0005f42a add r4, sp, 0xc0 | r4 += var_c0h;
0x0005f42c ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005f42e mov r1, r5 | r1 = r5;
0x0005f430 mov r0, r4 | r0 = r4;
0x0005f432 bl 0x4e734 | fcn_0004e734 (r0, r1, r2);
0x0005f436 mov r0, r4 | r0 = r4;
0x0005f438 bl 0x46458 | fcn_00046458 (r0);
0x0005f43c ldr r0, [r5, 0x58] | r0 = *((r5 + 0x58));
| if (r0 != 0) {
0x0005f43e cbz r0, 0x5f444 |
0x0005f440 cmp r0, 3 |
| if (r0 != 3) {
0x0005f442 bne 0x5f53a | goto label_36;
| }
| }
0x0005f444 ldr r0, [r7] | r0 = *(r7);
0x0005f446 subs r0, 1 | r0--;
0x0005f448 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f44a blo.w 0x5f550 | goto label_37;
| }
0x0005f44e ldr r6, [pc, 0x22c] |
0x0005f450 add r6, pc | r6 = 0xbead2;
0x0005f452 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005f454 cmp r1, 0 |
| if (r1 == 0) {
0x0005f456 beq 0x5f550 | goto label_37;
| }
0x0005f458 cmp r1, 1 |
| if (r1 == 1) {
0x0005f45a beq 0x5f462 | goto label_38;
| }
0x0005f45c cmp r1, 2 |
| if (r1 != 2) {
0x0005f45e bne 0x5f542 | goto label_39;
| }
0x0005f460 movs r1, 2 | r1 = 2;
| do {
| label_38:
0x0005f462 ldr r0, [r6] | r0 = *(r6);
0x0005f464 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005f468 cmp r0, 0 |
| if (r0 == 0) {
0x0005f46a beq 0x5f550 | goto label_37;
| }
0x0005f46c ldr r0, [r6] | r0 = *(r6);
0x0005f46e ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005f470 cmp r2, 0 |
| if (r2 == 0) {
0x0005f472 beq.w 0x60780 | goto label_40;
| }
0x0005f476 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005f47a ldrd lr, r3, [r0, 0x34] | __asm ("ldrd lr, r3, [r0, 0x34]");
0x0005f47e ldr r1, [pc, 0x200] |
0x0005f480 ldr r4, [pc, 0x200] |
0x0005f482 add r1, pc | r1 = 0xbeb08;
0x0005f484 ldr r7, [pc, 0x200] |
0x0005f486 add r4, pc | r4 = 0xbeb0e;
0x0005f488 strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005f48c mov r8, r1 | r8 = r1;
0x0005f48e add r1, sp, 0xc0 | r1 += var_c0h;
0x0005f490 str r1, [sp, 0x9c] | var_9ch = r1;
0x0005f492 add r1, sp, 0x110 | r1 += var_110h;
0x0005f494 str r1, [sp, 0x98] | var_98h = r1;
0x0005f496 add r1, sp, 0x98 | r1 += var_98h;
0x0005f498 str r1, [sp, 0x88] | var_88h = r1;
0x0005f49a movs r1, 0 | r1 = 0;
0x0005f49c add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005f4a0 str r1, [sp, 0x110] | var_110h = r1;
0x0005f4a2 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005f4a4 add r7, pc | r7 = 0xbeb30;
0x0005f4a6 strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x0005f4aa add r1, sp, 0x88 | r1 += var_88h;
0x0005f4ac str r2, [sp, 0x90] | var_90h = r2;
0x0005f4ae movs r2, 1 | r2 = 1;
0x0005f4b0 strd lr, r3, [sp, 0x11c] | __asm ("strd lr, r3, [var_120h]");
0x0005f4b4 mov fp, r4 |
0x0005f4b6 str r2, [sp, 0x8c] | var_8ch = r2;
0x0005f4b8 str.w r8, [sp, 0xa0] | __asm ("str.w r8, [var_a0h]");
0x0005f4bc str r4, [sp, 0xd0] | var_d0h = r4;
0x0005f4be strd r7, r2, [sp, 0xc0] | __asm ("strd r7, r2, [var_c0h]");
0x0005f4c2 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005f4c6 ldr r0, [pc, 0x1c4] |
0x0005f4c8 add r0, pc | r0 = 0xbeb5a;
0x0005f4ca ldrb r0, [r0] | r0 = *(r0);
0x0005f4cc cmp r0, 0 |
| if (r0 != 0) {
0x0005f4ce bne.w 0x5f636 | goto label_41;
| }
0x0005f4d2 ldr r0, [pc, 0x1bc] |
0x0005f4d4 add r0, pc |
0x0005f4d6 ldr r0, [r0] | r0 = *(0xbeb6a);
0x0005f4d8 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f4da blo.w 0x5f636 | goto label_41;
| }
0x0005f4de ldr.w r8, [r6] | r8 = *(r6);
0x0005f4e2 movs r7, 5 | r7 = 5;
0x0005f4e4 ldr r0, [pc, 0x1ac] |
0x0005f4e6 ldr r1, [pc, 0x1b0] |
0x0005f4e8 ldr r2, [pc, 0x1b0] |
0x0005f4ea add r0, pc |
0x0005f4ec ldr r3, [pc, 0x1b0] |
0x0005f4ee add r1, pc | r1 = 0xbeb8c;
0x0005f4f0 ldrd ip, r4, [r8, 8] | __asm ("ldrd ip, r4, [r8, 8]");
0x0005f4f4 add r2, pc | r2 = 0xbeb94;
0x0005f4f6 add r3, pc | r3 = 0xbeb9a;
0x0005f4f8 str r4, [sp, 0x160] | var_160h = r4;
0x0005f4fa strd r7, ip, [sp, 0x158] | __asm ("strd r7, ip, [var_158h]");
0x0005f4fe ldr r0, [r0] | r0 = *(0xbeb82);
0x0005f500 dmb ish | __asm ("dmb ish");
0x0005f504 ldr r6, [r1] | r6 = *(0xbeb8c);
0x0005f506 ldr r1, [r2] | r1 = *(0xbeb94);
0x0005f508 cmp r0, 2 |
0x0005f50a it ne |
| if (r0 == 2) {
0x0005f50c movne r6, r3 | r6 = r3;
| }
0x0005f50e ldr r2, [r6, 0x10] | r2 = *(0xbeb9c);
0x0005f510 it eq |
| if (r0 != 2) {
0x0005f512 moveq fp, r1 |
| }
0x0005f514 add r1, sp, 0x158 | r1 += var_158h;
0x0005f516 mov r0, fp | r0 = fp;
0x0005f518 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005f51a cmp r0, 0 |
| if (r0 == 0) {
0x0005f51c beq.w 0x5f636 | goto label_41;
| }
0x0005f520 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005f522 mov r2, r6 | r2 = r6;
0x0005f524 ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005f528 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005f52c add r0, sp, 0x88 | r0 += var_88h;
0x0005f52e str r0, [sp, 8] | var_8h = r0;
0x0005f530 mov r0, r8 | r0 = r8;
0x0005f532 mov r1, fp | r1 = fp;
0x0005f534 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005f536 ldc2l p0, c14, [r0, 0x1f4]! | __asm ("ldc2l p0, c14, aav.0x000000ff!");
| label_36:
0x0005f53a mov r0, r5 | r0 = r5;
0x0005f53c bl 0x114880 | fcn_00114880 (r0);
0x0005f540 b 0x5f636 | goto label_41;
| label_39:
0x0005f542 ldr r0, [pc, 0x160] |
0x0005f544 add r0, pc | r0 = 0xbebee;
0x0005f546 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005f54a uxtb r1, r0 | r1 = (int8_t) r0;
0x0005f54c cmp r1, 0 |
0x0005f54e bne 0x5f462 |
| } while (r1 != 0);
| label_37:
0x0005f550 ldr r0, [pc, 0x154] |
0x0005f552 add r0, pc | r0 = 0xbebfe;
0x0005f554 ldrb r0, [r0] | r0 = *(r0);
0x0005f556 cmp r0, 0 |
| if (r0 == 0) {
0x0005f558 bne 0x5f636 |
0x0005f55a ldr r0, [pc, 0x150] |
0x0005f55c add r0, pc |
0x0005f55e ldr r0, [r0] | r0 = *(0xbec0e);
0x0005f560 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f562 blo 0x5f636 | goto label_41;
| }
0x0005f564 ldr r0, [pc, 0x148] |
0x0005f566 movs r7, 5 | r7 = 5;
0x0005f568 add r0, pc | r0 = 0xbec1c;
0x0005f56a str r0, [sp, 0x40] | var_40h = r0;
0x0005f56c ldr.w r8, [r0] | r8 = *(0xbec1c);
0x0005f570 ldr r0, [pc, 0x140] |
0x0005f572 ldr r1, [pc, 0x144] |
0x0005f574 ldr r2, [pc, 0x144] |
0x0005f576 add r0, pc |
0x0005f578 ldr r3, [pc, 0x144] |
0x0005f57a add r1, pc | r1 = 0xbec38;
0x0005f57c ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005f580 add r2, pc | r2 = 0xbec40;
0x0005f582 add r3, pc | r3 = 0xbec46;
0x0005f584 str r4, [sp, 0x90] | var_90h = r4;
0x0005f586 strd r7, r6, [sp, 0x88] | __asm ("strd r7, r6, [var_88h]");
0x0005f58a ldr r0, [r0] | r0 = *(0xbec2e);
0x0005f58c ldr r7, [pc, 0x134] |
0x0005f58e dmb ish | __asm ("dmb ish");
0x0005f592 ldr r6, [r1] | r6 = *(0xbec38);
0x0005f594 cmp r0, 2 |
0x0005f596 ldr r4, [r2] | r4 = *(0xbec40);
0x0005f598 it ne |
| if (r0 == 2) {
0x0005f59a movne r6, r3 | r6 = r3;
| }
0x0005f59c ldr r2, [r6, 0x10] | r2 = *(0xbec48);
0x0005f59e add r1, sp, 0x88 | r1 += var_88h;
0x0005f5a0 add r7, pc | r7 = 0xbec68;
0x0005f5a2 it ne |
| if (r0 == 2) {
0x0005f5a4 movne r4, r7 | r4 = r7;
| }
0x0005f5a6 mov r0, r4 | r0 = r4;
0x0005f5a8 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005f5aa cmp r0, 0 |
| if (r0 == 0) {
0x0005f5ac beq 0x5f636 | goto label_41;
| }
0x0005f5ae ldr r0, [sp, 0x40] | r0 = var_40h;
0x0005f5b0 str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
0x0005f5b4 add.w sb, sp, 0x158 | sb += var_158h;
0x0005f5b8 ldr r0, [r0] | r0 = *(r0);
0x0005f5ba ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005f5bc cmp r1, 0 |
| if (r1 == 0) {
0x0005f5be beq.w 0x60780 | goto label_40;
| }
0x0005f5c2 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0005f5c4 add.w lr, sp, 0x110 | lr += var_110h;
0x0005f5c8 str r2, [sp, 0x40] | var_40h = r2;
0x0005f5ca ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0005f5cc str r2, [sp, 0x30] | var_30h = r2;
0x0005f5ce ldr r2, [sp, 0x90] | r2 = var_90h;
0x0005f5d0 str r2, [sp, 0x2c] | var_2ch = r2;
0x0005f5d2 ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x0005f5d4 str r2, [sp, 0x24] | var_24h = r2;
0x0005f5d6 ldrd ip, r2, [r0, 0x34] | __asm ("ldrd ip, r2, [r0, 0x34]");
0x0005f5da adds r0, 0x2c | r0 += 0x2c;
0x0005f5dc ldr r3, [pc, 0xe8] |
0x0005f5de add r3, pc | r3 = 0xbecaa;
0x0005f5e0 mov fp, r3 |
0x0005f5e2 ldr r3, [pc, 0xe8] |
0x0005f5e4 strd r1, ip, [sp, 0x118] | __asm ("strd r1, ip, [var_118h]");
0x0005f5e8 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005f5ea add r3, pc | r3 = 0xbecbc;
0x0005f5ec str r3, [sp, 0x28] | var_28h = r3;
0x0005f5ee add r3, sp, 0xc0 | r3 += var_c0h;
0x0005f5f0 str r1, [sp, 0x114] | var_114h = r1;
0x0005f5f2 movs r1, 0 | r1 = 0;
0x0005f5f4 str r0, [sp, 0xa0] | var_a0h = r0;
0x0005f5f6 movs r0, 1 | r0 = 1;
0x0005f5f8 str r0, [sp, 0x9c] | var_9ch = r0;
0x0005f5fa strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005f5fe ldr r0, [sp, 0x28] | r0 = var_28h;
0x0005f600 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005f602 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005f604 str r3, [sp, 0x15c] | var_15ch = r3;
0x0005f606 str r0, [sp] | *(sp) = r0;
0x0005f608 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005f60a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0005f60c str r0, [sp, 4] | var_4h = r0;
0x0005f60e add r0, sp, 0x98 | r0 += var_98h;
0x0005f610 str r2, [sp, 0x120] | var_120h = r2;
0x0005f612 mov r2, r6 | r2 = r6;
0x0005f614 str r0, [sp, 8] | var_8h = r0;
0x0005f616 mov r0, r8 | r0 = r8;
0x0005f618 str r1, [sp, 0x110] | var_110h = r1;
0x0005f61a str r1, [sp, 0xd4] | var_d4h = r1;
0x0005f61c strd r1, r7, [sp, 0xcc] | __asm ("strd r1, r7, [var_d0h]");
0x0005f620 mov r1, r4 | r1 = r4;
0x0005f622 str.w lr, [sp, 0x158] | __asm ("str.w lr, [var_158h]");
0x0005f626 str.w sb, [sp, 0x98] | __asm ("str.w sb, [var_98h]");
0x0005f62a str.w fp, [sp, 0x160] | __asm ("str.w fp, [var_160h]");
0x0005f62e bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005f632 ldr.w sb, [sp, 0x34] | sb = var_34h;
| }
| label_41:
0x0005f636 add r0, sp, 0x16c | r0 += var_16ch;
0x0005f638 bl 0x48934 | fcn_00048934 (r0);
| label_3:
0x0005f63c add r0, sp, 0x70 | r0 += var_70h;
0x0005f63e bl 0x495d0 | fcn_000495d0 (r0, r1);
| label_29:
0x0005f642 ldrb.w r0, [r5, 0x170] | r0 = *((r5 + 0x170));
0x0005f646 cmp r0, 0 |
| if (r0 == 0) {
0x0005f648 beq.w 0x5ef90 | goto label_0;
| }
0x0005f64c b 0x5ef5a | goto label_1;
| label_32:
0x0005f6d0 ldr r0, [pc, 0x328] |
0x0005f6d2 add r0, pc | r0 = 0xbf0d2;
0x0005f6d4 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005f6d8 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005f6da cmp r1, 0 |
| if (r1 != 0) {
0x0005f6dc bne.w 0x5f1dc | goto label_2;
| }
| label_31:
0x0005f6e0 ldr r0, [pc, 0x31c] |
0x0005f6e2 add r0, pc | r0 = 0xbf0e6;
0x0005f6e4 ldrb r0, [r0] | r0 = *(r0);
0x0005f6e6 cmp r0, 0 |
| if (r0 == 0) {
0x0005f6e8 bne 0x5f7b6 |
0x0005f6ea ldr r0, [pc, 0x318] |
0x0005f6ec add r0, pc |
0x0005f6ee ldr r0, [r0] | r0 = *(0xbf0f6);
0x0005f6f0 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f6f2 blo 0x5f7b6 | goto label_34;
| }
0x0005f6f4 ldr r0, [pc, 0x310] |
0x0005f6f6 movs r7, 5 | r7 = 5;
0x0005f6f8 add r0, pc | r0 = 0xbf104;
0x0005f6fa str r0, [sp, 0x40] | var_40h = r0;
0x0005f6fc ldr.w r8, [r0] | r8 = *(0xbf104);
0x0005f700 ldr r0, [pc, 0x308] |
0x0005f702 ldr r1, [pc, 0x30c] |
0x0005f704 ldr r2, [pc, 0x30c] |
0x0005f706 add r0, pc |
0x0005f708 ldr r3, [pc, 0x30c] |
0x0005f70a add r1, pc | r1 = 0xbf120;
0x0005f70c ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005f710 add r2, pc | r2 = 0xbf128;
0x0005f712 add r3, pc | r3 = 0xbf12e;
0x0005f714 str r4, [sp, 0xb0] | var_b0h = r4;
0x0005f716 strd r7, r6, [sp, 0xa8] | __asm ("strd r7, r6, [var_a8h]");
0x0005f71a ldr r0, [r0] | r0 = *(0xbf116);
0x0005f71c ldr r7, [pc, 0x2fc] |
0x0005f71e dmb ish | __asm ("dmb ish");
0x0005f722 ldr r6, [r1] | r6 = *(0xbf120);
0x0005f724 cmp r0, 2 |
0x0005f726 ldr r4, [r2] | r4 = *(0xbf128);
0x0005f728 it ne |
| if (r0 == 2) {
0x0005f72a movne r6, r3 | r6 = r3;
| }
0x0005f72c ldr r2, [r6, 0x10] | r2 = *(0xbf130);
0x0005f72e add r1, sp, 0xa8 | r1 += var_a8h;
0x0005f730 add r7, pc | r7 = 0xbf150;
0x0005f732 it ne |
| if (r0 == 2) {
0x0005f734 movne r4, r7 | r4 = r7;
| }
0x0005f736 mov r0, r4 | r0 = r4;
0x0005f738 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 == 0) {
0x0005f73a cbz r0, 0x5f7b6 | goto label_34;
| }
0x0005f73c ldr r0, [sp, 0x40] | r0 = var_40h;
0x0005f73e ldr r0, [r0] | r0 = *(r0);
0x0005f740 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x0005f742 cmp r1, 0 |
| if (r1 == 0) {
0x0005f744 beq.w 0x607d4 | goto label_33;
| }
0x0005f748 ldr r2, [sp, 0xa8] | r2 = var_a8h;
0x0005f74a add.w ip, sp, 0x110 |
0x0005f74e str r2, [sp, 0x40] | var_40h = r2;
0x0005f750 ldr r2, [sp, 0xac] | r2 = var_ach;
0x0005f752 str r2, [sp, 0x34] | var_34h = r2;
0x0005f754 ldr r2, [sp, 0xb0] | r2 = var_b0h;
0x0005f756 str r2, [sp, 0x30] | var_30h = r2;
0x0005f758 ldr.w lr, [r0, 0x2c] |
0x0005f75c ldrd fp, r2, [r0, 0x34] | __asm ("ldrd fp, r2, [r0, 0x34]");
0x0005f760 adds r0, 0x2c | r0 += 0x2c;
0x0005f762 ldr r3, [pc, 0x2bc] |
0x0005f764 add r3, pc | r3 = 0xbf18a;
0x0005f766 str r3, [sp, 0x28] | var_28h = r3;
0x0005f768 ldr r3, [pc, 0x2b8] |
0x0005f76a strd lr, r1, [sp, 0x114] | __asm ("strd lr, r1, [var_114h]");
0x0005f76e movs r1, 0 | r1 = 0;
0x0005f770 add r3, pc | r3 = 0xbf198;
0x0005f772 str r3, [sp, 0x2c] | var_2ch = r3;
0x0005f774 str r0, [sp, 0xbc] | var_bch = r0;
0x0005f776 movs r0, 1 | r0 = 1;
0x0005f778 str r0, [sp, 0xb8] | var_b8h = r0;
0x0005f77a add r3, sp, 0xc0 | r3 += var_c0h;
0x0005f77c strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x0005f780 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005f782 str r0, [sp, 0xc0] | var_c0h = r0;
0x0005f784 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005f786 str r0, [sp] | *(sp) = r0;
0x0005f788 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005f78a str r3, [sp, 0x170] | var_170h = r3;
0x0005f78c add r3, sp, 0x16c | r3 += var_16ch;
0x0005f78e strd fp, r2, [sp, 0x11c] | __asm ("strd fp, r2, [var_120h]");
0x0005f792 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0005f794 str r0, [sp, 4] | var_4h = r0;
0x0005f796 add r0, sp, 0xb4 | r0 += var_b4h;
0x0005f798 str r3, [sp, 0xb4] | var_b4h = r3;
0x0005f79a str r2, [sp, 0x174] | var_174h = r2;
0x0005f79c mov r2, r6 | r2 = r6;
0x0005f79e str r0, [sp, 8] | var_8h = r0;
0x0005f7a0 mov r0, r8 | r0 = r8;
0x0005f7a2 str.w ip, [sp, 0x16c] | __asm ("str.w ip, [var_16ch]");
0x0005f7a6 str r1, [sp, 0x110] | var_110h = r1;
0x0005f7a8 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005f7aa strd r1, r7, [sp, 0xcc] | __asm ("strd r1, r7, [var_d0h]");
0x0005f7ae mov r1, r4 | r1 = r4;
0x0005f7b0 ldr r3, [sp, 0x40] | r3 = var_40h;
| label_35:
0x0005f7b2 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_34:
0x0005f7b6 mov r0, r5 | r0 = r5;
0x0005f7b8 bl 0x114880 | fcn_00114880 (r0);
| label_30:
0x0005f7bc ldr r0, [sp, 0xa4] | r0 = var_a4h;
0x0005f7be ldrd r1, r2, [sp, 0x98] | __asm ("ldrd r1, r2, [var_98h]");
0x0005f7c2 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0005f7c4 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0005f7c6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005f7c8 b 0x5f63c | goto label_3;
| label_19:
0x0005f7ca eor r0, r0, 4 | r0 ^= 4;
0x0005f7ce mov r5, r7 | r5 = r7;
0x0005f7d0 orrs r0, r1 | r0 |= r1;
| if (r0 != r1) {
0x0005f7d2 beq 0x5f81e |
0x0005f7d4 ldrb.w r0, [r5, 0xac] | r0 = *((r5 + 0xac));
| if (r0 != 0) {
0x0005f7d8 cbnz r0, 0x5f81e | goto label_28;
| }
0x0005f7da ldr.w r0, [r5, 0xd4] | r0 = *((r5 + 0xd4));
| if (r0 != 0) {
0x0005f7de cbnz r0, 0x5f81e | goto label_28;
| }
0x0005f7e0 add r7, sp, 0xc0 | r7 += var_c0h;
0x0005f7e2 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005f7e4 mov r1, r5 | r1 = r5;
0x0005f7e6 mov r0, r7 | r0 = r7;
0x0005f7e8 bl 0x4e478 | fcn_0004e478 (r0, r1, r2);
0x0005f7ec ldr r0, [sp, 0xc0] | r0 = var_c0h;
0x0005f7ee cmp r0, 2 |
| if (r0 == 2) {
0x0005f7f0 beq 0x5f81e | goto label_28;
| }
0x0005f7f2 ldr r4, [sp, 0xc4] | r4 = var_c4h;
0x0005f7f4 cmp r0, 0 |
| if (r0 != 0) {
0x0005f7f6 bne.w 0x603c4 | goto label_42;
| }
| if (r4 != 0) {
0x0005f7fa cbnz r4, 0x5f81e | goto label_28;
| }
0x0005f7fc b.w 0x60464 | goto label_43;
| label_20:
0x0005f800 ldrb.w r0, [r5, 0x164] | r0 = *((r5 + 0x164));
0x0005f804 cmp r0, 3 |
0x0005f806 itt ne |
| if (r0 == 3) {
0x0005f808 movne r0, sl | r0 = sl;
| }
| if (r0 != 3) {
0x0005f80a blne 0x495d0 | __asm ("blne fcn.000495d0");
| }
0x0005f80e add r0, sp, 0x70 | r0 += var_70h;
0x0005f810 vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x0005f814 vst1.64 {d16, d17}, [sl]! | __asm ("vst1.64 {d16, d17}, [sl]!");
0x0005f818 ldr r0, [r0] | r0 = *(r0);
0x0005f81a str.w r0, [sl] | __asm ("str.w r0, [sl]");
| }
| label_28:
0x0005f81e ldrb.w r0, [r5, 0x170] | r0 = *((r5 + 0x170));
0x0005f822 cmp r0, 0 |
| if (r0 != 0) {
0x0005f824 bne.w 0x5ef5a | goto label_1;
| }
0x0005f828 add.w r0, r5, 0x78 | r0 = r5 + 0x78;
0x0005f82c add.w sl, r5, 0x70 | sl = r5 + 0x70;
0x0005f830 add.w sb, r5, 0xec | sb = r5 + 0xec;
0x0005f834 str r0, [sp, 0x2c] | var_2ch = r0;
0x0005f836 add.w r0, r5, 0x118 | r0 = r5 + 0x118;
0x0005f838 strb r4, [r1, 2] | *((r1 + 2)) = r4;
0x0005f83a str r0, [sp, 0x28] | var_28h = r0;
0x0005f83c add.w r0, r5, 0x100 | r0 = r5 + 0x100;
0x0005f840 str r0, [sp, 0x40] | var_40h = r0;
0x0005f842 strd sb, sl, [sp, 0x30] | __asm ("strd sb, sl, [var_30h]");
| label_7:
0x0005f846 ldr.w r0, [r5, 0x16c] | r0 = *((r5 + 0x16c));
0x0005f84a ldr r0, [r0] | r0 = *(r0);
0x0005f84c cmp r0, 0 |
| if (r0 == 0) {
0x0005f84e beq.w 0x5fa58 | goto label_44;
| }
| label_4:
0x0005f852 ldrb.w r0, [r5, 0x114] | r0 = *((r5 + 0x114));
| if (r0 == 0) {
0x0005f856 cbnz r0, 0x5f864 |
0x0005f858 mov r0, sb | r0 = sb;
0x0005f85a bl 0x4c5d0 | fcn_0004c5d0 (r0, r1);
0x0005f85c cdp2 p8, 0xb, c2, c9, c0, 0 | __asm ("cdp2 p8, 0xb, c2, c9, c0, 0");
| if (r0 == 0) {
0x0005f860 beq.w 0x5fb8e | goto label_45;
| }
| }
0x0005f864 ldr.w r7, [r5, 0x16c] | r7 = *((r5 + 0x16c));
0x0005f868 ldr r4, [r7] | r4 = *(r7);
0x0005f86a cmp r4, 0 |
0x0005f86c it ne |
| if (r4 != 0) {
0x0005f86e movne r4, r7 | r4 = r7;
| goto label_46;
| }
| if (r4 == 0) {
| label_46:
0x0005f870 beq.w 0x5ef5a | goto label_1;
| }
0x0005f874 ldrd r0, r1, [r5, 0x70] | __asm ("ldrd r0, r1, [r5, 0x70]");
0x0005f878 subs r0, 3 | r0 -= 3;
0x0005f87a sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005f87e rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005f882 mov.w r2, 0 | r2 = 0;
0x0005f886 sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
0x0005f888 lsls r1, r0, 4 | r1 = r0 << 4;
| if (r1 > r0) {
0x0005f88a blo.w 0x5f9ac |
0x0005f88c strh r7, [r1, 4] | *((r1 + 4)) = r7;
0x0005f88e cmp r0, 1 |
| if (r0 == 1) {
0x0005f890 beq.w 0x5f9ac | goto label_47;
| }
0x0005f894 ldr r0, [pc, 0x190] |
0x0005f896 add.w r8, sp, 0xc0 | r8 += var_c0h;
0x0005f89a add r0, pc |
0x0005f89c ldr r0, [r0] | r0 = *(0xbf2c6);
0x0005f89e subs r0, 1 | r0--;
0x0005f8a0 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f8a2 blo.w 0x5feba | goto label_48;
| }
0x0005f8a6 ldr r6, [pc, 0x184] |
0x0005f8a8 add r6, pc | r6 = 0xbf2da;
0x0005f8aa ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005f8ac cmp r1, 0 |
| if (r1 == 0) {
0x0005f8ae beq.w 0x5feba | goto label_48;
| }
0x0005f8b2 cmp r1, 1 |
| if (r1 != 1) {
0x0005f8b4 beq 0x5f8be |
0x0005f8b6 cmp r1, 2 |
| if (r1 != 2) {
0x0005f8b8 bne.w 0x5feaa | goto label_49;
| }
0x0005f8bc movs r1, 2 | r1 = 2;
| }
| label_5:
0x0005f8be ldr r0, [r6] | r0 = *(r6);
0x0005f8c0 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005f8c2 smmls r8, sl, r0, r2 | __asm ("smmls r8, sl, r0, r2");
0x0005f8c4 cmp r0, 0 |
| if (r0 == 0) {
0x0005f8c6 beq.w 0x5feba | goto label_48;
| }
0x0005f8c8 strh r0, [r7, 0x16] | *((r7 + 0x16)) = r0;
0x0005f8ca mov sb, r6 | sb = r6;
0x0005f8cc ldr r6, [r6] | r6 = *(r6);
0x0005f8ce add.w fp, sp, 0x88 |
0x0005f8d2 ldr r0, [r6, 0x30] | r0 = *((r6 + 0x30));
0x0005f8d4 cmp r0, 0 |
| if (r0 == 0) {
0x0005f8d6 beq.w 0x6078a | goto label_50;
| }
0x0005f8da ldrd r2, r3, [r6, 0x34] | __asm ("ldrd r2, r3, [r6, 0x34]");
0x0005f8de mov sl, r5 | sl = r5;
0x0005f8e0 ldr r1, [r6, 0x2c] | r1 = *((r6 + 0x2c));
0x0005f8e2 movs r5, 0 | r5 = 0;
0x0005f8e4 strd r2, r3, [sp, 0x11c] | __asm ("strd r2, r3, [var_120h]");
0x0005f8e8 strd r1, r0, [sp, 0x114] | __asm ("strd r1, r0, [var_114h]");
0x0005f8ec str r5, [sp, 0x110] | var_110h = r5;
0x0005f8ee ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
0x0005f8f2 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0005f8f4 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005f8f6 ldr r1, [pc, 0x138] |
0x0005f8f8 ldr r2, [pc, 0x138] |
0x0005f8fa ldr r3, [pc, 0x13c] |
0x0005f8fc add r1, pc | r1 = 0xbf332;
0x0005f8fe strb.w r0, [sp, 0x16c] | var_16ch = r0;
0x0005f902 add r0, sp, 0x16c | r0 += var_16ch;
0x0005f904 str r0, [sp, 0x88] | var_88h = r0;
0x0005f906 add r0, sp, 0x110 | r0 += var_110h;
0x0005f908 str r0, [sp, 0x70] | var_70h = r0;
0x0005f90a add.w r0, r6, 0x2c | r0 = r6 + 0x2c;
0x0005f90e str r1, [sp, 0x8c] | var_8ch = r1;
0x0005f910 movs r1, 1 | r1 = 1;
0x0005f912 add r2, pc | r2 = 0xbf34a;
0x0005f914 strd r1, r0, [sp, 0x9c] | __asm ("strd r1, r0, [var_a0h]");
0x0005f918 strd fp, r1, [sp, 0xd0] | __asm ("strd fp, r1, [var_d0h]");
0x0005f91c add r3, pc | r3 = 0xbf35a;
0x0005f91e strd r2, r1, [sp, 0xc0] | __asm ("strd r2, r1, [var_c0h]");
0x0005f922 add r1, sp, 0x70 | r1 += var_70h;
0x0005f924 ldr.w r0, [sb] | r0 = *(sb);
0x0005f928 str r1, [sp, 0x98] | var_98h = r1;
0x0005f92a add r1, sp, 0x98 | r1 += var_98h;
0x0005f92c strd r5, r5, [sp, 0xc8] | __asm ("strd r5, r5, [var_cch]");
0x0005f930 strd r8, r3, [sp, 0x74] | __asm ("strd r8, r3, [var_78h]");
0x0005f934 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005f938 ldr r0, [pc, 0x100] |
0x0005f93a add r0, pc | r0 = 0xbf37a;
0x0005f93c ldrb r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x0005f93e cbnz r0, 0x5f9a4 |
0x0005f940 ldr r0, [pc, 0xfc] |
0x0005f942 add r0, pc |
0x0005f944 ldr r0, [r0] | r0 = *(0xbf386);
0x0005f946 cmp r0, 5 |
| if (r0 <= 5) {
0x0005f948 blo 0x5f9a4 | goto label_51;
| }
0x0005f94a ldr.w r8, [sb] | r8 = *(sb);
0x0005f94e movs r1, 5 | r1 = 5;
0x0005f950 ldr r0, [pc, 0xf0] |
0x0005f952 ldr r3, [pc, 0xf4] |
0x0005f954 ldr r2, [pc, 0xf4] |
0x0005f956 add r0, pc |
0x0005f958 ldr r5, [pc, 0xf4] |
0x0005f95a add r3, pc | r3 = 0xbf3a8;
0x0005f95c ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0005f960 add r2, pc | r2 = 0xbf3b0;
0x0005f962 add r5, pc | r5 = 0xbf3b6;
0x0005f964 str r4, [sp, 0x160] | var_160h = r4;
0x0005f966 strd r1, r6, [sp, 0x158] | __asm ("strd r1, r6, [var_158h]");
0x0005f96a ldr r0, [r0] | r0 = *(0xbf39e);
0x0005f96c ldr r1, [pc, 0xe4] |
0x0005f96e dmb ish | __asm ("dmb ish");
0x0005f972 ldr r6, [r3] | r6 = *(0xbf3a8);
0x0005f974 cmp r0, 2 |
0x0005f976 ldr r4, [r2] | r4 = *(0xbf3b0);
0x0005f978 it ne |
| if (r0 == 2) {
0x0005f97a movne r6, r5 | r6 = r5;
| }
0x0005f97c add r1, pc | r1 = 0xbf3d4;
0x0005f97e ldr r2, [r6, 0x10] | r2 = *(0xbf3b8);
0x0005f980 it ne |
| if (r0 == 2) {
0x0005f982 movne r4, r1 | r4 = r1;
| }
0x0005f984 add r1, sp, 0x158 | r1 += var_158h;
0x0005f986 mov r0, r4 | r0 = r4;
0x0005f988 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 == 0) {
0x0005f98a cbz r0, 0x5f9a4 | goto label_51;
| }
0x0005f98c ldr r1, [sp, 0x160] | r1 = var_160h;
0x0005f98e mov r2, r6 | r2 = r6;
0x0005f990 ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0005f994 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005f998 add r0, sp, 0x98 | r0 += var_98h;
0x0005f99a str r0, [sp, 8] | var_8h = r0;
0x0005f99c mov r0, r8 | r0 = r8;
0x0005f99e mov r1, r4 | r1 = r4;
0x0005f9a0 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_51:
0x0005f9a4 mov r5, sl | r5 = sl;
0x0005f9a6 ldrd sb, sl, [sp, 0x30] | __asm ("ldrd sb, sl, [var_30h]");
0x0005f9aa b 0x6014e | goto label_52;
| }
| label_47:
0x0005f9ac ldrd r1, r0, [r4] | __asm ("ldrd r1, r0, [r4]");
0x0005f9b0 add.w r8, sp, 0xc0 | r8 += var_c0h;
0x0005f9b4 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0005f9b6 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005f9b8 mov r0, r8 | r0 = r8;
0x0005f9ba blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005f9bc ldr r0, [sp, 0xc0] | r0 = var_c0h;
0x0005f9be cmp r0, 3 |
| if (r0 == 3) {
0x0005f9c0 beq.w 0x5ef5a | goto label_1;
| }
0x0005f9c4 mov r0, r8 | r0 = r8;
0x0005f9c6 add r1, sp, 0x158 | r1 += var_158h;
0x0005f9c8 vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x0005f9cc vst1.64 {d16, d17}, [r1]! | __asm ("vst1.64 {d16, d17}, [r1]!");
0x0005f9d0 ldr r2, [sp, 0x158] | r2 = var_158h;
0x0005f9d2 ldr r0, [r0] | r0 = *(r0);
0x0005f9d4 cmp r2, 2 |
0x0005f9d6 str r0, [r1] | *(r1) = r0;
| if (r2 != 2) {
0x0005f9d8 bne.w 0x5fb1a | goto label_53;
| }
0x0005f9dc mov r0, r5 | r0 = r5;
0x0005f9de bl 0x510c4 | r0 = fcn_000510c4 (r0);
0x0005f9e2 mov r8, r0 | r8 = r0;
0x0005f9e4 ldr r0, [sp, 0x158] | r0 = var_158h;
0x0005f9e6 cmp.w r8, 0 |
| if (r8 != 0) {
0x0005f9ea bne.w 0x6038e | goto label_54;
| }
0x0005f9ee cmp r0, 2 |
| if (r0 == 2) {
0x0005f9f0 beq.w 0x6014e | goto label_52;
| }
0x0005f9f4 add r0, sp, 0x158 | r0 += var_158h;
0x0005f9f6 bl 0x4ab30 | fcn_0004ab30 (r0);
0x0005f9fa b 0x6014e | goto label_52;
| label_44:
0x0005fa58 ldrd r0, r1, [r5, 0x70] | __asm ("ldrd r0, r1, [r5, 0x70]");
0x0005fa5c subs r0, 3 | r0 -= 3;
0x0005fa5e sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005fa62 rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005fa66 mov.w r2, 0 | r2 = 0;
0x0005fa6a sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r0 <= 3) {
0x0005fa6e blo.w 0x5f852 | goto label_4;
| }
0x0005fa72 cmp r0, 0 |
| if (r0 != 0) {
0x0005fa74 bne.w 0x5f852 | goto label_4;
| }
0x0005fa78 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0005fa7a bl 0x6cb58 | r0 = fcn_0006cb58 (r0, r1);
0x0005fa7e cmp r0, 0 |
| if (r0 != 0) {
0x0005fa80 bne.w 0x5f852 | goto label_4;
| }
0x0005fa84 ldr.w r0, [r5, 0x150] | r0 = *((r5 + 0x150));
0x0005fa88 ldrd r0, r1, [r0] | __asm ("ldrd r0, r1, [r0]");
0x0005fa8c eor r0, r0, 2 | r0 ^= 2;
0x0005fa90 orrs r0, r1 | r0 |= r1;
| if (r0 == r1) {
0x0005fa92 beq.w 0x5f852 | goto label_4;
| }
0x0005fa96 add r6, sp, 0xc0 | r6 += var_c0h;
0x0005fa98 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0005fa9a ldr r2, [sp, 0x50] | r2 = var_50h;
0x0005fa9c mov r0, r6 | r0 = r6;
0x0005fa9e bl 0x39958 | fcn_00039958 (r0, r1, r2);
0x0005faa2 ldrd r0, r1, [sp, 0xc0] | __asm ("ldrd r0, r1, [var_c0h]");
0x0005faa6 eor r2, r0, 4 | r2 = r0 ^ 4;
0x0005faaa orrs r2, r1 | r2 |= r1;
| if (r2 == r1) {
0x0005faac beq.w 0x5ef5a | goto label_1;
| }
0x0005fab0 eor r0, r0, 3 | r0 ^= 3;
0x0005fab4 orrs r0, r1 | r0 |= r1;
| if (r0 == r1) {
0x0005fab6 beq.w 0x6026c | goto label_55;
| }
0x0005faba ldrd r8, fp, [sp, 0x108] | __asm ("ldrd r8, fp, [var_108h]");
0x0005fabe ldr.w r1, [fp, 0x14] | r1 = var_9ch;
0x0005fac2 mov r0, r8 | r0 = r8;
0x0005fac4 blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0005fac6 cmp r0, 0 |
| if (r0 == 0) {
0x0005fac8 beq.w 0x5fe46 | goto label_56;
| }
0x0005facc ldr.w r4, [r5, 0x16c] | r4 = *((r5 + 0x16c));
0x0005fad0 mov r7, r5 | r7 = r5;
0x0005fad2 ldr r0, [r4] | r0 = *(r4);
| if (r0 != 0) {
0x0005fad4 cbz r0, 0x5fadc |
0x0005fad6 mov r0, r4 | r0 = r4;
0x0005fad8 bl 0x4448c | fcn_0004448c (r0);
| }
0x0005fadc movs r5, 0 | r5 = 0;
0x0005fade mov r1, r6 | r1 = r6;
0x0005fae0 strd r5, r5, [r4] | __asm ("strd r5, r5, [r4]");
0x0005fae4 add r4, sp, 0x110 | r4 += var_110h;
0x0005fae6 movs r2, 0x48 | r2 = 0x48;
0x0005fae8 mov r0, r4 | r0 = r4;
0x0005faea blx 0x26b48 | fcn_00026b48 ();
0x0005faee mov r0, r7 | r0 = r7;
0x0005faf0 mov r1, r4 | r1 = r4;
0x0005faf2 movs r2, 2 | r2 = 2;
0x0005faf4 movs r3, 0 | r3 = 0;
0x0005faf6 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x0005fafa mov r5, r7 | r5 = r7;
0x0005fafc bl 0x4dd64 | fcn_0004dd64 (r0, r1, r2, r3, r4, r5, r6);
0x0005fb00 ldr.w r1, [fp] | r1 = *(fp);
0x0005fb04 mov r0, r8 | r0 = r8;
0x0005fb06 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0005fb08 ldr.w r0, [fp, 4] | r0 = var_8ch;
0x0005fb0c cmp r0, 0 |
| if (r0 == 0) {
0x0005fb0e beq.w 0x6015e | goto label_9;
| }
0x0005fb12 mov r0, r8 | r0 = r8;
0x0005fb14 blx 0x26a3c | fcn_00026a3c ();
0x0005fb18 b 0x6015e | goto label_9;
| label_53:
0x0005fb1a ldrd r0, r1, [sp, 0x15c] | __asm ("ldrd r0, r1, [var_160h]");
0x0005fb1e cmp r2, 0 |
| if (r2 != 0) {
0x0005fb20 bne.w 0x6039a | goto label_57;
| }
0x0005fb24 add.w ip, sp, 0x74 |
0x0005fb28 ldrd r2, r3, [sp, 0x164] | __asm ("ldrd r2, r3, [var_164h]");
0x0005fb2c stm.w ip, {r1, r2, r3} | *(ip) = r1;
| *((ip + 4)) = r2;
| *((ip + 8)) = r3;
0x0005fb30 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0005fb32 str r0, [sp, 0x70] | var_70h = r0;
0x0005fb34 ldr r0, [r4] | r0 = *(r4);
0x0005fb36 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0005fb38 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005fb3a ldr r1, [sp, 0x74] | r1 = var_74h;
| if (r0 == 0) {
0x0005fb3c cbz r0, 0x5fba8 | goto label_58;
| }
0x0005fb3e cmp r1, 0 |
| if (r1 == 0) {
0x0005fb40 beq 0x5fc2e | goto label_59;
| }
0x0005fb42 ldrd r0, r1, [sl] | __asm ("ldrd r0, r1, [sl]");
0x0005fb46 subs r0, 3 | r0 -= 3;
0x0005fb48 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005fb4c rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005fb50 mov.w r2, 0 | r2 = 0;
0x0005fb54 sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r0 > 3) {
0x0005fb58 blo 0x5fb60 |
0x0005fb5a cmp r0, 1 |
| if (r0 != 1) {
0x0005fb5c bne.w 0x6079a | goto label_60;
| }
| }
0x0005fb60 add r0, sp, 0x70 | r0 += var_70h;
0x0005fb62 mov r1, r8 | r1 = r8;
0x0005fb64 vld1.64 {d16, d17}, [r0] | __asm ("vld1.64 {d16, d17}, [r0]");
0x0005fb68 mov r0, sl | r0 = sl;
0x0005fb6a mov r2, sb | r2 = sb;
0x0005fb6c vst1.64 {d16, d17}, [r8] | __asm ("vst1.64 {d16, d17}, [r8]");
0x0005fb70 bl 0x55940 | fcn_00055940 (r0, r1, r2, r3, r4, r5, r6);
0x0005fb74 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0005fb76 cmp r0, 0 |
0x0005fb78 mov.w r0, 6 | r0 = 6;
0x0005fb7c vst1.64 {d8, d9}, [r1] | __asm ("vst1.64 {d8, d9}, [r1]");
0x0005fb80 mov.w r1, 0 | r1 = 0;
0x0005fb84 it ne |
| if (r0 == 0) {
0x0005fb86 movne r0, 5 | r0 = 5;
| }
0x0005fb88 strd r0, r1, [r5, 0x70] | __asm ("strd r0, r1, [r5, 0x70]");
0x0005fb8c b 0x6014e | goto label_52;
| label_45:
0x0005fb8e ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005fb90 mov r0, r5 | r0 = r5;
0x0005fb92 bl 0x5775c | r0 = fcn_0005775c (r0, r1);
0x0005fb96 cmp r0, 0 |
| if (r0 != 0) {
0x0005fb98 bne.w 0x5ef5a | goto label_1;
| }
0x0005fb9c mov r8, r1 | r8 = r1;
0x0005fb9e cmp r1, 0 |
| if (r1 == 0) {
0x0005fba0 beq.w 0x6015e | goto label_9;
| }
0x0005fba4 b.w 0x603b0 | goto label_10;
| label_58:
0x0005fba8 cmp r1, 0 |
| if (r1 != 0) {
0x0005fbaa beq.w 0x5fd3c |
0x0005fbae ldrd r0, r1, [sl] | __asm ("ldrd r0, r1, [sl]");
0x0005fbb2 subs r0, 3 | r0 -= 3;
0x0005fbb4 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0005fbb8 rsbs.w r2, r0, 3 | r2 = 3 - r0;
0x0005fbbc mov.w r2, 0 | r2 = 0;
0x0005fbc0 sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r0 > 3) {
0x0005fbc4 blo 0x5fbcc |
0x0005fbc6 cmp r0, 1 |
| if (r0 != 1) {
0x0005fbc8 bne.w 0x607a8 | goto label_61;
| }
| }
0x0005fbcc add r0, sp, 0x70 | r0 += var_70h;
0x0005fbce add r4, sp, 0x110 | r4 += var_110h;
0x0005fbd0 vld1.64 {d16, d17}, [r0] | __asm ("vld1.64 {d16, d17}, [r0]");
0x0005fbd4 mov r1, sl | r1 = sl;
0x0005fbd6 mov r0, r4 | r0 = r4;
0x0005fbd8 mov r2, r8 | r2 = r8;
0x0005fbda vst1.64 {d16, d17}, [r8] | __asm ("vst1.64 {d16, d17}, [r8]");
0x0005fbde bl 0x56f34 | fcn_00056f34 (r0, r1, r2, r3);
0x0005fbe2 mov r1, r4 | r1 = r4;
0x0005fbe4 mov r0, r8 | r0 = r8;
0x0005fbe6 ldm r1!, {r2, r3, r4, r6, r7} | r2 = *(r1!);
| r3 = *((r1! + 4));
| r4 = *((r1! + 8));
| r6 = *((r1! + 12));
| r7 = *((r1! + 16));
0x0005fbe8 stm r0!, {r2, r3, r4, r6, r7} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r6;
| *((r0! + 16)) = r7;
0x0005fbea ldm.w r1, {r2, r3, r4, r6, r7} | r2 = *(r1);
| r3 = *((r1 + 4));
| r4 = *((r1 + 8));
| r6 = *((r1 + 12));
| r7 = *((r1 + 16));
0x0005fbee mov r1, r8 | r1 = r8;
0x0005fbf0 stm r0!, {r2, r3, r4, r6, r7} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r6;
| *((r0! + 16)) = r7;
0x0005fbf2 mov r0, sb | r0 = sb;
0x0005fbf4 bl 0x4c664 | fcn_0004c664 (r0, r1, r2, r3, r4);
0x0005fbf8 ldrd r0, r1, [r5, 0x70] | __asm ("ldrd r0, r1, [r5, 0x70]");
0x0005fbfc eor r0, r0, 1 | r0 ^= 1;
0x0005fc00 orrs r0, r1 | r0 |= r1;
0x0005fc02 itt eq |
| if (r0 == r1) {
0x0005fc04 ldrdeq r0, r1, [r5, 0x78] | __asm ("ldrdeq r0, r1, [r5, 0x78]");
| }
| if (r0 == r1) {
0x0005fc08 orrs.w r0, r0, r1 | r0 |= r1;
| }
| if (r0 != r0) {
0x0005fc0c bne.w 0x6015e | goto label_9;
| }
0x0005fc10 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0005fc12 ldrb.w r0, [r5, 0x80] | r0 = *((r5 + 0x80));
0x0005fc16 vst1.64 {d8, d9}, [r1] | __asm ("vst1.64 {d8, d9}, [r1]");
0x0005fc1a cmp r0, 0 |
0x0005fc1c mov.w r0, 6 | r0 = 6;
0x0005fc20 mov.w r1, 0 | r1 = 0;
0x0005fc24 it eq |
| if (r0 != 0) {
0x0005fc26 moveq r0, 5 | r0 = 5;
| }
0x0005fc28 strd r0, r1, [r5, 0x70] | __asm ("strd r0, r1, [r5, 0x70]");
0x0005fc2c b 0x6015e | goto label_9;
| label_59:
0x0005fc2e ldr r0, [pc, 0x388] |
0x0005fc30 add r0, pc |
0x0005fc32 ldr r0, [r0] | r0 = *(0xbfbee);
0x0005fc34 subs r0, 1 | r0--;
0x0005fc36 cmp r0, 5 |
| if (r0 <= 5) {
0x0005fc38 blo.w 0x60050 | goto label_62;
| }
0x0005fc3c ldr r6, [pc, 0x37c] |
0x0005fc3e add r6, pc | r6 = 0xbfbfe;
0x0005fc40 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005fc42 cmp r1, 0 |
| if (r1 == 0) {
0x0005fc44 beq.w 0x60050 | goto label_62;
| }
0x0005fc48 cmp r1, 1 |
| if (r1 != 1) {
0x0005fc4a beq 0x5fc54 |
0x0005fc4c cmp r1, 2 |
| if (r1 != 2) {
0x0005fc4e bne.w 0x60040 | goto label_63;
| }
0x0005fc52 movs r1, 2 | r1 = 2;
| }
| label_6:
0x0005fc54 ldr r0, [r6] | r0 = *(r6);
0x0005fc56 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005fc5a cmp r0, 0 |
| if (r0 == 0) {
0x0005fc5c beq.w 0x60050 | goto label_62;
| }
0x0005fc60 ldr r0, [r6] | r0 = *(r6);
0x0005fc62 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005fc64 cmp r2, 0 |
| if (r2 == 0) {
0x0005fc66 beq.w 0x607f2 | goto label_64;
| }
0x0005fc6a ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005fc6e ldrd lr, r3, [r0, 0x34] | __asm ("ldrd lr, r3, [r0, 0x34]");
0x0005fc72 ldr r1, [pc, 0x34c] |
0x0005fc74 ldr r4, [pc, 0x34c] |
0x0005fc76 add r1, pc | r1 = 0xbfc3c;
0x0005fc78 add r4, pc | r4 = 0xbfc40;
0x0005fc7a mov fp, r1 |
0x0005fc7c ldr r1, [pc, 0x348] |
0x0005fc7e strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005fc82 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005fc86 add r1, pc | r1 = 0xbfc52;
0x0005fc88 str r1, [sp, 0x24] | var_24h = r1;
0x0005fc8a add r1, sp, 0x110 | r1 += var_110h;
0x0005fc8c str r1, [sp, 0x88] | var_88h = r1;
0x0005fc8e add r1, sp, 0x88 | r1 += var_88h;
0x0005fc90 str r1, [sp, 0x16c] | var_16ch = r1;
0x0005fc92 movs r1, 0 | r1 = 0;
0x0005fc94 str r2, [sp, 0x174] | var_174h = r2;
0x0005fc96 movs r2, 1 | r2 = 1;
0x0005fc98 str r1, [sp, 0x110] | var_110h = r1;
0x0005fc9a str r1, [sp, 0xd4] | var_d4h = r1;
0x0005fc9c strd r1, r4, [sp, 0xcc] | __asm ("strd r1, r4, [var_d0h]");
0x0005fca0 strd r2, r1, [sp, 0xc4] | __asm ("strd r2, r1, [var_c8h]");
0x0005fca4 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005fca6 str r1, [sp, 0xc0] | var_c0h = r1;
0x0005fca8 add r1, sp, 0x16c | r1 += var_16ch;
0x0005fcaa str.w r8, [sp, 0x8c] | __asm ("str.w r8, [var_8ch]");
0x0005fcae strd lr, r3, [sp, 0x11c] | __asm ("strd lr, r3, [var_120h]");
0x0005fcb2 str r2, [sp, 0x170] | var_170h = r2;
0x0005fcb4 str.w fp, [sp, 0x90] | __asm ("str.w fp, [var_90h]");
0x0005fcb8 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005fcbc ldr r0, [pc, 0x30c] |
0x0005fcbe add r0, pc | r0 = 0xbfc8e;
0x0005fcc0 ldrb r0, [r0] | r0 = *(r0);
0x0005fcc2 cmp r0, 0 |
| if (r0 != 0) {
0x0005fcc4 bne.w 0x60136 | goto label_65;
| }
0x0005fcc8 ldr r0, [pc, 0x304] |
0x0005fcca add r0, pc |
0x0005fccc ldr r0, [r0] | r0 = *(0xbfc9e);
0x0005fcce cmp r0, 5 |
| if (r0 <= 5) {
0x0005fcd0 blo.w 0x60136 | goto label_65;
| }
0x0005fcd4 ldr.w r8, [r6] | r8 = *(r6);
0x0005fcd8 mov r6, r4 | r6 = r4;
0x0005fcda ldr r0, [pc, 0x2f8] |
0x0005fcdc ldr r1, [pc, 0x2f8] |
0x0005fcde ldr r2, [pc, 0x2fc] |
0x0005fce0 add r0, pc |
0x0005fce2 ldr r3, [pc, 0x2fc] |
0x0005fce4 add r1, pc | r1 = 0xbfcc0;
0x0005fce6 ldr.w ip, [r8, 8] | ip = *((r8 + 8));
0x0005fcea add r2, pc | r2 = 0xbfccc;
0x0005fcec add r3, pc | r3 = 0xbfcd2;
0x0005fcee ldr.w r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x0005fcf2 str r4, [sp, 0xa0] | var_a0h = r4;
0x0005fcf4 mov r4, r6 | r4 = r6;
0x0005fcf6 mov lr, r3 | lr = r3;
0x0005fcf8 movs r3, 5 | r3 = 5;
0x0005fcfa str r3, [sp, 0x98] | var_98h = r3;
0x0005fcfc str.w ip, [sp, 0x9c] | __asm ("str.w ip, [var_9ch]");
0x0005fd00 ldr r0, [r0] | r0 = *(0xbfcba);
0x0005fd02 dmb ish | __asm ("dmb ish");
0x0005fd06 ldr r6, [r1] | r6 = *(0xbfcc0);
0x0005fd08 ldr r1, [r2] | r1 = *(0xbfccc);
0x0005fd0a cmp r0, 2 |
0x0005fd0c it ne |
| if (r0 == 2) {
0x0005fd0e movne r6, lr | r6 = lr;
| }
0x0005fd10 ldr r2, [r6, 0x10] | r2 = *(0xbfcd0);
0x0005fd12 it eq |
| if (r0 != 2) {
0x0005fd14 moveq r4, r1 | r4 = r1;
| }
0x0005fd16 add r1, sp, 0x98 | r1 += var_98h;
0x0005fd18 mov r0, r4 | r0 = r4;
0x0005fd1a blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005fd1c cmp r0, 0 |
| if (r0 == 0) {
0x0005fd1e beq.w 0x60136 | goto label_65;
| }
0x0005fd22 ldr r1, [sp, 0xa0] | r1 = var_a0h;
0x0005fd24 mov r2, r6 | r2 = r6;
0x0005fd26 ldrd r3, r0, [sp, 0x98] | __asm ("ldrd r3, r0, [var_98h]");
0x0005fd2a strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005fd2e add r0, sp, 0x16c | r0 += var_16ch;
0x0005fd30 str r0, [sp, 8] | var_8h = r0;
0x0005fd32 mov r0, r8 | r0 = r8;
0x0005fd34 mov r1, r4 | r1 = r4;
0x0005fd36 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005fd3a b 0x60136 | goto label_65;
| }
0x0005fd3c ldr r0, [pc, 0x2a4] |
0x0005fd3e add r0, pc |
0x0005fd40 ldr r0, [r0] | r0 = *(0xbfd26);
0x0005fd42 subs r0, 1 | r0--;
0x0005fd44 cmp r0, 5 |
| if (r0 <= 5) {
0x0005fd46 blo.w 0x6017c | goto label_66;
| }
0x0005fd4a ldr r6, [pc, 0x29c] |
0x0005fd4c add r6, pc | r6 = 0xbfd3a;
0x0005fd4e ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x0005fd50 cmp r1, 0 |
| if (r1 == 0) {
0x0005fd52 beq.w 0x6017c | goto label_66;
| }
0x0005fd56 cmp r1, 1 |
| if (r1 != 1) {
0x0005fd58 beq 0x5fd62 |
0x0005fd5a cmp r1, 2 |
| if (r1 != 2) {
0x0005fd5c bne.w 0x6016c | goto label_67;
| }
0x0005fd60 movs r1, 2 | r1 = 2;
| }
| label_8:
0x0005fd62 ldr r0, [r6] | r0 = *(r6);
0x0005fd64 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x0005fd68 cmp r0, 0 |
| if (r0 == 0) {
0x0005fd6a beq.w 0x6017c | goto label_66;
| }
0x0005fd6e ldr r0, [r6] | r0 = *(r6);
0x0005fd70 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0005fd72 cmp r2, 0 |
| if (r2 == 0) {
0x0005fd74 beq.w 0x607e8 | goto label_68;
| }
0x0005fd78 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x0005fd7c ldrd r7, r3, [r0, 0x34] | __asm ("ldrd r7, r3, [r0, 0x34]");
0x0005fd80 ldr r1, [pc, 0x268] |
0x0005fd82 ldr r4, [pc, 0x26c] |
0x0005fd84 add r1, pc | r1 = 0xbfd74;
0x0005fd86 add r4, pc | r4 = 0xbfd7c;
0x0005fd88 mov fp, r1 |
0x0005fd8a ldr r1, [pc, 0x268] |
0x0005fd8c strd ip, r2, [sp, 0x114] | __asm ("strd ip, r2, [var_114h]");
0x0005fd90 add.w r2, r0, 0x2c | r2 = r0 + 0x2c;
0x0005fd94 add r1, pc | r1 = 0xbfd8e;
0x0005fd96 str r2, [sp, 0x174] | var_174h = r2;
0x0005fd98 movs r2, 1 | r2 = 1;
0x0005fd9a str.w r8, [sp, 0x8c] | __asm ("str.w r8, [var_8ch]");
0x0005fd9e mov lr, r1 | lr = r1;
0x0005fda0 add r1, sp, 0x110 | r1 += var_110h;
0x0005fda2 str r1, [sp, 0x88] | var_88h = r1;
0x0005fda4 add r1, sp, 0x88 | r1 += var_88h;
0x0005fda6 str r1, [sp, 0x16c] | var_16ch = r1;
0x0005fda8 movs r1, 0 | r1 = 0;
0x0005fdaa str r1, [sp, 0x110] | var_110h = r1;
0x0005fdac strd r4, r1, [sp, 0xd0] | __asm ("strd r4, r1, [var_d0h]");
0x0005fdb0 strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x0005fdb4 add r1, sp, 0x16c | r1 += var_16ch;
0x0005fdb6 strd r7, r3, [sp, 0x11c] | __asm ("strd r7, r3, [var_120h]");
0x0005fdba str r2, [sp, 0x170] | var_170h = r2;
0x0005fdbc str.w fp, [sp, 0x90] | __asm ("str.w fp, [var_90h]");
0x0005fdc0 strd lr, r2, [sp, 0xc0] | __asm ("strd lr, r2, [var_c0h]");
0x0005fdc2 b 0x60226 | void (*0x60226)() ();
0x0005fdc4 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x0005fdc8 ldr r0, [pc, 0x22c] |
0x0005fdca add r0, pc | r0 = 0xbfdc6;
0x0005fdcc ldrb r0, [r0] | r0 = *(r0);
0x0005fdce cmp r0, 0 |
| if (r0 != 0) {
0x0005fdd0 bne.w 0x6025e | goto label_69;
| }
0x0005fdd4 ldr r0, [pc, 0x224] |
0x0005fdd6 add r0, pc |
0x0005fdd8 ldr r0, [r0] | r0 = *(0xbfdd6);
0x0005fdda cmp r0, 5 |
| if (r0 <= 5) {
0x0005fddc blo.w 0x6025e | goto label_69;
| }
0x0005fde0 ldr.w r8, [r6] | r8 = *(r6);
0x0005fde4 mov r6, r4 | r6 = r4;
0x0005fde6 ldr r0, [pc, 0x218] |
0x0005fde8 ldr r1, [pc, 0x218] |
0x0005fdea ldr r2, [pc, 0x21c] |
0x0005fdec add r0, pc |
0x0005fdee ldr r3, [pc, 0x21c] |
0x0005fdf0 add r1, pc | r1 = 0xbfdf8;
0x0005fdf2 ldr.w r7, [r8, 8] | r7 = *((r8 + 8));
0x0005fdf6 add r2, pc | r2 = 0xbfe04;
0x0005fdf8 add r3, pc | r3 = 0xbfe0a;
0x0005fdfa ldr.w r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x0005fdfe str r4, [sp, 0xa0] | var_a0h = r4;
0x0005fe00 mov r4, r6 | r4 = r6;
0x0005fe02 mov ip, r3 |
0x0005fe04 movs r3, 5 | r3 = 5;
0x0005fe06 str r3, [sp, 0x98] | var_98h = r3;
0x0005fe08 str r7, [sp, 0x9c] | var_9ch = r7;
0x0005fe0a ldr r0, [r0] | r0 = *(0xbfdf2);
0x0005fe0c dmb ish | __asm ("dmb ish");
0x0005fe10 ldr r7, [r1] | r7 = *(0xbfdf8);
0x0005fe12 ldr r1, [r2] | r1 = *(0xbfe04);
0x0005fe14 cmp r0, 2 |
0x0005fe16 it ne |
| if (r0 == 2) {
0x0005fe18 movne r7, ip | r7 = ip;
| }
0x0005fe1a ldr r2, [r7, 0x10] | r2 = *(0xbfe08);
0x0005fe1c it eq |
| if (r0 != 2) {
0x0005fe1e moveq r4, r1 | r4 = r1;
| }
0x0005fe20 add r1, sp, 0x98 | r1 += var_98h;
0x0005fe22 mov r0, r4 | r0 = r4;
0x0005fe24 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005fe26 cmp r0, 0 |
| if (r0 == 0) {
0x0005fe28 beq.w 0x6025e | goto label_69;
| }
0x0005fe2c ldr r1, [sp, 0xa0] | r1 = var_a0h;
0x0005fe2e mov r2, r7 | r2 = r7;
0x0005fe30 ldrd r3, r0, [sp, 0x98] | __asm ("ldrd r3, r0, [var_98h]");
0x0005fe34 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0005fe38 add r0, sp, 0x16c | r0 += var_16ch;
0x0005fe3a str r0, [sp, 8] | var_8h = r0;
0x0005fe3c mov r0, r8 | r0 = r8;
0x0005fe3e mov r1, r4 | r1 = r4;
0x0005fe40 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005fe44 b 0x6025e | goto label_69;
| label_56:
0x0005fe46 ldr.w r2, [fp, 0x18] | r2 = var_a0h;
0x0005fe4a add r0, sp, 0x110 | r0 += var_110h;
0x0005fe4c mov r1, r8 | r1 = r8;
0x0005fe4e mov sb, sl | sb = sl;
0x0005fe50 blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005fe52 add r7, sp, 0x110 | r7 += var_110h;
0x0005fe54 ldr r4, [sp, 0x124] | r4 = var_124h;
0x0005fe56 ldr.w r6, [r5, 0x16c] | r6 = *((r5 + 0x16c));
0x0005fe5a ldm r7, {r0, r1, r2, r3, r7} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
| r7 = *((r7 + 16));
0x0005fe5c eors r1, r4 | r1 ^= r4;
0x0005fe5e eors r0, r7 | r0 ^= r7;
0x0005fe60 eor r2, r2, 1 | r2 ^= 1;
0x0005fe64 orrs r1, r3 | r1 |= r3;
0x0005fe66 orrs r0, r2 | r0 |= r2;
0x0005fe68 orrs.w sl, r0, r1 | sl = r0 | r1;
0x0005fe6c itt ne |
| if (sl == r0) {
0x0005fe6e movne r4, 0 | r4 = 0;
| }
| if (sl == r0) {
0x0005fe70 movne r7, 0 | r7 = 0;
| }
0x0005fe72 ldr r0, [r6] | r0 = *(r6);
0x0005fe74 it ne |
| if (sl == r0) {
0x0005fe76 movne sl, 1 | sl = 1;
| }
| if (r0 != 0) {
0x0005fe7a cbz r0, 0x5fe82 |
0x0005fe7c mov r0, r6 | r0 = r6;
0x0005fe7e bl 0x4448c | fcn_0004448c (r0);
| }
0x0005fe82 strd r8, fp, [r6] | __asm ("strd r8, fp, [r6]");
0x0005fe86 add r6, sp, 0x110 | r6 += var_110h;
0x0005fe88 add r1, sp, 0xc0 | r1 += var_c0h;
0x0005fe8a movs r2, 0x48 | r2 = 0x48;
0x0005fe8c mov r0, r6 | r0 = r6;
0x0005fe8e blx 0x26b48 | fcn_00026b48 ();
0x0005fe92 mov r0, r5 | r0 = r5;
0x0005fe94 mov r1, r6 | r1 = r6;
0x0005fe96 mov r2, sl | r2 = sl;
0x0005fe98 movs r3, 0 | r3 = 0;
0x0005fe9a strd r7, r4, [sp] | __asm ("strd r7, r4, [sp]");
0x0005fe9e bl 0x4dd64 | fcn_0004dd64 (r0, r1, r2, r3, r4, r5, r6);
0x0005fea2 mov sl, sb | sl = sb;
0x0005fea4 ldr.w sb, [sp, 0x30] | sb = var_30h;
0x0005fea8 b 0x6015e | goto label_9;
| label_49:
0x0005feaa ldr r0, [pc, 0x164] |
0x0005feac add r0, pc | r0 = 0xbfec2;
0x0005feae bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0005feb2 uxtb r1, r0 | r1 = (int8_t) r0;
0x0005feb4 cmp r1, 0 |
| if (r1 != 0) {
0x0005feb6 bne.w 0x5f8be | goto label_5;
| }
| label_48:
0x0005feba ldr r0, [pc, 0x158] |
0x0005febc add r0, pc | r0 = 0xbfed6;
0x0005febe ldrb r0, [r0] | r0 = *(r0);
0x0005fec0 cmp r0, 0 |
| if (r0 != 0) {
0x0005fec2 bne.w 0x6014e | goto label_52;
| }
0x0005fec6 ldr r0, [pc, 0x150] |
0x0005fec8 add r0, pc |
0x0005feca ldr r0, [r0] | r0 = *(0xbfee6);
0x0005fecc cmp r0, 5 |
| if (r0 <= 5) {
0x0005fece blo.w 0x6014e | goto label_52;
| }
0x0005fed2 ldr r0, [pc, 0x148] |
0x0005fed4 add r0, pc | r0 = 0xbfef6;
0x0005fed6 str r0, [sp, 0x24] | var_24h = r0;
0x0005fed8 ldr.w r8, [r0] | r8 = *(0xbfef6);
0x0005fedc ldr r0, [pc, 0x140] |
0x0005fede ldr r1, [pc, 0x144] |
0x0005fee0 ldr r2, [pc, 0x144] |
0x0005fee2 add r0, pc |
0x0005fee4 ldr r3, [pc, 0x144] |
0x0005fee6 add r1, pc | r1 = 0xbff10;
0x0005fee8 ldrd ip, r6, [r8, 8] | __asm ("ldrd ip, r6, [r8, 8]");
0x0005feec add r2, pc | r2 = 0xbff18;
0x0005feee add r3, pc | r3 = 0xbff1e;
0x0005fef0 str r6, [sp, 0xa0] | var_a0h = r6;
0x0005fef2 mov lr, r3 | lr = r3;
0x0005fef4 movs r3, 5 | r3 = 5;
0x0005fef6 strd r3, ip, [sp, 0x98] | __asm ("strd r3, ip, [var_98h]");
0x0005fefa ldr r0, [r0] | r0 = *(0xbff06);
0x0005fefc ldr r6, [pc, 0x130] |
0x0005fefe dmb ish | __asm ("dmb ish");
0x0005ff02 ldr.w sl, [r1] | sl = *(0xbff10);
0x0005ff06 cmp r0, 2 |
0x0005ff08 ldr.w fp, [r2] | fp = *(0xbff18);
0x0005ff0c it ne |
| if (r0 == 2) {
0x0005ff0e movne sl, lr | sl = lr;
| }
0x0005ff10 ldr.w r2, [sl, 0x10] | r2 = *(0xbff20);
0x0005ff14 add r1, sp, 0x98 | r1 += var_98h;
0x0005ff16 add r6, pc | r6 = 0xbff4a;
0x0005ff18 it ne |
| if (r0 == 2) {
0x0005ff1a movne fp, r6 |
| }
0x0005ff1c mov r0, fp | r0 = fp;
0x0005ff1e blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005ff20 cmp r0, 0 |
| if (r0 != 0) {
0x0005ff22 beq 0x5ffb2 |
0x0005ff24 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0005ff26 add.w sb, sp, 0x158 | sb += var_158h;
0x0005ff2a ldr r6, [r0] | r6 = *(r0);
0x0005ff2c ldr r0, [r6, 0x30] | r0 = *((r6 + 0x30));
0x0005ff2e cmp r0, 0 |
| if (r0 == 0) {
0x0005ff30 beq.w 0x6078a | goto label_50;
| }
0x0005ff34 ldr r1, [sp, 0x98] | r1 = var_98h;
0x0005ff36 str r1, [sp, 0x24] | var_24h = r1;
0x0005ff38 ldr r1, [sp, 0x9c] | r1 = var_9ch;
0x0005ff3a str r1, [sp, 0x20] | var_20h = r1;
0x0005ff3c ldr r1, [sp, 0xa0] | r1 = var_a0h;
0x0005ff3e str r1, [sp, 0x1c] | var_1ch = r1;
0x0005ff40 ldr r1, [r6, 0x2c] | r1 = *((r6 + 0x2c));
0x0005ff42 ldrd r2, r3, [r6, 0x34] | __asm ("ldrd r2, r3, [r6, 0x34]");
0x0005ff46 strd r1, r0, [sp, 0x114] | __asm ("strd r1, r0, [var_114h]");
0x0005ff4a movs r0, 0 | r0 = 0;
0x0005ff4c strd r2, r3, [sp, 0x11c] | __asm ("strd r2, r3, [var_120h]");
0x0005ff50 str r0, [sp, 0x110] | var_110h = r0;
0x0005ff52 ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
0x0005ff56 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0005ff58 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0005ff5a ldr r1, [pc, 0xd8] |
0x0005ff5c ldr r2, [pc, 0xd8] |
0x0005ff5e ldr r3, [pc, 0xdc] |
0x0005ff60 add r1, pc | r1 = 0xbff9a;
0x0005ff62 strb.w r0, [sp, 0x16c] | var_16ch = r0;
0x0005ff66 add r0, sp, 0x16c | r0 += var_16ch;
0x0005ff68 str r0, [sp, 0x88] | var_88h = r0;
0x0005ff6a add r0, sp, 0x88 | r0 += var_88h;
0x0005ff6c str r0, [sp, 0xd0] | var_d0h = r0;
0x0005ff6e movs r0, 0 | r0 = 0;
0x0005ff70 strd r0, r0, [sp, 0xc8] | __asm ("strd r0, r0, [var_cch]");
0x0005ff74 add r0, sp, 0xc0 | r0 += var_c0h;
0x0005ff76 str r0, [sp, 0x15c] | var_15ch = r0;
0x0005ff78 add r0, sp, 0x110 | r0 += var_110h;
0x0005ff7a str r0, [sp, 0x158] | var_158h = r0;
0x0005ff7c add.w r0, r6, 0x2c | r0 = r6 + 0x2c;
0x0005ff80 add r3, pc | r3 = 0xbffc2;
0x0005ff82 str r0, [sp, 0x78] | var_78h = r0;
0x0005ff84 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005ff86 add r2, pc | r2 = 0xbffc2;
0x0005ff88 str r3, [sp, 0x160] | var_160h = r3;
0x0005ff8a str r0, [sp] | *(sp) = r0;
0x0005ff8c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0005ff8e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005ff90 str r1, [sp, 0x8c] | var_8ch = r1;
0x0005ff92 movs r1, 1 | r1 = 1;
0x0005ff94 str r0, [sp, 4] | var_4h = r0;
0x0005ff96 add r0, sp, 0x70 | r0 += var_70h;
0x0005ff98 strd r2, r1, [sp, 0xc0] | __asm ("strd r2, r1, [var_c0h]");
0x0005ff9c mov r2, sl | r2 = sl;
0x0005ff9e str r0, [sp, 8] | var_8h = r0;
0x0005ffa0 mov r0, r8 | r0 = r8;
0x0005ffa2 str r1, [sp, 0xd4] | var_d4h = r1;
0x0005ffa4 strd sb, r1, [sp, 0x70] | __asm ("strd sb, r1, [var_70h]");
0x0005ffa8 mov r1, fp | r1 = fp;
0x0005ffaa bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x0005ffae ldr.w sb, [sp, 0x30] | sb = var_30h;
| }
0x0005ffb2 ldr.w sl, [sp, 0x34] | sl = var_34h;
0x0005ffb6 b 0x6014e | goto label_52;
| label_63:
0x00060040 ldr r0, [pc, 0x398] |
0x00060042 add r0, pc | r0 = 0xc0422;
0x00060044 movs r0, r0 |
0x00060046 movs r0, r6 | r0 = r6;
0x00060048 uxtb r1, r0 | r1 = (int8_t) r0;
0x0006004a cmp r1, 0 |
| if (r1 != 0) {
0x0006004c bne.w 0x5fc54 | goto label_6;
| }
| label_62:
0x00060050 ldr r0, [pc, 0x38c] |
0x00060052 add r0, pc | r0 = 0xc0436;
0x00060054 ldrb r0, [r0] | r0 = *(r0);
0x00060056 cmp r0, 0 |
| if (r0 == 0) {
0x00060058 bne 0x60136 |
0x0006005a ldr r0, [pc, 0x388] |
0x0006005c add r0, pc |
0x0006005e ldr r0, [r0] | r0 = *(0xc0446);
0x00060060 cmp r0, 5 |
| if (r0 <= 5) {
0x00060062 blo 0x60136 | goto label_65;
| }
0x00060064 ldr r0, [pc, 0x380] |
0x00060066 add r0, pc | r0 = 0xc0452;
0x00060068 str r0, [sp, 0x24] | var_24h = r0;
0x0006006a ldr.w r8, [r0] | r8 = *(0xc0452);
0x0006006e ldr r0, [pc, 0x37c] |
0x00060070 ldr r1, [pc, 0x37c] |
0x00060072 ldr r2, [pc, 0x380] |
0x00060074 lsls r5, r5, 1 | r5 <<= 1;
0x00060076 movs r0, r0 |
0x00060078 add r1, pc | r1 = 0xc046c;
0x0006007a ldrd r6, r4, [r8, 8] | __asm ("ldrd r6, r4, [r8, 8]");
0x0006007c str r2, [r0, 0x40] | *((r0 + 0x40)) = r2;
0x0006007e add r2, pc | r2 = 0xc0478;
0x00060080 add r3, pc | r3 += pc;
0x00060082 str r4, [sp, 0x174] | var_174h = r4;
0x00060084 mov ip, r3 |
0x00060086 movs r3, 5 | r3 = 5;
0x00060088 strd r3, r6, [sp, 0x16c] | __asm ("strd r3, r6, [var_16ch]");
0x0006008c ldr r0, [r0] | r0 = *(0x603ee);
0x0006008e ldr r3, [pc, 0x36c] |
0x00060090 dmb ish | __asm ("dmb ish");
0x00060094 ldr r6, [r1] | r6 = *(0xc046c);
0x00060096 cmp r0, 2 |
0x00060098 ldr r4, [r2] | r4 = *(0xc0478);
0x0006009a it ne |
| if (r0 == 2) {
0x0006009c movne r6, ip | r6 = ip;
| }
0x0006009e ldr r2, [r6, 0x10] | r2 = *(0xc047c);
0x000600a0 add r1, sp, 0x16c | r1 += var_16ch;
0x000600a2 add r3, pc | r3 = 0xc04a4;
0x000600a4 str r3, [sp, 0x20] | var_20h = r3;
0x000600a6 it ne |
| if (r0 == 2) {
0x000600a8 movne r4, r3 | r4 = r3;
| }
0x000600aa mov r0, r4 | r0 = r4;
0x000600ac blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000600ae cmp r0, 0 |
| if (r0 == 0) {
0x000600b0 beq 0x60136 | goto label_65;
| }
0x000600b2 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000600b4 add.w ip, sp, 0x88 |
0x000600b8 ldr r0, [r0] | r0 = *(r0);
0x000600ba ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x000600bc cmp r1, 0 |
| if (r1 == 0) {
0x000600be beq.w 0x607f2 | goto label_64;
| }
0x000600c2 ldr r2, [sp, 0x16c] | r2 = var_16ch;
0x000600c4 mov sb, sl | sb = sl;
0x000600c6 str r2, [sp, 0x24] | var_24h = r2;
0x000600c8 add.w lr, sp, 0x110 | lr += var_110h;
0x000600cc ldr r2, [sp, 0x170] | r2 = var_170h;
0x000600ce str r2, [sp, 0x1c] | var_1ch = r2;
0x000600d0 ldr r2, [sp, 0x174] | r2 = var_174h;
0x000600d2 str r2, [sp, 0x18] | var_18h = r2;
0x000600d4 ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x000600d6 ldrd sl, fp, [r0, 0x34] | __asm ("ldrd sl, fp, [r0, 0x34]");
0x000600da adds r0, 0x2c | r0 += 0x2c;
0x000600dc ldr r3, [pc, 0x320] |
0x000600de add r3, pc | r3 = 0xc04e2;
0x000600e0 str r3, [sp, 0x10] | var_10h = r3;
0x000600e2 ldr r3, [pc, 0x320] |
0x000600e4 strd r2, r1, [sp, 0x114] | __asm ("strd r2, r1, [var_114h]");
0x000600e8 movs r1, 0 | r1 = 0;
0x000600ea add r3, pc | r3 = 0xc04f4;
0x000600ec str r3, [sp, 0x14] | var_14h = r3;
0x000600ee add r3, sp, 0xc0 | r3 += var_c0h;
0x000600f0 str r0, [sp, 0x90] | var_90h = r0;
0x000600f2 movs r0, 1 | r0 = 1;
0x000600f4 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000600f6 str r3, [sp, 0x9c] | var_9ch = r3;
0x000600f8 add r3, sp, 0x98 | r3 += var_98h;
0x000600fa str r2, [sp, 0xa0] | var_a0h = r2;
0x000600fc ldr r2, [sp, 0x20] | r2 = var_20h;
0x000600fe str r0, [sp, 0x8c] | var_8ch = r0;
0x00060100 strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x00060104 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00060106 str r3, [sp, 0x88] | var_88h = r3;
0x00060108 str r0, [sp, 0xc0] | var_c0h = r0;
0x0006010a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006010c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006010e str r0, [sp] | *(sp) = r0;
0x00060110 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00060112 strd r1, r2, [sp, 0xcc] | __asm ("strd r1, r2, [var_d0h]");
0x00060116 mov r2, r6 | r2 = r6;
0x00060118 strd r0, ip, [sp, 4] | __asm ("strd r0, ip, [var_4h]");
0x0006011c mov r0, r8 | r0 = r8;
0x0006011e str r1, [sp, 0x110] | var_110h = r1;
0x00060120 str r1, [sp, 0xd4] | var_d4h = r1;
0x00060122 mov r1, r4 | r1 = r4;
0x00060124 str.w lr, [sp, 0x98] | __asm ("str.w lr, [var_98h]");
0x00060126 b 0x6025a | goto label_70;
0x00060128 strd sl, fp, [sp, 0x11c] | __asm ("strd sl, fp, [var_0hx11c]");
0x0006012c bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x00060130 mov sl, sb | sl = sb;
0x00060132 ldr.w sb, [sp, 0x30] | sb = var_30h;
| }
| label_65:
0x00060136 mov r0, r5 | r0 = r5;
0x00060138 bl 0x510c4 | r0 = fcn_000510c4 (r0);
0x0006013c cmp r0, 0 |
| if (r0 != 0) {
0x0006013e bne.w 0x603b4 | goto label_71;
| }
0x00060142 ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x00060144 ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [var_70h]");
0x00060148 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0006014a ldr r0, [sp, 0x38] | r0 = var_38h;
0x0006014c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_52:
0x0006014e ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x00060150 cbz r0, 0x60158 |
0x00060152 mov r0, r7 | r0 = r7;
0x00060154 bl 0x4448c | fcn_0004448c (r0);
| }
0x00060158 movs r0, 0 | r0 = 0;
0x0006015a str r0, [r7] | *(r7) = r0;
0x0006015c str r0, [r7, 4] | *((r7 + 4)) = r0;
| label_9:
0x0006015e ldrb.w r0, [r5, 0x170] | r0 = *((r5 + 0x170));
0x00060162 cmp r0, 0 |
| if (r0 == 0) {
0x00060164 beq.w 0x5f846 | goto label_7;
| }
0x00060168 b.w 0x5ef5a | goto label_1;
| label_67:
0x0006016c ldr r0, [pc, 0x298] |
0x0006016e add r0, pc | r0 = 0xc057a;
0x00060170 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x00060174 uxtb r1, r0 | r1 = (int8_t) r0;
0x00060176 cmp r1, 0 |
| if (r1 != 0) {
0x00060178 bne.w 0x5fd62 | goto label_8;
| }
| label_66:
0x0006017c ldr r0, [pc, 0x28c] |
0x0006017e add r0, pc | r0 = 0xc058e;
0x00060180 ldrb r0, [r0] | r0 = *(r0);
0x00060182 cmp r0, 0 |
| if (r0 == 0) {
0x00060184 bne 0x6025e |
0x00060186 ldr r0, [pc, 0x288] |
0x00060188 add r0, pc |
0x0006018a ldr r0, [r0] | r0 = *(0xc059e);
0x0006018c cmp r0, 5 |
| if (r0 <= 5) {
0x0006018e blo 0x6025e | goto label_69;
| }
0x00060190 ldr r0, [pc, 0x280] |
0x00060192 movs r4, 5 | r4 = 5;
0x00060194 add r0, pc | r0 = 0xc05ac;
0x00060196 str r0, [sp, 0x24] | var_24h = r0;
0x00060198 ldr.w r8, [r0] | r8 = *(0xc05ac);
0x0006019c ldr r0, [pc, 0x278] |
0x0006019e ldr r1, [pc, 0x27c] |
0x000601a0 ldr r2, [pc, 0x27c] |
0x000601a2 add r0, pc |
0x000601a4 ldr r3, [pc, 0x27c] |
0x000601a6 add r1, pc | r1 = 0xc05c8;
0x000601a8 ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x000601ac add r2, pc | r2 = 0xc05d0;
0x000601ae add r3, pc | r3 = 0xc05d6;
0x000601b0 str r6, [sp, 0x174] | var_174h = r6;
0x000601b2 strd r4, r7, [sp, 0x16c] | __asm ("strd r4, r7, [var_16ch]");
0x000601b6 ldr r0, [r0] | r0 = *(0xc05be);
0x000601b8 ldr r4, [pc, 0x26c] |
0x000601ba dmb ish | __asm ("dmb ish");
0x000601be ldr r6, [r1] | r6 = *(0xc05c8);
0x000601c0 cmp r0, 2 |
0x000601c2 ldr r7, [r2] | r7 = *(0xc05d0);
0x000601c4 it ne |
| if (r0 == 2) {
0x000601c6 movne r6, r3 | r6 = r3;
| }
0x000601c8 ldr r2, [r6, 0x10] | r2 = *(0xc05d8);
0x000601ca add r1, sp, 0x16c | r1 += var_16ch;
0x000601cc add r4, pc | r4 = 0xc05f8;
0x000601ce it ne |
| if (r0 == 2) {
0x000601d0 movne r7, r4 | r7 = r4;
| }
0x000601d2 mov r0, r7 | r0 = r7;
0x000601d4 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000601d6 cmp r0, 0 |
| if (r0 == 0) {
0x000601d8 beq 0x6025e | goto label_69;
| }
0x000601da ldr r0, [sp, 0x24] | r0 = var_24h;
0x000601dc add.w fp, sp, 0x88 |
0x000601e0 ldr r0, [r0] | r0 = *(r0);
0x000601e2 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x000601e4 cmp r1, 0 |
| if (r1 == 0) {
0x000601e6 beq.w 0x607e8 | goto label_68;
| }
0x000601ea ldr r2, [sp, 0x16c] | r2 = var_16ch;
0x000601ec mov lr, r4 | lr = r4;
0x000601ee str r2, [sp, 0x24] | var_24h = r2;
0x000601f0 mov sb, sl | sb = sl;
0x000601f2 ldr r2, [sp, 0x170] | r2 = var_170h;
0x000601f4 add.w ip, sp, 0x110 |
0x000601f8 str r2, [sp, 0x20] | var_20h = r2;
0x000601fa ldr r2, [sp, 0x174] | r2 = var_174h;
0x000601fc str r2, [sp, 0x1c] | var_1ch = r2;
0x000601fe ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x00060200 ldrd sl, r4, [r0, 0x34] | __asm ("ldrd sl, r4, [r0, 0x34]");
0x00060202 adr r4, 0x34 | r4 = 0x34;
0x00060204 adds r0, 0x2c | r0 += 0x2c;
0x00060206 ldr r3, [pc, 0x224] |
0x00060208 add r3, pc | r3 = 0xc063a;
0x0006020a str r3, [sp, 0x14] | var_14h = r3;
0x0006020c ldr r3, [pc, 0x220] |
0x0006020e strd r2, r1, [sp, 0x114] | __asm ("strd r2, r1, [var_114h]");
0x00060212 movs r1, 0 | r1 = 0;
0x00060214 add r3, pc | r3 = 0xc0648;
0x00060216 str r3, [sp, 0x18] | var_18h = r3;
0x00060218 add r3, sp, 0xc0 | r3 += var_c0h;
0x0006021a str r0, [sp, 0x90] | var_90h = r0;
0x0006021c movs r0, 1 | r0 = 1;
0x0006021e str r3, [sp, 0x9c] | var_9ch = r3;
0x00060220 add r3, sp, 0x98 | r3 += var_98h;
0x00060222 str r0, [sp, 0x8c] | var_8ch = r0;
0x00060224 strd r0, r1, [sp, 0xc4] | __asm ("strd r0, r1, [var_c8h]");
0x00060228 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006022a str r3, [sp, 0x88] | var_88h = r3;
0x0006022c str r0, [sp, 0xc0] | var_c0h = r0;
0x0006022e ldr r0, [sp, 0x20] | r0 = var_20h;
0x00060230 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00060232 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00060234 str r0, [sp] | *(sp) = r0;
0x00060236 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00060238 str r2, [sp, 0xa0] | var_a0h = r2;
0x0006023a mov r2, r6 | r2 = r6;
0x0006023c strd r0, fp, [sp, 4] | __asm ("strd r0, fp, [var_4h]");
0x00060240 mov r0, r8 | r0 = r8;
0x00060242 str r1, [sp, 0x110] | var_110h = r1;
0x00060244 str r1, [sp, 0xd4] | var_d4h = r1;
0x00060246 strd r1, lr, [sp, 0xcc] | __asm ("strd r1, lr, [var_d0h]");
0x0006024a mov r1, r7 | r1 = r7;
0x0006024c str.w ip, [sp, 0x98] | __asm ("str.w ip, [var_98h]");
0x00060250 strd sl, r4, [sp, 0x11c] | __asm ("strd sl, r4, [var_120h]");
0x00060254 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
0x00060258 mov sl, sb | sl = sb;
| label_70:
0x0006025a ldr.w sb, [sp, 0x30] | sb = var_30h;
| }
| label_69:
0x0006025e ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x00060260 ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [var_70h]");
0x00060264 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00060266 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00060268 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0006026a b 0x6015e | goto label_9;
| label_55:
0x0006026c movs r0, 1 | r0 = 1;
0x0006026e strb.w r0, [r5, 0x170] | *((r5 + 0x170)) = r0;
0x00060272 mov r0, r5 | r0 = r5;
0x00060274 bl 0x114880 | fcn_00114880 (r0);
0x00060278 mov r0, r5 | r0 = r5;
0x0006027a bl 0x114adc | fcn_00114adc (r0);
0x0006027e b.w 0x5ef5a | goto label_1;
| label_14:
0x00060282 ldr r0, [pc, 0x1b0] |
0x00060284 add r0, pc |
0x00060286 ldr r0, [r0] | r0 = *(0xc06be);
0x00060288 subs r0, 1 | r0--;
0x0006028a cmp r0, 5 |
| if (r0 <= 5) {
0x0006028c blo.w 0x60576 | goto label_72;
| }
0x00060290 ldr r5, [pc, 0x1a4] |
0x00060292 add r5, pc | r5 = 0xc06ce;
0x00060294 ldrb r1, [r5, 8] | r1 = *((r5 + 8));
0x00060296 cmp r1, 0 |
| if (r1 == 0) {
0x00060298 beq.w 0x60576 | goto label_72;
| }
0x0006029c cmp r1, 1 |
| if (r1 != 1) {
0x0006029e beq 0x602a8 |
0x000602a0 cmp r1, 2 |
| if (r1 != 2) {
0x000602a2 bne.w 0x60566 | goto label_73;
| }
0x000602a6 movs r1, 2 | r1 = 2;
| }
| label_11:
0x000602a8 ldr r0, [r5] | r0 = *(r5);
0x000602aa bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x000602ae cmp r0, 0 |
| if (r0 == 0) {
0x000602b0 beq.w 0x60576 | goto label_72;
| }
0x000602b4 ldr r0, [r5] | r0 = *(r5);
0x000602b6 ldr r3, [r0, 0x30] | r3 = *((r0 + 0x30));
0x000602b8 cmp r3, 0 |
| if (r3 == 0) {
0x000602ba beq.w 0x607de | goto label_74;
| }
0x000602be ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x000602c2 ldrd r6, r4, [r0, 0x34] | __asm ("ldrd r6, r4, [r0, 0x34]");
0x000602c6 ldr r1, [pc, 0x174] |
0x000602c8 ldr r2, [pc, 0x174] |
0x000602ca add r1, pc | r1 = 0xc070c;
0x000602cc add r2, pc | r2 = 0xc0710;
0x000602ce mov lr, r2 | lr = r2;
0x000602d0 ldr r2, [pc, 0x170] |
0x000602d2 str r1, [sp, 0x78] | var_78h = r1;
0x000602d4 add r1, sp, 0x88 | r1 += var_88h;
0x000602d6 add r2, pc | r2 = 0xc071e;
0x000602d8 strd r6, r4, [sp, 0x11c] | __asm ("strd r6, r4, [var_120h]");
0x000602dc str r1, [sp, 0xd0] | var_d0h = r1;
0x000602de movs r1, 2 | r1 = 2;
0x000602e0 add r4, sp, 0x98 | r4 += var_98h;
0x000602e2 str r7, [sp, 0x74] | var_74h = r7;
0x000602e4 add.w r7, r0, 0x2c | r7 = r0 + 0x2c;
0x000602e8 strd lr, r1, [sp, 0xc0] | __asm ("strd lr, r1, [var_c0h]");
0x000602ec add r1, sp, 0x54 | r1 += var_54h;
0x000602ee mov r8, r2 | r8 = r2;
0x000602f0 add r2, sp, 0x110 | r2 += var_110h;
0x000602f2 strd ip, r3, [sp, 0x114] | __asm ("strd ip, r3, [var_114h]");
0x000602f6 movs r3, 0 | r3 = 0;
0x000602f8 str r7, [sp, 0xa0] | var_a0h = r7;
0x000602fa movs r7, 1 | r7 = 1;
0x000602fc str r1, [sp, 0x88] | var_88h = r1;
0x000602fe mov r1, r4 | r1 = r4;
0x00060300 str r2, [sp, 0x70] | var_70h = r2;
0x00060302 add r2, sp, 0x70 | r2 += var_70h;
0x00060304 str r2, [sp, 0x98] | var_98h = r2;
0x00060306 str r3, [sp, 0x110] | var_110h = r3;
0x00060308 str r7, [sp, 0x9c] | var_9ch = r7;
0x0006030a str r7, [sp, 0xd4] | var_d4h = r7;
0x0006030c strd r3, r3, [sp, 0xc8] | __asm ("strd r3, r3, [var_cch]");
0x00060310 str.w r8, [sp, 0x8c] | __asm ("str.w r8, [var_8ch]");
0x00060314 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x00060318 ldr r0, [pc, 0x12c] |
0x0006031a add r0, pc | r0 = 0xc0766;
0x0006031c ldrb r0, [r0] | r0 = *(r0);
0x0006031e cmp r0, 0 |
| if (r0 != 0) {
0x00060320 bne.w 0x60658 | goto label_75;
| }
0x00060324 ldr r0, [pc, 0x124] |
0x00060326 add r0, pc |
0x00060328 ldr r0, [r0] | r0 = *(0xc0776);
0x0006032a cmp r0, 5 |
| if (r0 <= 5) {
0x0006032c blo.w 0x60658 | goto label_75;
| }
0x00060330 ldr.w r8, [r5] | r8 = *(r5);
0x00060334 movs r3, 5 | r3 = 5;
0x00060336 ldr r0, [pc, 0x118] |
0x00060338 ldr r1, [pc, 0x118] |
0x0006033a ldr r2, [pc, 0x11c] |
0x0006033c add r0, pc |
0x0006033e ldr r5, [pc, 0x11c] |
0x00060340 add r1, pc | r1 = 0xc0798;
0x00060342 ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x00060346 add r2, pc | r2 = 0xc07a4;
0x00060348 add r5, pc | r5 = 0xc07aa;
0x0006034a str r6, [sp, 0x160] | var_160h = r6;
0x0006034c strd r3, r7, [sp, 0x158] | __asm ("strd r3, r7, [var_158h]");
0x00060350 ldr r0, [r0] | r0 = *(0xc0792);
0x00060352 ldr r3, [pc, 0x10c] |
0x00060354 dmb ish | __asm ("dmb ish");
0x00060358 ldr r6, [r1] | r6 = *(0xc0798);
0x0006035a cmp r0, 2 |
0x0006035c ldr r7, [r2] | r7 = *(0xc07a4);
0x0006035e it ne |
| if (r0 == 2) {
0x00060360 movne r6, r5 | r6 = r5;
| }
0x00060362 ldr r2, [r6, 0x10] | r2 = *(0xc07a8);
0x00060364 add r1, sp, 0x158 | r1 += var_158h;
0x00060366 add r3, pc | r3 = 0xc07cc;
0x00060368 it ne |
| if (r0 == 2) {
0x0006036a movne r7, r3 | r7 = r3;
| }
0x0006036c mov r0, r7 | r0 = r7;
0x0006036e blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00060370 cmp r0, 0 |
| if (r0 == 0) {
0x00060372 beq.w 0x60658 | goto label_75;
| }
0x00060376 ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x0006037a mov r2, r6 | r2 = r6;
0x0006037c ldr r1, [sp, 0x160] | r1 = var_160h;
0x0006037e stm.w sp, {r0, r1, r4} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r4;
0x00060382 mov r0, r8 | r0 = r8;
0x00060384 mov r1, r7 | r1 = r7;
0x00060386 b 0x60654 | goto label_76;
| label_17:
0x00060388 mov.w r8, 0 | r8 = 0;
0x0006038c b 0x60666 | goto label_16;
| label_54:
0x0006038e cmp r0, 2 |
| if (r0 == 2) {
0x00060390 beq 0x603a0 | goto label_77;
| }
0x00060392 add r0, sp, 0x158 | r0 += var_158h;
0x00060394 bl 0x4ab30 | fcn_0004ab30 (r0);
0x00060398 b 0x603a0 | goto label_77;
| label_57:
0x0006039a bl 0x4c548 | r0 = fcn_0004c548 (r0, r1);
0x0006039e mov r8, r0 | r8 = r0;
| do {
| label_77:
0x000603a0 ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x000603a2 cbz r0, 0x603aa |
0x000603a4 mov r0, r7 | r0 = r7;
0x000603a6 bl 0x4448c | fcn_0004448c (r0);
| }
0x000603aa movs r0, 0 | r0 = 0;
0x000603ac strd r0, r0, [r7] | __asm ("strd r0, r0, [r7]");
| label_10:
0x000603b0 movs r0, 0 | r0 = 0;
0x000603b2 b 0x60666 | goto label_16;
| label_71:
0x000603b4 mov r8, r0 | r8 = r0;
0x000603b6 ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x000603b8 ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [var_70h]");
0x000603bc ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x000603be ldr r0, [sp, 0x38] | r0 = var_38h;
0x000603c0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000603c2 b 0x603a0 |
| } while (1);
| label_42:
0x000603c4 movs r0, 6 | r0 = 6;
0x000603c6 ldr r5, [sp, 0xc8] | r5 = var_c8h;
0x000603c8 bl 0x1106f0 | fcn_001106f0 (r0, r1);
0x000603cc add r1, sp, 0x110 | r1 += var_110h;
0x000603ce mov r8, r0 | r8 = r0;
0x000603d0 strd r4, r5, [sp, 0x110] | __asm ("strd r4, r5, [var_110h]");
0x000603d4 bl 0x1139f0 | fcn_001139f0 (r0, r1);
0x000603d8 b 0x603b0 | goto label_10;
| label_43:
0x00060464 ldr r0, [pc, 0x3a0] |
0x00060466 add r0, pc |
0x00060468 ldr r0, [r0] | r0 = *(0xc0c72);
0x0006046a subs r0, 1 | r0--;
0x0006046c cmp r0, 5 |
| if (r0 <= 5) {
0x0006046e blo.w 0x60684 | goto label_78;
| }
0x00060472 ldr r6, [pc, 0x398] |
0x00060474 add r6, pc | r6 = 0xc0c86;
0x00060476 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x00060478 cmp r1, 0 |
| if (r1 == 0) {
0x0006047a beq.w 0x60684 | goto label_78;
| }
0x0006047e cmp r1, 1 |
| if (r1 != 1) {
0x00060480 beq 0x6048a |
0x00060482 cmp r1, 2 |
| if (r1 != 2) {
0x00060484 bne.w 0x60674 | goto label_79;
| }
0x00060488 movs r1, 2 | r1 = 2;
| }
| label_12:
0x0006048a ldr r0, [r6] | r0 = *(r6);
0x0006048c bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
0x00060490 cmp r0, 0 |
| if (r0 == 0) {
0x00060492 beq.w 0x60684 | goto label_78;
| }
0x00060496 ldr r0, [r6] | r0 = *(r6);
0x00060498 ldr r3, [r0, 0x30] | r3 = *((r0 + 0x30));
0x0006049a cmp r3, 0 |
| if (r3 == 0) {
0x0006049c beq.w 0x607fc | goto label_80;
| }
0x000604a0 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x000604a4 ldrd lr, r4, [r0, 0x34] | __asm ("ldrd lr, r4, [r0, 0x34]");
0x000604a8 ldr r1, [pc, 0x370] |
0x000604aa ldr r2, [pc, 0x374] |
0x000604ac add r1, pc | r1 = 0xc0ccc;
0x000604ae add r2, pc | r2 = 0xc0cd4;
0x000604b0 mov r8, r2 | r8 = r2;
0x000604b2 ldr r2, [pc, 0x370] |
0x000604b4 strd lr, r4, [sp, 0x11c] | __asm ("strd lr, r4, [var_120h]");
0x000604b8 add r4, sp, 0x98 | r4 += var_98h;
0x000604ba add r2, pc | r2 = 0xc0ce4;
0x000604bc str r7, [sp, 0x74] | var_74h = r7;
0x000604be add.w r7, r0, 0x2c | r7 = r0 + 0x2c;
0x000604c2 str r1, [sp, 0x78] | var_78h = r1;
0x000604c4 add r1, sp, 0x88 | r1 += var_88h;
0x000604c6 mov sb, r2 | sb = r2;
0x000604c8 add r2, sp, 0x110 | r2 += var_110h;
0x000604ca strd ip, r3, [sp, 0x114] | __asm ("strd ip, r3, [var_114h]");
0x000604ce movs r3, 0 | r3 = 0;
0x000604d0 str r7, [sp, 0xa0] | var_a0h = r7;
0x000604d2 movs r7, 1 | r7 = 1;
0x000604d4 str r1, [sp, 0xd0] | var_d0h = r1;
0x000604d6 mov r1, r4 | r1 = r4;
0x000604d8 str r2, [sp, 0x70] | var_70h = r2;
0x000604da add r2, sp, 0x70 | r2 += var_70h;
0x000604dc str r2, [sp, 0x98] | var_98h = r2;
0x000604de str r3, [sp, 0x110] | var_110h = r3;
0x000604e0 str r7, [sp, 0x9c] | var_9ch = r7;
0x000604e2 str r7, [sp, 0xd4] | var_d4h = r7;
0x000604e4 strd r3, r3, [sp, 0xc8] | __asm ("strd r3, r3, [var_cch]");
0x000604e6 adds r3, 0x32 | r3 += 0x32;
0x000604e8 strd r8, r7, [sp, 0xc0] | __asm ("strd r8, r7, [var_c0h]");
0x000604ec strd r5, sb, [sp, 0x88] | __asm ("strd r5, sb, [var_88h]");
0x000604f0 bl 0x1b7af8 | fcn_001b7af8 (r0, r1);
0x000604f4 ldr r0, [pc, 0x330] |
0x000604f6 add r0, pc | r0 = 0xc0d22;
0x000604f8 ldrb r0, [r0] | r0 = *(r0);
0x000604fa cmp r0, 0 |
| if (r0 != 0) {
0x000604fc bne.w 0x60766 | goto label_81;
| }
0x00060500 ldr r0, [pc, 0x328] |
0x00060502 add r0, pc |
0x00060504 ldr r0, [r0] | r0 = *(0xc0d32);
0x00060506 cmp r0, 5 |
| if (r0 <= 5) {
0x00060508 blo.w 0x60766 | goto label_81;
| }
0x0006050c ldr.w r8, [r6] | r8 = *(r6);
0x00060510 ldr r0, [pc, 0x31c] |
0x00060512 ldr r1, [pc, 0x320] |
0x00060514 ldr r2, [pc, 0x320] |
0x00060516 add r0, pc |
0x00060518 ldr r3, [pc, 0x320] |
0x0006051a add r1, pc | r1 = 0xc0d54;
0x0006051c ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x00060520 add r2, pc | r2 = 0xc0d5c;
0x00060522 add r3, pc | r3 = 0xc0d62;
0x00060524 str r6, [sp, 0x160] | var_160h = r6;
0x00060526 mov ip, r3 |
0x00060528 movs r3, 5 | r3 = 5;
0x0006052a strd r3, r7, [sp, 0x158] | __asm ("strd r3, r7, [var_158h]");
0x0006052e ldr r0, [r0] | r0 = *(0xc0d4a);
0x00060530 ldr r3, [pc, 0x30c] |
0x00060532 dmb ish | __asm ("dmb ish");
0x00060536 ldr r7, [r1] | r7 = *(0xc0d54);
0x00060538 cmp r0, 2 |
0x0006053a ldr r6, [r2] | r6 = *(0xc0d5c);
0x0006053c it ne |
| if (r0 == 2) {
0x0006053e movne r7, ip | r7 = ip;
| }
0x00060540 ldr r2, [r7, 0x10] | r2 = *(0xc0d64);
0x00060542 add r1, sp, 0x158 | r1 += var_158h;
0x00060544 add r3, pc | r3 = 0xc0d88;
0x00060546 it ne |
| if (r0 == 2) {
0x00060548 movne r6, r3 | r6 = r3;
| }
0x0006054a mov r0, r6 | r0 = r6;
0x0006054c blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0006054e cmp r0, 0 |
| if (r0 == 0) {
0x00060550 beq.w 0x60766 | goto label_81;
| }
0x00060554 ldrd r3, r0, [sp, 0x158] | __asm ("ldrd r3, r0, [var_158h]");
0x00060558 mov r2, r7 | r2 = r7;
0x0006055a ldr r1, [sp, 0x160] | r1 = var_160h;
0x0006055c stm.w sp, {r0, r1, r4} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r4;
0x00060560 mov r0, r8 | r0 = r8;
0x00060562 mov r1, r6 | r1 = r6;
0x00060564 b 0x60762 | goto label_82;
| label_73:
0x00060566 ldr r0, [pc, 0x350] |
0x00060568 add r0, pc | r0 = 0xc0e26;
0x0006056a bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0006056e uxtb r1, r0 | r1 = (int8_t) r0;
0x00060570 cmp r1, 0 |
| if (r1 != 0) {
0x00060572 bne.w 0x602a8 | goto label_11;
| }
| label_72:
0x00060576 ldr r0, [pc, 0x34c] |
0x00060578 add r0, pc | r0 = 0xc0e42;
0x0006057a ldrb r0, [r0] | r0 = *(r0);
0x0006057c cmp r0, 0 |
| if (r0 == 0) {
0x0006057e bne 0x60658 |
0x00060580 ldr r0, [pc, 0x344] |
0x00060582 add r0, pc |
0x00060584 ldr r0, [r0] | r0 = *(0xc0e4e);
0x00060586 cmp r0, 5 |
| if (r0 <= 5) {
0x00060588 blo 0x60658 | goto label_75;
| }
0x0006058a ldr r6, [pc, 0x340] |
0x0006058c movs r4, 5 | r4 = 5;
0x0006058e add r6, pc | r6 = 0xc0e60;
0x00060590 ldr.w r8, [r6] | r8 = *(0xc0e60);
0x00060594 ldr r0, [pc, 0x338] |
0x00060596 ldr r1, [pc, 0x33c] |
0x00060598 ldr r2, [pc, 0x33c] |
0x0006059a add r0, pc |
0x0006059c ldr r3, [pc, 0x33c] |
0x0006059e add r1, pc | r1 = 0xc0e78;
0x000605a0 ldrd r7, r5, [r8, 8] | __asm ("ldrd r7, r5, [r8, 8]");
0x000605a4 add r2, pc | r2 = 0xc0e80;
0x000605a6 add r3, pc | r3 = 0xc0e86;
0x000605a8 str r5, [sp, 0xa0] | var_a0h = r5;
0x000605aa strd r4, r7, [sp, 0x98] | __asm ("strd r4, r7, [var_98h]");
0x000605ae ldr r0, [r0] | r0 = *(0xc0e6e);
0x000605b0 ldr r4, [pc, 0x32c] |
0x000605b2 dmb ish | __asm ("dmb ish");
0x000605b6 ldr r5, [r1] | r5 = *(0xc0e78);
0x000605b8 cmp r0, 2 |
0x000605ba ldr r7, [r2] | r7 = *(0xc0e80);
0x000605bc it ne |
| if (r0 == 2) {
0x000605be movne r5, r3 | r5 = r3;
| }
0x000605c0 ldr r2, [r5, 0x10] | r2 = *(0xc0e88);
0x000605c2 add r1, sp, 0x98 | r1 += var_98h;
0x000605c4 add r4, pc | r4 = 0xc0ea8;
0x000605c6 it ne |
| if (r0 == 2) {
0x000605c8 movne r7, r4 | r7 = r4;
| }
0x000605ca mov r0, r7 | r0 = r7;
0x000605cc blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000605ce cmp r0, 0 |
| if (r0 == 0) {
0x000605d0 beq 0x60658 | goto label_75;
| }
0x000605d2 ldr r2, [r6] | r2 = *(r6);
0x000605d4 add.w lr, sp, 0x158 | lr += var_158h;
0x000605d8 ldr r1, [r2, 0x30] | r1 = *((r2 + 0x30));
0x000605da cmp r1, 0 |
| if (r1 == 0) {
0x000605dc beq.w 0x607de | goto label_74;
| }
0x000605e0 ldr r0, [sp, 0x98] | r0 = var_98h;
0x000605e2 add.w ip, sp, 0x110 |
0x000605e6 str r0, [sp, 0x4c] | var_4ch = r0;
0x000605e8 ldr r0, [sp, 0x9c] | r0 = var_9ch;
0x000605ea str r0, [sp, 0x48] | var_48h = r0;
0x000605ec ldr r0, [sp, 0xa0] | r0 = var_a0h;
0x000605ee str r0, [sp, 0x44] | var_44h = r0;
0x000605f0 ldr.w sb, [r2, 0x2c] | sb = *((r2 + 0x2c));
0x000605f4 ldrd sl, r4, [r2, 0x34] | __asm ("ldrd sl, r4, [r2, 0x34]");
0x000605f8 adds r2, 0x2c | r2 += 0x2c;
0x000605fa ldr r0, [pc, 0x2e8] |
0x000605fc ldr r6, [pc, 0x2e8] |
0x000605fe add r0, pc | r0 = 0xc0ee8;
0x00060600 ldr r3, [pc, 0x2e8] |
0x00060602 str r0, [sp, 0x160] | var_160h = r0;
0x00060604 add r0, sp, 0x88 | r0 += var_88h;
0x00060606 str r0, [sp, 0xd0] | var_d0h = r0;
0x00060608 movs r0, 2 | r0 = 2;
0x0006060a add r6, pc | r6 = 0xc0ef6;
0x0006060c strd r6, r0, [sp, 0xc0] | __asm ("strd r6, r0, [var_c0h]");
0x00060610 add r0, sp, 0x54 | r0 += var_54h;
0x00060612 add r3, pc | r3 = 0xc0f02;
0x00060614 str r0, [sp, 0x88] | var_88h = r0;
0x00060616 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00060618 mov fp, r3 |
0x0006061a str r0, [sp] | *(sp) = r0;
0x0006061c add r3, sp, 0xc0 | r3 += var_c0h;
0x0006061e ldr r0, [sp, 0x44] | r0 = var_44h;
0x00060620 strd sb, r1, [sp, 0x114] | __asm ("strd sb, r1, [var_114h]");
0x00060624 movs r1, 0 | r1 = 0;
0x00060626 str r2, [sp, 0x78] | var_78h = r2;
0x00060628 movs r2, 1 | r2 = 1;
0x0006062a str r0, [sp, 4] | var_4h = r0;
0x0006062c add r0, sp, 0x70 | r0 += var_70h;
0x0006062e str r3, [sp, 0x15c] | var_15ch = r3;
0x00060630 str r0, [sp, 8] | var_8h = r0;
0x00060632 mov r0, r8 | r0 = r8;
0x00060634 str.w ip, [sp, 0x158] | __asm ("str.w ip, [var_158h]");
0x00060638 str.w lr, [sp, 0x70] | __asm ("str.w lr, [var_70h]");
0x0006063c strd sl, r4, [sp, 0x11c] | __asm ("strd sl, r4, [var_120h]");
0x00060640 str r1, [sp, 0x110] | var_110h = r1;
0x00060642 strd r1, r1, [sp, 0xc8] | __asm ("strd r1, r1, [var_cch]");
0x00060646 mov r1, r7 | r1 = r7;
0x00060648 str r2, [sp, 0x74] | var_74h = r2;
0x0006064a str r2, [sp, 0xd4] | var_d4h = r2;
0x0006064c mov r2, r5 | r2 = r5;
0x0006064e str.w fp, [sp, 0x8c] | __asm ("str.w fp, [var_8ch]");
0x00060652 ldr r3, [sp, 0x4c] | r3 = var_4ch;
| label_76:
0x00060654 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_75:
0x00060658 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0006065a ldr r1, [r0] | r1 = *(r0);
0x0006065c ldrd r0, r1, [r1] | __asm ("ldrd r0, r1, [r1]");
0x00060660 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x00060662 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x00060664 movs r0, 1 | r0 = 1;
| label_16:
0x00060666 mov r1, r8 | r1 = r8;
0x00060668 add sp, 0x178 |
0x0006066a vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0006066e add sp, 4 |
0x00060670 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_79:
0x00060674 ldr r0, [pc, 0x198] |
0x00060676 add r0, pc | r0 = 0xc0e8a;
0x00060678 bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x0006067c uxtb r1, r0 | r1 = (int8_t) r0;
0x0006067e cmp r1, 0 |
| if (r1 != 0) {
0x00060680 bne.w 0x6048a | goto label_12;
| }
| label_78:
0x00060684 ldr r0, [pc, 0x1bc] |
0x00060686 add r0, pc | r0 = 0xc0ece;
0x00060688 ldrb r0, [r0] | r0 = *(r0);
0x0006068a cmp r0, 0 |
| if (r0 == 0) {
0x0006068c bne 0x60766 |
0x0006068e ldr r0, [pc, 0x1b8] |
0x00060690 add r0, pc |
0x00060692 ldr r0, [r0] | r0 = *(0xc0ede);
0x00060694 cmp r0, 5 |
| if (r0 <= 5) {
0x00060696 blo 0x60766 | goto label_81;
| }
0x00060698 ldr r0, [pc, 0x1b0] |
0x0006069a movs r4, 5 | r4 = 5;
0x0006069c add r0, pc | r0 = 0xc0eec;
0x0006069e ldr.w r8, [r0] | r8 = *(0xc0eec);
0x000606a2 mov sb, r0 | sb = r0;
0x000606a4 ldr r0, [pc, 0x1a8] |
0x000606a6 ldr r1, [pc, 0x1ac] |
0x000606a8 ldr r2, [pc, 0x1ac] |
0x000606aa add r0, pc |
0x000606ac ldr r3, [pc, 0x1ac] |
0x000606ae add r1, pc | r1 = 0xc0f08;
0x000606b0 ldrd r7, r6, [r8, 8] | __asm ("ldrd r7, r6, [r8, 8]");
0x000606b4 add r2, pc | r2 = 0xc0f10;
0x000606b6 add r3, pc | r3 = 0xc0f16;
0x000606b8 str r6, [sp, 0xa0] | var_a0h = r6;
0x000606ba strd r4, r7, [sp, 0x98] | __asm ("strd r4, r7, [var_98h]");
0x000606be ldr r0, [r0] | r0 = *(0xc0efe);
0x000606c0 ldr r4, [pc, 0x19c] |
0x000606c2 dmb ish | __asm ("dmb ish");
0x000606c6 ldr r6, [r1] | r6 = *(0xc0f08);
0x000606c8 cmp r0, 2 |
0x000606ca ldr r7, [r2] | r7 = *(0xc0f10);
0x000606cc it ne |
| if (r0 == 2) {
0x000606ce movne r6, r3 | r6 = r3;
| }
0x000606d0 ldr r2, [r6, 0x10] | r2 = *(0xc0f18);
0x000606d2 add r1, sp, 0x98 | r1 += var_98h;
0x000606d4 add r4, pc | r4 = 0xc0f38;
0x000606d6 it ne |
| if (r0 == 2) {
0x000606d8 movne r7, r4 | r7 = r4;
| }
0x000606da mov r0, r7 | r0 = r7;
0x000606dc blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000606de cmp r0, 0 |
| if (r0 == 0) {
0x000606e0 beq 0x60766 | goto label_81;
| }
0x000606e2 ldr.w r2, [sb] | r2 = *(sb);
0x000606e6 add.w lr, sp, 0x158 | lr += var_158h;
0x000606ea ldr r4, [r2, 0x30] | r4 = *((r2 + 0x30));
0x000606ec cmp r4, 0 |
| if (r4 == 0) {
0x000606ee beq.w 0x607fc | goto label_80;
| }
0x000606f2 ldr r0, [sp, 0x98] | r0 = var_98h;
0x000606f4 add.w ip, sp, 0x110 |
0x000606f8 str r0, [sp, 0x50] | var_50h = r0;
0x000606fa ldr r0, [sp, 0x9c] | r0 = var_9ch;
0x000606fc str r0, [sp, 0x4c] | var_4ch = r0;
0x000606fe ldr r0, [sp, 0xa0] | r0 = var_a0h;
0x00060700 str r0, [sp, 0x48] | var_48h = r0;
0x00060702 ldr.w sb, [r2, 0x2c] | sb = *((r2 + 0x2c));
0x00060706 ldrd sl, fp, [r2, 0x34] | __asm ("ldrd sl, fp, [r2, 0x34]");
0x0006070a adds r2, 0x2c | r2 += 0x2c;
0x0006070c ldr r0, [pc, 0x154] |
0x0006070e ldr r1, [pc, 0x158] |
0x00060710 add r0, pc | r0 = 0xc0f78;
0x00060712 add r1, pc | r1 = 0xc0f80;
0x00060714 str r1, [sp, 0x44] | var_44h = r1;
0x00060716 ldr r3, [pc, 0x154] |
0x00060718 add r1, sp, 0xc0 | r1 += var_c0h;
0x0006071a str r0, [sp, 0x160] | var_160h = r0;
0x0006071c add r0, sp, 0x88 | r0 += var_88h;
0x0006071e strd sb, r4, [sp, 0x114] | __asm ("strd sb, r4, [var_114h]");
0x00060722 movs r4, 0 | r4 = 0;
0x00060724 strd r4, r0, [sp, 0xcc] | __asm ("strd r4, r0, [var_d0h]");
0x00060728 add r3, pc | r3 = 0xc0f9a;
0x0006072a ldr r0, [sp, 0x44] | r0 = var_44h;
0x0006072c str r0, [sp, 0xc0] | var_c0h = r0;
0x0006072e ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00060730 str r0, [sp] | *(sp) = r0;
0x00060732 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00060734 str r2, [sp, 0x78] | var_78h = r2;
0x00060736 movs r2, 1 | r2 = 1;
0x00060738 str r0, [sp, 4] | var_4h = r0;
0x0006073a add r0, sp, 0x70 | r0 += var_70h;
0x0006073c str r1, [sp, 0x15c] | var_15ch = r1;
0x0006073e mov r1, r7 | r1 = r7;
0x00060740 strd r5, r3, [sp, 0x88] | __asm ("strd r5, r3, [var_88h]");
0x00060744 str r0, [sp, 8] | var_8h = r0;
0x00060746 mov r0, r8 | r0 = r8;
0x00060748 str.w ip, [sp, 0x158] | __asm ("str.w ip, [var_158h]");
0x0006074c str.w lr, [sp, 0x70] | __asm ("str.w lr, [var_70h]");
0x00060750 strd sl, fp, [sp, 0x11c] | __asm ("strd sl, fp, [var_0hx11c]");
0x00060754 str r4, [sp, 0x110] | var_110h = r4;
0x00060756 str r2, [sp, 0x74] | var_74h = r2;
0x00060758 str r2, [sp, 0xd4] | var_d4h = r2;
0x0006075a strd r2, r4, [sp, 0xc4] | __asm ("strd r2, r4, [var_c8h]");
0x0006075e mov r2, r6 | r2 = r6;
0x00060760 ldr r3, [sp, 0x50] | r3 = var_50h;
| label_82:
0x00060762 bl 0x1b7118 | fcn_001b7118 (r0, r1, r2, r3, r4, r5);
| }
| label_81:
0x00060766 mov r0, r5 | r0 = r5;
0x00060768 bl 0x114880 | fcn_00114880 (r0);
0x0006076c movs r0, 2 | r0 = 2;
0x0006076e bl 0x1106f0 | r0 = fcn_001106f0 (r0, r1);
0x00060772 mov r8, r0 | r8 = r0;
0x00060774 b 0x603b0 | goto label_10;
| label_25:
0x00060776 ldr r0, [pc, 0xf8] |
0x00060778 ldr r2, [pc, 0xf8] |
0x0006077a add r0, pc | r0 = 0xc0ff0;
0x0006077c add r2, pc | r2 = 0xc0ff4;
0x0006077e b 0x60792 | goto label_13;
| label_40:
0x00060780 ldr r0, [pc, 0xf4] |
0x00060782 ldr r2, [pc, 0xf8] |
0x00060784 add r0, pc | r0 = 0xc1000;
0x00060786 add r2, pc | r2 = 0xc1008;
0x00060788 b 0x60792 | goto label_13;
| label_50:
0x0006078a ldr r0, [pc, 0xfc] |
0x0006078c ldr r2, [pc, 0xfc] |
0x0006078e add r0, pc | r0 = 0xc101c;
0x00060790 add r2, pc | r2 = 0xc1020;
| do {
| label_13:
0x00060792 movs r1, 0x22 | r1 = 0x22;
0x00060794 bl 0x29c28 | fcn_00029c28 (r0, r1, r2);
0x00060798 trap | __asm ("trap");
| label_60:
0x0006079a ldr r0, [pc, 0xf4] |
0x0006079c ldr r2, [pc, 0xf4] |
0x0006079e ldr r1, [pc, 0xf8] |
0x000607a0 add r0, pc | r0 = 0xc1036;
0x000607a2 add r2, pc | r2 = 0xc103a;
0x000607a4 add r1, pc | r1 = 0xc1042;
0x000607a6 b 0x607b4 | goto label_83;
| label_61:
0x000607a8 ldr r0, [pc, 0xf8] |
0x000607aa ldr r2, [pc, 0xfc] |
0x000607ac ldr r1, [pc, 0xfc] |
0x000607ae add r0, pc | r0 = 0xc1056;
0x000607b0 add r2, pc | r2 = 0xc105e;
0x000607b2 add r1, pc | r1 = 0xc1062;
| label_83:
0x000607b4 add r7, sp, 0x110 | r7 += var_110h;
0x000607b6 str r0, [sp, 0x114] | var_114h = r0;
0x000607b8 add r0, sp, 0xc0 | r0 += var_c0h;
0x000607ba movs r3, 1 | r3 = 1;
0x000607bc str r7, [sp, 0xd0] | var_d0h = r7;
0x000607be movs r7, 0 | r7 = 0;
0x000607c0 str r3, [sp, 0xd4] | var_d4h = r3;
0x000607c2 str r7, [sp, 0xcc] | var_cch = r7;
0x000607c4 str r7, [sp, 0xc8] | var_c8h = r7;
0x000607c6 str r3, [sp, 0xc4] | var_c4h = r3;
0x000607c8 str.w sl, [sp, 0x110] | __asm ("str.w sl, [var_110h]");
0x000607cc str r2, [sp, 0xc0] | var_c0h = r2;
0x000607ce bl 0x29b38 | fcn_00029b38 (r0, r1);
0x000607d2 trap | __asm ("trap");
| label_33:
0x000607d4 ldr r0, [pc, 0xa8] |
0x000607d6 ldr r2, [pc, 0xac] |
0x000607d8 add r0, pc | r0 = 0xc105c;
0x000607da add r2, pc | r2 = 0xc1064;
0x000607dc b 0x60792 |
| } while (1);
| label_74:
0x000607de ldr r0, [pc, 0xdc] |
0x000607e0 ldr r2, [pc, 0xdc] |
0x000607e2 add r0, pc | r0 = 0xc10a4;
0x000607e4 add r2, pc | r2 = 0xc10a8;
0x000607e6 b 0x60792 | goto label_13;
| label_68:
0x000607e8 ldr r0, [pc, 0xc4] |
0x000607ea ldr r2, [pc, 0xc8] |
0x000607ec add r0, pc | r0 = 0xc10a0;
0x000607ee add r2, pc | r2 = 0xc10a8;
0x000607f0 b 0x60792 | goto label_13;
| label_64:
0x000607f2 ldr r0, [pc, 0xa8] |
0x000607f4 ldr r2, [pc, 0xa8] |
0x000607f6 add r0, pc | r0 = 0xc1098;
0x000607f8 add r2, pc | r2 = 0xc109c;
0x000607fa b 0x60792 | goto label_13;
| label_80:
0x000607fc ldr r0, [pc, 0x14] |
0x000607fe ldr r2, [pc, 0x18] |
0x00060800 add r0, pc | r0 = 0xc1018;
0x00060802 add r2, pc | r2 = 0xc1020;
0x00060804 b 0x60792 | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x6ea84 */
| #include <stdint.h>
|
; (fcn) fcn.0006ea84 () | void fcn_0006ea84 (int16_t arg_10h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int32_t var_20h_2;
| int16_t var_40h;
| int16_t var_68h;
| int32_t var_68h_2;
| int16_t var_70h;
| int16_t var_110h;
| int32_t var_110h_2;
| int16_t var_8h_2;
| int16_t var_124h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006ea84 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006ea88 sub sp, 0x1bc |
0x0006ea8a mov r5, r1 | r5 = r1;
0x0006ea8c mov r8, r0 | r8 = r0;
0x0006ea8e ldrd r0, r1, [r1] | __asm ("ldrd r0, r1, [r1]");
0x0006ea92 str r2, [sp, 0x1c] | var_1ch = r2;
0x0006ea94 eor r0, r0, 1 | r0 ^= 1;
0x0006ea98 orrs r0, r1 | r0 |= r1;
| if (r0 == r1) {
0x0006ea9a bne 0x6eadc |
0x0006ea9c add.w r4, r5, 0x10 | r4 = r5 + 0x10;
0x0006eaa0 add r0, sp, 0x110 | r0 += var_110h;
0x0006eaa2 movs r2, 0x48 | r2 = 0x48;
0x0006eaa4 ldrd r7, r6, [r5, 8] | __asm ("ldrd r7, r6, [r5, 8]");
0x0006eaa8 mov r1, r4 | r1 = r4;
0x0006eaaa blx 0x26b48 | fcn_00026b48 ();
0x0006eaae movs r0, 0 | r0 = 0;
0x0006eab0 movs r1, 3 | r1 = 3;
0x0006eab2 strd r1, r0, [r5, 8] | __asm ("strd r1, r0, [r5, 8]");
0x0006eab6 mov r0, r4 | r0 = r4;
0x0006eab8 movs r1, 0 | r1 = 0;
0x0006eaba movs r2, 0x48 | r2 = 0x48;
0x0006eabc blx 0x2699c | gai_strerror ();
0x0006eac0 eor r0, r7, 3 | r0 = r7 ^ 3;
0x0006eac4 orrs r0, r6 | r0 |= r6;
| if (r0 == r6) {
0x0006eac6 beq.w 0x6ec7a | goto label_0;
| }
0x0006eaca add r0, sp, 0x20 | r0 += var_20h;
0x0006eacc add r1, sp, 0x110 | r1 += var_110h;
0x0006eace adds r0, 8 | r0 += 8;
0x0006ead0 movs r2, 0x48 | r2 = 0x48;
0x0006ead2 strd r7, r6, [sp, 0x20] | __asm ("strd r7, r6, [var_20h]");
0x0006ead6 blx 0x26b48 | fcn_00026b48 ();
0x0006eada b 0x6ebc6 | goto label_1;
| }
0x0006eadc add.w r0, r5, 8 | r0 = r5 + 8;
0x0006eae0 str r0, [sp, 0x18] | var_18h = r0;
0x0006eae2 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0006eae4 add.w sl, sp, 0x110 | sl += var_110h;
0x0006eae8 add.w r7, r5, 0x20 | r7 = r5 + 0x20;
0x0006eaec add.w sb, sp, 0x70 | sb += var_70h;
0x0006eaf0 add.w r1, sl, 8 | r1 += var_8h_2;
0x0006eaf4 str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
0x0006eaf8 str r1, [sp, 0x14] | var_14h = r1;
| if (r0 != 0) {
| do {
0x0006eafa cbnz r0, 0x6eb6e | goto label_2;
| }
0x0006eafc ldrd r0, r1, [r5, 0xc] | __asm ("ldrd r0, r1, [r5, 0xc]");
0x0006eb00 ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x0006eb02 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0006eb04 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0006eb06 cmp r0, 0 |
| if (r0 != 0) {
0x0006eb08 bne 0x6eb8c | goto label_3;
| }
0x0006eb0a mov r0, sl | r0 = sl;
0x0006eb0c mov r1, r7 | r1 = r7;
0x0006eb0e movs r2, 0xa0 | r2 = 0xa0;
0x0006eb10 ldrd r4, r6, [r5, 0x18] | __asm ("ldrd r4, r6, [r5, 0x18]");
0x0006eb14 blx 0x26b48 | fcn_00026b48 ();
0x0006eb18 movs r0, 0 | r0 = 0;
0x0006eb1a movs r1, 3 | r1 = 3;
0x0006eb1c strd r1, r0, [r5, 0x18] | __asm ("strd r1, r0, [r5, 0x18]");
0x0006eb20 mov r0, r7 | r0 = r7;
0x0006eb22 movs r1, 0 | r1 = 0;
0x0006eb24 movs r2, 0xa0 | r2 = 0xa0;
0x0006eb26 blx 0x2699c | gai_strerror ();
0x0006eb2a eor r0, r4, 3 | r0 = r4 ^ 3;
0x0006eb2e orrs r0, r6 | r0 |= r6;
| if (r0 == r6) {
0x0006eb30 beq.w 0x6ec6a | goto label_4;
| }
0x0006eb34 mov r0, sb | r0 = sb;
0x0006eb36 mov r1, sl | r1 = sl;
0x0006eb38 movs r2, 0xa0 | r2 = 0xa0;
0x0006eb3a blx 0x26b48 | fcn_00026b48 ();
0x0006eb3e ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006eb40 mov r1, sb | r1 = sb;
0x0006eb42 movs r2, 0xa0 | r2 = 0xa0;
0x0006eb44 ldrd r8, fp, [r5, 0xc] | __asm ("ldrd r8, fp, [r5, 0xc]");
0x0006eb46 ldrh r3, [r0, 0x18] | r3 = *((r0 + 0x18));
0x0006eb48 strd r4, r6, [sp, 0x110] | __asm ("strd r4, r6, [var_110h]");
0x0006eb4c blx 0x26b48 | fcn_00026b48 ();
0x0006eb50 ldr.w r2, [fp, 0x10] | r2 = *(arg_10h);
0x0006eb52 movs r0, 0x10 | r0 = 0x10;
0x0006eb54 mov r0, r8 | r0 = r8;
0x0006eb56 mov r1, sl | r1 = sl;
0x0006eb58 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0006eb5a mov r6, r0 | r6 = r0;
0x0006eb5c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006eb5e mov r4, r1 | r4 = r1;
0x0006eb60 bl 0x487d8 | fcn_000487d8 (r0);
0x0006eb64 movs r0, 1 | r0 = 1;
0x0006eb66 str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
0x0006eb68 strd r0, r6, [r5, 8] | __asm ("strd r0, r6, [r5, 8]");
0x0006eb6c b 0x6eafa |
| } while (1);
| label_2:
0x0006eb6e cmp r0, 1 |
| if (r0 == 1) {
0x0006eb70 bne 0x6ec5a |
0x0006eb72 ldrd r1, r0, [r5, 0xc] | __asm ("ldrd r1, r0, [r5, 0xc]");
0x0006eb76 add r4, sp, 0x110 | r4 += var_110h;
0x0006eb78 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0006eb7a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006eb7c mov r0, r4 | r0 = r4;
0x0006eb7e blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0006eb80 ldrd r6, r7, [sp, 0x110] | __asm ("ldrd r6, r7, [var_110h]");
0x0006eb84 eor r0, r6, 3 | r0 = r6 ^ 3;
0x0006eb88 orrs r0, r7 | r0 |= r7;
| if (r0 == r7) {
0x0006eb8a bne 0x6eba4 |
| label_3:
0x0006eb8c ldr r5, [sp, 0x10] | r5 = var_10h;
0x0006eb8e movs r1, 0 | r1 = 0;
0x0006eb90 movs r2, 0x48 | r2 = 0x48;
0x0006eb92 movs r4, 0 | r4 = 0;
0x0006eb94 add.w r0, r5, 8 | r0 = r5 + 8;
0x0006eb98 blx 0x2699c | gai_strerror ();
0x0006eb9c movs r0, 3 | r0 = 3;
0x0006eb9e strd r0, r4, [r5] | __asm ("strd r0, r4, [r5]");
0x0006eba2 b 0x6ec54 |
| } else {
0x0006eba4 add r0, sp, 0x20 | r0 += var_20h;
0x0006eba6 add.w r1, r4, 8 | r1 += var_8h_2;
0x0006eba8 lsls r0, r1, 4 | r0 = r1 << 4;
0x0006ebaa adds r0, 8 | r0 += 8;
0x0006ebac movs r2, 0x48 | r2 = 0x48;
0x0006ebae blx 0x26b48 | fcn_00026b48 ();
0x0006ebb2 ldr r4, [sp, 0x18] | r4 = var_18h;
0x0006ebb4 mov r0, r4 | r0 = r4;
0x0006ebb6 bl 0x487d8 | fcn_000487d8 (r0);
0x0006ebb8 cdp2 p0, 0, c2, c15, c2, 0 | __asm ("cdp2 p0, 0, c2, c15, c2, 0");
0x0006ebbc strd r6, r7, [sp, 0x20] | __asm ("strd r6, r7, [var_20h]");
0x0006ebc0 str r0, [r4] | *(r4) = r0;
0x0006ebc2 ldr.w r8, [sp, 0x10] | r8 = var_10h;
| label_1:
0x0006ebc6 add r4, sp, 0x20 | r4 += var_20h;
0x0006ebc8 add.w r6, r4, 0x40 | r6 += var_40h;
0x0006ebcc mov r0, r6 | r0 = r6;
0x0006ebce bl 0x4b7e8 | r0 = fcn_0004b7e8 (r0);
| if (r0 != 0) {
0x0006ebd2 cbz r0, 0x6ebe0 |
0x0006ebd4 add r1, sp, 0x20 | r1 += var_20h;
0x0006ebd6 mov r0, r8 | r0 = r8;
0x0006ebd8 movs r2, 0x50 | r2 = 0x50;
0x0006ebda blx 0x26b48 | fcn_00026b48 ();
0x0006ebde b 0x6ec54 |
| } else {
0x0006ebe0 mov r0, r6 | r0 = r6;
0x0006ebe2 add.w r7, r5, 0xc0 | r7 = r5 + 0xc0;
0x0006ebe6 bl 0x4b938 | fcn_0004b938 (r0);
0x0006ebea mov r0, r4 | r0 = r4;
0x0006ebec mov r1, r7 | r1 = r7;
0x0006ebee bl 0x8efe8 | r0 = fcn_0008efe8 (r0);
0x0006ebf2 ldrd r1, r0, [sp, 0x68] | __asm ("ldrd r1, r0, [var_68h]");
0x0006ebf6 ldr r2, [r0, 0x18] | r2 = *((r0 + 0x18));
0x0006ebf8 add r0, sp, 0x110 | r0 += var_110h;
0x0006ebfa blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0006ebfc add r7, sp, 0x110 | r7 += var_110h;
0x0006ebfe ldr r6, [sp, 0x124] | r6 = var_124h;
0x0006ec00 str r4, [sp, 8] | var_8h = r4;
0x0006ec02 ldm r7, {r0, r1, r2, r3, r7} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
| r7 = *((r7 + 16));
0x0006ec04 strd r7, r6, [sp] | __asm ("strd r7, r6, [sp]");
0x0006ec08 bl 0x8f0c0 | fcn_0008f0c0 (r0, r1, r2, r3, r4);
0x0006ec0c ldrb.w r0, [r5, 0xd0] | r0 = *((r5 + 0xd0));
| if (r0 != 0) {
0x0006ec10 cbz r0, 0x6ec38 |
0x0006ec12 ldrd r4, r5, [sp, 0x68] | __asm ("ldrd r4, r5, [var_68h]");
0x0006ec16 ldr r1, [r5] | r1 = *(r5);
0x0006ec18 mov r0, r4 | r0 = r4;
0x0006ec1a blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0006ec1c ldr r0, [r5, 4] | r0 = *((r5 + 4));
| if (r0 != 0) {
0x0006ec1e cbz r0, 0x6ec26 |
0x0006ec20 mov r0, r4 | r0 = r4;
0x0006ec22 blx 0x26a3c | fcn_00026a3c ();
| }
0x0006ec26 add r0, sp, 0x110 | r0 += var_110h;
0x0006ec28 add r1, sp, 0x20 | r1 += var_20h;
0x0006ec2a movs r2, 0x48 | r2 = 0x48;
0x0006ec2c blx 0x26b48 | fcn_00026b48 ();
0x0006ec30 ldr r5, [pc, 0x54] |
0x0006ec32 movs r4, 1 | r4 = 1;
0x0006ec34 add r5, pc | r5 = 0xdd8c0;
0x0006ec36 b 0x6ec46 |
| } else {
0x0006ec38 add r0, sp, 0x110 | r0 += var_110h;
0x0006ec3a add r1, sp, 0x20 | r1 += var_20h;
0x0006ec3c movs r2, 0x48 | r2 = 0x48;
0x0006ec3e blx 0x26b48 | fcn_00026b48 ();
0x0006ec42 ldrd r4, r5, [sp, 0x68] | __asm ("ldrd r4, r5, [var_68h]");
| }
0x0006ec46 add r1, sp, 0x110 | r1 += var_110h;
0x0006ec48 mov r0, r8 | r0 = r8;
0x0006ec4a movs r2, 0x48 | r2 = 0x48;
0x0006ec4c blx 0x26b48 | fcn_00026b48 ();
0x0006ec50 strd r4, r5, [r8, 0x48] | __asm ("strd r4, r5, [r8, 0x48]");
| }
| }
0x0006ec54 add sp, 0x1bc |
0x0006ec56 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0006ec5a ldr r0, [pc, 0x30] |
0x0006ec5c movs r1, 0x15 | r1 = 0x15;
0x0006ec5e ldr r2, [pc, 0x30] |
0x0006ec60 add r0, pc | r0 = 0xdd8f2;
0x0006ec62 add r2, pc | r2 = 0xdd8f8;
0x0006ec64 bl 0x2af66 | fcn_0002af66 ();
0x0006ec68 trap | __asm ("trap");
| label_4:
0x0006ec6a ldr r0, [pc, 0x28] |
0x0006ec6c movs r1, 0xe | r1 = 0xe;
0x0006ec6e ldr r2, [pc, 0x28] |
0x0006ec70 add r0, pc | r0 = 0xdd90a;
0x0006ec72 add r2, pc | r2 = 0xdd910;
| do {
0x0006ec74 bl 0x29c28 | fcn_00029c28 (r0, r1, r2);
0x0006ec78 trap | __asm ("trap");
| label_0:
0x0006ec7a ldr r0, [pc, 0x20] |
0x0006ec7c movs r1, 0x1e | r1 = 0x1e;
0x0006ec7e ldr r2, [pc, 0x20] |
0x0006ec80 add r0, pc | r0 = 0xdd922;
0x0006ec82 add r2, pc | r2 = 0xdd928;
0x0006ec84 b 0x6ec74 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x77a2e */
| #include <stdint.h>
|
; (fcn) fcn.00077a2e () | void fcn_00077a2e () {
0x00077a2e ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00077a30 ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x00077a32 mov r0, r6 | r0 = r6;
0x00077a34 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r1, r0);
0x00077a36 b 0x77a92 | return void (*0x77a92)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x78ebc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00078ebc () | void fcn_00078ebc (uint32_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_sp_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_2h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b0h;
| int32_t var_8h_2;
| int16_t var_10h_2;
| int8_t var_14h_2;
| int16_t var_18h_2;
| int8_t var_20h_2;
| int16_t var_e0h;
| int32_t var_e0h_2;
| int16_t var_e8h;
| int16_t var_f0h;
| int16_t var_f4h;
| int16_t var_f8h;
| int16_t var_100h;
| int16_t var_104h;
| int16_t var_108h;
| int16_t var_10ch;
| int16_t var_110h;
| int16_t var_111h;
| int16_t var_112h;
| int16_t var_113h;
| int16_t var_114h;
| int16_t var_115h;
| int16_t var_30h_2;
| int16_t var_1e8h;
| int16_t var_1ech;
| int16_t var_1f0h;
| int16_t var_2h_2;
| int16_t var_25fh;
| int16_t var_260h;
| r0 = arg1;
| r1 = arg2;
0x00078ebc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00078ec0 sub sp, 4 |
0x00078ec2 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x00078ec6 sub.w sp, sp, 0x260 |
0x00078eca mov r8, r0 | r8 = r0;
0x00078ecc ldrb.w r0, [r0, 0xf0] | r0 = *((r0 + 0xf0));
0x00078ed0 strd r1, r8, [sp, 0x10] | __asm ("strd r1, r8, [var_14h]");
| if (r0 != 0) {
0x00078ed4 cbz r0, 0x78eea |
0x00078ed6 mov r4, r1 | r4 = r1;
0x00078ed8 cmp r0, 3 |
| if (r0 == 3) {
0x00078eda beq.w 0x79068 | goto label_2;
| }
0x00078ede ldr r0, [pc, 0x2b8] |
0x00078ee0 movs r1, 0x23 | r1 = 0x23;
0x00078ee2 ldr r2, [pc, 0x2b8] |
0x00078ee4 add r0, pc | r0 = 0xf2082;
0x00078ee6 add r2, pc | r2 = 0xf2088;
0x00078ee8 b 0x79678 | goto label_3;
| }
0x00078eea mov r2, r8 | r2 = r8;
0x00078eec add.w ip, sp, 0xe8 |
0x00078ef0 ldm r2!, {r3, r4, r5, r6, r7} | r3 = *(r2!);
| r4 = *((r2! + 4));
| r5 = *((r2! + 8));
| r6 = *((r2! + 12));
| r7 = *((r2! + 16));
0x00078ef2 add.w fp, sp, 0x1f0 |
0x00078ef6 mov r1, ip | r1 = ip;
0x00078ef8 stm r1!, {r3, r4, r5, r6, r7} | *(r1!) = r3;
| *((r1! + 4)) = r4;
| *((r1! + 8)) = r5;
| *((r1! + 12)) = r6;
| *((r1! + 16)) = r7;
0x00078efa ldm r2!, {r3, r4, r5, r6, r7} | r3 = *(r2!);
| r4 = *((r2! + 4));
| r5 = *((r2! + 8));
| r6 = *((r2! + 12));
| r7 = *((r2! + 16));
0x00078efc stm r1!, {r3, r4, r5, r6, r7} | *(r1!) = r3;
| *((r1! + 4)) = r4;
| *((r1! + 8)) = r5;
| *((r1! + 12)) = r6;
| *((r1! + 16)) = r7;
0x00078efe ldm.w r2, {r0, r3, r4, r5, r6, r7} | r0 = *(r2);
| r3 = *((r2 + 4));
| r4 = *((r2 + 8));
| r5 = *((r2 + 12));
| r6 = *((r2 + 16));
| r7 = *((r2 + 20));
0x00078f02 stm r1!, {r0, r3, r4, r5, r6, r7} | *(r1!) = r0;
| *((r1! + 4)) = r3;
| *((r1! + 8)) = r4;
| *((r1! + 12)) = r5;
| *((r1! + 16)) = r6;
| *((r1! + 20)) = r7;
0x00078f04 add.w r0, r8, 0x40 | r0 = r8 + 0x40;
0x00078f08 mov r1, fp | r1 = fp;
0x00078f0a ldm r0!, {r3, r5, r6, r7} | r3 = *(r0!);
| r5 = *((r0! + 4));
| r6 = *((r0! + 8));
| r7 = *((r0! + 12));
0x00078f0c stm r1!, {r3, r5, r6, r7} | *(r1!) = r3;
| *((r1! + 4)) = r5;
| *((r1! + 8)) = r6;
| *((r1! + 12)) = r7;
0x00078f0e ldm r0!, {r3, r4, r5, r6, r7} | r3 = *(r0!);
| r4 = *((r0! + 4));
| r5 = *((r0! + 8));
| r6 = *((r0! + 12));
| r7 = *((r0! + 16));
0x00078f10 stm r1!, {r3, r4, r5, r6, r7} | *(r1!) = r3;
| *((r1! + 4)) = r4;
| *((r1! + 8)) = r5;
| *((r1! + 12)) = r6;
| *((r1! + 16)) = r7;
0x00078f12 ldm.w r0, {r3, r4, r5, r6, r7} | r3 = *(r0);
| r4 = *((r0 + 4));
| r5 = *((r0 + 8));
| r6 = *((r0 + 12));
| r7 = *((r0 + 16));
0x00078f16 stm r1!, {r3, r4, r5, r6, r7} | *(r1!) = r3;
| *((r1! + 4)) = r4;
| *((r1! + 8)) = r5;
| *((r1! + 12)) = r6;
| *((r1! + 16)) = r7;
0x00078f18 ldr r1, [sp, 0x100] | r1 = var_100h;
| if (r1 == 0) {
0x00078f1a cbz r1, 0x78f3c | goto label_4;
| }
| do {
0x00078f1c ldrex r3, [r1] | __asm ("ldrex r3, [r1]");
0x00078f20 adds r0, r3, 1 | r0 = r3 + 1;
0x00078f22 strex r7, r0, [r1] | __asm ("strex r7, r0, [r1]");
0x00078f26 cmp r7, 0 |
0x00078f28 bne 0x78f1c |
| } while (r7 != 0);
0x00078f2a cmp.w r3, -1 |
| if (r3 <= -1) {
0x00078f2e ble.w 0x7967e | goto label_5;
| }
0x00078f32 ldr r0, [sp, 0x104] | r0 = var_104h;
0x00078f34 str r0, [sp, 0x40] | var_40h = r0;
0x00078f36 mov r0, r1 | r0 = r1;
0x00078f38 str r1, [sp, 0x44] | var_44h = r1;
0x00078f3a b 0x78f44 | goto label_6;
| label_4:
0x00078f3c movs r0, 0 | r0 = 0;
0x00078f3e str r0, [sp, 0x44] | var_44h = r0;
0x00078f40 movs r0, 0 | r0 = 0;
0x00078f42 str r0, [sp, 0x40] | var_40h = r0;
| label_6:
0x00078f44 ldr r2, [sp, 0xf0] | r2 = var_f0h;
0x00078f46 add.w r0, ip, 0x30 | r0 += var_30h_2;
0x00078f4a str r2, [sp, 0x58] | var_58h = r2;
0x00078f4c add.w sl, sp, 0x70 | sl += var_70h;
0x00078f50 ldr r2, [sp, 0xf4] | r2 = var_f4h;
0x00078f52 add.w r8, sp, 0xa8 | r8 += var_a8h;
0x00078f56 str r2, [sp, 0x54] | var_54h = r2;
0x00078f58 ldrb.w r2, [sp, 0x115] | r2 = var_115h;
0x00078f5c mov r6, r8 | r6 = r8;
0x00078f5e str r2, [sp, 0x60] | var_60h = r2;
0x00078f60 ldr r2, [sp, 0x10c] | r2 = var_10ch;
0x00078f62 str r2, [sp, 0x6c] | var_6ch = r2;
0x00078f64 ldr r2, [sp, 0x108] | r2 = var_108h;
0x00078f66 vld1.16 {d16, d17}, [r0] | __asm ("vld1.16 {d16, d17}, [r0]");
0x00078f6a add.w r0, sl, 2 | r0 += var_2h;
0x00078f6e str r2, [sp, 0x64] | var_64h = r2;
0x00078f70 ldr r2, [sp, 0xf8] | r2 = var_f8h;
0x00078f72 str r2, [sp, 0x68] | var_68h = r2;
0x00078f74 ldrb.w r2, [sp, 0x113] | r2 = var_113h;
0x00078f78 vst1.16 {d16, d17}, [r0] | __asm ("vst1.16 {d16, d17}, [r0]");
0x00078f7c ldrb.w r0, [sp, 0x111] | r0 = var_111h;
0x00078f80 str r2, [sp, 0x5c] | var_5ch = r2;
0x00078f82 ldrb.w r2, [sp, 0x112] | r2 = var_112h;
0x00078f86 str r0, [sp, 0x48] | var_48h = r0;
0x00078f88 ldrb.w r0, [sp, 0x110] | r0 = var_110h;
0x00078f8c str r0, [sp, 0x4c] | var_4ch = r0;
0x00078f8e str r2, [sp, 0x50] | var_50h = r2;
0x00078f90 ldrb.w r0, [sp, 0x114] | r0 = var_114h;
0x00078f94 ldrd lr, sb, [sp, 0xe8] | __asm ("ldrd lr, sb, [var_4h]");
0x00078f98 ldm.w fp!, {r3, r4, r5, ip} | r3 = *(fp!);
| r4 = *((fp! + 4));
| r5 = *((fp! + 8));
| ip = *((fp! + 12));
0x00078f9c cmp r0, 0 |
0x00078f9e stm.w r6!, {r3, r4, r5, ip} | *(r6!) = r3;
| *((r6! + 4)) = r4;
| *((r6! + 8)) = r5;
| *((r6! + 12)) = ip;
0x00078fa2 ldm.w fp!, {r2, r3, r4, r5, r7} | r2 = *(fp!);
| r3 = *((fp! + 4));
| r4 = *((fp! + 8));
| r5 = *((fp! + 12));
| r7 = *((fp! + 16));
0x00078fa6 stm r6!, {r2, r3, r4, r5, r7} | *(r6!) = r2;
| *((r6! + 4)) = r3;
| *((r6! + 8)) = r4;
| *((r6! + 12)) = r5;
| *((r6! + 16)) = r7;
0x00078fa8 ldm.w fp, {r2, r3, r4, r5, r7} | r2 = *(fp);
| r3 = *((fp + 4));
| r4 = *((fp + 8));
| r5 = *((fp + 12));
| r7 = *((fp + 16));
0x00078fac stm r6!, {r2, r3, r4, r5, r7} | *(r6!) = r2;
| *((r6! + 4)) = r3;
| *((r6! + 8)) = r4;
| *((r6! + 12)) = r5;
| *((r6! + 16)) = r7;
0x00078fae mov r6, r0 | r6 = r0;
0x00078fb0 it ne |
| if (r0 == 0) {
0x00078fb2 movne r6, 1 | r6 = 1;
| }
0x00078fb4 cmp r0, 2 |
0x00078fb6 it eq |
| if (r0 != 2) {
0x00078fb8 moveq r6, r0 | r6 = r0;
| }
0x00078fba orrs.w sb, sb, lr | sb |= lr;
0x00078fbe it ne |
| if (sb == sb) {
0x00078fc0 movne sb, 1 | sb = 1;
| }
| if (r1 == 0) {
0x00078fc4 cbz r1, 0x78fe8 | goto label_7;
| }
0x00078fc6 add r0, sp, 0xe8 | r0 += var_e8h;
0x00078fc8 dmb ish | __asm ("dmb ish");
0x00078fcc adds r0, 0x18 | r0 += 0x18;
| do {
0x00078fce ldrex r2, [r1] | __asm ("ldrex r2, [r1]");
0x00078fd2 subs r3, r2, 1 | r3 = r2 - 1;
0x00078fd4 strex r7, r3, [r1] | __asm ("strex r7, r3, [r1]");
0x00078fd8 cmp r7, 0 |
0x00078fda bne 0x78fce |
| } while (r7 != 0);
0x00078fdc cmp r2, 1 |
0x00078fde itt eq |
| if (r2 == 1) {
0x00078fe0 dmbeq ish | __asm ("dmbeq ish");
| }
0x00078fe4 bl 0x112b9a | fcn_00112b9a (r0, r1);
| label_7:
0x00078fe8 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00078fea ldm.w r8!, {r1, r2, r3, r7} | r1 = *(r8!);
| r2 = *((r8! + 4));
| r3 = *((r8! + 8));
| r7 = *((r8! + 12));
0x00078fee add.w r0, r4, 0x78 | r0 = r4 + 0x78;
0x00078ff2 stm r0!, {r1, r2, r3, r7} | *(r0!) = r1;
| *((r0! + 4)) = r2;
| *((r0! + 8)) = r3;
| *((r0! + 12)) = r7;
0x00078ff4 ldm.w r8!, {r1, r2, r3, r5, r7} | r1 = *(r8!);
| r2 = *((r8! + 4));
| r3 = *((r8! + 8));
| r5 = *((r8! + 12));
| r7 = *((r8! + 16));
0x00078ff8 stm r0!, {r1, r2, r3, r5, r7} | *(r0!) = r1;
| *((r0! + 4)) = r2;
| *((r0! + 8)) = r3;
| *((r0! + 12)) = r5;
| *((r0! + 16)) = r7;
0x00078ffa ldm.w r8, {r1, r2, r3, r5, r7} | r1 = *(r8);
| r2 = *((r8 + 4));
| r3 = *((r8 + 8));
| r5 = *((r8 + 12));
| r7 = *((r8 + 16));
0x00078ffe mov r8, r4 | r8 = r4;
0x00079000 stm r0!, {r1, r2, r3, r5, r7} | *(r0!) = r1;
| *((r0! + 4)) = r2;
| *((r0! + 8)) = r3;
| *((r0! + 12)) = r5;
| *((r0! + 16)) = r7;
0x00079002 add.w r1, r4, 0xde | r1 = r4 + 0xde;
0x00079006 vld1.16 {d16, d17}, [sl]! | __asm ("vld1.16 {d16, d17}, [sl]!");
0x0007900a vst1.16 {d16, d17}, [r1]! | __asm ("vst1.16 {d16, d17}, [r1]!");
0x0007900e ldrh.w r0, [sl] | r0 = *(sl);
0x00079012 strh r0, [r1] | *(r1) = r0;
0x00079014 ldr r0, [sp, 0x54] | r0 = var_54h;
0x00079016 str.w r0, [r4, 0xbc] | __asm ("str.w r0, [r4, 0xbc]");
0x0007901a ldr r0, [sp, 0x58] | r0 = var_58h;
0x0007901c str.w r0, [r4, 0xb8] | __asm ("str.w r0, [r4, 0xb8]");
0x00079020 movs r0, 0 | r0 = 0;
0x00079022 strd sb, r0, [r4, 0xb0] | __asm ("strd sb, r0, [r4, 0xb0]");
0x00079026 ldr r0, [sp, 0x60] | r0 = var_60h;
0x00079028 strb.w r0, [r4, 0xdd] | *((r4 + 0xdd)) = r0;
0x0007902c ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x0007902e strb.w r0, [r4, 0xdb] | *((r4 + 0xdb)) = r0;
0x00079032 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00079034 strb.w r0, [r4, 0xda] | *((r4 + 0xda)) = r0;
0x00079038 ldr r0, [sp, 0x48] | r0 = var_48h;
0x0007903a strb.w r0, [r4, 0xd9] | *((r4 + 0xd9)) = r0;
0x0007903e ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00079040 strb.w r0, [r4, 0xd8] | *((r4 + 0xd8)) = r0;
0x00079044 ldr r0, [sp, 0x44] | r0 = var_44h;
0x00079046 str.w r0, [r4, 0xc8] | __asm ("str.w r0, [r4, 0xc8]");
0x0007904a ldr r0, [sp, 0x40] | r0 = var_40h;
0x0007904c str.w r0, [r4, 0xcc] | __asm ("str.w r0, [r4, 0xcc]");
0x00079050 ldr r0, [sp, 0x64] | r0 = var_64h;
0x00079052 str.w r0, [r4, 0xd0] | __asm ("str.w r0, [r4, 0xd0]");
0x00079056 ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x00079058 str.w r0, [r4, 0xd4] | __asm ("str.w r0, [r4, 0xd4]");
0x0007905c ldr r0, [sp, 0x68] | r0 = var_68h;
0x0007905e strb.w r6, [r4, 0xdc] | *((r4 + 0xdc)) = r6;
0x00079062 str.w r0, [r4, 0xc0] | __asm ("str.w r0, [r4, 0xc0]");
0x00079066 ldr r4, [sp, 0x10] | r4 = var_10h;
| label_2:
0x00079068 add.w fp, sp, 0xe8 |
0x0007906c add r7, sp, 0x1f0 | r7 += var_1f0h;
0x0007906e add.w r0, fp, 0xc | r0 += var_f4h;
0x00079072 str r0, [sp, 0xc] | var_ch = r0;
0x00079074 adds r0, r7, 2 | r0 += var_2h_2;
0x00079076 str r0, [sp, 0x64] | var_64h = r0;
0x00079078 add.w r0, fp, 4 | r0 += var_4h;
0x0007907c str r0, [sp, 0x60] | var_60h = r0;
0x0007907e add r0, sp, 0xe0 | r0 += var_e0h;
0x00079080 vmov.i32 q4, 0 | __asm ("vmov.i32 q4, 0");
0x00079084 add.w r5, r8, 0xe4 | r5 = r8 + 0xe4;
0x00079088 adds r0, 4 | r0 += 4;
0x0007908a str r0, [sp, 4] | var_sp_4h = r0;
0x0007908c add.w r0, r8, 0xe0 | r0 = r8 + 0xe0;
0x00079090 str r0, [sp, 0x68] | var_68h = r0;
0x00079092 add.w r0, r8, 0x78 | r0 = r8 + 0x78;
0x00079096 str r0, [sp, 0x18] | var_18h = r0;
0x00079098 str r5, [sp, 0x6c] | var_6ch = r5;
| do {
| label_0:
0x0007909a mov r0, fp | r0 = fp;
0x0007909c mov r1, r5 | r1 = r5;
0x0007909e mov r2, r4 | r2 = r4;
0x000790a0 movs r3, 0 | r3 = 0;
0x000790a2 mov.w sb, 0 | sb = 0;
0x000790a6 bl 0x1b0374 | fcn_001b0374 (r0, r1, r2, r3);
0x000790aa ldr r0, [sp, 0xe8] | r0 = var_e8h;
0x000790ac cmp r0, 2 |
| if (r0 == 2) {
0x000790ae beq 0x7911c | goto label_8;
| }
0x000790b0 ldrd sb, sl, [sp, 0xec] | __asm ("ldrd sb, sl, [var_4h]");
| if (r0 != 0) {
0x000790b4 cbnz r0, 0x79124 | goto label_9;
| }
0x000790b6 ldr r0, [sp, 0x68] | r0 = var_68h;
0x000790b8 ldr r5, [r0] | r5 = *(r0);
0x000790ba adds r0, r5, 1 | r0 = r5 + 1;
| if (r0 == r5) {
0x000790bc beq.w 0x7966e | goto label_10;
| }
0x000790c0 ldr r0, [sp, 0x64] | r0 = var_64h;
0x000790c2 movs r1, 0 | r1 = 0;
0x000790c4 movs r2, 0x6c | r2 = 0x6c;
0x000790c6 blx 0x2699c | gai_strerror ();
0x000790ca movs r0, 1 | r0 = 1;
0x000790cc movw r3, 0x800 |
0x000790d0 strh.w r0, [sp, 0x1f0] | var_1f0h = r0;
0x000790d4 movs r0, 0x6e | r0 = 0x6e;
0x000790d6 add r2, sp, 0x1e8 | r2 += var_1e8h;
0x000790d8 str r0, [sp, 0x1e8] | var_1e8h = r0;
0x000790da mov r0, r5 | r0 = r5;
0x000790dc mov r1, r7 | r1 = r7;
0x000790de movt r3, 8 | r3 = 0x80800;
0x000790e2 blx 0x26c54 | r0 = malloc (r0);
0x000790e6 mov r5, r0 | r5 = r0;
0x000790e8 adds r0, 1 | r0++;
| if (r0 != 1) {
0x000790ea bne 0x79128 | goto label_11;
| }
0x000790ec blx 0x26e78 | r0 = fcn_00026e78 ();
0x000790f0 ldr r5, [r0] | r5 = *(r0);
0x000790f2 movs r1, 0 | r1 = 0;
0x000790f4 movs r6, 1 | r6 = 1;
0x000790f6 str r1, [sp, 0xec] | var_4h = r1;
0x000790f8 str r6, [sp, 0xe8] | var_e8h = r6;
0x000790fa mov r0, r5 | r0 = r5;
0x000790fc str r5, [sp, 0xf0] | var_f0h = r5;
0x000790fe bl 0x18e4e8 | r0 = fcn_0018e4e8 (r0);
0x00079102 uxtb r0, r0 | r0 = (int8_t) r0;
0x00079104 cmp r0, 0xd |
| if (r0 != 0xd) {
0x00079106 bne 0x79140 | goto label_12;
| }
0x00079108 ldr r5, [sp, 0x6c] | r5 = var_6ch;
0x0007910a mov r1, sb | r1 = sb;
0x0007910c mov r2, sl | r2 = sl;
0x0007910e mov r0, r5 | r0 = r5;
0x00079110 bl 0x1b0730 | fcn_001b0730 (r0, r1, r2);
0x00079114 ldr r0, [sp, 0x60] | r0 = var_60h;
0x00079116 bl 0x18e2aa | fcn_0018e2aa (r0);
0x0007911a b 0x7909a |
| } while (1);
| label_8:
0x0007911c movs r6, 2 | r6 = 2;
0x0007911e mov.w sl, 0 | sl = 0;
0x00079122 b 0x79146 | goto label_13;
| label_9:
0x00079124 movs r6, 1 | r6 = 1;
0x00079126 b 0x79146 | goto label_13;
| label_11:
0x00079128 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0007912a mov r1, r7 | r1 = r7;
0x0007912c movs r2, 0x6e | r2 = 0x6e;
0x0007912e blx 0x26b48 | fcn_00026b48 ();
0x00079132 ldr.w sl, [sp, 0x1e8] | sl = var_1e8h;
0x00079136 movs r6, 0 | r6 = 0;
0x00079138 mov sb, r5 | sb = r5;
0x0007913a strd r5, sl, [sp, 0xec] | __asm ("strd r5, sl, [var_4h]");
0x0007913e b 0x79146 | goto label_13;
| label_12:
0x00079140 mov.w sb, 0 | sb = 0;
0x00079144 mov sl, r5 | sl = r5;
| label_13:
0x00079146 cmp r6, 0 |
| if (r6 != 0) {
0x00079148 bne.w 0x7962c | goto label_14;
| }
0x0007914c mov r0, fp | r0 = fp;
0x0007914e mov r1, sb | r1 = sb;
0x00079150 bl 0x1b0b38 | fcn_001b0b38 (r0, r1);
0x00079154 add.w sl, sp, 0xe8 | sl += var_e8h;
0x00079158 ldm.w sl, {r0, sb, sl} | r0 = *(sl);
| sb = *((sl + 4));
| sl = *((sl + 8));
0x0007915c cmp r0, 0 |
| if (r0 != 0) {
0x0007915e bne.w 0x7963a | goto label_15;
| }
0x00079162 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00079164 mov r0, fp | r0 = fp;
0x00079166 ldrd r5, r4, [sp, 0xf4] | __asm ("ldrd r5, r4, [var_f4h]");
0x0007916a bl 0x67d98 | fcn_00067d98 (r0, r1);
0x0007916e ldr.w fp, [r8, 0xc8] | fp = *((r8 + 0xc8));
0x00079172 strd r5, r4, [sp, 0x54] | __asm ("strd r5, r4, [var_58h]");
0x00079176 cmp.w fp, 0 |
| if (fp == 0) {
0x0007917a beq 0x791a0 | goto label_16;
| }
| do {
0x0007917c ldrex r0, [fp] | __asm ("ldrex r0, [fp]");
0x00079180 adds r1, r0, 1 | r1 = r0 + 1;
0x00079182 strex r2, r1, [fp] | __asm ("strex r2, r1, [fp]");
0x00079186 cmp r2, 0 |
0x00079188 bne 0x7917c |
| } while (r2 != 0);
0x0007918a cmp.w r0, -1 |
| if (r0 <= -1) {
0x0007918e ble.w 0x7967e | goto label_5;
| }
0x00079192 ldr.w r0, [r8, 0xcc] | r0 = *((r8 + 0xcc));
0x00079196 b 0x791a6 | goto label_17;
| label_16:
0x000791a0 mov.w fp, 0 |
0x000791a4 movs r0, 0 | r0 = 0;
| label_17:
0x000791a6 str r0, [sp, 0x50] | var_50h = r0;
0x000791a8 add r3, sp, 0xe8 | r3 += var_e8h;
0x000791aa ldr.w r0, [r8, 0xb0] | r0 = *((r8 + 0xb0));
0x000791ae add.w ip, sp, 0xa8 |
0x000791b2 str r0, [sp, 0x5c] | var_5ch = r0;
0x000791b4 ldrd lr, r0, [r8, 0xb4] | __asm ("ldrd lr, r0, [r8, 0xb4]");
0x000791b8 mov r6, ip | r6 = ip;
0x000791ba ldrb.w r7, [r8, 0xdc] | r7 = *((r8 + 0xdc));
0x000791be str r0, [sp, 0x44] | var_44h = r0;
0x000791c0 ldr.w r0, [r8, 0xbc] | r0 = *((r8 + 0xbc));
0x000791c4 cmp r7, 0 |
0x000791c6 str r0, [sp, 0x48] | var_48h = r0;
0x000791c8 ldr.w r0, [r8, 0xc0] | r0 = *((r8 + 0xc0));
0x000791cc str r0, [sp, 0x4c] | var_4ch = r0;
0x000791ce ldrb.w r0, [r8, 0xdd] | r0 = *((r8 + 0xdd));
0x000791d2 str r0, [sp, 0x28] | var_28h = r0;
0x000791d4 ldrd r1, r0, [r8, 0xd0] | __asm ("ldrd r1, r0, [r8, 0xd0]");
0x000791d8 strd r1, r0, [sp, 0x3c] | __asm ("strd r1, r0, [var_40h]");
0x000791dc ldrb.w r0, [r8, 0xdb] | r0 = *((r8 + 0xdb));
0x000791e0 str r0, [sp, 0x2c] | var_2ch = r0;
0x000791e2 ldrb.w r0, [r8, 0xda] | r0 = *((r8 + 0xda));
0x000791e6 str r0, [sp, 0x30] | var_30h = r0;
0x000791e8 ldrb.w r0, [r8, 0xd9] | r0 = *((r8 + 0xd9));
0x000791ec str r0, [sp, 0x34] | var_34h = r0;
0x000791ee ldrb.w r0, [r8, 0xd8] | r0 = *((r8 + 0xd8));
0x000791f2 str r0, [sp, 0x38] | var_38h = r0;
0x000791f4 ldm r3!, {r0, r1, r4, r5} | r0 = *(r3!);
| r1 = *((r3! + 4));
| r4 = *((r3! + 8));
| r5 = *((r3! + 12));
0x000791f6 stm r6!, {r0, r1, r4, r5} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r4;
| *((r6! + 12)) = r5;
0x000791f8 ldm r3!, {r0, r1, r2, r4, r5} | r0 = *(r3!);
| r1 = *((r3! + 4));
| r2 = *((r3! + 8));
| r4 = *((r3! + 12));
| r5 = *((r3! + 16));
0x000791fa stm r6!, {r0, r1, r2, r4, r5} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r4;
| *((r6! + 16)) = r5;
0x000791fc ldm.w r3, {r0, r1, r2, r4, r5} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r4 = *((r3 + 12));
| r5 = *((r3 + 16));
0x00079200 stm r6!, {r0, r1, r2, r4, r5} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r4;
| *((r6! + 16)) = r5;
0x00079202 mov r0, ip | r0 = ip;
0x00079204 add.w ip, sp, 0x70 |
0x00079208 ldm r0!, {r2, r3, r4, r5} | r2 = *(r0!);
| r3 = *((r0! + 4));
| r4 = *((r0! + 8));
| r5 = *((r0! + 12));
0x0007920a mov r1, ip | r1 = ip;
0x0007920c stm r1!, {r2, r3, r4, r5} | *(r1!) = r2;
| *((r1! + 4)) = r3;
| *((r1! + 8)) = r4;
| *((r1! + 12)) = r5;
0x0007920e ldm r0!, {r2, r3, r4, r5, r6} | r2 = *(r0!);
| r3 = *((r0! + 4));
| r4 = *((r0! + 8));
| r5 = *((r0! + 12));
| r6 = *((r0! + 16));
0x00079210 stm r1!, {r2, r3, r4, r5, r6} | *(r1!) = r2;
| *((r1! + 4)) = r3;
| *((r1! + 8)) = r4;
| *((r1! + 12)) = r5;
| *((r1! + 16)) = r6;
0x00079212 ldm.w r0, {r2, r3, r4, r5, r6} | r2 = *(r0);
| r3 = *((r0 + 4));
| r4 = *((r0 + 8));
| r5 = *((r0 + 12));
| r6 = *((r0 + 16));
0x00079216 mov r0, r7 | r0 = r7;
0x00079218 stm r1!, {r2, r3, r4, r5, r6} | *(r1!) = r2;
| *((r1! + 4)) = r3;
| *((r1! + 8)) = r4;
| *((r1! + 12)) = r5;
| *((r1! + 16)) = r6;
0x0007921a it ne |
| if (r7 == 0) {
0x0007921c movne r0, 1 | r0 = 1;
| }
0x0007921e cmp r7, 2 |
0x00079220 it eq |
| if (r7 != 2) {
0x00079222 moveq r0, r7 | r0 = r7;
| }
0x00079224 str r0, [sp, 0x24] | var_24h = r0;
0x00079226 ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x00079228 orrs.w r0, r0, lr | r0 |= lr;
0x0007922c it ne |
| if (r0 == r0) {
0x0007922e movne r0, 1 | r0 = 1;
| }
0x00079230 str r0, [sp, 0x5c] | var_5ch = r0;
0x00079232 ldr.w r0, [r8, 0xc8] | r0 = *((r8 + 0xc8));
0x00079236 cmp r0, 0 |
| if (r0 != 0) {
0x00079238 beq 0x792fa |
0x0007923a ldr.w r8, [r8, 0xcc] | r8 = *((r8 + 0xcc));
0x0007923e movs r1, 8 | r1 = 8;
0x00079240 str r0, [sp, 0x20] | var_20h = r0;
0x00079242 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00079246 str r0, [sp, 0x1c] | var_1ch = r0;
0x00079248 mov.w r0, 0x180 | r0 = 0x180;
0x0007924c bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x00079250 cmp r0, 0 |
| if (r0 == 0) {
0x00079252 beq.w 0x79682 | goto label_18;
| }
0x00079256 mov r1, r0 | r1 = r0;
0x00079258 movs r0, 0 | r0 = 0;
0x0007925a add r3, sp, 0x70 | r3 += var_70h;
0x0007925c ldr r2, [pc, 0x3c8] |
0x0007925e strd r0, r0, [r1] | __asm ("strd r0, r0, [r1]");
0x00079262 add.w ip, r1, 8 |
0x00079266 ldm r3!, {r0, r4, r5, r6} | r0 = *(r3!);
| r4 = *((r3! + 4));
| r5 = *((r3! + 8));
| r6 = *((r3! + 12));
0x00079268 add r2, pc | r2 = 0xf2894;
0x0007926a stm.w ip!, {r0, r4, r5, r6} | *(ip!) = r0;
| *((ip! + 4)) = r4;
| *((ip! + 8)) = r5;
| *((ip! + 12)) = r6;
0x0007926e ldm r3!, {r0, r4, r5, r6, r7} | r0 = *(r3!);
| r4 = *((r3! + 4));
| r5 = *((r3! + 8));
| r6 = *((r3! + 12));
| r7 = *((r3! + 16));
0x00079270 stm.w ip!, {r0, r4, r5, r6, r7} | *(ip!) = r0;
| *((ip! + 4)) = r4;
| *((ip! + 8)) = r5;
| *((ip! + 12)) = r6;
| *((ip! + 16)) = r7;
0x00079274 ldm.w r3, {r0, r4, r5, r6, r7} | r0 = *(r3);
| r4 = *((r3 + 4));
| r5 = *((r3 + 8));
| r6 = *((r3 + 12));
| r7 = *((r3 + 16));
0x00079278 stm.w ip, {r0, r4, r5, r6, r7} | *(ip) = r0;
| *((ip + 4)) = r4;
| *((ip + 8)) = r5;
| *((ip + 12)) = r6;
| *((ip + 16)) = r7;
0x0007927c movs r0, 0 | r0 = 0;
0x0007927e ldr r3, [sp, 0x54] | r3 = var_54h;
0x00079280 str r3, [r1, 0x78] | *((r1 + 0x78)) = r3;
0x00079282 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00079284 str r3, [r1, 0x7c] | *((r1 + 0x7c)) = r3;
0x00079286 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00079288 strb.w r3, [r1, 0x6d] | *((r1 + 0x6d)) = r3;
0x0007928c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007928e strb.w r3, [r1, 0x6c] | *((r1 + 0x6c)) = r3;
0x00079292 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00079294 strb.w r3, [r1, 0x6b] | *((r1 + 0x6b)) = r3;
0x00079298 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0007929a strb.w r3, [r1, 0x6a] | *((r1 + 0x6a)) = r3;
0x0007929e ldr r3, [sp, 0x34] | r3 = var_34h;
0x000792a0 strb.w r3, [r1, 0x69] | *((r1 + 0x69)) = r3;
0x000792a4 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000792a6 strb.w r3, [r1, 0x68] | *((r1 + 0x68)) = r3;
0x000792aa ldrd r7, r3, [sp, 0x3c] | __asm ("ldrd r7, r3, [var_40h]");
0x000792ae strd r7, r3, [r1, 0x60] | __asm ("strd r7, r3, [r1, 0x60]");
0x000792b2 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000792b4 strd r3, r0, [r1, 0x40] | __asm ("strd r3, r0, [r1, 0x40]");
0x000792b8 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000792ba str r3, [r1, 0x48] | *((r1 + 0x48)) = r3;
0x000792bc ldr r3, [sp, 0x48] | r3 = var_48h;
0x000792be str r3, [r1, 0x4c] | *((r1 + 0x4c)) = r3;
0x000792c0 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000792c2 strh.w r0, [r1, 0x6e] | *((r1 + 0x6e)) = r0;
0x000792c6 strd r3, r0, [r1, 0x50] | __asm ("strd r3, r0, [r1, 0x50]");
0x000792ca ldr r0, [sp, 0x50] | r0 = var_50h;
0x000792cc str r0, [r1, 0x5c] | *((r1 + 0x5c)) = r0;
0x000792ce ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000792d0 str.w sb, [r1, 0x70] | __asm ("str.w sb, [r1, 0x70]");
0x000792d4 adds r0, 7 | r0 += 7;
0x000792d6 str.w sl, [r1, 0x74] | __asm ("str.w sl, [r1, 0x74]");
0x000792da str.w fp, [r1, 0x58] | __asm ("str.w fp, [r1, 0x58]");
0x000792de bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x000792e2 ldr r7, [sp, 0x20] | r7 = var_20h;
0x000792e4 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000792e8 add r0, r7 | r0 += r7;
0x000792ea blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000792ec ldrd r4, r8, [sp, 0x10] | __asm ("ldrd r4, r8, [var_14h]");
0x000792f0 add.w fp, sp, 0xe8 |
0x000792f4 add r7, sp, 0x1f0 | r7 += var_1f0h;
0x000792f6 ldr r5, [sp, 0x6c] | r5 = var_6ch;
0x000792f8 b 0x7909a | goto label_0;
| }
0x000792fa mov r4, ip | r4 = ip;
0x000792fc bl 0x1ae138 | r0 = fcn_001ae138 (r0);
0x00079300 strd r1, r0, [sp, 0x1c] | __asm ("strd r1, r0, [var_1ch]");
0x00079304 ldr r0, [pc, 0x38c] |
0x00079306 add r0, pc | r0 = 0xf299e;
0x00079308 bl 0x1ae094 | fcn_001ae094 (r0);
0x0007930c strd r0, r1, [sp, 0xe0] | __asm ("strd r0, r1, [var_e0h]");
0x00079310 mov r2, r4 | r2 = r4;
0x00079312 mov r8, r1 | r8 = r1;
0x00079314 add r7, sp, 0x1f0 | r7 += var_1f0h;
0x00079316 ldm r2!, {r1, r3, r4, r6} | r1 = *(r2!);
| r3 = *((r2! + 4));
| r4 = *((r2! + 8));
| r6 = *((r2! + 12));
0x00079318 mov ip, r7 |
0x0007931a stm.w ip!, {r1, r3, r4, r6} | *(ip!) = r1;
| *((ip! + 4)) = r3;
| *((ip! + 8)) = r4;
| *((ip! + 12)) = r6;
0x0007931e ldm r2!, {r1, r3, r4, r5, r6} | r1 = *(r2!);
| r3 = *((r2! + 4));
| r4 = *((r2! + 8));
| r5 = *((r2! + 12));
| r6 = *((r2! + 16));
0x00079320 stm.w ip!, {r1, r3, r4, r5, r6} | *(ip!) = r1;
| *((ip! + 4)) = r3;
| *((ip! + 8)) = r4;
| *((ip! + 12)) = r5;
| *((ip! + 16)) = r6;
0x00079324 ldm.w r2, {r1, r3, r4, r5, r6} | r1 = *(r2);
| r3 = *((r2 + 4));
| r4 = *((r2 + 8));
| r5 = *((r2 + 12));
| r6 = *((r2 + 16));
0x00079328 stm.w ip, {r1, r3, r4, r5, r6} | *(ip) = r1;
| *((ip + 4)) = r3;
| *((ip + 8)) = r4;
| *((ip + 12)) = r5;
| *((ip + 16)) = r6;
0x0007932c add.w r6, r8, 8 | r6 += var_b0h;
| do {
0x00079330 ldrex r1, [r8] | __asm ("ldrex r1, [r8]");
0x00079334 adds r2, r1, 1 | r2 = r1 + 1;
0x00079336 strex r3, r2, [r8] | __asm ("strex r3, r2, [r8]");
0x0007933a cmp r3, 0 |
0x0007933c bne 0x79330 |
| } while (r3 != 0);
0x0007933e cmp r0, 0 |
| if (r0 != 0) {
0x00079340 beq.w 0x79460 |
0x00079344 cmp.w r1, -1 |
| if (r1 <= -1) {
0x00079348 ble.w 0x7967e | goto label_5;
| }
0x0007934c mov.w r0, 0x1c0 | r0 = 0x1c0;
0x00079350 movs r1, 8 | r1 = 8;
0x00079352 str r6, [sp, 8] | var_8h = r6;
0x00079354 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x00079358 cmp r0, 0 |
| if (r0 == 0) {
0x0007935a beq.w 0x79688 | goto label_19;
| }
0x0007935e mov r7, r0 | r7 = r0;
0x00079360 ldr r0, [pc, 0x33c] |
0x00079362 ldrd r3, r2, [sp, 0x1c] | __asm ("ldrd r3, r2, [var_1ch]");
0x00079366 movs r1, 0 | r1 = 0;
0x00079368 add r0, pc | r0 = 0xf2a0c;
0x0007936a str r0, [r7, 8] | *((r7 + 8)) = r0;
0x0007936c add.w r0, r7, 0x28 | r0 = r7 + 0x28;
0x00079370 strd r1, r1, [r7, 0x10] | __asm ("strd r1, r1, [r7, 0x10]");
0x00079374 strd r2, r3, [r7, 0x20] | __asm ("strd r2, r3, [r7, 0x20]");
0x00079378 movs r2, 0xcc | r2 = 0xcc;
0x0007937a strd r2, r1, [r7] | __asm ("strd r2, r1, [r7]");
0x0007937e add r1, sp, 0x1f0 | r1 += var_1f0h;
0x00079380 str.w r8, [r7, 0x18] | __asm ("str.w r8, [r7, 0x18]");
0x00079384 vst1.64 {d8, d9}, [r0]! | __asm ("vst1.64 {d8, d9}, [r0]!");
0x00079388 ldm r1!, {r2, r3, r5, r6} | r2 = *(r1!);
| r3 = *((r1! + 4));
| r5 = *((r1! + 8));
| r6 = *((r1! + 12));
0x0007938a stm r0!, {r2, r3, r5, r6} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r5;
| *((r0! + 12)) = r6;
0x0007938c ldm r1!, {r2, r3, r4, r5, r6} | r2 = *(r1!);
| r3 = *((r1! + 4));
| r4 = *((r1! + 8));
| r5 = *((r1! + 12));
| r6 = *((r1! + 16));
0x0007938e stm r0!, {r2, r3, r4, r5, r6} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r5;
| *((r0! + 16)) = r6;
0x00079390 ldm.w r1, {r2, r3, r4, r5, r6} | r2 = *(r1);
| r3 = *((r1 + 4));
| r4 = *((r1 + 8));
| r5 = *((r1 + 12));
| r6 = *((r1 + 16));
0x00079394 stm r0!, {r2, r3, r4, r5, r6} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r5;
| *((r0! + 16)) = r6;
0x00079396 movs r5, 0 | r5 = 0;
0x00079398 mov.w r2, 0x100 | r2 = 0x100;
0x0007939c ldr r0, [sp, 0x54] | r0 = var_54h;
0x0007939e str.w r0, [r7, 0xa8] | __asm ("str.w r0, [r7, 0xa8]");
0x000793a2 ldr r0, [sp, 0x58] | r0 = var_58h;
0x000793a4 str.w r0, [r7, 0xac] | __asm ("str.w r0, [r7, 0xac]");
0x000793a8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000793aa strb.w r0, [r7, 0x9d] | *((r7 + 0x9d)) = r0;
0x000793ae ldr r0, [sp, 0x24] | r0 = var_24h;
0x000793b0 strb.w r0, [r7, 0x9c] | *((r7 + 0x9c)) = r0;
0x000793b4 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000793b6 strb.w r0, [r7, 0x9b] | *((r7 + 0x9b)) = r0;
0x000793ba ldr r0, [sp, 0x30] | r0 = var_30h;
0x000793bc strb.w r0, [r7, 0x9a] | *((r7 + 0x9a)) = r0;
0x000793c0 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000793c2 strb.w r0, [r7, 0x99] | *((r7 + 0x99)) = r0;
0x000793c6 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000793c8 strb.w r0, [r7, 0x98] | *((r7 + 0x98)) = r0;
0x000793cc ldrd r1, r0, [sp, 0x3c] | __asm ("ldrd r1, r0, [var_40h]");
0x000793d0 strd r1, r0, [r7, 0x90] | __asm ("strd r1, r0, [r7, 0x90]");
0x000793d4 add.w r1, r7, 0x80 | r1 = r7 + 0x80;
0x000793d8 ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x000793da strd r0, r5, [r7, 0x70] | __asm ("strd r0, r5, [r7, 0x70]");
0x000793de ldr r0, [sp, 0x44] | r0 = var_44h;
0x000793e0 str r0, [r7, 0x78] | *((r7 + 0x78)) = r0;
0x000793e2 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000793e4 str r0, [r7, 0x7c] | *((r7 + 0x7c)) = r0;
0x000793e6 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x000793e8 str.w sb, [r7, 0xa0] | __asm ("str.w sb, [r7, 0xa0]");
0x000793ec stm.w r1, {r0, r5, fp} | *(r1) = r0;
| *((r1 + 4)) = r5;
| *((r1 + 8)) = fp;
0x000793f0 add.w fp, sp, 0xe8 |
0x000793f4 ldr r0, [sp, 0x50] | r0 = var_50h;
0x000793f6 mov r1, fp | r1 = fp;
0x000793f8 str.w r0, [r7, 0x8c] | __asm ("str.w r0, [r7, 0x8c]");
0x000793fc add.w r0, r7, 0xb0 | r0 = r7 + 0xb0;
0x00079400 str.w sl, [r7, 0xa4] | __asm ("str.w sl, [r7, 0xa4]");
0x00079404 strh.w r5, [r7, 0x9e] | *((r7 + 0x9e)) = r5;
0x00079408 blx 0x26b48 | fcn_00026b48 ();
0x0007940c add.w r0, r7, 0x1b0 | r0 = r7 + 0x1b0;
0x00079410 add r4, sp, 0xa8 | r4 += var_a8h;
0x00079412 vst1.64 {d8, d9}, [r0] | __asm ("vst1.64 {d8, d9}, [r0]");
0x00079416 ldrd r0, r1, [r8, 8] | __asm ("ldrd r0, r1, [var_b0h]");
0x0007941a strd r0, r1, [r7, 0x10] | __asm ("strd r0, r1, [r7, 0x10]");
0x0007941e add.w r1, r8, 0x10 | r1 += var_10h_2;
0x00079422 mov r0, r4 | r0 = r4;
0x00079424 bl 0x1ab3b4 | fcn_001ab3b4 (r0, r1, r2);
0x00079428 ldr r0, [sp, 0xac] | r0 = var_ach;
0x0007942a mov sb, r7 | sb = r7;
0x0007942c ldrb.w r1, [sp, 0xb0] | r1 = var_b0h;
0x00079430 strb.w r1, [sp, 0x1ec] | var_1ech = r1;
0x00079434 ldrb r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x00079436 str r0, [sp, 0x1e8] | var_1e8h = r0;
0x00079438 cmp r2, 0 |
| if (r2 == 0) {
0x0007943a beq.w 0x79596 | goto label_20;
| }
0x0007943e str r0, [sp, 0xa8] | var_a8h = r0;
0x00079440 mov r0, r4 | r0 = r4;
0x00079442 strb.w r1, [sp, 0xac] | var_ach = r1;
0x00079446 bl 0x46f64 | fcn_00046f64 (r0, r1);
0x0007944a mov r0, r4 | r0 = r4;
0x0007944c str.w sb, [sp, 0xa8] | __asm ("str.w sb, [var_a8h]");
0x00079450 bl 0x1a5790 | fcn_001a5790 (r0, r1);
0x00079454 ldr.w r0, [sb, 8] | r0 = *((sb + 8));
0x00079458 ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x0007945a mov r0, sb | r0 = sb;
0x0007945c blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0007945e b 0x795be | goto label_21;
| }
0x00079460 cmp.w r1, -1 |
| if (r1 <= -1) {
0x00079464 ble.w 0x7967e | goto label_5;
| }
0x00079468 mov.w r0, 0x1c0 | r0 = 0x1c0;
0x0007946c movs r1, 8 | r1 = 8;
0x0007946e mov r5, r7 | r5 = r7;
0x00079470 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x00079474 cmp r0, 0 |
| if (r0 == 0) {
0x00079476 beq.w 0x79688 | goto label_19;
| }
0x0007947a ldr r4, [pc, 0x21c] |
0x0007947c mov r7, r0 | r7 = r0;
0x0007947e ldrd r3, r2, [sp, 0x1c] | __asm ("ldrd r3, r2, [var_1ch]");
0x00079482 movs r1, 0 | r1 = 0;
0x00079484 add r4, pc | r4 = 0xf2b22;
0x00079486 strd r1, r1, [r0, 0x10] | __asm ("strd r1, r1, [r0, 0x10]");
0x0007948a str.w r8, [r0, 0x18] | __asm ("str.w r8, [r0, 0x18]");
0x0007948e strd r2, r3, [r7, 0x20] | __asm ("strd r2, r3, [r7, 0x20]");
0x00079492 movs r2, 0xcc | r2 = 0xcc;
0x00079494 strd r2, r1, [r0] | __asm ("strd r2, r1, [r0]");
0x00079498 mov r1, r5 | r1 = r5;
0x0007949a str r4, [r0, 8] | *((r0 + 8)) = r4;
0x0007949c adds r0, 0x28 | r0 += 0x28;
0x0007949e vst1.64 {d8, d9}, [r0]! | __asm ("vst1.64 {d8, d9}, [r0]!");
0x000794a2 ldm r1!, {r2, r3, r5, r6} | r2 = *(r1!);
| r3 = *((r1! + 4));
| r5 = *((r1! + 8));
| r6 = *((r1! + 12));
0x000794a4 stm r0!, {r2, r3, r5, r6} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r5;
| *((r0! + 12)) = r6;
0x000794a6 ldm r1!, {r2, r3, r4, r5, r6} | r2 = *(r1!);
| r3 = *((r1! + 4));
| r4 = *((r1! + 8));
| r5 = *((r1! + 12));
| r6 = *((r1! + 16));
0x000794a8 stm r0!, {r2, r3, r4, r5, r6} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r5;
| *((r0! + 16)) = r6;
0x000794aa ldm.w r1, {r2, r3, r4, r5, r6} | r2 = *(r1);
| r3 = *((r1 + 4));
| r4 = *((r1 + 8));
| r5 = *((r1 + 12));
| r6 = *((r1 + 16));
0x000794ae stm r0!, {r2, r3, r4, r5, r6} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r5;
| *((r0! + 16)) = r6;
0x000794b0 movs r0, 0 | r0 = 0;
0x000794b2 ldr r1, [sp, 0x54] | r1 = var_54h;
0x000794b4 str.w r1, [r7, 0xa8] | __asm ("str.w r1, [r7, 0xa8]");
0x000794b8 ldr r1, [sp, 0x58] | r1 = var_58h;
0x000794ba str.w r1, [r7, 0xac] | __asm ("str.w r1, [r7, 0xac]");
0x000794be ldr r1, [sp, 0x28] | r1 = var_28h;
0x000794c0 strb.w r1, [r7, 0x9d] | *((r7 + 0x9d)) = r1;
0x000794c4 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000794c6 strb.w r1, [r7, 0x9c] | *((r7 + 0x9c)) = r1;
0x000794ca ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000794cc strb.w r1, [r7, 0x9b] | *((r7 + 0x9b)) = r1;
0x000794d0 ldr r1, [sp, 0x30] | r1 = var_30h;
0x000794d2 strb.w r1, [r7, 0x9a] | *((r7 + 0x9a)) = r1;
0x000794d6 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000794d8 strb.w r1, [r7, 0x99] | *((r7 + 0x99)) = r1;
0x000794dc ldr r1, [sp, 0x38] | r1 = var_38h;
0x000794de strb.w r1, [r7, 0x98] | *((r7 + 0x98)) = r1;
0x000794e2 ldrd r2, r1, [sp, 0x3c] | __asm ("ldrd r2, r1, [var_40h]");
0x000794e6 strd r2, r1, [r7, 0x90] | __asm ("strd r2, r1, [r7, 0x90]");
0x000794ea mov.w r2, 0x100 | r2 = 0x100;
0x000794ee ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000794f0 strd r1, r0, [r7, 0x70] | __asm ("strd r1, r0, [r7, 0x70]");
0x000794f4 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000794f6 str r1, [r7, 0x78] | *((r7 + 0x78)) = r1;
0x000794f8 ldr r1, [sp, 0x48] | r1 = var_48h;
0x000794fa str r1, [r7, 0x7c] | *((r7 + 0x7c)) = r1;
0x000794fc ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x000794fe str.w fp, [r7, 0x88] | __asm ("str.w fp, [r7, 0x88]");
0x00079502 add.w fp, sp, 0xe8 |
0x00079506 strd r1, r0, [r7, 0x80] | __asm ("strd r1, r0, [r7, 0x80]");
0x0007950a strh.w r0, [r7, 0x9e] | *((r7 + 0x9e)) = r0;
0x0007950e mov r1, fp | r1 = fp;
0x00079510 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00079512 str.w r0, [r7, 0x8c] | __asm ("str.w r0, [r7, 0x8c]");
0x00079516 add.w r0, r7, 0xb0 | r0 = r7 + 0xb0;
0x0007951a str.w sb, [r7, 0xa0] | __asm ("str.w sb, [r7, 0xa0]");
0x0007951e mov sb, r7 | sb = r7;
0x00079520 str.w sl, [r7, 0xa4] | __asm ("str.w sl, [r7, 0xa4]");
0x00079524 blx 0x26b48 | fcn_00026b48 ();
0x00079528 add.w r0, r7, 0x1b0 | r0 = r7 + 0x1b0;
0x0007952c ldr r4, [sp, 0x10] | r4 = var_10h;
0x0007952e ldr r5, [sp, 0x6c] | r5 = var_6ch;
0x00079530 add.w r7, r8, 0x10 | r7 += var_10h_2;
0x00079534 vst1.64 {d8, d9}, [r0] | __asm ("vst1.64 {d8, d9}, [r0]");
0x00079538 ldrd r0, r1, [r8, 8] | __asm ("ldrd r0, r1, [var_b0h]");
0x0007953c strd r0, r1, [sb, 0x10] | __asm ("strd r0, r1, [sb, 0x10]");
| do {
0x00079540 ldrex r0, [r7] | __asm ("ldrex r0, [r7]");
0x00079544 cmp r0, 0 |
| if (r0 != 0) {
0x00079546 bne 0x79610 | goto label_22;
| }
0x00079548 movs r1, 1 | r1 = 1;
0x0007954a strex r0, r1, [r7] | __asm ("strex r0, r1, [r7]");
0x0007954e cmp r0, 0 |
0x00079550 bne 0x79540 |
| } while (r0 != 0);
0x00079552 dmb ish | __asm ("dmb ish");
| do {
0x00079556 ldr r0, [pc, 0x144] |
0x00079558 add r0, pc |
0x0007955a ldr r0, [r0] | r0 = *(0xf2bfa);
0x0007955c lsls r0, r0, 1 | r0 <<= 1;
| if (r0 != r0) {
0x0007955e bne 0x7961c | goto label_23;
| }
0x00079560 movs r0, 0 | r0 = 0;
| label_1:
0x00079562 ldrb.w r1, [r8, 0x14] | r1 = var_14h_2;
0x00079566 ldrb.w r1, [r8, 0x20] | r1 = var_20h_2;
0x0007956a strb.w r0, [sp, 0x1ec] | var_1ech = r0;
0x0007956e str r7, [sp, 0x1e8] | var_1e8h = r7;
| if (r1 != 0) {
0x00079570 cbz r1, 0x795c6 |
0x00079572 add r6, sp, 0xa8 | r6 += var_a8h;
0x00079574 strb.w r0, [sp, 0xac] | var_ach = r0;
0x00079578 str r7, [sp, 0xa8] | var_a8h = r7;
0x0007957a mov r0, r6 | r0 = r6;
0x0007957c bl 0x46d40 | fcn_00046d40 (r0, r1);
0x00079580 mov r0, r6 | r0 = r6;
0x00079582 str.w sb, [sp, 0xa8] | __asm ("str.w sb, [var_a8h]");
0x00079586 bl 0x1a5b24 | fcn_001a5b24 (r0, r1);
0x0007958a ldr.w r0, [sb, 8] | r0 = *((sb + 8));
0x0007958e ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x00079590 mov r0, sb | r0 = sb;
0x00079592 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x00079594 b 0x795de | goto label_24;
| label_20:
0x00079596 adds r0, 8 | r0 += 8;
0x00079598 mov r1, sb | r1 = sb;
0x0007959a bl 0x1f2b0c | fcn_001f2b0c (r0, r1);
0x0007959e add r6, sp, 0x1e8 | r6 += var_1e8h;
0x000795a0 mov r0, r6 | r0 = r6;
0x000795a2 bl 0x46f64 | fcn_00046f64 (r0, r1);
0x000795a6 ldr r0, [sp, 8] | r0 = var_8h;
0x000795a8 str r0, [sp, 0x1e8] | var_1e8h = r0;
0x000795aa addw r0, sp, 0x25f | __asm ("addw r0, var_25fh");
0x000795ae str r0, [sp, 0xb0] | var_b0h = r0;
0x000795b0 mov r0, r4 | r0 = r4;
0x000795b2 strb.w r5, [sp, 0x25f] | var_25fh = r5;
0x000795b6 strd r6, sb, [sp, 0xa8] | __asm ("strd r6, sb, [var_a8h]");
0x000795ba bl 0x1ad9e4 | fcn_001ad9e4 (r0);
| label_21:
0x000795be ldrd r4, r8, [sp, 0x10] | __asm ("ldrd r4, r8, [var_14h]");
0x000795c2 ldr r5, [sp, 0x6c] | r5 = var_6ch;
0x000795c4 b 0x795e2 |
| } else {
0x000795c6 add.w r0, r8, 0x18 | r0 += var_18h_2;
0x000795ca mov r1, sb | r1 = sb;
0x000795cc bl 0x2032bc | fcn_002032bc (r0, r1);
0x000795d0 add r0, sp, 0x1e8 | r0 += var_1e8h;
0x000795d2 bl 0x46d40 | fcn_00046d40 (r0, r1);
0x000795d6 ldr r0, [sp, 4] | r0 = var_sp_4h;
0x000795d8 mov r1, sb | r1 = sb;
0x000795da bl 0x1b144c | fcn_001b144c (r0, r1);
| label_24:
0x000795de ldr.w r8, [sp, 0x14] | r8 = var_14h;
| }
0x000795e2 add r0, sp, 0xe0 | r0 += var_e0h;
0x000795e4 add r7, sp, 0x1f0 | r7 += var_1f0h;
0x000795e6 bl 0x4a076 | fcn_0004a076 (r0);
0x000795ea ldrex r0, [sb] | __asm ("ldrex r0, [sb]");
0x000795ee cmp r0, 0xcc |
| if (r0 == 0xcc) {
0x000795f0 bne 0x79600 |
0x000795f2 dmb ish | __asm ("dmb ish");
0x000795f6 movs r1, 0x84 | r1 = 0x84;
0x000795f8 strex r0, r1, [sb] | __asm ("strex r0, r1, [sb]");
| if (r0 != 0) {
0x000795fc cbnz r0, 0x79604 | goto label_25;
| }
0x000795fe b 0x7909a | goto label_0;
| }
0x00079600 clrex | __asm ("clrex");
| label_25:
0x00079604 ldr.w r0, [sb, 8] | r0 = *((sb + 8));
0x00079608 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x0007960a mov r0, sb | r0 = sb;
0x0007960c blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x0007960e b 0x7909a | goto label_0;
| label_22:
0x00079610 mov r0, r7 | r0 = r7;
0x00079612 clrex | __asm ("clrex");
0x00079616 bl 0x3129c | fcn_0003129c (r0, r1, r2);
0x0007961a b 0x79556 |
| } while (1);
| label_23:
0x0007961c bl 0x30fe0 | r0 = fcn_00030fe0 ();
0x00079620 eor r0, r0, 1 | r0 ^= 1;
0x00079624 b 0x79562 | goto label_1;
| label_14:
0x0007962c cmp r6, 2 |
| if (r6 == 2) {
0x0007962e bne 0x7963a |
0x00079630 movs r0, 3 | r0 = 3;
0x00079632 strb.w r0, [r8, 0xf0] | *((r8 + 0xf0)) = r0;
0x00079636 movs r0, 0 | r0 = 0;
0x00079638 b 0x79658 |
| } else {
| label_15:
0x0007963a movs r0, 9 | r0 = 9;
0x0007963c bl 0x1106f0 | fcn_001106f0 (r0, r1);
0x00079640 add r1, sp, 0xe8 | r1 += var_e8h;
0x00079642 mov r5, r0 | r5 = r0;
0x00079644 strd sb, sl, [sp, 0xe8] | __asm ("strd sb, sl, [var_4h]");
0x00079648 bl 0x1139f0 | fcn_001139f0 (r0, r1);
0x0007964c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0007964e bl 0x46c6e | fcn_00046c6e (r0, r1);
0x00079652 movs r0, 1 | r0 = 1;
0x00079654 strb.w r0, [r8, 0xf0] | *((r8 + 0xf0)) = r0;
| }
0x00079658 clz r0, r0 | r0 &= r0;
0x0007965c mov r1, r5 | r1 = r5;
0x0007965e lsrs r0, r0, 5 | r0 >>= 5;
0x00079660 add.w sp, sp, 0x260 |
0x00079664 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x00079668 add sp, 4 |
0x0007966a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x0007966e ldr r0, [pc, 0x34] |
0x00079670 movs r1, 0x2b | r1 = 0x2b;
0x00079672 ldr r2, [pc, 0x34] |
0x00079674 add r0, pc | r0 = 0xf2d1e;
0x00079676 add r2, pc | r2 = 0xf2d24;
| label_3:
0x00079678 bl 0x29bb0 | fcn_00029bb0 (r0, r1, r2);
0x0007967c trap | __asm ("trap");
| label_5:
0x0007967e trap | __asm ("trap");
| label_18:
0x00079682 mov.w r0, 0x180 | r0 = 0x180;
0x00079686 b 0x7968c | goto label_26;
| label_19:
0x00079688 mov.w r0, 0x1c0 | r0 = 0x1c0;
| label_26:
0x0007968c movs r1, 8 | r1 = 8;
0x0007968e bl 0x281ae | fcn_000281ae ();
0x00079692 trap | __asm ("trap");
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x19cde0).
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/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x1ae1a8 */
| #include <stdint.h>
|
; (fcn) fcn.001ae1a8 () | void fcn_001ae1a8 (int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_58h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_24h;
| int16_t var_28h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x001ae1a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001ae1ac sub sp, 4 |
0x001ae1ae vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x001ae1b2 sub sp, 0x90 |
0x001ae1b4 ldr.w fp, [r1] | fp = *(r1);
0x001ae1b8 mov r5, r0 | r5 = r0;
0x001ae1ba mov sb, r3 | sb = r3;
0x001ae1bc mov r6, r2 | r6 = r2;
0x001ae1be add.w r4, fp, 8 | r4 += arg_8h;
0x001ae1c2 mov r7, r1 | r7 = r1;
0x001ae1c4 movs r0, 1 | r0 = 1;
| do {
0x001ae1c6 ldrex r1, [r4] | __asm ("ldrex r1, [r4]");
0x001ae1ca cmp r1, 0 |
| if (r1 != 0) {
0x001ae1cc bne.w 0x1ae34c | goto label_2;
| }
0x001ae1d0 strex r1, r0, [r4] | __asm ("strex r1, r0, [r4]");
0x001ae1d4 cmp r1, 0 |
0x001ae1d6 bne 0x1ae1c6 |
| } while (r1 != 0);
0x001ae1d8 dmb ish | __asm ("dmb ish");
| label_0:
0x001ae1dc ldr r0, [pc, 0x304] |
0x001ae1de add r0, pc |
0x001ae1e0 ldr r0, [r0] | r0 = *(0x35c6c6);
0x001ae1e2 lsls r0, r0, 1 | r0 <<= 1;
| if (r0 != r0) {
0x001ae1e4 bne.w 0x1ae358 | goto label_3;
| }
0x001ae1e8 movs r0, 0 | r0 = 0;
| label_1:
0x001ae1ea ldrb.w r1, [fp, 0xc] | r1 = *(arg_ch);
0x001ae1ee strb.w r0, [sp, 0x28] | var_28h = r0;
0x001ae1f2 ldrb.w r0, [fp, 0x58] | r0 = *(arg_58h);
0x001ae1f6 str r4, [sp, 0x24] | var_24h = r4;
| if (r0 == 0) {
0x001ae1f8 cbz r0, 0x1ae22e | goto label_4;
| }
0x001ae1fa dmb ish | __asm ("dmb ish");
| do {
0x001ae1fe ldrex r0, [r6] | __asm ("ldrex r0, [r6]");
0x001ae202 sub.w r1, r0, 0x40 | r1 = r0 - 0x40;
0x001ae206 strex r2, r1, [r6] | __asm ("strex r2, r1, [r6]");
0x001ae20a cmp r2, 0 |
0x001ae20c bne 0x1ae1fe |
| } while (r2 != 0);
0x001ae20e cmp r0, 0x3f |
0x001ae210 dmb ish | __asm ("dmb ish");
| if (r0 < 0x3f) {
0x001ae214 bls.w 0x1ae860 | goto label_5;
| }
0x001ae218 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x001ae21a ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x001ae21c mov r0, r6 | r0 = r6;
0x001ae21e blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x001ae220 movs r0, 0 | r0 = 0;
0x001ae222 str r0, [r5, 4] | *((r5 + 4)) = r0;
0x001ae224 str.w r0, [r5, 1] | __asm ("str.w r0, [r5, 1]");
0x001ae228 movs r0, 4 | r0 = 4;
0x001ae22a strb r0, [r5] | *(r5) = r0;
0x001ae22c b 0x1ae75c | void (*0x1ae75c)() ();
| label_4:
0x001ae22e mov r0, fp | r0 = fp;
0x001ae230 add.w sl, fp, 0x10 | sl += arg_10h;
0x001ae234 ldr r2, [r0, 0x30]! | r2 = *((r0 += 0x30));
0x001ae238 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x001ae23a ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x001ae23c subs r4, r1, r2 | r4 = r1 - r2;
0x001ae23e subs r2, r3, 1 | r2 = r3 - 1;
0x001ae240 ands r4, r2 | r4 &= r2;
0x001ae242 subs r3, r3, r4 | r3 -= r4;
0x001ae244 cmp r3, 1 |
| if (r3 == 1) {
0x001ae246 bne 0x1ae256 |
0x001ae248 bl 0x1ac300 | fcn_001ac300 (r0);
0x001ae24c ldr.w r0, [fp, 0x3c] | r0 = *(arg_3ch);
0x001ae250 ldr.w r1, [fp, 0x34] | r1 = *(arg_34h);
0x001ae254 subs r2, r0, 1 | r2 = r0 - 1;
| }
0x001ae256 ldr.w r0, [fp, 0x38] | r0 = *(arg_38h);
0x001ae25a adds r3, r1, 1 | r3 = r1 + 1;
0x001ae25c ldr r4, [r7] | r4 = *(r7);
0x001ae25e ands r2, r3 | r2 &= r3;
0x001ae260 str.w r6, [r0, r1, lsl 3] | __asm ("str.w r6, [r0, r1, lsl 3]");
0x001ae264 add.w r0, r0, r1, lsl 3 | r0 += (r1 << 3);
0x001ae268 movs r1, 1 | r1 = 1;
0x001ae26a str.w r2, [fp, 0x34] | __asm ("str.w r2, [arg_34h]");
0x001ae26e strb r1, [r0, 4] | *((r0 + 4)) = r1;
0x001ae270 add.w r0, r4, 0xa0 | r0 = r4 + 0xa0;
| do {
0x001ae274 ldrex r1, [r0] | __asm ("ldrex r1, [r0]");
0x001ae278 adds r1, 1 | r1++;
0x001ae27a strex r2, r1, [r0] | __asm ("strex r2, r1, [r0]");
0x001ae27e cmp r2, 0 |
0x001ae280 bne 0x1ae274 |
| } while (r2 != 0);
0x001ae282 ldr.w r0, [r4, 0x9c] | r0 = *((r4 + 0x9c));
| if (r0 == 0) {
0x001ae286 cbz r0, 0x1ae2c2 | goto label_6;
| }
0x001ae288 add.w r0, r4, 0x9c | r0 = r4 + 0x9c;
| do {
0x001ae28c ldrex r1, [r0] | __asm ("ldrex r1, [r0]");
0x001ae290 subs r1, 1 | r1--;
0x001ae292 strex r2, r1, [r0] | __asm ("strex r2, r1, [r0]");
0x001ae296 cmp r2, 0 |
0x001ae298 bne 0x1ae28c |
| } while (r2 != 0);
0x001ae29a ldr.w r0, [fp, 0x40] | r0 = *(arg_40h);
0x001ae29e add.w r1, r4, 0x70 | r1 = r4 + 0x70;
0x001ae2a2 adds r0, 1 | r0++;
0x001ae2a4 str.w r0, [fp, 0x40] | __asm ("str.w r0, [arg_40h]");
| do {
0x001ae2a8 ldrex r0, [r1] | __asm ("ldrex r0, [r1]");
0x001ae2ac adds r0, 1 | r0++;
0x001ae2ae strex r2, r0, [r1] | __asm ("strex r2, r0, [r1]");
0x001ae2b2 cmp r2, 0 |
0x001ae2b4 bne 0x1ae2a8 |
| } while (r2 != 0);
0x001ae2b6 movs r0, 0xf0 | r0 = 0xf0;
0x001ae2b8 movs r2, 0x81 | r2 = 0x81;
0x001ae2ba movs r3, 1 | r3 = 1;
| label_6:
0x001ae2c2 ldr.w r0, [r4, 0x98] | r0 = *((r4 + 0x98));
0x001ae2c6 ldr.w r1, [r4, 0x94] | r1 = *((r4 + 0x94));
0x001ae2ca cmp r0, r1 |
| if (r0 == r1) {
0x001ae2cc beq.w 0x1ae754 | void (*0x1ae754)() ();
| }
0x001ae2d0 ldr.w r8, [sl, 0x34] | r8 = *((sl + 0x34));
0x001ae2d4 cmp.w r8, 0 |
| if (r8 == 0) {
0x001ae2d8 beq.w 0x1ae874 | goto label_7;
| }
0x001ae2dc add.w r3, r4, 0x98 | r3 = r4 + 0x98;
| label_2:
0x001ae34c mov r0, r4 | r0 = r4;
0x001ae34e clrex | __asm ("clrex");
0x001ae352 bl 0x3129c | fcn_0003129c (r0, r1, r2);
0x001ae356 b 0x1ae1dc | goto label_0;
| label_3:
0x001ae358 bl 0x30fe0 | r0 = fcn_00030fe0 ();
0x001ae35c eor r0, r0, 1 | r0 ^= 1;
0x001ae360 b 0x1ae1ea | goto label_1;
| label_5:
0x001ae860 ldr r0, [pc, 0x108] |
0x001ae862 movs r1, 0x27 | r1 = 0x27;
0x001ae864 ldr r2, [pc, 0x108] |
0x001ae866 add r0, pc | r0 = 0x35d1d6;
0x001ae868 add r2, pc | r2 = 0x35d1dc;
| do {
0x001ae86a bl 0x29bb0 | fcn_00029bb0 (r0, r1, r2);
0x001ae86e trap | __asm ("trap");
| label_7:
0x001ae874 ldr r0, [pc, 0xd8] |
0x001ae876 movs r1, 0x2e | r1 = 0x2e;
0x001ae878 ldr r2, [pc, 0xd8] |
0x001ae87a add r0, pc | r0 = 0x35d1ce;
0x001ae87c add r2, pc | r2 = 0x35d1d4;
0x001ae87e b 0x1ae86a |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x1f24c4 */
| #include <stdint.h>
|
; (fcn) fcn.001f24c4 () | void fcn_001f24c4 (int16_t arg_28h, int16_t arg_45h, int16_t arg_47h, int16_t arg_48h, int16_t arg_50h, int16_t arg_b4h, int16_t arg_b6h, int16_t arg_b8h, int16_t arg_bch, int16_t arg_400h, int16_t arg_500h, int16_t arg_504h, int16_t arg_508h, int16_t arg_50ch, int16_t arg_510h, int16_t arg_520h, int16_t arg_524h, int16_t arg_528h, int16_t arg_590h, int16_t arg_594h, int16_t arg_598h, int16_t arg_59ch, int16_t arg_5a0h, int16_t arg_5a4h, int16_t arg_9d8h, int16_t arg_9dch, int16_t arg_9e0h, int16_t arg_9e2h, int16_t arg_9e4h, int16_t arg_9e8h, int16_t arg1, int16_t arg2, uint32_t arg3) {
| int16_t var_9ech;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_15h;
| int16_t var_17h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x001f24c4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001f24c8 subw sp, sp, 0x9ec | __asm ("subw sp, sp, aav.0x000000ff");
0x001f24cc ldr r7, [r0] | r7 = *(r0);
0x001f24ce mov r8, r1 | r8 = r1;
0x001f24d0 mov r5, r0 | r5 = r0;
| do {
0x001f24d2 ldrex r0, [r7] | __asm ("ldrex r0, [r7]");
0x001f24d6 adds r1, r0, 1 | r1 = r0 + 1;
0x001f24d8 strex r2, r1, [r7] | __asm ("strex r2, r1, [r7]");
0x001f24dc cmp r2, 0 |
0x001f24de bne 0x1f24d2 |
| } while (r2 != 0);
0x001f24e0 cmp.w r0, -1 |
| if (r0 <= -1) {
0x001f24e4 ble.w 0x1f2a2a | goto label_1;
| }
0x001f24e8 adds r0, r5, 4 | r0 = r5 + 4;
0x001f24ea bl 0x1ef8cc | fcn_001ef8cc (r0, r1);
0x001f24ee ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x001f24f0 mov sb, r0 | sb = r0;
| do {
0x001f24f2 ldrex r0, [r4] | __asm ("ldrex r0, [r4]");
0x001f24f6 adds r1, r0, 1 | r1 = r0 + 1;
0x001f24f8 strex r2, r1, [r4] | __asm ("strex r2, r1, [r4]");
0x001f24fc cmp r2, 0 |
0x001f24fe bne 0x1f24f2 |
| } while (r2 != 0);
0x001f2500 cmp.w r0, -1 |
| if (r0 <= -1) {
0x001f2504 ble.w 0x1f2a2a | goto label_1;
| }
0x001f2508 add r6, sp, 0xb8 | r6 += arg_b8h;
0x001f250a mov r1, r8 | r1 = r8;
0x001f250c ldrb r5, [r5, 0xc] | r5 = *((r5 + 0xc));
0x001f250e dmb ish | __asm ("dmb ish");
0x001f2510 ldrh r3, [r3, 0x3a] | r3 = *((r3 + 0x3a));
0x001f2512 mov r0, r6 | r0 = r6;
0x001f2514 bl 0x1d0c08 | fcn_001d0c08 (r0, r1);
0x001f2518 ldr r0, [pc, 0x2fc] |
0x001f251a add.w fp, sp, 0x520 |
0x001f251e ldr r1, [pc, 0x2fc] |
0x001f2520 add.w sl, sp, 0x48 | sl += arg_48h;
0x001f2524 add r0, pc | r0 = 0x3e4d40;
0x001f2526 str.w sl, [sp, 0x5a0] | __asm ("str.w sl, [arg_5a0h]");
0x001f252a add r1, pc | r1 = 0x3e4d4c;
0x001f252c str.w r1, [sp, 0x590] | __asm ("str.w r1, [arg_590h]");
0x001f2530 strd r6, r0, [sp, 0x48] | __asm ("strd r6, r0, [sp, 0x48]");
0x001f2534 movs r0, 1 | r0 = 1;
0x001f2536 str.w r0, [sp, 0x5a4] | __asm ("str.w r0, [arg_5a4h]");
0x001f253a movs r0, 0 | r0 = 0;
0x001f253c str.w r0, [sp, 0x59c] | __asm ("str.w r0, [arg_59ch]");
0x001f2540 add.w r1, sp, 0x590 | r1 += arg_590h;
0x001f2544 str.w r0, [sp, 0x598] | __asm ("str.w r0, [arg_598h]");
0x001f2548 movs r0, 2 | r0 = 2;
0x001f254a str.w r0, [sp, 0x594] | __asm ("str.w r0, [arg_594h]");
0x001f254e mov r0, fp | r0 = fp;
0x001f2550 bl 0x8ccd0 | fcn_0008ccd0 (r0, r1, r2);
0x001f2554 ldr r0, [sp, 0xbc] | r0 = *(arg_bch);
0x001f2556 cmp r5, 0 |
0x001f2558 it ne |
| if (r5 == 0) {
0x001f255a movne r5, 1 | r5 = 1;
| }
0x001f255c str r5, [sp, 0x10] | var_10h = r5;
| if (r0 != 0) {
0x001f255e cbz r0, 0x1f2566 |
0x001f2560 ldr r0, [sp, 0xb8] | r0 = *(arg_b8h);
0x001f2562 blx 0x26a3c | fcn_00026a3c ();
| }
0x001f2566 add.w lr, sp, 0x400 | lr += arg_400h;
0x001f256a ldr.w r0, [sp, 0x528] | r0 = *(arg_528h);
0x001f256e ldrh.w r1, [sp, 0x15] | r1 = var_15h;
0x001f2572 vldr d16, [lr, 0x120] | __asm ("vldr d16, aav.0x000000ff");
0x001f2576 ldrb.w r2, [sp, 0x17] | r2 = var_17h;
0x001f257a str r0, [sp, 0x20] | var_20h = r0;
0x001f257c add.w r0, sp, 0x590 | r0 += arg_590h;
0x001f2580 strh.w r1, [sp, 0x9e0] | *(arg_9e0h) = r1;
0x001f2584 mov r1, r8 | r1 = r8;
0x001f2586 strb.w r2, [sp, 0x9e2] | *(arg_9e2h) = r2;
0x001f258a movs r2, 0x6c | r2 = 0x6c;
0x001f258c vstr d16, [sp, 0x18] | __asm ("vstr d16, [sp, 0x18]");
0x001f2590 blx 0x26b48 | fcn_00026b48 ();
0x001f2594 ldr r0, [pc, 0x288] |
0x001f2596 add r0, pc |
0x001f2598 ldr r0, [r0] | r0 = *(0x3e4dba);
0x001f259a ldr r5, [pc, 0x288] |
0x001f259c subs r0, 1 | r0--;
0x001f259e add r5, pc | r5 = 0x3e4dc8;
0x001f25a0 cmp r0, 5 |
| if (r0 <= 5) {
0x001f25a2 blo 0x1f2616 | goto label_2;
| }
0x001f25a4 ldrb r1, [r5, 8] | r1 = *((r5 + 8));
| if (r1 == 0) {
0x001f25a6 cbz r1, 0x1f2616 | goto label_2;
| }
0x001f25a8 cmp r1, 1 |
| if (r1 == 1) {
0x001f25aa beq 0x1f25b2 | goto label_3;
| }
0x001f25ac cmp r1, 2 |
| if (r1 != 2) {
0x001f25ae bne 0x1f2608 | goto label_4;
| }
0x001f25b0 movs r1, 2 | r1 = 2;
| do {
| label_3:
0x001f25b2 ldr r0, [r5] | r0 = *(r5);
0x001f25b4 bl 0x1b6f98 | r0 = fcn_001b6f98 (r0, r1);
| if (r0 == 0) {
0x001f25b8 cbz r0, 0x1f2616 | goto label_2;
| }
0x001f25ba ldr r1, [r5] | r1 = *(r5);
0x001f25bc ldr r0, [r1, 0x30] | r0 = *((r1 + 0x30));
0x001f25be cmp r0, 0 |
| if (r0 == 0) {
0x001f25c0 beq.w 0x1f2a3a | goto label_5;
| }
0x001f25c4 ldr.w ip, [r1, 0x2c] | ip = *((r1 + 0x2c));
0x001f25c8 ldrd r3, r5, [r1, 0x34] | __asm ("ldrd r3, r5, [r1, 0x34]");
0x001f25cc ldr r2, [pc, 0x258] |
0x001f25ce strd ip, r0, [sp, 0xbc] | __asm ("strd ip, r0, [sp, 0xbc]");
0x001f25d2 movs r0, 0 | r0 = 0;
0x001f25d4 add r2, pc | r2 = 0x3e4e00;
0x001f25d6 str r0, [sp, 0xb8] | *(arg_b8h) = r0;
0x001f25d8 add.w r0, r1, 0x2c | r0 = r1 + 0x2c;
0x001f25dc str.w r0, [sp, 0x510] | __asm ("str.w r0, [arg_510h]");
0x001f25e0 mov lr, r2 | lr = r2;
0x001f25e2 add r2, sp, 0x18 | r2 += var_18h;
0x001f25e4 movs r0, 1 | r0 = 1;
0x001f25e6 str.w sl, [sp, 0x508] | __asm ("str.w sl, [arg_508h]");
0x001f25ea strd r6, r2, [sp, 0x48] | __asm ("strd r6, r2, [sp, 0x48]");
0x001f25ee add.w r2, sp, 0x508 | r2 += arg_508h;
0x001f25f0 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x001f25f2 str.w r0, [sp, 0x50c] | __asm ("str.w r0, [arg_50ch]");
0x001f25f6 add.w r0, sp, 0x520 | r0 += arg_520h;
0x001f25fa strd r3, r5, [sp, 0xc4] | __asm ("strd r3, r5, [sp, 0xc4]");
0x001f25fe str.w lr, [sp, 0x50] | __asm ("str.w lr, [arg_50h]");
0x001f2600 b 0x1f26a4 | goto label_6;
0x001f2602 bl 0x1b6cd8 | fcn_001b6cd8 (r0, r1, r2);
0x001f2606 b 0x1f2688 | goto label_7;
| label_4:
0x001f2608 ldr r0, [pc, 0x220] |
0x001f260a add r0, pc | r0 = 0x3e4e3a;
0x001f260c bl 0x32420 | r0 = fcn_00032420 (r0, r1);
0x001f2610 uxtb r1, r0 | r1 = (int8_t) r0;
0x001f2612 cmp r1, 0 |
0x001f2614 bne 0x1f25b2 |
| } while (r1 != 0);
| label_2:
0x001f2616 vmov.i32 q8, 0 | __asm ("vmov.i32 q8, 0");
0x001f261a ldr r1, [pc, 0x214] |
0x001f261c mov r2, r6 | r2 = r6;
0x001f261e ldr r0, [r5] | r0 = *(r5);
0x001f2620 add r1, pc | r1 = 0x3e4e56;
0x001f2622 vst1.64 {d16, d17}, [r2]! | __asm ("vst1.64 {d16, d17}, [r2]!");
0x001f2626 str r0, [r2] | *(r2) = r0;
0x001f2628 ldrb r1, [r1] | r1 = *(r1);
| if (r1 == 0) {
0x001f262a cbnz r1, 0x1f2676 |
0x001f262c ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x001f262e cmp r1, 0 |
| if (r1 == 0) {
0x001f2630 beq.w 0x1f2a3a | goto label_5;
| }
0x001f2634 ldr.w ip, [r0, 0x2c] | ip = *((r0 + 0x2c));
0x001f2638 ldrd r3, r5, [r0, 0x34] | __asm ("ldrd r3, r5, [r0, 0x34]");
0x001f263c adds r0, 0x2c | r0 += 0x2c;
0x001f263e ldr r2, [pc, 0x1f4] |
0x001f2640 str.w r0, [sp, 0x510] | __asm ("str.w r0, [arg_510h]");
0x001f2644 movs r0, 1 | r0 = 1;
0x001f2646 add r2, pc | r2 = 0x3e4e80;
0x001f2648 str.w r0, [sp, 0x50c] | __asm ("str.w r0, [arg_50ch]");
0x001f264a lsls r4, r1, 0x14 | r4 = r1 << 0x14;
0x001f264c add r0, sp, 0xb8 | r0 += arg_b8h;
0x001f264e str.w sl, [sp, 0x508] | __asm ("str.w sl, [arg_508h]");
0x001f2652 mov lr, r2 | lr = r2;
0x001f2654 add r2, sp, 0x18 | r2 += var_18h;
0x001f2656 str.w ip, [sp, 0x524] | __asm ("str.w ip, [arg_524h]");
0x001f265a strd fp, r2, [sp, 0x48] | __asm ("strd fp, r2, [sp, 0x48]");
0x001f265e add.w r2, sp, 0x528 | r2 += arg_528h;
0x001f2662 stm r2!, {r1, r3, r5} | *(r2!) = r1;
| *((r2! + 4)) = r3;
| *((r2! + 8)) = r5;
0x001f2664 movs r1, 0 | r1 = 0;
0x001f2666 str.w r1, [sp, 0x520] | __asm ("str.w r1, [arg_520h]");
0x001f266a add.w r1, sp, 0x508 | r1 += arg_508h;
0x001f266e str.w lr, [sp, 0x50] | __asm ("str.w lr, [arg_50h]");
0x001f2672 bl 0x1b6e9c | fcn_001b6e9c (r0, r1);
| }
0x001f2676 vld1.64 {d16, d17}, [r6]! | __asm ("vld1.64 {d16, d17}, [r6]!");
0x001f267a mov r0, fp | r0 = fp;
0x001f267c vldr d18, [r6] | __asm ("vldr d18, [r6]");
0x001f2680 vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x001f2684 vstr d18, [r0] | __asm ("vstr d18, [r0]");
| label_7:
0x001f2688 ldrb.w r0, [sp, 0x9e2] | r0 = *(arg_9e2h);
0x001f268c movs r2, 0x6c | r2 = 0x6c;
0x001f268e ldrh.w r1, [sp, 0x9e0] | r1 = *(arg_9e0h);
0x001f2692 strb.w r0, [sp, 0xb6] | *(arg_b6h) = r0;
0x001f2696 add r0, sp, 0x48 | r0 += arg_48h;
0x001f2698 strh.w r1, [sp, 0xb4] | *(arg_b4h) = r1;
0x001f269c add.w r1, sp, 0x590 | r1 += arg_590h;
0x001f26a0 blx 0x26b48 | fcn_00026b48 ();
| label_6:
0x001f26a4 add r5, sp, 0x28 | r5 += arg_28h;
0x001f26a6 vld1.64 {d16, d17}, [fp]! | __asm ("vld1.64 {d16, d17}, [fp]!");
0x001f26aa mov r0, r5 | r0 = r5;
0x001f26ac vldr d18, [fp] | __asm ("vldr d18, [fp]");
0x001f26b0 vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x001f26b4 vstr d18, [r0] | __asm ("vstr d18, [r0]");
0x001f26b8 bl 0x1ae138 | r0 = fcn_001ae138 (r0);
0x001f26bc mov fp, r0 |
0x001f26be ldr r0, [pc, 0x38c] |
0x001f26c0 mov sl, r1 | sl = r1;
0x001f26c2 add r0, pc | r0 = 0x3e5114;
0x001f26c4 bl 0x1ae094 | fcn_001ae094 (r0);
0x001f26c8 mov r6, r1 | r6 = r1;
0x001f26ca cmp r0, 0 |
0x001f26cc str.w r1, [sp, 0x504] | __asm ("str.w r1, [arg_504h]");
0x001f26d0 str.w r0, [sp, 0x500] | __asm ("str.w r0, [arg_500h]");
| if (r0 == 0) {
0x001f26d4 beq.w 0x1f2838 | goto label_8;
| }
0x001f26d8 add.w r0, sp, 0x590 | r0 += arg_590h;
0x001f26dc add r1, sp, 0xb8 | r1 += arg_b8h;
0x001f26de mov.w r2, 0x448 | r2 = 0x448;
0x001f26e2 blx 0x26b48 | fcn_00026b48 ();
0x001f26e6 add.w r0, sp, 0x520 | r0 += arg_520h;
0x001f26ea add r1, sp, 0x48 | r1 += arg_48h;
0x001f26ec movs r2, 0x6c | r2 = 0x6c;
0x001f26ee blx 0x26b48 | fcn_00026b48 ();
0x001f26f2 vld1.64 {d16, d17}, [r5]! | __asm ("vld1.64 {d16, d17}, [r5]!");
0x001f26f6 add.w r0, sp, 0x508 | r0 += arg_508h;
0x001f26fa add.w r3, r6, 8 | r3 = r6 + 8;
0x001f26fe vldr d18, [r5] | __asm ("vldr d18, [r5]");
0x001f2702 vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x001f2706 vstr d18, [r0] | __asm ("vstr d18, [r0]");
| do {
0x001f270a ldrex r0, [r6] | __asm ("ldrex r0, [r6]");
0x001f270e adds r1, r0, 1 | r1 = r0 + 1;
0x001f2710 strex r2, r1, [r6] | __asm ("strex r2, r1, [r6]");
0x001f2714 cmp r2, 0 |
0x001f2716 bne 0x1f270a |
| } while (r2 != 0);
0x001f2718 cmp.w r0, -1 |
| if (r0 <= -1) {
0x001f271c ble.w 0x1f2a2a | goto label_1;
| }
0x001f2720 mov.w r0, 0x520 | r0 = 0x520;
0x001f2724 movs r1, 8 | r1 = 8;
0x001f2726 str r3, [sp, 0xc] | var_ch = r3;
0x001f2728 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x001f272c cmp r0, 0 |
| if (r0 == 0) {
0x001f272e beq.w 0x1f2a2e | goto label_9;
| }
0x001f2732 mov r5, r0 | r5 = r0;
0x001f2734 ldr r0, [pc, 0x320] |
0x001f2736 mov.w r8, 0 | r8 = 0;
0x001f273a movs r1, 0xcc | r1 = 0xcc;
0x001f273c add r0, pc | r0 = 0x3e5198;
0x001f273e strd r1, r8, [r5] | __asm ("strd r1, r8, [r5]");
0x001f2742 str r0, [r5, 8] | *((r5 + 8)) = r0;
0x001f2744 add.w r0, r5, 0x30 | r0 = r5 + 0x30;
0x001f2748 add.w r1, sp, 0x590 | r1 += arg_590h;
0x001f274c mov.w r2, 0x448 | r2 = 0x448;
0x001f2750 strd r8, r8, [r5, 0x10] | __asm ("strd r8, r8, [r5, 0x10]");
0x001f2754 str r6, [r5, 0x18] | *((r5 + 0x18)) = r6;
0x001f2756 strd fp, sl, [r5, 0x20] | __asm ("strd fp, sl, [r5, 0x20]");
0x001f275a strd r8, r8, [r5, 0x28] | __asm ("strd r8, r8, [r5, 0x28]");
0x001f275e blx 0x26b48 | fcn_00026b48 ();
0x001f2762 ldr r0, [sp, 0x10] | r0 = var_10h;
0x001f2764 movs r2, 0x6c | r2 = 0x6c;
0x001f2766 strb.w r0, [r5, 0x484] | *((r5 + 0x484)) = r0;
0x001f276a ldrb.w r0, [sp, 0xb6] | r0 = *(arg_b6h);
0x001f276e str.w r4, [r5, 0x480] | __asm ("str.w r4, aav.0x000000ff");
0x001f2772 add.w r4, sp, 0x520 | r4 += arg_520h;
0x001f2776 ldrh.w r1, [sp, 0xb4] | r1 = *(arg_b4h);
0x001f277a strb.w r0, [r5, 0x487] | *((r5 + 0x487)) = r0;
0x001f277c lsls r7, r0, 0x12 | r7 = r0 << 0x12;
0x001f277e add.w r0, r5, 0x488 | r0 = r5 + 0x488;
0x001f2782 strh.w r1, [r5, 0x485] | *((r5 + 0x485)) = r1;
0x001f2786 mov r1, r4 | r1 = r4;
0x001f2788 str.w r7, [r5, 0x478] | __asm ("str.w r7, aav.0x000000ff");
0x001f278c str.w sb, [r5, 0x47c] | __asm ("str.w sb, aav.0x000000ff");
0x001f2790 blx 0x26b48 | fcn_00026b48 ();
0x001f2794 add.w r7, sp, 0x508 | r7 += arg_508h;
0x001f2798 vmov.i32 q9, 0 | __asm ("vmov.i32 q9, 0");
0x001f279c add.w r3, r5, 0x510 | r3 = r5 + 0x510;
0x001f27a0 ldrh.w r1, [sp, 0x45] | r1 = *(arg_45h);
0x001f27a4 mov r0, r7 | r0 = r7;
0x001f27a6 ldrb.w r2, [sp, 0x47] | r2 = *(arg_47h);
0x001f27aa vld1.64 {d16, d17}, [r0]! | __asm ("vld1.64 {d16, d17}, [r0]!");
0x001f27ae vst1.64 {d18, d19}, [r3] | __asm ("vst1.64 {d18, d19}, [r3]");
0x001f27b2 vldr d18, [r0] | __asm ("vldr d18, [r0]");
0x001f27b6 add.w r0, r5, 0x4f8 | r0 = r5 + 0x4f8;
0x001f27ba vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x001f27be strb.w r8, [r5, 0x4f4] | *((r5 + 0x4f4)) = r8;
0x001f27c2 strb.w r2, [r5, 0x4f7] | *((r5 + 0x4f7)) = r2;
0x001f27c6 strh.w r1, [r5, 0x4f5] | *((r5 + 0x4f5)) = r1;
0x001f27ca vstr d18, [r0] | __asm ("vstr d18, [r0]");
0x001f27ce ldrd r0, r1, [r6, 8] | __asm ("ldrd r0, r1, [r6, 8]");
0x001f27d2 strd r0, r1, [r5, 0x10] | __asm ("strd r0, r1, [r5, 0x10]");
0x001f27d6 add.w r1, r6, 0x10 | r1 = r6 + 0x10;
0x001f27da add.w r0, sp, 0x9e0 | r0 += arg_9e0h;
0x001f27de bl 0x1ab3b4 | fcn_001ab3b4 (r0, r1, r2);
0x001f27e2 ldr.w r0, [sp, 0x9e4] | r0 = *(arg_9e4h);
0x001f27e6 ldrb.w r1, [sp, 0x9e8] | r1 = *(arg_9e8h);
0x001f27ea strb.w r1, [sp, 0x9dc] | *(arg_9dch) = r1;
0x001f27ee ldrb r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x001f27f0 str.w r0, [sp, 0x9d8] | __asm ("str.w r0, [arg_9d8h]");
0x001f27f4 cmp r2, 0 |
| if (r2 == 0) {
0x001f27f6 beq.w 0x1f2994 | goto label_10;
| }
0x001f27fa str.w r0, [sp, 0x9e0] | __asm ("str.w r0, [arg_9e0h]");
0x001f27fe add.w r0, sp, 0x9e0 | r0 += arg_9e0h;
0x001f2802 strb.w r1, [sp, 0x9e4] | *(arg_9e4h) = r1;
0x001f2806 bl 0x1f2ac0 | fcn_001f2ac0 (r0, r1);
0x001f280a add.w r0, sp, 0x9e0 | r0 += arg_9e0h;
0x001f280e str.w r5, [sp, 0x9e0] | __asm ("str.w r5, [arg_9e0h]");
0x001f2812 bl 0x1a5790 | fcn_001a5790 (r0, r1);
0x001f2816 b 0x1f298a | goto label_11;
| label_8:
0x001f2838 add.w r0, sp, 0x500 | r0 += arg_500h;
0x001f283c add r1, sp, 0xb8 | r1 += arg_b8h;
0x001f283e adds r0, 4 | r0 += 4;
0x001f2840 str r0, [sp, 8] | var_8h = r0;
0x001f2842 add.w r0, sp, 0x590 | r0 += arg_590h;
0x001f2846 mov.w r2, 0x448 | r2 = 0x448;
0x001f284a blx 0x26b48 | fcn_00026b48 ();
0x001f284e add.w r0, sp, 0x520 | r0 += arg_520h;
0x001f2852 add r1, sp, 0x48 | r1 += arg_48h;
0x001f2854 movs r2, 0x6c | r2 = 0x6c;
0x001f2856 blx 0x26b48 | fcn_00026b48 ();
0x001f285a add.w r8, sp, 0x508 | r8 += arg_508h;
0x001f285e vld1.64 {d16, d17}, [r5]! | __asm ("vld1.64 {d16, d17}, [r5]!");
0x001f2862 mov r0, r8 | r0 = r8;
0x001f2864 vldr d18, [r5] | __asm ("vldr d18, [r5]");
0x001f2868 vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x001f286c vstr d18, [r0] | __asm ("vstr d18, [r0]");
| do {
0x001f2870 ldrex r0, [r6] | __asm ("ldrex r0, [r6]");
0x001f2874 adds r1, r0, 1 | r1 = r0 + 1;
0x001f2876 strex r2, r1, [r6] | __asm ("strex r2, r1, [r6]");
0x001f287a cmp r2, 0 |
0x001f287c bne 0x1f2870 |
| } while (r2 != 0);
0x001f287e cmp.w r0, -1 |
| if (r0 <= -1) {
0x001f2882 ble.w 0x1f2a2a | goto label_1;
| }
0x001f2886 mov.w r0, 0x520 | r0 = 0x520;
0x001f288a movs r1, 8 | r1 = 8;
0x001f288c str.w sb, [sp, 0xc] | __asm ("str.w sb, [var_ch]");
0x001f2890 bl 0x896f4 | r0 = fcn_000896f4 (r0, r1);
0x001f2894 cmp r0, 0 |
| if (r0 == 0) {
0x001f2896 beq.w 0x1f2a2e | goto label_9;
| }
0x001f289a mov r5, r0 | r5 = r0;
0x001f289c ldr r0, [pc, 0x1b0] |
0x001f289e mov.w sb, 0 | sb = 0;
0x001f28a2 movs r1, 0xcc | r1 = 0xcc;
0x001f28a4 add r0, pc | r0 = 0x3e52f8;
0x001f28a6 strd r1, sb, [r5] | __asm ("strd r1, sb, [r5]");
0x001f28aa str r0, [r5, 8] | *((r5 + 8)) = r0;
0x001f28ac add.w r0, r5, 0x30 | r0 = r5 + 0x30;
0x001f28b0 add.w r1, sp, 0x590 | r1 += arg_590h;
0x001f28b4 mov.w r2, 0x448 | r2 = 0x448;
0x001f28b8 strd sb, sb, [r5, 0x10] | __asm ("strd sb, sb, [r5, 0x10]");
0x001f28bc str r6, [r5, 0x18] | *((r5 + 0x18)) = r6;
0x001f28be strd fp, sl, [r5, 0x20] | __asm ("strd fp, sl, [r5, 0x20]");
0x001f28c2 strd sb, sb, [r5, 0x28] | __asm ("strd sb, sb, [r5, 0x28]");
0x001f28c6 blx 0x26b48 | fcn_00026b48 ();
0x001f28ca ldr r0, [sp, 0x10] | r0 = var_10h;
0x001f28cc strb.w r0, [r5, 0x484] | *((r5 + 0x484)) = r0;
0x001f28d0 ldrb.w r0, [sp, 0xb6] | r0 = *(arg_b6h);
0x001f28d4 ldrh.w r1, [sp, 0xb4] | r1 = *(arg_b4h);
0x001f28d8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x001f28da strh.w r1, [r5, 0x485] | *((r5 + 0x485)) = r1;
0x001f28de add.w r1, sp, 0x520 | r1 += arg_520h;
0x001f28e0 str r4, [r4, 0x18] | *((r4 + 0x18)) = r4;
0x001f28e2 strb.w r0, [r5, 0x487] | *((r5 + 0x487)) = r0;
0x001f28e6 add.w r0, r5, 0x488 | r0 = r5 + 0x488;
0x001f28ea str.w r2, [r5, 0x47c] | __asm ("str.w r2, aav.0x000000ff");
0x001f28ee movs r2, 0x6c | r2 = 0x6c;
0x001f28f0 str.w r7, [r5, 0x478] | __asm ("str.w r7, aav.0x000000ff");
0x001f28f4 str.w r4, [r5, 0x480] | __asm ("str.w r4, aav.0x000000ff");
0x001f28f8 blx 0x26b48 | fcn_00026b48 ();
0x001f28fc vmov.i32 q9, 0 | __asm ("vmov.i32 q9, 0");
0x001f2900 ldrh.w r0, [sp, 0x45] | r0 = *(arg_45h);
0x001f2904 add.w r2, r5, 0x510 | r2 = r5 + 0x510;
0x001f2908 vld1.64 {d16, d17}, [r8]! | __asm ("vld1.64 {d16, d17}, [r8]!");
0x001f290c add.w r4, r6, 0x10 | r4 = r6 + 0x10;
0x001f2910 strh.w r0, [r5, 0x4f5] | *((r5 + 0x4f5)) = r0;
0x001f2912 lsls r5, r6, 0x13 | r5 = r6 << 0x13;
0x001f2914 add.w r0, r5, 0x4f8 | r0 = r5 + 0x4f8;
0x001f2918 vst1.64 {d18, d19}, [r2] | __asm ("vst1.64 {d18, d19}, [r2]");
0x001f291c vldr d18, [r8] | __asm ("vldr d18, [r8]");
0x001f2920 vst1.64 {d16, d17}, [r0]! | __asm ("vst1.64 {d16, d17}, [r0]!");
0x001f2924 ldrb.w r1, [sp, 0x47] | r1 = *(arg_47h);
0x001f2928 strb.w sb, [r5, 0x4f4] | *((r5 + 0x4f4)) = sb;
0x001f292c strb.w r1, [r5, 0x4f7] | *((r5 + 0x4f7)) = r1;
0x001f2930 vstr d18, [r0] | __asm ("vstr d18, [r0]");
0x001f2934 ldrd r0, r1, [r6, 8] | __asm ("ldrd r0, r1, [r6, 8]");
0x001f2938 strd r0, r1, [r5, 0x10] | __asm ("strd r0, r1, [r5, 0x10]");
0x001f293c movs r0, 1 | r0 = 1;
| do {
0x001f293e ldrex r1, [r4] | __asm ("ldrex r1, [r4]");
0x001f2942 cmp r1, 0 |
| if (r1 != 0) {
0x001f2944 bne 0x1f2a14 | goto label_12;
| }
0x001f2946 strex r1, r0, [r4] | __asm ("strex r1, r0, [r4]");
0x001f294a cmp r1, 0 |
0x001f294c bne 0x1f293e |
| } while (r1 != 0);
0x001f294e dmb ish | __asm ("dmb ish");
| do {
0x001f2952 ldr r0, [pc, 0x100] |
0x001f2954 add r0, pc |
0x001f2956 ldr r0, [r0] | r0 = *(0x3e53ae);
0x001f2958 lsls r0, r0, 1 | r0 <<= 1;
| if (r0 != r0) {
0x001f295a bne 0x1f2a20 | goto label_13;
| }
0x001f295c movs r0, 0 | r0 = 0;
| label_0:
0x001f295e ldrb r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x001f2960 ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x001f2964 strb.w r0, [sp, 0x9dc] | *(arg_9dch) = r0;
0x001f2968 str.w r4, [sp, 0x9d8] | __asm ("str.w r4, [arg_9d8h]");
| if (r1 != 0) {
0x001f296c cbz r1, 0x1f29be |
0x001f296e strb.w r0, [sp, 0x9e4] | *(arg_9e4h) = r0;
0x001f2972 add.w r0, sp, 0x9e0 | r0 += arg_9e0h;
0x001f2976 str.w r4, [sp, 0x9e0] | __asm ("str.w r4, [arg_9e0h]");
0x001f297a bl 0x203270 | fcn_00203270 (r0, r1);
0x001f297e add.w r0, sp, 0x9e0 | r0 += arg_9e0h;
0x001f2982 str.w r5, [sp, 0x9e0] | __asm ("str.w r5, [arg_9e0h]");
0x001f2986 bl 0x1a5b24 | fcn_001a5b24 (r0, r1);
| label_11:
0x001f298a ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x001f298c ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x001f298e mov r0, r5 | r0 = r5;
0x001f2990 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x001f2992 b 0x1f29d8 | goto label_14;
| label_10:
0x001f2994 adds r0, 8 | r0 += 8;
0x001f2996 mov r1, r5 | r1 = r5;
0x001f2998 bl 0x1f2b0c | fcn_001f2b0c (r0, r1);
0x001f299c addw r0, sp, 0x9d8 | __asm ("addw r0, arg_9d8h");
0x001f29a0 bl 0x1f2ac0 | fcn_001f2ac0 (r0, r1);
0x001f29a4 ldr r0, [sp, 0xc] | r0 = var_ch;
0x001f29a6 str.w r0, [sp, 0x520] | __asm ("str.w r0, [arg_520h]");
0x001f29aa add.w r0, sp, 0x590 | r0 += arg_590h;
0x001f29ae stm r0!, {r4, r5, r7} | *(r0!) = r4;
| *((r0! + 4)) = r5;
| *((r0! + 8)) = r7;
0x001f29b0 add.w r0, sp, 0x590 | r0 += arg_590h;
0x001f29b4 strb.w r8, [sp, 0x508] | *(arg_508h) = r8;
0x001f29b8 bl 0x1ad9e4 | fcn_001ad9e4 (r0);
0x001f29bc b 0x1f29d8 |
| } else {
0x001f29be add.w r0, r6, 0x18 | r0 = r6 + 0x18;
0x001f29c2 mov r1, r5 | r1 = r5;
0x001f29c4 bl 0x2032bc | fcn_002032bc (r0, r1);
0x001f29c8 addw r0, sp, 0x9d8 | __asm ("addw r0, arg_9d8h");
0x001f29cc bl 0x203270 | fcn_00203270 (r0, r1);
0x001f29d0 ldr r0, [sp, 8] | r0 = var_8h;
0x001f29d2 mov r1, r5 | r1 = r5;
0x001f29d4 bl 0x1b144c | fcn_001b144c (r0, r1);
0x001f29d6 invalid |
| }
| label_14:
0x001f29d8 add.w r0, sp, 0x500 | r0 += arg_500h;
0x001f29dc bl 0x1f2a70 | fcn_001f2a70 (r0);
0x001f29e0 ldrex r0, [r5] | __asm ("ldrex r0, [r5]");
0x001f29e4 cmp r0, 0xcc |
| if (r0 == 0xcc) {
0x001f29e6 bne 0x1f29f6 |
0x001f29e8 dmb ish | __asm ("dmb ish");
0x001f29ec movs r0, 0x84 | r0 = 0x84;
0x001f29ee strex r1, r0, [r5] | __asm ("strex r1, r0, [r5]");
| if (r1 == 0) {
0x001f29f2 cbnz r1, 0x1f29fa |
0x001f29f4 b 0x1f2a02 |
| } else {
0x001f29f6 clrex | __asm ("clrex");
| }
0x001f29fa ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x001f29fc ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x001f29fe mov r0, r5 | r0 = r5;
0x001f2a00 blx r1 | uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
| }
0x001f2a02 ldr r0, [sp, 0x1c] | r0 = var_1ch;
| if (r0 != 0) {
0x001f2a04 cbz r0, 0x1f2a0c |
0x001f2a06 ldr r0, [sp, 0x18] | r0 = var_18h;
0x001f2a08 blx 0x26a3c | fcn_00026a3c ();
| }
0x001f2a0c addw sp, sp, 0x9ec | __asm ("addw sp, var_9ech");
0x001f2a10 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x001f2a14 mov r0, r4 | r0 = r4;
0x001f2a16 clrex | __asm ("clrex");
0x001f2a1a bl 0x3129c | fcn_0003129c (r0, r1, r2);
0x001f2a1e b 0x1f2952 |
| } while (1);
| label_13:
0x001f2a20 bl 0x30fe0 | r0 = fcn_00030fe0 ();
0x001f2a24 eor r0, r0, 1 | r0 ^= 1;
0x001f2a28 b 0x1f295e | goto label_0;
| label_1:
0x001f2a2a trap | __asm ("trap");
| label_9:
0x001f2a2e mov.w r0, 0x520 | r0 = 0x520;
0x001f2a32 movs r1, 8 | r1 = 8;
0x001f2a34 bl 0x281ae | fcn_000281ae ();
0x001f2a38 trap | __asm ("trap");
| label_5:
0x001f2a3a ldr r0, [pc, 0x20] |
0x001f2a3c movs r1, 0x22 | r1 = 0x22;
0x001f2a3e ldr r2, [pc, 0x20] |
0x001f2a40 add r0, pc | r0 = 0x3e54a2;
0x001f2a42 add r2, pc | r2 = 0x3e54a8;
0x001f2a44 bl 0x29c28 | fcn_00029c28 (r0, r1, r2);
0x001f2a48 trap | __asm ("trap");
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dev-conf-service @ 0x1f5100).
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.
[*] Function strcpy used 1 times dev-conf-service