[*] Binary protection state of ab

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function strcat tear down of ab

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/ab @ 0x3d38 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00003d38 ()                                  | void fcn_00003d38 (int16_t arg_1h, int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ch, int16_t arg_64h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_4e4h) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     do {
                                                             | label_0:
    0x0000236a ldr r0, [r6]                                  |         r0 = *(r6);
    0x0000236c mov r3, r4                                    |         r3 = r4;
    0x0000236e mov r2, r5                                    |         r2 = r5;
    0x00002370 mov r1, r7                                    |         r1 = r7;
    0x00002372 blx 0x2144                                    |         r0 = fcn_00002144 ();
    0x00002376 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00002378 bne.w 0x28b8                                  |             goto label_43;
                                                             |         }
    0x0000237c ldrb r3, [r5]                                 |         r3 = *(r5);
    0x0000237e subs r3, 0x41                                 |         r3 -= 0x41;
    0x00002380 cmp r3, 0x39                                  |         
    0x00002382 bhi 0x236a                                    |         
                                                             |     } while (r3 > 0x39);
    0x00002384 adr r2, 8                                     |     r2 = 8;
    0x00002386 ldr.w r3, [r2, r3, lsl 2]                     |     offset_0 = r3 << 2;
                                                             |     r3 = *((r2 + offset_0));
    0x0000238a add r2, r3                                    |     r2 += r3;
    0x0000238c bx r2                                         |     return uint32_t (*r2)() ();
                                                             | label_5:
    0x000026d4 ldr.w r2, [pc, 0x8a0]                         |     
    0x000026d8 ldr.w r3, [pc, 0x80c]                         |     r3 = *(0x2ee8);
    0x000026dc add r2, pc                                    |     r2 = 0x5658;
    0x000026de ldr r3, [r2, r3]                              |     r3 = *(0x5658);
    0x000026e0 ldr r2, [r3]                                  |     r2 = *(0x5658);
    0x000026e2 ldr.w r3, [sp, 0x4e4]                         |     r3 = *(arg_4e4h);
    0x000026e6 eors r2, r3                                   |     r2 ^= r3;
    0x000026e8 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x000026ec bne.w 0x3ad8                                  |         goto label_44;
                                                             |     }
    0x000026f0 movs r0, 0                                    |     r0 = 0;
    0x000026f2 addw sp, sp, 0x4ec                            |     __asm ("addw sp, sp, 0x4ec");
    0x000026f6 vpop {d8, d9}                                 |     __asm ("vpop {d8, d9}");
    0x000026fa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_43:
    0x000028b8 ldr r0, [r6]                                  |     r0 = *(r6);
    0x000028ba ldr.w r2, [sl]                                |     r2 = *(sl);
    0x000028be ldr r3, [r0, 0xc]                             |     r3 = *((r0 + 0xc));
    0x000028c0 subs r2, 1                                    |     r2--;
    0x000028c2 cmp r3, r2                                    |     
                                                             |     if (r3 != r2) {
    0x000028c4 bne.w 0x3b52                                  |         goto label_45;
                                                             |     }
    0x000028c8 ldr.w r2, [pc, 0x6f8]                         |     
    0x000028cc add r2, pc                                    |     r2 = 0x5894;
    0x000028ce ldr.w r1, [r2, 0x4d0]                         |     r1 = *(0x5d64);
                                                             |     if (r1 == 0) {
    0x000028d2 cbnz r1, 0x28da                               |         
    0x000028d4 movs r1, 1                                    |         r1 = 1;
    0x000028d6 str.w r1, [r2, 0x4d0]                         |         __asm ("str.w r1, [r2, 0x4d0]");
                                                             |     }
    0x000028da ldr r2, [r0, 0x1c]                            |     r2 = *((r0 + 0x1c));
    0x000028dc ldr.w r5, [pc, 0x6e8]                         |     
    0x000028e0 ldr.w r1, [r2, r3, lsl 2]                     |     offset_1 = r3 << 2;
                                                             |     r1 = *((r2 + offset_1));
    0x000028e4 adds r3, 1                                    |     r3++;
    0x000028e6 add r5, pc                                    |     r5 = 0x58b2;
    0x000028e8 str r3, [r0, 0xc]                             |     *((r0 + 0xc)) = r3;
    0x000028ea ldr.w r0, [r5, 0x498]                         |     r0 = *(0x5d4a);
    0x000028ee blx 0x1ec4                                    |     r0 = SSL_ctrl ();
    0x000028f2 mov r4, r0                                    |     r4 = r0;
    0x000028f4 ldr.w r0, [r5, 0x498]                         |     r0 = *(0x5d4a);
    0x000028f8 mov r1, r4                                    |     r1 = r4;
    0x000028fa blx 0x1ec4                                    |     SSL_ctrl ();
    0x000028fe str.w r0, [r5, 0x51c]                         |     __asm ("str.w r0, [r5, 0x51c]");
    0x00002902 mov r0, r4                                    |     r0 = r4;
    0x00002904 blx 0x209c                                    |     r0 = fcn_0000209c ();
    0x00002908 cmp r0, 7                                     |     
    0x0000290a mov r6, r0                                    |     r6 = r0;
                                                             |     if (r0 >= 7) {
    0x0000290c bls 0x2928                                    |         
    0x0000290e ldr.w r1, [pc, 0x6bc]                         |         
    0x00002912 movs r2, 7                                    |         r2 = 7;
    0x00002914 mov r0, r4                                    |         r0 = r4;
    0x00002916 add r1, pc                                    |         r1 = 0x58e8;
    0x00002918 blx 0x1cd8                                    |         r0 = strncmp (r0, r1, r2);
    0x0000291c cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000291e bne.w 0x2a8e                                  |             goto label_46;
                                                             |         }
    0x00002922 adds r4, 7                                    |         r4 += 7;
    0x00002924 str.w r0, [r5, 0x420]                         |         __asm ("str.w r0, [r5, 0x420]");
                                                             |     }
                                                             | label_1:
    0x00002928 movs r1, 0x2f                                 |     r1 = 0x2f;
    0x0000292a mov r0, r4                                    |     r0 = r4;
    0x0000292c blx 0x2234                                    |     r0 = fcn_00002234 ();
    0x00002930 mov r6, r0                                    |     r6 = r0;
                                                             |     if (r0 != 0) {
    0x00002932 cbz r0, 0x2974                                |         
    0x00002934 ldr.w r5, [pc, 0x698]                         |         
    0x00002938 subs r2, r0, r4                               |         r2 = r0 - r4;
    0x0000293a mov r1, r4                                    |         r1 = r4;
    0x0000293c add.w sl, sp, 0x68                            |         sl += arg_68h;
    0x00002940 add r5, pc                                    |         r5 = 0x5914;
    0x00002942 ldr.w r0, [r5, 0x498]                         |         r0 = *(0x5dac);
    0x00002946 blx 0x1fac                                    |         fcn_00001fac ();
    0x0000294a ldr.w r2, [r5, 0x498]                         |         r2 = *(0x5dac);
    0x0000294e mov r3, r0                                    |         r3 = r0;
    0x00002950 mov r1, sl                                    |         r1 = sl;
    0x00002952 add.w r0, r5, 0x418                           |         r0 = r5 + 0x418;
    0x00002956 str r2, [sp]                                  |         *(sp) = r2;
    0x00002958 addw r2, r5, 0x41c                            |         __asm ("addw r2, r5, 0x41c");
    0x0000295c blx 0x224c                                    |         r0 = fcn_0000224c ();
    0x00002960 mov r7, r0                                    |         r7 = r0;
                                                             |         if (r0 != 0) {
    0x00002962 cbnz r0, 0x2974                               |             goto label_47;
                                                             |         }
    0x00002964 ldr.w r3, [r5, 0x418]                         |         r3 = *((r5 + 0x418));
                                                             |         if (r3 == 0) {
    0x00002968 cbz r3, 0x2974                                |             goto label_47;
                                                             |         }
    0x0000296a ldr.w r3, [sl]                                |         r3 = *(sl);
    0x0000296e cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00002970 beq.w 0x2ac6                                  |             goto label_48;
                                                             |         }
                                                             |     }
                                                             | label_47:
    0x00002974 ldr.w r2, [pc, 0x65c]                         |     
    0x00002978 ldr.w r3, [pc, 0x65c]                         |     r3 = *(0x2fd8);
    0x0000297c ldr.w r0, [r8]                                |     r0 = *(r8);
    0x00002980 add r2, pc                                    |     r2 = 0x5958;
                                                             | label_40:
    0x00002982 ldr.w r1, [sb, r3]                            |     r1 = *((sb + r3));
    0x00002986 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00002988 ldr r0, [r1]                                  |     r0 = *(r1);
    0x0000298a movs r1, 1                                    |     r1 = 1;
    0x0000298c blx 0x1da8                                    |     fcn_00001da8 ();
    0x00002990 ldr.w r3, [r8]                                |     r3 = *(r8);
    0x00002994 ldr r0, [r3]                                  |     r0 = *(r3);
    0x00002996 bl 0x3f38                                     |     fcn_00003f38 (r0);
    0x0000299a ldr.w r1, [pc, 0x640]                         |     
    0x0000299e movs r2, 6                                    |     r2 = 6;
    0x000029a0 mov r0, fp                                    |     r0 = fp;
    0x000029a2 add r1, pc                                    |     r1 = 0x5984;
    0x000029a4 blx 0x1f7c                                    |     r0 = fcn_00001f7c ();
    0x000029a8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000029aa beq 0x2a84                                    |         goto label_49;
                                                             |     }
    0x000029ac ldr.w r1, [pc, 0x630]                         |     
    0x000029b0 movs r2, 6                                    |     r2 = 6;
    0x000029b2 mov r0, fp                                    |     r0 = fp;
    0x000029b4 add r1, pc                                    |     r1 = 0x5998;
    0x000029b6 blx 0x1f7c                                    |     r0 = fcn_00001f7c ();
    0x000029ba cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000029bc beq 0x2ab2                                    |         goto label_50;
                                                             |     }
    0x000029be ldr.w r1, [pc, 0x624]                         |     
    0x000029c2 movs r2, 6                                    |     r2 = 6;
    0x000029c4 mov r0, fp                                    |     r0 = fp;
    0x000029c6 add r1, pc                                    |     r1 = 0x59b0;
    0x000029c8 blx 0x1f7c                                    |     r0 = fcn_00001f7c ();
    0x000029cc cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000029ce beq 0x2abc                                    |         goto label_51;
                                                             |     }
    0x000029d0 ldr.w r1, [pc, 0x614]                         |     
    0x000029d4 mov r0, fp                                    |     r0 = fp;
    0x000029d6 movs r2, 4                                    |     r2 = 4;
    0x000029d8 add r1, pc                                    |     r1 = 0x59c4;
    0x000029da blx 0x1f7c                                    |     r0 = fcn_00001f7c ();
    0x000029de cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000029e0 bne.w 0x236a                                  |         goto label_0;
                                                             |     }
    0x000029e4 movw r3, 0x301                                |     r3 = 0x301;
    0x000029e8 strd r3, r3, [sp, 0x34]                       |     __asm ("strd r3, r3, [sp, 0x34]");
    0x000029ec b 0x236a                                      |     goto label_0;
                                                             | label_49:
    0x00002a84 movw r3, 0x302                                |     r3 = 0x302;
    0x00002a88 strd r3, r3, [sp, 0x34]                       |     __asm ("strd r3, r3, [sp, 0x34]");
    0x00002a8c b 0x236a                                      |     goto label_0;
                                                             | label_46:
    0x00002a8e cmp r6, 8                                     |     
                                                             |     if (r6 == 8) {
    0x00002a90 beq.w 0x2928                                  |         goto label_1;
                                                             |     }
    0x00002a94 ldr.w r1, [pc, 0x55c]                         |     
    0x00002a98 movs r2, 8                                    |     r2 = 8;
    0x00002a9a mov r0, r4                                    |     r0 = r4;
    0x00002a9c add r1, pc                                    |     r1 = 0x5a94;
    0x00002a9e blx 0x1cd8                                    |     r0 = strncmp (r0, r1, r2);
    0x00002aa2 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002aa4 bne.w 0x2928                                  |         goto label_1;
                                                             |     }
    0x00002aa8 movs r3, 1                                    |     r3 = 1;
    0x00002aaa adds r4, 8                                    |     r4 += 8;
    0x00002aac str.w r3, [r5, 0x420]                         |     __asm ("str.w r3, [r5, 0x420]");
    0x00002ab0 b 0x2928                                      |     goto label_1;
                                                             | label_50:
    0x00002ab2 movw r3, 0x303                                |     r3 = 0x303;
    0x00002ab6 strd r3, r3, [sp, 0x34]                       |     __asm ("strd r3, r3, [sp, 0x34]");
    0x00002aba b 0x236a                                      |     goto label_0;
                                                             | label_51:
    0x00002abc mov.w r3, 0x304                               |     r3 = 0x304;
    0x00002ac0 strd r3, r3, [sp, 0x34]                       |     __asm ("strd r3, r3, [sp, 0x34]");
    0x00002ac4 b 0x236a                                      |     goto label_0;
                                                             | label_48:
    0x00002ac6 ldr.w r0, [r5, 0x498]                         |     r0 = *((r5 + 0x498));
    0x00002aca mov r1, r6                                    |     r1 = r6;
    0x00002acc blx 0x1ec4                                    |     SSL_ctrl ();
    0x00002ad0 str.w r0, [r5, 0x430]                         |     __asm ("str.w r0, [r5, 0x430]");
    0x00002ad4 strb r7, [r6]                                 |     *(r6) = r7;
    0x00002ad6 ldrb r3, [r4]                                 |     r3 = *(r4);
    0x00002ad8 cmp r3, 0x5b                                  |     
                                                             |     if (r3 == 0x5b) {
    0x00002ada beq.w 0x3ab8                                  |         goto label_52;
                                                             |     }
    0x00002ade ldr.w r0, [r5, 0x418]                         |     r0 = *((r5 + 0x418));
                                                             | label_39:
    0x00002ae2 ldr.w r3, [pc, 0x514]                         |     
    0x00002ae6 add r3, pc                                    |     r3 = 0x5ae4;
    0x00002ae8 ldrh.w r2, [r3, 0x41c]                        |     r2 = *((r3 + 0x41c));
    0x00002aec ldr.w r1, [r3, 0x420]                         |     r1 = *(0x5f04);
    0x00002af0 str.w r0, [r3, 0x520]                         |     __asm ("str.w r0, [r3, 0x520]");
    0x00002af4 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00002af6 bne.w 0x3a8e                                  |         goto label_53;
                                                             |     }
    0x00002afa cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00002afc beq.w 0x3aae                                  |         goto label_54;
                                                             |     }
    0x00002b00 movw r2, 0x1bb                                |     r2 = 0x1bb;
    0x00002b04 strh.w r2, [r3, 0x41c]                        |     *((r3 + 0x41c)) = r2;
                                                             | label_37:
    0x00002b08 ldr.w r0, [pc, 0x4f0]                         |     
    0x00002b0c add r0, pc                                    |     r0 = 0x5b0c;
                                                             | label_38:
    0x00002b0e ldr.w r2, [pc, 0x4f0]                         |     
    0x00002b12 movw r3, 0x4e20                               |     r3 = 0x4e20;
    0x00002b16 ldr.w r1, [pc, 0x4ec]                         |     
    0x00002b1a add r2, pc                                    |     r2 = 0x5b20;
    0x00002b1c add r1, pc                                    |     r1 = 0x5b26;
    0x00002b1e str.w r0, [r1, 0x524]                         |     __asm ("str.w r0, [r1, 0x524]");
    0x00002b22 ldr r1, [r2]                                  |     r1 = *(0x5b20);
    0x00002b24 cmp r1, r3                                    |     
                                                             |     if (r1 > r3) {
    0x00002b26 bhi.w 0x3af2                                  |         goto label_55;
                                                             |     }
    0x00002b2a ldr r3, [r2, 0x34]                            |     r3 = *((r2 + 0x34));
    0x00002b2c cmp r1, r3                                    |     
                                                             |     if (r1 > r3) {
    0x00002b2e bgt.w 0x3ae4                                  |         goto label_56;
                                                             |     }
    0x00002b32 ldr r2, [r2, 0x38]                            |     r2 = *((r2 + 0x38));
                                                             |     if (r2 != 0) {
    0x00002b34 cbz r2, 0x2b56                                |         
    0x00002b36 cmp r3, 0x96                                  |         
                                                             |         if (r3 <= 0x96) {
    0x00002b38 ble 0x2b56                                    |             goto label_57;
                                                             |         }
    0x00002b3a cmp.w r3, 0x3e8                               |         
    0x00002b3e itett ge                                      |         
                                                             |         if (r3 >= 0x3e8) {
    0x00002b40 movwge r2, 0x6667                             |             __asm ("movwge r2, 0x6667");
                                                             |         }
                                                             |         if (r3 < 0x3e8) {
    0x00002b44 movge r7, 0x64                                |             r7 = 0x64;
                                                             |         }
                                                             |         if (r3 >= 0x3e8) {
    0x00002b46 movtge r2, 0x6666                             |             __asm ("movtge r2, 0x6666");
                                                             |         }
                                                             |         if (r3 >= 0x3e8) {
    0x00002b4a smull r2, r7, r3, r2                          |             r2:r7 = r3 * r2;
                                                             |         }
    0x00002b4e itt ge                                        |         
                                                             |         if (r3 >= 0x3e8) {
    0x00002b50 asrge r3, r3, 0x1f                            |             __asm ("asrge r3, r3, 0x1f");
                                                             |         }
                                                             |         if (r3 < 0x3e8) {
    0x00002b52 rsbge r7, r3, r7, asr 2                       |             __asm ("rsbge r7, r3, r7, asr 2");
                                                             |             goto label_57;
                                                             |         }
                                                             |     }
                                                             | label_57:
    0x00002b56 ldr.w r3, [pc, 0x4b0]                         |     
    0x00002b5a movs r0, 2                                    |     r0 = 2;
    0x00002b5c movs r2, 0                                    |     r2 = 0;
    0x00002b5e movs r1, 0                                    |     r1 = 0;
    0x00002b60 movt r0, 0x20                                 |     r0 = (r0 & 0xFFFF) | 0x200000;
    0x00002b64 ldr.w r4, [pc, 0x4a4]                         |     
    0x00002b68 add r3, pc                                    |     r3 = 0x5b76;
    0x00002b6a str r7, [r3, 0x38]                            |     *((r3 + 0x38)) = r7;
    0x00002b6c blx 0x1d44                                    |     OPENSSL_init_ssl ();
    0x00002b70 movs r2, 0                                    |     r2 = 0;
    0x00002b72 movs r1, 0                                    |     r1 = 0;
    0x00002b74 movs r0, 0                                    |     r0 = 0;
    0x00002b76 add r4, pc                                    |     r4 = 0x5b86;
    0x00002b78 blx 0x1d44                                    |     OPENSSL_init_ssl ();
    0x00002b7c ldr.w r3, [pc, 0x490]                         |     r3 = *(0x3010);
    0x00002b80 movs r1, 0                                    |     r1 = 0;
    0x00002b82 ldr.w r6, [sb, r3]                            |     r6 = *((sb + r3));
    0x00002b86 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00002b88 blx 0x1fdc                                    |     fcn_00001fdc ();
    0x00002b8c ldr.w r3, [pc, 0x448]                         |     r3 = *(0x2fd8);
    0x00002b90 movs r1, 0                                    |     r1 = 0;
    0x00002b92 str.w r0, [r4, 0x4a8]                         |     __asm ("str.w r0, [r4, 0x4a8]");
    0x00002b96 ldr.w r3, [sb, r3]                            |     r3 = *((sb + r3));
    0x00002b9a ldr r0, [r3]                                  |     r0 = *(0x2fd8);
    0x00002b9c str r3, [sp, 0x4c]                            |     *(arg_4ch) = r3;
    0x00002b9e blx 0x1fdc                                    |     fcn_00001fdc ();
    0x00002ba2 str.w r0, [r4, 0x490]                         |     __asm ("str.w r0, [r4, 0x490]");
    0x00002ba6 ldr r0, [sp, 0x3c]                            |     r0 = *(arg_3ch);
    0x00002ba8 blx 0x1f30                                    |     apr_pool_create_ex ();
    0x00002baa strd pc, r8, [r2, 0x310]                      |     __asm ("strd pc, r8, [r2, 0x310]");
    0x00002bae lsls r0, r0, 0x13                             |     r0 <<= 0x13;
    0x00002bb0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002bb2 beq.w 0x3b16                                  |         goto label_58;
                                                             |     }
    0x00002bb6 movw r1, 0x854                                |     
    0x00002bba movt r1, 0x8000                               |     r1 = 0x80000854;
    0x00002bbe blx 0x1c84                                    |     SSL_CTX_set_options ();
    0x00002bc2 ldr r2, [sp, 0x34]                            |     r2 = *(arg_34h);
    0x00002bc4 movs r3, 0                                    |     r3 = 0;
    0x00002bc6 movs r1, 0x7c                                 |     r1 = 0x7c;
    0x00002bc8 ldr.w r0, [r4, 0x4c0]                         |     r0 = *((r4 + 0x4c0));
    0x00002bcc blx 0x20d8                                    |     fcn_000020d8 ();
    0x00002bd0 ldr r5, [sp, 0x38]                            |     r5 = *(arg_38h);
    0x00002bd2 movs r3, 0                                    |     r3 = 0;
    0x00002bd4 movs r1, 0x7b                                 |     r1 = 0x7b;
    0x00002bd6 ldr.w r0, [r4, 0x4c0]                         |     r0 = *((r4 + 0x4c0));
    0x00002bda mov r2, r5                                    |     r2 = r5;
    0x00002bdc blx 0x20d8                                    |     fcn_000020d8 ();
    0x00002be0 movs r1, 0x21                                 |     r1 = 0x21;
    0x00002be2 ldr.w r0, [r4, 0x4c0]                         |     r0 = *((r4 + 0x4c0));
    0x00002be6 movs r3, 0                                    |     r3 = 0;
    0x00002be8 movs r2, 0x10                                 |     r2 = 0x10;
    0x00002bea blx 0x20d8                                    |     fcn_000020d8 ();
    0x00002bee ldr.w r1, [r4, 0x514]                         |     r1 = *((r4 + 0x514));
                                                             |     if (r1 != 0) {
    0x00002bf2 cbz r1, 0x2c0a                                |         
    0x00002bf4 cmp.w r5, 0x304                               |         
    0x00002bf8 ldr.w r0, [r4, 0x4c0]                         |         r0 = *((r4 + 0x4c0));
                                                             |         if (r5 != 0x304) {
    0x00002bfc bne.w 0x37ae                                  |             goto label_59;
                                                             |         }
    0x00002c00 blx 0x2048                                    |         r0 = fcn_00002048 ();
                                                             | label_16:
    0x00002c04 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00002c06 beq.w 0x3b30                                  |             goto label_60;
                                                             |         }
                                                             |     }
    0x00002c0a ldr.w r3, [pc, 0x408]                         |     
    0x00002c0e add r3, pc                                    |     r3 = 0x5c28;
    0x00002c10 ldr.w r2, [r3, 0x4a4]                         |     r2 = *(0x60cc);
    0x00002c14 cmp r2, 2                                     |     
                                                             |     if (r2 > 2) {
    0x00002c16 bgt.w 0x3870                                  |         goto label_61;
                                                             |     }
                                                             | label_21:
    0x00002c1a ldr r4, [pc, 0x3fc]                           |     
    0x00002c1c add r4, pc                                    |     r4 = 0x5c3a;
    0x00002c1e ldr.w r1, [r4, 0x518]                         |     r1 = *(0x6152);
                                                             |     if (r1 != 0) {
    0x00002c22 cbz r1, 0x2c54                                |         
    0x00002c24 ldr.w r0, [r4, 0x4c0]                         |         r0 = *((r4 + 0x4c0));
    0x00002c28 blx 0x2258                                    |         r0 = fcn_00002258 ();
    0x00002c2c cmp r0, 0                                     |         
                                                             |         if (r0 <= 0) {
    0x00002c2e ble.w 0x3baa                                  |             goto label_62;
                                                             |         }
    0x00002c32 ldr.w r1, [r4, 0x518]                         |         r1 = *((r4 + 0x518));
    0x00002c36 movs r2, 1                                    |         r2 = 1;
    0x00002c38 ldr.w r0, [r4, 0x4c0]                         |         r0 = *((r4 + 0x4c0));
    0x00002c3c blx 0x1fc4                                    |         r0 = fcn_00001fc4 ();
    0x00002c40 cmp r0, 0                                     |         
                                                             |         if (r0 <= 0) {
    0x00002c42 ble.w 0x3ba0                                  |             goto label_63;
                                                             |         }
    0x00002c46 ldr.w r0, [r4, 0x4c0]                         |         r0 = *((r4 + 0x4c0));
    0x00002c4a blx 0x2090                                    |         r0 = fcn_00002090 ();
    0x00002c4e cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00002c50 beq.w 0x3bb4                                  |             goto label_64;
                                                             |         }
                                                             |     }
    0x00002c54 ldr r4, [pc, 0x3c4]                           |     
    0x00002c56 movs r1, 1                                    |     r1 = 1;
    0x00002c58 movs r0, 0xd                                  |     r0 = 0xd;
    0x00002c5a blx 0x212c                                    |     fcn_0000212c ();
    0x00002c5e add r4, pc                                    |     r4 = 0x5c7e;
    0x00002c60 bl 0x566c                                     |     fcn_0000566c ();
    0x00002c64 ldr.w r3, [r4, 0x510]                         |     r3 = *(0x618e);
    0x00002c68 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00002c6a beq.w 0x3796                                  |         goto label_65;
                                                             |     }
    0x00002c6e ldr.w r1, [r4, 0x4f0]                         |     r1 = *((r4 + 0x4f0));
    0x00002c72 ldr.w r0, [r4, 0x498]                         |     r0 = *((r4 + 0x498));
    0x00002c76 blx 0x1ec4                                    |     SSL_ctrl ();
    0x00002c7a ldrh.w r3, [r4, 0x50c]                        |     r3 = *((r4 + 0x50c));
    0x00002c7e str.w r0, [r4, 0x528]                         |     __asm ("str.w r0, [r4, 0x528]");
                                                             | label_15:
    0x00002c82 ldr r4, [pc, 0x39c]                           |     
    0x00002c84 add r4, pc                                    |     r4 = 0x5caa;
    0x00002c86 strh.w r3, [r4, 0x52c]                        |     *((r4 + 0x52c)) = r3;
    0x00002c8a ldr.w r3, [r4, 0x48c]                         |     r3 = *(0x6136);
    0x00002c8e cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00002c90 beq.w 0x382e                                  |         goto label_66;
                                                             |     }
                                                             | label_20:
    0x00002c94 ldr r6, [pc, 0x38c]                           |     
    0x00002c96 movw r1, 0x2070                               |     r1 = 0x2070;
    0x00002c9a ldr r4, [pc, 0x38c]                           |     
    0x00002c9c add r6, pc                                    |     r6 = 0x5cc4;
    0x00002c9e add r4, pc                                    |     r4 = 0x5ccc;
    0x00002ca0 ldr r0, [r6]                                  |     r0 = *(0x5cc4);
    0x00002ca2 bl 0x432c                                     |     fcn_0000432c (r0, r1);
    0x00002ca6 movs r1, 0x20                                 |     r1 = 0x20;
    0x00002ca8 str.w r0, [r4, 0x4d8]                         |     __asm ("str.w r0, [r4, 0x4d8]");
    0x00002cac ldr r0, [r6, 0x34]                            |     r0 = *(0x5cf8);
    0x00002cae bl 0x432c                                     |     fcn_0000432c (r0, r1);
    0x00002cb2 ldr r1, [r6]                                  |     r1 = *(0x5cc4);
    0x00002cb4 movs r3, 2                                    |     r3 = 2;
    0x00002cb6 str.w r0, [r4, 0x480]                         |     __asm ("str.w r0, [r4, 0x480]");
    0x00002cba addw r0, r4, 0x494                            |     __asm ("addw r0, r4, 0x494");
    0x00002cbe ldr.w r2, [r4, 0x498]                         |     r2 = *(0x6164);
    0x00002cc2 blx 0x1ee8                                    |     r0 = SSL_SESSION_print ();
    0x00002cc6 mov r6, r0                                    |     r6 = r0;
    0x00002cc8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002cca bne.w 0x3b8e                                  |         goto label_67;
                                                             |     }
    0x00002cce ldr.w r3, [r4, 0x500]                         |     r3 = *((r4 + 0x500));
    0x00002cd2 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00002cd4 beq.w 0x3a22                                  |         goto label_68;
                                                             |     }
                                                             | label_31:
    0x00002cd8 ldr r3, [pc, 0x350]                           |     
    0x00002cda add r3, pc                                    |     r3 = 0x5d0a;
    0x00002cdc ldr.w r2, [r3, 0x420]                         |     r2 = *(0x612a);
                                                             |     if (r2 != 0) {
    0x00002ce0 cbz r2, 0x2d12                                |         
    0x00002ce2 ldr r2, [pc, 0x34c]                           |         
    0x00002ce4 add r2, pc                                    |         
    0x00002ce6 ldr r2, [r2, 0x48]                            |         r2 = *(0x5d62);
                                                             |         if (r2 == 0) {
    0x00002ce8 cbz r2, 0x2d12                                |             goto label_35;
                                                             |         }
    0x00002cea ldr.w r2, [r3, 0x500]                         |         r2 = *((r3 + 0x500));
    0x00002cee str.w r2, [r3, 0x42c]                         |         __asm ("str.w r2, [r3, 0x42c]");
    0x00002cf2 cmp r2, 0                                     |         
                                                             |         if (r2 == 0) {
    0x00002cf4 beq.w 0x3a7c                                  |             goto label_69;
                                                             |         }
                                                             | label_36:
    0x00002cf8 ldr r3, [pc, 0x338]                           |         
    0x00002cfa add r3, pc                                    |         r3 = 0x5d32;
    0x00002cfc ldr.w r1, [r3, 0x42c]                         |         r1 = *(0x615e);
    0x00002d00 ldrb r2, [r1]                                 |         r2 = *(r1);
    0x00002d02 cmp r2, 0                                     |         
                                                             |         if (r2 != 0) {
    0x00002d04 bne.w 0x3a66                                  |             goto label_70;
                                                             |         }
                                                             | label_34:
    0x00002d08 ldr r3, [pc, 0x32c]                           |         
    0x00002d0a movs r2, 0                                    |         r2 = 0;
    0x00002d0c add r3, pc                                    |         r3 = 0x5d48;
    0x00002d0e str.w r2, [r3, 0x42c]                         |         __asm ("str.w r2, [r3, 0x42c]");
                                                             |     }
                                                             | label_35:
    0x00002d12 ldr r4, [pc, 0x328]                           |     
    0x00002d14 add r4, pc                                    |     r4 = 0x5d56;
    0x00002d16 ldr.w r3, [r4, 0x508]                         |     r3 = *(0x625e);
    0x00002d1a cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00002d1c beq.w 0x3804                                  |         goto label_71;
                                                             |     }
                                                             | label_19:
    0x00002d20 ldr r4, [pc, 0x31c]                           |     
    0x00002d22 add r4, pc                                    |     r4 = 0x5d66;
    0x00002d24 ldr.w r3, [r4, 0x504]                         |     r3 = *(0x626a);
    0x00002d28 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00002d2a beq.w 0x37ea                                  |         goto label_72;
                                                             |     }
                                                             | label_18:
    0x00002d2e ldr r2, [pc, 0x314]                           |     
    0x00002d30 ldr r3, [pc, 0x314]                           |     
    0x00002d32 add r2, pc                                    |     r2 = 0x5d7c;
    0x00002d34 ldr.w r1, [r2, 0x4d0]                         |     r1 = *(0x624c);
    0x00002d38 add r3, pc                                    |     
    0x00002d3a ldr r0, [r3]                                  |     r0 = *(0x5d84);
    0x00002d3c ldr.w r4, [r2, 0x510]                         |     r4 = *(0x628c);
    0x00002d40 add.w r3, r3, r1, lsl 2                       |     
    0x00002d44 ldr.w r1, [r2, 0x468]                         |     r1 = *(0x61e4);
    0x00002d48 ldr r3, [r3, 8]                               |     r3 = *(0x5d8c);
    0x00002d4a cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00002d4c bne.w 0x372e                                  |         goto label_73;
                                                             |     }
    0x00002d50 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00002d52 beq.w 0x3890                                  |         goto label_74;
                                                             |     }
    0x00002d56 ldr.w r2, [r2, 0x51c]                         |     r2 = *((r2 + 0x51c));
                                                             | label_24:
    0x00002d5a ldr r1, [pc, 0x2f0]                           |     
    0x00002d5c add r1, pc                                    |     
    0x00002d5e ldr.w r1, [r1, 0x458]                         |     r1 = *(0x6206);
    0x00002d62 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00002d64 beq.w 0x3888                                  |         goto label_75;
                                                             |     }
    0x00002d68 ldr r1, [pc, 0x2e4]                           |     
    0x00002d6a add r1, pc                                    |     r1 = 0x5dbe;
                                                             | label_23:
    0x00002d6c ldr r7, [pc, 0x2e4]                           |     
    0x00002d6e strd r2, r1, [sp]                             |     __asm ("strd r2, r1, [sp]");
    0x00002d72 mov.w r1, 0x2000                              |     r1 = fcn.00002000;
    0x00002d76 ldr r2, [pc, 0x2e0]                           |     
    0x00002d78 add r7, pc                                    |     r7 = 0x5dd0;
    0x00002d7a ldr.w r4, [r7, 0x4f4]                         |     r4 = *(0x62c4);
    0x00002d7e add r2, pc                                    |     r2 = 0x5ddc;
    0x00002d80 str r4, [sp, 0x10]                            |     *(arg_10h) = r4;
    0x00002d82 ldr.w r4, [r7, 0x4ec]                         |     r4 = *(0x62bc);
    0x00002d86 str r4, [sp, 0xc]                             |     *(arg_ch) = r4;
    0x00002d88 ldr.w r4, [r7, 0x4e8]                         |     r4 = *(0x62b8);
    0x00002d8c str r4, [sp, 8]                               |     *(arg_8h) = r4;
    0x00002d8e blx 0x20a8                                    |     r0 = fcn_000020a8 ();
    0x00002d92 mov r3, r0                                    |     r3 = r0;
                                                             | label_14:
    0x00002d94 cmp.w r3, 0x2000                              |     
                                                             |     if (r3 >= fcn.00002000) {
    0x00002d98 bhs.w 0x3adc                                  |         goto label_76;
                                                             |     }
    0x00002d9c ldr r3, [pc, 0x2bc]                           |     
    0x00002d9e add r3, pc                                    |     r3 = 0x5dfe;
    0x00002da0 ldr.w r2, [r3, 0x4a4]                         |     r2 = *(0x62a2);
    0x00002da4 cmp r2, 1                                     |     
                                                             |     if (r2 > 1) {
    0x00002da6 ble 0x2dc4                                    |         
    0x00002da8 ldr.w r1, [r3, 0x4d0]                         |         r1 = *((r3 + 0x4d0));
    0x00002dac movs r0, 1                                    |         r0 = 1;
    0x00002dae ldr r2, [pc, 0x2b0]                           |         
    0x00002db0 add r2, pc                                    |         r2 = 0x5e16;
    0x00002db2 mov r3, r2                                    |         r3 = r2;
    0x00002db4 add.w r2, r2, r1, lsl 2                       |         r2 += (r1 << 2);
    0x00002db8 ldr r1, [pc, 0x2a8]                           |         
    0x00002dba ldr r3, [r3]                                  |         r3 = *(r3);
    0x00002dbc ldr r2, [r2, 8]                               |         r2 = *((r2 + 8));
    0x00002dbe add r1, pc                                    |         r1 = 0x5e26;
    0x00002dc0 blx 0x2288                                    |         fcn_00002288 ();
                                                             |     }
    0x00002dc4 ldr r7, [pc, 0x2a0]                           |     
    0x00002dc6 ldr.w sb, [pc, 0x2a4]                         |     
    0x00002dca add r7, pc                                    |     r7 = 0x5e36;
    0x00002dcc ldr.w r8, [r7]                                |     r8 = *(0x5e36);
    0x00002dd0 add sb, pc                                    |     sb = 0x5e42;
    0x00002dd2 mov r0, r8                                    |     r0 = r8;
    0x00002dd4 blx 0x209c                                    |     fcn_0000209c ();
    0x00002dd8 ldr.w r3, [sb, 0x468]                         |     r3 = *(0x62aa);
    0x00002ddc mov r4, r0                                    |     r4 = r0;
    0x00002dde str.w r0, [sb, 0x4c8]                         |     __asm ("str.w r0, [sb, 0x4c8]");
    0x00002de2 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00002de4 bne.w 0x37b6                                  |         goto label_77;
                                                             |     }
                                                             | label_17:
    0x00002de8 ldr r4, [pc, 0x284]                           |     
    0x00002dea add r4, pc                                    |     r4 = 0x5e5e;
    0x00002dec ldr.w r1, [r4, 0x4b4]                         |     r1 = *(0x6312);
    0x00002df0 ldr.w r3, [r4, 0x498]                         |     r3 = *(0x62f6);
    0x00002df4 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00002df6 beq.w 0x3880                                  |         goto label_78;
                                                             |     }
    0x00002dfa str r3, [sp, 4]                               |     var_4h = r3;
    0x00002dfc movs r3, 0                                    |     r3 = 0;
    0x00002dfe mov r2, r3                                    |     r2 = r3;
    0x00002e00 add.w r0, r4, 0x4b8                           |     r0 = r4 + 0x4b8;
    0x00002e04 str r3, [sp]                                  |     *(sp) = r3;
    0x00002e06 blx 0x2228                                    |     r0 = fcn_00002228 ();
    0x00002e0a mov r6, r0                                    |     r6 = r0;
    0x00002e0c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002e0e bne.w 0x3b84                                  |         goto label_79;
                                                             |     }
    0x00002e12 ldr.w r3, [r4, 0x4b4]                         |     r3 = *((r4 + 0x4b4));
    0x00002e16 ldr.w r1, [r4, 0x528]                         |     r1 = *((r4 + 0x528));
                                                             |     if (r3 != 0) {
    0x00002e1a cbz r3, 0x2e22                                |         
    0x00002e1c ldr.w r3, [r4, 0x4b8]                         |         r3 = *((r4 + 0x4b8));
    0x00002e20 ldr r6, [r3, 0x10]                            |         r6 = *((r3 + 0x10));
                                                             |     }
                                                             | label_22:
    0x00002e22 ldr r4, [pc, 0x250]                           |     
    0x00002e24 movs r3, 0                                    |     r3 = 0;
    0x00002e26 str r3, [sp]                                  |     *(sp) = r3;
    0x00002e28 mov r2, r6                                    |     r2 = r6;
    0x00002e2a add r4, pc                                    |     r4 = 0x5ea4;
    0x00002e2c ldr.w r0, [r4, 0x498]                         |     r0 = *(0x633c);
    0x00002e30 ldrh.w r3, [r4, 0x52c]                        |     r3 = *((r4 + 0x52c));
    0x00002e34 str r0, [sp, 4]                               |     var_4h = r0;
    0x00002e36 add.w r0, r4, 0x4b0                           |     r0 = r4 + 0x4b0;
    0x00002e3a blx 0x2228                                    |     r0 = fcn_00002228 ();
    0x00002e3e mov r6, r0                                    |     r6 = r0;
    0x00002e40 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002e42 bne.w 0x3b6a                                  |         goto label_80;
                                                             |     }
    0x00002e46 blx 0x1ce4                                    |     apr_time_now ();
    0x00002e4a ldr.w r3, [r4, 0x4f8]                         |     r3 = *((r4 + 0x4f8));
    0x00002e4e strd r0, r1, [r4, 8]                          |     __asm ("strd r0, r1, [r4, 8]");
    0x00002e52 strd r0, r1, [r4, 0x10]                       |     __asm ("strd r0, r1, [r4, 0x10]");
    0x00002e56 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00002e58 beq.w 0x371e                                  |         goto label_81;
                                                             |     }
    0x00002e5c movw r2, 0x4240                               |     
    0x00002e60 movt r2, 0xf                                  |     r2 = 0xf4240;
    0x00002e64 smlal r0, r1, r3, r2                          |     __asm ("smlal r0, r1, r3, r2");
    0x00002e66 lsls r2, r0, 4                                |     r2 = r0 << 4;
    0x00002e68 mov r4, r1                                    |     r4 = r1;
    0x00002e6a str r0, [sp, 0x48]                            |     *(arg_48h) = r0;
                                                             | label_12:
    0x00002e6c ldr r1, [pc, 0x208]                           |     
    0x00002e6e movs r0, 2                                    |     r0 = 2;
    0x00002e70 ldr.w r8, [pc, 0x208]                         |     
    0x00002e74 add r7, sp, 0x64                              |     r7 += arg_64h;
    0x00002e76 mov fp, r4                                    |     
    0x00002e78 add r1, pc                                    |     r1 = 0x5ef4;
    0x00002e7a blx 0x212c                                    |     fcn_0000212c ();
    0x00002e7e ldr r3, [pc, 0x200]                           |     
    0x00002e80 movs r2, 0                                    |     r2 = 0;
    0x00002e82 add r8, pc                                    |     r8 = 0x5f02;
    0x00002e84 add r3, pc                                    |     r3 = 0x5f0a;
    0x00002e86 ldr.w r0, [r3, 0x4d8]                         |     r0 = *(0x63e2);
    0x00002e8a ldr r3, [pc, 0x1f8]                           |     
    0x00002e8c add r3, pc                                    |     r3 = 0x5f16;
    0x00002e8e str r3, [sp, 0x40]                            |     *(arg_40h) = r3;
    0x00002e90 ldr r3, [pc, 0x1f4]                           |     
    0x00002e92 add r3, pc                                    |     r3 = 0x5f1e;
    0x00002e94 str r3, [sp, 0x44]                            |     *(arg_44h) = r3;
    0x00002e96 add.w r3, r0, 0x2000                          |     r3 = r0 + fcn.00002000;
    0x00002e9a str r2, [r3, 0x68]                            |     *((r3 + 0x68)) = r2;
    0x00002e9c bl 0x5e90                                     |     fcn_00005e90 (r0, r1, r2, r3, r4);
                                                             | label_4:
    0x00002ea0 ldr r5, [pc, 0x1e8]                           |     
    0x00002ea2 mov r4, sl                                    |     r4 = sl;
    0x00002ea4 ldr.w r3, [r8]                                |     r3 = *(r8);
    0x00002ea8 add r5, pc                                    |     r5 = 0x5f38;
    0x00002eaa str r3, [r7]                                  |     *(r7) = r3;
                                                             |     do {
    0x00002eac strd r7, r4, [sp]                             |         __asm ("strd r7, r4, [sp]");
    0x00002eb0 ldrd r2, r3, [r8, 0x40]                       |         __asm ("ldrd r2, r3, [r8, 0x40]");
    0x00002eb4 ldr.w r0, [r5, 0x494]                         |         r0 = *((r5 + 0x494));
    0x00002eb8 blx 0x1cb4                                    |         r0 = apr_pollset_poll ();
    0x00002ebc cmp r0, 4                                     |         
    0x00002ebe beq 0x2eac                                    |         
                                                             |     } while (r0 == 4);
    0x00002ec0 mov sl, r4                                    |     sl = r4;
    0x00002ec2 mov r4, r0                                    |     r4 = r0;
    0x00002ec4 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002ec6 bne.w 0x3b60                                  |         goto label_82;
                                                             |     }
    0x00002eca ldr r3, [r7]                                  |     r3 = *(r7);
    0x00002ecc ldr.w r6, [sl]                                |     r6 = *(sl);
    0x00002ed0 cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x00002ed2 ble.w 0x311e                                  |         goto label_83;
                                                             |     }
    0x00002ed6 ldr.w sb, [pc, 0x1b8]                         |     
    0x00002eda strd r8, sl, [sp, 0x34]                       |     __asm ("strd r8, sl, [sp, 0x34]");
    0x00002ede add sb, pc                                    |     sb = 0x5f74;
    0x00002ee0 b 0x30e8                                      |     goto label_3;
                                                             | label_2:
    0x00003094 tst.w sl, 0x23                                |     
                                                             |     if ((sl & 0x23) != 0) {
    0x00003098 beq 0x30a0                                    |         
    0x0000309a mov r0, r5                                    |         r0 = r5;
    0x0000309c bl 0x659c                                     |         fcn_0000659c (r0, r1, r2, r3, r4, r5, r6);
                                                             |     }
    0x000030a0 ands r8, sl, 0x50                             |     r8 = sl & 0x50;
                                                             |     if (r8 != sl) {
    0x000030a4 bne.w 0x35fe                                  |         goto label_84;
                                                             |     }
    0x000030a8 tst.w sl, 4                                   |     
                                                             |     if ((sl & 4) == 0) {
    0x000030ac beq 0x30de                                    |         goto label_6;
                                                             |     }
    0x000030ae ldr.w sl, [r5, 0x1c]                          |     sl = *((r5 + 0x1c));
    0x000030b2 cmp.w sl, 1                                   |     
                                                             |     if (sl == 1) {
    0x000030b6 beq.w 0x3654                                  |         goto label_85;
                                                             |     }
    0x000030ba movs r1, 1                                    |     r1 = 1;
    0x000030bc mov r0, r5                                    |     r0 = r5;
    0x000030be bl 0x57f8                                     |     fcn_000057f8 (r0, r1);
    0x000030c2 ldr r3, [r5, 0x1c]                            |     r3 = *((r5 + 0x1c));
    0x000030c4 cmp r3, 3                                     |     
                                                             |     if (r3 == 3) {
    0x000030c6 beq.w 0x364c                                  |         goto label_86;
                                                             |     }
    0x000030ca ldr r3, [sp, 0x40]                            |     r3 = *(arg_40h);
    0x000030cc ldr.w r2, [r3, 0x4ac]                         |     r2 = *((r3 + 0x4ac));
    0x000030d0 ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x000030d2 ldr r3, [r3, 0x34]                            |     r3 = *((r3 + 0x34));
    0x000030d4 cmp r2, r3                                    |     
                                                             |     if (r2 >= r3) {
    0x000030d6 bge 0x30de                                    |         goto label_6;
                                                             |     }
                                                             | label_9:
    0x000030d8 mov r0, r5                                    |     r0 = r5;
    0x000030da bl 0x63a0                                     |     fcn_000063a0 (r0);
                                                             |     do {
                                                             | label_6:
    0x000030de ldr r3, [r7]                                  |         r3 = *(r7);
    0x000030e0 adds r4, 1                                    |         r4++;
    0x000030e2 adds r6, 0x14                                 |         r6 += 0x14;
    0x000030e4 cmp r4, r3                                    |         
                                                             |         if (r4 >= r3) {
    0x000030e6 bge 0x311a                                    |             goto label_87;
                                                             |         }
                                                             | label_3:
    0x000030e8 ldr r5, [r6, 0x10]                            |         r5 = *((r6 + 0x10));
    0x000030ea ldr r2, [r5, 0x1c]                            |         r2 = *((r5 + 0x1c));
    0x000030ec cmp r2, 0                                     |         
    0x000030ee beq 0x30de                                    |         
                                                             |     } while (r2 == 0);
    0x000030f0 cmp r2, 2                                     |     
    0x000030f2 ldrsh.w sl, [r6, 0xa]                         |     sl = *((r6 + 0xa));
                                                             |     if (r2 != 2) {
    0x000030f6 bne 0x3094                                    |         goto label_2;
                                                             |     }
    0x000030f8 add.w r2, r5, 0x2000                          |     r2 = r5 + fcn.00002000;
    0x000030fc ldr r0, [r2, 0x6c]                            |     r0 = *((r2 + 0x6c));
    0x000030fe cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003100 beq 0x3094                                    |         goto label_2;
                                                             |     }
    0x00003102 blx 0x1dd0                                    |     r0 = fcn_00001dd0 ();
    0x00003106 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003108 beq 0x3094                                    |         goto label_2;
                                                             |     }
                                                             | label_8:
    0x0000310a mov r0, r5                                    |     r0 = r5;
    0x0000310c adds r4, 1                                    |     r4++;
    0x0000310e bl 0x5a64                                     |     fcn_00005a64 (r0);
    0x00003112 ldr r3, [r7]                                  |     r3 = *(r7);
    0x00003114 adds r6, 0x14                                 |     r6 += 0x14;
    0x00003116 cmp r4, r3                                    |     
                                                             |     if (r4 < r3) {
    0x00003118 blt 0x30e8                                    |         goto label_3;
                                                             |     }
                                                             | label_87:
    0x0000311a ldrd r8, sl, [sp, 0x34]                       |     __asm ("ldrd r8, sl, [arg_34h]");
                                                             | label_83:
    0x0000311e ldr r3, [pc, 0x3d0]                           |     
    0x00003120 ldr r0, [sp, 0x48]                            |     r0 = *(arg_48h);
    0x00003122 add r3, pc                                    |     r3 = 0x6618;
    0x00003124 ldrd r1, r2, [r3, 8]                          |     __asm ("ldrd r1, r2, [r3, 8]");
    0x00003128 cmp r1, r0                                    |     
    0x0000312a sbcs.w r2, r2, fp                             |     __asm ("sbcs.w r2, r2, fp");
                                                             |     if (r1 >= r0) {
    0x0000312e bge 0x313e                                    |         goto label_88;
                                                             |     }
    0x00003130 ldr r2, [pc, 0x3c0]                           |     
    0x00003132 ldr r1, [r3]                                  |     r1 = *(r3);
    0x00003134 add r2, pc                                    |     r2 = 0x662c;
    0x00003136 ldr r3, [r2, 0x34]                            |     r3 = *(0x6660);
    0x00003138 cmp r1, r3                                    |     
                                                             |     if (r1 < r3) {
                                                             | label_13:
    0x0000313a blt.w 0x2ea0                                  |         goto label_4;
                                                             |     }
                                                             | label_88:
    0x0000313e ldr r3, [pc, 0x3b8]                           |     
    0x00003140 add r3, pc                                    |     
    0x00003142 ldr r3, [r3, 0x38]                            |     r3 = *(0x6676);
    0x00003144 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003146 beq.w 0x3712                                  |         goto label_89;
                                                             |     }
    0x0000314a ldr r3, [pc, 0x3b0]                           |     
    0x0000314c ldr r1, [sp, 0x4c]                            |     r1 = *(arg_4ch);
    0x0000314e ldr r2, [pc, 0x3b0]                           |     
    0x00003150 add r3, pc                                    |     
    0x00003152 ldr r0, [r1]                                  |     r0 = *(r1);
    0x00003154 movs r1, 1                                    |     r1 = 1;
    0x00003156 ldr r3, [r3]                                  |     r3 = *(0x6652);
    0x00003158 add r2, pc                                    |     r2 = 0x665e;
    0x0000315a blx 0x1da8                                    |     fcn_00001da8 ();
                                                             | label_11:
    0x0000315e ldr r4, [pc, 0x3a4]                           |     
    0x00003160 add r4, pc                                    |     r4 = 0x666a;
    0x00003162 ldr.w r0, [r4, 0x48c]                         |     r0 = *(0x6af6);
    0x00003166 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003168 beq.w 0x370c                                  |         goto label_90;
                                                             |     }
    0x0000316c ldrd r2, r1, [r4, 0xc]                        |     __asm ("ldrd r2, r1, [r4, 0xc]");
    0x00003170 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00003172 ldr r5, [r4, 0x14]                            |     r5 = *((r4 + 0x14));
    0x00003174 subs r0, r3, r1                               |     r0 = r3 - r1;
    0x00003176 sbc.w r1, r2, r5                              |     __asm ("sbc.w r1, r2, r5");
    0x0000317a bl 0x7334                                     |     fcn_00007334 (r0, r1, r2);
    0x0000317e vldr d16, [pc, 0x368]                         |     __asm ("vldr d16, [0x000034ec]");
    0x00003182 vmov d17, r0, r1                              |     __asm ("vmov d17, r0, r1");
    0x00003186 movs r0, 1                                    |     r0 = 1;
    0x00003188 ldr r1, [pc, 0x37c]                           |     
    0x0000318a ldr.w r2, [r4, 0x4dc]                         |     r2 = *((r4 + 0x4dc));
    0x0000318e vdiv.f64 d8, d17, d16                         |     __asm ("vdiv.f64 d8, d17, d16");
    0x00003192 add r1, pc                                    |     r1 = 0x669e;
    0x00003194 blx 0x2288                                    |     fcn_00002288 ();
    0x00003198 ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x0000319c add.w r0, r4, 0x18                            |     r0 = r4 + 0x18;
    0x000031a0 ldr r1, [pc, 0x368]                           |     
    0x000031a2 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000031a6 strd r3, r0, [sp]                             |     __asm ("strd r3, r0, [sp]");
    0x000031aa movs r0, 1                                    |     r0 = 1;
    0x000031ac add r1, pc                                    |     r1 = 0x66bc;
    0x000031ae blx 0x2288                                    |     fcn_00002288 ();
    0x000031b2 ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x000031b6 ldr.w r0, [r4, 0x418]                         |     r0 = *((r4 + 0x418));
    0x000031ba ldr r1, [pc, 0x354]                           |     
    0x000031bc ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000031c0 strd r3, r0, [sp]                             |     __asm ("strd r3, r0, [sp]");
    0x000031c4 movs r0, 1                                    |     r0 = 1;
    0x000031c6 add r1, pc                                    |     r1 = 0x66dc;
    0x000031c8 blx 0x2288                                    |     fcn_00002288 ();
    0x000031cc ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x000031d0 ldrh.w r0, [r4, 0x41c]                        |     r0 = *((r4 + 0x41c));
    0x000031d4 ldr r1, [pc, 0x33c]                           |     
    0x000031d6 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000031da strd r3, r0, [sp]                             |     __asm ("strd r3, r0, [sp]");
    0x000031de movs r0, 1                                    |     r0 = 1;
    0x000031e0 add r1, pc                                    |     r1 = 0x66f8;
    0x000031e2 blx 0x2288                                    |     fcn_00002288 ();
    0x000031e6 ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x000031ea ldr.w r0, [r4, 0x430]                         |     r0 = *((r4 + 0x430));
    0x000031ee ldr r1, [pc, 0x328]                           |     
    0x000031f0 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000031f4 strd r3, r0, [sp]                             |     __asm ("strd r3, r0, [sp]");
    0x000031f8 movs r0, 1                                    |     r0 = 1;
    0x000031fa add r1, pc                                    |     r1 = 0x6718;
    0x000031fc blx 0x2288                                    |     fcn_00002288 ();
    0x00003200 ldr.w r3, [r4, 0x434]                         |     r3 = *((r4 + 0x434));
    0x00003204 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003206 beq.w 0x38a4                                  |         goto label_91;
                                                             |     }
    0x0000320a ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x0000320e movs r0, 1                                    |     r0 = 1;
    0x00003210 ldr r1, [pc, 0x308]                           |     
    0x00003212 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x00003216 str r3, [sp]                                  |     *(sp) = r3;
    0x00003218 add r1, pc                                    |     r1 = 0x6738;
    0x0000321a blx 0x2288                                    |     fcn_00002288 ();
                                                             | label_26:
    0x0000321e ldr r4, [pc, 0x300]                           |     
    0x00003220 movs r0, 1                                    |     r0 = 1;
    0x00003222 ldr r2, [pc, 0x300]                           |     
    0x00003224 ldr r1, [pc, 0x300]                           |     
    0x00003226 add r4, pc                                    |     r4 = 0x674c;
    0x00003228 add r2, pc                                    |     
    0x0000322a ldr.w r3, [r4, 0x4e4]                         |     r3 = *(0x6c30);
    0x0000322e ldr r2, [r2]                                  |     r2 = *(0x6752);
    0x00003230 add r1, pc                                    |     r1 = 0x675c;
    0x00003232 strd r3, r2, [sp]                             |     __asm ("strd r3, r2, [sp]");
    0x00003236 ldr.w r2, [r4, 0x4e0]                         |     r2 = *(0x6c2c);
    0x0000323a blx 0x2288                                    |     fcn_00002288 ();
    0x0000323e ldr.w r3, [r4, 0x4e4]                         |     r3 = *(0x6c30);
    0x00003242 movs r0, 1                                    |     r0 = 1;
    0x00003244 ldr r1, [pc, 0x2e4]                           |     
    0x00003246 ldr.w r2, [r4, 0x4e0]                         |     r2 = *(0x6c2c);
    0x0000324a str r3, [sp]                                  |     *(sp) = r3;
    0x0000324c add r1, pc                                    |     r1 = 0x677c;
    0x0000324e vstr d8, [sp, 8]                              |     __asm ("vstr d8, [sp, 8]");
    0x00003252 blx 0x2288                                    |     fcn_00002288 ();
    0x00003256 ldr.w r3, [r4, 0x4e4]                         |     r3 = *(0x6c30);
    0x0000325a ldr r0, [r4]                                  |     r0 = *(0x674c);
    0x0000325c ldr r1, [pc, 0x2d0]                           |     
    0x0000325e ldr.w r2, [r4, 0x4e0]                         |     r2 = *(0x6c2c);
    0x00003262 strd r3, r0, [sp]                             |     __asm ("strd r3, r0, [sp]");
    0x00003266 movs r0, 1                                    |     r0 = 1;
    0x00003268 add r1, pc                                    |     r1 = 0x679c;
    0x0000326a blx 0x2288                                    |     fcn_00002288 ();
    0x0000326e ldr.w r3, [r4, 0x4e4]                         |     r3 = *(0x6c30);
    0x00003272 ldr.w r0, [r4, 0x43c]                         |     r0 = *(0x6b88);
    0x00003276 ldr r1, [pc, 0x2bc]                           |     
    0x00003278 ldr.w r2, [r4, 0x4e0]                         |     r2 = *(0x6c2c);
    0x0000327c strd r3, r0, [sp]                             |     __asm ("strd r3, r0, [sp]");
    0x00003280 movs r0, 1                                    |     r0 = 1;
    0x00003282 add r1, pc                                    |     r1 = 0x67bc;
    0x00003284 blx 0x2288                                    |     fcn_00002288 ();
    0x00003288 ldr.w r3, [r4, 0x43c]                         |     r3 = *(0x6b88);
    0x0000328c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000328e bne.w 0x39c2                                  |         goto label_92;
                                                             |     }
                                                             | label_29:
    0x00003292 ldr r2, [pc, 0x2a4]                           |     
    0x00003294 add r2, pc                                    |     r2 = 0x67d2;
    0x00003296 ldr.w r4, [r2, 0x454]                         |     r4 = *(0x6c26);
    0x0000329a cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x0000329c bne.w 0x3a04                                  |         goto label_93;
                                                             |     }
    0x000032a0 ldr r2, [pc, 0x298]                           |     
    0x000032a2 add r2, pc                                    |     r2 = 0x67e2;
    0x000032a4 ldr.w r3, [r2, 0x458]                         |     r3 = *(0x6c3a);
    0x000032a8 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000032aa bne.w 0x39e8                                  |         goto label_94;
                                                             |     }
    0x000032ae ldr r4, [pc, 0x290]                           |     
    0x000032b0 movs r0, 1                                    |     r0 = 1;
    0x000032b2 ldr r1, [pc, 0x290]                           |     
    0x000032b4 add r4, pc                                    |     r4 = 0x67fa;
    0x000032b6 ldr.w r3, [r4, 0x4e4]                         |     r3 = *(0x6cde);
    0x000032ba add.w r2, r4, 0x460                           |     r2 = r4 + 0x460;
    0x000032be add r1, pc                                    |     r1 = 0x6808;
    0x000032c0 str r3, [sp]                                  |     *(sp) = r3;
    0x000032c2 ldrd r6, r7, [r2]                             |     __asm ("ldrd r6, r7, [r2]");
    0x000032c4 str r0, [r0, 0x70]                            |     *((r0 + 0x70)) = r0;
    0x000032c6 strd r6, r7, [sp, 8]                          |     __asm ("strd r6, r7, [sp, 8]");
    0x000032ca ldr.w r2, [r4, 0x4e0]                         |     r2 = *(0x6cda);
    0x000032ce blx 0x2288                                    |     fcn_00002288 ();
    0x000032d2 ldr.w r3, [r4, 0x468]                         |     r3 = *(0x6c62);
    0x000032d6 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000032d8 bne.w 0x39a0                                  |         goto label_95;
                                                             |     }
                                                             | label_28:
    0x000032dc ldr r4, [pc, 0x268]                           |     
    0x000032de movs r0, 1                                    |     r0 = 1;
    0x000032e0 ldr r1, [pc, 0x268]                           |     
    0x000032e2 add r4, pc                                    |     r4 = 0x682e;
    0x000032e4 ldr.w r3, [r4, 0x4e4]                         |     r3 = *(0x6d12);
    0x000032e8 add.w r2, r4, 0x480                           |     r2 = r4 + 0x480;
    0x000032ec add r1, pc                                    |     r1 = 0x683c;
    0x000032ee str r3, [sp]                                  |     *(sp) = r3;
    0x000032f0 ldrd r6, r7, [r2, -0x8]                       |     __asm ("ldrd r6, r7, [r2, -0x8]");
    0x000032f4 strd r6, r7, [sp, 8]                          |     __asm ("strd r6, r7, [sp, 8]");
    0x000032f8 ldr.w r2, [r4, 0x4e0]                         |     r2 = *(0x6d0e);
    0x000032fc blx 0x2288                                    |     fcn_00002288 ();
    0x00003300 vcmp.f64 d8, 0                                |     __asm ("vcmp.f64 d8, 0");
    0x00003302 ldrh r0, [r0, 0x1a]                           |     r0 = *((r0 + 0x1a));
    0x00003304 vmrs apsr_nzcv, fpscr                         |     __asm ("vmrs apsr_nzcv, fpscr");
                                                             |     if (r0 != 1) {
    0x00003308 bne.w 0x38c0                                  |         goto label_96;
                                                             |     }
    0x0000330a strh r2, [r3, 0x16]                           |     *((r3 + 0x16)) = r2;
                                                             | label_27:
    0x0000330c ldr r2, [pc, 0x240]                           |     
    0x0000330e add r2, pc                                    |     r2 = 0x6862;
    0x00003310 ldr r3, [r2]                                  |     r3 = *(0x6862);
    0x00003312 cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x00003314 ble.w 0x35e2                                  |         goto label_97;
                                                             |     }
    0x00003316 strh r5, [r4, 0xa]                            |     *((r4 + 0xa)) = r5;
    0x00003318 ldr.w r0, [r2, 0x480]                         |     r0 = *((r2 + 0x480));
    0x0000331c movs r4, 0                                    |     r4 = 0;
    0x0000331e mov.w r5, -1                                  |     r5 = -1;
    0x00003322 mvn r7, 0x80000000                            |     r7 = ~0x80000000;
    0x00003326 mov sl, r4                                    |     sl = r4;
    0x00003328 mov r6, r4                                    |     r6 = r4;
    0x0000332a mov r8, r4                                    |     r8 = r4;
    0x0000332c mov lr, r5                                    |     lr = r5;
    0x0000332e add.w r3, r0, r3, lsl 5                       |     r3 = r0 + (r3 << 5);
    0x00003330 asrs r3, r0, 0xd                              |     r3 = r0 >> 0xd;
    0x00003332 mov sb, r7                                    |     sb = r7;
    0x00003334 mov ip, r4                                    |     
    0x00003336 strd r4, r4, [sp, 0x3c]                       |     __asm ("strd r4, r4, [sp, 0x3c]");
    0x0000333a str r3, [sp, 0x48]                            |     *(arg_48h) = r3;
    0x0000333c strd r4, r4, [sp, 0x34]                       |     __asm ("strd r4, r4, [sp, 0x34]");
    0x00003340 str r5, [sp, 0x44]                            |     *(arg_44h) = r5;
                                                             |     do {
    0x00003342 ldrd r2, r4, [r0, 0x10]                       |         __asm ("ldrd r2, r4, [r0, 0x10]");
    0x00003346 ldr r5, [sp, 0x44]                            |         r5 = *(arg_44h);
    0x00003348 cmp r2, lr                                    |         
    0x0000334a sbcs.w r3, r4, sb                             |         __asm ("sbcs.w r3, r4, sb");
    0x0000334e ldrd r3, r1, [r0, 0x18]                       |         __asm ("ldrd r3, r1, [r0, 0x18]");
    0x00003352 itt lt                                        |         
                                                             |         if (r2 >= lr) {
    0x00003354 movlt lr, r2                                  |             lr = r2;
                                                             |         }
                                                             |         if (r2 >= lr) {
    0x00003356 movlt sb, r4                                  |             sb = r4;
                                                             |         }
    0x00003358 adds r0, 0x20                                 |         r0 += 0x20;
    0x0000335a cmp r3, r5                                    |         
    0x0000335c ldr r5, [sp, 0x34]                            |         r5 = *(arg_34h);
    0x0000335e sbcs.w fp, r1, r7                             |         __asm ("sbcs.w fp, r1, r7");
    0x00003360 lsrs r7, r0, 0xc                              |         r7 = r0 >> 0xc;
    0x00003362 itt lt                                        |         
                                                             |         if (r7 >= r0) {
    0x00003364 strlt r3, [sp, 0x44]                          |             *(arg_44h) = r3;
                                                             |         }
                                                             |         if (r7 >= r0) {
    0x00003366 movlt r7, r1                                  |             r7 = r1;
                                                             |         }
    0x00003368 cmp r5, r2                                    |         
    0x0000336a ldr r5, [sp, 0x38]                            |         r5 = *(arg_38h);
    0x0000336c sbcs.w fp, r5, r4                             |         __asm ("sbcs.w fp, r5, r4");
    0x00003370 ldr r5, [sp, 0x3c]                            |         r5 = *(arg_3ch);
    0x00003372 it lt                                         |         
                                                             |         if (r5 < r2) {
    0x00003374 strdlt r2, r4, [sp, 0x34]                     |             __asm ("strdlt r2, r4, [sp, 0x34]");
                                                             |         }
    0x00003378 cmp r5, r3                                    |         
    0x0000337a ldr r5, [sp, 0x40]                            |         r5 = *(arg_40h);
    0x0000337c sbcs.w fp, r5, r1                             |         __asm ("sbcs.w fp, r5, r1");
    0x00003380 it lt                                         |         
                                                             |         if (r5 < r3) {
    0x00003382 strdlt r3, r1, [sp, 0x3c]                     |             __asm ("strdlt r3, r1, [sp, 0x3c]");
                                                             |         }
    0x00003386 adds r2, r6, r2                               |         r2 = r6 + r2;
    0x00003388 adc.w r8, r8, r4                              |         __asm ("adc.w r8, r8, r4");
    0x0000338a lsrs r4, r0, 0x20                             |         r4 = r0 >> 0x20;
    0x0000338c adds.w r3, ip, r3                             |         r3 = ip + r3;
    0x00003390 mov ip, r3                                    |         
    0x00003392 ldr r3, [sp, 0x48]                            |         r3 = *(arg_48h);
    0x00003394 adc.w sl, sl, r1                              |         __asm ("adc.w sl, sl, r1");
    0x00003398 mov r6, r2                                    |         r6 = r2;
    0x0000339a cmp r3, r0                                    |         
    0x0000339c bne 0x3342                                    |         
                                                             |     } while (r3 != r0);
    0x0000339e ldr r5, [sp, 0x44]                            |     r5 = *(arg_44h);
    0x000033a0 adds.w r0, lr, 0x1f4                          |     r0 = lr + 0x1f4;
    0x000033a4 adc r1, sb, 0                                 |     __asm ("adc r1, sb, 0");
    0x000033a8 mov.w r2, 0x3e8                               |     r2 = 0x3e8;
    0x000033ac movs r3, 0                                    |     r3 = 0;
    0x000033ae mov r4, ip                                    |     r4 = ip;
    0x000033b0 bl 0x7390                                     |     r0 = fcn_00007390 (r0, r1, r2, r3);
    0x000033b4 mov r2, r0                                    |     r2 = r0;
    0x000033b6 mov r3, r1                                    |     r3 = r1;
    0x000033b8 adds.w r0, r5, 0x1f4                          |     r0 = r5 + 0x1f4;
    0x000033bc strd r2, r3, [sp, 0x44]                       |     __asm ("strd r2, r3, [sp, 0x44]");
    0x000033c0 adc r1, r7, 0                                 |     __asm ("adc r1, r7, 0");
    0x000033c2 lsls r0, r0, 4                                |     r0 <<= 4;
    0x000033c4 mov.w r2, 0x3e8                               |     r2 = 0x3e8;
    0x000033c8 movs r3, 0                                    |     r3 = 0;
    0x000033ca ldr.w sb, [pc, 0x188]                         |     
    0x000033ce bl 0x7390                                     |     fcn_00007390 (r0, r1, r2, r3);
    0x000033d2 mov r5, r1                                    |     r5 = r1;
    0x000033d4 ldr r1, [sp, 0x34]                            |     r1 = *(arg_34h);
    0x000033d6 mov r3, r0                                    |     r3 = r0;
    0x000033d8 mov.w r2, 0x3e8                               |     r2 = 0x3e8;
    0x000033dc str r3, [sp, 0x34]                            |     *(arg_34h) = r3;
    0x000033de movs r3, 0                                    |     r3 = 0;
    0x000033e0 adds.w r0, r1, 0x1f4                          |     r0 = r1 + 0x1f4;
    0x000033e4 ldr r1, [sp, 0x38]                            |     r1 = *(arg_38h);
    0x000033e6 add sb, pc                                    |     sb = 0x6940;
    0x000033e8 adc r1, r1, 0                                 |     __asm ("adc r1, r1, 0");
    0x000033ec bl 0x7390                                     |     fcn_00007390 (r0, r1, r2, r3);
    0x000033f0 mov r3, r1                                    |     r3 = r1;
    0x000033f2 ldr r1, [sp, 0x3c]                            |     r1 = *(arg_3ch);
    0x000033f4 mov r2, r0                                    |     r2 = r0;
    0x000033f6 mov fp, r3                                    |     
    0x000033f8 str r2, [sp, 0x38]                            |     *(arg_38h) = r2;
    0x000033fa movs r3, 0                                    |     r3 = 0;
    0x000033fc adds.w r0, r1, 0x1f4                          |     r0 = r1 + 0x1f4;
    0x00003400 ldr r1, [sp, 0x40]                            |     r1 = *(arg_40h);
    0x00003402 mov.w r2, 0x3e8                               |     r2 = 0x3e8;
    0x00003406 adc r1, r1, 0                                 |     __asm ("adc r1, r1, 0");
    0x0000340a bl 0x7390                                     |     r0 = fcn_00007390 (r0, r1, r2, r3);
    0x0000340e mov r3, r0                                    |     r3 = r0;
    0x00003410 adds.w r0, r6, 0x1f4                          |     r0 = r6 + 0x1f4;
    0x00003414 mov r7, r1                                    |     r7 = r1;
    0x00003416 mov.w r2, 0x3e8                               |     r2 = 0x3e8;
    0x0000341a adc r1, r8, 0                                 |     __asm ("adc r1, r8, 0");
    0x0000341e str r3, [sp, 0x3c]                            |     *(arg_3ch) = r3;
    0x00003420 movs r3, 0                                    |     r3 = 0;
    0x00003422 bl 0x7390                                     |     r0 = fcn_00007390 (r0, r1, r2, r3);
    0x00003426 mov r3, r0                                    |     r3 = r0;
    0x00003428 adds.w r0, r4, 0x1f4                          |     r0 = r4 + 0x1f4;
    0x0000342a strb r2, [r7, 3]                              |     *((r7 + 3)) = r2;
    0x0000342c mov r8, r1                                    |     r8 = r1;
    0x0000342e mov.w r2, 0x3e8                               |     r2 = 0x3e8;
    0x00003432 adc r1, sl, 0                                 |     __asm ("adc r1, sl, 0");
    0x00003436 mov sl, r3                                    |     sl = r3;
    0x00003438 movs r3, 0                                    |     r3 = 0;
    0x0000343a bl 0x7390                                     |     fcn_00007390 (r0, r1, r2, r3);
    0x0000343e mov r4, r1                                    |     r4 = r1;
    0x00003440 ldr r1, [pc, 0x114]                           |     
    0x00003442 mov r6, r0                                    |     r6 = r0;
    0x00003444 ldr.w r3, [sb, 0x4e4]                         |     r3 = *(0x6e24);
    0x00003448 ldr.w r2, [sb, 0x4e0]                         |     r2 = *(0x6e20);
    0x0000344c movs r0, 1                                    |     r0 = 1;
    0x0000344e add r1, pc                                    |     r1 = 0x69aa;
    0x00003450 blx 0x2288                                    |     fcn_00002288 ();
    0x00003454 ldr.w r3, [sb, 0x4e4]                         |     r3 = *(0x6e24);
    0x00003458 movs r0, 1                                    |     r0 = 1;
    0x0000345a ldr r1, [pc, 0x100]                           |     
    0x0000345c strd r3, r3, [sp, 4]                          |     __asm ("strd r3, r3, [sp, 4]");
    0x00003460 str r3, [sp]                                  |     *(sp) = r3;
    0x00003462 add r1, pc                                    |     r1 = 0x69c4;
    0x00003464 ldr.w r2, [sb, 0x4e0]                         |     r2 = *(0x6e20);
    0x00003468 blx 0x2288                                    |     fcn_00002288 ();
    0x0000346c ldr r1, [sp, 0x38]                            |     r1 = *(arg_38h);
    0x0000346e mov r0, sl                                    |     r0 = sl;
    0x00003470 str.w fp, [sp, 0x2c]                          |     __asm ("str.w fp, [arg_2ch]");
    0x00003474 str.w fp, [sp, 0x40]                          |     __asm ("str.w fp, [arg_40h]");
    0x00003478 str r1, [sp, 0x28]                            |     *(arg_28h) = r1;
    0x0000347a mov r1, r8                                    |     r1 = r8;
    0x0000347c ldr.w r2, [sb]                                |     r2 = *(0x6940);
    0x00003480 ldr.w fp, [sb, 0x4e4]                         |     fp = *(0x6e24);
    0x00003484 asrs r3, r2, 0x1f                             |     r3 = r2 >> 0x1f;
    0x00003486 str.w fp, [sp, 0x20]                          |     __asm ("str.w fp, [arg_20h]");
    0x0000348a bl 0x7390                                     |     fcn_00007390 (r0, r1, r2, r3);
    0x0000348e ldr r2, [sp, 0x44]                            |     r2 = *(arg_44h);
    0x00003490 strd r0, r1, [sp, 0x18]                       |     __asm ("strd r0, r1, [sp, 0x18]");
    0x00003494 movs r0, 1                                    |     r0 = 1;
    0x00003496 ldr r3, [sp, 0x48]                            |     r3 = *(arg_48h);
    0x00003498 ldr r1, [pc, 0xc4]                            |     
    0x0000349a str.w fp, [sp, 0x10]                          |     __asm ("str.w fp, [arg_10h]");
    0x0000349e str r3, [sp, 0xc]                             |     *(arg_ch) = r3;
    0x000034a0 mov r3, fp                                    |     r3 = fp;
    0x000034a2 str.w fp, [sp]                                |     __asm ("str.w fp, [sp]");
    0x000034a6 add r1, pc                                    |     r1 = 0x6a0a;
    0x000034a8 str r2, [sp, 8]                               |     *(arg_8h) = r2;
    0x000034aa ldr.w r2, [sb, 0x4e0]                         |     r2 = *(0x6e20);
    0x000034ae blx 0x2288                                    |     fcn_00002288 ();
    0x000034b2 ldrd r1, r2, [sp, 0x38]                       |     __asm ("ldrd r1, r2, [arg_38h]");
    0x000034b6 ldr r0, [sp, 0x40]                            |     r0 = *(arg_40h);
    0x000034b8 subs r3, r2, r1                               |     r3 = r2 - r1;
    0x000034ba mov r1, r4                                    |     r1 = r4;
    0x000034bc str r3, [sp, 0x28]                            |     *(arg_28h) = r3;
    0x000034be sbc.w r3, r7, r0                              |     __asm ("sbc.w r3, r7, r0");
    0x000034c2 str r3, [sp, 0x2c]                            |     *(arg_2ch) = r3;
    0x000034c4 mov r0, r6                                    |     r0 = r6;
    0x000034c6 ldr.w r2, [sb]                                |     r2 = *(0x6940);
    0x000034ca ldr.w fp, [sb, 0x4e4]                         |     fp = *(0x6e24);
    0x000034ce str r2, [sp, 0x40]                            |     *(arg_40h) = r2;
    0x000034d0 asrs r3, r2, 0x1f                             |     r3 = r2 >> 0x1f;
    0x000034d2 str.w fp, [sp, 0x20]                          |     __asm ("str.w fp, [arg_20h]");
    0x000034d6 str r3, [sp, 0x38]                            |     *(arg_38h) = r3;
    0x000034d8 bl 0x7390                                     |     r0 = fcn_00007390 (r0, r1, r2, r3);
    0x000034dc mov lr, r0                                    |     lr = r0;
    0x000034de mov ip, r1                                    |     
    0x000034e0 ldr r2, [sp, 0x40]                            |     r2 = *(arg_40h);
    0x000034e2 mov r0, sl                                    |     r0 = sl;
    0x000034e4 b 0x3564                                      |     
    0x00003564 ldr r3, [sp, 0x38]                            |     r3 = *(arg_38h);
    0x00003566 mov r1, r8                                    |     r1 = r8;
    0x00003568 mov r8, lr                                    |     r8 = lr;
    0x0000356a mov sl, ip                                    |     sl = ip;
    0x0000356c bl 0x7390                                     |     r0 = fcn_00007390 (r0, r1, r2, r3);
    0x00003570 subs.w r0, r8, r0                             |     r0 = r8 - r0;
    0x00003574 ldr r2, [sp, 0x44]                            |     r2 = *(arg_44h);
    0x00003576 str r0, [sp, 0x18]                            |     *(arg_18h) = r0;
    0x00003578 sbc.w r1, sl, r1                              |     __asm ("sbc.w r1, sl, r1");
    0x0000357c ldr r0, [sp, 0x34]                            |     r0 = *(arg_34h);
    0x0000357e str r1, [sp, 0x1c]                            |     *(arg_1ch) = r1;
    0x00003580 ldr.w r1, [pc, 0x684]                         |     
    0x00003584 subs r3, r0, r2                               |     r3 = r0 - r2;
    0x00003586 str.w fp, [sp, 0x10]                          |     __asm ("str.w fp, [arg_10h]");
    0x0000358a str r3, [sp, 8]                               |     *(arg_8h) = r3;
    0x0000358c mov.w r0, 1                                   |     r0 = 1;
    0x00003590 ldr r3, [sp, 0x48]                            |     r3 = *(arg_48h);
    0x00003592 add r1, pc                                    |     r1 = 0x719e;
    0x00003594 str.w fp, [sp]                                |     __asm ("str.w fp, [sp]");
    0x00003598 sbc.w r3, r5, r3                              |     __asm ("sbc.w r3, r5, r3");
    0x0000359c str r3, [sp, 0xc]                             |     *(arg_ch) = r3;
    0x0000359e mov r3, fp                                    |     r3 = fp;
    0x000035a0 ldr.w r2, [sb, 0x4e0]                         |     r2 = *((sb + 0x4e0));
    0x000035a4 blx 0x2288                                    |     fcn_00002288 ();
    0x000035a8 ldr r2, [sp, 0x3c]                            |     r2 = *(arg_3ch);
    0x000035aa mov r1, r4                                    |     r1 = r4;
    0x000035ac mov r0, r6                                    |     r0 = r6;
    0x000035ae strd r2, r7, [sp, 0x28]                       |     __asm ("strd r2, r7, [sp, 0x28]");
    0x000035b2 ldr.w r2, [sb]                                |     r2 = *(sb);
    0x000035b6 ldr.w r4, [sb, 0x4e4]                         |     r4 = *((sb + 0x4e4));
    0x000035ba asrs r3, r2, 0x1f                             |     r3 = r2 >> 0x1f;
    0x000035bc str r4, [sp, 0x20]                            |     *(arg_20h) = r4;
    0x000035be bl 0x7390                                     |     fcn_00007390 (r0, r1, r2, r3);
    0x000035c2 strd r0, r1, [sp, 0x18]                       |     __asm ("strd r0, r1, [sp, 0x18]");
    0x000035c6 mov r3, r4                                    |     r3 = r4;
    0x000035c8 ldr r0, [sp, 0x34]                            |     r0 = *(arg_34h);
    0x000035ca ldr.w r1, [pc, 0x640]                         |     
    0x000035ce ldr.w r2, [sb, 0x4e0]                         |     r2 = *((sb + 0x4e0));
    0x000035d2 str r0, [sp, 8]                               |     *(arg_8h) = r0;
    0x000035d4 movs r0, 1                                    |     r0 = 1;
    0x000035d6 add r1, pc                                    |     r1 = 0x71e8;
    0x000035d8 str r4, [sp, 0x10]                            |     *(arg_10h) = r4;
    0x000035da str r5, [sp, 0xc]                             |     *(arg_ch) = r5;
    0x000035dc str r4, [sp]                                  |     *(sp) = r4;
    0x000035de blx 0x2288                                    |     fcn_00002288 ();
                                                             | label_97:
    0x000035e2 ldr.w r0, [pc, 0x62c]                         |     
    0x000035e6 add r0, pc                                    |     r0 = 0x71fc;
    0x000035e8 blx 0x1d60                                    |     fcn_00001d60 ();
                                                             | label_10:
    0x000035ec ldr.w r3, [pc, 0x624]                         |     
    0x000035f0 add r3, pc                                    |     r3 = 0x7208;
    0x000035f2 ldr.w r0, [r3, 0x498]                         |     r0 = "    -n requests     Number of requests to perform\n";
    0x000035f6 blx 0x2024                                    |     fcn_00002024 ();
    0x000035fa b.w 0x26d4                                    |     goto label_5;
    0x000035fc invalid                                       |     
                                                             | label_84:
    0x000035fe ldr.w r3, [pc, 0x618]                         |     
    0x00003602 ldr r1, [r5, 0x1c]                            |     r1 = *((r5 + 0x1c));
    0x00003604 add r3, pc                                    |     r3 = 0x7222;
    0x00003606 ldr.w r2, [r3, 0x4b0]                         |     r2 = *(0x76d2);
    0x0000360a ldr r0, [r2, 0x24]                            |     r0 = *(0x76f6);
    0x0000360c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000360e beq 0x36b0                                    |         goto label_98;
                                                             |     }
    0x00003610 cmp r1, 1                                     |     
                                                             |     if (r1 == 1) {
    0x00003612 beq 0x3630                                    |         goto label_99;
                                                             |     }
    0x00003614 ldr.w r2, [r3, 0x43c]                         |     r2 = *((r3 + 0x43c));
    0x00003618 adds r2, 1                                    |     r2++;
    0x0000361a str.w r2, [r3, 0x43c]                         |     __asm ("str.w r2, [r3, 0x43c]");
    0x0000361e ldr.w r2, [r3, 0x448]                         |     r2 = *((r3 + 0x448));
    0x00003622 adds r2, 1                                    |     r2++;
    0x00003624 str.w r2, [r3, 0x448]                         |     __asm ("str.w r2, [r3, 0x448]");
                                                             |     do {
                                                             | label_7:
    0x00003628 mov r0, r5                                    |         r0 = r5;
    0x0000362a bl 0x5e90                                     |         fcn_00005e90 (r0, r1, r2, r3, r4);
    0x0000362e b 0x30de                                      |         goto label_6;
                                                             | label_99:
    0x00003630 ldr.w r2, [r3, 0x4c4]                         |         r2 = *((r3 + 0x4c4));
    0x00003634 cmp r2, 0                                     |         
                                                             |         if (r2 == 0) {
    0x00003636 beq 0x3700                                    |             goto label_100;
                                                             |         }
    0x00003638 ldr.w r2, [r3, 0x43c]                         |         r2 = *((r3 + 0x43c));
    0x0000363c adds r2, 1                                    |         r2++;
    0x0000363e str.w r2, [r3, 0x43c]                         |         __asm ("str.w r2, [r3, 0x43c]");
    0x00003642 ldr.w r2, [r3, 0x448]                         |         r2 = *((r3 + 0x448));
    0x00003646 adds r2, 1                                    |         r2++;
    0x00003648 str.w r2, [r3, 0x448]                         |         __asm ("str.w r2, [r3, 0x448]");
                                                             | label_86:
    0x0000364c mov r0, r5                                    |         r0 = r5;
    0x0000364e bl 0x659c                                     |         fcn_0000659c (r0, r1, r2, r3, r4, r5, r6);
    0x00003652 b 0x30de                                      |         goto label_6;
                                                             | label_85:
    0x00003654 ldr.w r1, [sb, 0x4b0]                         |         r1 = *((sb + 0x4b0));
    0x00003658 ldr r0, [r5, 4]                               |         r0 = *((r5 + 4));
    0x0000365a blx 0x1c00                                    |         apr_socket_connect ();
    0x0000365e str r0, [sp, 0x3c]                            |         *(arg_3ch) = r0;
                                                             |         if (r0 == 0) {
    0x00003660 cbz r0, 0x36d4                                |             goto label_101;
                                                             |         }
    0x00003662 mov r1, r8                                    |         r1 = r8;
    0x00003664 mov r0, r5                                    |         r0 = r5;
    0x00003666 str.w r8, [r5, 0x1c]                          |         __asm ("str.w r8, [r5, 0x1c]");
    0x0000366a bl 0x57f8                                     |         fcn_000057f8 (r0, r1);
    0x0000366e ldr r0, [r5, 4]                               |         r0 = *((r5 + 4));
    0x00003670 blx 0x1e00                                    |         fcn_00001e00 ();
    0x00003674 ldr.w r1, [sb, 0x444]                         |         r1 = *((sb + 0x444));
    0x00003678 ldr r2, [sp, 0x3c]                            |         r2 = *(arg_3ch);
    0x0000367a adds r1, 1                                    |         r1++;
    0x0000367c str.w r1, [sb, 0x444]                         |         __asm ("str.w r1, [sb, 0x444]");
    0x00003680 ldr.w r1, [sb, 0x43c]                         |         r1 = *((sb + 0x43c));
    0x00003684 cmp r1, 0xa                                   |         
    0x00003686 add.w r0, r1, 1                               |         r0 = r1 + 1;
    0x0000368a str.w r0, [sb, 0x43c]                         |         __asm ("str.w r0, [sb, 0x43c]");
    0x0000368e ble 0x3628                                    |         
                                                             |     } while (r1 <= 0xa);
    0x00003690 ldr r3, [sp, 0x4c]                            |     r3 = *(arg_4ch);
    0x00003692 mov r4, r2                                    |     r4 = r2;
    0x00003694 ldr.w r0, [pc, 0x584]                         |     
    0x00003698 mov r1, sl                                    |     r1 = sl;
    0x0000369a movs r2, 0x21                                 |     r2 = 0x21;
    0x0000369c ldr r3, [r3]                                  |     r3 = *(r3);
    0x0000369e add r0, pc                                    |     
    0x000036a0 blx 0x2054                                    |     fcn_00002054 ();
    0x000036a2 ldcl p8, c15, [r8], {0xdf}                    |     __asm ("ldcl p8, c15, [r8], {0xdf}");
    0x000036a6 lsls r0, r7, 0x15                             |     r0 = r7 << 0x15;
    0x000036a8 mov r1, r4                                    |     r1 = r4;
    0x000036aa add r0, pc                                    |     r0 = 0xa96c;
    0x000036ac bl 0x42b4                                     |     fcn_000042b4 (r0, r1);
                                                             | label_98:
    0x000036b0 ldr.w r2, [r3, 0x43c]                         |     r2 = *((r3 + 0x43c));
    0x000036b4 cmp r1, 1                                     |     
    0x000036b6 add.w r2, r2, 1                               |     r2++;
    0x000036ba str.w r2, [r3, 0x43c]                         |     __asm ("str.w r2, [r3, 0x43c]");
    0x000036bc movs r4, 0x3c                                 |     r4 = 0x3c;
    0x000036be ldr.w r2, [r3, 0x448]                         |     r2 = *((r3 + 0x448));
    0x000036c2 add.w r2, r2, 1                               |     r2++;
    0x000036c6 str.w r2, [r3, 0x448]                         |     __asm ("str.w r2, [r3, 0x448]");
                                                             |     if (r4 != 0x3c) {
    0x000036ca bne 0x3628                                    |         goto label_7;
                                                             |     }
    0x000036cc mov r0, r5                                    |     r0 = r5;
    0x000036ce bl 0x659c                                     |     fcn_0000659c (r0, r1, r2, r3, r4, r5, r6);
    0x000036d2 b 0x30de                                      |     goto label_6;
                                                             | label_101:
    0x000036d4 movs r3, 2                                    |     r3 = 2;
    0x000036d6 mov r1, sl                                    |     r1 = sl;
    0x000036d8 str r3, [r5, 0x1c]                            |     *((r5 + 0x1c)) = r3;
    0x000036da mov r0, r5                                    |     r0 = r5;
    0x000036dc bl 0x57f8                                     |     fcn_000057f8 (r0, r1);
    0x000036e0 add.w r3, r5, 0x2000                          |     r3 = r5 + fcn.00002000;
    0x000036e4 ldr r3, [r3, 0x6c]                            |     r3 = *((r3 + 0x6c));
    0x000036e6 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000036e8 bne.w 0x310a                                  |         goto label_8;
                                                             |     }
    0x000036ec ldr.w r3, [pc, 0x534]                         |     
    0x000036f0 ldr.w r2, [sb, 0x4ac]                         |     r2 = *((sb + 0x4ac));
    0x000036f4 add r3, pc                                    |     
    0x000036f6 ldr r3, [r3, 0x34]                            |     r3 = *(0x7350);
    0x000036f8 cmp r2, r3                                    |     
                                                             |     if (r2 < r3) {
    0x000036fa blt.w 0x30d8                                  |         goto label_9;
                                                             |     }
    0x000036fe b 0x30de                                      |     goto label_6;
                                                             | label_100:
    0x00003700 str.w r0, [r3, 0x4b0]                         |     __asm ("str.w r0, [r3, 0x4b0]");
    0x00003704 mov r0, r5                                    |     r0 = r5;
    0x00003706 bl 0x5e90                                     |     fcn_00005e90 (r0, r1, r2, r3, r4);
    0x0000370a b 0x30de                                      |     goto label_6;
                                                             | label_90:
    0x0000370c bl 0x4554                                     |     fcn_00004554 (r0, r1);
    0x00003710 b 0x35ec                                      |     goto label_10;
                                                             | label_89:
    0x00003712 ldr.w r0, [pc, 0x514]                         |     
    0x00003716 add r0, pc                                    |     r0 = 0x7344;
    0x00003718 blx 0x1d60                                    |     fcn_00001d60 ();
    0x0000371a invalid                                       |     
    0x0000371c b 0x315e                                      |     goto label_11;
                                                             | label_81:
    0x0000371e mov.w r3, -1                                  |     r3 = -1;
    0x00003722 str r3, [sp, 0x48]                            |     *(arg_48h) = r3;
    0x00003724 mvn r3, 0x80000000                            |     r3 = ~0x80000000;
    0x00003728 mov r4, r3                                    |     r4 = r3;
    0x0000372a b.w 0x2e6c                                    |     goto label_12;
                                                             | label_73:
    0x0000372e cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00003730 beq.w 0x389e                                  |         goto label_102;
                                                             |     }
    0x00003734 ldr.w r4, [r2, 0x51c]                         |     r4 = *((r2 + 0x51c));
                                                             | label_25:
    0x00003738 ldr.w r2, [pc, 0x4f0]                         |     
    0x0000373c add r2, pc                                    |     
    0x0000373e ldr.w r2, [r2, 0x458]                         |     r2 = *(0x77c4);
    0x00003742 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00003744 beq.w 0x3898                                  |         goto label_103;
                                                             |     }
    0x00003748 ldr.w r7, [pc, 0x4e4]                         |     
    0x0000374c add r7, pc                                    |     r7 = 0x7380;
                                                             |     do {
    0x0000374e ldr.w r2, [pc, 0x4e4]                         |         
    0x00003752 add r2, pc                                    |         
    0x00003754 ldr.w r1, [r2, 0x4fc]                         |         r1 = *(0x7888);
    0x00003756 asrs r4, r7, 0x13                             |         r4 = r7 >> 0x13;
    0x00003758 ldr.w r5, [r2, 0x4e8]                         |         r5 = imp.__stack_chk_guard;
    0x0000375a strb r0, [r5, r3]                             |         *((r5 + r3)) = r0;
    0x0000375c ldr.w lr, [r2, 0x4ec]                         |         lr = "    -p postfile     File containing data to POST. Remember also to set -T\n";
    0x0000375e b 0x313a                                      |         goto label_13;
    0x00003760 ldr.w r2, [r2, 0x49c]                         |         r2 = *(0x7828);
    0x00003764 cmp r1, 0                                     |         
                                                             |         if (r1 == 0) {
    0x00003766 beq.w 0x3a1c                                  |             goto label_104;
                                                             |         }
                                                             | label_30:
    0x0000376a strd r2, r1, [sp, 0x10]                       |         __asm ("strd r2, r1, [sp, 0x10]");
    0x0000376e mov.w r1, 0x2000                              |         r1 = fcn.00002000;
    0x00003770 str r0, [r0, r4]                              |         *((r0 + r4)) = r0;
    0x00003772 ldr.w r2, [pc, 0x4c4]                         |         
    0x00003776 strd r5, lr, [sp, 8]                          |         __asm ("strd r5, lr, [sp, 8]");
    0x0000377a strd r4, r7, [sp]                             |         __asm ("strd r4, r7, [sp]");
    0x0000377e add r2, pc                                    |         
    0x00003780 ldr.w r2, [r2, 0x4f4]                         |         r2 = *(0x78b0);
    0x00003784 str r2, [sp, 0x18]                            |         *(arg_18h) = r2;
    0x00003786 ldr.w r2, [pc, 0x4b4]                         |         
    0x0000378a add r2, pc                                    |         r2 = 0x73cc;
    0x0000378c blx 0x20a8                                    |         r0 = fcn_000020a8 ();
    0x00003790 mov r3, r0                                    |         r3 = r0;
    0x00003792 b.w 0x2d94                                    |         goto label_14;
                                                             | label_65:
    0x00003796 ldr.w r1, [r4, 0x418]                         |         r1 = *((r4 + 0x418));
    0x0000379a ldr.w r0, [r4, 0x498]                         |         r0 = *((r4 + 0x498));
    0x0000379e blx 0x1ec4                                    |         SSL_ctrl ();
    0x000037a2 ldrh.w r3, [r4, 0x41c]                        |         r3 = *((r4 + 0x41c));
    0x000037a6 str.w r0, [r4, 0x528]                         |         __asm ("str.w r0, [r4, 0x528]");
    0x000037aa b.w 0x2c82                                    |         goto label_15;
                                                             | label_59:
    0x000037ae blx 0x1f64                                    |         fcn_00001f64 ();
    0x000037b2 b.w 0x2c04                                    |         goto label_16;
                                                             | label_77:
    0x000037b6 ldr.w fp, [sb, 0x49c]                         |         fp = *((sb + 0x49c));
    0x000037ba add.w r3, fp, 1                               |         r3 += arg_1h;
    0x000037be add r3, r0                                    |         r3 += r0;
    0x000037c0 mov r0, r3                                    |         r0 = r3;
    0x000037c2 str r3, [sp, 0x34]                            |         *(arg_34h) = r3;
    0x000037c4 blx 0x2084                                    |         fcn_00002084 ();
    0x000037c8 ldr r3, [sp, 0x34]                            |         r3 = *(arg_34h);
    0x000037ca mov r5, r0                                    |         r5 = r0;
    0x000037cc cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000037ce beq.w 0x3bca                                  |             goto label_105;
                                                             |         }
    0x000037d2 mov r1, r8                                    |         r1 = r8;
    0x000037d4 blx 0x1ea0                                    |         X509_getm_notAfter ();
    0x000037d8 ldr.w r1, [sb, 0x4a0]                         |         r1 = *((sb + 0x4a0));
    0x000037da asrs r0, r4, 0x12                             |         r0 = r4 >> 0x12;
    0x000037dc mov r2, fp                                    |         r2 = fp;
    0x000037de adds r0, r5, r4                               |         r0 = r5 + r4;
    0x000037e0 blx 0x2060                                    |         fcn_00002060 ();
    0x000037e2 ldc p0, c6, [lr], -0xf4                       |         __asm ("ldc p0, c6, [lr], -0xf4");
    0x000037e4 str r5, [r7]                                  |         *(r7) = r5;
    0x000037e6 b.w 0x2de8                                    |         goto label_17;
                                                             | label_72:
    0x000037ea ldr.w r2, [pc, 0x454]                         |         
    0x000037ee ldr.w r1, [r4, 0x4f4]                         |         r1 = *((r4 + 0x4f4));
    0x000037f2 ldr.w r0, [r4, 0x498]                         |         r0 = *((r4 + 0x498));
    0x000037f6 add r2, pc                                    |         r2 = 0x743c;
    0x000037f8 blx 0x1c48                                    |         apr_pstrcat ()
    0x000037fc str.w r0, [r4, 0x4f4]                         |         __asm ("str.w r0, [r4, 0x4f4]");
    0x00003800 b.w 0x2d2e                                    |         goto label_18;
                                                             | label_71:
    0x00003804 str r3, [sp, 4]                               |         var_4h = r3;
    0x00003806 ldr.w r3, [pc, 0x43c]                         |         
    0x0000380a ldr.w r2, [pc, 0x43c]                         |         
    0x0000380e add r3, pc                                    |         r3 = 0x7458;
    0x00003810 str r3, [sp]                                  |         *(sp) = r3;
    0x00003812 add r2, pc                                    |         r2 = 0x7460;
    0x00003814 ldr.w r3, [pc, 0x434]                         |         
    0x00003816 adds r4, 0x34                                 |         r4 += 0x34;
    0x00003818 ldr.w r1, [r4, 0x4f4]                         |         r1 = *((r4 + 0x4f4));
    0x0000381c ldr.w r0, [r4, 0x498]                         |         r0 = *((r4 + 0x498));
    0x00003820 add r3, pc                                    |         r3 = 0x7470;
    0x00003822 blx 0x1c48                                    |         apr_pstrcat ()
    0x00003826 str.w r0, [r4, 0x4f4]                         |         __asm ("str.w r0, [r4, 0x4f4]");
    0x00003828 lsls r4, r6, 0x13                             |         r4 = r6 << 0x13;
    0x0000382a b.w 0x2d20                                    |         goto label_19;
                                                             | label_66:
    0x0000382e ldr.w r1, [pc, 0x420]                         |         
    0x00003832 movs r0, 1                                    |         r0 = 1;
    0x00003834 ldr.w r2, [r4, 0x418]                         |         r2 = *((r4 + 0x418));
    0x00003838 add r1, pc                                    |         r1 = 0x748e;
    0x0000383a blx 0x2288                                    |         fcn_00002288 ();
    0x0000383e ldr.w r3, [r4, 0x510]                         |         r3 = *((r4 + 0x510));
    0x00003842 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00003844 bne.w 0x3a52                                  |             goto label_106;
                                                             |         }
                                                             | label_33:
    0x00003848 ldr.w r3, [pc, 0x408]                         |         
    0x0000384c add r3, pc                                    |         
    0x0000384e ldr r3, [r3, 0x38]                            |         r3 = *(0x74dc);
    0x00003850 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00003852 beq.w 0x3a4c                                  |             goto label_107;
                                                             |         }
    0x00003856 ldr.w r2, [pc, 0x400]                         |         
    0x0000385a add r2, pc                                    |         r2 = 0x74b8;
                                                             | label_32:
    0x0000385c ldr r1, [pc, 0x3fc]                           |         
    0x0000385e movs r0, 1                                    |         r0 = 1;
    0x00003860 add r1, pc                                    |         r1 = 0x74c0;
    0x00003862 blx 0x2288                                    |         fcn_00002288 ();
    0x00003866 ldr r0, [r6]                                  |         r0 = *(r6);
    0x00003868 blx 0x218c                                    |         fcn_0000218c ();
    0x0000386c b.w 0x2c94                                    |         goto label_20;
                                                             | label_61:
    0x00003870 ldr r1, [pc, 0x3ec]                           |         
    0x00003872 ldr.w r0, [r3, 0x4c0]                         |         r0 = *((r3 + 0x4c0));
    0x00003876 add r1, pc                                    |         r1 = 0x74da;
    0x00003878 blx 0x1d2c                                    |         SSL_CTX_set_info_callback ();
                                                             | label_42:
    0x0000387c b.w 0x2c1a                                    |         goto label_21;
                                                             | label_78:
    0x00003880 ldr.w r1, [r4, 0x528]                         |         r1 = *((r4 + 0x528));
    0x00003884 b.w 0x2e22                                    |         goto label_22;
                                                             | label_75:
    0x00003888 ldr r1, [pc, 0x3d8]                           |         
    0x0000388a add r1, pc                                    |         r1 = 0x74f2;
    0x0000388c b.w 0x2d6c                                    |         goto label_23;
                                                             | label_74:
    0x00003890 ldr.w r2, [r2, 0x430]                         |         r2 = *((r2 + 0x430));
    0x00003894 b.w 0x2d5a                                    |         goto label_24;
                                                             | label_103:
    0x00003898 ldr r7, [pc, 0x3cc]                           |         
    0x0000389a add r7, pc                                    |         r7 = 0x7506;
    0x0000389c b 0x374e                                      |         
                                                             |     } while (1);
                                                             | label_102:
    0x0000389e ldr.w r4, [r2, 0x430]                         |     r4 = *((r2 + 0x430));
    0x000038a2 b 0x3738                                      |     goto label_25;
                                                             | label_91:
    0x000038a4 ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x000038a8 movs r0, 1                                    |     r0 = 1;
    0x000038aa ldr.w r5, [r4, 0x438]                         |     r5 = *((r4 + 0x438));
    0x000038ae ldr r1, [pc, 0x3bc]                           |     
    0x000038b0 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000038b4 strd r3, r5, [sp]                             |     __asm ("strd r3, r5, [sp]");
    0x000038b8 add r1, pc                                    |     r1 = 0x752a;
    0x000038ba blx 0x2288                                    |     fcn_00002288 ();
    0x000038be b 0x321e                                      |     goto label_26;
                                                             | label_96:
    0x000038c0 ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x000038c4 movs r0, 1                                    |     r0 = 1;
    0x000038c6 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000038ca add.w r8, r4, 0x460                           |     r8 = r4 + 0x460;
    0x000038ce ldr r1, [pc, 0x3a0]                           |     
    0x000038d0 str r3, [sp]                                  |     *(sp) = r3;
    0x000038d2 vldr s15, [r4]                                |     __asm ("vldr s15, [r4]");
    0x000038d6 add r1, pc                                    |     r1 = 0x754c;
    0x000038d8 vldr d9, [pc, 0x324]                          |     __asm ("vldr d9, [0x00003c04]");
    0x000038dc ldr r5, [pc, 0x394]                           |     
    0x000038de vcvt.f64.s32 d16, s15                         |     __asm ("vcvt.f64.s32 d16, s15");
    0x000038e2 add r5, pc                                    |     r5 = 0x755a;
    0x000038e4 vdiv.f64 d17, d16, d8                         |     __asm ("vdiv.f64 d17, d16, d8");
    0x000038e8 vstr d17, [sp, 8]                             |     __asm ("vstr d17, [sp, 8]");
    0x000038ec blx 0x2288                                    |     fcn_00002288 ();
    0x000038f0 ldrd r0, r1, [r8]                             |     __asm ("ldrd r0, r1, [r8]");
    0x000038f4 bl 0x7334                                     |     r0 = fcn_00007334 (r0, r1, r2);
    0x000038f8 vmov d16, r0, r1                              |     __asm ("vmov d16, r0, r1");
    0x000038fc mov r1, r5                                    |     r1 = r5;
    0x000038fe ldr.w r6, [r4, 0x4e4]                         |     r6 = *((r4 + 0x4e4));
    0x00003902 movs r0, 1                                    |     r0 = 1;
    0x00003904 vmul.f64 d16, d16, d9                         |     __asm ("vmul.f64 d16, d16, d9");
    0x00003908 mov r3, r6                                    |     r3 = r6;
    0x0000390a str r6, [sp]                                  |     *(sp) = r6;
    0x0000390c ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x00003910 vdiv.f64 d17, d16, d8                         |     __asm ("vdiv.f64 d17, d16, d8");
    0x00003914 vstr d17, [sp, 8]                             |     __asm ("vstr d17, [sp, 8]");
    0x00003916 subs r2, r0, r4                               |     r2 = r0 - r4;
    0x00003918 blx 0x2288                                    |     fcn_00002288 ();
    0x0000391c ldr.w r3, [r4, 0x468]                         |     r3 = *((r4 + 0x468));
    0x00003920 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003922 beq.w 0x330c                                  |         goto label_27;
                                                             |     }
    0x00003926 add.w r7, r4, 0x470                           |     r7 = r4 + 0x470;
    0x0000392a ldr r6, [pc, 0x34c]                           |     
    0x0000392c ldrd r0, r1, [r7]                             |     __asm ("ldrd r0, r1, [r7]");
    0x00003930 bl 0x7334                                     |     r0 = fcn_00007334 (r0, r1, r2);
    0x00003934 vmov d16, r0, r1                              |     __asm ("vmov d16, r0, r1");
    0x00003938 add r6, pc                                    |     r6 = 0x75b6;
    0x0000393a ldr.w sb, [r4, 0x4e4]                         |     sb = *((r4 + 0x4e4));
    0x0000393e mov r1, r6                                    |     r1 = r6;
    0x00003940 vmul.f64 d16, d16, d9                         |     __asm ("vmul.f64 d16, d16, d9");
    0x00003944 movs r0, 1                                    |     r0 = 1;
    0x00003946 ldr r5, [pc, 0x334]                           |     
    0x00003948 mov r3, sb                                    |     r3 = sb;
    0x0000394a str.w sb, [sp]                                |     __asm ("str.w sb, [sp]");
    0x0000394e ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x00003952 add r5, pc                                    |     r5 = 0x75d4;
    0x00003954 vdiv.f64 d17, d16, d8                         |     __asm ("vdiv.f64 d17, d16, d8");
    0x00003958 vstr d17, [sp, 8]                             |     __asm ("vstr d17, [sp, 8]");
    0x0000395c blx 0x2288                                    |     fcn_00002288 ();
    0x00003960 ldr.w r2, [r4, 0x460]                         |     r2 = *((r4 + 0x460));
    0x00003964 ldr.w r0, [r4, 0x470]                         |     r0 = *((r4 + 0x470));
    0x00003968 ldr.w r3, [r4, 0x464]                         |     r3 = *((r4 + 0x464));
    0x0000396c ldr.w r1, [r4, 0x474]                         |     r1 = *((r4 + 0x474));
    0x00003970 adds r0, r2, r0                               |     r0 = r2 + r0;
    0x00003972 ldr.w r6, [r4, 0x4e4]                         |     r6 = *((r4 + 0x4e4));
    0x00003976 adc.w r1, r3, r1                              |     __asm ("adc.w r1, r3, r1");
    0x0000397a bl 0x7334                                     |     fcn_00007334 (r0, r1, r2);
    0x0000397c ldc2l p12, c14, [fp], {0x41}                  |     __asm ("ldc2l p12, c14, [fp], {0x41}");
    0x00003980 lsrs r0, r6, 0xc                              |     r0 = r6 >> 0xc;
    0x00003982 mov r3, r6                                    |     r3 = r6;
    0x00003984 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x00003988 mov r1, r5                                    |     r1 = r5;
    0x0000398a vmul.f64 d16, d16, d9                         |     __asm ("vmul.f64 d16, d16, d9");
    0x0000398e movs r0, 1                                    |     r0 = 1;
    0x00003990 str r6, [sp]                                  |     *(sp) = r6;
    0x00003992 vdiv.f64 d17, d16, d8                         |     __asm ("vdiv.f64 d17, d16, d8");
    0x00003996 vstr d17, [sp, 8]                             |     __asm ("vstr d17, [sp, 8]");
    0x0000399a blx 0x2288                                    |     fcn_00002288 ();
    0x0000399e b 0x330c                                      |     goto label_27;
                                                             | label_95:
    0x000039a0 add.w r2, r4, 0x470                           |     r2 = r4 + 0x470;
    0x000039a4 ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x000039a8 ldrd r6, r7, [r2]                             |     __asm ("ldrd r6, r7, [r2]");
    0x000039ac movs r0, 1                                    |     r0 = 1;
    0x000039ae ldr r1, [pc, 0x2d0]                           |     
    0x000039b0 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000039b4 str r3, [sp]                                  |     *(sp) = r3;
    0x000039b6 add r1, pc                                    |     r1 = 0x763c;
    0x000039b8 strd r6, r7, [sp, 8]                          |     __asm ("strd r6, r7, [sp, 8]");
    0x000039bc blx 0x2288                                    |     fcn_00002288 ();
    0x000039c0 b 0x32dc                                      |     goto label_28;
                                                             | label_92:
    0x000039c2 ldr.w r0, [r4, 0x448]                         |     r0 = *((r4 + 0x448));
    0x000039c6 ldr.w r1, [r4, 0x44c]                         |     r1 = *((r4 + 0x44c));
    0x000039ca ldr.w r5, [r4, 0x444]                         |     r5 = *((r4 + 0x444));
    0x000039cc strb r4, [r0, r1]                             |     *((r0 + r1)) = r4;
    0x000039ce ldr.w r3, [r4, 0x4e4]                         |     r3 = *((r4 + 0x4e4));
    0x000039d2 ldr.w r2, [r4, 0x4e0]                         |     r2 = *((r4 + 0x4e0));
    0x000039d6 strd r1, r0, [sp, 4]                          |     __asm ("strd r1, r0, [sp, 4]");
    0x000039da movs r0, 1                                    |     r0 = 1;
    0x000039dc ldr r1, [pc, 0x2a4]                           |     
    0x000039de str r5, [sp]                                  |     *(sp) = r5;
    0x000039e0 add r1, pc                                    |     r1 = 0x7668;
    0x000039e2 blx 0x2288                                    |     fcn_00002288 ();
    0x000039e6 b 0x3292                                      |     goto label_29;
                                                             | label_94:
    0x000039e8 ldr.w r3, [r2, 0x4e4]                         |     r3 = *((r2 + 0x4e4));
    0x000039ec movs r0, 1                                    |     r0 = 1;
    0x000039ee ldr.w r4, [r2, 0x45c]                         |     r4 = *((r2 + 0x45c));
    0x000039f2 ldr r1, [pc, 0x294]                           |     
    0x000039f4 ldr.w r2, [r2, 0x4e0]                         |     r2 = *((r2 + 0x4e0));
    0x000039f6 movs r4, 0xe0                                 |     r4 = 0xe0;
    0x000039f8 strd r3, r4, [sp]                             |     __asm ("strd r3, r4, [sp]");
    0x000039fa adds r4, 0                                    |     r4 += 0;
    0x000039fc add r1, pc                                    |     r1 = 0x768a;
    0x000039fe blx 0x2288                                    |     fcn_00002288 ();
    0x00003a00 mcrr p4, 5, lr, r4, c4                        |     __asm ("mcrr p4, 5, lr, r4, c4");
                                                             | label_93:
    0x00003a04 ldr.w r3, [r2, 0x4e4]                         |     r3 = *((r2 + 0x4e4));
    0x00003a08 movs r0, 1                                    |     r0 = 1;
    0x00003a0a ldr r1, [pc, 0x280]                           |     
    0x00003a0c ldr.w r2, [r2, 0x4e0]                         |     r2 = *((r2 + 0x4e0));
    0x00003a10 strd r3, r4, [sp]                             |     __asm ("strd r3, r4, [sp]");
    0x00003a14 add r1, pc                                    |     r1 = 0x76a6;
    0x00003a16 blx 0x2288                                    |     fcn_00002288 ();
    0x00003a18 ldc p4, c14, [r8], -0x104                     |     __asm ("ldc p4, c14, [r8], -0x104");
                                                             | label_104:
    0x00003a1c ldr r1, [pc, 0x270]                           |     
    0x00003a1e add r1, pc                                    |     r1 = 0x76b2;
    0x00003a20 b 0x376a                                      |     goto label_30;
                                                             | label_68:
    0x00003a22 ldr r3, [pc, 0x270]                           |     
    0x00003a24 ldr r2, [pc, 0x270]                           |     
    0x00003a26 add r3, pc                                    |     r3 = 0x76c0;
    0x00003a28 strd r3, r0, [sp, 4]                          |     __asm ("strd r3, r0, [sp, 4]");
    0x00003a2c add r2, pc                                    |     r2 = 0x76c8;
    0x00003a2e ldr.w r3, [r4, 0x524]                         |     r3 = *((r4 + 0x524));
    0x00003a32 str r3, [sp]                                  |     *(sp) = r3;
    0x00003a34 ldr.w r3, [r4, 0x520]                         |     r3 = *((r4 + 0x520));
    0x00003a38 ldr.w r1, [r4, 0x4f4]                         |     r1 = *((r4 + 0x4f4));
    0x00003a3c ldr.w r0, [r4, 0x498]                         |     r0 = *((r4 + 0x498));
    0x00003a40 blx 0x1c48                                    |     apr_pstrcat ()
    0x00003a44 str.w r0, [r4, 0x4f4]                         |     __asm ("str.w r0, [r4, 0x4f4]");
    0x00003a46 lsls r4, r6, 0x13                             |     r4 = r6 << 0x13;
    0x00003a48 b.w 0x2cd8                                    |     goto label_31;
                                                             | label_107:
    0x00003a4c ldr r2, [pc, 0x24c]                           |     
    0x00003a4e add r2, pc                                    |     r2 = 0x76ee;
    0x00003a50 b 0x385c                                      |     goto label_32;
                                                             | label_106:
    0x00003a52 ldr r1, [pc, 0x24c]                           |     
    0x00003a54 movs r0, 1                                    |     r0 = 1;
    0x00003a56 ldr.w r3, [r4, 0x50c]                         |     r3 = *((r4 + 0x50c));
    0x00003a5a ldr.w r2, [r4, 0x4f0]                         |     r2 = *((r4 + 0x4f0));
    0x00003a5e add r1, pc                                    |     r1 = 0x7704;
    0x00003a60 blx 0x2288                                    |     fcn_00002288 ();
    0x00003a64 b 0x3848                                      |     goto label_33;
                                                             | label_70:
    0x00003a66 ldr.w r3, [r3, 0x498]                         |     r3 = *((r3 + 0x498));
    0x00003a6a movs r2, 0                                    |     r2 = 0;
    0x00003a6c mov r0, sl                                    |     r0 = sl;
    0x00003a6e blx 0x1cfc                                    |     apr_ipsubnet_create ();
    0x00003a70 strd r2, r8, [r6, -0x0]                       |     __asm ("strd r2, r8, [r6, -0x0]");
                                                             |     if (r2 == 0) {
    0x00003a74 beq.w 0x2d08                                  |         goto label_34;
                                                             |     }
    0x00003a78 b.w 0x2d12                                    |     goto label_35;
                                                             | label_69:
    0x00003a7c ldr.w r2, [r3, 0x418]                         |     r2 = *((r3 + 0x418));
    0x00003a80 str.w r2, [r3, 0x42c]                         |     __asm ("str.w r2, [r3, 0x42c]");
    0x00003a84 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00003a86 bne.w 0x2cf8                                  |         goto label_36;
                                                             |     }
    0x00003a8a b.w 0x2d12                                    |     goto label_35;
                                                             |     if (r1 != 0) {
                                                             | label_53:
    0x00003a8e cbnz r1, 0x3acc                               |         goto label_108;
                                                             |     }
    0x00003a90 cmp r2, 0x50                                  |     
                                                             |     if (r2 == 0x50) {
    0x00003a92 beq.w 0x2b08                                  |         goto label_37;
                                                             |     }
    0x00003a94 add r0, sp, 0xe4                              |     r0 = sp + 0xe4;
                                                             |     do {
    0x00003a96 ldr r3, [pc, 0x20c]                           |         
    0x00003a98 ldr r1, [pc, 0x20c]                           |         
    0x00003a9a add r3, pc                                    |         r3 = 0x7744;
    0x00003a9c ldrh.w r2, [r3, 0x41c]                        |         r2 = *((r3 + 0x41c));
    0x00003aa0 add r1, pc                                    |         r1 = 0x774c;
    0x00003aa2 ldr.w r0, [r3, 0x498]                         |         r0 = *(0x7bdc);
    0x00003aa6 blx 0x1d84                                    |         fcn_00001d84 ();
    0x00003aaa b.w 0x2b0e                                    |         goto label_38;
                                                             | label_54:
    0x00003aae movs r2, 0x50                                 |         r2 = 0x50;
    0x00003ab0 strh.w r2, [r3, 0x41c]                        |         *((r3 + 0x41c)) = r2;
    0x00003ab4 b.w 0x2b08                                    |         goto label_37;
                                                             | label_52:
    0x00003ab8 ldr r1, [pc, 0x1f0]                           |         
    0x00003aba ldr.w r2, [r5, 0x418]                         |         r2 = *((r5 + 0x418));
    0x00003abe ldr.w r0, [r5, 0x498]                         |         r0 = *((r5 + 0x498));
    0x00003ac2 add r1, pc                                    |         r1 = 0x7772;
    0x00003ac4 blx 0x1d84                                    |         fcn_00001d84 ();
    0x00003ac8 b.w 0x2ae2                                    |         goto label_39;
                                                             | label_108:
    0x00003acc movw r3, 0x1bb                                |         r3 = 0x1bb;
    0x00003ad0 cmp r2, r3                                    |         
    0x00003ad2 bne 0x3a96                                    |         
                                                             |     } while (r2 != r3);
    0x00003ad4 b.w 0x2b08                                    |     goto label_37;
                                                             | label_44:
    0x00003ad8 blx 0x1f24                                    |     SSL_CTX_new ();
                                                             | label_76:
    0x00003adc ldr r0, [pc, 0x1d0]                           |     
    0x00003ade add r0, pc                                    |     r0 = 0x7792;
    0x00003ae0 bl 0x3ee8                                     |     fcn_00003ee8 (r0);
                                                             | label_56:
    0x00003ae4 ldr r2, [pc, 0x1cc]                           |     
    0x00003ae6 ldr r3, [pc, 0x1d0]                           |     r3 = *(0x3cba);
    0x00003ae8 ldr.w r0, [r8]                                |     r0 = *(r8);
    0x00003aec add r2, pc                                    |     r2 = 0x77a4;
    0x00003aee b.w 0x2982                                    |     goto label_40;
                                                             | label_55:
    0x00003af2 ldr r2, [pc, 0x1c4]                           |     r2 = *(0x3cba);
    0x00003af4 ldr.w r0, [r8]                                |     r0 = *(r8);
    0x00003af8 ldr.w r1, [sb, r2]                            |     r1 = *((sb + r2));
    0x00003afc ldr r2, [pc, 0x1bc]                           |     
    0x00003afe str r3, [sp]                                  |     *(sp) = r3;
    0x00003b00 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00003b02 add r2, pc                                    |     r2 = 0x77c2;
    0x00003b04 ldr r0, [r1]                                  |     r0 = *(r1);
    0x00003b06 movs r1, 1                                    |     r1 = 1;
    0x00003b08 blx 0x1da8                                    |     fcn_00001da8 ();
    0x00003b0c ldr.w r3, [r8]                                |     r3 = *(r8);
    0x00003b10 ldr r0, [r3]                                  |     r0 = *(r3);
    0x00003b12 bl 0x3f38                                     |     fcn_00003f38 (r0);
                                                             | label_58:
    0x00003b16 ldr r1, [pc, 0x1a8]                           |     
    0x00003b18 ldr.w r0, [r4, 0x490]                         |     r0 = *((r4 + 0x490));
    0x00003b1c add r1, pc                                    |     r1 = 0x77e2;
    0x00003b1e blx 0x1e7c                                    |     SSL_is_server ();
    0x00003b22 ldr.w r0, [r4, 0x490]                         |     r0 = *((r4 + 0x490));
    0x00003b26 blx 0x2264                                    |     fcn_00002264 ();
    0x00003b2a movs r0, 1                                    |     r0 = 1;
    0x00003b2c blx 0x1d38                                    |     exit (r0);
                                                             | label_60:
    0x00003b30 ldr r4, [pc, 0x190]                           |     
    0x00003b32 ldr r1, [pc, 0x194]                           |     
    0x00003b34 add r4, pc                                    |     r4 = 0x77fc;
    0x00003b36 ldr.w r2, [r4, 0x514]                         |     r2 = *(0x7d10);
    0x00003b3a add r1, pc                                    |     r1 = 0x7808;
                                                             | label_41:
    0x00003b3c ldr.w r0, [r4, 0x490]                         |     r0 = *((r4 + 0x490));
    0x00003b40 blx 0x1e7c                                    |     SSL_is_server ();
    0x00003b44 ldr.w r0, [r4, 0x490]                         |     r0 = *((r4 + 0x490));
    0x00003b48 blx 0x2264                                    |     fcn_00002264 ();
    0x00003b4c movs r0, 1                                    |     r0 = 1;
    0x00003b4e blx 0x1d38                                    |     exit (r0);
                                                             | label_45:
    0x00003b52 ldr r2, [pc, 0x178]                           |     
    0x00003b54 ldr r3, [pc, 0x160]                           |     r3 = *(0x3cb8);
    0x00003b56 ldr.w r0, [r8]                                |     r0 = *(r8);
    0x00003b5a add r2, pc                                    |     r2 = "    -B address      Address to bind to when making outgoing connections\n";
    0x00003b5c b.w 0x2982                                    |     goto label_40;
                                                             | label_82:
    0x00003b60 ldr r0, [pc, 0x16c]                           |     
    0x00003b62 mov r1, r4                                    |     r1 = r4;
    0x00003b64 add r0, pc                                    |     r0 = 0x7838;
    0x00003b66 bl 0x42b4                                     |     fcn_000042b4 (r0, r1);
                                                             | label_80:
    0x00003b6a ldr r2, [pc, 0x168]                           |     
    0x00003b6c ldr.w r3, [r4, 0x528]                         |     r3 = *((r4 + 0x528));
    0x00003b70 add r2, pc                                    |     r2 = 0x784a;
                                                             |     do {
    0x00003b72 add r4, sp, 0x6c                              |         r4 += arg_6ch;
    0x00003b74 movs r1, 0x78                                 |         r1 = 0x78;
    0x00003b76 mov r0, r4                                    |         r0 = r4;
    0x00003b78 blx 0x20a8                                    |         fcn_000020a8 ();
    0x00003b7c mov r1, r6                                    |         r1 = r6;
    0x00003b7e mov r0, r4                                    |         r0 = r4;
    0x00003b80 bl 0x42b4                                     |         fcn_000042b4 (r0, r1);
                                                             | label_79:
    0x00003b84 ldr r2, [pc, 0x150]                           |         
    0x00003b86 ldr.w r3, [r4, 0x4b4]                         |         r3 = *((r4 + 0x4b4));
    0x00003b8a add r2, pc                                    |         r2 = 0x7866;
    0x00003b8c b 0x3b72                                      |         
                                                             |     } while (1);
                                                             | label_67:
    0x00003b8e ldr r0, [pc, 0x14c]                           |     
    0x00003b90 mov r1, r6                                    |     r1 = r6;
    0x00003b92 add r0, pc                                    |     r0 = 0x7874;
    0x00003b94 bl 0x42b4                                     |     fcn_000042b4 (r0, r1);
    0x00003b98 ldr r0, [pc, 0x144]                           |     
    0x00003b9a add r0, pc                                    |     r0 = 0x787e;
    0x00003b9c bl 0x3ee8                                     |     fcn_00003ee8 (r0);
                                                             | label_63:
    0x00003ba0 ldr r1, [pc, 0x140]                           |     
    0x00003ba2 ldr.w r2, [r4, 0x518]                         |     r2 = *((r4 + 0x518));
    0x00003ba6 add r1, pc                                    |     r1 = 0x788e;
    0x00003ba8 b 0x3b3c                                      |     goto label_41;
                                                             | label_62:
    0x00003baa ldr r1, [pc, 0x13c]                           |     
    0x00003bac ldr.w r2, [r4, 0x518]                         |     r2 = *((r4 + 0x518));
    0x00003bb0 add r1, pc                                    |     r1 = 0x789e;
    0x00003bb2 b 0x3b3c                                      |     goto label_41;
                                                             | label_64:
    0x00003bb4 ldr r1, [pc, 0x134]                           |     
    0x00003bb6 ldr.w r2, [r4, 0x518]                         |     r2 = *((r4 + 0x518));
    0x00003bba ldr.w r0, [r4, 0x490]                         |     r0 = *((r4 + 0x490));
    0x00003bbe add r1, pc                                    |     r1 = 0x78ae;
    0x00003bc0 blx 0x1e7c                                    |     r0 = SSL_is_server ();
    0x00003bc2 ldrd r2, r0, [ip, -0x4]                       |     __asm ("ldrd r2, r0, [ip, -0x4]");
    0x00003bc6 blx 0x1d38                                    |     exit (r0);
                                                             | label_105:
    0x00003bca ldr r1, [sp, 0x4c]                            |     r1 = *(arg_4ch);
    0x00003bcc ldr r2, [pc, 0x120]                           |     
    0x00003bce ldr r0, [r1]                                  |     r0 = *(r1);
    0x00003bd0 movs r1, 1                                    |     r1 = 1;
    0x00003bd2 add r2, pc                                    |     r2 = 0x78c6;
    0x00003bd4 blx 0x1da8                                    |     fcn_00001da8 ();
    0x00003bd8 movs r0, 1                                    |     r0 = 1;
    0x00003bda blx 0x1d38                                    |     exit (r0);
    0x00003bde ldr r0, [pc, 0x114]                           |     
    0x00003be0 add r0, pc                                    |     r0 = 0x78da;
    0x00003be2 bl 0x3ee8                                     |     fcn_00003ee8 (r0);
    0x00003be6 ldr r0, [pc, 0x110]                           |     
    0x00003be8 add r0, pc                                    |     
    0x00003bea bl 0x3ee8                                     |     fcn_00003ee8 (r0);
    0x00003bec invalid                                       |     
    0x00003bf0 add r0, pc                                    |     r0 = 0xb4da;
    0x00003bf2 bl 0x3ee8                                     |     fcn_00003ee8 (r0);
    0x00003bf6 ldr r0, [pc, 0x108]                           |     
    0x00003bf8 add r0, pc                                    |     r0 = 0x78fe;
    0x00003bfa bl 0x3ee8                                     |     fcn_00003ee8 (r0);
    0x00003bfe nop                                           |     
    0x00003c00 movs r0, r0                                   |     
    0x00003c02 movs r0, r0                                   |     
    0x00003c04 movs r0, r0                                   |     
    0x00003c06 subs r7, 0x50                                 |     r7 -= 0x50;
    0x00003c08 ldr r2, [r3, 0x18]                            |     r2 = *((r3 + 0x18));
    0x00003c0a movs r0, r0                                   |     
    0x00003c0c ldr r6, [r5, 0x18]                            |     r6 = *((r5 + 0x18));
    0x00003c0e movs r0, r0                                   |     
    0x00003c10 ldr r2, [r6, 0x1c]                            |     r2 = *((r6 + 0x1c));
    0x00003c12 movs r0, r0                                   |     
    0x00003c14 ldrh r4, [r1, 0x14]                           |     r4 = *((r1 + 0x14));
    0x00003c16 movs r0, r0                                   |     
    0x00003c18 ldrh r0, [r7, 0x12]                           |     r0 = *((r7 + 0x12));
    0x00003c1a movs r0, r0                                   |     
    0x00003c1c ldrh r6, [r3, r3]                             |     r6 = *((r3 + r3));
    0x00003c1e movs r0, r0                                   |     
    0x00003c20 ldrh r6, [r6, r3]                             |     r6 = *((r6 + r3));
    0x00003c22 movs r0, r0                                   |     
    0x00003c24 ldrh r0, [r2, 8]                              |     r0 = *((r2 + 8));
    0x00003c26 movs r0, r0                                   |     
    0x00003c28 str r2, [r6, 8]                               |     *((r6 + 8)) = r2;
    0x00003c2a movs r0, r0                                   |     
    0x00003c2c ldrh r0, [r0, 0xa]                            |     r0 = *((r0 + 0xa));
    0x00003c2e movs r0, r0                                   |     
    0x00003c30 ldrh r4, [r6, r6]                             |     r4 = *((r6 + r6));
    0x00003c32 movs r0, r0                                   |     
    0x00003c34 ldrh r2, [r5, 8]                              |     r2 = *((r5 + 8));
    0x00003c36 movs r0, r0                                   |     
    0x00003c38 ldrh r6, [r7, 6]                              |     r6 = *((r7 + 6));
    0x00003c3a movs r0, r0                                   |     
    0x00003c3c ldrsh r2, [r7, r5]                            |     r2 = *((r7 + r5));
    0x00003c3e movs r0, r0                                   |     
    0x00003c40 ldrsh r2, [r4, r3]                            |     r2 = *((r4 + r3));
    0x00003c42 movs r0, r0                                   |     
    0x00003c44 ldrsh r2, [r6, r3]                            |     r2 = *((r6 + r3));
    0x00003c46 movs r0, r0                                   |     
    0x00003c48 ldrsh r2, [r5, r2]                            |     r2 = *((r5 + r2));
    0x00003c4a movs r0, r0                                   |     
    0x00003c4c strb r4, [r5, r7]                             |     *((r5 + r7)) = r4;
    0x00003c4e movs r0, r0                                   |     
    0x00003c50 ldrsh r0, [r5, r0]                            |     r0 = *((r5 + r0));
    0x00003c52 movs r0, r0                                   |     
    0x00003c54 strh r0, [r7, 0x3c]                           |     *((r7 + 0x3c)) = r0;
    0x00003c56 movs r0, r0                                   |     
    0x00003c58 ldr r2, [r0, r5]                              |     r2 = *(0x78fe);
    0x00003c5a movs r0, r0                                   |     
    0x00003c5c ldrsh r0, [r5, r0]                            |     r0 = *((r5 + r0));
    0x00003c5e movs r0, r0                                   |     
    0x00003c60 subs r7, r1, 2                                |     r7 = r1 - 2;
    0x00003c62 movs r0, r0                                   |     
    0x00003c64 ldr r2, [r7, r7]                              |     r2 = *((r7 + r7));
    0x00003c66 movs r0, r0                                   |     
    0x00003c68 ldr r2, [r5, r7]                              |     r2 = *((r5 + r7));
    0x00003c6a movs r0, r0                                   |     
    0x00003c6c str r4, [r5, 8]                               |     *((r5 + 8)) = r4;
    0x00003c6e movs r0, r0                                   |     
    0x00003c70 str r6, [r3, 0x40]                            |     *((r3 + 0x40)) = r6;
    0x00003c72 movs r0, r0                                   |     
    0x00003c74 str r6, [r4, 0x44]                            |     *((r4 + 0x44)) = r6;
    0x00003c76 movs r0, r0                                   |     
    0x00003c78 str r4, [r5, 0x44]                            |     *((r5 + 0x44)) = r4;
    0x00003c7a movs r0, r0                                   |     
    0x00003c7c str r2, [r4, 0x48]                            |     *((r4 + 0x48)) = r2;
    0x00003c7e movs r0, r0                                   |     
    0x00003c80 str r6, [r2, 0x28]                            |     *((r2 + 0x28)) = r6;
    0x00003c82 movs r0, r0                                   |     
    0x00003c84 str r0, [r4, 0x10]                            |     *((r4 + 0x10)) = r0;
    0x00003c86 movs r0, r0                                   |     
    0x00003c88 str r0, [r5, 0x18]                            |     *((r5 + 0x18)) = r0;
    0x00003c8a movs r0, r0                                   |     
    0x00003c8c str r0, [r0, 0x14]                            |     *((r0 + 0x14)) = r0;
    0x00003c8e movs r0, r0                                   |     
    0x00003c90 ldr r6, [r7, r3]                              |     r6 = *((r7 + r3));
    0x00003c92 movs r0, r0                                   |     
    0x00003c94 ldrb r2, [r3, r3]                             |     r2 = *((r3 + r3));
    0x00003c96 movs r0, r0                                   |     
    0x00003c98 ldrb r0, [r1, r2]                             |     r0 = *((r1 + r2));
    0x00003c9a movs r0, r0                                   |     
    0x00003c9c ldr r6, [r5, r2]                              |     r6 = *((r5 + r2));
    0x00003c9e movs r0, r0                                   |     
    0x00003ca0 ldrb r6, [r2, r0]                             |     r6 = *((r2 + r0));
    0x00003ca2 movs r0, r0                                   |     
    0x00003ca4 strh r2, [r4, 0x2e]                           |     *((r4 + 0x2e)) = r2;
    0x00003ca6 movs r0, r0                                   |     
    0x00003ca8 ldrh r0, [r6, r1]                             |     r0 = *((r6 + r1));
    0x00003caa movs r0, r0                                   |     
    0x00003cac ldrh r6, [r0, r1]                             |     r6 = *((r0 + r1));
    0x00003cae movs r0, r0                                   |     
    0x00003cb0 ldrb r2, [r5, r1]                             |     r2 = *((r5 + r1));
    0x00003cb2 movs r0, r0                                   |     
    0x00003cb4 ldrh r0, [r2, r1]                             |     r0 = *((r2 + r1));
    0x00003cb6 movs r0, r0                                   |     
    0x00003cb8 lsls r4, r1, 9                                |     r4 = r1 << 9;
    0x00003cba movs r0, r0                                   |     
    0x00003cbc ldrh r2, [r2, r0]                             |     r2 = *((r2 + r0));
    0x00003cbe movs r0, r0                                   |     
    0x00003cc0 ldrh r0, [r5, r1]                             |     r0 = *((r5 + r1));
    0x00003cc2 movs r0, r0                                   |     
    0x00003cc4 strh r0, [r1, 0x2a]                           |     *((r1 + 0x2a)) = r0;
    0x00003cc6 movs r0, r0                                   |     
    0x00003cc8 ldrh r6, [r5, r1]                             |     r6 = *((r5 + r1));
    0x00003cca movs r0, r0                                   |     
    0x00003ccc ldr r6, [r4, r5]                              |     r6 = *((r4 + r5));
    0x00003cce movs r0, r0                                   |     
    0x00003cd0 ldrb r0, [r7, r0]                             |     r0 = *((r7 + r0));
    0x00003cd2 movs r0, r0                                   |     
    0x00003cd4 ldrb r4, [r1, r0]                             |     r4 = *((r1 + r0));
    0x00003cd6 movs r0, r0                                   |     
    0x00003cd8 ldrh r2, [r6, r7]                             |     r2 = *((r6 + r7));
    0x00003cda movs r0, r0                                   |     
    0x00003cdc ldrh r6, [r0, r4]                             |     r6 = *((r0 + r4));
    0x00003cde movs r0, r0                                   |     
    0x00003ce0 ldrsb r6, [r3, r7]                            |     r6 = *((r3 + r7));
    0x00003ce2 movs r0, r0                                   |     
    0x00003ce4 ldrh r2, [r2, r1]                             |     r2 = *((r2 + r1));
    0x00003ce6 movs r0, r0                                   |     
    0x00003ce8 ldrh r0, [r4, r0]                             |     r0 = *((r4 + r0));
    0x00003cea movs r0, r0                                   |     
    0x00003cec ldrh r2, [r4, r1]                             |     r2 = *((r4 + r1));
    0x00003cee movs r0, r0                                   |     
    0x00003cf0 cmp r6, r4                                    |     
    0x00003cf2 movs r0, r0                                   |     
    0x00003cf4 ldrsb r4, [r5, r7]                            |     r4 = *((r5 + r7));
    0x00003cf6 movs r0, r0                                   |     
    0x00003cf8 ldrsb r4, [r5, r5]                            |     r4 = *((r5 + r5));
    0x00003cfa movs r0, r0                                   |     
    0x00003cfc ldr r4, [r3, r0]                              |     r4 = *((r3 + r0));
    0x00003cfe movs r0, r0                                   |     
    0x00003d00 ldrsb r4, [r4, r6]                            |     r4 = *((r4 + r6));
    0x00003d02 movs r0, r0                                   |     
    0x00003d38 adds r0, 0x14                                 |     r0 += 0x14;
    0x00003d3a b 0x387c                                      |     goto label_42;
                                                             | }

[*] Function strcat used 4 times ab