[*] Binary protection state of nf_nat.ko

  
  	No RELRO       No Canary found   NX disabled  REL          No RPATH     No RUNPATH   Symbols


[*] Function popen tear down of nf_nat.ko

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_nat.ko @ 0x80016a4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.__nf_nat_cleanup_conntrack ()                    | void nf_nat_cleanup_conntrack (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
    0x080016a4 push {r4, lr}                                     |     
    0x080016a8 add r1, r0, 0x14                                  |     r1 = r0 + 0x14;
    0x080016ac mov r4, r0                                        |     r4 = r0;
    0x080016b0 ldr r0, [r0, 0x74]                                |     r0 = *((r0 + 0x74));
    0x080016b4 bl 0x8000558                                      |     hash_by_src ();
    0x080016b8 mov r3, sp                                        |     r3 = sp;
    0x080016bc bic r2, r3, 0x1fc0                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080016c0 bic r2, r2, 0x3f                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x080016c4 ldr r3, [r2, 4]                                   |     r3 = *((r2 + 4));
    0x080016c8 add r3, r3, 0x200                                 |     r3 += 0x200;
    0x080016cc add r3, r3, 1                                     |     r3++;
    0x080016d0 str r3, [r2, 4]                                   |     *((r2 + 4)) = r3;
    0x080016d4 ldr r3, [r4, 0x78]                                |     r3 = *((r4 + 0x78));
    0x080016d8 movw r1, 0x201                                    |     r1 = 0x201;
    0x080016dc ldr r2, [r4, 0x7c]                                |     r2 = *((r4 + 0x7c));
    0x080016e0 cmp r3, 0                                         |     
    0x080016e4 ldr r0, [pc, 0x14]                                |     r0 = *(0x80016fc);
    0x080016e8 str r3, [r2]                                      |     *(r2) = r3;
                                                                 |     if (r3 == 0) {
    0x080016ec strne r2, [r3, 4]                                 |         *((r3 + 4)) = r2;
                                                                 |     }
    0x080016f0 movw r3, 0x122                                    |     r3 = 0x122;
    0x080016f4 str r3, [r4, 0x7c]                                |     *((r4 + 0x7c)) = r3;
    0x080016f8 pop {r4, lr}                                      |     
    0x080016fc stmdaeq r0, {r1, r3, r4, r5, r6, r7, pc}          |     __asm ("stmdaeq r0, {r1, r3, r4, r5, r6, r7, pc}");
    0x08001700 stmdaeq r0, {r4, r5, r6}                          |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_nat.ko @ 0x8000698 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define SWAP64(val) ((uint64_t) (((val & 0x00000000000000ffull) << 56) | \
                                                                     |                                  ((val & 0x000000000000ff00ull) << 40) | \
                                                                     |                                  ((val & 0x0000000000ff0000ull) << 24) | \
                                                                     |                                  ((val & 0x00000000ff000000ull) <<  8) | \
                                                                     |                                  ((val & 0x000000ff00000000ull) >>  8) | \
                                                                     |                                  ((val & 0x0000ff0000000000ull) >> 24) | \
                                                                     |                                  ((val & 0x00ff000000000000ull) >> 40) | \
                                                                     |                                  ((val & 0xff00000000000000ull) >> 56)))
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) sym.nf_nat_setup_info ()                                 | void nf_nat_setup_info (int32_t arg1, int32_t arg2) {
                                                                     |     int32_t var_0h;
                                                                     |     int32_t var_4h;
                                                                     |     int32_t var_8h;
                                                                     |     int32_t var_ch;
                                                                     |     int32_t var_10h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int32_t var_18h;
                                                                     |     int32_t var_1ch;
                                                                     |     int32_t var_20h;
                                                                     |     int32_t var_24h;
                                                                     |     int32_t var_28h;
                                                                     |     int32_t var_2ch;
                                                                     |     int32_t var_30h;
                                                                     |     int32_t var_34h;
                                                                     |     int32_t var_38h;
                                                                     |     int32_t var_3ch;
                                                                     |     int32_t var_3eh;
                                                                     |     int32_t var_40h;
                                                                     |     int32_t var_44h;
                                                                     |     int32_t var_48h;
                                                                     |     int32_t var_4ch;
                                                                     |     int32_t var_50h;
                                                                     |     int32_t var_54h;
                                                                     |     int32_t var_58h;
                                                                     |     int32_t var_5ch;
                                                                     |     int32_t var_60h;
                                                                     |     int32_t var_64h;
                                                                     |     int32_t var_66h;
                                                                     |     int32_t var_68h;
                                                                     |     int32_t var_90h;
                                                                     |     int32_t var_94h;
                                                                     |     int32_t var_0h_2;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x08000698 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}             |     
    0x0800069c ldr sb, [r0, 0x6c]                                    |     sb = *((r0 + 0x6c));
    0x080006a0 sub sp, sp, 0x94                                      |     
    0x080006a4 ubfx r4, sb, 3, 1                                     |     r4 = (sb >> 3) & ((1 << 1) - 1);
    0x080006a8 str r0, [sp]                                          |     *(sp) = r0;
    0x080006ac cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x080006b0 bne 0x8000a58                                         |         goto label_10;
                                                                     |     }
    0x080006b4 ldr r3, [r0, 0x74]                                    |     r3 = *((r0 + 0x74));
    0x080006b8 mov r6, r1                                            |     r6 = r1;
    0x080006bc mov r7, r2                                            |     r7 = r2;
    0x080006c0 cmp r2, 1                                             |     
    0x080006c4 str r3, [sp, 4]                                       |     var_4h = r3;
                                                                     |     if (r2 > 1) {
    0x080006c8 bhi 0x8000a68                                         |         goto label_28;
                                                                     |     }
    0x080006cc ldr r3, [sp]                                          |     r3 = *(sp);
    0x080006d0 cmp r2, 0                                             |     
    0x080006d4 ldr r3, [r3, 0x6c]                                    |     r3 = *((r3 + 0x6c));
                                                                     |     if (r2 != 0) {
    0x080006d8 bne 0x8000a88                                         |         goto label_29;
                                                                     |     }
    0x080006dc tst r3, 0x80                                          |     
                                                                     |     if ((r3 & 0x80) != 0) {
    0x080006e0 bne 0x8000d14                                         |         goto label_30;
                                                                     |     }
    0x080006e4 ldr r5, [sp]                                          |     r5 = *(sp);
    0x080006e8 add r0, sp, 0x18                                      |     r0 += var_18h;
    0x080006ec add r1, r5, 0x44                                      |     r1 = r5 + 0x44;
    0x080006f0 stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x080006f4 ldr r8, [r6]                                          |     r8 = *(r6);
    0x080006f8 ldr fp, [r5, 0x74]                                    |     fp = *((r5 + 0x74));
    0x080006fc ands sl, r8, 0x14                                     |     sl = r8 & 0x14;
                                                                     |     if (sl != r8) {
    0x08000700 bne 0x8000b24                                         |         goto label_31;
                                                                     |     }
    0x08000704 mov r1, r6                                            |     r1 = r6;
    0x08000708 add r0, sp, 0x18                                      |     r0 += var_18h;
    0x0800070c bl 0x80001b4                                          |     r0 = in_range ();
    0x08000710 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x08000714 beq 0x8000f90                                         |         goto label_32;
                                                                     |     }
    0x08000718 add r8, sp, 0x68                                      |     r8 += var_68h;
    0x0800071c add r1, sp, 0x18                                      |     r1 += var_18h;
    0x08000720 mov r0, r8                                            |     r0 = r8;
    0x08000724 stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x08000728 mov r0, r8                                            |     r0 = r8;
    0x0800072c ldr r1, [sp]                                          |     r1 = *(sp);
    0x08000730 stmdaeq r0, {r1, r3, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, pc}");
    0x08000734 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x08000738 beq 0x8001098                                         |         goto label_33;
                                                                     |     }
                                                                     | label_15:
    0x0800073c ldr r8, [r6]                                          |     r8 = *(r6);
    0x08000740 add r5, sp, 0x40                                      |     r5 += var_40h;
    0x08000744 and sl, r8, 0x14                                      |     sl = r8 & 0x14;
                                                                     | label_18:
    0x08000748 add lr, sp, 0x18                                      |     lr += var_18h;
    0x0800074c mov ip, r5                                            |     
    0x08000750 tst r8, 1                                             |     
    0x08000754 ldm lr!, {r0, r1, r2, r3}                             |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x08000758 stm ip!, {r0, r1, r2, r3}                             |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x0800075c ldm lr!, {r0, r1, r2, r3}                             |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x08000760 stm ip!, {r0, r1, r2, r3}                             |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x08000764 ldm lr, {r0, r1}                                      |     r0 = *(lr);
                                                                     |     r1 = *((lr + 4));
    0x08000768 stm ip, {r0, r1}                                      |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     if ((r8 & 1) == 0) {
    0x0800076c beq 0x80008f8                                         |         goto label_1;
                                                                     |     }
                                                                     | label_2:
    0x08000770 ldr r2, [r6, 4]                                       |     r2 = *((r6 + 4));
    0x08000774 mov ip, r5                                            |     
    0x08000778 ldr r3, [r6, 0x14]                                    |     r3 = *((r6 + 0x14));
    0x0800077c cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x08000780 beq 0x8000ae8                                         |         goto label_34;
                                                                     |     }
                                                                     | label_0:
    0x08000784 ldr r3, [sp]                                          |     r3 = *(sp);
    0x08000788 ldrh r3, [r3, 0x26]                                   |     r3 = *((r3 + 0x26));
    0x0800078c cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x08000790 movne r3, 3                                           |         r3 = 3;
                                                                     |     }
                                                                     |     if (r3 != 2) {
    0x08000794 moveq r3, 0                                           |         r3 = 0;
                                                                     |     }
    0x08000798 ands fp, r8, 8                                        |     
    0x0800079c movwne r0, 0xbeff                                     |     __asm ("movwne r0, 0xbeff");
    0x080007a0 movtne r0, 0xdead                                     |     __asm ("movtne r0, 0xdead");
                                                                     |     if (fp == r8) {
    0x080007a4 bne 0x80007cc                                         |         
    0x080007a8 add r2, sp, 0x90                                      |         r2 += var_90h;
    0x080007ac movw r0, 0xbeff                                       |         
    0x080007b0 movt r0, 0xdead                                       |         r0 = 0xdeadbeff;
    0x080007b4 add r2, r2, r3, lsl 2                                 |         r2 += (r3 << 2);
    0x080007b8 ldr r1, [r2, -0x3c]                                   |         r1 = var_60h;
    0x080007bc ldr r2, [sp]                                          |         r2 = *(sp);
    0x080007c0 ldrh r2, [r2, 8]                                      |         r2 = *((r2 + 8));
    0x080007c4 eor r2, r2, r1                                        |         r2 ^= r1;
    0x080007c8 add r0, r2, r0                                        |         r0 = r2 + r0;
                                                                     |     }
    0x080007cc add r3, ip, r3, lsl 2                                 |     r3 = ip + (r3 << 2);
    0x080007d0 ldr r2, [sp, 0x40]                                    |     r2 = var_40h;
    0x080007d4 str r3, [sp, 8]                                       |     var_8h = r3;
    0x080007d8 sub sb, ip, 4                                         |     sb -= var_50h;
    0x080007dc ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x080007e0 add lr, sp, 0x54                                      |     lr += var_54h;
    0x080007e4 ldr r1, [sp, 0x44]                                    |     r1 = var_44h;
    0x080007e8 sub r2, r2, r3                                        |     r2 -= r3;
    0x080007ec add r3, r3, r0                                        |     r3 += r0;
    0x080007f0 add r1, r0, r1                                        |     r1 = r0 + r1;
    0x080007f4 ldr r0, [sp, 0x4c]                                    |     r0 = var_4ch;
    0x080007f8 eor r2, r2, r3, ror 28                                |     r2 ^= (r3 >>> 28);
    0x080007fc add r3, r1, r3                                        |     r3 = r1 + r3;
    0x08000800 sub r1, r1, r2                                        |     r1 -= r2;
    0x08000804 strd r4, r5, [sp, 0x10]                               |     __asm ("strd r4, r5, [var_10h]");
    0x08000808 eor r1, r1, r2, ror 26                                |     r1 ^= (r2 >>> 26);
    0x0800080c add r2, r2, r3                                        |     r2 += r3;
    0x08000810 sub r3, r3, r1                                        |     r3 -= r1;
    0x08000814 ldr r5, [sp, 8]                                       |     r5 = var_8h;
    0x08000818 eor r3, r3, r1, ror 24                                |     r3 ^= (r1 >>> 24);
    0x0800081c add r1, r1, r2                                        |     r1 += r2;
    0x08000820 sub r2, r2, r3                                        |     r2 -= r3;
    0x08000824 str sl, [sp, 0xc]                                     |     var_ch = sl;
    0x08000828 eor r2, r2, r3, ror 16                                |     r2 ^= (r3 >>> 16);
    0x0800082c add r3, r1, r3                                        |     r3 = r1 + r3;
    0x08000830 sub r1, r1, r2                                        |     r1 -= r2;
    0x08000834 eor r1, r1, r2, ror 13                                |     r1 ^= (r2 >>> 13);
    0x08000838 add r2, r3, r2                                        |     r2 = r3 + r2;
    0x0800083c sub r3, r3, r1                                        |     r3 -= r1;
    0x08000840 eor r3, r3, r1, ror 28                                |     r3 ^= (r1 >>> 28);
    0x08000844 add r1, r2, r1                                        |     r1 = r2 + r1;
    0x08000848 eor r3, r3, r1                                        |     r3 ^= r1;
    0x0800084c add r2, r2, r0                                        |     r2 += r0;
    0x08000850 sub r3, r3, r1, ror 18                                |     r3 -= (r1 >>> 18);
    0x08000854 add r0, r6, 0x10                                      |     r0 = r6 + 0x10;
    0x08000858 eor r2, r2, r3                                        |     r2 ^= r3;
    0x0800085c sub r2, r2, r3, ror 21                                |     r2 -= (r3 >>> 21);
    0x08000860 eor r1, r1, r2                                        |     r1 ^= r2;
    0x08000864 sub r1, r1, r2, ror 7                                 |     r1 -= (r2 >>> 7);
    0x08000868 eor r3, r3, r1                                        |     r3 ^= r1;
    0x0800086c sub r3, r3, r1, ror 16                                |     r3 -= (r1 >>> 16);
    0x08000870 eor r2, r2, r3                                        |     r2 ^= r3;
    0x08000874 sub r2, r2, r3, ror 28                                |     r2 -= (r3 >>> 28);
    0x08000878 eor r1, r1, r2                                        |     r1 ^= r2;
    0x0800087c sub r1, r1, r2, ror 18                                |     r1 -= (r2 >>> 18);
    0x08000880 eor r3, r3, r1                                        |     r3 ^= r1;
    0x08000884 sub r3, r3, r1, ror 8                                 |     r3 -= (r1 >>> 8);
    0x08000888 mov r1, 0                                             |     r1 = 0;
                                                                     |     do {
    0x0800088c cmp r1, 0                                             |         
    0x08000890 add lr, lr, 4                                         |         lr += var_58h;
                                                                     |         if (r1 != 0) {
    0x08000894 moveq r4, r1                                          |             r4 = r1;
                                                                     |         }
                                                                     |         if (r1 == 0) {
    0x08000898 movne ip, 0                                           |             
                                                                     |         }
                                                                     |         if (r1 == 0) {
    0x0800089c mvnne r2, 0                                           |             r2 = ~0;
                                                                     |         }
                                                                     |         if (r1 != 0) {
    0x080008a0 ldreq r2, [r0, 4]                                     |             r2 = *((r0 + 4));
                                                                     |         }
                                                                     |         if (r1 == 0) {
    0x080008a4 movne r4, ip                                          |             r4 = ip;
                                                                     |         }
                                                                     |         if (r1 != 0) {
    0x080008a8 ldreq ip, [r0, -0xc]                                  |             ip = *((r0 - 0xc));
                                                                     |         }
    0x080008ac reveq r2, r2                                          |         __asm ("reveq r2, r2");
                                                                     |         if (r1 != 0) {
    0x080008b0 addeq r2, r2, 1                                       |             r2++;
                                                                     |         }
    0x080008b4 reveq ip, ip                                          |         __asm ("reveq ip, ip");
                                                                     |         if (r1 != 0) {
    0x080008b8 subeq r2, r2, ip                                      |             r2 -= ip;
                                                                     |         }
    0x080008bc umull sl, r2, r3, r2                                  |         sl:r2 = r3 * r2;
    0x080008c0 mla r2, r3, r4, r2                                    |         __asm ("mla r2, r3, r4, r2");
    0x080008c4 add ip, ip, r2                                        |         
    0x080008c8 ldr r2, [r0, 4]!                                      |         r2 = *((r0 += 4));
    0x080008cc rev ip, ip                                            |         ip = SWAPundefined (ip);
    0x080008d0 str ip, [sb, 4]!                                      |         *((sb += 4)) = ip;
    0x080008d4 cmp ip, r2                                            |         
                                                                     |         if (ip == r2) {
    0x080008d8 movne r1, 1                                           |             r1 = 1;
                                                                     |         }
    0x080008dc cmp fp, 0                                             |         
                                                                     |         if (fp != 0) {
    0x080008e0 ldreq r2, [lr, -4]                                    |             r2 = *((lr - 4));
                                                                     |         }
                                                                     |         if (fp != 0) {
    0x080008e4 eoreq r3, r3, r2                                      |             r3 ^= r2;
                                                                     |         }
    0x080008e8 cmp sb, r5                                            |         
    0x080008ec bne 0x800088c                                         |         
                                                                     |     } while (sb != r5);
    0x080008f0 ldr sl, [sp, 0xc]                                     |     sl = var_ch;
    0x080008f4 ldrd r4, r5, [sp, 0x10]                               |     __asm ("ldrd r4, r5, [var_10h]");
                                                                     |     do {
                                                                     | label_1:
    0x080008f8 cmp sl, 0                                             |         
                                                                     |         if (sl == 0) {
    0x080008fc bne 0x8000960                                         |             
    0x08000900 tst r8, 2                                             |             
                                                                     |             if ((r8 & 2) != 0) {
    0x08000904 beq 0x800093c                                         |                 
    0x08000908 tst r8, 0x20                                          |                 
                                                                     |                 if ((r8 & 0x20) != 0) {
    0x0800090c bne 0x8000f3c                                         |                     goto label_35;
                                                                     |                 }
    0x08000910 add r3, r6, 0x26                                      |                 r3 = r6 + 0x26;
    0x08000914 add r2, r6, 0x24                                      |                 r2 = r6 + 0x24;
    0x08000918 mov r1, r7                                            |                 r1 = r7;
    0x0800091c mov r0, r5                                            |                 r0 = r5;
    0x08000920 bl 0x8000070                                          |                 r0 = l4proto_in_range ();
    0x08000924 cmp r0, 0                                             |                 
                                                                     |                 if (r0 == 0) {
    0x08000928 beq 0x8000f3c                                         |                     goto label_35;
                                                                     |                 }
    0x0800092c ldrh r2, [r6, 0x24]                                   |                 r2 = *((r6 + 0x24));
    0x08000930 ldrh r3, [r6, 0x26]                                   |                 r3 = *((r6 + 0x26));
    0x08000934 cmp r2, r3                                            |                 
                                                                     |                 if (r2 == r3) {
    0x08000938 beq 0x8000c84                                         |                     goto label_14;
                                                                     |                 }
                                                                     |             }
    0x0800093c add r8, sp, 0x68                                      |             r8 += var_68h;
    0x08000940 mov r1, r5                                            |             r1 = r5;
    0x08000944 mov r0, r8                                            |             r0 = r8;
    0x08000948 stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |             __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x0800094c mov r0, r8                                            |             r0 = r8;
    0x08000950 ldr r1, [sp]                                          |             r1 = *(sp);
    0x08000954 stmdaeq r0, {r1, r3, r5, r6, r7, pc}                  |             __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, pc}");
    0x08000958 cmp r0, 0                                             |             
                                                                     |             if (r0 == 0) {
    0x0800095c beq 0x8000c84                                         |                 goto label_14;
                                                                     |             }
                                                                     |         }
    0x08000960 ldrb r3, [sp, 0x66]                                   |         r3 = var_66h;
    0x08000964 cmp r3, 0x21                                          |         
                                                                     |         if (r3 == 0x21) {
    0x08000968 beq 0x8000b8c                                         |             goto label_36;
                                                                     |         }
    0x0800096c cmp r3, 0x21                                          |         
                                                                     |         if (r3 < 0x21) {
    0x08000970 bls 0x8000b6c                                         |             goto label_37;
                                                                     |         }
                                                                     | label_3:
    0x08000974 cmp r3, 0x3a                                          |         
                                                                     |         if (r3 == 0x3a) {
    0x08000978 beq 0x8001000                                         |             goto label_38;
                                                                     |         }
    0x0800097c cmp r3, 0x39                                          |         
                                                                     |         if (r3 < 0x39) {
    0x08000980 bls 0x8000c84                                         |             goto label_14;
                                                                     |         }
    0x08000984 add r3, r3, 0x7c                                      |         r3 += 0x7c;
    0x08000988 tst r3, 0xfb                                          |         
                                                                     |         if ((r3 & 0xfb) == 0) {
    0x0800098c beq 0x8000b8c                                         |             goto label_36;
                                                                     |         }
    0x08000990 ldr r2, [sp, 0x40]                                    |         r2 = var_40h;
    0x08000994 ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x08000998 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x0800099c bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
                                                                     | label_4:
    0x080009a0 ldr r2, [sp, 0x44]                                    |         r2 = var_44h;
    0x080009a4 ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x080009a8 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x080009ac bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
                                                                     | label_27:
    0x080009b0 ldr r2, [sp, 0x48]                                    |         r2 = var_48h;
    0x080009b4 ldr r3, [sp, 0x20]                                    |         r3 = var_20h;
    0x080009b8 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x080009bc bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
    0x080009c0 ldr r2, [sp, 0x4c]                                    |         r2 = var_4ch;
    0x080009c4 ldr r3, [sp, 0x24]                                    |         r3 = var_24h;
    0x080009c8 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x080009cc bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
    0x080009d0 ldr r2, [sp, 0x50]                                    |         r2 = var_50h;
    0x080009d4 ldr r3, [sp, 0x28]                                    |         r3 = var_28h;
    0x080009d8 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x080009dc bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
    0x080009e0 ldr r2, [sp, 0x54]                                    |         r2 = var_54h;
    0x080009e4 ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x080009e8 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x080009ec bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
    0x080009f0 ldr r2, [sp, 0x58]                                    |         r2 = var_58h;
    0x080009f4 ldr r3, [sp, 0x30]                                    |         r3 = var_30h;
    0x080009f8 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x080009fc bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
    0x08000a00 ldr r2, [sp, 0x5c]                                    |         r2 = var_5ch;
    0x08000a04 ldr r3, [sp, 0x34]                                    |         r3 = var_34h;
    0x08000a08 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x08000a0c bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
    0x08000a10 ldr r2, [sp, 0x60]                                    |         r2 = var_60h;
    0x08000a14 ldr r3, [sp, 0x38]                                    |         r3 = var_38h;
    0x08000a18 cmp r2, r3                                            |         
                                                                     |         if (r2 != r3) {
    0x08000a1c bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
    0x08000a20 ldr r3, [sp, 0x64]                                    |         r3 = var_64h;
    0x08000a24 ldr r2, [sp, 0x3c]                                    |         r2 = var_3ch;
    0x08000a28 eor r3, r3, r2                                        |         r3 ^= r2;
    0x08000a2c bics r3, r3, 0xff000000                               |         __asm ("bics r3, r3, 0xff000000");
                                                                     |         if (r2 != r3) {
    0x08000a30 bne 0x8000c94                                         |             goto label_39;
                                                                     |         }
                                                                     | label_6:
    0x08000a34 cmp r7, 0                                             |         
                                                                     |         if (r7 == 0) {
    0x08000a38 beq 0x8000ea4                                         |             goto label_40;
                                                                     |         }
    0x08000a3c ldr r3, [sp]                                          |         r3 = *(sp);
    0x08000a40 ldr r3, [r3, 0x6c]                                    |         r3 = *((r3 + 0x6c));
                                                                     | label_5:
    0x08000a44 cmp r7, 1                                             |         
                                                                     |         if (r7 != 1) {
    0x08000a48 bne 0x8000f10                                         |             goto label_41;
                                                                     |         }
                                                                     | label_25:
    0x08000a4c ldr r2, [sp]                                          |         r2 = *(sp);
    0x08000a50 orr r3, r3, 0x100                                     |         r3 |= 0x100;
    0x08000a54 str r3, [r2, 0x6c]                                    |         *((r2 + 0x6c)) = r3;
                                                                     | label_10:
    0x08000a58 mov r4, 1                                             |         r4 = 1;
                                                                     | label_7:
    0x08000a5c mov r0, r4                                            |         r0 = r4;
    0x08000a60 add sp, sp, 0x94                                      |         
    0x08000a64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}              |         
                                                                     | label_28:
    0x08000a68 mov r3, r4                                            |         r3 = r4;
    0x08000a6c mov r2, 9                                             |         r2 = 9;
    0x08000a70 movw r1, 0x263                                        |         r1 = 0x263;
    0x08000a74 stmdaeq r0, {r2, r3, r5, r6, r8, lr}                  |         __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, lr}");
    0x08000a78 stmdaeq r0, {r2, r3, r5, r6, r8, lr}                  |         __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, lr}");
    0x08000a7c stmdaeq r0, {r1, r2, r3, r5, r6, r7, pc}              |         __asm ("stmdaeq r0, {r1, r2, r3, r5, r6, r7, pc}");
    0x08000a80 ldr r3, [sp]                                          |         r3 = *(sp);
    0x08000a84 ldr r3, [r3, 0x6c]                                    |         r3 = *((r3 + 0x6c));
                                                                     | label_29:
    0x08000a88 tst r3, 0x100                                         |         
                                                                     |         if ((r3 & 0x100) != 0) {
    0x08000a8c bne 0x8000d14                                         |             goto label_30;
                                                                     |         }
    0x08000a90 ldr r3, [sp]                                          |         r3 = *(sp);
    0x08000a94 add r0, sp, 0x18                                      |         r0 += var_18h;
    0x08000a98 add r1, r3, 0x44                                      |         r1 = r3 + 0x44;
    0x08000a9c stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |         __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x08000aa0 add ip, sp, 0x18                                      |         
    0x08000aa4 add r5, sp, 0x40                                      |         r5 += var_40h;
    0x08000aa8 ldr r8, [r6]                                          |         r8 = *(r6);
    0x08000aac mov lr, r5                                            |         lr = r5;
    0x08000ab0 ldm ip!, {r0, r1, r2, r3}                             |         r0 = *(ip!);
                                                                     |         r1 = *((ip! + 4));
                                                                     |         r2 = *((ip! + 8));
                                                                     |         r3 = *((ip! + 12));
    0x08000ab4 tst r8, 1                                             |         
    0x08000ab8 stm lr!, {r0, r1, r2, r3}                             |         *(lr!) = r0;
                                                                     |         *((lr! + 4)) = r1;
                                                                     |         *((lr! + 8)) = r2;
                                                                     |         *((lr! + 12)) = r3;
    0x08000abc and sl, r8, 0x14                                      |         sl = r8 & 0x14;
    0x08000ac0 ldm ip!, {r0, r1, r2, r3}                             |         r0 = *(ip!);
                                                                     |         r1 = *((ip! + 4));
                                                                     |         r2 = *((ip! + 8));
                                                                     |         r3 = *((ip! + 12));
    0x08000ac4 stm lr!, {r0, r1, r2, r3}                             |         *(lr!) = r0;
                                                                     |         *((lr! + 4)) = r1;
                                                                     |         *((lr! + 8)) = r2;
                                                                     |         *((lr! + 12)) = r3;
    0x08000ac8 ldm ip, {r0, r1}                                      |         r0 = *(ip);
                                                                     |         r1 = *((ip + 4));
    0x08000acc stm lr, {r0, r1}                                      |         *(lr) = r0;
                                                                     |         *((lr + 4)) = r1;
    0x08000ad0 beq 0x80008f8                                         |         
                                                                     |     } while ((r8 & 1) == 0);
    0x08000ad4 ldr r2, [r6, 4]                                       |     r2 = *((r6 + 4));
    0x08000ad8 add ip, sp, 0x54                                      |     
    0x08000adc ldr r3, [r6, 0x14]                                    |     r3 = *((r6 + 0x14));
    0x08000ae0 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000ae4 bne 0x8000784                                         |         goto label_0;
                                                                     |     }
                                                                     | label_34:
    0x08000ae8 ldr r2, [r6, 8]                                       |     r2 = *((r6 + 8));
    0x08000aec ldr r3, [r6, 0x18]                                    |     r3 = *((r6 + 0x18));
    0x08000af0 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000af4 bne 0x8000784                                         |         goto label_0;
                                                                     |     }
    0x08000af8 ldr r2, [r6, 0xc]                                     |     r2 = *((r6 + 0xc));
    0x08000afc ldr r3, [r6, 0x1c]                                    |     r3 = *((r6 + 0x1c));
    0x08000b00 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000b04 bne 0x8000784                                         |         goto label_0;
                                                                     |     }
    0x08000b08 ldr r2, [r6, 0x10]                                    |     r2 = *((r6 + 0x10));
    0x08000b0c ldr r3, [r6, 0x20]                                    |     r3 = *((r6 + 0x20));
    0x08000b10 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000b14 bne 0x8000784                                         |         goto label_0;
                                                                     |     }
    0x08000b18 ldmib r6, {r0, r1, r2, r3}                            |     __asm ("ldmib r6, {r0, r1, r2, r3}");
    0x08000b1c stm ip, {r0, r1, r2, r3}                              |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     *((ip + 8)) = r2;
                                                                     |     *((ip + 12)) = r3;
    0x08000b20 b 0x80008f8                                           |     goto label_1;
                                                                     | label_31:
    0x08000b24 add lr, sp, 0x18                                      |     lr += var_18h;
    0x08000b28 add r5, sp, 0x40                                      |     r5 += var_40h;
    0x08000b2c mov ip, r5                                            |     
    0x08000b30 tst r8, 1                                             |     
    0x08000b34 ldm lr!, {r0, r1, r2, r3}                             |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x08000b38 stm ip!, {r0, r1, r2, r3}                             |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x08000b3c ldm lr!, {r0, r1, r2, r3}                             |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x08000b40 stm ip!, {r0, r1, r2, r3}                             |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x08000b44 ldm lr, {r0, r1}                                      |     r0 = *(lr);
                                                                     |     r1 = *((lr + 4));
    0x08000b48 stm ip, {r0, r1}                                      |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     if ((r8 & 1) != 0) {
    0x08000b4c bne 0x8000770                                         |         goto label_2;
                                                                     |     }
    0x08000b50 ldrb r3, [sp, 0x66]                                   |     r3 = var_66h;
    0x08000b54 cmp r3, 0x21                                          |     
                                                                     |     if (r3 != 0x21) {
    0x08000b58 moveq r2, r8                                          |         r2 = r8;
                                                                     |     }
                                                                     |     if (r3 != 0x21) {
    0x08000b5c andeq r3, r2, 2                                       |         r3 = r2 & 2;
                                                                     |     }
                                                                     |     if (r3 == 0x21) {
    0x08000b60 beq 0x8000ba0                                         |         goto label_42;
                                                                     |     }
    0x08000b64 cmp r3, 0x21                                          |     
                                                                     |     if (r3 > 0x21) {
    0x08000b68 bhi 0x8000974                                         |         goto label_3;
                                                                     |     }
                                                                     | label_37:
    0x08000b6c cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x08000b70 beq 0x8001000                                         |         goto label_38;
                                                                     |     }
    0x08000b74 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x08000b78 beq 0x8000c84                                         |         goto label_14;
                                                                     |     }
    0x08000b7c cmp r3, 6                                             |     
                                                                     |     if (r3 != 6) {
    0x08000b80 beq 0x8000b8c                                         |         
    0x08000b84 cmp r3, 0x11                                          |         
                                                                     |         if (r3 != 0x11) {
    0x08000b88 bne 0x8000c84                                         |             goto label_14;
                                                                     |         }
                                                                     |     }
                                                                     | label_36:
    0x08000b8c ldr r8, [r6]                                          |     r8 = *(r6);
                                                                     | label_13:
    0x08000b90 mov r2, r8                                            |     r2 = r8;
    0x08000b94 cmp r7, 0                                             |     
    0x08000b98 and r3, r8, 2                                         |     r3 = r8 & 2;
                                                                     |     if (r7 != 0) {
    0x08000b9c bne 0x8000d30                                         |         goto label_43;
                                                                     |     }
                                                                     | label_42:
    0x08000ba0 add fp, sp, 0x50                                      |     
    0x08000ba4 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x08000ba8 beq 0x8000d44                                         |         goto label_44;
                                                                     |     }
                                                                     | label_20:
    0x08000bac ldrh r8, [r6, 0x24]                                   |     r8 = *((r6 + 0x24));
    0x08000bb0 ldrh r3, [r6, 0x26]                                   |     r3 = *((r6 + 0x26));
    0x08000bb4 rev16 r8, r8                                          |     __asm ("rev16 r8, r8");
    0x08000bb8 rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x08000bbc uxth r8, r8                                           |     r8 = (int16_t) r8;
    0x08000bc0 uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x08000bc4 cmp r8, r3                                            |     
                                                                     |     if (r8 <= r3) {
    0x08000bc8 movhi r1, r3                                          |         r1 = r3;
                                                                     |     }
                                                                     |     if (r8 <= r3) {
    0x08000bcc movhi r3, r8                                          |         r3 = r8;
                                                                     |     }
                                                                     |     if (r8 > r3) {
    0x08000bd0 movls r1, r8                                          |         r1 = r8;
                                                                     |     }
    0x08000bd4 add r3, r3, 1                                         |     r3++;
    0x08000bd8 sub r3, r3, r1                                        |     r3 -= r1;
    0x08000bdc mov r8, r1                                            |     r8 = r1;
    0x08000be0 cmp r3, 0x80                                          |     
    0x08000be4 str r3, [sp, 0xc]                                     |     var_ch = r3;
                                                                     |     if (r3 >= 0x80) {
    0x08000be8 movlo sl, r3                                          |         sl = r3;
                                                                     |     }
                                                                     |     if (r3 < 0x80) {
    0x08000bec movhs sl, 0x80                                        |         sl = 0x80;
                                                                     |     }
                                                                     | label_8:
    0x08000bf0 tst r2, 0x20                                          |     
                                                                     |     if ((r2 & 0x20) == 0) {
    0x08000bf4 beq 0x8000ff4                                         |         goto label_45;
                                                                     |     }
    0x08000bf8 ldrh r1, [r6, 0x28]                                   |     r1 = *((r6 + 0x28));
    0x08000bfc ldrh r2, [fp]                                         |     r2 = *(fp);
    0x08000c00 rev16 r1, r1                                          |     __asm ("rev16 r1, r1");
    0x08000c04 rev16 r2, r2                                          |     __asm ("rev16 r2, r2");
    0x08000c08 sub r2, r2, r1                                        |     r2 -= r1;
    0x08000c0c uxth sb, r2                                           |     sb = (int16_t) r2;
                                                                     | label_19:
    0x08000c10 cmp sl, 0                                             |     
                                                                     |     if (sl == 0) {
    0x08000c14 beq 0x8000c84                                         |         goto label_14;
                                                                     |     }
    0x08000c18 uxth r6, r8                                           |     r6 = (int16_t) r8;
    0x08000c1c add r8, sp, 0x68                                      |     r8 += var_68h;
    0x08000c20 str r4, [sp, 8]                                       |     var_8h = r4;
    0x08000c24 ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x08000c28 str r7, [sp, 0xc]                                     |     var_ch = r7;
                                                                     | label_12:
    0x08000c2c mov r7, 0                                             |     r7 = 0;
    0x08000c30 b 0x8000c40                                           |     
                                                                     |     while (r0 != 0) {
    0x08000c34 add r7, r7, 1                                         |         r7++;
    0x08000c38 cmp r7, sl                                            |         
                                                                     |         if (r7 == sl) {
    0x08000c3c beq 0x8000f20                                         |             goto label_46;
                                                                     |         }
    0x08000c40 add r0, sb, r7                                        |         r0 = sb + r7;
    0x08000c44 mov r1, r4                                            |         r1 = r4;
    0x08000c48 uxth r0, r0                                           |         r0 = (int16_t) r0;
    0x08000c4c stmdaeq r0, {r1, r4, r5, r6, r7, pc}                  |         __asm ("stmdaeq r0, {r1, r4, r5, r6, r7, pc}");
    0x08000c50 add r1, r6, r1                                        |         r1 = r6 + r1;
    0x08000c54 rev16 r1, r1                                          |         __asm ("rev16 r1, r1");
    0x08000c58 mov r0, r8                                            |         r0 = r8;
    0x08000c5c strh r1, [fp]                                         |         *(fp) = r1;
    0x08000c60 mov r1, r5                                            |         r1 = r5;
    0x08000c64 stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |         __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x08000c68 mov r0, r8                                            |         r0 = r8;
    0x08000c6c ldr r1, [sp]                                          |         r1 = *(sp);
    0x08000c70 stmdaeq r0, {r1, r3, r5, r6, r7, pc}                  |         __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, pc}");
    0x08000c74 cmp r0, 0                                             |         
    0x08000c78 bne 0x8000c34                                         |         
                                                                     |     }
                                                                     | label_11:
    0x08000c7c ldr r4, [sp, 8]                                       |     r4 = var_8h;
    0x08000c80 ldr r7, [sp, 0xc]                                     |     r7 = var_ch;
                                                                     | label_14:
    0x08000c84 ldr r2, [sp, 0x40]                                    |     r2 = var_40h;
    0x08000c88 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x08000c8c cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x08000c90 beq 0x80009a0                                         |         goto label_4;
                                                                     |     }
                                                                     | label_39:
    0x08000c94 mov r1, r5                                            |     r1 = r5;
    0x08000c98 add r0, sp, 0x68                                      |     r0 += var_68h;
    0x08000c9c stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x08000ca0 ldr r0, [sp]                                          |     r0 = *(sp);
    0x08000ca4 add r1, sp, 0x68                                      |     r1 += var_68h;
    0x08000ca8 stmdaeq r0, {r1, r2, r4, r5, r6, r7, pc}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, r7, pc}");
    0x08000cac cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x08000cb0 beq 0x8000e7c                                         |         goto label_47;
                                                                     |     }
    0x08000cb4 ldr r2, [sp]                                          |     r2 = *(sp);
    0x08000cb8 ldr r3, [r2, 0x6c]                                    |     r3 = *((r2 + 0x6c));
    0x08000cbc orr r3, r3, 0x20                                      |     r3 |= 0x20;
    0x08000cc0 str r3, [r2, 0x6c]                                    |     *((r2 + 0x6c)) = r3;
    0x08000cc4 ldr r2, [r2, 0x8c]                                    |     r2 = *((r2 + 0x8c));
    0x08000cc8 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x08000ccc beq 0x8000a44                                         |         goto label_5;
                                                                     |     }
                                                                     | label_24:
    0x08000cd0 ldrb r1, [r2]                                         |     r1 = *(r2);
    0x08000cd4 cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x08000cd8 beq 0x8000a44                                         |         goto label_5;
                                                                     |     }
                                                                     | label_9:
    0x08000cdc cmn r2, r1                                            |     
                                                                     |     if (r2 == r1) {
    0x08000ce0 beq 0x8000a34                                         |         goto label_6;
                                                                     |     }
    0x08000ce4 ldrb r3, [r2, 2]                                      |     r3 = *((r2 + 2));
    0x08000ce8 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x08000cec beq 0x8000cf8                                         |         goto label_48;
                                                                     |     }
    0x08000cf0 cmn r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000cf4 bne 0x8000a34                                         |         goto label_6;
                                                                     |     }
                                                                     | label_48:
    0x08000cf8 ldr r0, [sp]                                          |     r0 = *(sp);
    0x08000cfc mov r2, 0xa20                                         |     r2 = 0xa20;
    0x08000d00 mov r1, 2                                             |     r1 = 2;
    0x08000d04 stmdaeq r0, {r1, r6, r7, pc}                          |     __asm ("stmdaeq r0, {r1, r6, r7, pc}");
    0x08000d08 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x08000d0c bne 0x8000a34                                         |         goto label_6;
                                                                     |     }
    0x08000d10 b 0x8000a5c                                           |     goto label_7;
                                                                     | label_30:
    0x08000d14 mov r3, 0                                             |     r3 = 0;
    0x08000d18 mov r2, 9                                             |     r2 = 9;
    0x08000d1c movw r1, 0x266                                        |     r1 = 0x266;
    0x08000d20 stmdaeq r0, {r2, r3, r5, r6, r8, lr}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, lr}");
    0x08000d24 stmdaeq r0, {r2, r3, r5, r6, r8, lr}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, lr}");
    0x08000d28 stmdaeq r0, {r1, r2, r3, r5, r6, r7, pc}              |     __asm ("stmdaeq r0, {r1, r2, r3, r5, r6, r7, pc}");
    0x08000d2c b 0x8000a5c                                           |     goto label_7;
                                                                     | label_43:
    0x08000d30 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x08000d34 bne 0x800105c                                         |         goto label_49;
                                                                     |     }
    0x08000d38 cmp r7, 1                                             |     
                                                                     |     if (r7 == 1) {
    0x08000d3c beq 0x80010c0                                         |         goto label_50;
                                                                     |     }
    0x08000d40 add fp, sp, 0x64                                      |     
                                                                     | label_44:
    0x08000d44 ldrh r3, [fp]                                         |     r3 = *(fp);
    0x08000d48 rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x08000d4c uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x08000d50 cmp r3, 0x400                                         |     
                                                                     |     if (r3 >= 0x400) {
    0x08000d54 bhs 0x8001064                                         |         goto label_51;
                                                                     |     }
    0x08000d58 cmp r3, 0x200                                         |     
    0x08000d5c movw sl, 0x1ff                                        |     sl = 0x1ff;
                                                                     |     if (r3 >= 0x200) {
    0x08000d60 movlo r3, sl                                          |         r3 = sl;
                                                                     |     }
    0x08000d64 mov sl, 0x80                                          |     sl = 0x80;
                                                                     |     if (r3 < 0x200) {
    0x08000d68 movhs r3, 0x1a8                                       |         r3 = 0x1a8;
                                                                     |     }
                                                                     |     if (r3 < 0x200) {
    0x08000d6c movhs r8, 0x258                                       |         r8 = 0x258;
                                                                     |     }
    0x08000d70 str r3, [sp, 0xc]                                     |     var_ch = r3;
                                                                     |     if (r3 >= 0x200) {
    0x08000d74 movlo r8, 1                                           |         r8 = 1;
                                                                     |     }
    0x08000d78 b 0x8000bf0                                           |     goto label_8;
                                                                     | label_16:
    0x08000d7c ldr r2, [r8, 0x14]                                    |     r2 = *((r8 + 0x14));
    0x08000d80 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x08000d84 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000d88 bne 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08000d8c ldr r2, [r8, 0x18]                                    |     r2 = *((r8 + 0x18));
    0x08000d90 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x08000d94 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000d98 bne 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08000d9c ldr r2, [r8, 0x1c]                                    |     r2 = *((r8 + 0x1c));
    0x08000da0 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x08000da4 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000da8 bne 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08000dac ldr r2, [r8, 0x20]                                    |     r2 = *((r8 + 0x20));
    0x08000db0 ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x08000db4 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000db8 bne 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08000dbc ldrh r2, [r8, 0x24]                                   |     r2 = *((r8 + 0x24));
    0x08000dc0 ldrh r3, [sp, 0x28]                                   |     r3 = var_28h;
    0x08000dc4 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08000dc8 bne 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08000dcc ldr r3, [r8, 0x74]                                    |     r3 = *((r8 + 0x74));
    0x08000dd0 cmp r3, fp                                            |     
                                                                     |     if (r3 != fp) {
    0x08000dd4 bne 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08000dd8 ldr r3, [sp]                                          |     r3 = *(sp);
    0x08000ddc ldrb r2, [r8, 0xb]                                    |     r2 = *((r8 + 0xb));
    0x08000de0 ldrb r3, [r3, 0xb]                                    |     r3 = *((r3 + 0xb));
    0x08000de4 ands r2, r2, 1                                        |     r2 &= 1;
    0x08000de8 and r3, r3, 1                                         |     r3 &= 1;
                                                                     |     if (r2 != r2) {
    0x08000dec bne 0x8001078                                         |         goto label_52;
                                                                     |     }
    0x08000df0 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x08000df4 bne 0x8001084                                         |         goto label_53;
                                                                     |     }
                                                                     | label_22:
    0x08000df8 add r1, r8, 0x44                                      |     r1 = r8 + 0x44;
    0x08000dfc mov r0, r5                                            |     r0 = r5;
    0x08000e00 stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x08000e04 add lr, sp, 0x2c                                      |     lr += var_2ch;
    0x08000e08 add ip, sp, 0x54                                      |     
    0x08000e0c ldm lr!, {r0, r1, r2, r3}                             |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x08000e10 stm ip!, {r0, r1, r2, r3}                             |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x08000e14 mov r1, r6                                            |     r1 = r6;
    0x08000e18 mov r0, r5                                            |     r0 = r5;
    0x08000e1c ldr r3, [lr]                                          |     r3 = *(lr);
    0x08000e20 str r3, [ip]                                          |     *(ip) = r3;
    0x08000e24 bl 0x80001b4                                          |     r0 = in_range ();
    0x08000e28 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x08000e2c beq 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08000e30 add r8, sp, 0x68                                      |     r8 += var_68h;
    0x08000e34 mov r1, r5                                            |     r1 = r5;
    0x08000e38 mov r0, r8                                            |     r0 = r8;
    0x08000e3c stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x08000e40 mov r0, r8                                            |     r0 = r8;
    0x08000e44 ldr r1, [sp]                                          |     r1 = *(sp);
    0x08000e48 stmdaeq r0, {r1, r3, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, pc}");
    0x08000e4c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x08000e50 bne 0x8000fe8                                         |         goto label_54;
                                                                     |     }
                                                                     | label_23:
    0x08000e54 ldr r2, [sp, 0x40]                                    |     r2 = var_40h;
    0x08000e58 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x08000e5c cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x08000e60 beq 0x80009a0                                         |         goto label_4;
                                                                     |     }
    0x08000e64 mov r1, r5                                            |     r1 = r5;
    0x08000e68 mov r0, r8                                            |     r0 = r8;
    0x08000e6c stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x08000e70 mov r1, r8                                            |     r1 = r8;
    0x08000e74 ldr r0, [sp]                                          |     r0 = *(sp);
    0x08000e78 stmdaeq r0, {r1, r2, r4, r5, r6, r7, pc}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, r7, pc}");
                                                                     | label_47:
    0x08000e7c ldr r2, [sp]                                          |     r2 = *(sp);
    0x08000e80 ldr r3, [r2, 0x6c]                                    |     r3 = *((r2 + 0x6c));
    0x08000e84 orr r3, r3, 0x10                                      |     r3 |= 0x10;
    0x08000e88 str r3, [r2, 0x6c]                                    |     *((r2 + 0x6c)) = r3;
    0x08000e8c ldr r2, [r2, 0x8c]                                    |     r2 = *((r2 + 0x8c));
    0x08000e90 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x08000e94 beq 0x8000ea4                                         |         goto label_40;
                                                                     |     }
    0x08000e98 ldrb r1, [r2]                                         |     r1 = *(r2);
    0x08000e9c cmp r1, 0                                             |     
                                                                     |     if (r1 != 0) {
    0x08000ea0 bne 0x8000cdc                                         |         goto label_9;
                                                                     |     }
                                                                     | label_40:
    0x08000ea4 ldr r4, [sp]                                          |     r4 = *(sp);
    0x08000ea8 ldr r0, [sp, 4]                                       |     r0 = var_4h;
    0x08000eac add r1, r4, 0x14                                      |     r1 = r4 + 0x14;
    0x08000eb0 bl 0x8000558                                          |     hash_by_src ();
    0x08000eb4 mov r3, sp                                            |     r3 = sp;
    0x08000eb8 bic r2, r3, 0x1fc0                                    |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08000ebc bic r2, r2, 0x3f                                      |     r2 = BIT_MASK (r2, 0x3f);
    0x08000ec0 ldr r3, [r2, 4]                                       |     r3 = *((r2 + 4));
    0x08000ec4 add r3, r3, 0x200                                     |     r3 += 0x200;
    0x08000ec8 add r3, r3, 1                                         |     r3++;
    0x08000ecc str r3, [r2, 4]                                       |     *((r2 + 4)) = r3;
    0x08000ed0 stmdaeq r0, {r4, r6, r8, sb, lr}                      |     __asm ("stmdaeq r0, {r4, r6, r8, sb, lr}");
    0x08000ed4 stmdaeq r0, {r4, r6, r8, sb, lr}                      |     __asm ("stmdaeq r0, {r4, r6, r8, sb, lr}");
    0x08000ed8 add r1, r4, 0x78                                      |     r1 = r4 + 0x78;
    0x08000edc ldr r3, [r3, 8]                                       |     r3 = *((r3 + 8));
    0x08000ee0 ldr r2, [r3, r0, lsl 2]                               |     offset_0 = r0 << 2;
                                                                     |     r2 = *((r3 + offset_0));
    0x08000ee4 add ip, r3, r0, lsl 2                                 |     
    0x08000ee8 str r2, [r4, 0x78]                                    |     *((r4 + 0x78)) = r2;
    0x08000eec str ip, [r4, 0x7c]                                    |     *((r4 + 0x7c)) = ip;
    0x08000ef0 str r1, [r3, r0, lsl 2]                               |     offset_1 = r0 << 2;
                                                                     |     *((r3 + offset_1)) = r1;
    0x08000ef4 cmp r2, 0                                             |     
    0x08000ef8 ldr r0, [pc, 0x21c]                                   |     r0 = *(0x8001118);
                                                                     |     if (r2 == 0) {
    0x08000efc strne r1, [r2, 4]                                     |         *((r2 + 4)) = r1;
                                                                     |     }
    0x08000f00 movw r1, 0x201                                        |     r1 = 0x201;
    0x08000f04 stmdaeq r0, {r1, r3, r4, r5, r6, r7, pc}              |     __asm ("stmdaeq r0, {r1, r3, r4, r5, r6, r7, pc}");
    0x08000f08 ldr r3, [sp]                                          |     r3 = *(sp);
    0x08000f0c ldr r3, [r3, 0x6c]                                    |     r3 = *((r3 + 0x6c));
                                                                     | label_41:
    0x08000f10 ldr r2, [sp]                                          |     r2 = *(sp);
    0x08000f14 orr r3, r3, 0x80                                      |     r3 |= 0x80;
    0x08000f18 str r3, [r2, 0x6c]                                    |     *((r2 + 0x6c)) = r3;
    0x08000f1c b 0x8000a58                                           |     goto label_10;
                                                                     | label_46:
    0x08000f20 cmp sl, 0xf                                           |     
    0x08000f24 cmphi r4, sl                                          |     __asm ("cmphi r4, sl");
                                                                     |     if (sl < 0xf) {
    0x08000f28 bls 0x8000c7c                                         |         goto label_11;
                                                                     |     }
    0x08000f2c stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, pc}          |     __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, pc}");
    0x08000f30 lsr sl, sl, 1                                         |     sl >>= 1;
    0x08000f34 uxth sb, r0                                           |     sb = (int16_t) r0;
    0x08000f38 b 0x8000c2c                                           |     goto label_12;
                                                                     | label_35:
    0x08000f3c ldrb r3, [sp, 0x66]                                   |     r3 = var_66h;
    0x08000f40 cmp r3, 0x21                                          |     
                                                                     |     if (r3 == 0x21) {
    0x08000f44 beq 0x8000b90                                         |         goto label_13;
                                                                     |     }
                                                                     |     if (r3 > 0x21) {
    0x08000f48 bhi 0x8000f70                                         |         goto label_55;
                                                                     |     }
    0x08000f4c cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x08000f50 beq 0x8001020                                         |         goto label_56;
                                                                     |     }
    0x08000f54 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x08000f58 beq 0x8000c84                                         |         goto label_14;
                                                                     |     }
    0x08000f5c cmp r3, 6                                             |     
                                                                     |     if (r3 == 6) {
    0x08000f60 beq 0x8000b90                                         |         goto label_13;
                                                                     |     }
    0x08000f64 cmp r3, 0x11                                          |     
                                                                     |     if (r3 == 0x11) {
    0x08000f68 beq 0x8000b90                                         |         goto label_13;
                                                                     |     }
    0x08000f6c b 0x8000c84                                           |     goto label_14;
                                                                     | label_55:
    0x08000f70 cmp r3, 0x3a                                          |     
                                                                     |     if (r3 == 0x3a) {
    0x08000f74 beq 0x8001020                                         |         goto label_56;
                                                                     |     }
    0x08000f78 cmp r3, 0x39                                          |     
                                                                     |     if (r3 < 0x39) {
    0x08000f7c bls 0x8000c84                                         |         goto label_14;
                                                                     |     }
    0x08000f80 add r3, r3, 0x7c                                      |     r3 += 0x7c;
    0x08000f84 tst r3, 0xfb                                          |     
                                                                     |     if ((r3 & 0xfb) != 0) {
    0x08000f88 bne 0x8000c84                                         |         goto label_14;
                                                                     |     }
    0x08000f8c b 0x8000b90                                           |     goto label_13;
                                                                     | label_32:
    0x08000f90 add r1, sp, 0x18                                      |     r1 += var_18h;
    0x08000f94 mov r0, fp                                            |     r0 = fp;
    0x08000f98 bl 0x8000558                                          |     hash_by_src ();
    0x08000f9c stmdaeq r0, {r4, r6, r8, sb, lr}                      |     __asm ("stmdaeq r0, {r4, r6, r8, sb, lr}");
    0x08000fa0 stmdaeq r0, {r4, r6, r8, sb, lr}                      |     __asm ("stmdaeq r0, {r4, r6, r8, sb, lr}");
    0x08000fa4 ldr r3, [r3, 8]                                       |     r3 = *((r3 + 8));
    0x08000fa8 ldr r8, [r3, r0, lsl 2]                               |     offset_2 = r0 << 2;
                                                                     |     r8 = *((r3 + offset_2));
    0x08000fac cmp r8, 0                                             |     
                                                                     |     if (r8 != 0) {
    0x08000fb0 addeq r5, sp, 0x40                                    |         r5 += var_40h;
                                                                     |     }
                                                                     |     if (r8 == 0) {
    0x08000fb4 beq 0x8000fe8                                         |         goto label_54;
                                                                     |     }
    0x08000fb8 subs r8, r8, 0x78                                     |     r8 -= 0x78;
                                                                     |     if (r8 == r8) {
    0x08000fbc beq 0x800073c                                         |         goto label_15;
                                                                     |     }
    0x08000fc0 add r5, sp, 0x40                                      |     r5 += var_40h;
                                                                     | label_17:
    0x08000fc4 ldrb r2, [r8, 0x3a]                                   |     r2 = *((r8 + 0x3a));
    0x08000fc8 ldrb r3, [sp, 0x3e]                                   |     r3 = var_3eh;
    0x08000fcc cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x08000fd0 beq 0x8000d7c                                         |         goto label_16;
                                                                     |     }
                                                                     | label_21:
    0x08000fd4 ldr r8, [r8, 0x78]                                    |     r8 = *((r8 + 0x78));
    0x08000fd8 cmp r8, 0                                             |     
                                                                     |     if (r8 == 0) {
    0x08000fdc beq 0x8000fe8                                         |         goto label_54;
                                                                     |     }
    0x08000fe0 subs r8, r8, 0x78                                     |     r8 -= 0x78;
                                                                     |     if (r8 != r8) {
    0x08000fe4 bne 0x8000fc4                                         |         goto label_17;
                                                                     |     }
                                                                     | label_54:
    0x08000fe8 ldr r8, [r6]                                          |     r8 = *(r6);
    0x08000fec and sl, r8, 0x14                                      |     sl = r8 & 0x14;
    0x08000ff0 b 0x8000748                                           |     goto label_18;
                                                                     | label_45:
    0x08000ff4 stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, pc}          |     __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, pc}");
    0x08000ff8 uxth sb, r0                                           |     sb = (int16_t) r0;
    0x08000ffc b 0x8000c10                                           |     goto label_19;
                                                                     | label_38:
    0x08001000 ldr r2, [r6]                                          |     r2 = *(r6);
    0x08001004 ands r8, r2, 2                                        |     r8 = r2 & 2;
                                                                     |     if (r8 == r2) {
    0x08001008 bne 0x8001024                                         |         
    0x0800100c mov r3, 0x10000                                       |         r3 = 0x10000;
    0x08001010 add fp, sp, 0x50                                      |         
    0x08001014 mov sl, 0x80                                          |         sl = 0x80;
    0x08001018 str r3, [sp, 0xc]                                     |         var_ch = r3;
    0x0800101c b 0x8000bf0                                           |         goto label_8;
                                                                     | label_56:
    0x08001020 mov r2, r8                                            |         r2 = r8;
                                                                     |     }
    0x08001024 ldrh sl, [r6, 0x26]                                   |     sl = *((r6 + 0x26));
    0x08001028 add fp, sp, 0x50                                      |     
    0x0800102c ldrh r8, [r6, 0x24]                                   |     r8 = *((r6 + 0x24));
    0x08001030 rev16 sl, sl                                          |     __asm ("rev16 sl, sl");
    0x08001034 rev16 r8, r8                                          |     __asm ("rev16 r8, r8");
    0x08001038 uxth sl, sl                                           |     sl = (int16_t) sl;
    0x0800103c add sl, sl, 1                                         |     sl++;
    0x08001040 uxth r8, r8                                           |     r8 = (int16_t) r8;
    0x08001044 sub r3, sl, r8                                        |     r3 = sl - r8;
    0x08001048 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0800104c cmp r3, 0x80                                          |     
                                                                     |     if (r3 >= 0x80) {
    0x08001050 movlo sl, r3                                          |         sl = r3;
                                                                     |     }
                                                                     |     if (r3 < 0x80) {
    0x08001054 movhs sl, 0x80                                        |         sl = 0x80;
                                                                     |     }
    0x08001058 b 0x8000bf0                                           |     goto label_8;
                                                                     | label_49:
    0x0800105c add fp, sp, 0x64                                      |     
    0x08001060 b 0x8000bac                                           |     goto label_20;
                                                                     | label_51:
    0x08001064 mov r3, 0xfc00                                        |     r3 = 0xfc00;
    0x08001068 mov sl, 0x80                                          |     sl = 0x80;
    0x0800106c mov r8, 0x400                                         |     r8 = 0x400;
    0x08001070 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x08001074 b 0x8000bf0                                           |     goto label_8;
                                                                     | label_52:
    0x08001078 ldrh r2, [r8, 8]                                      |     r2 = *((r8 + 8));
    0x0800107c cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x08001080 beq 0x800108c                                         |         
                                                                     | label_53:
    0x08001084 ldr r3, [sp]                                          |         r3 = *(sp);
    0x08001088 ldrh r3, [r3, 8]                                      |         r3 = *((r3 + 8));
                                                                     |     }
    0x0800108c cmp r3, r2                                            |     
                                                                     |     if (r3 != r2) {
    0x08001090 bne 0x8000fd4                                         |         goto label_21;
                                                                     |     }
    0x08001094 b 0x8000df8                                           |     goto label_22;
                                                                     | label_33:
    0x08001098 add lr, sp, 0x18                                      |     lr += var_18h;
    0x0800109c add r5, sp, 0x40                                      |     r5 += var_40h;
    0x080010a0 mov ip, r5                                            |     
    0x080010a4 ldm lr!, {r0, r1, r2, r3}                             |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x080010a8 stm ip!, {r0, r1, r2, r3}                             |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x080010ac ldm lr!, {r0, r1, r2, r3}                             |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x080010b0 stm ip!, {r0, r1, r2, r3}                             |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x080010b4 ldm lr, {r0, r1}                                      |     r0 = *(lr);
                                                                     |     r1 = *((lr + 4));
    0x080010b8 stm ip, {r0, r1}                                      |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
    0x080010bc b 0x8000e54                                           |     goto label_23;
                                                                     | label_50:
    0x080010c0 ldr r2, [sp, 0x40]                                    |     r2 = var_40h;
    0x080010c4 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x080010c8 cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x080010cc beq 0x8001108                                         |         goto label_57;
                                                                     |     }
                                                                     | label_26:
    0x080010d0 mov r1, r5                                            |     r1 = r5;
    0x080010d4 add r0, sp, 0x68                                      |     r0 += var_68h;
    0x080010d8 stmdaeq r0, {r1, r2, r5, r6, r7, pc}                  |     __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, pc}");
    0x080010dc ldr r5, [sp]                                          |     r5 = *(sp);
    0x080010e0 add r1, sp, 0x68                                      |     r1 += var_68h;
    0x080010e4 mov r0, r5                                            |     r0 = r5;
    0x080010e8 stmdaeq r0, {r1, r2, r4, r5, r6, r7, pc}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, r7, pc}");
    0x080010ec ldr r3, [r5, 0x6c]                                    |     r3 = *((r5 + 0x6c));
    0x080010f0 ldr r2, [r5, 0x8c]                                    |     r2 = *((r5 + 0x8c));
    0x080010f4 orr r3, r3, 0x20                                      |     r3 |= 0x20;
    0x080010f8 str r3, [r5, 0x6c]                                    |     *((r5 + 0x6c)) = r3;
    0x080010fc cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x08001100 bne 0x8000cd0                                         |         goto label_24;
                                                                     |     }
    0x08001104 b 0x8000a4c                                           |     goto label_25;
                                                                     | label_57:
    0x08001108 ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x0800110c ldr r3, [sp, 0x44]                                    |     r3 = var_44h;
    0x08001110 cmp r2, r3                                            |     
                                                                     |     if (r2 != r3) {
    0x08001114 bne 0x80010d0                                         |         goto label_26;
                                                                     |     }
    0x08001118 b 0x80009b0                                           |     goto label_27;
                                                                     | }

[*] Function popen used 1 times nf_nat.ko