[*] Binary protection state of libcurl.so
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function system tear down of libcurl.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x38b40 */
| #include <stdint.h>
|
; (fcn) dbg.__udivmoddi4 () | void dbg_udivmoddi4 (int32_t arg_28h, uint32_t arg1, uint32_t arg2) {
| UDItype * rp;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
| /* UDItype __udivmoddi4(UDItype n,UDItype d,UDItype * rp); */
0x00038b40 cmp r1, r3 |
0x00038b44 push {r0, r1, r4, r5, r6, r7, r8, sl, fp, lr} |
0x00038b48 ldr r8, [sp, 0x28] | r8 = *(arg_28h);
0x00038b4c cmpeq r0, r2 | __asm ("cmpeq r0, r2");
0x00038b50 mov sl, r0 | sl = r0;
0x00038b54 mov fp, r1 |
| if (r1 <= r3) {
0x00038b58 blo 0x38c8c | goto label_2;
| }
0x00038b5c cmp r3, 0 |
0x00038b60 mov r0, r2 | r0 = r2;
0x00038b64 mov r1, r3 | r1 = r3;
0x00038b68 clzne r2, r3 | __asm ("clzne r2, r3");
0x00038b6c clzeq r3, r0 | __asm ("clzeq r3, r0");
| if (r3 != 0) {
0x00038b70 addeq r2, r3, 0x20 | r2 = r3 + 0x20;
| }
0x00038b74 cmp fp, 0 |
0x00038b78 clzeq r3, sl | __asm ("clzeq r3, sl");
| if (fp != 0) {
0x00038b7c addeq r3, r3, 0x20 | r3 += 0x20;
| }
0x00038b80 clzne r3, fp | __asm ("clzne r3, fp");
0x00038b84 sub r3, r2, r3 | r3 = r2 - r3;
0x00038b88 lsl r7, r1, r3 | r7 = r1 << r3;
0x00038b8c sub ip, r3, 0x20 |
0x00038b90 orr r7, r7, r0, lsl ip | r7 |= (r0 << ip);
0x00038b94 rsb r2, r3, 0x20 | r2 = 0x20 - r3;
0x00038b98 orr r7, r7, r0, lsr r2 | r7 |= (r0 >> r2);
0x00038b9c lsl r6, r0, r3 | r6 = r0 << r3;
0x00038ba0 cmp fp, r7 |
0x00038ba4 cmpeq sl, r6 | __asm ("cmpeq sl, r6");
| if (fp <= r7) {
0x00038ba8 blo 0x38c70 | goto label_3;
| }
0x00038bac mov r1, 0 | r1 = 0;
0x00038bb0 mov r0, 0 | r0 = 0;
0x00038bb4 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00038bb8 ldr r1, [sp, 4] | r1 = var_4h;
0x00038bbc mov lr, 1 | lr = 1;
0x00038bc0 orr r1, r1, lr, lsl ip | r1 |= (lr << ip);
0x00038bc4 orr r1, r1, lr, lsr r2 | r1 |= (lr >> r2);
0x00038bc8 subs sl, sl, r6 | sl -= r6;
0x00038bcc str r1, [sp, 4] | var_4h = r1;
0x00038bd0 lsl r1, lr, r3 | r1 = lr << r3;
0x00038bd4 sbc fp, fp, r7 | __asm ("sbc fp, fp, r7");
0x00038bd8 str r1, [sp] | *(sp) = r1;
| label_0:
0x00038bdc cmp r3, 0 |
| if (r3 == 0) {
0x00038be0 beq 0x38c5c | goto label_4;
| }
0x00038be4 lsrs r7, r7, 1 | r7 >>= 1;
0x00038be8 rrx r6, r6 | __asm ("rrx r6, r6");
0x00038bec mov lr, r3 | lr = r3;
| do {
0x00038bf0 cmp fp, r7 |
0x00038bf4 cmpeq sl, r6 | __asm ("cmpeq sl, r6");
| if (fp <= r7) {
0x00038bf8 blo 0x38c80 | goto label_5;
| }
0x00038bfc subs r0, sl, r6 | r0 = sl - r6;
0x00038c00 sbc r1, fp, r7 | __asm ("sbc r1, fp, r7");
0x00038c04 adds r4, r0, r0 | r4 = r0 + r0;
0x00038c08 adc r5, r1, r1 | __asm ("adc r5, r1, r1");
0x00038c0c adds sl, r4, 1 | sl = r4 + 1;
0x00038c10 adc fp, r5, 0 | __asm ("adc fp, r5, 0");
| label_1:
0x00038c14 subs lr, lr, 1 | lr--;
0x00038c18 bne 0x38bf0 |
| } while (lr != lr);
0x00038c1c lsr r1, sl, r3 | r1 = sl >> r3;
0x00038c20 ldrd r6, r7, [sp] | __asm ("ldrd r6, r7, [sp]");
0x00038c24 orr r1, r1, fp, lsl r2 | r1 |= (fp << r2);
0x00038c28 lsr r0, fp, r3 | r0 = fp >> r3;
0x00038c2c adds r6, r6, sl | r6 += sl;
0x00038c30 orr r1, r1, fp, lsr ip | r1 |= (fp >> ip);
0x00038c34 adc r7, r7, fp | __asm ("adc r7, r7, fp");
0x00038c38 mov fp, r0 |
0x00038c3c mov sl, r1 | sl = r1;
0x00038c40 lsl r1, fp, r3 | r1 = fp << r3;
0x00038c44 orr r1, r1, sl, lsl ip | r1 |= (sl << ip);
0x00038c48 lsl r0, sl, r3 | r0 = sl << r3;
0x00038c4c orr r1, r1, sl, lsr r2 | r1 |= (sl >> r2);
0x00038c50 subs r6, r6, r0 | r6 -= r0;
0x00038c54 sbc r7, r7, r1 | __asm ("sbc r7, r7, r1");
0x00038c58 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
| do {
| label_4:
0x00038c5c cmp r8, 0 |
0x00038c60 strdne sl, fp, [r8] | __asm ("strdne sl, fp, [r8]");
0x00038c64 ldrd r0, r1, [sp] | __asm ("ldrd r0, r1, [sp]");
0x00038c68 add sp, sp, 8 |
0x00038c6c pop {r4, r5, r6, r7, r8, sl, fp, pc} |
| label_3:
0x00038c70 mov r0, 0 | r0 = 0;
0x00038c74 mov r1, 0 | r1 = 0;
0x00038c78 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00038c7c b 0x38bdc | goto label_0;
| label_5:
0x00038c80 adds sl, sl, sl | sl += sl;
0x00038c84 adc fp, fp, fp | __asm ("adc fp, fp, fp");
0x00038c88 b 0x38c14 | goto label_1;
| label_2:
0x00038c8c mov r2, 0 | r2 = 0;
0x00038c90 mov r3, 0 | r3 = 0;
0x00038c94 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00038c98 b 0x38c5c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x25390 */
| #include <stdint.h>
|
; (fcn) sym.Curl_HMAC_init () | void Curl_HMAC_init (int32_t arg1, int32_t arg2) {
| int32_t var_7h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00025390 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x00025394 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00025398 mov r7, r2 | r7 = r2;
0x0002539c ldr r2, [pc, 0x14c] |
0x000253a0 mov r6, r1 | r6 = r1;
0x000253a4 ldr r1, [pc, 0x148] | r1 = $d;
0x000253a8 add r2, pc, r2 | r2 = pc + r2;
0x000253ac mov r4, r0 | r4 = r0;
0x000253b0 ldr r0, [r0, 0x14] | r0 = *((r0 + 0x14));
0x000253b4 ldr r2, [r2, r1] |
0x000253b8 add r3, r3, 6 | r3 += 6;
0x000253bc ldr r2, [r2] | r2 = *(0x254ec);
0x000253c0 add r0, r0, r3, lsl 1 | r0 += (r3 << 1);
0x000253c4 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000253c8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000253cc beq 0x25470 | goto label_1;
| }
0x000253d0 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000253d4 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000253d8 mov r0, r5 | r0 = r5;
0x000253dc str r4, [r0], 0xc | *(r0) = r4;
| r0 += 0xc;
0x000253e0 cmp r2, r7 |
0x000253e4 add r3, r0, r3 | r3 = r0 + r3;
0x000253e8 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x000253ec str r0, [r5, 4] | *((r5 + 4)) = r0;
0x000253f0 ldr r3, [r4] | r3 = *(r4);
| if (r2 < r7) {
0x000253f4 bhs 0x25430 |
0x000253f8 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x000253fc mov r2, r7 | r2 = r7;
0x00025400 mov r1, r6 | r1 = r6;
0x00025404 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00025408 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0002540c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00025410 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00025414 ldr r6, [r5, 8] | r6 = *((r5 + 8));
0x00025418 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x0002541c add r6, r6, r3 | r6 += r3;
0x00025420 mov r0, r6 | r0 = r6;
0x00025424 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00025428 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0002542c ldr r7, [r4, 0x14] | r7 = *((r4 + 0x14));
| }
0x00025430 ldr r3, [r4] | r3 = *(r4);
0x00025434 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00025438 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002543c ldr r3, [r4] | r3 = *(r4);
0x00025440 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00025444 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00025448 add sb, r6, r7 | sb = r6 + r7;
0x0002544c add r8, sp, 7 | r8 += var_7h;
| do {
0x00025450 cmp r6, sb |
| if (r6 == sb) {
0x00025454 bne 0x2547c |
0x00025458 ldr r6, [pc, 0x98] | r6 = *(0x254f4);
0x0002545c add r6, pc, r6 | r6 = pc + r6;
0x00025460 add r8, r6, 1 | r8 = r6 + 1;
| label_0:
0x00025464 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00025468 cmp r3, r7 |
| if (r3 > r7) {
0x0002546c bhi 0x254c0 | goto label_2;
| }
| label_1:
0x00025470 mov r0, r5 | r0 = r5;
0x00025474 add sp, sp, 0xc |
0x00025478 pop {r4, r5, r6, r7, r8, sb, pc} |
| }
0x0002547c ldrb r3, [r6] | r3 = *(r6);
0x00025480 mov r1, r8 | r1 = r8;
0x00025484 eor r3, r3, 0x36 | r3 ^= 0x36;
0x00025488 strb r3, [sp, 7] | var_7h = r3;
0x0002548c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00025490 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00025494 mov r2, 1 | r2 = 1;
0x00025498 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0002549c ldrb r3, [r6], 1 | r3 = *(r6);
| r6++;
0x000254a0 mov r2, 1 | r2 = 1;
0x000254a4 eor r3, r3, 0x5c | r3 ^= 0x5c;
0x000254a8 strb r3, [sp, 7] | var_7h = r3;
0x000254ac mov r1, r8 | r1 = r8;
0x000254b0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000254b4 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x000254b8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000254bc b 0x25450 |
| } while (1);
| label_2:
0x000254c0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000254c4 mov r2, 1 | r2 = 1;
0x000254c8 mov r1, r6 | r1 = r6;
0x000254cc ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000254d0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000254d4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000254d8 mov r2, 1 | r2 = 1;
0x000254dc mov r1, r8 | r1 = r8;
0x000254e0 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x000254e4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000254e8 add r7, r7, 1 | r7++;
0x000254ec b 0x25464 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x23ab4 */
| #include <stdint.h>
|
; (fcn) sym.Curl_SOCKS4 () | void Curl_SOCKS4 (int32_t arg_190h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_60h;
| int32_t var_61h;
| int32_t var_62h;
| int32_t var_63h;
| int32_t var_64h;
| int32_t var_65h;
| int32_t var_66h;
| int32_t var_67h;
| char * s1;
| int32_t var_9h;
| int32_t var_0h_2;
| int32_t var_16ch;
| r0 = arg1;
| r1 = arg2;
0x00023ab4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00023ab8 sub sp, sp, 0x16c |
0x00023abc ldr r5, [sp, 0x190] | r5 = *(arg_190h);
0x00023ac0 mov sb, r2 | sb = r2;
0x00023ac4 ldr r4, [r5] | r4 = *(r5);
0x00023ac8 ldr r2, [r5, 0xd0] | r2 = *((r5 + 0xd0));
0x00023acc add r3, r3, 0x66 | r3 += 0x66;
0x00023ad0 str r2, [sp, 0x10] | var_10h = r2;
0x00023ad4 mov sl, r0 | sl = r0;
0x00023ad8 mov r7, r1 | r7 = r1;
0x00023adc mov r2, 1 | r2 = 1;
0x00023ae0 mov r1, 0 | r1 = 0;
0x00023ae4 mov r0, r4 | r0 = r4;
0x00023ae8 ldr r8, [r5, r3, lsl 2] | offset_0 = r3 << 2;
| r8 = *((r5 + offset_0));
0x00023aec bl 0x1b738 | r0 = Curl_timeleft ();
0x00023af0 cmp r0, 0 |
| if (r0 >= 0) {
0x00023af4 bge 0x23b18 | goto label_9;
| }
0x00023af8 ldr r1, [pc, 0x494] | r1 = *(0x23f90);
0x00023afc mov r0, r4 | r0 = r4;
0x00023b00 add r1, pc, r1 | r1 = pc + r1;
0x00023b04 bl 0x10544 | Curl_failf ();
0x00023b08 mov sb, 0x1c | sb = 0x1c;
| do {
| label_0:
0x00023b0c mov r0, sb | r0 = sb;
0x00023b10 add sp, sp, 0x16c |
0x00023b14 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x00023b18 ldrb r3, [r5, 0x256] | r3 = *((r5 + 0x256));
0x00023b1c cmp r3, 0 |
| if (r3 != 0) {
0x00023b20 beq 0x23b50 |
0x00023b24 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00023b28 ldr r0, [r5] | r0 = *(r5);
0x00023b2c cmp r3, 6 |
| if (r3 != 6) {
0x00023b30 bne 0x23bf8 | goto label_10;
| }
0x00023b34 ldr r2, [pc, 0x45c] | r2 = $d;
0x00023b38 add r2, pc, r2 | r2 = pc + r2;
| label_1:
0x00023b3c ldr r1, [pc, 0x458] | r1 = *(0x23f98);
0x00023b40 str sb, [sp] | *(sp) = sb;
0x00023b44 mov r3, r7 | r3 = r7;
0x00023b48 add r1, pc, r1 | r1 = pc + r1;
0x00023b4c bl 0x104cc | Curl_infof ();
| }
0x00023b50 mov r1, 0 | r1 = 0;
0x00023b54 mov r0, r8 | r0 = r8;
0x00023b58 bl 0x25118 | curlx_nonblock ();
0x00023b5c ldr r1, [pc, 0x43c] | r1 = *(0x23f9c);
0x00023b60 mov r3, sb | r3 = sb;
0x00023b64 mov r2, r7 | r2 = r7;
0x00023b68 add r1, pc, r1 | r1 = pc + r1;
0x00023b6c mov r0, r4 | r0 = r4;
0x00023b70 bl 0x104cc | Curl_infof ();
0x00023b74 add r6, sp, 0x60 | r6 += var_60h;
0x00023b78 mov r3, 0x104 | r3 = 0x104;
0x00023b7c strh r3, [r6] | *(r6) = r3;
0x00023b80 asr r3, sb, 8 | r3 = sb >> 8;
0x00023b84 strb r3, [sp, 0x62] | var_62h = r3;
0x00023b88 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00023b8c strb sb, [sp, 0x63] | var_63h = sb;
0x00023b90 cmp r3, 6 |
| if (r3 == 6) {
0x00023b94 beq 0x23c7c | goto label_11;
| }
0x00023b98 add fp, sp, 0x1c |
0x00023b9c mov r2, sb | r2 = sb;
0x00023ba0 mov r3, fp | r3 = fp;
0x00023ba4 mov r1, r7 | r1 = r7;
0x00023ba8 mov r0, r5 | r0 = r5;
0x00023bac bl 0x74ec | r0 = Curl_resolv ();
0x00023bb0 cmn r0, 1 |
| if (r0 != 1) {
0x00023bb4 moveq sb, 5 | sb = 5;
| }
0x00023bb8 beq 0x23b0c |
| } while (r0 == 1);
0x00023bbc cmp r0, 1 |
| if (r0 == 1) {
0x00023bc0 bne 0x23bd0 |
0x00023bc4 mov r1, fp | r1 = fp;
0x00023bc8 mov r0, r5 | r0 = r5;
0x00023bcc bl 0x26624 | Curl_resolver_wait_resolv ();
| }
0x00023bd0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00023bd4 cmp r3, 0 |
0x00023bd8 bne 0x23c04 |
| while (sb == 0) {
| label_2:
0x00023bdc ldr r1, [pc, 0x3c0] | r1 = *(0x23fa0);
0x00023be0 mov r2, r7 | r2 = r7;
0x00023be4 add r1, pc, r1 | r1 = pc + r1;
0x00023be8 mov r0, r4 | r0 = r4;
0x00023bec bl 0x10544 | Curl_failf ();
0x00023bf0 mov sb, 6 | sb = 6;
0x00023bf4 b 0x23b0c | goto label_0;
| label_10:
0x00023bf8 ldr r2, [pc, 0x3a8] | r2 = *(0x23fa4);
0x00023bfc add r2, pc, r2 | r2 = pc + r2;
0x00023c00 b 0x23b3c | goto label_1;
0x00023c04 ldr sb, [r3] | sb = *(r3);
0x00023c08 cmp sb, 0 |
0x00023c0c beq 0x23bdc |
| }
0x00023c10 add fp, sp, 0x20 |
0x00023c14 mov r2, 0x40 | r2 = 0x40;
0x00023c18 mov r1, fp | r1 = fp;
0x00023c1c mov r0, sb | r0 = sb;
0x00023c20 bl 0x711c | Curl_printable_address ();
0x00023c24 ldr r3, [sb, 4] | r3 = *((sb + 4));
0x00023c28 cmp r3, 2 |
| if (r3 != 2) {
0x00023c2c bne 0x23cb4 | goto label_12;
| }
0x00023c30 ldr r3, [sb, 0x18] | r3 = *((sb + 0x18));
0x00023c34 ldr r1, [pc, 0x370] | r1 = *(0x23fa8);
0x00023c38 ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x00023c3c add r1, pc, r1 | r1 = pc + r1;
0x00023c40 strb r2, [sp, 0x64] | var_64h = r2;
0x00023c44 ldrb r2, [r3, 5] | r2 = *((r3 + 5));
0x00023c48 mov r0, r4 | r0 = r4;
0x00023c4c strb r2, [sp, 0x65] | var_65h = r2;
0x00023c50 ldrb r2, [r3, 6] | r2 = *((r3 + 6));
0x00023c54 strb r2, [sp, 0x66] | var_66h = r2;
0x00023c58 ldrb r3, [r3, 7] | r3 = *((r3 + 7));
0x00023c5c mov r2, fp | r2 = fp;
0x00023c60 strb r3, [sp, 0x67] | var_67h = r3;
0x00023c64 bl 0x104cc | Curl_infof ();
| label_3:
0x00023c68 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00023c6c mov r0, r4 | r0 = r4;
0x00023c70 bl 0x76e8 | Curl_resolv_unlock ();
0x00023c74 cmp sb, 0 |
| if (sb == 0) {
0x00023c78 beq 0x23bdc | goto label_2;
| }
| label_11:
0x00023c7c mov r3, 0 | r3 = 0;
0x00023c80 cmp sl, r3 |
0x00023c84 strb r3, [sp, 0x68] | s1 = r3;
| if (sl == r3) {
0x00023c88 beq 0x23ce0 | goto label_13;
| }
0x00023c8c mov r0, sl | r0 = sl;
0x00023c90 bl 0x5250 | r0 = strlen (r0);
0x00023c94 cmp r0, 0xfd |
| if (r0 < 0xfd) {
0x00023c98 bls 0x23cd0 | goto label_14;
| }
0x00023c9c ldr r1, [pc, 0x30c] | r1 = *(0x23fac);
0x00023ca0 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_6:
0x00023ca4 mov r0, r4 | r0 = r4;
0x00023ca8 bl 0x10544 | Curl_failf ();
| label_7:
0x00023cac mov sb, 7 | sb = 7;
0x00023cb0 b 0x23b0c | goto label_0;
| label_12:
0x00023cb4 ldr r1, [pc, 0x2f8] | r1 = *(0x23fb0);
0x00023cb8 mov r2, fp | r2 = fp;
0x00023cbc add r1, pc, r1 | r1 = pc + r1;
0x00023cc0 mov r0, r4 | r0 = r4;
0x00023cc4 bl 0x10544 | Curl_failf ();
0x00023cc8 mov sb, 0 | sb = 0;
0x00023ccc b 0x23c68 | goto label_3;
| label_14:
0x00023cd0 add r2, r0, 1 | r2 = r0 + 1;
0x00023cd4 mov r1, sl | r1 = sl;
0x00023cd8 add r0, sp, 0x68 | r0 += s1;
0x00023cdc bl 0x4f5c | memcpy (r0, r1, r2);
| label_13:
0x00023ce0 add r0, sp, 0x68 | r0 += s1;
0x00023ce4 bl 0x5250 | strlen (r0);
0x00023ce8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00023cec cmp r3, 6 |
0x00023cf0 add sl, r0, 9 | sl += var_9h;
| if (r3 == 6) {
0x00023cf4 beq 0x23d40 | goto label_15;
| }
| label_4:
0x00023cf8 mov fp, 0 |
| label_5:
0x00023cfc add r3, sp, 0x20 | r3 += var_20h;
0x00023d00 add sl, fp, sl | sl = fp + sl;
0x00023d04 str r3, [sp, 0x14] | var_14h = r3;
0x00023d08 str r3, [sp] | *(sp) = r3;
0x00023d0c mov r2, r6 | r2 = r6;
0x00023d10 mov r3, sl | r3 = sl;
0x00023d14 mov r1, r8 | r1 = r8;
0x00023d18 mov r0, r5 | r0 = r5;
0x00023d1c bl 0x10700 | r0 = Curl_write_plain ();
0x00023d20 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00023d24 bne 0x23d34 |
0x00023d28 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00023d2c cmp sl, r3 |
| if (sl == r3) {
0x00023d30 beq 0x23d74 | goto label_16;
| }
| }
0x00023d34 ldr r1, [pc, 0x27c] | r1 = *(0x23fb4);
0x00023d38 add r1, pc, r1 | r1 = pc + r1;
0x00023d3c b 0x23ca4 |
| } while (1);
| label_15:
0x00023d40 mov r3, 0x1000000 | r3 = 0x1000000;
0x00023d44 mov r0, r7 | r0 = r7;
0x00023d48 str r3, [sp, 0x64] | var_64h = r3;
0x00023d4c bl 0x5250 | strlen (r0);
0x00023d50 ldr r3, [pc, 0x264] | r3 = *(0x23fb8);
0x00023d54 add fp, r0, 1 |
0x00023d58 add r2, sl, fp | r2 = sl + fp;
0x00023d5c cmp r2, r3 |
| if (r2 > r3) {
0x00023d60 bgt 0x23cf8 | goto label_4;
| }
0x00023d64 mov r1, r7 | r1 = r7;
0x00023d68 add r0, r6, sl | r0 = r6 + sl;
0x00023d6c bl 0x5c28 | strcpy (r0, r1);
0x00023d70 b 0x23cfc | goto label_5;
| label_16:
0x00023d74 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00023d78 cmp fp, 0 |
0x00023d7c cmpeq r3, 6 | __asm ("cmpeq r3, 6");
| if (fp == 0) {
0x00023d80 bne 0x23dcc |
0x00023d84 mov r0, r7 | r0 = r7;
0x00023d88 bl 0x5250 | strlen (r0);
0x00023d8c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00023d90 mov r2, r7 | r2 = r7;
0x00023d94 str r3, [sp] | *(sp) = r3;
0x00023d98 mov r1, r8 | r1 = r8;
0x00023d9c add sl, r0, 1 | sl = r0 + 1;
0x00023da0 mov r3, sl | r3 = sl;
0x00023da4 mov r0, r5 | r0 = r5;
0x00023da8 bl 0x10700 | r0 = Curl_write_plain ();
0x00023dac cmp r0, 0 |
| if (r0 == 0) {
0x00023db0 bne 0x23dc0 |
0x00023db4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00023db8 cmp r3, sl |
| if (r3 == sl) {
0x00023dbc beq 0x23dcc | goto label_17;
| }
| }
0x00023dc0 ldr r1, [pc, 0x1f8] | r1 = *(0x23fbc);
0x00023dc4 add r1, pc, r1 | r1 = pc + r1;
0x00023dc8 b 0x23ca4 | goto label_6;
| }
| label_17:
0x00023dcc add r3, sp, 0x1c | r3 += var_1ch;
0x00023dd0 str r3, [sp] | *(sp) = r3;
0x00023dd4 mov r2, r6 | r2 = r6;
0x00023dd8 mov r3, 8 | r3 = 8;
0x00023ddc mov r1, r8 | r1 = r8;
0x00023de0 mov r0, r5 | r0 = r5;
0x00023de4 bl 0x23a00 | r0 = Curl_blockread_all ();
0x00023de8 cmp r0, 0 |
| if (r0 == 0) {
0x00023dec bne 0x23dfc |
0x00023df0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00023df4 cmp r3, 8 |
| if (r3 == 8) {
0x00023df8 beq 0x23e08 | goto label_18;
| }
| }
0x00023dfc ldr r1, [pc, 0x1c0] | r1 = *(0x23fc0);
0x00023e00 add r1, pc, r1 | r1 = pc + r1;
0x00023e04 b 0x23ca4 | goto label_6;
| label_18:
0x00023e08 ldrb r3, [sp, 0x60] | r3 = var_60h;
0x00023e0c cmp r3, 0 |
| if (r3 == 0) {
0x00023e10 ldrne r1, [pc, 0x1b0] | r1 = *(0x00023fc8);
| }
| if (r3 != 0) {
0x00023e14 addne r1, pc, r1 | r1 = pc + r1;
| goto label_19;
| }
| if (r3 != 0) {
| label_19:
0x00023e18 bne 0x23ca4 | goto label_6;
| }
0x00023e1c ldrb r1, [sp, 0x61] | r1 = var_61h;
0x00023e20 sub r3, r1, 0x5a | r3 = r1 - 0x5a;
0x00023e24 cmp r3, 3 |
| if (r3 > 3) {
| /* switch table (4 cases) at 0x23e30 */
0x00023e28 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x00023e2c b 0x23f54 | goto label_20;
0x00023e30 b 0x23e40 | goto label_21;
0x00023e34 b 0x23e80 | goto label_22;
0x00023e38 b 0x23ecc | goto label_23;
0x00023e3c b 0x23f10 | goto label_24;
| label_21:
0x00023e40 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00023e44 cmp r3, 6 |
| if (r3 != 6) {
0x00023e48 bne 0x23e74 | goto label_25;
| }
0x00023e4c ldr r2, [pc, 0x178] | r2 = *(0x23fc8);
0x00023e50 add r2, pc, r2 | r2 = pc + r2;
| do {
0x00023e54 ldr r1, [pc, 0x174] | r1 = *(0x23fcc);
0x00023e58 mov r0, r4 | r0 = r4;
0x00023e5c add r1, pc, r1 | r1 = pc + r1;
0x00023e60 bl 0x104cc | Curl_infof ();
0x00023e64 mov r1, 1 | r1 = 1;
0x00023e68 mov r0, r8 | r0 = r8;
0x00023e6c bl 0x25118 | curlx_nonblock ();
0x00023e70 b 0x23b0c | goto label_0;
| label_25:
0x00023e74 ldr r2, [pc, 0x158] | r2 = *(0x23fd0);
0x00023e78 add r2, pc, r2 | r2 = pc + r2;
0x00023e7c b 0x23e54 |
| } while (1);
| label_22:
0x00023e80 mov r1, 0x5b | r1 = 0x5b;
0x00023e84 str r1, [sp, 0xc] | var_ch = r1;
0x00023e88 ldrh r0, [r6, 2] | r0 = var_62h;
0x00023e8c ldrb r3, [sp, 0x65] | r3 = var_65h;
0x00023e90 lsr r1, r0, 8 | r1 = r0 >> 8;
0x00023e94 orr r1, r1, r0, lsl 8 | r1 |= (r0 << 8);
0x00023e98 lsl r1, r1, 0x10 | r1 <<= 0x10;
0x00023e9c lsr r1, r1, 0x10 | r1 >>= 0x10;
0x00023ea0 str r1, [sp, 8] | var_8h = r1;
0x00023ea4 ldrb r1, [sp, 0x67] | r1 = var_67h;
0x00023ea8 ldrb r2, [sp, 0x64] | r2 = var_64h;
0x00023eac str r1, [sp, 4] | var_4h = r1;
0x00023eb0 ldrb r1, [sp, 0x66] | r1 = var_66h;
0x00023eb4 str r1, [sp] | *(sp) = r1;
0x00023eb8 ldr r1, [pc, 0x118] | r1 = *(0x23fd4);
0x00023ebc add r1, pc, r1 | r1 = pc + r1;
| do {
| label_8:
0x00023ec0 mov r0, r4 | r0 = r4;
0x00023ec4 bl 0x10544 | Curl_failf ();
0x00023ec8 b 0x23cac | goto label_7;
| label_23:
0x00023ecc mov r1, 0x5c | r1 = 0x5c;
0x00023ed0 str r1, [sp, 0xc] | var_ch = r1;
0x00023ed4 ldrh r0, [r6, 2] | r0 = var_62h;
0x00023ed8 ldrb r3, [sp, 0x65] | r3 = var_65h;
0x00023edc lsr r1, r0, 8 | r1 = r0 >> 8;
0x00023ee0 orr r1, r1, r0, lsl 8 | r1 |= (r0 << 8);
0x00023ee4 lsl r1, r1, 0x10 | r1 <<= 0x10;
0x00023ee8 lsr r1, r1, 0x10 | r1 >>= 0x10;
0x00023eec str r1, [sp, 8] | var_8h = r1;
0x00023ef0 ldrb r1, [sp, 0x67] | r1 = var_67h;
0x00023ef4 ldrb r2, [sp, 0x64] | r2 = var_64h;
0x00023ef8 str r1, [sp, 4] | var_4h = r1;
0x00023efc ldrb r1, [sp, 0x66] | r1 = var_66h;
0x00023f00 str r1, [sp] | *(sp) = r1;
0x00023f04 ldr r1, [pc, 0xd0] | r1 = *(0x23fd8);
0x00023f08 add r1, pc, r1 | r1 = pc + r1;
0x00023f0c b 0x23ec0 |
| } while (1);
| label_24:
0x00023f10 mov r1, 0x5d | r1 = 0x5d;
0x00023f14 str r1, [sp, 0xc] | var_ch = r1;
0x00023f18 ldrh r0, [r6, 2] | r0 = var_62h;
0x00023f1c ldrb r3, [sp, 0x65] | r3 = var_65h;
0x00023f20 lsr r1, r0, 8 | r1 = r0 >> 8;
0x00023f24 orr r1, r1, r0, lsl 8 | r1 |= (r0 << 8);
0x00023f28 lsl r1, r1, 0x10 | r1 <<= 0x10;
0x00023f2c lsr r1, r1, 0x10 | r1 >>= 0x10;
0x00023f30 str r1, [sp, 8] | var_8h = r1;
0x00023f34 ldrb r1, [sp, 0x67] | r1 = var_67h;
0x00023f38 ldrb r2, [sp, 0x64] | r2 = var_64h;
0x00023f3c str r1, [sp, 4] | var_4h = r1;
0x00023f40 ldrb r1, [sp, 0x66] | r1 = var_66h;
0x00023f44 str r1, [sp] | *(sp) = r1;
0x00023f48 ldr r1, [pc, 0x90] | r1 = *(0x23fdc);
0x00023f4c add r1, pc, r1 | r1 = pc + r1;
0x00023f50 b 0x23ec0 | goto label_8;
| label_20:
0x00023f54 str r1, [sp, 0xc] | var_ch = r1;
0x00023f58 ldrh r0, [r6, 2] | r0 = var_62h;
0x00023f5c ldrb r3, [sp, 0x65] | r3 = var_65h;
0x00023f60 lsr r1, r0, 8 | r1 = r0 >> 8;
0x00023f64 orr r1, r1, r0, lsl 8 | r1 |= (r0 << 8);
0x00023f68 lsl r1, r1, 0x10 | r1 <<= 0x10;
0x00023f6c lsr r1, r1, 0x10 | r1 >>= 0x10;
0x00023f70 str r1, [sp, 8] | var_8h = r1;
0x00023f74 ldrb r1, [sp, 0x67] | r1 = var_67h;
0x00023f78 ldrb r2, [sp, 0x64] | r2 = var_64h;
0x00023f7c str r1, [sp, 4] | var_4h = r1;
0x00023f80 ldrb r1, [sp, 0x66] | r1 = var_66h;
0x00023f84 str r1, [sp] | *(sp) = r1;
0x00023f88 ldr r1, [pc, 0x54] | r1 = *(0x23fe0);
0x00023f8c add r1, pc, r1 | r1 = pc + r1;
0x00023f90 b 0x23ec0 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x23fe8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_SOCKS5 () | void Curl_SOCKS5 (int32_t arg_328h, int32_t arg_32ch, int32_t arg1, char * arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| char * s2;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_5ch;
| int32_t var_60h;
| int32_t var_64h;
| int32_t var_68h;
| int8_t var_258h;
| int8_t var_259h;
| int32_t var_a8h;
| size_t size;
| void * s1;
| void * var_abh;
| int32_t var_ach;
| void * var_adh;
| int32_t var_aeh;
| int32_t var_afh;
| int32_t var_b0h;
| int32_t var_b1h;
| int32_t var_b2h;
| int32_t var_b3h;
| int32_t var_b4h;
| int32_t var_b5h;
| int32_t var_b6h;
| int32_t var_b7h;
| int32_t var_b8h;
| int32_t var_b9h;
| int32_t var_bah;
| int32_t var_bbh;
| int32_t var_14h_2;
| int32_t var_0h_3;
| int32_t var_300h;
| int32_t var_0h_2;
| int32_t var_304h;
| r0 = arg1;
| r1 = arg2;
0x00023fe8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00023fec sub sp, sp, 0x304 |
0x00023ff0 str r3, [sp, 0x44] | var_44h = r3;
0x00023ff4 ldr r3, [sp, 0x328] | r3 = *(arg_328h);
0x00023ff8 ldr r5, [sp, 0x32c] | r5 = *(arg_32ch);
0x00023ffc add r3, r3, 0x66 | r3 += 0x66;
0x00024000 mov sb, r0 | sb = r0;
0x00024004 mov r0, r2 | r0 = r2;
0x00024008 ldr r6, [r5, r3, lsl 2] | offset_0 = r3 << 2;
| r6 = *((r5 + offset_0));
0x0002400c str r1, [sp, 0x48] | s2 = r1;
0x00024010 mov fp, r2 |
0x00024014 bl 0x5250 | strlen (r0);
0x00024018 ldrb r3, [r5, 0x256] | r3 = *((r5 + 0x256));
0x0002401c ldr r4, [r5] | r4 = *(r5);
0x00024020 cmp r3, 0 |
0x00024024 ldr r7, [r5, 0xd0] | r7 = *((r5 + 0xd0));
0x00024028 ldr r8, [r4, 0x15c] | r8 = *((r4 + 0x15c));
0x0002402c str r0, [sp, 0x40] | var_40h = r0;
| if (r3 != 0) {
0x00024030 beq 0x2404c |
0x00024034 ldr r1, [pc, 0x85c] | r1 = *(0x24894);
0x00024038 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0002403c mov r2, fp | r2 = fp;
0x00024040 add r1, pc, r1 | r1 = pc + r1;
0x00024044 mov r0, r4 | r0 = r4;
0x00024048 bl 0x104cc | Curl_infof ();
| }
0x0002404c ldr r3, [sp, 0x40] | r3 = var_40h;
0x00024050 cmp r7, 5 |
0x00024054 cmpne r3, 0xff | __asm ("cmpne r3, 0xff");
| if (r7 <= 5) {
0x00024058 movhi r3, 1 | r3 = 1;
| }
| if (r7 > 5) {
0x0002405c movls r3, 0 | r3 = 0;
| }
0x00024060 str r3, [sp, 0x4c] | var_4ch = r3;
| if (r7 > 5) {
0x00024064 bhi 0x240b0 | goto label_11;
| }
0x00024068 sub r3, r7, 5 | r3 = r7 - 5;
0x0002406c clz r3, r3 | r3 &= r3;
0x00024070 lsr r3, r3, 5 | r3 >>= 5;
0x00024074 str r3, [sp, 0x4c] | var_4ch = r3;
| do {
0x00024078 mov r2, 1 | r2 = 1;
0x0002407c mov r1, 0 | r1 = 0;
0x00024080 mov r0, r4 | r0 = r4;
0x00024084 bl 0x1b738 | r0 = Curl_timeleft ();
0x00024088 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 >= r0) {
0x0002408c bge 0x240c8 | goto label_12;
| }
0x00024090 ldr r1, [pc, 0x804] | r1 = $d;
0x00024094 mov r0, r4 | r0 = r4;
0x00024098 add r1, pc, r1 | r1 = pc + r1;
| label_0:
0x0002409c bl 0x10544 | Curl_failf ();
0x000240a0 mov sb, 0x1c | sb = 0x1c;
| label_4:
0x000240a4 mov r0, sb | r0 = sb;
0x000240a8 add sp, sp, 0x304 |
0x000240ac pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x000240b0 ldr r1, [pc, 0x7e8] | r1 = *(0x2489c);
0x000240b4 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000240b8 add r1, pc, r1 | r1 = pc + r1;
0x000240bc ldr r0, [r5] | r0 = *(r5);
0x000240c0 bl 0x104cc | Curl_infof ();
0x000240c4 b 0x24078 |
| } while (1);
| label_12:
0x000240c8 mov r1, 1 | r1 = 1;
0x000240cc mov r0, r6 | r0 = r6;
0x000240d0 bl 0x25118 | curlx_nonblock ();
0x000240d4 mvn r1, 0 | r1 = ~0;
0x000240d8 mov r3, r7 | r3 = r7;
0x000240dc mov r2, r6 | r2 = r6;
0x000240e0 mov r0, r1 | r0 = r1;
0x000240e4 bl 0x22ea8 | r0 = Curl_socket_check ();
0x000240e8 cmn r0, 1 |
| if (r0 != 1) {
0x000240ec bne 0x24104 | goto label_13;
| }
0x000240f0 ldr r1, [pc, 0x7ac] | r1 = *(0x248a0);
0x000240f4 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_2:
0x000240f8 ldr r0, [r5] | r0 = *(r5);
| label_1:
0x000240fc bl 0x10544 | Curl_failf ();
0x00024100 b 0x2440c | goto label_9;
| label_13:
0x00024104 cmp r0, 0 |
| if (r0 == 0) {
0x00024108 bne 0x2411c |
0x0002410c ldr r1, [pc, 0x794] | r1 = *(0x248a4);
0x00024110 add r1, pc, r1 | r1 = pc + r1;
| label_3:
0x00024114 ldr r0, [r5] | r0 = *(r5);
0x00024118 b 0x2409c | goto label_0;
| }
0x0002411c tst r0, 4 |
| if ((r0 & 4) == 0) {
0x00024120 ldrne r1, [pc, 0x784] | r1 = *((pc + 0x784));
| }
| if ((r0 & 4) == 0) {
0x00024124 addne r1, pc, r1 | r1 = pc + r1;
| }
0x00024128 bne 0x240f8 |
| } while ((r0 & 4) != 0);
0x0002412c bics r3, r8, 5 | __asm ("bics r3, r8, 5");
| if ((r0 & 4) != 0) {
0x00024130 beq 0x24148 |
0x00024134 ldr r1, [pc, 0x774] | r1 = *(0x248ac);
0x00024138 mov r2, r8 | r2 = r8;
0x0002413c add r1, pc, r1 | r1 = pc + r1;
0x00024140 ldr r0, [r5] | r0 = *(r5);
0x00024144 bl 0x104cc | Curl_infof ();
| }
0x00024148 tst r8, 1 |
0x0002414c mov r3, 5 | r3 = 5;
0x00024150 strb r3, [sp, 0xa8] | var_a8h = r3;
| if ((r8 & 1) != 0) {
0x00024154 moveq sb, 0 | sb = 0;
| }
0x00024158 mov r3, 0 | r3 = 0;
0x0002415c cmp sb, r3 |
0x00024160 strb r3, [sp, 0xaa] | s1 = r3;
| if (sb == r3) {
0x00024164 movne r3, 2 | r3 = 2;
| }
| if (sb == r3) {
0x00024168 strbne r3, [sp, 0xab] | var_abh = r3;
| }
| if (sb != r3) {
0x0002416c moveq r3, 3 | r3 = 3;
| }
| if (sb == r3) {
0x00024170 movne r3, 4 | r3 = 4;
| }
0x00024174 sub r3, r3, 2 | r3 -= 2;
0x00024178 mov r1, 0 | r1 = 0;
0x0002417c mov r0, r6 | r0 = r6;
0x00024180 strb r3, [sp, 0xa9] | size = r3;
0x00024184 bl 0x25118 | curlx_nonblock ();
0x00024188 ldr r1, [pc, 0x724] | r1 = *(0x248b0);
0x0002418c ldr r3, [sp, 0x44] | r3 = var_44h;
0x00024190 mov r2, fp | r2 = fp;
0x00024194 add r1, pc, r1 | r1 = pc + r1;
0x00024198 mov r0, r4 | r0 = r4;
0x0002419c bl 0x104cc | Curl_infof ();
0x000241a0 ldrb r3, [sp, 0xa9] | r3 = size;
0x000241a4 add r2, sp, 0x60 | r2 += var_60h;
0x000241a8 add r8, sp, 0xa8 | r8 += var_a8h;
0x000241ac str r2, [sp] | *(sp) = r2;
0x000241b0 add r3, r3, 2 | r3 += 2;
0x000241b4 mov r2, r8 | r2 = r8;
0x000241b8 mov r1, r6 | r1 = r6;
0x000241bc mov r0, r5 | r0 = r5;
0x000241c0 bl 0x10700 | r0 = Curl_write_plain ();
0x000241c4 cmp r0, 0 |
| if (r0 == 0) {
0x000241c8 bne 0x241e0 |
0x000241cc ldrb r3, [sp, 0xa9] | r3 = size;
0x000241d0 ldr r2, [sp, 0x60] | r2 = var_60h;
0x000241d4 add r3, r3, 2 | r3 += 2;
0x000241d8 cmp r3, r2 |
| if (r3 == r2) {
0x000241dc beq 0x241f0 | goto label_14;
| }
| }
0x000241e0 ldr r1, [pc, 0x6d0] | r1 = *(0x248b4);
0x000241e4 add r1, pc, r1 | r1 = pc + r1;
| label_5:
0x000241e8 mov r0, r4 | r0 = r4;
0x000241ec b 0x240fc | goto label_1;
| label_14:
0x000241f0 mov r1, 1 | r1 = 1;
0x000241f4 mov r0, r6 | r0 = r6;
0x000241f8 bl 0x25118 | curlx_nonblock ();
0x000241fc mvn r2, 0 | r2 = ~0;
0x00024200 mov r3, r7 | r3 = r7;
0x00024204 mov r1, r2 | r1 = r2;
0x00024208 mov r0, r6 | r0 = r6;
0x0002420c bl 0x22ea8 | r0 = Curl_socket_check ();
0x00024210 cmn r0, 1 |
| if (r0 != 1) {
0x00024214 ldreq r1, [pc, 0x6a0] | r1 = *(0x000248bc);
| }
| if (r0 == 1) {
0x00024218 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_15;
| }
| if (r0 == 1) {
| label_15:
0x0002421c beq 0x240f8 | goto label_2;
| }
0x00024220 cmp r0, 0 |
| if (r0 != 0) {
0x00024224 ldreq r1, [pc, 0x694] | r1 = *((pc + 0x694));
| }
| if (r0 == 0) {
0x00024228 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_16;
| }
| if (r0 == 0) {
| label_16:
0x0002422c beq 0x24114 | goto label_3;
| }
0x00024230 ands r1, r0, 4 | r1 = r0 & 4;
| if (r1 != r0) {
0x00024234 beq 0x24250 |
0x00024238 ldr r1, [pc, 0x684] | r1 = *(0x248c0);
0x0002423c ldr r0, [r5] | r0 = *(r5);
0x00024240 add r1, pc, r1 | r1 = pc + r1;
0x00024244 bl 0x10544 | Curl_failf ();
0x00024248 mov sb, 0x38 | sb = 0x38;
0x0002424c b 0x240a4 | goto label_4;
| }
0x00024250 mov r0, r6 | r0 = r6;
0x00024254 bl 0x25118 | curlx_nonblock ();
0x00024258 add r3, sp, 0x5c | r3 += var_5ch;
0x0002425c str r3, [sp] | *(sp) = r3;
0x00024260 mov r2, r8 | r2 = r8;
0x00024264 mov r3, 2 | r3 = 2;
0x00024268 mov r1, r6 | r1 = r6;
0x0002426c mov r0, r5 | r0 = r5;
0x00024270 bl 0x23a00 | r0 = Curl_blockread_all ();
0x00024274 cmp r0, 0 |
| if (r0 == 0) {
0x00024278 bne 0x24288 |
0x0002427c ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00024280 cmp r3, 2 |
| if (r3 == 2) {
0x00024284 beq 0x24294 | goto label_17;
| }
| }
0x00024288 ldr r1, [pc, 0x638] | r1 = *(0x248c4);
0x0002428c add r1, pc, r1 | r1 = pc + r1;
0x00024290 b 0x241e8 | goto label_5;
| label_17:
0x00024294 ldrb r3, [sp, 0xa8] | r3 = var_a8h;
0x00024298 cmp r3, 5 |
| if (r3 == 5) {
0x0002429c ldrne r1, [pc, 0x628] | r1 = *((pc + 0x628));
| }
| if (r3 != 5) {
0x000242a0 addne r1, pc, r1 | r1 = pc + r1;
| goto label_18;
| }
| if (r3 != 5) {
| label_18:
0x000242a4 bne 0x241e8 | goto label_5;
| }
0x000242a8 ldrb r3, [sp, 0xa9] | r3 = size;
0x000242ac cmp r3, 0 |
| if (r3 == 0) {
0x000242b0 beq 0x24464 | goto label_19;
| }
0x000242b4 cmp r3, 2 |
| if (r3 == 2) {
0x000242b8 bne 0x24414 |
0x000242bc ldr r2, [sp, 0x48] | r2 = s2;
0x000242c0 adds r3, sb, 0 | r3 = sb + 0;
| if (r3 == sb) {
0x000242c4 movne r3, 1 | r3 = 1;
| }
0x000242c8 adds r2, r2, 0 | r2 += 0;
| if (r2 == r2) {
0x000242cc movne r2, 1 | r2 = 1;
| }
0x000242d0 ands sl, r3, r2 | sl = r3 & r2;
0x000242d4 str r2, [sp, 0x50] | var_50h = r2;
| if (sl != r3) {
0x000242d8 moveq r7, sl | r7 = sl;
| }
| if (sl != r3) {
0x000242dc beq 0x24300 |
0x000242e0 mov r0, sb | r0 = sb;
0x000242e4 str r3, [sp, 0x54] | var_54h = r3;
0x000242e8 bl 0x5250 | r0 = strlen (r0);
0x000242ec mov r7, r0 | r7 = r0;
0x000242f0 ldr r0, [sp, 0x48] | r0 = s2;
0x000242f4 bl 0x5250 | strlen (r0);
0x000242f8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000242fc mov sl, r0 | sl = r0;
| }
0x00024300 cmp r7, 0 |
| if (r7 != 0) {
0x00024304 moveq r3, 0 | r3 = 0;
| }
0x00024308 mov r2, 1 | r2 = 1;
0x0002430c cmp r3, 0 |
0x00024310 strb r2, [sp, 0xa8] | var_a8h = r2;
0x00024314 strb r7, [sp, 0xa9] | size = r7;
0x00024318 add r3, sp, 0xa8 | r3 += var_a8h;
| if (r3 != 0) {
0x0002431c beq 0x24338 |
0x00024320 add r0, r3, 2 | r0 += s1;
0x00024324 mov r2, r7 | r2 = r7;
0x00024328 mov r1, sb | r1 = sb;
0x0002432c str r3, [sp, 0x54] | var_54h = r3;
0x00024330 bl 0x4f5c | memcpy (r0, r1, r2);
0x00024334 ldr r3, [sp, 0x54] | r3 = var_54h;
| }
0x00024338 add r2, sp, 0x300 | r2 += var_300h;
0x0002433c add r2, r2, r7 | r2 += r7;
0x00024340 strb sl, [r2, -0x256] | s1 = sl;
0x00024344 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00024348 cmp sl, 0 |
| if (sl != 0) {
0x0002434c moveq r2, 0 | r2 = 0;
| }
0x00024350 cmp r2, 0 |
0x00024354 add r7, r7, 3 | r7 += 3;
| if (r2 != 0) {
0x00024358 beq 0x2436c |
0x0002435c mov r2, sl | r2 = sl;
0x00024360 ldr r1, [sp, 0x48] | r1 = s2;
0x00024364 add r0, r3, r7 | r0 = r3 + r7;
0x00024368 bl 0x4f5c | memcpy (r0, r1, r2);
| }
0x0002436c add sl, sl, r7 | sl += r7;
0x00024370 add r3, sp, 0x60 | r3 += var_60h;
0x00024374 add r7, sp, 0xa8 | r7 += var_a8h;
0x00024378 str r3, [sp] | *(sp) = r3;
0x0002437c mov r2, r7 | r2 = r7;
0x00024380 mov r3, sl | r3 = sl;
0x00024384 mov r1, r6 | r1 = r6;
0x00024388 mov r0, r5 | r0 = r5;
0x0002438c bl 0x10700 | r0 = Curl_write_plain ();
0x00024390 cmp r0, 0 |
| if (r0 == 0) {
0x00024394 bne 0x243a4 |
0x00024398 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0002439c cmp r3, sl |
| if (r3 == sl) {
0x000243a0 beq 0x243b0 | goto label_20;
| }
| }
0x000243a4 ldr r1, [pc, 0x524] | r1 = *(0x248cc);
0x000243a8 add r1, pc, r1 | r1 = pc + r1;
0x000243ac b 0x241e8 | goto label_5;
| label_20:
0x000243b0 add r3, sp, 0x5c | r3 += var_5ch;
0x000243b4 str r3, [sp] | *(sp) = r3;
0x000243b8 mov r2, r7 | r2 = r7;
0x000243bc mov r3, 2 | r3 = 2;
0x000243c0 mov r1, r6 | r1 = r6;
0x000243c4 mov r0, r5 | r0 = r5;
0x000243c8 bl 0x23a00 | r0 = Curl_blockread_all ();
0x000243cc cmp r0, 0 |
| if (r0 == 0) {
0x000243d0 bne 0x243e0 |
0x000243d4 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000243d8 cmp r3, 2 |
| if (r3 == 2) {
0x000243dc beq 0x243ec | goto label_21;
| }
| }
0x000243e0 ldr r1, [pc, 0x4ec] | r1 = *(0x248d0);
0x000243e4 add r1, pc, r1 | r1 = pc + r1;
0x000243e8 b 0x241e8 | goto label_5;
| label_21:
0x000243ec ldrb r3, [sp, 0xa9] | r3 = size;
0x000243f0 cmp r3, 0 |
| if (r3 == 0) {
0x000243f4 beq 0x24464 | goto label_19;
| }
0x000243f8 ldr r1, [pc, 0x4d8] | r1 = *(0x248d4);
0x000243fc ldrb r2, [sp, 0xa8] | r2 = var_a8h;
0x00024400 add r1, pc, r1 | r1 = pc + r1;
0x00024404 mov r0, r4 | r0 = r4;
0x00024408 bl 0x10544 | Curl_failf ();
| label_9:
0x0002440c mov sb, 7 | sb = 7;
0x00024410 b 0x240a4 | goto label_4;
| }
0x00024414 cmp r3, 1 |
| if (r3 != 1) {
0x00024418 ldreq r1, [pc, 0x4bc] | r1 = *(0x000248dc);
| }
| if (r3 == 1) {
0x0002441c addeq r1, pc, r1 | r1 = pc + r1;
| goto label_22;
| }
| if (r3 == 1) {
| label_22:
0x00024420 beq 0x241e8 | goto label_5;
| }
0x00024424 cmp r3, 0xff |
| if (r3 == 0xff) {
0x00024428 bne 0x24458 |
0x0002442c cmp sb, 0 |
| if (sb != 0) {
0x00024430 beq 0x24440 |
0x00024434 ldrb r3, [sb] | r3 = *(sb);
0x00024438 cmp r3, 0 |
| if (r3 != 0) {
0x0002443c bne 0x2444c | goto label_23;
| }
| }
0x00024440 ldr r1, [pc, 0x498] | r1 = *(0x248dc);
0x00024444 add r1, pc, r1 | r1 = pc + r1;
0x00024448 b 0x241e8 | goto label_5;
| label_23:
0x0002444c ldr r1, [pc, 0x490] | r1 = *(0x248e0);
0x00024450 add r1, pc, r1 | r1 = pc + r1;
0x00024454 b 0x241e8 | goto label_5;
| }
0x00024458 ldr r1, [pc, 0x488] | r1 = *(0x248e4);
0x0002445c add r1, pc, r1 | r1 = pc + r1;
0x00024460 b 0x241e8 | goto label_5;
| label_19:
0x00024464 ldr r3, [pc, 0x480] | r3 = *(0x248e8);
0x00024468 add r7, sp, 0xa8 | r7 += var_a8h;
0x0002446c strh r3, [r7] | *(r7) = r3;
0x00024470 mov r3, 0 | r3 = 0;
0x00024474 strb r3, [sp, 0xaa] | s1 = r3;
0x00024478 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0002447c cmp r3, 0 |
| if (r3 == 0) {
0x00024480 bne 0x24508 |
0x00024484 mov r3, 3 | r3 = 3;
0x00024488 strb r3, [sp, 0xab] | var_abh = r3;
0x0002448c ldr r3, [sp, 0x40] | r3 = var_40h;
0x00024490 add r0, r7, 5 | r0 += var_adh;
0x00024494 mov r2, r3 | r2 = r3;
0x00024498 mov r1, fp | r1 = fp;
0x0002449c strb r3, [sp, 0xac] | var_ach = r3;
0x000244a0 bl 0x4f5c | memcpy (r0, r1, r2);
0x000244a4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000244a8 add r7, r3, 5 | r7 = r3 + 5;
| label_7:
0x000244ac ldr r2, [sp, 0x44] | r2 = var_44h;
0x000244b0 add r3, sp, 0x300 | r3 += var_300h;
0x000244b4 add r3, r3, r7 | r3 += r7;
0x000244b8 asr r2, r2, 8 | r2 >>= 8;
0x000244bc strb r2, [r3, -0x258] | var_abh = r2;
0x000244c0 ldr r2, [sp, 0x44] | r2 = var_44h;
0x000244c4 add r7, r7, 2 | r7 += 2;
0x000244c8 strb r2, [r3, -0x257] | var_ach = r2;
0x000244cc add r3, sp, 0x60 | r3 += var_60h;
0x000244d0 str r3, [sp] | *(sp) = r3;
0x000244d4 mov r2, r8 | r2 = r8;
0x000244d8 mov r3, r7 | r3 = r7;
0x000244dc mov r1, r6 | r1 = r6;
0x000244e0 mov r0, r5 | r0 = r5;
0x000244e4 bl 0x10700 | r0 = Curl_write_plain ();
0x000244e8 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x000244ec bne 0x244fc |
0x000244f0 ldr r3, [sp, 0x60] | r3 = var_60h;
0x000244f4 cmp r3, r7 |
| if (r3 == r7) {
0x000244f8 beq 0x24664 | goto label_24;
| }
| }
0x000244fc ldr r1, [pc, 0x3ec] | r1 = *(0x248ec);
0x00024500 add r1, pc, r1 | r1 = pc + r1;
0x00024504 b 0x241e8 | goto label_5;
| }
0x00024508 add sb, sp, 0x64 | sb += var_64h;
0x0002450c mov r3, sb | r3 = sb;
0x00024510 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00024514 mov r1, fp | r1 = fp;
0x00024518 mov r0, r5 | r0 = r5;
0x0002451c bl 0x74ec | r0 = Curl_resolv ();
0x00024520 cmn r0, 1 |
| if (r0 == 1) {
0x00024524 beq 0x24550 | goto label_25;
| }
0x00024528 cmp r0, 1 |
0x0002452c beq 0x24558 |
| while (sb == r0) {
0x00024530 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00024534 cmp r3, 0 |
| if (r3 != 0) {
0x00024538 bne 0x24570 | goto label_26;
| }
| label_6:
0x0002453c ldr r1, [pc, 0x3b0] | r1 = *(0x248f0);
0x00024540 mov r2, fp | r2 = fp;
0x00024544 add r1, pc, r1 | r1 = pc + r1;
0x00024548 mov r0, r4 | r0 = r4;
0x0002454c bl 0x10544 | Curl_failf ();
| label_25:
0x00024550 mov sb, 6 | sb = 6;
0x00024554 b 0x240a4 | goto label_4;
0x00024558 mov r1, sb | r1 = sb;
0x0002455c mov r0, r5 | r0 = r5;
0x00024560 bl 0x26624 | r0 = Curl_resolver_wait_resolv ();
0x00024564 subs sb, r0, 0 | sb = r0 - 0;
0x00024568 beq 0x24530 |
| }
0x0002456c b 0x240a4 | goto label_4;
| label_26:
0x00024570 ldr sb, [r3] | sb = *(r3);
0x00024574 cmp sb, 0 |
| if (sb == 0) {
0x00024578 beq 0x2453c | goto label_6;
| }
0x0002457c add sl, sp, 0x68 | sl += var_68h;
0x00024580 mov r2, 0x40 | r2 = 0x40;
0x00024584 mov r1, sl | r1 = sl;
0x00024588 mov r0, sb | r0 = sb;
0x0002458c bl 0x711c | Curl_printable_address ();
0x00024590 ldr r3, [sb, 4] | r3 = *((sb + 4));
0x00024594 cmp r3, 2 |
| if (r3 != 2) {
0x00024598 bne 0x245f8 | goto label_27;
| }
0x0002459c mov r3, 1 | r3 = 1;
0x000245a0 strb r3, [sp, 0xab] | var_abh = r3;
0x000245a4 ldr r3, [sb, 0x18] | r3 = *((sb + 0x18));
0x000245a8 ldr r1, [pc, 0x348] | r1 = *(0x248f4);
0x000245ac ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x000245b0 add r1, pc, r1 | r1 = pc + r1;
0x000245b4 strb r2, [sp, 0xac] | var_ach = r2;
0x000245b8 ldrb r2, [r3, 5] | r2 = *((r3 + 5));
0x000245bc mov r0, r4 | r0 = r4;
0x000245c0 strb r2, [sp, 0xad] | var_adh = r2;
0x000245c4 ldrb r2, [r3, 6] | r2 = *((r3 + 6));
0x000245c8 mov r7, 8 | r7 = 8;
0x000245cc strb r2, [sp, 0xae] | var_aeh = r2;
0x000245d0 ldrb r3, [r3, 7] | r3 = *((r3 + 7));
0x000245d4 mov r2, sl | r2 = sl;
0x000245d8 strb r3, [sp, 0xaf] | var_afh = r3;
0x000245dc bl 0x104cc | Curl_infof ();
| label_8:
0x000245e0 ldr r1, [sp, 0x64] | r1 = var_64h;
0x000245e4 mov r0, r4 | r0 = r4;
0x000245e8 bl 0x76e8 | Curl_resolv_unlock ();
0x000245ec cmp sb, 0 |
| if (sb != 0) {
0x000245f0 bne 0x244ac | goto label_7;
| }
0x000245f4 b 0x2453c | goto label_6;
| label_27:
0x000245f8 cmp r3, 0xa |
| if (r3 != 0xa) {
0x000245fc bne 0x24644 | goto label_28;
| }
0x00024600 mov r3, 4 | r3 = 4;
0x00024604 strb r3, [sp, 0xab] | var_abh = r3;
0x00024608 ldr r3, [sb, 0x18] | r3 = *((sb + 0x18));
0x0002460c add r7, r7, 3 | r7 += var_abh;
0x00024610 add r2, r3, 7 | r2 = r3 + 7;
0x00024614 add r3, r3, 0x17 | r3 += 0x17;
| do {
0x00024618 ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x0002461c cmp r3, r2 |
0x00024620 strb r1, [r7, 1]! | *((r7 += 1)) = r1;
0x00024624 bne 0x24618 |
| } while (r3 != r2);
0x00024628 ldr r1, [pc, 0x2cc] | r1 = *(0x248f8);
0x0002462c mov r2, sl | r2 = sl;
0x00024630 add r1, pc, r1 | r1 = pc + r1;
0x00024634 mov r0, r4 | r0 = r4;
0x00024638 bl 0x104cc | Curl_infof ();
0x0002463c mov r7, 0x14 | r7 = 0x14;
0x00024640 b 0x245e0 | goto label_8;
| label_28:
0x00024644 ldr r1, [pc, 0x2b4] | r1 = *(0x248fc);
0x00024648 mov r2, sl | r2 = sl;
0x0002464c add r1, pc, r1 | r1 = pc + r1;
0x00024650 mov r0, r4 | r0 = r4;
0x00024654 bl 0x10544 | Curl_failf ();
0x00024658 mov sb, 0 | sb = 0;
0x0002465c mov r7, 3 | r7 = 3;
0x00024660 b 0x245e0 | goto label_8;
| label_24:
0x00024664 add fp, sp, 0x5c |
0x00024668 str fp, [sp] | *(sp) = fp;
0x0002466c mov r3, 0xa | r3 = 0xa;
0x00024670 mov r2, r8 | r2 = r8;
0x00024674 mov r1, r6 | r1 = r6;
0x00024678 mov r0, r5 | r0 = r5;
0x0002467c bl 0x23a00 | r0 = Curl_blockread_all ();
0x00024680 cmp r0, 0 |
| if (r0 == 0) {
0x00024684 bne 0x24694 |
0x00024688 ldr r7, [sp, 0x5c] | r7 = var_5ch;
0x0002468c cmp r7, 0xa |
| if (r7 == 0xa) {
0x00024690 beq 0x246a0 | goto label_29;
| }
| }
0x00024694 ldr r1, [pc, 0x268] | r1 = *(0x24900);
0x00024698 add r1, pc, r1 | r1 = pc + r1;
0x0002469c b 0x241e8 | goto label_5;
| label_29:
0x000246a0 ldrb r3, [sp, 0xa8] | r3 = var_a8h;
0x000246a4 cmp r3, 5 |
| if (r3 == 5) {
0x000246a8 ldrne r1, [pc, 0x258] | r1 = *((pc + 0x258));
| }
| if (r3 != 5) {
0x000246ac addne r1, pc, r1 | r1 = pc + r1;
| goto label_30;
| }
| if (r3 != 5) {
| label_30:
0x000246b0 bne 0x241e8 | goto label_5;
| }
0x000246b4 ldrb r3, [sp, 0xab] | r3 = var_abh;
0x000246b8 cmp r3, 3 |
| if (r3 != 3) {
0x000246bc bne 0x24730 | goto label_31;
| }
0x000246c0 ldrb r7, [sp, 0xac] | r7 = var_ach;
0x000246c4 add r7, r7, 7 | r7 += 7;
0x000246c8 cmp r7, 0xa |
| if (r7 > 0xa) {
0x000246cc bgt 0x2473c | goto label_32;
| }
| do {
| label_10:
0x000246d0 ldrb r1, [sp, 0xa9] | r1 = size;
0x000246d4 cmp r1, 0 |
| if (r1 == 0) {
0x000246d8 beq 0x24878 | goto label_33;
| }
0x000246dc ldrb r3, [sp, 0xab] | r3 = var_abh;
0x000246e0 cmp r3, 1 |
| if (r3 != 1) {
0x000246e4 bne 0x24778 | goto label_34;
| }
0x000246e8 str r1, [sp, 0xc] | var_ch = r1;
0x000246ec ldrh r0, [r8, 8] | r0 = var_b0h;
0x000246f0 ldrb r3, [sp, 0xad] | r3 = var_adh;
0x000246f4 lsr r1, r0, 8 | r1 = r0 >> 8;
0x000246f8 orr r1, r1, r0, lsl 8 | r1 |= (r0 << 8);
0x000246fc lsl r1, r1, 0x10 | r1 <<= 0x10;
0x00024700 lsr r1, r1, 0x10 | r1 >>= 0x10;
0x00024704 str r1, [sp, 8] | var_8h = r1;
0x00024708 ldrb r1, [sp, 0xaf] | r1 = var_afh;
0x0002470c ldrb r2, [sp, 0xac] | r2 = var_ach;
0x00024710 str r1, [sp, 4] | var_4h = r1;
0x00024714 ldrb r1, [sp, 0xae] | r1 = var_aeh;
0x00024718 mov r0, r4 | r0 = r4;
0x0002471c str r1, [sp] | *(sp) = r1;
0x00024720 ldr r1, [pc, 0x1e4] | r1 = *(0x24908);
0x00024724 add r1, pc, r1 | r1 = pc + r1;
0x00024728 bl 0x10544 | Curl_failf ();
0x0002472c b 0x2440c | goto label_9;
| label_31:
0x00024730 cmp r3, 4 |
0x00024734 bne 0x246d0 |
| } while (r3 != 4);
0x00024738 mov r7, 0x16 | r7 = 0x16;
| label_32:
0x0002473c sub sl, r7, 0xa | sl = r7 - 0xa;
0x00024740 str fp, [sp] | *(sp) = fp;
0x00024744 mov r3, sl | r3 = sl;
0x00024748 add r2, r8, 0xa | r2 += var_b2h;
0x0002474c mov r1, r6 | r1 = r6;
0x00024750 mov r0, r5 | r0 = r5;
0x00024754 bl 0x23a00 | r0 = Curl_blockread_all ();
0x00024758 cmp r0, 0 |
| if (r0 != 0) {
0x0002475c bne 0x2476c | goto label_35;
| }
0x00024760 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00024764 cmp sl, r3 |
| if (sl == r3) {
0x00024768 beq 0x246d0 | goto label_10;
| }
| label_35:
0x0002476c ldr r1, [pc, 0x19c] | r1 = *(0x2490c);
0x00024770 add r1, pc, r1 | r1 = pc + r1;
0x00024774 b 0x241e8 | goto label_5;
| label_34:
0x00024778 cmp r3, 3 |
| if (r3 == 3) {
0x0002477c bne 0x247c8 |
0x00024780 add r3, sp, 0x300 | r3 += var_300h;
0x00024784 sub r2, r7, 2 | r2 = r7 - 2;
0x00024788 add r2, r3, r2 | r2 = r3 + r2;
0x0002478c mov r3, 0 | r3 = 0;
0x00024790 ldrb r1, [r2, -0x258] | r1 = var_258h;
0x00024794 strb r3, [r2, -0x258] | var_258h = r3;
0x00024798 add r3, sp, 0x300 | r3 += var_300h;
0x0002479c add r7, r3, r7 | r7 = r3 + r7;
0x000247a0 ldrb r3, [r7, -0x259] | r3 = var_259h;
0x000247a4 ldrb r2, [sp, 0xa9] | r2 = size;
0x000247a8 orr r3, r3, r1, lsl 8 | r3 |= (r1 << 8);
0x000247ac ldr r1, [pc, 0x160] | r1 = *(0x24910);
0x000247b0 str r2, [sp] | *(sp) = r2;
0x000247b4 add r1, pc, r1 | r1 = pc + r1;
0x000247b8 add r2, r8, 5 | r2 += var_adh;
0x000247bc mov r0, r4 | r0 = r4;
0x000247c0 bl 0x10544 | Curl_failf ();
0x000247c4 b 0x2440c | goto label_9;
| }
0x000247c8 cmp r3, 4 |
| if (r3 != 4) {
0x000247cc bne 0x2440c | goto label_9;
| }
0x000247d0 str r1, [sp, 0x3c] | var_3ch = r1;
0x000247d4 ldrh r0, [r8, 0x14] | r0 = var_14h_2;
0x000247d8 ldrb r3, [sp, 0xad] | r3 = var_adh;
0x000247dc lsr r1, r0, 8 | r1 = r0 >> 8;
0x000247e0 orr r1, r1, r0, lsl 8 | r1 |= (r0 << 8);
0x000247e4 lsl r1, r1, 0x10 | r1 <<= 0x10;
0x000247e8 lsr r1, r1, 0x10 | r1 >>= 0x10;
0x000247ec str r1, [sp, 0x38] | var_38h = r1;
0x000247f0 ldrb r1, [sp, 0xbb] | r1 = var_bbh;
0x000247f4 ldrb r2, [sp, 0xac] | r2 = var_ach;
0x000247f8 str r1, [sp, 0x34] | var_34h = r1;
0x000247fc ldrb r1, [sp, 0xba] | r1 = var_bah;
0x00024800 mov r0, r4 | r0 = r4;
0x00024804 str r1, [sp, 0x30] | var_30h = r1;
0x00024808 ldrb r1, [sp, 0xb9] | r1 = var_b9h;
0x0002480c str r1, [sp, 0x2c] | var_2ch = r1;
0x00024810 ldrb r1, [sp, 0xb8] | r1 = var_b8h;
0x00024814 str r1, [sp, 0x28] | var_28h = r1;
0x00024818 ldrb r1, [sp, 0xb7] | r1 = var_b7h;
0x0002481c str r1, [sp, 0x24] | var_24h = r1;
0x00024820 ldrb r1, [sp, 0xb6] | r1 = var_b6h;
0x00024824 str r1, [sp, 0x20] | var_20h = r1;
0x00024828 ldrb r1, [sp, 0xb5] | r1 = var_b5h;
0x0002482c str r1, [sp, 0x1c] | var_1ch = r1;
0x00024830 ldrb r1, [sp, 0xb4] | r1 = var_b4h;
0x00024834 str r1, [sp, 0x18] | var_18h = r1;
0x00024838 ldrb r1, [sp, 0xb3] | r1 = var_b3h;
0x0002483c str r1, [sp, 0x14] | var_14h = r1;
0x00024840 ldrb r1, [sp, 0xb2] | r1 = var_b2h;
0x00024844 str r1, [sp, 0x10] | var_10h = r1;
0x00024848 ldrb r1, [sp, 0xb1] | r1 = var_b1h;
0x0002484c str r1, [sp, 0xc] | var_ch = r1;
0x00024850 ldrb r1, [sp, 0xb0] | r1 = var_b0h;
0x00024854 str r1, [sp, 8] | var_8h = r1;
0x00024858 ldrb r1, [sp, 0xaf] | r1 = var_afh;
0x0002485c str r1, [sp, 4] | var_4h = r1;
0x00024860 ldrb r1, [sp, 0xae] | r1 = var_aeh;
0x00024864 str r1, [sp] | *(sp) = r1;
0x00024868 ldr r1, [pc, 0xa8] | r1 = *(0x24914);
0x0002486c add r1, pc, r1 | r1 = pc + r1;
0x00024870 bl 0x10544 | Curl_failf ();
0x00024874 b 0x2440c | goto label_9;
| label_33:
0x00024878 ldr r1, [pc, 0x9c] | r1 = *(0x24918);
0x0002487c mov r0, r4 | r0 = r4;
0x00024880 add r1, pc, r1 | r1 = pc + r1;
0x00024884 bl 0x104cc | Curl_infof ();
0x00024888 mov r1, 1 | r1 = 1;
0x0002488c mov r0, r6 | r0 = r6;
0x00024890 bl 0x25118 | curlx_nonblock ();
0x00024894 b 0x240a4 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc8bc */
| #include <stdint.h>
|
; (fcn) sym.Curl_add_buffer_init () | void Curl_add_buffer_init () {
0x0000c8bc ldr r3, [pc, 0x18] |
0x0000c8c0 ldr r2, [pc, 0x18] | r2 = $d;
0x0000c8c4 add r3, pc, r3 | r3 = pc + r3;
0x0000c8c8 ldr r3, [r3, r2] |
0x0000c8cc mov r1, 0xc | r1 = 0xc;
0x0000c8d0 ldr r3, [r3] | r3 = *(0xc8d8);
0x0000c8d4 mov r0, 1 | r0 = 1;
0x0000c8d8 bx r3 | return uint32_t (*r3)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc8e4 */
| #include <stdint.h>
|
; (fcn) sym.Curl_add_buffer_free () | void Curl_add_buffer_free (int32_t arg1) {
| r0 = arg1;
0x0000c8e4 ldr r3, [pc, 0x30] | r3 = *(0xc918);
0x0000c8e8 ldr r2, [pc, 0x30] | r2 = $d;
0x0000c8ec add r3, pc, r3 | r3 = pc + r3;
0x0000c8f0 push {r4, r5, r6, lr} |
0x0000c8f4 ldr r5, [r3, r2] | r5 = *(0xc918);
0x0000c8f8 subs r4, r0, 0 | r4 = r0 - 0;
0x0000c8fc ldr r3, [r5] | r3 = *(0xc918);
| if (r4 != r0) {
0x0000c900 beq 0xc90c |
0x0000c904 ldr r0, [r4] | r0 = *(r4);
0x0000c908 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x0000c90c ldr r3, [r5] | r3 = *(r5);
0x0000c910 mov r0, r4 | r0 = r4;
0x0000c914 pop {r4, r5, r6, lr} |
0x0000c918 bx r3 | return uint32_t (*r3)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xca20 */
| #include <stdint.h>
|
; (fcn) sym.Curl_add_buffer_send () | void Curl_add_buffer_send (int32_t arg_40h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0000ca20 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000ca24 sub sp, sp, 0x1c |
0x0000ca28 mov r7, r3 | r7 = r3;
0x0000ca2c ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0000ca30 mov sl, r0 | sl = r0;
0x0000ca34 add r3, r3, 0x66 | r3 += 0x66;
0x0000ca38 ldr r8, [r1, r3, lsl 2] | offset_0 = r3 << 2;
| r8 = *((r1 + offset_0));
0x0000ca3c ldr r3, [r1, 0x284] | r3 = *((r1 + 0x284));
0x0000ca40 ldr r0, [r1] | r0 = *(r1);
0x0000ca44 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0000ca48 mov r5, r1 | r5 = r1;
0x0000ca4c tst r3, 1 |
0x0000ca50 mov fp, r2 |
0x0000ca54 ldr r4, [r0, 0x12c] | r4 = *((r0 + 0x12c));
0x0000ca58 ldr sb, [sl] | sb = *(sl);
0x0000ca5c ldr r6, [sl, 8] | r6 = *((sl + 8));
| if ((r3 & 1) == 0) {
0x0000ca60 bne 0xca70 |
0x0000ca64 ldr r3, [r1, 0xf0] | r3 = *((r1 + 0xf0));
0x0000ca68 cmp r3, 2 |
| if (r3 != 2) {
0x0000ca6c bne 0xcbc4 | goto label_2;
| }
| }
0x0000ca70 ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000ca74 cmp r3, 0x14 |
| if (r3 == 0x14) {
0x0000ca78 beq 0xcbc4 | goto label_2;
| }
0x0000ca7c cmp r6, 0x4000 |
| if (r6 >= 0x4000) {
0x0000ca80 movlo r3, r6 | r3 = r6;
| }
| if (r6 < 0x4000) {
0x0000ca84 movhs r3, 0x4000 | r3 = 0x4000;
| }
0x0000ca88 mov r2, r3 | r2 = r3;
0x0000ca8c mov r1, sb | r1 = sb;
0x0000ca90 add r0, r0, 0x7d0 | r0 += 0x7d0;
0x0000ca94 str r3, [sp, 0xc] | var_ch = r3;
0x0000ca98 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000ca9c ldr sb, [r5] | sb = *(r5);
0x0000caa0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000caa4 add sb, sb, 0x7d0 | sb += 0x7d0;
| do {
0x0000caa8 add r2, sp, 0x14 | r2 += var_14h;
0x0000caac str r2, [sp] | *(sp) = r2;
0x0000cab0 mov r1, r8 | r1 = r8;
0x0000cab4 mov r2, sb | r2 = sb;
0x0000cab8 mov r0, r5 | r0 = r5;
0x0000cabc bl 0x10244 | r0 = Curl_write ();
0x0000cac0 subs r3, r0, 0 | r3 = r0 - 0;
0x0000cac4 str r3, [sp, 0xc] | var_ch = r3;
| if (r3 != r0) {
0x0000cac8 bne 0xcbd4 | goto label_1;
| }
0x0000cacc ldr r0, [r5] | r0 = *(r5);
0x0000cad0 ldr r8, [sp, 0x14] | r8 = var_14h;
0x0000cad4 ldrb r3, [r0, 0x4d8] | r3 = *((r0 + 0x4d8));
0x0000cad8 sub r7, r6, r7 | r7 = r6 - r7;
0x0000cadc cmp r7, r8 |
| if (r7 < r8) {
0x0000cae0 movhs r7, r8 | r7 = r8;
| }
0x0000cae4 cmp r3, 0 |
0x0000cae8 sub r8, r8, r7 | r8 -= r7;
| if (r3 != 0) {
0x0000caec beq 0xcb1c |
0x0000caf0 mov r3, r7 | r3 = r7;
0x0000caf4 mov r2, sb | r2 = sb;
0x0000caf8 mov r1, 2 | r1 = 2;
0x0000cafc bl 0x10424 | Curl_debug ();
0x0000cb00 cmp r8, 0 |
| if (r8 == 0) {
0x0000cb04 beq 0xcb1c | goto label_3;
| }
0x0000cb08 mov r3, r8 | r3 = r8;
0x0000cb0c add r2, sb, r7 | r2 = sb + r7;
0x0000cb10 mov r1, 4 | r1 = 4;
0x0000cb14 ldr r0, [r5] | r0 = *(r5);
0x0000cb18 bl 0x10424 | Curl_debug ();
| }
| label_3:
0x0000cb1c ldr r3, [fp] | r3 = *(fp);
0x0000cb20 ldr r7, [sp, 0x14] | r7 = var_14h;
0x0000cb24 cmp r4, 0 |
0x0000cb28 add r3, r3, r7 | r3 += r7;
0x0000cb2c str r3, [fp] | *(fp) = r3;
| if (r4 == 0) {
0x0000cb30 beq 0xcbe0 | goto label_4;
| }
0x0000cb34 ldrd r2, r3, [r4, 0x28] | __asm ("ldrd r2, r3, [r4, 0x28]");
0x0000cb38 adds r0, r2, r8 | r0 = r2 + r8;
0x0000cb3c adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0000cb40 mov r2, r0 | r2 = r0;
0x0000cb44 mov r3, r1 | r3 = r1;
0x0000cb48 cmp r6, r7 |
0x0000cb4c strd r2, r3, [r4, 0x28] | __asm ("strd r2, r3, [r4, 0x28]");
| if (r6 == r7) {
0x0000cb50 beq 0xcbcc | goto label_5;
| }
0x0000cb54 ldr r0, [r5] | r0 = *(r5);
0x0000cb58 ldr ip, [sl] | ip = *(sl);
0x0000cb5c add r0, r0, 0x4000 | r0 += 0x4000;
0x0000cb60 ldr r3, [r0, 0xa20] | r3 = *((r0 + 0xa20));
0x0000cb64 add lr, r4, 0x1b0 | lr = r4 + 0x1b0;
0x0000cb68 str r3, [r4, 0x198] | *((r4 + 0x198)) = r3;
0x0000cb6c ldr r3, [r0, 0xa24] | r3 = *((r0 + 0xa24));
0x0000cb70 add ip, ip, r7 |
0x0000cb74 str r3, [r4, 0x19c] | *((r4 + 0x19c)) = r3;
0x0000cb78 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000cb7c sub r6, r6, r7 | r6 -= r7;
0x0000cb80 str r3, [r4, 0x1a0] | *((r4 + 0x1a0)) = r3;
0x0000cb84 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x0000cb88 strd r2, r3, [lr, -8] | __asm ("strd r2, r3, [lr, -8]");
0x0000cb8c ldr r3, [pc, 0x68] | r3 = *(0xcbf8);
0x0000cb90 str r5, [r0, 0xa24] | *((r0 + 0xa24)) = r5;
0x0000cb94 add r3, pc, r3 | r3 = pc + r3;
0x0000cb98 str r3, [r0, 0xa20] | *((r0 + 0xa20)) = r3;
0x0000cb9c mov r3, 0 | r3 = 0;
0x0000cba0 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0000cba4 mov r3, 1 | r3 = 1;
0x0000cba8 str ip, [r4, 0x10] | *((r4 + 0x10)) = ip;
0x0000cbac str r6, [r4, 8] | *((r4 + 8)) = r6;
0x0000cbb0 str sl, [r4, 0x1b4] | *((r4 + 0x1b4)) = sl;
0x0000cbb4 str r3, [r4, 0x1b0] | *((r4 + 0x1b0)) = r3;
| label_0:
0x0000cbb8 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0000cbbc add sp, sp, 0x1c |
0x0000cbc0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0000cbc4 mov r3, r6 | r3 = r6;
0x0000cbc8 b 0xcaa8 |
| } while (1);
| label_5:
0x0000cbcc mov r3, 2 | r3 = 2;
0x0000cbd0 str r3, [r4, 0x1b0] | *((r4 + 0x1b0)) = r3;
| label_1:
0x0000cbd4 mov r0, sl | r0 = sl;
0x0000cbd8 bl 0xc8e4 | Curl_add_buffer_free ();
0x0000cbdc b 0xcbb8 | goto label_0;
| label_4:
0x0000cbe0 cmp r6, r7 |
| if (r6 == r7) {
0x0000cbe4 movne r3, 0x37 | r3 = 0x37;
| }
| if (r6 != r7) {
0x0000cbe8 strne r3, [sp, 0xc] | var_ch = r3;
| goto label_6;
| }
| if (r6 != r7) {
| label_6:
0x0000cbec bne 0xcbb8 | goto label_0;
| }
0x0000cbf0 mov r0, r5 | r0 = r5;
0x0000cbf4 bl 0x29400 | Curl_pipeline_leave_write ();
0x0000cbf8 b 0xcbd4 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xcc00 */
| #include <stdint.h>
|
; (fcn) sym.Curl_add_buffer () | void Curl_add_buffer (uint32_t arg1, char * arg2) {
| r0 = arg1;
| r1 = arg2;
0x0000cc00 push {r4, r5, r6, r7, r8, lr} |
0x0000cc04 ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x0000cc08 ldr r7, [pc, 0xfc] | r7 = *(0xcd08);
0x0000cc0c mvn r3, r2 | r3 = ~r2;
0x0000cc10 cmp r3, r4 |
0x0000cc14 mov r5, r0 | r5 = r0;
0x0000cc18 add r7, pc, r7 | r7 = pc + r7;
0x0000cc1c ldr r0, [r0] | r0 = *(r0);
| if (r3 >= r4) {
0x0000cc20 bhs 0xcc50 | goto label_1;
| }
0x0000cc24 ldr r3, [pc, 0xe4] | r3 = $d;
0x0000cc28 ldr r4, [r7, r3] | r4 = *((r7 + r3));
0x0000cc2c ldr r3, [r4] | r3 = *(r4);
0x0000cc30 blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x0000cc34 mov r3, 0 | r3 = 0;
0x0000cc38 str r3, [r5] | *(r5) = r3;
0x0000cc3c ldr r3, [r4] | r3 = *(r4);
| do {
0x0000cc40 mov r0, r5 | r0 = r5;
0x0000cc44 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000cc48 mov r0, 0x1b | r0 = 0x1b;
0x0000cc4c pop {r4, r5, r6, r7, r8, pc} |
| label_1:
0x0000cc50 cmp r0, 0 |
0x0000cc54 mov r8, r1 | r8 = r1;
0x0000cc58 mov r6, r2 | r6 = r2;
| if (r0 != 0) {
0x0000cc5c beq 0xcc74 |
0x0000cc60 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0000cc64 add r2, r4, r2 | r2 = r4 + r2;
0x0000cc68 sub r3, r3, 1 | r3--;
0x0000cc6c cmp r2, r3 |
| if (r2 < r3) {
0x0000cc70 bls 0xcce0 | goto label_2;
| }
| }
0x0000cc74 cmp r6, 0 |
| if (r6 >= 0) {
0x0000cc78 blt 0xcc98 |
0x0000cc7c cmp r4, 0 |
| if (r4 < 0) {
0x0000cc80 blt 0xcc98 | goto label_3;
| }
0x0000cc84 mvn r3, r6, lsl 1 | r3 = ~r6;
0x0000cc88 cmp r3, r4, lsl 1 |
| if (r3 < r4) {
0x0000cc8c addhs r4, r4, r6 | r4 += r6;
| }
| if (r3 < r4) {
0x0000cc90 lslhs r4, r4, 1 | r4 <<= 1;
| }
| if (r3 >= r4) {
0x0000cc94 bhs 0xcc9c | goto label_4;
| }
| }
| label_3:
0x0000cc98 mvn r4, 0 | r4 = ~0;
| label_4:
0x0000cc9c cmp r0, 0 |
| if (r0 == 0) {
0x0000cca0 beq 0xccc4 | goto label_5;
| }
0x0000cca4 mov r1, r4 | r1 = r4;
0x0000cca8 bl 0x23998 | r0 = Curl_saferealloc ();
| label_0:
0x0000ccac cmp r0, 0 |
| if (r0 != 0) {
0x0000ccb0 bne 0xccdc | goto label_6;
| }
0x0000ccb4 ldr r3, [pc, 0x54] |
0x0000ccb8 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000ccbc ldr r3, [r3] | r3 = $d;
0x0000ccc0 b 0xcc40 |
| } while (1);
| label_5:
0x0000ccc4 ldr r3, [pc, 0x48] |
0x0000ccc8 mov r0, r4 | r0 = r4;
0x0000cccc ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000ccd0 ldr r3, [r3] | r3 = *(0xcd10);
0x0000ccd4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000ccd8 b 0xccac | goto label_0;
| label_6:
0x0000ccdc stm r5, {r0, r4} | *(r5) = r0;
| *((r5 + 4)) = r4;
| label_2:
0x0000cce0 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0000cce4 ldr r0, [r5] | r0 = *(r5);
0x0000cce8 mov r2, r6 | r2 = r6;
0x0000ccec mov r1, r8 | r1 = r8;
0x0000ccf0 add r0, r0, r3 | r0 += r3;
0x0000ccf4 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000ccf8 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0000ccfc mov r0, 0 | r0 = 0;
0x0000cd00 add r6, r3, r6 | r6 = r3 + r6;
0x0000cd04 str r6, [r5, 8] | *((r5 + 8)) = r6;
0x0000cd08 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xcd18 */
| #include <stdint.h>
|
; (fcn) sym.Curl_add_bufferf () | void Curl_add_bufferf (int32_t arg1) {
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_1ch;
| int32_t var_20h;
| r0 = arg1;
0x0000cd18 push {r1, r2, r3} |
0x0000cd1c push {r0, r1, r2, r4, r5, r6, lr} |
0x0000cd20 ldr r5, [pc, 0x7c] |
0x0000cd24 add r1, sp, 0x20 | r1 += var_20h;
0x0000cd28 mov r4, r0 | r4 = r0;
0x0000cd2c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000cd30 str r1, [sp, 4] | var_4h = r1;
0x0000cd34 bl 0x5490 | fcn_00005490 ();
0x0000cd38 ldr r3, [pc, 0x68] | r3 = $d;
0x0000cd3c add r5, pc, r5 | r5 = pc + r5;
0x0000cd40 ldr r5, [r5, r3] | r5 = *(0xcda0);
0x0000cd44 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0000cd48 beq 0xcd84 | goto label_0;
| }
0x0000cd4c bl 0x5250 | strlen (r0);
0x0000cd50 mov r1, r6 | r1 = r6;
0x0000cd54 mov r2, r0 | r2 = r0;
0x0000cd58 mov r0, r4 | r0 = r4;
0x0000cd5c bl 0xcc00 | Curl_add_buffer ();
0x0000cd60 ldr r3, [r5] | r3 = *(r5);
0x0000cd64 mov r4, r0 | r4 = r0;
0x0000cd68 mov r0, r6 | r0 = r6;
0x0000cd6c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| do {
0x0000cd70 mov r0, r4 | r0 = r4;
0x0000cd74 add sp, sp, 0xc |
0x0000cd78 pop {r4, r5, r6, lr} |
0x0000cd7c add sp, sp, 0xc |
0x0000cd80 bx lr | return;
| label_0:
0x0000cd84 ldr r0, [r4] | r0 = *(r4);
0x0000cd88 ldr r3, [r5] | r3 = *(r5);
0x0000cd8c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000cd90 mov r0, r4 | r0 = r4;
0x0000cd94 ldr r3, [r5] | r3 = *(r5);
0x0000cd98 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000cd9c mov r4, 0x1b | r4 = 0x1b;
0x0000cda0 b 0xcd70 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x208ec */
| #include <stdint.h>
|
; (fcn) sym.Curl_all_content_encodings () | void Curl_all_content_encodings () {
0x000208ec push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000208f0 ldr r5, [pc, 0xfc] | r5 = *(0x209f0);
0x000208f4 ldr sb, [pc, 0xfc] | sb = *(0x000209f8);
0x000208f8 ldr r6, [pc, 0xfc] | r6 = *(0x209f8);
0x000208fc add r5, pc, r5 | r5 = pc + r5;
0x00020900 sub r5, r5, 4 | r5 -= 4;
0x00020904 mov r8, r5 | r8 = r5;
0x00020908 mov r4, 0 | r4 = 0;
0x0002090c add sb, pc, sb | sb = pc + sb;
0x00020910 add r6, pc, r6 | r6 = pc + r6;
| do {
| label_0:
0x00020914 ldr r7, [r8, 4]! | r7 = *((r8 += 4));
0x00020918 cmp r7, 0 |
| if (r7 == 0) {
0x0002091c bne 0x20944 |
0x00020920 cmp r4, 0 |
| if (r4 != 0) {
0x00020924 bne 0x2096c | goto label_3;
| }
0x00020928 ldr r3, [pc, 0xd0] |
0x0002092c ldr r0, [pc, 0xd0] | r0 = *(0x20a00);
0x00020930 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00020934 add r0, pc, r0 | r0 = pc + r0;
0x00020938 ldr r3, [r3] | r3 = *(0x209fc);
0x0002093c pop {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00020940 bx r3 | return uint32_t (*r3)() ();
| }
0x00020944 mov r1, sb | r1 = sb;
0x00020948 ldr r0, [r7] | r0 = *(r7);
0x0002094c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00020950 cmp r0, 0 |
0x00020954 bne 0x20914 |
| } while (r0 != 0);
0x00020958 ldr r0, [r7] | r0 = *(r7);
0x0002095c bl 0x5250 | strlen (r0);
0x00020960 add r4, r4, 2 | r4 += 2;
0x00020964 add r4, r0, r4 | r4 = r0 + r4;
0x00020968 b 0x20914 | goto label_0;
| label_3:
0x0002096c ldr r3, [pc, 0x94] |
0x00020970 mov r0, r4 | r0 = r4;
0x00020974 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00020978 ldr r3, [r3] | r3 = *(0x20a04);
0x0002097c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00020980 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x00020984 bne 0x209dc | goto label_4;
| }
| label_1:
0x00020988 mov r0, r7 | r0 = r7;
0x0002098c pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| do {
0x00020990 mov r1, r8 | r1 = r8;
0x00020994 ldr r0, [r6] | r0 = *(r6);
0x00020998 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0002099c cmp r0, 0 |
| if (r0 == 0) {
0x000209a0 bne 0x209c8 |
0x000209a4 ldr r1, [r6] | r1 = *(r6);
0x000209a8 mov r0, r4 | r0 = r4;
0x000209ac bl 0x5c28 | strcpy (r0, r1);
0x000209b0 mov r0, r4 | r0 = r4;
0x000209b4 bl 0x5250 | r0 = strlen (r0);
0x000209b8 add r3, r4, r0 | r3 = r4 + r0;
0x000209bc strb sb, [r4, r0] | *((r4 + r0)) = sb;
0x000209c0 add r4, r3, 2 | r4 = r3 + 2;
0x000209c4 strb sl, [r3, 1] | *((r3 + 1)) = sl;
| }
| label_2:
0x000209c8 ldr r6, [r5, 4]! | r6 = *((r5 += 4));
0x000209cc cmp r6, 0 |
0x000209d0 bne 0x20990 |
| } while (r6 != 0);
0x000209d4 strb r6, [r4, -2] | *((r4 - 2)) = r6;
0x000209d8 b 0x20988 | goto label_1;
| label_4:
0x000209dc ldr r8, [pc, 0x28] | r8 = *(0x20a08);
0x000209e0 mov r4, r7 | r4 = r7;
0x000209e4 add r8, pc, r8 | r8 = pc + r8;
0x000209e8 mov sb, 0x2c | sb = 0x2c;
0x000209ec mov sl, 0x20 | sl = 0x20;
0x000209f0 b 0x209c8 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2fa3c */
| #include <stdint.h>
|
; (fcn) sym.Curl_auth_build_spn () | uint32_t Curl_auth_build_spn (int32_t arg1, char * arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002fa3c cmp r1, 0 |
0x0002fa40 cmpne r2, 0 | __asm ("cmpne r2, 0");
0x0002fa44 mov r3, r2 | r3 = r2;
| if (r1 != 0) {
0x0002fa48 beq 0x2fa60 |
0x0002fa4c mov r2, r1 | r2 = r1;
0x0002fa50 mov r1, r0 | r1 = r0;
0x0002fa54 ldr r0, [pc, 0x3c] | r0 = *(0x2fa94);
0x0002fa58 add r0, pc, r0 | r0 = pc + r0;
0x0002fa5c b 0x5b80 | void (*0x5b80)() ();
| }
0x0002fa60 cmp r1, 0 |
| if (r1 == 0) {
0x0002fa64 beq 0x2fa7c | goto label_0;
| }
0x0002fa68 mov r2, r1 | r2 = r1;
0x0002fa6c mov r1, r0 | r1 = r0;
0x0002fa70 ldr r0, [pc, 0x24] | r0 = $d;
0x0002fa74 add r0, pc, r0 | r0 = pc + r0;
| do {
0x0002fa78 b 0x5b80 | void (*0x5b80)() ();
| label_0:
0x0002fa7c cmp r2, 0 |
| if (r2 == 0) {
0x0002fa80 movne r1, r0 | r1 = r0;
| }
| if (r2 == 0) {
0x0002fa84 ldrne r0, [pc, 0x14] | r0 = *((pc + 0x14));
| }
| if (r2 == 0) {
0x0002fa88 addne r0, pc, r0 | r0 = pc + r0;
| }
0x0002fa8c bne 0x2fa78 |
| } while (r2 != 0);
0x0002fa90 mov r0, r2 | r0 = r2;
0x0002fa94 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x3161c */
| #include <stdint.h>
|
; (fcn) sym.Curl_auth_create_ntlm_type3_message () | void Curl_auth_create_ntlm_type3_message (int32_t arg_998h, int32_t arg_99ch, int32_t arg1, char * arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| int32_t var_64h;
| int32_t var_68h;
| int32_t var_6ch;
| int32_t var_70h;
| int32_t var_74h;
| int32_t var_78h;
| int32_t var_7ch;
| int32_t var_80h;
| int32_t var_84h;
| int32_t var_88h;
| int32_t var_8ch;
| int32_t var_90h;
| int32_t var_94h;
| int32_t var_98h;
| int32_t var_9ch;
| int32_t var_a0h;
| int32_t var_a4h;
| int32_t var_a8h;
| int32_t var_ach;
| int32_t var_b0h;
| int32_t var_b4h;
| int32_t var_b8h;
| int32_t var_bch;
| int32_t var_c0h;
| int32_t var_c4h;
| int32_t var_c8h;
| int32_t var_cch;
| int32_t var_d0h;
| int32_t var_d4h;
| int32_t var_d8h;
| int32_t var_e4h;
| char * var_e8h;
| void * var_ech;
| char * var_f0h;
| void * var_f4h;
| int32_t var_f8h;
| int32_t var_fch;
| int32_t var_104h;
| int32_t var_108h;
| int32_t var_10ch;
| int32_t var_114h;
| void * s2;
| void * var_12ch;
| int32_t var_13ch;
| int32_t var_154h;
| void * s1;
| int32_t var_174h;
| int32_t var_0h_2;
| int32_t var_56ch;
| void * s;
| int32_t var_970h;
| int32_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x0003161c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00031620 mov r7, r3 | r7 = r3;
0x00031624 ldr r3, [pc, 0x5d4] | r3 = *(0x31bfc);
0x00031628 sub sp, sp, 0x970 |
0x0003162c sub sp, sp, 4 |
0x00031630 add r3, pc, r3 | r3 = pc + r3;
0x00031634 str r3, [sp, 0xf8] | var_f8h = r3;
0x00031638 mov r3, 0x18 | r3 = 0x18;
0x0003163c str r3, [sp, 0x104] | var_104h = r3;
0x00031640 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00031644 add r4, sp, 0x570 | r4 += s;
0x00031648 str r1, [sp, 0xe8] | var_e8h = r1;
0x0003164c mov r8, r0 | r8 = r0;
0x00031650 mov r1, 0 | r1 = 0;
0x00031654 mov sb, r2 | sb = r2;
0x00031658 mov r0, r4 | r0 = r4;
0x0003165c ldr r2, [pc, 0x5a0] | r2 = $d;
0x00031660 str r1, [sp, 0x108] | var_108h = r1;
0x00031664 str r3, [sp, 0xfc] | var_fch = r3;
0x00031668 str r1, [sp, 0x56c] | var_56ch = r1;
0x0003166c bl 0x576c | memset (r0, r1, r2);
0x00031670 mov r1, 0x5c | r1 = 0x5c;
0x00031674 ldr r0, [sp, 0xe8] | r0 = var_e8h;
0x00031678 bl 0x5b38 | r0 = strchr (r0, r1);
0x0003167c cmp r0, 0 |
| if (r0 == 0) {
0x00031680 bne 0x31698 |
0x00031684 mov r1, 0x2f | r1 = 0x2f;
0x00031688 ldr r0, [sp, 0xe8] | r0 = var_e8h;
0x0003168c bl 0x5b38 | r0 = strchr (r0, r1);
0x00031690 cmp r0, 0 |
| if (r0 == 0) {
0x00031694 beq 0x317b0 | goto label_5;
| }
| }
0x00031698 ldr r3, [sp, 0xe8] | r3 = var_e8h;
0x0003169c sub r5, r0, r3 | r5 = r0 - r3;
0x000316a0 str r3, [sp, 0xec] | var_ech = r3;
0x000316a4 add r3, r0, 1 | r3 = r0 + 1;
0x000316a8 str r3, [sp, 0xe8] | var_e8h = r3;
| do {
0x000316ac ldr r0, [sp, 0xe8] | r0 = var_e8h;
0x000316b0 bl 0x5250 | strlen (r0);
0x000316b4 sub r3, r4, 4 | r3 -= var_56ch;
0x000316b8 ldr r1, [pc, 0x548] | r1 = *(0x31c04);
0x000316bc str r3, [sp, 0xf0] | var_f0h = r3;
0x000316c0 mov r6, r0 | r6 = r0;
0x000316c4 mov r0, r3 | r0 = r3;
0x000316c8 bl 0x25594 | r0 = Curl_gethostname ();
0x000316cc cmp r0, 0 |
| if (r0 == 0) {
0x000316d0 beq 0x317c4 | goto label_6;
| }
0x000316d4 ldr r1, [pc, 0x530] | r1 = *(0x31c08);
0x000316d8 mov r0, r8 | r0 = r8;
0x000316dc add r1, pc, r1 | r1 = pc + r1;
0x000316e0 bl 0x104cc | Curl_infof ();
0x000316e4 mov r3, 0 | r3 = 0;
0x000316e8 str r3, [sp, 0xe4] | var_e4h = r3;
| label_0:
0x000316ec ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000316f0 cmp r3, 0 |
| if (r3 == 0) {
0x000316f4 beq 0x317d4 | goto label_7;
| }
0x000316f8 add sl, sp, 0x13c | sl += var_13ch;
0x000316fc mov r2, 8 | r2 = 8;
0x00031700 mov r1, sl | r1 = sl;
0x00031704 mov r0, r8 | r0 = r8;
0x00031708 bl 0x280e0 | r0 = Curl_rand ();
0x0003170c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00031710 bne 0x317a0 |
0x00031714 add fp, sp, 0x154 |
0x00031718 mov r2, fp | r2 = fp;
0x0003171c mov r1, sb | r1 = sb;
0x00031720 mov r0, r8 | r0 = r8;
0x00031724 bl 0x270b0 | r0 = Curl_ntlm_core_mk_nt_hash ();
0x00031728 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0003172c bne 0x317a0 | goto label_1;
| }
0x00031730 add sb, sp, 0x16c | sb += s1;
0x00031734 str sb, [sp, 4] | var_4h = sb;
0x00031738 str fp, [sp] | *(sp) = fp;
0x0003173c mov r3, r5 | r3 = r5;
0x00031740 ldr r2, [sp, 0xec] | r2 = var_ech;
0x00031744 mov r1, r6 | r1 = r6;
0x00031748 ldr r0, [sp, 0xe8] | r0 = var_e8h;
0x0003174c bl 0x27218 | r0 = Curl_ntlm_core_mk_ntlmv2_hash ();
0x00031750 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00031754 bne 0x317a0 | goto label_1;
| }
0x00031758 add r3, sp, 0x124 | r3 += s2;
0x0003175c add r2, r7, 8 | r2 = r7 + 8;
0x00031760 mov r1, sl | r1 = sl;
0x00031764 mov r0, sb | r0 = sb;
0x00031768 bl 0x274ac | Curl_ntlm_core_mk_lmv2_resp ();
0x0003176c subs r4, r0, 0 | r4 -= s1;
| if (r4 != s1) {
0x00031770 bne 0x317a0 | goto label_1;
| }
0x00031774 add r2, sp, 0x104 | r2 += var_104h;
0x00031778 add r3, sp, 0x108 | r3 += var_108h;
0x0003177c str r2, [sp] | *(sp) = r2;
0x00031780 mov r1, sl | r1 = sl;
0x00031784 mov r2, r7 | r2 = r7;
0x00031788 mov r0, sb | r0 = sb;
0x0003178c bl 0x2732c | Curl_ntlm_core_mk_ntlmv2_resp ();
0x00031790 subs r4, r0, 0 | r4 -= s1;
| if (r4 != s1) {
0x00031794 ldreq r3, [sp, 0x108] | r3 = var_108h;
| }
| if (r4 != s1) {
0x00031798 streq r3, [sp, 0xf4] | var_f4h = r3;
| }
| if (r4 == s1) {
0x0003179c beq 0x3188c | goto label_2;
| }
| }
| label_1:
0x000317a0 mov r0, r4 | r0 = r4;
0x000317a4 add sp, sp, 0x970 |
0x000317a8 add sp, sp, 4 |
0x000317ac pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x000317b0 ldr r3, [pc, 0x458] | r3 = *(0x31c0c);
0x000317b4 mov r5, r0 | r5 = r0;
0x000317b8 add r3, pc, r3 | r3 = pc + r3;
0x000317bc str r3, [sp, 0xec] | var_ech = r3;
0x000317c0 b 0x316ac |
| } while (1);
| label_6:
0x000317c4 ldr r0, [sp, 0xf0] | r0 = var_f0h;
0x000317c8 bl 0x5250 | strlen (r0);
0x000317cc str r0, [sp, 0xe4] | var_e4h = r0;
0x000317d0 b 0x316ec | goto label_0;
| label_7:
0x000317d4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000317d8 tst r3, 0x80000 |
| if ((r3 & 0x80000) == 0) {
0x000317dc beq 0x31adc | goto label_8;
| }
0x000317e0 add sl, sp, 0x10c | sl += var_10ch;
0x000317e4 mov r2, 8 | r2 = 8;
0x000317e8 mov r1, sl | r1 = sl;
0x000317ec mov r0, r8 | r0 = r8;
0x000317f0 bl 0x280e0 | r0 = Curl_rand ();
0x000317f4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000317f8 bne 0x317a0 | goto label_1;
| }
0x000317fc ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x00031800 add r2, sp, 0x124 | r2 += s2;
0x00031804 stm r2, {r0, r1} | *(r2) = r0;
| *((r2 + 4)) = r1;
0x00031808 mov r1, r4 | r1 = r4;
0x0003180c mov r2, 0x10 | r2 = 0x10;
0x00031810 add r0, sp, 0x12c | r0 += var_12ch;
0x00031814 bl 0x576c | memset (r0, r1, r2);
0x00031818 add r4, sp, 0x16c | r4 += s1;
0x0003181c mov r2, 8 | r2 = 8;
0x00031820 add r1, r7, r2 | r1 = r7 + r2;
0x00031824 mov r0, r4 | r0 = r4;
0x00031828 bl 0x4f5c | r0 = memcpy (r0, r1, r2);
0x0003182c ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x00031830 add r3, sp, 0x174 | r3 += var_174h;
0x00031834 stm r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00031838 add fp, sp, 0x114 |
0x0003183c mov r3, 0x10 | r3 = 0x10;
0x00031840 mov r0, r4 | r0 = r4;
0x00031844 mov r2, fp | r2 = fp;
0x00031848 mov r1, r3 | r1 = r3;
0x0003184c bl 0x37d14 | Curl_ssl_md5sum ();
0x00031850 subs r4, r0, 0 | r4 -= s1;
| if (r4 != s1) {
0x00031854 bne 0x317a0 | goto label_1;
| }
0x00031858 add sl, sp, 0x154 | sl += var_154h;
0x0003185c mov r2, sl | r2 = sl;
0x00031860 mov r1, sb | r1 = sb;
0x00031864 mov r0, r8 | r0 = r8;
0x00031868 bl 0x270b0 | r0 = Curl_ntlm_core_mk_nt_hash ();
0x0003186c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00031870 bne 0x317a0 | goto label_1;
| }
0x00031874 add r4, sp, 0x13c | r4 += var_13ch;
0x00031878 mov r2, r4 | r2 = r4;
0x0003187c mov r1, fp | r1 = fp;
0x00031880 mov r0, sl | r0 = sl;
0x00031884 bl 0x26f80 | Curl_ntlm_core_lm_resp ();
0x00031888 str r4, [sp, 0xf4] | var_f4h = r4;
| label_2:
0x0003188c ldr r3, [sp, 0xfc] | r3 = var_fch;
0x00031890 add r4, sp, 0x16c | r4 += s1;
0x00031894 ands fp, r3, 1 |
| if (fp == r3) {
0x00031898 ldrne r3, [sp, 0xe4] | r3 = var_e4h;
| }
| if (fp == r3) {
0x0003189c lslne r5, r5, 1 | r5 <<= 1;
| }
| if (fp == r3) {
0x000318a0 lslne r3, r3, 1 | r3 <<= 1;
| }
| if (fp == r3) {
0x000318a4 strne r3, [sp, 0xe4] | var_e4h = r3;
| }
0x000318a8 ldr r3, [sp, 0x104] | r3 = var_104h;
| if (fp == r3) {
0x000318ac lslne r6, r6, 1 | r6 <<= 1;
| }
0x000318b0 add sl, r3, 0x58 | sl = r3 + 0x58;
0x000318b4 and r1, r3, 0xff | r1 = r3 & 0xff;
0x000318b8 lsr r3, r3, 8 | r3 >>= 8;
0x000318bc and r3, r3, 0xff | r3 &= 0xff;
0x000318c0 str r3, [sp, 0x30] | var_30h = r3;
0x000318c4 and r3, r5, 0xff | r3 = r5 & 0xff;
0x000318c8 str r3, [sp, 0x4c] | var_4ch = r3;
0x000318cc lsr r3, r5, 8 | r3 = r5 >> 8;
0x000318d0 and r3, r3, 0xff | r3 &= 0xff;
0x000318d4 str r3, [sp, 0x50] | var_50h = r3;
0x000318d8 and r3, r6, 0xff | r3 = r6 & 0xff;
0x000318dc str r3, [sp, 0x6c] | var_6ch = r3;
0x000318e0 ldr r3, [sp, 0xe4] | r3 = var_e4h;
0x000318e4 add r2, r5, sl | r2 = r5 + sl;
0x000318e8 and lr, r3, 0xff | lr = r3 & 0xff;
0x000318ec lsr r0, r3, 8 | r0 = r3 >> 8;
0x000318f0 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000318f4 add ip, r6, r2 |
0x000318f8 lsr sb, r3, 0x18 | sb = r3 >> 0x18;
0x000318fc str sb, [sp, 0xd8] | var_d8h = sb;
0x00031900 lsr sb, r3, 0x10 | sb = r3 >> 0x10;
0x00031904 and sb, sb, 0xff | sb &= 0xff;
0x00031908 str sb, [sp, 0xd4] | var_d4h = sb;
0x0003190c lsr sb, r3, 8 | sb = r3 >> 8;
0x00031910 and sb, sb, 0xff | sb &= 0xff;
0x00031914 and r0, r0, 0xff | r0 &= 0xff;
0x00031918 str sb, [sp, 0xd0] | var_d0h = sb;
0x0003191c and r3, r3, 0xff | r3 &= 0xff;
0x00031920 lsr sb, ip, 8 | sb = ip >> 8;
0x00031924 str r3, [sp, 0xcc] | var_cch = r3;
0x00031928 and sb, sb, 0xff | sb &= 0xff;
0x0003192c mov r3, 0 | r3 = 0;
0x00031930 and ip, ip, 0xff |
0x00031934 str r0, [sp, 0x98] | var_98h = r0;
0x00031938 str r0, [sp, 0x90] | var_90h = r0;
0x0003193c lsr r0, r2, 8 | r0 = r2 >> 8;
0x00031940 and r2, r2, 0xff | r2 &= 0xff;
0x00031944 str r1, [sp, 0x2c] | var_2ch = r1;
0x00031948 str r3, [sp, 0xc8] | var_c8h = r3;
0x0003194c str r3, [sp, 0xc4] | var_c4h = r3;
0x00031950 str r3, [sp, 0xc0] | var_c0h = r3;
0x00031954 str r3, [sp, 0xbc] | var_bch = r3;
0x00031958 str r3, [sp, 0xb8] | var_b8h = r3;
0x0003195c str r3, [sp, 0xb4] | var_b4h = r3;
0x00031960 str r3, [sp, 0xb0] | var_b0h = r3;
0x00031964 str r3, [sp, 0xac] | var_ach = r3;
0x00031968 str r3, [sp, 0xa8] | var_a8h = r3;
0x0003196c str r3, [sp, 0xa4] | var_a4h = r3;
0x00031970 str sb, [sp, 0xa0] | var_a0h = sb;
0x00031974 str ip, [sp, 0x9c] | var_9ch = ip;
0x00031978 str lr, [sp, 0x94] | var_94h = lr;
0x0003197c str lr, [sp, 0x8c] | var_8ch = lr;
0x00031980 str r3, [sp, 0x88] | var_88h = r3;
0x00031984 str r3, [sp, 0x84] | var_84h = r3;
0x00031988 str r2, [sp, 0x7c] | var_7ch = r2;
0x0003198c ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x00031990 lsr r1, r6, 8 | r1 = r6 >> 8;
0x00031994 str r2, [sp, 0x74] | var_74h = r2;
0x00031998 lsr r2, sl, 8 | r2 = sl >> 8;
0x0003199c and r2, r2, 0xff | r2 &= 0xff;
0x000319a0 str r2, [sp, 0x60] | var_60h = r2;
0x000319a4 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000319a8 and r1, r1, 0xff | r1 &= 0xff;
0x000319ac str r2, [sp, 0x58] | var_58h = r2;
0x000319b0 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x000319b4 and r0, r0, 0xff | r0 &= 0xff;
0x000319b8 str r2, [sp, 0x54] | var_54h = r2;
0x000319bc mov r2, 0x58 | r2 = 0x58;
0x000319c0 str r2, [sp, 0x3c] | var_3ch = r2;
0x000319c4 ldr r2, [sp, 0x30] | r2 = var_30h;
0x000319c8 str r0, [sp, 0x80] | var_80h = r0;
0x000319cc str r2, [sp, 0x38] | var_38h = r2;
0x000319d0 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000319d4 str r1, [sp, 0x78] | var_78h = r1;
0x000319d8 str r2, [sp, 0x34] | var_34h = r2;
0x000319dc mov r2, 0x40 | r2 = 0x40;
0x000319e0 str r2, [sp, 0x1c] | var_1ch = r2;
0x000319e4 ldr r2, [pc, 0x228] | r2 = *(0x31c10);
0x000319e8 str r1, [sp, 0x70] | var_70h = r1;
0x000319ec and sl, sl, 0xff | sl &= 0xff;
0x000319f0 mov sb, 0x18 | sb = 0x18;
0x000319f4 add r2, pc, r2 | r2 = pc + r2;
0x000319f8 mov r1, 0x400 | r1 = 0x400;
0x000319fc mov r0, r4 | r0 = r4;
0x00031a00 str r3, [sp, 0x68] | var_68h = r3;
0x00031a04 str r3, [sp, 0x64] | var_64h = r3;
0x00031a08 str sl, [sp, 0x5c] | var_5ch = sl;
0x00031a0c str r3, [sp, 0x48] | var_48h = r3;
0x00031a10 str r3, [sp, 0x44] | var_44h = r3;
0x00031a14 str r3, [sp, 0x40] | var_40h = r3;
0x00031a18 str r3, [sp, 0x28] | var_28h = r3;
0x00031a1c str r3, [sp, 0x24] | var_24h = r3;
0x00031a20 str r3, [sp, 0x20] | var_20h = r3;
0x00031a24 str r3, [sp, 0x18] | var_18h = r3;
0x00031a28 str r3, [sp, 0x10] | var_10h = r3;
0x00031a2c str r3, [sp, 8] | var_8h = r3;
0x00031a30 str r3, [sp, 4] | var_4h = r3;
0x00031a34 str sb, [sp, 0x14] | var_14h = sb;
0x00031a38 str sb, [sp, 0xc] | var_ch = sb;
0x00031a3c str r3, [sp] | *(sp) = r3;
0x00031a40 bl 0x579c | r0 = fcn_0000579c ();
0x00031a44 cmp r0, 0x3e8 |
0x00031a48 mov sl, r0 | sl = r0;
| if (r0 < 0x3e8) {
0x00031a4c bhs 0x31a70 |
0x00031a50 add r3, sp, 0x970 | r3 += var_970h;
0x00031a54 add r0, r3, r0 | r0 = r3 + r0;
0x00031a58 sub r0, r0, 0x800 | r0 -= 0x800;
0x00031a5c mov r2, sb | r2 = sb;
0x00031a60 add r1, sp, 0x124 | r1 += s2;
0x00031a64 sub r0, r0, 4 | r0 -= 4;
0x00031a68 bl 0x4f5c | memcpy (r0, r1, r2);
0x00031a6c add sl, sl, sb | sl += sb;
| }
0x00031a70 ldr sb, [sp, 0x104] | sb = var_104h;
0x00031a74 rsb r3, sb, 0x400 | r3 = 0x400 - sb;
0x00031a78 cmp r3, sl |
| if (r3 >= sl) {
0x00031a7c bls 0x31a94 |
0x00031a80 add r0, r4, sl | r0 = r4 + sl;
0x00031a84 mov r2, sb | r2 = sb;
0x00031a88 ldr r1, [sp, 0xf4] | r1 = var_f4h;
0x00031a8c bl 0x4f5c | memcpy (r0, r1, r2);
0x00031a90 add sl, sl, sb | sl += sb;
| }
0x00031a94 ldr r2, [sp, 0xf8] | r2 = var_f8h;
0x00031a98 ldr r3, [pc, 0x178] |
0x00031a9c ldr r0, [sp, 0x108] | r0 = var_108h;
0x00031aa0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00031aa4 ldr r3, [r3] | r3 = *(0x31c14);
0x00031aa8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00031aac ldr r3, [sp, 0xe4] | r3 = var_e4h;
0x00031ab0 add r3, r3, r6 | r3 += r6;
0x00031ab4 add r3, r3, r5 | r3 += r5;
0x00031ab8 add r3, r3, sl | r3 += sl;
0x00031abc cmp r3, 0x400 |
| if (r3 <= 0x400) {
0x00031ac0 blo 0x31b4c | goto label_9;
| }
0x00031ac4 ldr r1, [pc, 0x150] | r1 = *(0x31c18);
0x00031ac8 mov r0, r8 | r0 = r8;
0x00031acc add r1, pc, r1 | r1 = pc + r1;
0x00031ad0 bl 0x10544 | Curl_failf ();
0x00031ad4 mov r4, 0x1b | r4 = 0x1b;
0x00031ad8 b 0x317a0 | goto label_1;
| label_8:
0x00031adc add fp, sp, 0x154 |
0x00031ae0 mov r2, fp | r2 = fp;
0x00031ae4 mov r1, sb | r1 = sb;
0x00031ae8 mov r0, r8 | r0 = r8;
0x00031aec bl 0x270b0 | r0 = Curl_ntlm_core_mk_nt_hash ();
0x00031af0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00031af4 bne 0x317a0 | goto label_1;
| }
0x00031af8 add r3, r7, 8 | r3 = r7 + 8;
0x00031afc add sl, sp, 0x13c | sl += var_13ch;
0x00031b00 mov r1, r3 | r1 = r3;
0x00031b04 mov r0, fp | r0 = fp;
0x00031b08 mov r2, sl | r2 = sl;
0x00031b0c add fp, sp, 0x16c |
0x00031b10 str r3, [sp, 0xf4] | var_f4h = r3;
0x00031b14 bl 0x26f80 | Curl_ntlm_core_lm_resp ();
0x00031b18 mov r2, fp | r2 = fp;
0x00031b1c mov r1, sb | r1 = sb;
0x00031b20 mov r0, r8 | r0 = r8;
0x00031b24 bl 0x26ffc | Curl_ntlm_core_mk_lm_hash ();
0x00031b28 ldr r3, [sp, 0xf4] | r3 = var_f4h;
0x00031b2c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00031b30 bne 0x317a0 | goto label_1;
| }
0x00031b34 add r2, sp, 0x124 | r2 += s2;
0x00031b38 mov r1, r3 | r1 = r3;
0x00031b3c mov r0, fp | r0 = fp;
0x00031b40 bl 0x26f80 | Curl_ntlm_core_lm_resp ();
0x00031b44 str sl, [sp, 0xf4] | var_f4h = sl;
0x00031b48 b 0x3188c | goto label_2;
| label_9:
0x00031b4c cmp fp, 0 |
0x00031b50 add r0, r4, sl | r0 = r4 + sl;
| if (fp == 0) {
0x00031b54 beq 0x31bd0 | goto label_10;
| }
0x00031b58 lsr r2, r5, 1 | r2 = r5 >> 1;
0x00031b5c ldr r1, [sp, 0xec] | r1 = var_ech;
0x00031b60 bl 0x312d0 | unicodecpy ();
| do {
0x00031b64 add r5, sl, r5 | r5 = sl + r5;
0x00031b68 cmp fp, 0 |
0x00031b6c add r0, r4, r5 | r0 = r4 + r5;
| if (fp == 0) {
0x00031b70 beq 0x31be0 | goto label_11;
| }
0x00031b74 lsr r2, r6, 1 | r2 = r6 >> 1;
0x00031b78 ldr r1, [sp, 0xe8] | r1 = var_e8h;
0x00031b7c bl 0x312d0 | unicodecpy ();
| label_3:
0x00031b80 add r5, r6, r5 | r5 = r6 + r5;
0x00031b84 cmp fp, 0 |
0x00031b88 add r0, r4, r5 | r0 = r4 + r5;
| if (fp == 0) {
0x00031b8c beq 0x31bf0 | goto label_12;
| }
0x00031b90 ldr r3, [sp, 0xe4] | r3 = var_e4h;
0x00031b94 ldr r1, [sp, 0xf0] | r1 = var_f0h;
0x00031b98 lsr r2, r3, 1 | r2 = r3 >> 1;
0x00031b9c bl 0x312d0 | unicodecpy ();
| label_4:
0x00031ba0 ldr r3, [sp, 0x99c] | r3 = *(arg_99ch);
0x00031ba4 ldr r2, [sp, 0xe4] | r2 = var_e4h;
0x00031ba8 str r3, [sp] | *(sp) = r3;
0x00031bac mov r1, r4 | r1 = r4;
0x00031bb0 ldr r3, [sp, 0x998] | r3 = *(arg_998h);
0x00031bb4 add r2, r2, r5 | r2 += r5;
0x00031bb8 mov r0, r8 | r0 = r8;
0x00031bbc bl 0x6e88 | r0 = Curl_base64_encode ();
0x00031bc0 mov r4, r0 | r4 = r0;
0x00031bc4 mov r0, r7 | r0 = r7;
0x00031bc8 bl 0x31504 | Curl_auth_ntlm_cleanup ();
0x00031bcc b 0x317a0 | goto label_1;
| label_10:
0x00031bd0 mov r2, r5 | r2 = r5;
0x00031bd4 ldr r1, [sp, 0xec] | r1 = var_ech;
0x00031bd8 bl 0x4f5c | memcpy (r0, r1, r2);
0x00031bdc b 0x31b64 |
| } while (1);
| label_11:
0x00031be0 mov r2, r6 | r2 = r6;
0x00031be4 ldr r1, [sp, 0xe8] | r1 = var_e8h;
0x00031be8 bl 0x4f5c | memcpy (r0, r1, r2);
0x00031bec b 0x31b80 | goto label_3;
| label_12:
0x00031bf0 ldr r2, [sp, 0xe4] | r2 = var_e4h;
0x00031bf4 ldr r1, [sp, 0xf0] | r1 = var_f0h;
0x00031bf8 bl 0x4f5c | memcpy (r0, r1, r2);
0x00031bfc b 0x31ba0 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x6cb8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_base64_decode () | void Curl_base64_decode (int32_t arg_0h, int32_t arg1, size_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00006cb8 mov r3, 0 | r3 = 0;
0x00006cbc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00006cc0 ldr sb, [pc, 0x1b0] | sb = *(0x00006e78);
0x00006cc4 sub sp, sp, 0x14 |
0x00006cc8 str r3, [r1] | *(r1) = r3;
0x00006ccc str r3, [r2] | *(r2) = r3;
0x00006cd0 mov r4, r0 | r4 = r0;
0x00006cd4 mov fp, r1 |
0x00006cd8 str r2, [sp, 4] | var_4h = r2;
0x00006cdc bl 0x5250 | strlen (r0);
0x00006ce0 add sb, pc, sb | sb = pc + sb;
0x00006ce4 cmp r0, 0 |
| if (r0 == 0) {
0x00006ce8 beq 0x6e44 | goto label_4;
| }
0x00006cec tst r0, 3 |
| if ((r0 & 3) != 0) {
0x00006cf0 bne 0x6e44 | goto label_4;
| }
0x00006cf4 mov r1, r4 | r1 = r4;
| do {
0x00006cf8 sub r2, r1, r4 | r2 = r1 - r4;
0x00006cfc ldrb r3, [r1], 1 | r3 = *(r1);
| r1++;
0x00006d00 cmp r3, 0x3d |
0x00006d04 cmpne r3, 0 | __asm ("cmpne r3, 0");
| if (r3 == 0x3d) {
0x00006d08 movne r7, 1 | r7 = 1;
| }
| if (r3 != 0x3d) {
0x00006d0c moveq r7, 0 | r7 = 0;
| }
0x00006d10 bne 0x6cf8 |
| } while (r3 != 0x3d);
0x00006d14 cmp r3, 0x3d |
| if (r3 == 0x3d) {
0x00006d18 bne 0x6d30 |
0x00006d1c add r3, r4, r2 | r3 = r4 + r2;
0x00006d20 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00006d24 cmp r3, 0x3d |
| if (r3 == 0x3d) {
0x00006d28 movne r7, 1 | r7 = 1;
| }
| if (r3 == 0x3d) {
0x00006d2c moveq r7, 2 | r7 = 2;
| goto label_5;
| }
| }
| label_5:
0x00006d30 add r2, r7, r2 | r2 = r7 + r2;
0x00006d34 cmp r2, r0 |
| if (r2 != r0) {
0x00006d38 bne 0x6e44 | goto label_4;
| }
0x00006d3c lsr r5, r0, 2 | r5 = r0 >> 2;
0x00006d40 add r3, r5, r5, lsl 1 | r3 = r5 + (r5 << 1);
0x00006d44 sub r7, r3, r7 | r7 = r3 - r7;
0x00006d48 ldr r3, [pc, 0x12c] |
0x00006d4c add r0, r7, 1 | r0 = r7 + 1;
0x00006d50 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00006d54 ldr r3, [r3] | r3 = $d;
0x00006d58 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00006d5c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x00006d60 moveq r0, 0x1b | r0 = 0x1b;
| }
| if (r8 != r0) {
0x00006d64 beq 0x6da4 |
0x00006d68 add r3, r4, r5, lsl 2 | r3 = r4 + (r5 << 2);
0x00006d6c str r3, [sp, 8] | var_8h = r3;
0x00006d70 ldr r3, [pc, 0x108] | r3 = *(0x6e7c);
0x00006d74 mov sl, r8 | sl = r8;
0x00006d78 add r3, pc, r3 | r3 = pc + r3;
0x00006d7c str r3, [sp, 0xc] | var_ch = r3;
| label_3:
0x00006d80 ldr r3, [sp, 8] | r3 = var_8h;
0x00006d84 cmp r4, r3 |
| if (r4 != r3) {
0x00006d88 bne 0x6dac | goto label_6;
| }
0x00006d8c ldr r3, [sp, 4] | r3 = var_4h;
0x00006d90 mov r2, 0 | r2 = 0;
0x00006d94 mov r0, r2 | r0 = r2;
0x00006d98 strb r2, [sl] | *(sl) = r2;
0x00006d9c str r8, [fp] | *(fp) = r8;
0x00006da0 str r7, [r3] | *(r3) = r7;
| }
| label_1:
0x00006da4 add sp, sp, 0x14 |
0x00006da8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00006dac mov r5, 0 | r5 = 0;
0x00006db0 sub r1, r4, 1 | r1 = r4 - 1;
0x00006db4 add lr, r4, 3 | lr = r4 + 3;
0x00006db8 mov r6, r5 | r6 = r5;
| label_0:
0x00006dbc ldrb r0, [r1, 1]! | r0 = *((r1 += 1));
0x00006dc0 cmp r0, 0x3d |
| if (r0 != 0x3d) {
0x00006dc4 lsleq r6, r6, 6 | r6 <<= 6;
| }
| if (r0 != 0x3d) {
0x00006dc8 addeq r5, r5, 1 | r5++;
| }
| if (r0 == 0x3d) {
0x00006dcc beq 0x6df8 | goto label_7;
| }
0x00006dd0 andseq r7, r7, ip, ror 31 | __asm ("andseq r7, r7, ip, ror 31");
0x00006dd4 b 0x6ddc |
| while (r0 != ip) {
0x00006dd8 add r2, r2, 1 | r2++;
0x00006ddc ldr r3, [sp, 0xc] | r3 = var_ch;
0x00006de0 ldrb ip, [r2, r3] | ip = *((r2 + r3));
0x00006de4 cmp ip, 0 |
| if (ip == 0) {
0x00006de8 beq 0x6e28 | goto label_8;
| }
0x00006dec cmp r0, ip |
0x00006df0 bne 0x6dd8 |
| }
0x00006df4 add r6, r2, r6, lsl 6 | r6 = r2 + (r6 << 6);
| label_7:
0x00006df8 cmp lr, r1 |
| if (lr != r1) {
0x00006dfc bne 0x6dbc | goto label_0;
| }
0x00006e00 cmp r5, 0 |
| if (r5 != 0) {
0x00006e04 bne 0x6e4c | goto label_9;
| }
0x00006e08 and r0, r6, 0xff | r0 = r6 & 0xff;
0x00006e0c bl 0x2531c | curlx_ultouc ();
0x00006e10 strb r0, [sl, 2] | *((sl + 2)) = r0;
| do {
0x00006e14 lsr r0, r6, 8 | r0 = r6 >> 8;
0x00006e18 and r0, r0, 0xff | r0 &= 0xff;
0x00006e1c bl 0x2531c | curlx_ultouc ();
0x00006e20 strb r0, [sl, 1] | *((sl + 1)) = r0;
0x00006e24 b 0x6e54 | goto label_10;
| label_8:
0x00006e28 cmp r0, 0 |
0x00006e2c andseq r7, r7, ip, ror 31 | __asm ("andseq r7, r7, ip, ror 31");
| label_2:
0x00006e30 ldr r3, [pc, 0x4c] |
0x00006e34 mov r0, r8 | r0 = r8;
0x00006e38 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00006e3c ldr r3, [r3] | r3 = *(0x6e80);
0x00006e40 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_4:
0x00006e44 mov r0, 0x3d | r0 = 0x3d;
0x00006e48 b 0x6da4 | goto label_1;
| label_9:
0x00006e4c cmp r5, 1 |
0x00006e50 bls 0x6e14 |
| } while (r5 < 1);
| label_10:
0x00006e54 lsr r0, r6, 0x10 | r0 = r6 >> 0x10;
0x00006e58 and r0, r0, 0xff | r0 &= 0xff;
0x00006e5c bl 0x2531c | curlx_ultouc ();
0x00006e60 rsbs r5, r5, 3 | r5 = 3 - r5;
0x00006e64 strb r0, [sl] | *(sl) = r0;
| if (r5 == 1) {
0x00006e68 beq 0x6e30 | goto label_2;
| }
0x00006e6c add sl, sl, r5 | sl += r5;
0x00006e70 add r4, r4, 4 | r4 += 4;
0x00006e74 b 0x6d80 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x23a00 */
| #include <stdint.h>
|
; (fcn) sym.Curl_blockread_all () | void Curl_blockread_all (int32_t arg_28h, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00023a00 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x00023a04 ldr r8, [sp, 0x28] | r8 = *(arg_28h);
0x00023a08 mov r4, 0 | r4 = 0;
0x00023a0c mov sb, r0 | sb = r0;
0x00023a10 mov r7, r1 | r7 = r1;
0x00023a14 mov r6, r2 | r6 = r2;
0x00023a18 mov r5, r3 | r5 = r3;
0x00023a1c str r4, [r8] | *(r8) = r4;
| do {
| label_2:
0x00023a20 mov r2, 1 | r2 = 1;
0x00023a24 mov r1, 0 | r1 = 0;
0x00023a28 ldr r0, [sb] | r0 = *(sb);
0x00023a2c bl 0x1b738 | r0 = Curl_timeleft ();
0x00023a30 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00023a34 blt 0x23aac | goto label_3;
| }
0x00023a38 mvn r2, 0 | r2 = ~0;
0x00023a3c mov r1, r2 | r1 = r2;
0x00023a40 mov r0, r7 | r0 = r7;
0x00023a44 bl 0x22ea8 | r0 = Curl_socket_check ();
0x00023a48 cmp r0, 0 |
| if (r0 <= 0) {
0x00023a4c bgt 0x23a5c |
| label_1:
0x00023a50 mvn r0, 0 | r0 = ~0;
| label_0:
0x00023a54 add sp, sp, 0xc |
0x00023a58 pop {r4, r5, r6, r7, r8, sb, pc} |
| }
0x00023a5c add r3, sp, 4 | r3 += var_4h;
0x00023a60 mov r2, r5 | r2 = r5;
0x00023a64 mov r1, r6 | r1 = r6;
0x00023a68 mov r0, r7 | r0 = r7;
0x00023a6c bl 0x102b0 | r0 = Curl_read_plain ();
0x00023a70 cmp r0, 0x51 |
0x00023a74 beq 0x23a20 |
| } while (r0 == 0x51);
0x00023a78 cmp r0, 0 |
| if (r0 != 0) {
0x00023a7c bne 0x23a54 | goto label_0;
| }
0x00023a80 ldr r3, [sp, 4] | r3 = var_4h;
0x00023a84 cmp r3, r5 |
| if (r3 != r5) {
0x00023a88 addeq r4, r5, r4 | r4 = r5 + r4;
| }
| if (r3 == r5) {
0x00023a8c streq r4, [r8] | *(r8) = r4;
| goto label_4;
| }
| if (r3 == r5) {
| label_4:
0x00023a90 beq 0x23a54 | goto label_0;
| }
0x00023a94 cmp r3, 0 |
| if (r3 == 0) {
0x00023a98 beq 0x23a50 | goto label_1;
| }
0x00023a9c sub r5, r5, r3 | r5 -= r3;
0x00023aa0 add r6, r6, r3 | r6 += r3;
0x00023aa4 add r4, r4, r3 | r4 += r3;
0x00023aa8 b 0x23a20 | goto label_2;
| label_3:
0x00023aac mov r0, 0x1c | r0 = 0x1c;
0x00023ab0 b 0x23a54 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x73d8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_cache_addr () | void Curl_cache_addr (void * arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000073d8 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x000073dc ldr r5, [pc, 0xfc] | r5 = *(0x74dc);
0x000073e0 mov r6, r3 | r6 = r3;
0x000073e4 ldrb r3, [r0, 0x64d] | r3 = *((r0 + 0x64d));
0x000073e8 add r5, pc, r5 | r5 = pc + r5;
0x000073ec cmp r3, 0 |
0x000073f0 mov r8, r0 | r8 = r0;
0x000073f4 str r1, [sp, 4] | var_4h = r1;
0x000073f8 mov r4, r2 | r4 = r2;
0x000073fc bne 0x7424 |
| while (r0 != 0) {
0x00007400 mov r1, r6 | r1 = r6;
0x00007404 mov r0, r4 | r0 = r4;
0x00007408 bl 0x6edc | r0 = create_hostcache_id ();
0x0000740c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00007410 bne 0x7438 | goto label_2;
| }
| label_0:
0x00007414 mov r5, 0 | r5 = 0;
| label_1:
0x00007418 mov r0, r5 | r0 = r5;
0x0000741c add sp, sp, 0xc |
0x00007420 pop {r4, r5, r6, r7, r8, sb, pc} |
0x00007424 add r1, sp, 4 | r1 += var_4h;
0x00007428 bl 0x7258 | r0 = Curl_shuffle_addr ();
0x0000742c cmp r0, 0 |
0x00007430 bne 0x7400 |
| }
0x00007434 b 0x7414 | goto label_0;
| label_2:
0x00007438 bl 0x5250 | strlen (r0);
0x0000743c ldr r3, [pc, 0xa0] |
0x00007440 mov r1, 0xc | r1 = 0xc;
0x00007444 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00007448 ldr r3, [r3] | r3 = $d;
0x0000744c mov sb, r0 | sb = r0;
0x00007450 mov r0, 1 | r0 = 1;
0x00007454 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00007458 ldr r3, [pc, 0x88] | r3 = *(0x74e4);
0x0000745c ldr r7, [r5, r3] | r7 = *((r5 + r3));
0x00007460 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00007464 bne 0x7478 |
0x00007468 ldr r3, [r7] | r3 = *(r7);
0x0000746c mov r0, r6 | r0 = r6;
0x00007470 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00007474 b 0x7414 | goto label_0;
| }
0x00007478 ldr r3, [sp, 4] | r3 = var_4h;
0x0000747c mov r5, 1 | r5 = 1;
0x00007480 mov r0, r4 | r0 = r4;
0x00007484 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x00007488 str r3, [r0], 4 | *(r0) = r3;
| r0 += 4;
0x0000748c bl 0x5544 | time (r0);
0x00007490 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00007494 add r2, sb, 1 | r2 = sb + 1;
0x00007498 cmp r3, 0 |
| if (r3 != 0) {
0x0000749c streq r5, [r4, 4] | *((r4 + 4)) = r5;
| }
0x000074a0 mov r3, r4 | r3 = r4;
0x000074a4 mov r1, r6 | r1 = r6;
0x000074a8 ldr r0, [r8, 0x5c] | r0 = *((r8 + 0x5c));
0x000074ac bl 0x1ceec | r0 = Curl_hash_add ();
0x000074b0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000074b4 ldrne r3, [r5, 8] | r3 = *((r5 + 8));
| }
| if (r5 == r0) {
0x000074b8 addne r3, r3, 1 | r3++;
| }
| if (r5 == r0) {
0x000074bc strne r3, [r5, 8] | *((r5 + 8)) = r3;
| }
| if (r5 == r0) {
0x000074c0 bne 0x74d0 |
0x000074c4 ldr r3, [r7] | r3 = *(r7);
0x000074c8 mov r0, r4 | r0 = r4;
0x000074cc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x000074d0 ldr r3, [r7] | r3 = *(r7);
0x000074d4 mov r0, r6 | r0 = r6;
0x000074d8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000074dc b 0x7418 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x282ec */
| #include <stdint.h>
|
; (fcn) sym.Curl_cert_hostcheck () | void Curl_cert_hostcheck (char * arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x000282ec push {r4, r5, r6, r7, r8, sb, lr} |
0x000282f0 ldr r6, [pc, 0x1fc] | r6 = *(0x284f0);
0x000282f4 subs r3, r0, 0 | r3 = r0 - 0;
0x000282f8 add r6, pc, r6 | r6 = pc + r6;
0x000282fc sub sp, sp, 0x24 |
0x00028300 bne 0x28314 |
| while (r7 != 0) {
| label_0:
0x00028304 mov r6, 0 | r6 = 0;
| label_1:
0x00028308 mov r0, r6 | r0 = r6;
0x0002830c add sp, sp, 0x24 |
0x00028310 pop {r4, r5, r6, r7, r8, sb, pc} |
0x00028314 ldrb r7, [r3] | r7 = *(r3);
0x00028318 clz r3, r1 | r3 &= r1;
0x0002831c lsr r3, r3, 5 | r3 >>= 5;
0x00028320 cmp r7, 0 |
| if (r7 == 0) {
0x00028324 movne r7, r3 | r7 = r3;
| }
| if (r7 != 0) {
0x00028328 moveq r7, 1 | r7 = 1;
| }
0x0002832c cmp r7, 0 |
0x00028330 bne 0x28304 |
| }
0x00028334 ldrb r3, [r1] | r3 = *(r1);
0x00028338 cmp r3, 0 |
| if (r3 == 0) {
0x0002833c beq 0x28304 | goto label_0;
| }
0x00028340 ldr r3, [pc, 0x1b0] | r3 = $d;
0x00028344 mov r5, r1 | r5 = r1;
0x00028348 ldr r8, [r6, r3] | r8 = *((r6 + r3));
0x0002834c ldr r3, [r8] | r3 = *(r8);
0x00028350 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00028354 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00028358 beq 0x28304 | goto label_0;
| }
0x0002835c ldr r3, [r8] | r3 = *(r8);
0x00028360 mov r0, r5 | r0 = r5;
0x00028364 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00028368 ldr r3, [pc, 0x18c] | r3 = *(0x284f8);
0x0002836c ldr r8, [r6, r3] | r8 = *((r6 + r3));
0x00028370 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00028374 moveq r6, r5 | r6 = r5;
| }
| if (r5 == r0) {
0x00028378 beq 0x28400 | goto label_5;
| }
0x0002837c bl 0x5250 | r0 = strlen (r0);
0x00028380 sub r0, r0, 1 | r0--;
0x00028384 ldrb r3, [r5, r0] | r3 = *((r5 + r0));
0x00028388 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0002838c strbeq r7, [r5, r0] | *((r5 + r0)) = r7;
| }
0x00028390 mov r0, r4 | r0 = r4;
0x00028394 bl 0x5250 | strlen (r0);
0x00028398 mov r1, 0x2a | r1 = 0x2a;
0x0002839c sub r0, r0, 1 | r0--;
0x000283a0 ldrb r3, [r4, r0] | r3 = *((r4 + r0));
0x000283a4 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x000283a8 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0x2e) {
0x000283ac strbeq r3, [r4, r0] | *((r4 + r0)) = r3;
| }
0x000283b0 mov r0, r4 | r0 = r4;
0x000283b4 bl 0x5b38 | r0 = strchr (r0, r1);
0x000283b8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x000283bc bne 0x283d8 |
| label_2:
0x000283c0 mov r1, r5 | r1 = r5;
0x000283c4 mov r0, r4 | r0 = r4;
0x000283c8 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x000283cc adds r6, r0, 0 | r6 = r0 + 0;
| if (r6 == r0) {
0x000283d0 movne r6, 1 | r6 = 1;
| }
0x000283d4 b 0x283f4 | goto label_4;
| }
0x000283d8 mov r2, sp | r2 = sp;
0x000283dc mov r1, r5 | r1 = r5;
0x000283e0 mov r0, 2 | r0 = 2;
0x000283e4 bl 0x5190 | r0 = inet_pton ();
0x000283e8 cmp r0, 0 |
0x000283ec ble 0x28410 |
| while (r0 > 0) {
| label_3:
0x000283f0 mov r6, 0 | r6 = 0;
| label_4:
0x000283f4 ldr r3, [r8] | r3 = *(r8);
0x000283f8 mov r0, r5 | r0 = r5;
0x000283fc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_5:
0x00028400 ldr r3, [r8] | r3 = *(r8);
0x00028404 mov r0, r4 | r0 = r4;
0x00028408 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002840c b 0x28308 | goto label_1;
0x00028410 add r2, sp, 0xc | r2 += var_ch;
0x00028414 mov r1, r5 | r1 = r5;
0x00028418 mov r0, 0xa | r0 = 0xa;
0x0002841c bl 0x5190 | r0 = inet_pton ();
0x00028420 cmp r0, 0 |
0x00028424 bgt 0x283f0 |
| }
0x00028428 mov r1, 0x2e | r1 = 0x2e;
0x0002842c mov r0, r4 | r0 = r4;
0x00028430 bl 0x5b38 | r0 = strchr (r0, r1);
0x00028434 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00028438 beq 0x283c0 | goto label_2;
| }
0x0002843c mov r1, 0x2e | r1 = 0x2e;
0x00028440 add r0, r6, 1 | r0 = r6 + 1;
0x00028444 bl 0x5b38 | strchr (r0, r1);
0x00028448 cmp r7, r6 |
| if (r7 > r6) {
0x0002844c movls r3, 0 | r3 = 0;
| }
| if (r7 <= r6) {
0x00028450 movhi r3, 1 | r3 = 1;
| }
0x00028454 cmp r0, 0 |
| if (r0 == 0) {
0x00028458 movne r0, r3 | r0 = r3;
| }
| if (r0 != 0) {
0x0002845c moveq r0, 1 | r0 = 1;
| }
0x00028460 cmp r0, 0 |
| if (r0 != 0) {
0x00028464 bne 0x283c0 | goto label_2;
| }
0x00028468 ldr r1, [pc, 0x90] | r1 = *(0x284fc);
0x0002846c mov r2, 4 | r2 = 4;
0x00028470 add r1, pc, r1 | r1 = pc + r1;
0x00028474 mov r0, r4 | r0 = r4;
0x00028478 bl 0x19e40 | r0 = Curl_strncasecompare ();
0x0002847c cmp r0, 0 |
| if (r0 != 0) {
0x00028480 bne 0x283c0 | goto label_2;
| }
0x00028484 mov r1, 0x2e | r1 = 0x2e;
0x00028488 mov r0, r5 | r0 = r5;
0x0002848c bl 0x5b38 | r0 = strchr (r0, r1);
0x00028490 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00028494 beq 0x283f0 | goto label_3;
| }
0x00028498 mov r1, sb | r1 = sb;
0x0002849c mov r0, r6 | r0 = r6;
0x000284a0 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x000284a4 cmp r0, 0 |
| if (r0 == 0) {
0x000284a8 beq 0x283f0 | goto label_3;
| }
0x000284ac sub r3, sb, r5 | r3 = sb - r5;
0x000284b0 sub r2, r6, r4 | r2 = r6 - r4;
0x000284b4 cmp r3, r2 |
| if (r3 < r2) {
0x000284b8 blt 0x283f0 | goto label_3;
| }
0x000284bc sub r2, r7, r4 | r2 = r7 - r4;
0x000284c0 mov r1, r5 | r1 = r5;
0x000284c4 mov r0, r4 | r0 = r4;
0x000284c8 bl 0x19e40 | r0 = Curl_strncasecompare ();
0x000284cc cmp r0, 0 |
| if (r0 == 0) {
0x000284d0 beq 0x283f0 | goto label_3;
| }
0x000284d4 add r0, r7, 1 | r0 = r7 + 1;
0x000284d8 sub r2, r6, r0 | r2 = r6 - r0;
0x000284dc sub r1, sb, r2 | r1 = sb - r2;
0x000284e0 bl 0x19e40 | r0 = Curl_strncasecompare ();
0x000284e4 cmp r0, 0 |
| if (r0 == 0) {
0x000284e8 beq 0x283f0 | goto label_3;
| }
0x000284ec mov r6, 1 | r6 = 1;
0x000284f0 b 0x283f4 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x107cc */
| #include <stdint.h>
|
; (fcn) sym.Curl_client_write () | void Curl_client_write () {
| int32_t var_0h;
| int32_t var_4h;
| void * s2;
| int32_t var_ch;
0x000107cc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000107d0 subs r4, r3, 0 | r4 = r3 - 0;
0x000107d4 sub sp, sp, 0x14 |
0x000107d8 stm sp, {r0, r1} | *(sp) = r0;
| *((sp + 4)) = r1;
0x000107dc mov r6, r2 | r6 = r2;
| if (r4 == r3) {
0x000107e0 bne 0x107f0 |
0x000107e4 mov r0, r2 | r0 = r2;
0x000107e8 bl 0x5250 | r0 = strlen (r0);
0x000107ec mov r4, r0 | r4 = r0;
| }
0x000107f0 ldr r3, [sp, 4] | r3 = var_4h;
0x000107f4 ands sb, r3, 1 | sb = r3 & 1;
| if (sb != r3) {
0x000107f8 beq 0x108a0 |
0x000107fc ldr r3, [sp] | r3 = *(sp);
0x00010800 ldr r3, [r3, 0x284] | r3 = *((r3 + 0x284));
0x00010804 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00010808 tst r3, 0xc |
| if ((r3 & 0xc) == 0) {
0x0001080c beq 0x108a0 | goto label_0;
| }
0x00010810 ldr r3, [sp] | r3 = *(sp);
0x00010814 ldrb r3, [r3, 0x4b0] | r3 = *((r3 + 0x4b0));
0x00010818 cmp r3, 0x41 |
| if (r3 != 0x41) {
0x0001081c bne 0x108a0 | goto label_0;
| }
0x00010820 cmp r4, 0 |
0x00010824 cmpne r6, 0 | __asm ("cmpne r6, 0");
| if (r4 == 0) {
0x00010828 beq 0x108a0 | goto label_0;
| }
0x0001082c ldr r3, [sp] | r3 = *(sp);
0x00010830 ldr sl, [r3] | sl = *(r3);
0x00010834 add r8, sl, 0x4000 | r8 = sl + 0x4000;
0x00010838 ldrb r3, [r8, 0x9de] | r3 = *((r8 + 0x9de));
0x0001083c cmp r3, 0 |
| if (r3 != 0) {
0x00010840 beq 0x10888 |
0x00010844 ldrb r3, [r6] | r3 = *(r6);
0x00010848 cmp r3, 0xa |
| if (r3 == 0xa) {
0x0001084c bne 0x10880 |
0x00010850 sub r4, r4, 1 | r4--;
0x00010854 mov r2, r4 | r2 = r4;
0x00010858 add r1, r6, 1 | r1 = r6 + 1;
0x0001085c mov r0, r6 | r0 = r6;
0x00010860 bl 0x5448 | memmove (r0, r1, r2);
0x00010864 add ip, sl, 0x4900 |
0x00010868 ldrd r2, r3, [ip, 0xe0] | __asm ("ldrd r2, r3, [ip, 0xe0]");
0x0001086c adds r0, r2, 1 | r0 = r2 + 1;
0x00010870 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x00010874 mov r2, r0 | r2 = r0;
0x00010878 mov r3, r1 | r3 = r1;
0x0001087c strd r2, r3, [ip, 0xe0] | __asm ("strd r2, r3, [ip, 0xe0]");
| }
0x00010880 mov r3, 0 | r3 = 0;
0x00010884 strb r3, [r8, 0x9de] | *((r8 + 0x9de)) = r3;
| }
0x00010888 mov r2, r4 | r2 = r4;
0x0001088c mov r1, 0xd | r1 = 0xd;
0x00010890 mov r0, r6 | r0 = r6;
0x00010894 bl 0x58f8 | r0 = memchr (r0, r1, r2);
0x00010898 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x0001089c bne 0x1095c | goto label_7;
| }
| }
| label_0:
0x000108a0 cmp r4, 0 |
| if (r4 != 0) {
0x000108a4 bne 0x10980 | goto label_8;
| }
| label_4:
0x000108a8 mov r0, 0 | r0 = 0;
| label_3:
0x000108ac add sp, sp, 0x14 |
0x000108b0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x000108b4 mov r2, 2 | r2 = 2;
0x000108b8 ldr r1, [sp, 8] | r1 = s2;
0x000108bc mov r0, r7 | r0 = r7;
0x000108c0 str ip, [sp, 0xc] | var_ch = ip;
0x000108c4 bl 0x5820 | memcmp (r0, r1, r2);
0x000108c8 ldr ip, [sp, 0xc] | ip = var_ch;
0x000108cc cmp r0, 0 |
| if (r0 != 0) {
0x000108d0 bne 0x10948 | goto label_9;
| }
0x000108d4 ldrb r2, [r7, 1] | r2 = *((r7 + 1));
0x000108d8 add r7, r7, 1 | r7++;
0x000108dc strb r2, [r5] | *(r5) = r2;
0x000108e0 ldrd r0, r1, [sl, 0xe0] | __asm ("ldrd r0, r1, [sl, 0xe0]");
0x000108e4 adds r2, r0, 1 | r2 = r0 + 1;
0x000108e8 adc r3, r1, 0 | __asm ("adc r3, r1, 0");
0x000108ec mov r0, r2 | r0 = r2;
0x000108f0 mov r1, r3 | r1 = r3;
0x000108f4 strd r0, r1, [sl, 0xe0] | __asm ("strd r0, r1, [sl, 0xe0]");
| label_1:
0x000108f8 add r5, r5, 1 | r5++;
0x000108fc add r7, r7, 1 | r7++;
| label_2:
0x00010900 cmp r7, ip |
0x00010904 blo 0x108b4 |
| } while (r7 <= ip);
0x00010908 add r4, r6, r4 | r4 = r6 + r4;
0x0001090c cmp r7, r4 |
| if (r7 < r4) {
0x00010910 bhs 0x10934 |
0x00010914 ldrb r3, [r7] | r3 = *(r7);
0x00010918 add r5, r5, 1 | r5++;
0x0001091c cmp r3, 0xd |
| if (r3 != 0xd) {
0x00010920 moveq r3, 0xa | r3 = 0xa;
| }
| if (r3 != 0xd) {
0x00010924 strbeq r3, [r5, -1] | *((r5 - 1)) = r3;
| }
| if (r3 == 0xd) {
0x00010928 strbne r3, [r5, -1] | *((r5 - 1)) = r3;
| }
| if (r3 != 0xd) {
0x0001092c moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0xd) {
0x00010930 strbeq r3, [r8, 0x9de] | *((r8 + 0x9de)) = r3;
| goto label_10;
| }
| }
| label_10:
0x00010934 cmp r4, r5 |
| if (r4 <= r5) {
0x00010938 movhi r3, 0 | r3 = 0;
| }
| if (r4 <= r5) {
0x0001093c strbhi r3, [r5] | *(r5) = r3;
| }
0x00010940 sub r4, r5, r6 | r4 = r5 - r6;
0x00010944 b 0x108a0 | goto label_0;
| label_9:
0x00010948 ldrb r2, [r7] | r2 = *(r7);
0x0001094c cmp r2, 0xd |
| if (r2 != 0xd) {
0x00010950 strbeq fp, [r5] | *(r5) = fp;
| }
| if (r2 == 0xd) {
0x00010954 strbne r2, [r5] | *(r5) = r2;
| }
0x00010958 b 0x108f8 | goto label_1;
| label_7:
0x0001095c ldr r2, [pc, 0x174] | r2 = *(0x10ad4);
0x00010960 sub r3, r4, 1 | r3 = r4 - 1;
0x00010964 add r2, pc, r2 | r2 = pc + r2;
0x00010968 mov r5, r7 | r5 = r7;
0x0001096c add ip, r6, r3 |
0x00010970 str r2, [sp, 8] | s2 = r2;
0x00010974 mov fp, 0xa |
0x00010978 add sl, sl, 0x4900 | sl += 0x4900;
0x0001097c b 0x10900 | goto label_2;
| label_8:
0x00010980 ldr r3, [sp] | r3 = *(sp);
0x00010984 ldr r5, [r3] | r5 = *(r3);
0x00010988 ldr r3, [r5, 0x110] | r3 = *((r5 + 0x110));
0x0001098c tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x00010990 movne r3, r4 | r3 = r4;
| }
| if ((r3 & 0x10) == 0) {
0x00010994 movne r2, r6 | r2 = r6;
| }
| if ((r3 & 0x10) != 0) {
0x00010998 bne 0x10a34 | goto label_11;
| }
0x0001099c ldr r3, [sp, 4] | r3 = var_4h;
0x000109a0 cmp sb, 0 |
| if (sb == 0) {
0x000109a4 ldrne sb, [r5, 0x188] | sb = *((r5 + 0x188));
| }
0x000109a8 ands r8, r3, 2 | r8 = r3 & 2;
| if (r8 != r3) {
0x000109ac beq 0x109c8 |
0x000109b0 ldr r8, [r5, 0x18c] | r8 = *((r5 + 0x18c));
0x000109b4 cmp r8, 0 |
| if (r8 != 0) {
0x000109b8 bne 0x109c8 | goto label_12;
| }
0x000109bc ldr r3, [r5, 0x148] | r3 = *((r5 + 0x148));
0x000109c0 cmp r3, 0 |
| if (r3 != 0) {
0x000109c4 ldrne r8, [r5, 0x188] | r8 = *((r5 + 0x188));
| goto label_12;
| }
| }
| label_12:
0x000109c8 mov fp, r6 |
0x000109cc mov r7, r4 | r7 = r4;
| do {
0x000109d0 cmp r7, 0x4000 |
| if (r7 >= 0x4000) {
0x000109d4 movlo sl, r7 | sl = r7;
| }
| if (r7 < 0x4000) {
0x000109d8 movhs sl, 0x4000 | sl = 0x4000;
| }
0x000109dc cmp sb, 0 |
| if (sb != 0) {
0x000109e0 beq 0x10a6c |
0x000109e4 mov r2, sl | r2 = sl;
0x000109e8 ldr r3, [r5, 0x140] | r3 = *((r5 + 0x140));
0x000109ec mov r1, 1 | r1 = 1;
0x000109f0 mov r0, fp | r0 = fp;
0x000109f4 blx sb | r0 = sb (r0, r1, r2, r3);
0x000109f8 cmp r0, 0x10000001 |
0x000109fc mov r2, r0 | r2 = r0;
| if (r0 == 0x10000001) {
0x00010a00 bne 0x10a48 |
0x00010a04 ldr r3, [sp] | r3 = *(sp);
0x00010a08 ldr r3, [r3, 0x284] | r3 = *((r3 + 0x284));
0x00010a0c ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x00010a10 tst r3, 0x10 |
| if ((r3 & 0x10) != 0) {
0x00010a14 moveq r3, r7 | r3 = r7;
| }
| if ((r3 & 0x10) != 0) {
0x00010a18 moveq r2, fp | r2 = fp;
| }
| if ((r3 & 0x10) != 0) {
0x00010a1c beq 0x10a34 |
0x00010a20 ldr r1, [pc, 0xb4] | r1 = $d;
0x00010a24 add r1, pc, r1 | r1 = pc + r1;
| label_6:
0x00010a28 mov r0, r5 | r0 = r5;
0x00010a2c bl 0x10544 | Curl_failf ();
0x00010a30 b 0x10a64 | goto label_13;
| }
| label_11:
0x00010a34 ldr r1, [sp, 4] | r1 = var_4h;
| label_5:
0x00010a38 mov r0, r5 | r0 = r5;
0x00010a3c add sp, sp, 0x14 |
0x00010a40 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010a44 b 0x10130 | void (*0x10130)() ();
| }
0x00010a48 cmp sl, r0 |
| if (sl == r0) {
0x00010a4c beq 0x10a6c | goto label_14;
| }
0x00010a50 ldr r1, [pc, 0x88] | r1 = *(0x10adc);
0x00010a54 mov r3, sl | r3 = sl;
0x00010a58 add r1, pc, r1 | r1 = pc + r1;
0x00010a5c mov r0, r5 | r0 = r5;
0x00010a60 bl 0x10544 | Curl_failf ();
| label_13:
0x00010a64 mov r0, 0x17 | r0 = 0x17;
0x00010a68 b 0x108ac | goto label_3;
| }
| label_14:
0x00010a6c subs r7, r7, sl | r7 -= sl;
0x00010a70 add fp, fp, sl |
0x00010a74 bne 0x109d0 |
| } while (r7 != r7);
0x00010a78 cmp r8, 0 |
| if (r8 == 0) {
0x00010a7c beq 0x108a8 | goto label_4;
| }
0x00010a80 mov r1, 1 | r1 = 1;
0x00010a84 mov r0, r5 | r0 = r5;
0x00010a88 bl 0x203dc | Curl_set_in_callback ();
0x00010a8c ldr r3, [r5, 0x148] | r3 = *((r5 + 0x148));
0x00010a90 mov r2, r4 | r2 = r4;
0x00010a94 mov r1, 1 | r1 = 1;
0x00010a98 mov r0, r6 | r0 = r6;
0x00010a9c blx r8 | uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00010aa0 mov r1, r7 | r1 = r7;
0x00010aa4 mov r8, r0 | r8 = r0;
0x00010aa8 mov r0, r5 | r0 = r5;
0x00010aac bl 0x203dc | Curl_set_in_callback ();
0x00010ab0 cmp r8, 0x10000001 |
| if (r8 != 0x10000001) {
0x00010ab4 moveq r3, r4 | r3 = r4;
| }
| if (r8 != 0x10000001) {
0x00010ab8 moveq r2, r6 | r2 = r6;
| }
| if (r8 == 0x10000001) {
0x00010abc moveq r1, 2 | r1 = 2;
| goto label_15;
| }
| if (r8 == 0x10000001) {
| label_15:
0x00010ac0 beq 0x10a38 | goto label_5;
| }
0x00010ac4 cmp r4, r8 |
| if (r4 == r8) {
0x00010ac8 beq 0x108a8 | goto label_4;
| }
0x00010acc ldr r1, [pc, 0x10] | r1 = *(0x10ae0);
0x00010ad0 add r1, pc, r1 | r1 = pc + r1;
0x00010ad4 b 0x10a28 | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xcf18 */
| #include <stdint.h>
|
; (fcn) sym.Curl_compareheader () | void Curl_compareheader (int32_t arg1, char * s) {
| r0 = arg1;
| r1 = s;
0x0000cf18 push {r4, r5, r6, r7, r8, lr} |
0x0000cf1c mov r4, r0 | r4 = r0;
0x0000cf20 mov r0, r1 | r0 = r1;
0x0000cf24 mov r7, r1 | r7 = r1;
0x0000cf28 mov r6, r2 | r6 = r2;
0x0000cf2c bl 0x5250 | strlen (r0);
0x0000cf30 mov r1, r7 | r1 = r7;
0x0000cf34 mov r5, r0 | r5 = r0;
0x0000cf38 mov r2, r0 | r2 = r0;
0x0000cf3c mov r0, r4 | r0 = r4;
0x0000cf40 bl 0x19e40 | r0 = Curl_strncasecompare ();
0x0000cf44 cmp r0, 0 |
| if (r0 == 0) {
0x0000cf48 addne r4, r4, r5 | r4 += r5;
| }
| if (r0 != 0) {
0x0000cf4c bne 0xcf68 | goto label_2;
| }
| label_0:
0x0000cf50 mov r0, 0 | r0 = 0;
0x0000cf54 pop {r4, r5, r6, r7, r8, pc} |
| do {
0x0000cf58 bl 0x2f898 | r0 = Curl_isspace ();
0x0000cf5c cmp r0, 0 |
| if (r0 == 0) {
0x0000cf60 beq 0xcf78 | goto label_3;
| }
0x0000cf64 mov r4, r5 | r4 = r5;
| label_2:
0x0000cf68 mov r5, r4 | r5 = r4;
0x0000cf6c ldrb r0, [r5], 1 | r0 = *(r5);
| r5++;
0x0000cf70 cmp r0, 0 |
0x0000cf74 bne 0xcf58 |
| } while (r0 != 0);
| label_3:
0x0000cf78 mov r1, 0xd | r1 = 0xd;
0x0000cf7c mov r0, r4 | r0 = r4;
0x0000cf80 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000cf84 cmp r0, 0 |
| if (r0 == 0) {
0x0000cf88 bne 0xcfac |
0x0000cf8c mov r1, 0xa | r1 = 0xa;
0x0000cf90 mov r0, r4 | r0 = r4;
0x0000cf94 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000cf98 cmp r0, 0 |
| if (r0 != 0) {
0x0000cf9c bne 0xcfac | goto label_4;
| }
0x0000cfa0 mov r0, r4 | r0 = r4;
0x0000cfa4 bl 0x5250 | r0 = strlen (r0);
0x0000cfa8 add r0, r4, r0 | r0 = r4 + r0;
| }
| label_4:
0x0000cfac sub r5, r0, r4 | r5 = r0 - r4;
0x0000cfb0 mov r0, r6 | r0 = r6;
0x0000cfb4 bl 0x5250 | strlen (r0);
0x0000cfb8 add r4, r4, r5 | r4 += r5;
0x0000cfbc mov r7, r0 | r7 = r0;
| label_1:
0x0000cfc0 cmp r5, r7 |
0x0000cfc4 sub r0, r4, r5 | r0 = r4 - r5;
| if (r5 <= r7) {
0x0000cfc8 blo 0xcf50 | goto label_0;
| }
0x0000cfcc mov r2, r7 | r2 = r7;
0x0000cfd0 mov r1, r6 | r1 = r6;
0x0000cfd4 bl 0x19e40 | r0 = Curl_strncasecompare ();
0x0000cfd8 cmp r0, 0 |
| if (r0 == 0) {
0x0000cfdc subeq r5, r5, 1 | r5--;
| goto label_5;
| }
| if (r0 == 0) {
| label_5:
0x0000cfe0 beq 0xcfc0 | goto label_1;
| }
0x0000cfe4 mov r0, 1 | r0 = 1;
0x0000cfe8 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x11574 */
| #include <stdint.h>
|
; (fcn) sym.Curl_connected_proxy () | void Curl_connected_proxy (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x00011574 ldrb r2, [r0, 0x257] | r2 = *((r0 + 0x257));
0x00011578 push {r0, r1, r4, lr} |
0x0001157c cmp r2, 0 |
| if (r2 != 0) {
0x00011580 moveq r0, r2 | r0 = r2;
| }
| if (r2 == 0) {
0x00011584 beq 0x11634 | goto label_2;
| }
0x00011588 ldrb r2, [r0, 0x256] | r2 = *((r0 + 0x256));
0x0001158c mov r3, r1 | r3 = r1;
0x00011590 cmp r2, 0 |
| if (r2 == 0) {
0x00011594 ldrne r1, [r0, 0xe4] | r1 = *((r0 + 0xe4));
| }
| if (r2 == 0) {
0x00011598 ldrne r2, [r0, 0xec] | r2 = *((r0 + 0xec));
| }
| if (r2 != 0) {
0x0001159c bne 0x115c0 | goto label_0;
| }
0x000115a0 ldrb r2, [r0, 0x253] | r2 = *((r0 + 0x253));
0x000115a4 cmp r2, 0 |
| if (r2 == 0) {
0x000115a8 beq 0x115f0 | goto label_3;
| }
0x000115ac cmp r3, 1 |
0x000115b0 ldr r1, [r0, 0xb4] | r1 = *((r0 + 0xb4));
| if (r3 != 1) {
0x000115b4 bne 0x11600 | goto label_4;
| }
| do {
0x000115b8 add r2, r0, 0x108 | r2 = r0 + 0x108;
0x000115bc ldrh r2, [r2] | r2 = *(r2);
| label_0:
0x000115c0 mov r4, r0 | r4 = r0;
0x000115c4 mov r0, 1 | r0 = 1;
0x000115c8 strb r0, [r4, 0x273] | *((r4 + 0x273)) = r0;
0x000115cc ldr r0, [r4, 0xd0] | r0 = *((r4 + 0xd0));
0x000115d0 sub r0, r0, 4 | r0 -= 4;
0x000115d4 cmp r0, 3 |
| if (r0 > 3) {
| /* switch table (4 cases) at 0x115e0 */
0x000115d8 addls pc, pc, r0, lsl 2 | pc += (r0 << 2);
| }
0x000115dc b 0x1164c | goto label_5;
0x000115e0 b 0x1163c | goto label_6;
0x000115e4 b 0x11614 | goto label_7;
0x000115e8 b 0x1163c | goto label_6;
0x000115ec b 0x11614 | goto label_7;
| label_3:
0x000115f0 cmp r3, 1 |
| if (r3 != 1) {
0x000115f4 ldreq r1, [r0, 0xa8] | r1 = *((r0 + 0xa8));
| }
| if (r3 == 1) {
0x000115f8 ldrne r1, [r0, 0xa0] | r1 = *((r0 + 0xa0));
| }
0x000115fc beq 0x115b8 |
| } while (r3 == 1);
| label_4:
0x00011600 ldrb r2, [r0, 0x254] | r2 = *((r0 + 0x254));
0x00011604 cmp r2, 0 |
| if (r2 == 0) {
0x00011608 ldrne r2, [r0, 0x104] | r2 = *((r0 + 0x104));
| }
| if (r2 != 0) {
0x0001160c ldreq r2, [r0, 0x100] | r2 = *((r0 + 0x100));
| }
0x00011610 b 0x115c0 | goto label_0;
| label_7:
0x00011614 stm sp, {r3, r4} | *(sp) = r3;
| *((sp + 4)) = r4;
0x00011618 ldr r0, [r4, 0xd4] | r0 = *((r4 + 0xd4));
0x0001161c mov r3, r2 | r3 = r2;
0x00011620 mov r2, r1 | r2 = r1;
0x00011624 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x00011628 bl 0x23fe8 | Curl_SOCKS5 ();
| do {
| label_1:
0x0001162c mov r3, 0 | r3 = 0;
0x00011630 strb r3, [r4, 0x273] | *((r4 + 0x273)) = r3;
| label_2:
0x00011634 add sp, sp, 8 |
0x00011638 pop {r4, pc} |
| label_6:
0x0001163c str r4, [sp] | *(sp) = r4;
0x00011640 ldr r0, [r4, 0xd4] | r0 = *((r4 + 0xd4));
0x00011644 bl 0x23ab4 | Curl_SOCKS4 ();
0x00011648 b 0x1162c |
| } while (1);
| label_5:
0x0001164c ldr r1, [pc, 0x10] | r1 = *(0x11660);
0x00011650 ldr r0, [r4] | r0 = *(r4);
0x00011654 add r1, pc, r1 | r1 = pc + r1;
0x00011658 bl 0x10544 | Curl_failf ();
0x0001165c mov r0, 7 | r0 = 7;
0x00011660 b 0x1162c | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x125f4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.Curl_connect () | void Curl_connect (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| size_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| char * s;
| int32_t var_34h;
| size_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| char * var_64h;
| int32_t var_68h;
| int32_t var_70h;
| int32_t var_7eh;
| int32_t var_7fh;
| int32_t var_80h;
| size_t nmeb;
| size_t var_88h;
| size_t size;
| size_t var_90h;
| size_t var_94h;
| char * endptr;
| char * dest;
| int32_t var_0h_2;
| int32_t var_0h_3;
| int32_t var_124h;
| r0 = arg1;
| r1 = arg2;
0x000125f4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000125f8 sub sp, sp, 0x124 |
0x000125fc str r3, [sp, 0x58] | var_58h = r3;
0x00012600 ldr r3, [pc, 0xfcc] | r3 = *(0x135d0);
0x00012604 mov r4, 0 | r4 = 0;
0x00012608 add r3, pc, r3 | r3 = pc + r3;
0x0001260c mov r5, r0 | r5 = r0;
0x00012610 strb r4, [r2] | *(r2) = r4;
0x00012614 ldr r0, [r0, 0x64] | r0 = *((r0 + 0x64));
0x00012618 str r2, [sp, 0x3c] | var_3ch = r2;
0x0001261c str r3, [sp, 0x24] | var_24h = r3;
0x00012620 str r1, [sp, 0x34] | var_34h = r1;
0x00012624 str r4, [sp, 0x80] | var_80h = r4;
0x00012628 str r4, [sp, 0x84] | nmeb = r4;
0x0001262c str r4, [sp, 0x88] | var_88h = r4;
0x00012630 strb r4, [sp, 0x7e] | var_7eh = r4;
0x00012634 strb r4, [sp, 0x7f] | var_7fh = r4;
0x00012638 bl 0x20384 | Curl_multi_max_host_connections ();
0x0001263c str r0, [sp, 0x40] | var_40h = r0;
0x00012640 ldr r0, [r5, 0x64] | r0 = *((r5 + 0x64));
0x00012644 bl 0x20390 | Curl_multi_max_total_connections ();
0x00012648 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001264c ldr r2, [sp, 0x24] | r2 = var_24h;
0x00012650 strb r4, [r3] | *(r3) = r4;
0x00012654 ldr r3, [r5, 0x678] | r3 = *((r5 + 0x678));
0x00012658 str r3, [sp, 0x1c] | var_1ch = r3;
0x0001265c cmp r3, r4 |
0x00012660 ldr r3, [pc, 0xf70] | r3 = $d;
0x00012664 str r0, [sp, 0x48] | var_48h = r0;
0x00012668 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001266c str r3, [sp, 0x20] | var_20h = r3;
| if (r3 == r4) {
0x00012670 beq 0x12ab4 | goto label_34;
| }
0x00012674 ldr r3, [pc, 0xf60] | r3 = *(0x135d8);
0x00012678 mov r1, 0x510 | r1 = 0x510;
0x0001267c ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x00012680 mov r0, 1 | r0 = 1;
0x00012684 ldr r3, [r6] | r3 = *(r6);
0x00012688 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001268c subs r4, r0, 0 | r4 = r0 - 0;
0x00012690 bne 0x126a4 |
| while (r0 == r8) {
| label_2:
0x00012694 mov r3, 0 | r3 = 0;
0x00012698 str r3, [sp, 0x1c] | var_1ch = r3;
| label_0:
0x0001269c mov fp, 0x1b |
0x000126a0 b 0x13128 | goto label_16;
0x000126a4 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000126a8 ldr r3, [pc, 0xf30] |
0x000126ac mov r0, 4 | r0 = 4;
0x000126b0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000126b4 ldr r3, [r3] | r3 = *(0x135dc);
0x000126b8 ldr r7, [r3, 0xc] | r7 = *(0x135e8);
0x000126bc ldr r3, [r6] | r3 = *(r6);
0x000126c0 mov r1, r7 | r1 = r7;
0x000126c4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000126c8 subs r3, r0, 0 | r3 = r0 - 0;
0x000126cc str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 != r0) {
0x000126d0 ldreq r3, [sp, 0x20] | r3 = var_20h;
| }
| if (r3 != r0) {
0x000126d4 moveq r0, r4 | r0 = r4;
| }
| if (r3 != r0) {
0x000126d8 ldreq r3, [r3] | r3 = *(r3);
| }
| if (r3 == r0) {
0x000126dc beq 0x14a5c | goto label_44;
| }
0x000126e0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000126e4 mov r0, r4 | r0 = r4;
0x000126e8 add r1, r3, r7 | r1 = r3 + r7;
0x000126ec str r3, [r4, 0x1fc] | *((r4 + 0x1fc)) = r3;
0x000126f0 str r3, [r4, 0x1c8] | *((r4 + 0x1c8)) = r3;
0x000126f4 ldr r3, [pc, 0xee8] | r3 = *(0x135e0);
0x000126f8 str r1, [r4, 0x1d8] | *((r4 + 0x1d8)) = r1;
0x000126fc add r3, pc, r3 | r3 = pc + r3;
0x00012700 add r1, r1, r7 | r1 += r7;
0x00012704 str r1, [r4, 0x1e8] | *((r4 + 0x1e8)) = r1;
0x00012708 str r3, [r4, 0x284] | *((r4 + 0x284)) = r3;
0x0001270c add r1, r1, r7 | r1 += r7;
0x00012710 mvn r3, 0 | r3 = ~0;
0x00012714 str r3, [r4, 0x198] | *((r4 + 0x198)) = r3;
0x00012718 str r3, [r4, 0x19c] | *((r4 + 0x19c)) = r3;
0x0001271c str r3, [r4, 0x1a0] | *((r4 + 0x1a0)) = r3;
0x00012720 str r3, [r4, 0x1a4] | *((r4 + 0x1a4)) = r3;
0x00012724 str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x00012728 str r3, [r4, 0xfc] | *((r4 + 0xfc)) = r3;
0x0001272c str r3, [r4, 0x100] | *((r4 + 0x100)) = r3;
0x00012730 str r1, [r4, 0x1f8] | *((r4 + 0x1f8)) = r1;
0x00012734 add r7, sp, 0x70 | r7 += var_70h;
0x00012738 mov r1, 1 | r1 = 1;
0x0001273c bl 0x1cb34 | Curl_conncontrol ();
0x00012740 mov r0, r7 | r0 = r7;
0x00012744 bl 0x69f0 | r0 = Curl_now ();
0x00012748 ldm r7, {r0, r1} | r0 = *(r7);
| r1 = *((r7 + 4));
0x0001274c ldr r2, [r5, 0x490] | r2 = *((r5 + 0x490));
0x00012750 add r3, r4, 0x190 | r3 = r4 + 0x190;
0x00012754 stm r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00012758 mov r3, 4 | r3 = 4;
0x0001275c str r3, [r4, 0xd0] | *((r4 + 0xd0)) = r3;
0x00012760 ldr r3, [r5, 0x55c] | r3 = *((r5 + 0x55c));
0x00012764 str r5, [r4] | *(r4) = r5;
0x00012768 cmp r3, 0 |
0x0001276c str r2, [r4, 0xf0] | *((r4 + 0xf0)) = r2;
| if (r3 != 0) {
0x00012770 beq 0x12780 |
0x00012774 ldrb r3, [r3] | r3 = *(r3);
0x00012778 adds r3, r3, 0 | r3 += 0;
| if (r3 != r3) {
0x0001277c movne r3, 1 | r3 = 1;
| goto label_45;
| }
| }
| label_45:
0x00012780 cmp r2, 2 |
| if (r2 <= 2) {
0x00012784 movhi r2, 0 | r2 = 0;
| }
| if (r2 > 2) {
0x00012788 andls r2, r3, 1 | r2 = r3 & 1;
| }
0x0001278c strb r3, [r4, 0x255] | *((r4 + 0x255)) = r3;
0x00012790 eor r3, r3, 1 | r3 ^= 1;
0x00012794 orr r3, r2, r3 | r3 = r2 | r3;
0x00012798 eor r3, r3, 1 | r3 ^= 1;
0x0001279c strb r3, [r4, 0x257] | *((r4 + 0x257)) = r3;
0x000127a0 ldr r3, [r5, 0x560] | r3 = *((r5 + 0x560));
0x000127a4 strb r2, [r4, 0x256] | *((r4 + 0x256)) = r2;
0x000127a8 cmp r3, 0 |
| if (r3 != 0) {
0x000127ac beq 0x127c4 |
0x000127b0 ldrb r3, [r3] | r3 = *(r3);
0x000127b4 cmp r3, 0 |
| if (r3 == 0) {
0x000127b8 movne r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x000127bc strbne r3, [r4, 0x255] | *((r4 + 0x255)) = r3;
| }
| if (r3 != 0) {
0x000127c0 strbne r3, [r4, 0x257] | *((r4 + 0x257)) = r3;
| goto label_46;
| }
| }
| label_46:
0x000127c4 ldr r3, [r5, 0x5c0] | r3 = *((r5 + 0x5c0));
0x000127c8 mov r1, 1 | r1 = 1;
0x000127cc adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x000127d0 movne r3, 1 | r3 = 1;
| }
0x000127d4 strb r3, [r4, 0x259] | *((r4 + 0x259)) = r3;
0x000127d8 ldrb r3, [r5, 0x4c2] | r3 = *((r5 + 0x4c2));
0x000127dc ldr r0, [r5, 0x64] | r0 = *((r5 + 0x64));
0x000127e0 strb r3, [r4, 0x261] | *((r4 + 0x261)) = r3;
0x000127e4 ldr r3, [r5, 0x5b4] | r3 = *((r5 + 0x5b4));
0x000127e8 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x000127ec movne r3, 1 | r3 = 1;
| }
0x000127f0 strb r3, [r4, 0x258] | *((r4 + 0x258)) = r3;
0x000127f4 ldrb r3, [r5, 0x4dc] | r3 = *((r5 + 0x4dc));
0x000127f8 strb r3, [r4, 0x264] | *((r4 + 0x264)) = r3;
0x000127fc ldrb r3, [r5, 0x4dd] | r3 = *((r5 + 0x4dd));
0x00012800 strb r3, [r4, 0x265] | *((r4 + 0x265)) = r3;
0x00012804 ldrb r3, [r5, 0x3e6] | r3 = *((r5 + 0x3e6));
0x00012808 strb r3, [r4, 0x20a] | *((r4 + 0x20a)) = r3;
0x0001280c ldrb r3, [r5, 0x3e4] | r3 = *((r5 + 0x3e4));
0x00012810 strb r3, [r4, 0x208] | *((r4 + 0x208)) = r3;
0x00012814 ldrb r3, [r5, 0x3e5] | r3 = *((r5 + 0x3e5));
0x00012818 strb r3, [r4, 0x209] | *((r4 + 0x209)) = r3;
0x0001281c ldrb r3, [r5, 0x43e] | r3 = *((r5 + 0x43e));
0x00012820 strb r3, [r4, 0x232] | *((r4 + 0x232)) = r3;
0x00012824 ldrb r3, [r5, 0x43c] | r3 = *((r5 + 0x43c));
0x00012828 strb r3, [r4, 0x230] | *((r4 + 0x230)) = r3;
0x0001282c ldrb r3, [r5, 0x43d] | r3 = *((r5 + 0x43d));
0x00012830 strb r3, [r4, 0x231] | *((r4 + 0x231)) = r3;
0x00012834 ldr r3, [r5, 0x4a4] | r3 = *((r5 + 0x4a4));
0x00012838 str r3, [r4, 0x28c] | *((r4 + 0x28c)) = r3;
0x0001283c bl 0x1dbe4 | Curl_pipeline_wanted ();
0x00012840 add r3, r4, 0x2c4 | r3 = r4 + 0x2c4;
0x00012844 str r3, [sp, 0x60] | var_60h = r3;
0x00012848 cmp r0, 0 |
| if (r0 != 0) {
0x0001284c bne 0x12958 | goto label_47;
| }
| label_1:
0x00012850 ldr r6, [pc, 0xd90] | r6 = "sing_weak_random_seed";
0x00012854 add r0, r4, 0x2c4 | r0 = r4 + 0x2c4;
0x00012858 add r6, pc, r6 | r6 = pc + r6;
0x0001285c mov r1, r6 | r1 = r6;
0x00012860 bl 0x1cbe4 | Curl_llist_init ();
0x00012864 add r3, r4, 0x2d4 | r3 = r4 + 0x2d4;
0x00012868 mov r0, r3 | r0 = r3;
0x0001286c mov r1, r6 | r1 = r6;
0x00012870 str r3, [sp, 0x5c] | var_5ch = r3;
0x00012874 bl 0x1cbe4 | Curl_llist_init ();
0x00012878 ldr r0, [r5, 0x528] | r0 = *((r5 + 0x528));
0x0001287c cmp r0, 0 |
| if (r0 != 0) {
0x00012880 bne 0x129dc | goto label_48;
| }
| label_3:
0x00012884 ldr r3, [r5, 0x184] | r3 = *((r5 + 0x184));
0x00012888 add r2, r5, 0x180 | r2 = r5 + 0x180;
0x0001288c ldrh r2, [r2] | r2 = *(r2);
0x00012890 str r3, [r4, 0x4f8] | *((r4 + 0x4f8)) = r3;
0x00012894 add r3, r4, 0x4f0 | r3 = r4 + 0x4f0;
0x00012898 strh r2, [r3, 4] | *((r3 + 4)) = r2;
0x0001289c ldr r3, [r5, 0x1c0] | r3 = *((r5 + 0x1c0));
0x000128a0 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x000128a4 str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
0x000128a8 ldr r3, [r5, 0x1c4] | r3 = *((r5 + 0x1c4));
0x000128ac add r6, r5, 0x4000 | r6 = r5 + 0x4000;
0x000128b0 str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x000128b4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000128b8 mov r8, 0 | r8 = 0;
0x000128bc str r4, [r3] | *(r3) = r4;
0x000128c0 bl 0x5250 | strlen (r0);
0x000128c4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000128c8 ldr r3, [r3] | r3 = *(r3);
0x000128cc mov r7, r0 | r7 = r0;
0x000128d0 ldr r0, [r6, 0x9e8] | r0 = *((r6 + 0x9e8));
0x000128d4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000128d8 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000128dc ldr r3, [pc, 0xd08] |
0x000128e0 cmp r7, 0x100 |
0x000128e4 str r8, [r6, 0x9e8] | *((r6 + 0x9e8)) = r8;
0x000128e8 str r8, [r6, 0x9ec] | *((r6 + 0x9ec)) = r8;
0x000128ec ldr r3, [r2, r3] | r3 = *((r2 + r3));
| if (r7 >= 0x100) {
0x000128f0 movlo r7, 0x100 | r7 = 0x100;
| }
0x000128f4 add r7, r7, 2 | r7 += 2;
0x000128f8 str r3, [sp, 0x2c] | s = r3;
0x000128fc mov r0, r7 | r0 = r7;
0x00012900 ldr r3, [r3] | r3 = *(0x135e8);
0x00012904 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00012908 cmp r0, r8 |
0x0001290c str r0, [r6, 0x9e8] | *((r6 + 0x9e8)) = r0;
0x00012910 beq 0x12694 |
| }
0x00012914 ldr r3, [sp, 0x2c] | r3 = s;
0x00012918 str r0, [r6, 0x9ec] | *((r6 + 0x9ec)) = r0;
0x0001291c ldr r3, [r3] | r3 = *(r3);
0x00012920 mov r0, r7 | r0 = r7;
0x00012924 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012928 cmp r0, 0 |
0x0001292c str r0, [sp, 0x1c] | var_1ch = r0;
0x00012930 str r0, [r4, 0x98] | *((r4 + 0x98)) = r0;
| if (r0 != 0) {
0x00012934 bne 0x12a00 | goto label_49;
| }
0x00012938 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001293c ldr r0, [r6, 0x9e8] | r0 = *((r6 + 0x9e8));
0x00012940 ldr r3, [r3] | r3 = *(r3);
0x00012944 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012948 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001294c str r3, [r6, 0x9e8] | *((r6 + 0x9e8)) = r3;
0x00012950 str r3, [r6, 0x9ec] | *((r6 + 0x9ec)) = r3;
0x00012954 b 0x1269c | goto label_0;
| label_47:
0x00012958 ldr r3, [r4, 0x2e4] | r3 = *((r4 + 0x2e4));
0x0001295c cmp r3, 0 |
| if (r3 != 0) {
0x00012960 bne 0x12850 | goto label_1;
| }
0x00012964 ldr r3, [r6] | r3 = *(r6);
0x00012968 mov r1, 1 | r1 = 1;
0x0001296c mov r0, 0x4000 | r0 = 0x4000;
0x00012970 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00012974 cmp r0, 0 |
0x00012978 str r0, [r4, 0x2e4] | *((r4 + 0x2e4)) = r0;
| if (r0 != 0) {
0x0001297c bne 0x12850 | goto label_1;
| }
| label_4:
0x00012980 add r0, r4, 0x2c4 | r0 = r4 + 0x2c4;
0x00012984 mov r1, 0 | r1 = 0;
0x00012988 bl 0x1ccfc | Curl_llist_destroy ();
0x0001298c mov r1, 0 | r1 = 0;
0x00012990 add r0, r4, 0x2d4 | r0 = r4 + 0x2d4;
0x00012994 bl 0x1ccfc | Curl_llist_destroy ();
0x00012998 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001299c ldr r0, [r4, 0x2e4] | r0 = *((r4 + 0x2e4));
0x000129a0 ldr r3, [r3] | r3 = *(r3);
0x000129a4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000129a8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000129ac ldr r0, [r4, 0x4f0] | r0 = *((r4 + 0x4f0));
0x000129b0 ldr r3, [r3] | r3 = *(r3);
0x000129b4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000129b8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000129bc ldr r0, [r4, 0x1fc] | r0 = *((r4 + 0x1fc));
0x000129c0 ldr r3, [r3] | r3 = *(r3);
0x000129c4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000129c8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000129cc mov r0, r4 | r0 = r4;
0x000129d0 ldr r3, [r3] | r3 = *(r3);
0x000129d4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000129d8 b 0x12694 | goto label_2;
| label_48:
0x000129dc ldr r2, [sp, 0x24] | r2 = var_24h;
0x000129e0 ldr r3, [pc, 0xd54] |
0x000129e4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000129e8 ldr r3, [r3] | r3 = *(0x13738);
0x000129ec blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r2, r3);
0x000129f0 cmp r0, 0 |
0x000129f4 str r0, [r4, 0x4f0] | *((r4 + 0x4f0)) = r0;
| if (r0 != 0) {
0x000129f8 bne 0x12884 | goto label_3;
| }
0x000129fc b 0x12980 | goto label_4;
| label_49:
0x00012a00 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00012a04 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00012a08 str r3, [r4, 0xa0] | *((r4 + 0xa0)) = r3;
0x00012a0c strb r8, [r3] | *(r3) = r8;
0x00012a10 ldr r3, [pc, 0xd24] |
0x00012a14 ldr r7, [pc, 0xbd4] | r7 = *(0x135ec);
0x00012a18 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00012a1c add r7, pc, r7 | r7 = pc + r7;
0x00012a20 str r3, [sp, 0x28] | var_28h = r3;
0x00012a24 mov r0, r7 | r0 = r7;
0x00012a28 ldr r3, [r3] |
0x00012a2c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00012a30 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00012a34 ldr r3, [r3] |
0x00012a38 str r0, [sp, 0x84] | nmeb = r0;
0x00012a3c mov r0, r7 | r0 = r7;
0x00012a40 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012a44 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00012a48 ldr r3, [r3] | r3 = *(0x13738);
0x00012a4c str r0, [sp, 0x88] | var_88h = r0;
0x00012a50 mov r0, r7 | r0 = r7;
0x00012a54 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012a58 ldr r2, [sp, 0x84] | r2 = nmeb;
0x00012a5c ldr r3, [sp, 0x88] | r3 = var_88h;
0x00012a60 cmp r2, 0 |
0x00012a64 clz r3, r3 | r3 &= r3;
0x00012a68 lsr r3, r3, 5 | r3 >>= 5;
| if (r2 != 0) {
0x00012a6c moveq r3, 1 | r3 = 1;
| }
0x00012a70 cmp r3, 0 |
0x00012a74 str r3, [sp, 0x4c] | var_4ch = r3;
0x00012a78 str r0, [sp, 0x1c] | var_1ch = r0;
| if (r3 != 0) {
0x00012a7c bne 0x1269c | goto label_0;
| }
0x00012a80 cmp r0, 0 |
| if (r0 == 0) {
0x00012a84 beq 0x12694 | goto label_2;
| }
0x00012a88 ldr r7, [r5, 0x678] | r7 = *((r5 + 0x678));
0x00012a8c ldr r1, [pc, 0xb60] | r1 = *(0x135f0);
0x00012a90 mov r0, r7 | r0 = r7;
0x00012a94 add r1, pc, r1 | r1 = pc + r1;
0x00012a98 bl 0x5b20 | r0 = strpbrk (r0, r1);
0x00012a9c cmp r0, 0 |
| if (r0 == 0) {
0x00012aa0 beq 0x12abc | goto label_50;
| }
0x00012aa4 ldr r1, [pc, 0xb4c] | r1 = *(0x135f4);
0x00012aa8 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_5:
0x00012aac mov r0, r5 | r0 = r5;
0x00012ab0 bl 0x10544 | Curl_failf ();
| label_34:
0x00012ab4 mov fp, 3 |
0x00012ab8 b 0x13128 | goto label_16;
| label_50:
0x00012abc ldrb r3, [r7] | r3 = *(r7);
0x00012ac0 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x00012ac4 ldreq r1, [pc, 0xb30] | r1 = *(0x000135fc);
| }
| if (r3 != 0x3a) {
0x00012ac8 addeq r1, pc, r1 | r1 = pc + r1;
| }
0x00012acc beq 0x12aac |
| } while (r3 == 0x3a);
0x00012ad0 bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x00012ad4 sub r3, r3, 0x41 | r3 -= 0x41;
0x00012ad8 cmp r3, 0x19 |
0x00012adc ldr r6, [r6, 0x9ec] | r6 = *((r6 + 0x9ec));
| if (r3 > 0x19) {
0x00012ae0 bhi 0x12b88 | goto label_51;
| }
0x00012ae4 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x00012ae8 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x00012aec bne 0x12b88 | goto label_51;
| }
0x00012af0 ldr r0, [r5, 0x524] | r0 = *((r5 + 0x524));
0x00012af4 cmp r0, 0 |
| if (r0 == 0) {
0x00012af8 beq 0x12b88 | goto label_51;
| }
0x00012afc ldr r1, [pc, 0xafc] | r1 = *(0x135fc);
0x00012b00 add r1, pc, r1 | r1 = pc + r1;
0x00012b04 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00012b08 cmp r0, 0 |
| if (r0 == 0) {
0x00012b0c beq 0x12b88 | goto label_51;
| }
| do {
| label_7:
0x00012b10 ldr r0, [r5, 0x524] | r0 = *((r5 + 0x524));
0x00012b14 cmp r0, 0 |
| if (r0 != 0) {
0x00012b18 bne 0x12b98 | goto label_52;
| }
| label_9:
0x00012b1c mov r7, 0 | r7 = 0;
0x00012b20 strb r7, [r6] | *(r6) = r7;
0x00012b24 ldr r1, [pc, 0xad8] | r1 = *(0x13600);
0x00012b28 str r6, [sp, 4] | var_4h = r6;
0x00012b2c ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x00012b30 add sb, sp, 0x98 | sb += endptr;
0x00012b34 add r8, sp, 0xa0 | r8 += dest;
0x00012b38 str r3, [sp] | *(sp) = r3;
0x00012b3c mov r2, r8 | r2 = r8;
0x00012b40 mov r3, sb | r3 = sb;
0x00012b44 add r1, pc, r1 | r1 = pc + r1;
0x00012b48 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x00012b4c bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x00012b50 cmp r0, 2 |
| if (r0 != 2) {
0x00012b54 bne 0x12e70 | goto label_53;
| }
0x00012b58 ldr r1, [pc, 0xaa8] | r1 = Curl_sasl_can_authenticate;
0x00012b5c add r1, pc, r1 | r1 = pc + r1;
0x00012b60 b 0x12aac | goto label_5;
| label_6:
0x00012b64 cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x00012b68 beq 0x1509c | goto label_54;
| }
0x00012b6c cmp r1, r2 |
0x00012b70 beq 0x12b10 |
| } while (r1 == r2);
| label_8:
0x00012b74 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00012b78 cmp r3, 0x2f |
0x00012b7c cmpne r3, 0 | __asm ("cmpne r3, 0");
| if (r3 != 0x2f) {
0x00012b80 bne 0x12b64 | goto label_6;
| }
0x00012b84 b 0x12b10 | goto label_7;
| label_51:
0x00012b88 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x00012b8c sub r2, r0, 1 | r2 = r0 - 1;
0x00012b90 add r1, r0, 0xf | r1 = r0 + 0xf;
0x00012b94 b 0x12b74 | goto label_8;
| label_52:
0x00012b98 ldr r1, [pc, 0xa6c] | r1 = *(0x13608);
0x00012b9c add r1, pc, r1 | r1 = pc + r1;
0x00012ba0 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00012ba4 cmp r0, 0 |
| if (r0 == 0) {
0x00012ba8 beq 0x12b1c | goto label_9;
| }
0x00012bac ldr r1, [pc, 0xa5c] | r1 = *(0x1360c);
0x00012bb0 mov r2, r6 | r2 = r6;
0x00012bb4 add r1, pc, r1 | r1 = pc + r1;
0x00012bb8 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x00012bbc bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x00012bc0 cmp r0, 1 |
| if (r0 != 1) {
0x00012bc4 moveq r0, 0 | r0 = 0;
| }
| if (r0 != 1) {
0x00012bc8 beq 0x12bf8 |
| label_38:
0x00012bcc ldr r1, [pc, 0xa40] | r1 = *(0x13610);
0x00012bd0 add r1, pc, r1 | r1 = pc + r1;
0x00012bd4 b 0x12aac | goto label_5;
| label_41:
0x00012bd8 add r7, r6, 0xb | r7 = r6 + 0xb;
| label_40:
0x00012bdc mov r0, r7 | r0 = r7;
0x00012be0 bl 0x5250 | strlen (r0);
0x00012be4 mov r1, r7 | r1 = r7;
0x00012be8 add r2, r0, 1 | r2 = r0 + 1;
0x00012bec mov r0, r6 | r0 = r6;
0x00012bf0 bl 0x5448 | memmove (r0, r1, r2);
0x00012bf4 mov r0, 1 | r0 = 1;
| }
| label_39:
0x00012bf8 ldrb r3, [r6] | r3 = *(r6);
0x00012bfc cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00012c00 bne 0x12c4c |
0x00012c04 ldrb r2, [r6, 1] | r2 = *((r6 + 1));
0x00012c08 bic r2, r2, 0x20 | r2 = BIT_MASK (r2, 0x20);
0x00012c0c sub r2, r2, 0x41 | r2 -= 0x41;
0x00012c10 cmp r2, 0x19 |
| if (r2 > 0x19) {
0x00012c14 bhi 0x12c4c | goto label_55;
| }
0x00012c18 ldrb r2, [r6, 2] | r2 = *((r6 + 2));
0x00012c1c cmp r2, 0x7c |
0x00012c20 cmpne r2, 0x3a | __asm ("cmpne r2, 0x3a");
| if (r2 != 0x7c) {
0x00012c24 bne 0x12c4c | goto label_55;
| }
0x00012c28 ldrb r1, [r6, 3] | r1 = *((r6 + 3));
0x00012c2c cmp r1, 0x5c |
0x00012c30 cmpne r1, 0x2f | __asm ("cmpne r1, 0x2f");
| if (r1 != 0x5c) {
0x00012c34 moveq r2, 1 | r2 = 1;
| }
| if (r1 == 0x5c) {
0x00012c38 movne r2, 0 | r2 = 0;
| }
0x00012c3c cmp r1, 0 |
| if (r1 != 0) {
0x00012c40 moveq r2, 1 | r2 = 1;
| }
0x00012c44 cmp r2, 0 |
| if (r2 != 0) {
0x00012c48 bne 0x12c90 | goto label_56;
| }
| }
| label_55:
0x00012c4c bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x00012c50 sub r3, r3, 0x41 | r3 -= 0x41;
0x00012c54 cmp r3, 0x19 |
| if (r3 <= 0x19) {
0x00012c58 bhi 0x12c9c |
0x00012c5c ldrb r3, [r6, 1] | r3 = *((r6 + 1));
0x00012c60 cmp r3, 0x7c |
0x00012c64 cmpne r3, 0x3a | __asm ("cmpne r3, 0x3a");
| if (r3 != 0x7c) {
0x00012c68 bne 0x12c9c | goto label_57;
| }
0x00012c6c ldrb r2, [r6, 2] | r2 = *((r6 + 2));
0x00012c70 cmp r2, 0x5c |
0x00012c74 cmpne r2, 0x2f | __asm ("cmpne r2, 0x2f");
| if (r2 != 0x5c) {
0x00012c78 moveq r3, 1 | r3 = 1;
| }
| if (r2 == 0x5c) {
0x00012c7c movne r3, 0 | r3 = 0;
| }
0x00012c80 cmp r2, 0 |
| if (r2 != 0) {
0x00012c84 moveq r3, 1 | r3 = 1;
| }
0x00012c88 cmp r3, 0 |
| if (r3 == 0) {
0x00012c8c beq 0x12c9c | goto label_57;
| }
| label_56:
0x00012c90 ldr r1, [pc, 0x980] | r1 = *(0x13614);
0x00012c94 add r1, pc, r1 | r1 = pc + r1;
0x00012c98 b 0x12aac | goto label_5;
| }
| label_57:
0x00012c9c ldr r8, [pc, 0x978] | r8 = *(0x13618);
0x00012ca0 eor r7, r0, 1 | r7 = r0 ^ 1;
0x00012ca4 add r8, pc, r8 | r8 = pc + r8;
| label_10:
0x00012ca8 ldr sb, [r4, 0xa0] | sb = *((r4 + 0xa0));
0x00012cac mov r1, 0x40 | r1 = 0x40;
0x00012cb0 mov r0, sb | r0 = sb;
0x00012cb4 bl 0x5b38 | strchr (r0, r1);
0x00012cb8 mov r1, 0x3f | r1 = 0x3f;
0x00012cbc cmp r0, 0 |
| if (r0 != 0) {
0x00012cc0 moveq r0, sb | r0 = sb;
| }
| if (r0 == 0) {
0x00012cc4 addne r0, r0, 1 | r0++;
| }
0x00012cc8 bl 0x5b38 | r0 = strchr (r0, r1);
0x00012ccc cmp r0, 0 |
0x00012cd0 mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x00012cd4 beq 0x13054 | goto label_58;
| }
0x00012cd8 bl 0x5250 | r0 = strlen (r0);
0x00012cdc mov sl, r0 | sl = r0;
0x00012ce0 mov r0, r6 | r0 = r6;
0x00012ce4 bl 0x5250 | strlen (r0);
0x00012ce8 add r3, sl, 1 | r3 = sl + 1;
0x00012cec mov r1, r6 | r1 = r6;
0x00012cf0 add r2, r0, 1 | r2 = r0 + 1;
0x00012cf4 add r0, r6, r3 | r0 = r6 + r3;
0x00012cf8 bl 0x5448 | memmove (r0, r1, r2);
0x00012cfc mov r2, sl | r2 = sl;
0x00012d00 mov r1, sb | r1 = sb;
0x00012d04 add r0, r6, 1 | r0 = r6 + 1;
0x00012d08 bl 0x4f5c | memcpy (r0, r1, r2);
0x00012d0c mov r3, 0x2f | r3 = 0x2f;
0x00012d10 strb r3, [r6] | *(r6) = r3;
0x00012d14 mov r3, 0 | r3 = 0;
0x00012d18 strb r3, [sb] | *(sb) = r3;
| label_13:
0x00012d1c mov sb, 1 | sb = 1;
| label_12:
0x00012d20 ldrb r3, [r6] | r3 = *(r6);
0x00012d24 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00012d28 beq 0x13074 | goto label_59;
| }
0x00012d2c mov r0, r6 | r0 = r6;
0x00012d30 bl 0x5250 | strlen (r0);
0x00012d34 mov r1, r6 | r1 = r6;
0x00012d38 add r2, r0, 1 | r2 = r0 + 1;
0x00012d3c add r0, r6, 1 | r0 = r6 + 1;
0x00012d40 bl 0x5448 | memmove (r0, r1, r2);
0x00012d44 mov r3, 0x2f | r3 = 0x2f;
0x00012d48 strb r3, [r6] | *(r6) = r3;
| label_14:
0x00012d4c mov r0, r6 | r0 = r6;
0x00012d50 bl 0x5250 | r0 = strlen (r0);
0x00012d54 mov sl, r0 | sl = r0;
0x00012d58 ldr r0, [r4, 0xa0] | r0 = *((r4 + 0xa0));
0x00012d5c bl 0x5250 | strlen (r0);
0x00012d60 cmp r7, 0 |
0x00012d64 mov sb, r0 | sb = r0;
| if (r7 == 0) {
0x00012d68 bne 0x12dec |
0x00012d6c mov r0, r8 | r0 = r8;
0x00012d70 bl 0x5250 | strlen (r0);
0x00012d74 ldr r1, [r5, 0x678] | r1 = *((r5 + 0x678));
0x00012d78 mov r2, r0 | r2 = r0;
0x00012d7c mov fp, r0 |
0x00012d80 mov r0, r8 | r0 = r8;
0x00012d84 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00012d88 cmp r0, 0 |
| if (r0 == 0) {
0x00012d8c beq 0x1319c | goto label_60;
| }
0x00012d90 ldr r1, [r5, 0x678] | r1 = *((r5 + 0x678));
0x00012d94 ldr r0, [pc, 0x884] | r0 = *(0x1361c);
0x00012d98 mov r2, 3 | r2 = 3;
0x00012d9c add r1, r1, fp | r1 += fp;
0x00012da0 add r0, pc, r0 | r0 = pc + r0;
0x00012da4 bl 0x5bd4 | fcn_00005bd4 ();
0x00012da8 add sb, sb, fp | sb += fp;
0x00012dac cmp r0, 0 |
| if (r0 == 0) {
0x00012db0 addne sb, sb, 3 | sb += 3;
| }
| if (r0 != 0) {
0x00012db4 bne 0x12dec | goto label_61;
| }
0x00012db8 ldr r0, [pc, 0x864] | r0 = *(0x13620);
0x00012dbc mov r2, 5 | r2 = 5;
0x00012dc0 ldr r1, [r5, 0x678] | r1 = *((r5 + 0x678));
0x00012dc4 add r0, pc, r0 | r0 = pc + r0;
0x00012dc8 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00012dcc cmp r0, 0 |
| if (r0 == 0) {
0x00012dd0 beq 0x131a8 | goto label_62;
| }
0x00012dd4 ldr r3, [r5, 0x678] | r3 = *((r5 + 0x678));
0x00012dd8 ldrb r3, [r3, 5] | r3 = *((r3 + 5));
0x00012ddc cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00012de0 movne r3, 1 | r3 = 1;
| }
| if (r3 != 0x2f) {
0x00012de4 moveq r3, 2 | r3 = 2;
| }
0x00012de8 add sb, sb, r3 | sb += r3;
| }
| label_61:
0x00012dec ldr r3, [sp, 0x2c] | r3 = s;
0x00012df0 add sl, sl, 1 | sl++;
0x00012df4 ldr r3, [r3] | r3 = *(r3);
0x00012df8 add r0, sb, sl | r0 = sb + sl;
0x00012dfc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012e00 subs fp, r0, 0 |
| if (fp == r0) {
0x00012e04 beq 0x1269c | goto label_0;
| }
0x00012e08 mov r2, sb | r2 = sb;
0x00012e0c ldr r1, [r5, 0x678] | r1 = *((r5 + 0x678));
0x00012e10 bl 0x4f5c | memcpy (r0, r1, r2);
0x00012e14 mov r2, sl | r2 = sl;
0x00012e18 mov r1, r6 | r1 = r6;
0x00012e1c add r0, fp, sb | r0 = fp + sb;
0x00012e20 bl 0x4f5c | memcpy (r0, r1, r2);
0x00012e24 ldrb r3, [r5, 0x67c] | r3 = *((r5 + 0x67c));
0x00012e28 cmp r3, 0 |
| if (r3 != 0) {
0x00012e2c beq 0x12e4c |
0x00012e30 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00012e34 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x00012e38 ldr r3, [r3] | r3 = *(r3);
0x00012e3c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012e40 mov r3, 0 | r3 = 0;
0x00012e44 str r3, [r5, 0x678] | *((r5 + 0x678)) = r3;
0x00012e48 strb r3, [r5, 0x67c] | *((r5 + 0x67c)) = r3;
| }
0x00012e4c ldr r1, [pc, 0x7d4] | r1 = *(0x13624);
0x00012e50 mov r2, fp | r2 = fp;
0x00012e54 add r1, pc, r1 | r1 = pc + r1;
0x00012e58 mov r0, r5 | r0 = r5;
0x00012e5c bl 0x104cc | Curl_infof ();
0x00012e60 mov r3, 1 | r3 = 1;
0x00012e64 str fp, [r5, 0x678] | *((r5 + 0x678)) = fp;
0x00012e68 strb r3, [r5, 0x67c] | *((r5 + 0x67c)) = r3;
0x00012e6c b 0x130d4 | goto label_63;
| if (r3 > 0) {
| label_53:
0x00012e70 bgt 0x12f64 | goto label_64;
| }
0x00012e74 ldr r1, [pc, 0x7b0] | r1 = *(0x13628);
0x00012e78 mov r3, r6 | r3 = r6;
0x00012e7c ldr r2, [r4, 0xa0] | r2 = *((r4 + 0xa0));
0x00012e80 add r1, pc, r1 | r1 = pc + r1;
0x00012e84 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x00012e88 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x00012e8c cmp r0, 0 |
| if (r0 > 0) {
0x00012e90 ldrle r1, [pc, 0x798] | r1 = *((pc + 0x798));
| }
| if (r0 <= 0) {
0x00012e94 addle r1, pc, r1 | r1 = pc + r1;
| goto label_65;
| }
| if (r0 <= 0) {
| label_65:
0x00012e98 ble 0x12aac | goto label_5;
| }
0x00012e9c ldr r8, [r5, 0x524] | r8 = *((r5 + 0x524));
0x00012ea0 cmp r8, 0 |
| if (r8 != 0) {
0x00012ea4 movne r7, 1 | r7 = 1;
| goto label_66;
| }
| if (r8 != 0) {
| label_66:
0x00012ea8 bne 0x12ca8 | goto label_10;
| }
0x00012eac ldr r0, [pc, 0x780] | r0 = *(0x13630);
0x00012eb0 mov r2, 4 | r2 = 4;
0x00012eb4 ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x00012eb8 add r0, pc, r0 | r0 = pc + r0;
0x00012ebc bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00012ec0 cmp r0, 0 |
| if (r0 != 0) {
0x00012ec4 bne 0x12ff8 | goto label_67;
| }
0x00012ec8 ldr r0, [pc, 0x768] | r0 = *(0x13634);
0x00012ecc mov r2, 5 | r2 = 5;
0x00012ed0 ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x00012ed4 add r0, pc, r0 | r0 = pc + r0;
0x00012ed8 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00012edc cmp r0, 0 |
| if (r0 != 0) {
0x00012ee0 bne 0x13008 | goto label_68;
| }
0x00012ee4 ldr r0, [pc, 0x750] | r0 = *(0x13638);
0x00012ee8 mov r2, 5 | r2 = 5;
0x00012eec ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x00012ef0 add r0, pc, r0 | r0 = pc + r0;
0x00012ef4 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00012ef8 cmp r0, 0 |
| if (r0 != 0) {
0x00012efc bne 0x13018 | goto label_69;
| }
0x00012f00 ldr r0, [pc, 0x738] | r0 = *(0x1363c);
0x00012f04 mov r2, 5 | r2 = 5;
0x00012f08 ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x00012f0c add r0, pc, r0 | r0 = pc + r0;
0x00012f10 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00012f14 cmp r0, 0 |
| if (r0 != 0) {
0x00012f18 bne 0x13028 | goto label_70;
| }
0x00012f1c ldr r0, [pc, 0x720] | r0 = *(0x13640);
0x00012f20 mov r2, 5 | r2 = 5;
0x00012f24 ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x00012f28 add r0, pc, r0 | r0 = pc + r0;
0x00012f2c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00012f30 cmp r0, 0 |
| if (r0 != 0) {
0x00012f34 bne 0x13038 | goto label_71;
| }
0x00012f38 ldr r0, [pc, 0x708] | r0 = *(0x13644);
0x00012f3c mov r2, 5 | r2 = 5;
0x00012f40 ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x00012f44 add r0, pc, r0 | r0 = pc + r0;
0x00012f48 bl 0x5bd4 | fcn_00005bd4 ();
0x00012f4c mov r7, 1 | r7 = 1;
0x00012f50 cmp r0, 0 |
| if (r0 == 0) {
0x00012f54 beq 0x13048 | goto label_72;
| }
0x00012f58 ldr r8, [pc, 0x6ec] | r8 = *(0x13648);
0x00012f5c add r8, pc, r8 | r8 = pc + r8;
0x00012f60 b 0x12ca8 | goto label_10;
| label_64:
0x00012f64 mov r0, sb | r0 = sb;
0x00012f68 bl 0x5250 | r0 = strlen (r0);
0x00012f6c cmp r0, 2 |
0x00012f70 mov r2, r0 | r2 = r0;
| if (r0 == 2) {
0x00012f74 beq 0x12ca8 | goto label_10;
| }
0x00012f78 cmp r0, 1 |
| if (r0 < 1) {
0x00012f7c bls 0x12fec | goto label_73;
| }
0x00012f80 ldr r3, [pc, 0x6c8] | r3 = *(0x1364c);
0x00012f84 add r3, pc, r3 | r3 = pc + r3;
| label_11:
0x00012f88 ldr r1, [pc, 0x6c4] | r1 = *(0x13650);
0x00012f8c mov r0, r5 | r0 = r5;
0x00012f90 add r1, pc, r1 | r1 = pc + r1;
0x00012f94 bl 0x104cc | Curl_infof ();
0x00012f98 ldrb r3, [r5, 0x67c] | r3 = *((r5 + 0x67c));
0x00012f9c cmp r3, 0 |
| if (r3 != 0) {
0x00012fa0 beq 0x12fb4 |
0x00012fa4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00012fa8 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x00012fac ldr r3, [r3] | r3 = *(r3);
0x00012fb0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x00012fb4 ldr r0, [pc, 0x69c] | r0 = *(0x13654);
0x00012fb8 add r8, sp, 0xa0 | r8 += dest;
0x00012fbc mov r3, r6 | r3 = r6;
0x00012fc0 ldr r2, [r4, 0xa0] | r2 = *((r4 + 0xa0));
0x00012fc4 mov r1, r8 | r1 = r8;
0x00012fc8 add r0, pc, r0 | r0 = pc + r0;
0x00012fcc bl 0x5b80 | r0 = fcn_00005b80 ();
0x00012fd0 cmp r0, 0 |
| if (r0 == 0) {
0x00012fd4 movne r3, 1 | r3 = 1;
| }
0x00012fd8 str r0, [r5, 0x678] | *((r5 + 0x678)) = r0;
| if (r0 == 0) {
0x00012fdc strbne r3, [r5, 0x67c] | *((r5 + 0x67c)) = r3;
| }
| if (r0 != 0) {
0x00012fe0 movne r7, 0 | r7 = 0;
| goto label_74;
| }
| if (r0 != 0) {
| label_74:
0x00012fe4 bne 0x12ca8 | goto label_10;
| }
0x00012fe8 b 0x1269c | goto label_0;
| label_73:
0x00012fec ldr r3, [pc, 0x668] | r3 = *(0x13658);
0x00012ff0 add r3, pc, r3 | r3 = pc + r3;
0x00012ff4 b 0x12f88 | goto label_11;
| label_67:
0x00012ff8 ldr r8, [pc, 0x660] | r8 = *(0x1365c);
0x00012ffc mov r7, 1 | r7 = 1;
0x00013000 add r8, pc, r8 | r8 = pc + r8;
0x00013004 b 0x12ca8 | goto label_10;
| label_68:
0x00013008 ldr r8, [pc, 0x654] | r8 = *(0x13660);
0x0001300c mov r7, 1 | r7 = 1;
0x00013010 add r8, pc, r8 | r8 = pc + r8;
0x00013014 b 0x12ca8 | goto label_10;
| label_69:
0x00013018 ldr r8, [pc, 0x648] | r8 = *(0x13664);
0x0001301c mov r7, 1 | r7 = 1;
0x00013020 add r8, pc, r8 | r8 = pc + r8;
0x00013024 b 0x12ca8 | goto label_10;
| label_70:
0x00013028 ldr r8, [pc, 0x63c] | r8 = *(0x13668);
0x0001302c mov r7, 1 | r7 = 1;
0x00013030 add r8, pc, r8 | r8 = pc + r8;
0x00013034 b 0x12ca8 | goto label_10;
| label_71:
0x00013038 ldr r8, [pc, 0x630] | r8 = *(0x1366c);
0x0001303c mov r7, 1 | r7 = 1;
0x00013040 add r8, pc, r8 | r8 = pc + r8;
0x00013044 b 0x12ca8 | goto label_10;
| label_72:
0x00013048 ldr r8, [pc, 0x624] | r8 = *(0x13670);
0x0001304c add r8, pc, r8 | r8 = pc + r8;
0x00013050 b 0x12ca8 | goto label_10;
| label_58:
0x00013054 ldrb r3, [r6] | r3 = *(r6);
0x00013058 cmp r3, 0 |
| if (r3 != 0) {
0x0001305c bne 0x12d20 | goto label_12;
| }
0x00013060 ldr r1, [pc, 0x610] | r1 = *(0x13674);
0x00013064 mov r0, r6 | r0 = r6;
0x00013068 add r1, pc, r1 | r1 = pc + r1;
0x0001306c bl 0x5c28 | strcpy (r0, r1);
0x00013070 b 0x12d1c | goto label_13;
| label_59:
0x00013074 ldrb r3, [r5, 0x646] | r3 = *((r5 + 0x646));
0x00013078 cmp r3, 0 |
| if (r3 != 0) {
0x0001307c bne 0x130cc | goto label_75;
| }
0x00013080 mov r0, r6 | r0 = r6;
0x00013084 bl 0x29418 | r0 = Curl_dedotdotify ();
0x00013088 subs sl, r0, 0 | sl = r0 - 0;
| if (sl == r0) {
0x0001308c beq 0x1269c | goto label_0;
| }
0x00013090 mov r1, r6 | r1 = r6;
0x00013094 bl 0x5a30 | strcmp (r0, r1);
0x00013098 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001309c ldr r3, [r3] | r3 = *(r3);
0x000130a0 cmp r0, 0 |
| if (r0 != 0) {
0x000130a4 beq 0x130c4 |
0x000130a8 add r6, r5, 0x4000 | r6 = r5 + 0x4000;
0x000130ac ldr r0, [r6, 0x9e8] | r0 = *((r6 + 0x9e8));
0x000130b0 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x000130b4 str sl, [r6, 0x9e8] | *((r6 + 0x9e8)) = sl;
0x000130b8 str sl, [r6, 0x9ec] | *((r6 + 0x9ec)) = sl;
0x000130bc mov r6, sl | r6 = sl;
0x000130c0 b 0x12d4c | goto label_14;
| }
0x000130c4 mov r0, sl | r0 = sl;
0x000130c8 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| label_75:
0x000130cc cmp sb, 0 |
| if (sb != 0) {
0x000130d0 bne 0x12d4c | goto label_14;
| }
| label_63:
0x000130d4 ldr sl, [pc, 0x5a0] | sl = "assword__since_none_was_supplied_to_the_server_on_this_connection._";
0x000130d8 add sl, pc, sl | sl = pc + sl;
0x000130dc sub sl, sl, 4 | sl -= 4;
| do {
0x000130e0 ldr sb, [sl, 4]! | sb = *((sl += 4));
0x000130e4 cmp sb, 0 |
| if (sb == 0) {
0x000130e8 beq 0x13110 | goto label_76;
| }
0x000130ec mov r1, r8 | r1 = r8;
0x000130f0 ldr r0, [sb] | r0 = *(sb);
0x000130f4 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x000130f8 cmp r0, 0 |
0x000130fc beq 0x130e0 |
| } while (r0 == 0);
0x00013100 ldr r3, [sb, 0x40] | r3 = *((sb + 0x40));
0x00013104 ldr r2, [r5, 0x600] | r2 = *((r5 + 0x600));
0x00013108 tst r3, r2 |
0x0001310c bne 0x131b4 |
| while ((r3 & r2) == 0) {
| label_76:
0x00013110 ldr r1, [pc, 0x568] | r1 = "assword__since_none_was_supplied_to_the_server_on_this_connection._";
0x00013114 mov r2, r8 | r2 = r8;
0x00013118 add r1, pc, r1 | r1 = pc + r1;
0x0001311c mov r0, r5 | r0 = r5;
0x00013120 bl 0x10544 | Curl_failf ();
0x00013124 mov fp, 1 |
| label_16:
0x00013128 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001312c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00013130 ldr r3, [r3] | r3 = *(r3);
0x00013134 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013138 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001313c ldr r0, [sp, 0x88] | r0 = var_88h;
0x00013140 ldr r3, [r3] | r3 = *(r3);
0x00013144 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013148 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001314c ldr r0, [sp, 0x84] | r0 = nmeb;
0x00013150 ldr r3, [r3] | r3 = *(r3);
0x00013154 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013158 cmp fp, 0 |
| if (fp != 0) {
0x0001315c bne 0x15180 | goto label_77;
| }
0x00013160 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00013164 ldr r0, [r3] | r0 = *(r3);
0x00013168 ldr r3, [r0, 0x2d0] | r3 = *((r0 + 0x2d0));
0x0001316c cmp r3, 0 |
| if (r3 == 0) {
0x00013170 bne 0x13180 |
0x00013174 ldr r3, [r0, 0x2e0] | r3 = *((r0 + 0x2e0));
0x00013178 cmp r3, 0 |
| if (r3 == 0) {
0x0001317c beq 0x15034 | goto label_78;
| }
| }
0x00013180 ldr r2, [sp, 0x58] | r2 = var_58h;
0x00013184 mov r3, 1 | r3 = 1;
0x00013188 strb r3, [r2] | *(r2) = r3;
| label_36:
0x0001318c mov r4, 0 | r4 = 0;
| label_37:
0x00013190 mov r0, r4 | r0 = r4;
0x00013194 add sp, sp, 0x124 |
0x00013198 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_60:
0x0001319c ldr r1, [pc, 0x4e0] | r1 = *(0x13680);
0x000131a0 add r1, pc, r1 | r1 = pc + r1;
0x000131a4 b 0x12aac | goto label_5;
| label_62:
0x000131a8 ldr r1, [pc, 0x4d8] | r1 = *(0x13684);
0x000131ac add r1, pc, r1 | r1 = pc + r1;
0x000131b0 b 0x12aac | goto label_5;
0x000131b4 add r2, r5, 0x4000 | r2 = r5 + 0x4000;
0x000131b8 ldrb r2, [r2, 0x7e0] | r2 = *((r2 + 0x7e0));
0x000131bc cmp r2, 0 |
| if (r2 == 0) {
0x000131c0 beq 0x131d0 | goto label_79;
| }
0x000131c4 ldr r2, [r5, 0x604] | r2 = *((r5 + 0x604));
0x000131c8 tst r3, r2 |
0x000131cc beq 0x13110 |
| }
| label_79:
0x000131d0 ldr r8, [r4, 0xa0] | r8 = *((r4 + 0xa0));
0x000131d4 mov fp, 0 |
0x000131d8 str sb, [r4, 0x288] | *((r4 + 0x288)) = sb;
0x000131dc str sb, [r4, 0x284] | *((r4 + 0x284)) = sb;
0x000131e0 mov r1, 0x40 | r1 = 0x40;
0x000131e4 mov r0, r8 | r0 = r8;
0x000131e8 str fp, [sp, 0x8c] | size = fp;
0x000131ec str fp, [sp, 0x90] | var_90h = fp;
0x000131f0 str fp, [sp, 0x94] | var_94h = fp;
0x000131f4 bl 0x5b38 | r0 = strchr (r0, r1);
0x000131f8 cmp r0, 0 |
0x000131fc bne 0x13208 |
| while (1) {
| label_15:
0x00013200 mov fp, r0 |
0x00013204 b 0x13348 | goto label_80;
0x00013208 ldr r3, [r5, 0x4d4] | r3 = *((r5 + 0x4d4));
0x0001320c add r0, r0, 1 | r0++;
0x00013210 cmp r3, 2 |
0x00013214 str r0, [r4, 0xa0] | *((r4 + 0xa0)) = r0;
| if (r3 == 2) {
0x00013218 beq 0x13348 | goto label_80;
| }
0x0001321c ldr r3, [sb, 0x44] | r3 = *((sb + 0x44));
0x00013220 sub r0, r0, r8 | r0 -= r8;
0x00013224 ands r3, r3, 0x400 | r3 &= 0x400;
| if (r3 == r3) {
0x00013228 addne r3, sp, 0x94 | r3 += var_94h;
| }
0x0001322c sub r1, r0, 1 | r1 = r0 - 1;
0x00013230 str r3, [sp] | *(sp) = r3;
0x00013234 add r2, sp, 0x8c | r2 += size;
0x00013238 add r3, sp, 0x90 | r3 += var_90h;
0x0001323c mov r0, r8 | r0 = r8;
0x00013240 bl 0x11ab8 | r0 = Curl_parse_login_details ();
0x00013244 subs fp, r0, 0 |
| if (fp != r0) {
0x00013248 bne 0x13348 | goto label_80;
| }
0x0001324c ldr r1, [sp, 0x8c] | r1 = size;
0x00013250 cmp r1, 0 |
| if (r1 == 0) {
0x00013254 beq 0x132c0 | goto label_81;
| }
0x00013258 ldrb r3, [r5, 0x670] | r3 = *((r5 + 0x670));
0x0001325c cmp r3, 0 |
| if (r3 == 0) {
0x00013260 beq 0x1327c | goto label_82;
| }
0x00013264 ldr r1, [pc, 0x420] | r1 = *(0x13688);
0x00013268 mov r0, r5 | r0 = r5;
0x0001326c add r1, pc, r1 | r1 = pc + r1;
0x00013270 bl 0x10544 | Curl_failf ();
0x00013274 mov r0, 0x43 | r0 = 0x43;
0x00013278 b 0x13200 |
| }
| label_82:
0x0001327c mov r3, 1 | r3 = 1;
0x00013280 strb r3, [r4, 0x268] | *((r4 + 0x268)) = r3;
0x00013284 strb r3, [r4, 0x258] | *((r4 + 0x258)) = r3;
0x00013288 mov r2, fp | r2 = fp;
0x0001328c str fp, [sp, 4] | var_4h = fp;
0x00013290 str fp, [sp] | *(sp) = fp;
0x00013294 add r3, sp, 0x98 | r3 += endptr;
0x00013298 mov r0, r5 | r0 = r5;
0x0001329c bl 0x157d4 | r0 = Curl_urldecode ();
0x000132a0 cmp r0, 0 |
| if (r0 != 0) {
0x000132a4 bne 0x13200 | goto label_15;
| }
0x000132a8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000132ac ldr r0, [sp, 0x84] | r0 = nmeb;
0x000132b0 ldr r3, [r3] | r3 = *(r3);
0x000132b4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000132b8 ldr r3, [sp, 0x98] | r3 = endptr;
0x000132bc str r3, [sp, 0x84] | nmeb = r3;
| label_81:
0x000132c0 ldr r1, [sp, 0x90] | r1 = var_90h;
0x000132c4 cmp r1, 0 |
| if (r1 == 0) {
0x000132c8 beq 0x13304 | goto label_83;
| }
0x000132cc mov r2, 0 | r2 = 0;
0x000132d0 str r2, [sp, 4] | var_4h = r2;
0x000132d4 str r2, [sp] | *(sp) = r2;
0x000132d8 add r3, sp, 0x98 | r3 += endptr;
0x000132dc mov r0, r5 | r0 = r5;
0x000132e0 bl 0x157d4 | r0 = Curl_urldecode ();
0x000132e4 cmp r0, 0 |
| if (r0 != 0) {
0x000132e8 bne 0x13200 | goto label_15;
| }
0x000132ec ldr r3, [sp, 0x20] | r3 = var_20h;
0x000132f0 ldr r0, [sp, 0x88] | r0 = var_88h;
0x000132f4 ldr r3, [r3] | r3 = *(r3);
0x000132f8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000132fc ldr r3, [sp, 0x98] | r3 = endptr;
0x00013300 str r3, [sp, 0x88] | var_88h = r3;
| label_83:
0x00013304 ldr r1, [sp, 0x94] | r1 = var_94h;
0x00013308 cmp r1, 0 |
| if (r1 != 0) {
0x0001330c beq 0x13348 |
0x00013310 mov r2, 0 | r2 = 0;
0x00013314 str r2, [sp, 4] | var_4h = r2;
0x00013318 str r2, [sp] | *(sp) = r2;
0x0001331c add r3, sp, 0x98 | r3 += endptr;
0x00013320 mov r0, r5 | r0 = r5;
0x00013324 bl 0x157d4 | r0 = Curl_urldecode ();
0x00013328 subs fp, r0, 0 |
| if (fp != r0) {
0x0001332c bne 0x13348 | goto label_80;
| }
0x00013330 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00013334 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00013338 ldr r3, [r3] | r3 = *(r3);
0x0001333c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013340 ldr r3, [sp, 0x98] | r3 = endptr;
0x00013344 str r3, [sp, 0x1c] | var_1ch = r3;
| }
| label_80:
0x00013348 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001334c ldr r0, [sp, 0x8c] | r0 = size;
0x00013350 ldr r3, [r3] | r3 = *(r3);
0x00013354 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013358 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001335c ldr r0, [sp, 0x90] | r0 = var_90h;
0x00013360 ldr r3, [r3] | r3 = *(r3);
0x00013364 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013368 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001336c ldr r0, [sp, 0x94] | r0 = var_94h;
0x00013370 ldr r3, [r3] | r3 = *(r3);
0x00013374 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013378 cmp fp, 0 |
| if (fp != 0) {
0x0001337c bne 0x13128 | goto label_16;
| }
0x00013380 ldr r0, [r4, 0xa0] | r0 = *((r4 + 0xa0));
0x00013384 ldrb r3, [r0] | r3 = *(r0);
0x00013388 cmp r3, 0x5b |
| if (r3 == 0x5b) {
0x0001338c bne 0x13414 |
0x00013390 mov r1, 0x25 | r1 = 0x25;
0x00013394 bl 0x5b38 | r0 = strchr (r0, r1);
0x00013398 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0001339c beq 0x13414 | goto label_17;
| }
0x000133a0 ldr r0, [pc, 0x2e8] | r0 = *(0x1368c);
0x000133a4 mov r2, 3 | r2 = 3;
0x000133a8 mov r1, r8 | r1 = r8;
0x000133ac add r0, pc, r0 | r0 = pc + r0;
0x000133b0 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x000133b4 cmp r0, 0 |
| if (r0 != 0) {
0x000133b8 moveq r0, 3 | r0 = 3;
| }
| if (r0 != 0) {
0x000133bc beq 0x133d4 |
0x000133c0 ldr r1, [pc, 0x2cc] | r1 = *(0x13690);
0x000133c4 mov r0, r5 | r0 = r5;
0x000133c8 add r1, pc, r1 | r1 = pc + r1;
0x000133cc bl 0x104cc | Curl_infof ();
0x000133d0 mov r0, 1 | r0 = 1;
| }
0x000133d4 mov r2, 0xa | r2 = 0xa;
0x000133d8 add r1, sp, 0x98 | r1 += endptr;
0x000133dc add r0, r8, r0 | r0 = r8 + r0;
0x000133e0 bl 0x510c | strtoul (r0, r1, r2);
0x000133e4 ldr sl, [sp, 0x98] | sl = endptr;
0x000133e8 ldrb r3, [sl] | r3 = *(sl);
0x000133ec cmp r3, 0x5d |
0x000133f0 mov sb, r0 | sb = r0;
| if (r3 != 0x5d) {
0x000133f4 bne 0x13554 | goto label_84;
| }
0x000133f8 mov r0, sl | r0 = sl;
0x000133fc bl 0x5250 | strlen (r0);
0x00013400 mov r1, sl | r1 = sl;
0x00013404 add r2, r0, 1 | r2 = r0 + 1;
0x00013408 mov r0, r8 | r0 = r8;
0x0001340c bl 0x5448 | memmove (r0, r1, r2);
0x00013410 str sb, [r4, 0x90] | *((r4 + 0x90)) = sb;
| }
| label_17:
0x00013414 ldr r3, [r5, 0x5fc] | r3 = *((r5 + 0x5fc));
0x00013418 mov r1, 0x23 | r1 = 0x23;
0x0001341c cmp r3, 0 |
| if (r3 == 0) {
0x00013420 strne r3, [r4, 0x90] | *((r4 + 0x90)) = r3;
| }
0x00013424 mov r0, r6 | r0 = r6;
0x00013428 bl 0x5b38 | r0 = strchr (r0, r1);
0x0001342c cmp r0, 0 |
| if (r0 != 0) {
0x00013430 beq 0x13450 |
0x00013434 mov r6, 0 | r6 = 0;
0x00013438 strb r6, [r0] | *(r0) = r6;
0x0001343c mov r1, 0x23 | r1 = 0x23;
0x00013440 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x00013444 bl 0x5b38 | r0 = strchr (r0, r1);
0x00013448 cmp r0, 0 |
| if (r0 != 0) {
0x0001344c strbne r6, [r0] | *(r0) = r6;
| goto label_85;
| }
| }
| label_85:
0x00013450 cmp r7, 0 |
| if (r7 == 0) {
0x00013454 beq 0x134b8 | goto label_86;
| }
0x00013458 ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x0001345c ldr r0, [pc, 0x234] | r0 = *(0x13694);
0x00013460 ldr r2, [r5, 0x678] | r2 = *((r5 + 0x678));
0x00013464 ldr r1, [r3] | r1 = *(r3);
0x00013468 add r0, pc, r0 | r0 = pc + r0;
0x0001346c bl 0x5b80 | r0 = fcn_00005b80 ();
0x00013470 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00013474 subne r7, r6, 1 | r7 = r6 - 1;
| goto label_87;
| }
| if (r6 == r0) {
| label_87:
0x00013478 beq 0x1269c | goto label_0;
| }
| do {
0x0001347c ldrb r0, [r7, 1]! | r0 = *((r7 += 1));
0x00013480 cmp r0, 0x3a |
| if (r0 == 0x3a) {
0x00013484 bne 0x13568 |
0x00013488 ldrb r3, [r5, 0x67c] | r3 = *((r5 + 0x67c));
0x0001348c cmp r3, 0 |
| if (r3 != 0) {
0x00013490 beq 0x134ac |
0x00013494 ldr r3, [pc, 0x13c] |
0x00013498 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0001349c ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x000134a0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000134a4 ldr r3, [r3] | r3 = $d;
0x000134a8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
| }
0x000134ac mov r3, 1 | r3 = 1;
0x000134b0 str r6, [r5, 0x678] | *((r5 + 0x678)) = r6;
0x000134b4 strb r3, [r5, 0x67c] | *((r5 + 0x67c)) = r3;
| label_86:
0x000134b8 ldr r3, [r4, 0x288] | r3 = *((r4 + 0x288));
0x000134bc ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x000134c0 tst r3, 0x40 |
| if ((r3 & 0x40) != 0) {
0x000134c4 beq 0x134e8 |
0x000134c8 ldr r3, [r4] | r3 = *(r4);
0x000134cc mov r1, 0x3f | r1 = 0x3f;
0x000134d0 add r3, r3, 0x4000 | r3 += 0x4000;
0x000134d4 ldr r0, [r3, 0x9ec] | r0 = *((r3 + 0x9ec));
0x000134d8 bl 0x5b38 | r0 = strchr (r0, r1);
0x000134dc cmp r0, 0 |
| if (r0 == 0) {
0x000134e0 movne r3, 0 | r3 = 0;
| }
| if (r0 != 0) {
0x000134e4 strbne r3, [r0] | *(r0) = r3;
| goto label_88;
| }
| }
| label_88:
0x000134e8 ldr r0, [r5, 0x5e8] | r0 = *((r5 + 0x5e8));
0x000134ec cmp r0, 0 |
| if (r0 != 0) {
0x000134f0 bne 0x13574 | goto label_89;
| }
| label_18:
0x000134f4 ldr r0, [r5, 0x5ec] | r0 = *((r5 + 0x5ec));
0x000134f8 cmp r0, 0 |
| if (r0 != 0) {
0x000134fc bne 0x13590 | goto label_90;
| }
| label_19:
0x00013500 ldrb r3, [r4, 0x259] | r3 = *((r4 + 0x259));
0x00013504 ldr sl, [r4] | sl = *(r4);
0x00013508 cmp r3, 0 |
| if (r3 != 0) {
0x0001350c bne 0x135b4 | goto label_91;
| }
| label_20:
0x00013510 ldr r7, [sl, 0x55c] | r7 = *((sl + 0x55c));
0x00013514 cmp r7, 0 |
| if (r7 != 0) {
0x00013518 bne 0x13748 | goto label_92;
| }
| label_21:
0x0001351c ldr r6, [sl, 0x560] | r6 = *((sl + 0x560));
0x00013520 cmp r6, 0 |
| if (r6 == 0) {
0x00013524 beq 0x13fa0 | goto label_93;
| }
0x00013528 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0001352c mov r0, r6 | r0 = r6;
0x00013530 ldr r3, [r3] | r3 = *(r3);
0x00013534 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013538 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0001353c bne 0x13fa0 | goto label_93;
| }
0x00013540 ldr r1, [pc, 0x154] | r1 = *(0x13698);
0x00013544 mov r0, sl | r0 = sl;
0x00013548 add r1, pc, r1 | r1 = pc + r1;
0x0001354c bl 0x10544 | Curl_failf ();
0x00013550 b 0x13774 | goto label_94;
| label_84:
0x00013554 ldr r1, [pc, 0x144] | r1 = *(0x1369c);
0x00013558 mov r0, r5 | r0 = r5;
0x0001355c add r1, pc, r1 | r1 = pc + r1;
0x00013560 bl 0x104cc | Curl_infof ();
0x00013564 b 0x13414 | goto label_17;
| }
0x00013568 bl 0x4e0c | tolower (r0);
0x0001356c strb r0, [r7] | *(r7) = r0;
0x00013570 b 0x1347c |
| } while (1);
| label_89:
0x00013574 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00013578 ldr r3, [r3] | r3 = *(r3);
0x0001357c blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00013580 cmp r0, 0 |
0x00013584 str r0, [r4, 0x17c] | *((r4 + 0x17c)) = r0;
| if (r0 != 0) {
0x00013588 bne 0x134f4 | goto label_18;
| }
0x0001358c b 0x1269c | goto label_0;
| label_90:
0x00013590 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00013594 ldr r3, [r3] | r3 = *(r3);
0x00013598 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0001359c cmp r0, 0 |
0x000135a0 str r0, [r4, 0x508] | *((r4 + 0x508)) = r0;
| if (r0 == 0) {
0x000135a4 beq 0x1269c | goto label_0;
| }
0x000135a8 ldrb r3, [r5, 0x664] | r3 = *((r5 + 0x664));
0x000135ac strb r3, [r4, 0x50c] | *((r4 + 0x50c)) = r3;
0x000135b0 b 0x13500 | goto label_19;
| label_91:
0x000135b4 mov r1, r4 | r1 = r4;
0x000135b8 mov r0, sl | r0 = sl;
0x000135bc bl 0x10bc4 | r0 = parse_proxy_auth ();
0x000135c0 cmp r0, 0 |
| if (r0 == 0) {
0x000135c4 beq 0x13510 | goto label_20;
| }
0x000135c8 mov fp, r0 |
| label_30:
0x000135cc mov r6, 0 | r6 = 0;
0x000135d0 b 0x144e4 | goto label_95;
| label_92:
0x00013748 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0001374c mov r0, r7 | r0 = r7;
0x00013750 ldr r3, [r3] | r3 = *(r3);
0x00013754 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00013758 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x0001375c bne 0x1351c | goto label_21;
| }
0x00013760 ldr r1, [pc, -0xc4] | r1 = *(0x000136a4);
0x00013764 mov r0, sl | r0 = sl;
0x00013768 add r1, pc, r1 | r1 = pc + r1;
0x0001376c bl 0x10544 | Curl_failf ();
0x00013770 mov r6, r7 | r6 = r7;
| label_94:
0x00013774 mov fp, 0x1b |
| label_31:
0x00013778 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0001377c ldr r3, [pc, -0x70] | r3 = *(0x13710);
0x00013780 mov r0, r6 | r0 = r6;
0x00013784 ldr r8, [r2, r3] | r8 = *((r2 + r3));
0x00013788 ldr r3, [r8] | r3 = *(r8);
0x0001378c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00013790 ldr r3, [r8] | r3 = *(r8);
0x00013794 mov r0, r7 | r0 = r7;
0x00013798 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001379c cmp fp, 0 |
| if (fp != 0) {
0x000137a0 bne 0x13128 | goto label_16;
| }
0x000137a4 ldr r3, [r4, 0x288] | r3 = *((r4 + 0x288));
0x000137a8 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x000137ac tst r3, 1 |
| if ((r3 & 1) != 0) {
0x000137b0 beq 0x137c4 |
0x000137b4 ldrb r3, [r4, 0x256] | r3 = *((r4 + 0x256));
0x000137b8 cmp r3, 0 |
| if (r3 == 0) {
0x000137bc movne r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x000137c0 strbne r3, [r4, 0x261] | *((r4 + 0x261)) = r3;
| goto label_96;
| }
| }
| label_96:
0x000137c4 ldr r1, [pc, -0x124] | r1 = *(0x136a4);
0x000137c8 add r2, sp, 0x98 | r2 += endptr;
0x000137cc add r1, pc, r1 | r1 = pc + r1;
0x000137d0 ldr r0, [r4, 0xa0] | r0 = *((r4 + 0xa0));
0x000137d4 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x000137d8 cmp r0, 1 |
| if (r0 != 1) {
0x000137dc bne 0x14538 | goto label_97;
| }
0x000137e0 ldrb r1, [sp, 0x98] | r1 = endptr;
0x000137e4 cmp r1, 0x5d |
| if (r1 != 0x5d) {
0x000137e8 bne 0x14538 | goto label_97;
| }
0x000137ec ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x000137f0 strb r0, [r4, 0x25a] | *((r4 + 0x25a)) = r0;
0x000137f4 add r0, r3, 1 | r0 = r3 + 1;
0x000137f8 str r0, [r4, 0xa0] | *((r4 + 0xa0)) = r0;
0x000137fc bl 0x5b38 | r0 = strchr (r0, r1);
0x00013800 cmp r0, 0 |
| if (r0 != 0) {
0x00013804 bne 0x14504 | goto label_98;
| }
| label_32:
0x00013808 mov r6, 0 | r6 = 0;
| label_33:
0x0001380c ldr r3, [r5, 0x150] | r3 = *((r5 + 0x150));
0x00013810 cmp r3, 0 |
| if (r3 == 0) {
0x00013814 beq 0x14590 | goto label_99;
| }
0x00013818 add r2, r5, 0x4000 | r2 = r5 + 0x4000;
0x0001381c ldrb r2, [r2, 0x82c] | r2 = *((r2 + 0x82c));
0x00013820 cmp r2, 0 |
| if (r2 == 0) {
0x00013824 beq 0x14590 | goto label_99;
| }
0x00013828 lsl r3, r3, 0x10 | r3 <<= 0x10;
0x0001382c lsr r3, r3, 0x10 | r3 >>= 0x10;
0x00013830 cmp r6, 0 |
0x00013834 str r3, [r4, 0x100] | *((r4 + 0x100)) = r3;
| if (r6 == 0) {
0x00013838 movne r3, 0 | r3 = 0;
| }
| if (r6 == 0) {
0x0001383c strbne r3, [r6] | *(r6) = r3;
| }
0x00013840 ldrb r3, [r4, 0x256] | r3 = *((r4 + 0x256));
0x00013844 cmp r3, 0 |
| if (r3 != 0) {
0x00013848 beq 0x1393c |
| }
| label_35:
0x0001393c ldr r3, [r4, 0x100] | r3 = *((r4 + 0x100));
0x00013940 cmp r3, 0 |
| if (r3 >= 0) {
0x00013944 ldrlt r3, [r4, 0x288] | r3 = *((r4 + 0x288));
| }
0x00013948 ldrhlt r3, [r3, 0x3c] | __asm ("ldrhlt r3, [r3, 0x3c]");
| if (r3 >= 0) {
0x0001394c strlt r3, [r4, 0x100] | *((r4 + 0x100)) = r3;
| }
0x00013950 ldr r3, [r5, 0x5b4] | r3 = *((r5 + 0x5b4));
0x00013954 cmp r3, 0 |
| if (r3 != 0) {
0x00013958 bne 0x145ec | void (*0x145ec)() ();
| }
| label_93:
0x00013fa0 ldr r3, [sl, 0x5c8] | r3 = *((sl + 0x5c8));
0x00013fa4 cmp r3, 0 |
| if (r3 == 0) {
0x00013fa8 beq 0x140d0 | goto label_100;
| }
| label_22:
0x00013fac mov r3, 0 | r3 = 0;
0x00013fb0 str r3, [sp, 0x38] | var_38h = r3;
| label_23:
0x00013fb4 ldr sb, [sl, 0x5c8] | sb = *((sl + 0x5c8));
0x00013fb8 cmp sb, 0 |
| if (sb == 0) {
0x00013fbc bne 0x13fd0 |
0x00013fc0 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00013fc4 cmp r3, 0 |
| if (r3 == 0) {
0x00013fc8 beq 0x14038 | goto label_24;
| }
0x00013fcc mov sb, r3 | sb = r3;
| }
0x00013fd0 ldrb r3, [sb] | r3 = *(sb);
0x00013fd4 cmp r3, 0 |
| if (r3 != 0) {
0x00013fd8 beq 0x14038 |
0x00013fdc ldr r0, [pc, -0x8f8] | r0 = *(0x000136ec);
0x00013fe0 ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x00013fe4 mov r1, sb | r1 = sb;
0x00013fe8 add r0, pc, r0 | r0 = pc + r0;
0x00013fec str r3, [sp, 0x2c] | s = r3;
0x00013ff0 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00013ff4 cmp r0, 0 |
| if (r0 != 0) {
0x00013ff8 bne 0x14260 | goto label_101;
| }
0x00013ffc mov r0, sb | r0 = sb;
0x00014000 bl 0x5250 | strlen (r0);
0x00014004 ldr r3, [sp, 0x2c] | r3 = s;
0x00014008 ldrb r3, [r3] | r3 = *(r3);
0x0001400c cmp r3, 0x5b |
0x00014010 str r0, [sp, 0x50] | var_50h = r0;
| if (r3 != 0x5b) {
0x00014014 bne 0x14124 | goto label_102;
| }
0x00014018 ldr r0, [sp, 0x2c] | r0 = s;
0x0001401c mov r1, 0x5d | r1 = 0x5d;
0x00014020 bl 0x5b38 | r0 = strchr (r0, r1);
0x00014024 cmp r0, 0 |
| if (r0 == 0) {
0x00014028 ldrne r3, [sp, 0x2c] | r3 = s;
| }
| if (r0 == 0) {
0x0001402c addne r3, r3, 1 | r3++;
| }
| if (r0 == 0) {
0x00014030 strne r3, [sp, 0x2c] | s = r3;
| }
| if (r0 != 0) {
0x00014034 bne 0x14138 | goto label_103;
| }
| }
| label_24:
0x00014038 cmp r7, 0 |
0x0001403c cmpeq r6, 0 | __asm ("cmpeq r6, 0");
| if (r7 != 0) {
0x00014040 bne 0x1428c | goto label_27;
| }
0x00014044 ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x00014048 add r7, sp, 0xa0 | r7 += dest;
0x0001404c ldr r6, [r3] | r6 = *(r3);
0x00014050 sub r6, r6, 1 | r6--;
| label_25:
0x00014054 ldrb r0, [r6, 1]! | r0 = *((r6 += 1));
0x00014058 cmp r0, 0 |
| if (r0 != 0) {
0x0001405c bne 0x142e0 | goto label_104;
| }
0x00014060 ldr r1, [pc, -0x978] | r1 = *(0x136ec);
0x00014064 mov r0, r7 | r0 = r7;
0x00014068 add r1, pc, r1 | r1 = pc + r1;
0x0001406c add r6, sp, 0xa0 | r6 += dest;
0x00014070 bl 0x5c28 | strcpy (r0, r1);
0x00014074 mov r0, r6 | r0 = r6;
0x00014078 bl 0x58ec | fcn_000058ec ();
0x0001407c subs r7, r0, 0 | r7 -= dest;
| if (r7 != dest) {
0x00014080 bne 0x140b4 | goto label_105;
| }
0x00014084 ldr r0, [pc, -0x998] | r0 = *(0x136f0);
0x00014088 mov r1, r6 | r1 = r6;
0x0001408c add r0, pc, r0 | r0 = pc + r0;
0x00014090 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00014094 cmp r0, 0 |
| if (r0 == 0) {
0x00014098 beq 0x142ec | goto label_106;
| }
| label_26:
0x0001409c ldr r6, [pc, -0x9ac] | r6 = *(0x136f4);
0x000140a0 add r6, pc, r6 | r6 = pc + r6;
0x000140a4 mov r0, r6 | r0 = r6;
0x000140a8 bl 0x58ec | r0 = fcn_000058ec ();
0x000140ac subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x000140b0 beq 0x14310 | void (*0x14310)() ();
| }
| label_105:
0x000140b4 ldr r1, [pc, -0x9c0] | r1 = *(0x000136fc);
0x000140b8 mov r3, r7 | r3 = r7;
0x000140bc mov r2, r6 | r2 = r6;
0x000140c0 add r1, pc, r1 | r1 = pc + r1;
0x000140c4 ldr r0, [r4] | r0 = *(r4);
0x000140c8 bl 0x104cc | Curl_infof ();
0x000140cc b 0x14328 | goto label_107;
| label_100:
0x000140d0 ldr r8, [pc, -0x9d8] | r8 = *(0x136fc);
0x000140d4 add r8, pc, r8 | r8 = pc + r8;
0x000140d8 mov r0, r8 | r0 = r8;
0x000140dc bl 0x58ec | r0 = fcn_000058ec ();
0x000140e0 subs r3, r0, 0 | r3 = r0 - 0;
0x000140e4 str r3, [sp, 0x38] | var_38h = r3;
| if (r3 != r0) {
0x000140e8 bne 0x14108 | goto label_108;
| }
0x000140ec ldr r8, [pc, -0x9f0] | r8 = *(0x13700);
0x000140f0 add r8, pc, r8 | r8 = pc + r8;
0x000140f4 mov r0, r8 | r0 = r8;
0x000140f8 bl 0x58ec | r0 = fcn_000058ec ();
0x000140fc subs r3, r0, 0 | r3 = r0 - 0;
0x00014100 str r3, [sp, 0x38] | var_38h = r3;
| if (r3 == r0) {
0x00014104 beq 0x13fac | goto label_22;
| }
| label_108:
0x00014108 ldr r1, [pc, -0xa08] | r1 = *(0x00013708);
0x0001410c mov r2, r8 | r2 = r8;
0x00014110 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00014114 add r1, pc, r1 | r1 = pc + r1;
0x00014118 ldr r0, [r4] | r0 = *(r4);
0x0001411c bl 0x104cc | Curl_infof ();
0x00014120 b 0x13fb4 | goto label_23;
| label_102:
0x00014124 mov r1, 0x3a | r1 = 0x3a;
0x00014128 ldr r0, [sp, 0x2c] | r0 = s;
0x0001412c bl 0x5b38 | r0 = strchr (r0, r1);
0x00014130 cmp r0, 0 |
| if (r0 == 0) {
0x00014134 beq 0x14170 | goto label_109;
| }
| label_103:
0x00014138 ldr r3, [sp, 0x2c] | r3 = s;
0x0001413c sub r3, r0, r3 | r3 = r0 - r3;
0x00014140 str r3, [sp, 0x44] | var_44h = r3;
| do {
0x00014144 ldr r3, [pc, -0xa40] | r3 = *(0x0001370c);
0x00014148 mov r8, 0 | r8 = 0;
0x0001414c add r3, pc, r3 | r3 = pc + r3;
0x00014150 str r3, [sp, 0x64] | var_64h = r3;
0x00014154 ldr r3, [pc, -0xa4c] | r3 = *(0x00013710);
0x00014158 add r3, pc, r3 | r3 = pc + r3;
0x0001415c str r3, [sp, 0x68] | var_68h = r3;
0x00014160 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00014164 cmp r3, r8 |
| if (r3 > r8) {
0x00014168 bhi 0x14190 | goto label_110;
| }
0x0001416c b 0x14038 | goto label_24;
| label_109:
0x00014170 ldr r0, [sp, 0x2c] | r0 = s;
0x00014174 bl 0x5250 | strlen (r0);
0x00014178 str r0, [sp, 0x44] | var_44h = r0;
0x0001417c b 0x14144 |
| } while (1);
| label_110:
0x00014190 ldrb r1, [sb, r8] | r1 = *((sb + r8));
0x00014194 ldr r0, [sp, 0x64] | r0 = var_64h;
0x00014198 bl 0x5b38 | r0 = strchr (r0, r1);
0x0001419c cmp r0, 0 |
| if (r0 != 0) {
0x000141a0 bne 0x14180 | void (*0x14180)() ();
| }
| label_101:
0x00014260 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00014264 ldr r3, [pc, -0xb58] | r3 = *(0x13710);
0x00014268 mov r0, r7 | r0 = r7;
0x0001426c ldr r8, [r2, r3] | r8 = *((r2 + r3));
0x00014270 ldr r3, [r8] | r3 = *(r8);
0x00014274 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00014278 mov r0, r6 | r0 = r6;
0x0001427c ldr r3, [r8] | r3 = *(r8);
0x00014280 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00014284 mov r6, 0 | r6 = 0;
0x00014288 mov r7, r6 | r7 = r6;
| label_27:
0x0001428c ldr r3, [pc, -0xb80] | r3 = *(0x13710);
0x00014290 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00014294 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00014298 ldr r8, [r2, r3] | r8 = *((r2 + r3));
0x0001429c ldr r3, [r8] | r3 = *(r8);
0x000142a0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000142a4 cmp r7, 0 |
| if (r7 != 0) {
0x000142a8 beq 0x142c4 |
0x000142ac ldr r3, [r4, 0x508] | r3 = *((r4 + 0x508));
0x000142b0 cmp r3, 0 |
| if (r3 == 0) {
0x000142b4 beq 0x14330 | goto label_111;
| }
| label_28:
0x000142b8 ldr r3, [r8] | r3 = *(r8);
0x000142bc mov r0, r7 | r0 = r7;
0x000142c0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x000142c4 cmp r6, 0 |
| if (r6 == 0) {
0x000142c8 movne r7, 0 | r7 = 0;
| }
| if (r6 != 0) {
0x000142cc bne 0x14354 | goto label_112;
| }
| label_29:
0x000142d0 mov r3, 0 | r3 = 0;
0x000142d4 strb r3, [r4, 0x257] | *((r4 + 0x257)) = r3;
0x000142d8 strb r3, [r4, 0x256] | *((r4 + 0x256)) = r3;
0x000142dc b 0x144b8 | goto label_113;
| label_104:
0x000142e0 bl 0x4e0c | tolower (r0);
0x000142e4 strb r0, [r7], 1 | *(r7) = r0;
| r7++;
0x000142e8 b 0x14054 | goto label_25;
| label_106:
0x000142ec mov r2, 0x80 | r2 = 0x80;
0x000142f0 mov r1, r6 | r1 = r6;
0x000142f4 mov r0, r6 | r0 = r6;
0x000142f8 bl 0x19ec4 | Curl_strntoupper ();
0x000142fc mov r0, r6 | r0 = r6;
0x00014300 bl 0x58ec | fcn_000058ec ();
0x00014304 subs r7, r0, 0 | r7 -= dest;
| if (r7 == dest) {
0x00014308 beq 0x1409c | goto label_26;
| }
| label_107:
0x00014328 mov r6, 0 | r6 = 0;
0x0001432c b 0x1428c | goto label_27;
| label_111:
0x00014330 ldrb r3, [r7] | r3 = *(r7);
0x00014334 cmp r3, 0 |
| if (r3 == 0) {
0x00014338 beq 0x142b8 | goto label_28;
| }
0x0001433c ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x00014340 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x00014344 tst r3, 0x10 |
| if ((r3 & 0x10) != 0) {
0x00014348 bne 0x142b8 | goto label_28;
| }
| label_112:
0x00014354 ldrb r3, [r6] | r3 = *(r6);
0x00014358 cmp r3, 0 |
| if (r3 != 0) {
0x0001435c beq 0x14370 |
0x00014360 ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x00014364 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x00014368 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x0001436c beq 0x14380 | goto label_114;
| }
| }
0x00014370 mov r0, r6 | r0 = r6;
0x00014374 ldr r3, [r8] | r3 = *(r8);
0x00014378 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001437c mov r6, 0 | r6 = 0;
| label_114:
0x00014380 adds r3, r6, 0 | r3 = r6 + 0;
| if (r3 == r6) {
0x00014384 movne r3, 1 | r3 = 1;
| }
0x00014388 cmp r6, 0 |
0x0001438c cmpeq r7, 0 | __asm ("cmpeq r7, 0");
0x00014390 str r3, [sp, 0x4c] | var_4ch = r3;
| if (r6 == 0) {
0x00014394 beq 0x142d0 | goto label_29;
| }
| label_113:
0x000144b8 add r3, r4, 0x254 | r3 = r4 + 0x254;
0x000144bc ldrh r6, [r3, 2] | r6 = *((r3 + 2));
0x000144c0 cmp r6, 0 |
| if (r6 == 0) {
0x000144c4 movne r3, 1 | r3 = 1;
| }
| if (r6 != 0) {
0x000144c8 moveq r3, 0 | r3 = 0;
| }
0x000144cc strb r3, [r4, 0x255] | *((r4 + 0x255)) = r3;
| if (r6 != 0) {
0x000144d0 bne 0x135cc | goto label_30;
| }
| label_95:
0x000144e4 mov r7, r6 | r7 = r6;
0x000144e8 b 0x13778 | goto label_31;
| label_98:
0x00014504 ldrb r2, [r0, 1] | r2 = *((r0 + 1));
0x00014508 mov r3, 0 | r3 = 0;
0x0001450c cmp r2, r3 |
0x00014510 strb r3, [r0] | *(r0) = r3;
| if (r2 == r3) {
0x00014514 beq 0x13808 | goto label_32;
| }
0x00014518 cmp r2, 0x3a |
| if (r2 == 0x3a) {
0x0001451c addeq r6, r0, 1 | r6 = r0 + 1;
| goto label_115;
| }
| if (r2 == 0x3a) {
| label_115:
0x00014520 beq 0x1380c | goto label_33;
| }
0x00014524 ldr r1, [pc, -0xe0c] | r1 = *(0x1371c);
0x00014528 add r1, pc, r1 | r1 = pc + r1;
0x0001452c mov r0, r5 | r0 = r5;
0x00014530 bl 0x10544 | Curl_failf ();
0x00014534 b 0x12ab4 | goto label_34;
| label_97:
0x00014538 add r2, sp, 0xa0 | r2 += dest;
0x0001453c ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x00014540 mov r0, 0xa | r0 = 0xa;
0x00014544 bl 0x5190 | r0 = inet_pton ();
0x00014548 cmp r0, 0 |
| if (r0 <= 0) {
0x0001454c ldrgt r1, [pc, -0xe30] | r1 = *((pc - 0xe30));
| }
| if (r0 > 0) {
0x00014550 addgt r1, pc, r1 | r1 = pc + r1;
| goto label_116;
| }
| if (r0 > 0) {
| label_116:
0x00014554 bgt 0x12aac | goto label_5;
| }
0x00014558 mov r1, 0x3a | r1 = 0x3a;
0x0001455c ldr r0, [r4, 0xa0] | r0 = *((r4 + 0xa0));
0x00014560 bl 0x5b38 | r0 = strchr (r0, r1);
0x00014564 mov r6, r0 | r6 = r0;
0x00014568 b 0x1380c | goto label_33;
| label_99:
0x00014590 cmp r6, 0 |
| if (r6 == 0) {
0x00014594 beq 0x1393c | goto label_35;
| }
0x00014598 add r7, r6, 1 | r7 = r6 + 1;
0x0001459c mov r2, 0xa | r2 = 0xa;
0x000145a0 add r1, sp, 0xa0 | r1 += dest;
0x000145a4 mov r0, r7 | r0 = r7;
0x000145a8 bl 0x5274 | r0 = strtol (r0, r1, r2);
0x000145ac cmp r0, 0x10000 |
| if (r0 < 0x10000) {
0x000145b0 ldrhs r1, [pc, -0xe84] | r1 = *((pc - 0xe84));
| }
| if (r0 >= 0x10000) {
0x000145b4 addhs r1, pc, r1 | r1 = pc + r1;
| goto label_117;
| }
| if (r0 >= 0x10000) {
| label_117:
0x000145b8 bhs 0x12aac | goto label_5;
| }
| label_44:
0x00014a5c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r1, r0);
0x00014a60 b 0x1269c | goto label_0;
| label_78:
0x00015034 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00015038 ldrb r3, [r3] | r3 = *(r3);
0x0001503c cmp r3, 0 |
| if (r3 != 0) {
0x00015040 bne 0x1318c | goto label_36;
| }
0x00015044 ldr r1, [sp, 0x58] | r1 = var_58h;
0x00015048 bl 0x123bc | r0 = Curl_setup_conn ();
0x0001504c cmp r0, 0x59 |
0x00015050 mov r4, r0 | r4 = r0;
| if (r0 == 0x59) {
0x00015054 bne 0x1506c |
| label_42:
0x00015058 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0001505c mov r3, 0 | r3 = 0;
0x00015060 str r3, [r2] | *(r2) = r3;
0x00015064 mov r4, 0x59 | r4 = 0x59;
0x00015068 b 0x13190 | goto label_37;
| }
0x0001506c cmp r0, 0 |
| if (r0 == 0) {
0x00015070 beq 0x1318c | goto label_36;
| }
| label_43:
0x00015074 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00015078 ldr r0, [r3] | r0 = *(r3);
0x0001507c cmp r0, 0 |
| if (r0 == 0) {
0x00015080 beq 0x13190 | goto label_37;
| }
0x00015084 mov r1, 0 | r1 = 0;
0x00015088 bl 0x113b4 | Curl_disconnect ();
0x0001508c ldr r2, [sp, 0x34] | r2 = var_34h;
0x00015090 mov r3, 0 | r3 = 0;
0x00015094 str r3, [r2] | *(r2) = r3;
0x00015098 b 0x13190 | goto label_37;
| label_54:
0x0001509c ldr r1, [pc, 0x138] | r1 = *(0x151d8);
0x000150a0 mov r2, 5 | r2 = 5;
0x000150a4 add r1, pc, r1 | r1 = pc + r1;
0x000150a8 bl 0x19e40 | r0 = Curl_strncasecompare ();
0x000150ac cmp r0, 0 |
| if (r0 == 0) {
0x000150b0 beq 0x12b1c | goto label_9;
| }
0x000150b4 ldr r1, [pc, 0x124] | r1 = *(0x151dc);
0x000150b8 mov r2, r6 | r2 = r6;
0x000150bc add r1, pc, r1 | r1 = pc + r1;
0x000150c0 ldr r0, [r5, 0x678] | r0 = *((r5 + 0x678));
0x000150c4 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x000150c8 cmp r0, 1 |
| if (r0 != 1) {
0x000150cc bne 0x12bcc | goto label_38;
| }
0x000150d0 ldrb r3, [r6] | r3 = *(r6);
0x000150d4 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x000150d8 bne 0x12bf8 | goto label_39;
| }
0x000150dc ldrb r3, [r6, 1] | r3 = *((r6 + 1));
0x000150e0 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x000150e4 bne 0x12bf8 | goto label_39;
| }
0x000150e8 ldrb r3, [r6, 2] | r3 = *((r6 + 2));
0x000150ec add r7, r6, 2 | r7 = r6 + 2;
0x000150f0 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x000150f4 beq 0x12bdc | goto label_40;
| }
0x000150f8 bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x000150fc sub r3, r3, 0x41 | r3 -= 0x41;
0x00015100 cmp r3, 0x19 |
| if (r3 > 0x19) {
0x00015104 bhi 0x1513c | goto label_118;
| }
0x00015108 ldrb r3, [r6, 3] | r3 = *((r6 + 3));
0x0001510c cmp r3, 0x3a |
0x00015110 cmpne r3, 0x7c | __asm ("cmpne r3, 0x7c");
| if (r3 != 0x3a) {
0x00015114 bne 0x1513c | goto label_118;
| }
0x00015118 ldrb r2, [r6, 4] | r2 = *((r6 + 4));
0x0001511c cmp r2, 0x2f |
0x00015120 cmpne r2, 0x5c | __asm ("cmpne r2, 0x5c");
| if (r2 == 0x2f) {
0x00015124 movne r3, 1 | r3 = 1;
| }
| if (r2 != 0x2f) {
0x00015128 moveq r3, 0 | r3 = 0;
| }
0x0001512c cmp r2, 0 |
| if (r2 != 0) {
0x00015130 moveq r3, 0 | r3 = 0;
| }
0x00015134 cmp r3, 0 |
| if (r3 == 0) {
0x00015138 beq 0x12bdc | goto label_40;
| }
| label_118:
0x0001513c ldr r0, [pc, 0xa0] | r0 = *(0x151e0);
0x00015140 mov r2, 0xa | r2 = 0xa;
0x00015144 mov r1, r7 | r1 = r7;
0x00015148 add r0, pc, r0 | r0 = pc + r0;
0x0001514c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00015150 cmp r0, 0 |
| if (r0 != 0) {
0x00015154 bne 0x12bd8 | goto label_41;
| }
0x00015158 ldr r0, [pc, 0x88] | r0 = *(0x151e4);
0x0001515c mov r2, 0xa | r2 = 0xa;
0x00015160 mov r1, r7 | r1 = r7;
0x00015164 add r0, pc, r0 | r0 = pc + r0;
0x00015168 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0001516c cmp r0, 0 |
| if (r0 != 0) {
0x00015170 bne 0x12bd8 | goto label_41;
| }
0x00015174 ldr r1, [pc, 0x70] | r1 = *(0x151e8);
0x00015178 add r1, pc, r1 | r1 = pc + r1;
0x0001517c b 0x12aac | goto label_5;
| label_77:
0x00015180 cmp fp, 0x59 |
| if (fp != 0x59) {
0x00015184 movne r4, fp | r4 = fp;
| goto label_119;
| }
| if (fp == 0x59) {
| label_119:
0x00015188 beq 0x15058 | goto label_42;
| }
0x0001518c b 0x15074 | goto label_43;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1ca30 */
| #include <stdint.h>
|
; (fcn) sym.Curl_connecthost () | void Curl_connecthost (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0001ca30 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x0001ca34 ldr r5, [r0] | r5 = *(r0);
0x0001ca38 mov r6, sp | r6 = sp;
0x0001ca3c mov r4, r0 | r4 = r0;
0x0001ca40 mov r0, r6 | r0 = r6;
0x0001ca44 mov r7, r1 | r7 = r1;
0x0001ca48 bl 0x69f0 | Curl_now ();
0x0001ca4c mov r1, r6 | r1 = r6;
0x0001ca50 mov r2, 1 | r2 = 1;
0x0001ca54 mov r0, r5 | r0 = r5;
0x0001ca58 bl 0x1b738 | r0 = Curl_timeleft ();
0x0001ca5c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0001ca60 bge 0x1ca80 | goto label_3;
| }
0x0001ca64 ldr r1, [pc, 0xc4] | r1 = *(0x1cb2c);
0x0001ca68 mov r0, r5 | r0 = r5;
0x0001ca6c add r1, pc, r1 | r1 = pc + r1;
0x0001ca70 bl 0x10544 | Curl_failf ();
0x0001ca74 mov r0, 0x1c | r0 = 0x1c;
| do {
| label_2:
0x0001ca78 add sp, sp, 0xc |
0x0001ca7c pop {r4, r5, r6, r7, pc} |
| label_3:
0x0001ca80 ldr r0, [r7] | r0 = *(r7);
0x0001ca84 bl 0x70fc | Curl_num_addresses ();
0x0001ca88 ldr r3, [r7] | r3 = *(r7);
0x0001ca8c mov r2, 0 | r2 = 0;
0x0001ca90 str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x0001ca94 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0001ca98 str r2, [r4, 0x5c] | *((r4 + 0x5c)) = r2;
0x0001ca9c cmp r3, 0 |
0x0001caa0 asrne r6, r6, 1 | __asm ("asrne r6, r6, 1");
0x0001caa4 mvn r2, 0 | r2 = ~0;
0x0001caa8 str r6, [r4, 0x280] | *((r4 + 0x280)) = r6;
0x0001caac add r6, r4, 0x1a0 | r6 = r4 + 0x1a0;
0x0001cab0 str r2, [r4, 0x1a0] | *((r4 + 0x1a0)) = r2;
0x0001cab4 str r2, [r4, 0x1a4] | *((r4 + 0x1a4)) = r2;
0x0001cab8 str r0, [r4, 0x27c] | *((r4 + 0x27c)) = r0;
0x0001cabc mov r0, 7 | r0 = 7;
| label_1:
0x0001cac0 ldr r1, [r4, 0x58] | r1 = *((r4 + 0x58));
0x0001cac4 cmp r1, 0 |
| if (r1 != 0) {
0x0001cac8 bne 0x1cae4 | goto label_4;
| }
| label_0:
0x0001cacc ldr r3, [r4, 0x1a0] | r3 = *((r4 + 0x1a0));
0x0001cad0 cmn r3, 1 |
| if (r3 != 1) {
0x0001cad4 bne 0x1cb08 | goto label_5;
| }
0x0001cad8 cmp r0, 0 |
| if (r0 != 0) {
0x0001cadc moveq r0, 7 | r0 = 7;
| }
0x0001cae0 b 0x1ca78 |
| } while (1);
| label_4:
0x0001cae4 mov r2, r6 | r2 = r6;
0x0001cae8 mov r0, r4 | r0 = r4;
0x0001caec bl 0x1bdac | r0 = singleipconnect ();
0x0001caf0 cmp r0, 0 |
| if (r0 == 0) {
0x0001caf4 beq 0x1cacc | goto label_0;
| }
0x0001caf8 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x0001cafc ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0001cb00 str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x0001cb04 b 0x1cac0 | goto label_1;
| label_5:
0x0001cb08 add r2, r5, 0x4000 | r2 = r5 + 0x4000;
0x0001cb0c ldr r3, [r2, 0xa84] | r3 = *((r2 + 0xa84));
0x0001cb10 ldr r0, [r4] | r0 = *(r4);
0x0001cb14 add r3, r3, 1 | r3++;
0x0001cb18 str r3, [r2, 0xa84] | *((r2 + 0xa84)) = r3;
0x0001cb1c ldr r1, [r5, 0x1ec] | r1 = *((r5 + 0x1ec));
0x0001cb20 mov r2, 4 | r2 = 4;
0x0001cb24 bl 0x1e348 | Curl_expire ();
0x0001cb28 mov r0, 0 | r0 = 0;
0x0001cb2c b 0x1ca78 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x255d8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_connect_complete () | uint32_t Curl_connect_complete (int32_t arg1) {
| r0 = arg1;
0x000255d8 ldr r3, [r0, 0x4fc] | r3 = *((r0 + 0x4fc));
0x000255dc cmp r3, 0 |
| if (r3 == 0) {
0x000255e0 addne r3, r3, 0x4000 | r3 += 0x4000;
| }
| if (r3 == 0) {
0x000255e4 ldrne r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
| }
| if (r3 == 0) {
0x000255e8 subne r0, r0, 2 | r0 -= 2;
| }
0x000255ec clzne r0, r0 | __asm ("clzne r0, r0");
| if (r3 == 0) {
0x000255f0 lsrne r0, r0, 5 | r0 >>= 5;
| }
| if (r3 != 0) {
0x000255f4 moveq r0, 1 | r0 = 1;
| }
0x000255f8 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x255fc */
| #include <stdint.h>
|
; (fcn) sym.Curl_connect_ongoing () | uint32_t Curl_connect_ongoing (size_t nmeb) {
| r0 = nmeb;
0x000255fc ldr r0, [r0, 0x4fc] | r0 = *((r0 + 0x4fc));
0x00025600 cmp r0, 0 |
| if (r0 != 0) {
0x00025604 bxeq lr | return r0;
| }
0x00025608 add r0, r0, 0x4000 | r0 += 0x4000;
0x0002560c ldr r0, [r0, 0x1c] | r0 = *((r0 + 0x1c));
0x00025610 subs r0, r0, 2 | r0 -= 2;
| if (r0 == r0) {
0x00025614 movne r0, 1 | r0 = 1;
| }
0x00025618 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2561c */
| #include <stdint.h>
|
; (fcn) sym.Curl_connect_free () | void Curl_connect_free (int32_t arg1) {
| r0 = arg1;
0x0002561c push {r4, lr} |
0x00025620 ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x00025624 ldr r3, [pc, 0x28] |
0x00025628 ldr r0, [r4, 0x4fc] | r0 = *((r4 + 0x4fc));
0x0002562c add r3, pc, r3 | r3 = pc + r3;
0x00025630 cmp r0, 0 |
0x00025634 popeq {r4, pc} |
0x00025638 ldr r2, [pc, 0x18] | r2 = $d;
0x0002563c ldr r3, [r3, r2] |
0x00025640 ldr r3, [r3] | r3 = *(0x25650);
0x00025644 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r2, r3);
0x00025648 mov r3, 0 | r3 = 0;
0x0002564c str r3, [r4, 0x4fc] | *((r4 + 0x4fc)) = r3;
0x00025650 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x255d8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_connect_complete () | uint32_t Curl_connect_complete (int32_t arg1) {
| r0 = arg1;
0x000255d8 ldr r3, [r0, 0x4fc] | r3 = *((r0 + 0x4fc));
0x000255dc cmp r3, 0 |
| if (r3 == 0) {
0x000255e0 addne r3, r3, 0x4000 | r3 += 0x4000;
| }
| if (r3 == 0) {
0x000255e4 ldrne r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
| }
| if (r3 == 0) {
0x000255e8 subne r0, r0, 2 | r0 -= 2;
| }
0x000255ec clzne r0, r0 | __asm ("clzne r0, r0");
| if (r3 == 0) {
0x000255f0 lsrne r0, r0, 5 | r0 >>= 5;
| }
| if (r3 != 0) {
0x000255f4 moveq r0, 1 | r0 = 1;
| }
0x000255f8 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1ca30 */
| #include <stdint.h>
|
; (fcn) sym.Curl_connecthost () | void Curl_connecthost (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0001ca30 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x0001ca34 ldr r5, [r0] | r5 = *(r0);
0x0001ca38 mov r6, sp | r6 = sp;
0x0001ca3c mov r4, r0 | r4 = r0;
0x0001ca40 mov r0, r6 | r0 = r6;
0x0001ca44 mov r7, r1 | r7 = r1;
0x0001ca48 bl 0x69f0 | Curl_now ();
0x0001ca4c mov r1, r6 | r1 = r6;
0x0001ca50 mov r2, 1 | r2 = 1;
0x0001ca54 mov r0, r5 | r0 = r5;
0x0001ca58 bl 0x1b738 | r0 = Curl_timeleft ();
0x0001ca5c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0001ca60 bge 0x1ca80 | goto label_3;
| }
0x0001ca64 ldr r1, [pc, 0xc4] | r1 = *(0x1cb2c);
0x0001ca68 mov r0, r5 | r0 = r5;
0x0001ca6c add r1, pc, r1 | r1 = pc + r1;
0x0001ca70 bl 0x10544 | Curl_failf ();
0x0001ca74 mov r0, 0x1c | r0 = 0x1c;
| do {
| label_2:
0x0001ca78 add sp, sp, 0xc |
0x0001ca7c pop {r4, r5, r6, r7, pc} |
| label_3:
0x0001ca80 ldr r0, [r7] | r0 = *(r7);
0x0001ca84 bl 0x70fc | Curl_num_addresses ();
0x0001ca88 ldr r3, [r7] | r3 = *(r7);
0x0001ca8c mov r2, 0 | r2 = 0;
0x0001ca90 str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x0001ca94 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0001ca98 str r2, [r4, 0x5c] | *((r4 + 0x5c)) = r2;
0x0001ca9c cmp r3, 0 |
0x0001caa0 asrne r6, r6, 1 | __asm ("asrne r6, r6, 1");
0x0001caa4 mvn r2, 0 | r2 = ~0;
0x0001caa8 str r6, [r4, 0x280] | *((r4 + 0x280)) = r6;
0x0001caac add r6, r4, 0x1a0 | r6 = r4 + 0x1a0;
0x0001cab0 str r2, [r4, 0x1a0] | *((r4 + 0x1a0)) = r2;
0x0001cab4 str r2, [r4, 0x1a4] | *((r4 + 0x1a4)) = r2;
0x0001cab8 str r0, [r4, 0x27c] | *((r4 + 0x27c)) = r0;
0x0001cabc mov r0, 7 | r0 = 7;
| label_1:
0x0001cac0 ldr r1, [r4, 0x58] | r1 = *((r4 + 0x58));
0x0001cac4 cmp r1, 0 |
| if (r1 != 0) {
0x0001cac8 bne 0x1cae4 | goto label_4;
| }
| label_0:
0x0001cacc ldr r3, [r4, 0x1a0] | r3 = *((r4 + 0x1a0));
0x0001cad0 cmn r3, 1 |
| if (r3 != 1) {
0x0001cad4 bne 0x1cb08 | goto label_5;
| }
0x0001cad8 cmp r0, 0 |
| if (r0 != 0) {
0x0001cadc moveq r0, 7 | r0 = 7;
| }
0x0001cae0 b 0x1ca78 |
| } while (1);
| label_4:
0x0001cae4 mov r2, r6 | r2 = r6;
0x0001cae8 mov r0, r4 | r0 = r4;
0x0001caec bl 0x1bdac | r0 = singleipconnect ();
0x0001caf0 cmp r0, 0 |
| if (r0 == 0) {
0x0001caf4 beq 0x1cacc | goto label_0;
| }
0x0001caf8 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x0001cafc ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0001cb00 str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x0001cb04 b 0x1cac0 | goto label_1;
| label_5:
0x0001cb08 add r2, r5, 0x4000 | r2 = r5 + 0x4000;
0x0001cb0c ldr r3, [r2, 0xa84] | r3 = *((r2 + 0xa84));
0x0001cb10 ldr r0, [r4] | r0 = *(r4);
0x0001cb14 add r3, r3, 1 | r3++;
0x0001cb18 str r3, [r2, 0xa84] | *((r2 + 0xa84)) = r3;
0x0001cb1c ldr r1, [r5, 0x1ec] | r1 = *((r5 + 0x1ec));
0x0001cb20 mov r2, 4 | r2 = 4;
0x0001cb24 bl 0x1e348 | Curl_expire ();
0x0001cb28 mov r0, 0 | r0 = 0;
0x0001cb2c b 0x1ca78 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x9f7c */
| #include <stdint.h>
|
; (fcn) sym.Curl_cookie_add () | void Curl_cookie_add (int32_t arg_28h, int32_t arg_2ch, char * s1, int32_t arg_34h, char * format, int32_t arg_3ch, size_t nmeb, int32_t arg_1000h, int32_t arg_1040h, int32_t arg_2040h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_1ch;
| int32_t var_20h;
| r0 = arg1;
| r1 = arg2;
0x00009f7c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009f80 ldr sl, [pc, 0xc78] | sl = *(0x0000ac00);
0x00009f84 sub sp, sp, 0x2040 |
0x00009f88 sub sp, sp, 4 |
0x00009f8c str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00009f90 add r3, sp, 0x2040 | r3 += arg_2040h;
0x00009f94 add r3, r3, 0x28 | r3 += 0x28;
0x00009f98 str r0, [sp, 0x28] | *(arg_28h) = r0;
0x00009f9c mov r0, 0 | r0 = 0;
0x00009fa0 str r1, [sp, 0x1c] | var_1ch = r1;
0x00009fa4 mov r5, r2 | r5 = r2;
0x00009fa8 ldr r6, [r3] | r6 = *(r3);
0x00009fac bl 0x5544 | time (r0);
0x00009fb0 ldr r3, [pc, 0xc4c] |
0x00009fb4 add sl, pc, sl | sl = pc + sl;
0x00009fb8 mov r1, 0x38 | r1 = 0x38;
0x00009fbc str r0, [sp, 0x30] | *(s1) = r0;
0x00009fc0 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x00009fc4 mov r0, 1 | r0 = 1;
0x00009fc8 ldr r3, [r3] | r3 = $d;
0x00009fcc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00009fd0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00009fd4 beq 0xa0e8 | goto label_22;
| }
0x00009fd8 cmp r5, 0 |
| if (r5 == 0) {
0x00009fdc beq 0xa7c4 | goto label_26;
| }
0x00009fe0 mov r0, r6 | r0 = r6;
0x00009fe4 bl 0x5250 | strlen (r0);
0x00009fe8 ldr r3, [pc, 0xc18] | r3 = *(0xac04);
0x00009fec cmp r0, r3 |
| if (r0 >= r3) {
0x00009ff0 bls 0xa00c |
| label_15:
0x00009ff4 ldr r3, [pc, 0xc10] |
0x00009ff8 mov r0, r4 | r0 = r4;
0x00009ffc ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000a000 ldr r3, [r3] | r3 = *(0xac08);
0x0000a004 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000a008 b 0xa0e4 | goto label_0;
| }
0x0000a00c mov r1, 0x3b | r1 = 0x3b;
0x0000a010 mov r0, r6 | r0 = r6;
0x0000a014 bl 0x5b38 | strchr (r0, r1);
0x0000a018 mov r3, r6 | r3 = r6;
0x0000a01c mov fp, r0 |
| do {
0x0000a020 mov r6, r3 | r6 = r3;
0x0000a024 ldrb sb, [r3], 1 | sb = *(r3);
| r3++;
0x0000a028 cmp sb, 0 |
| if (sb == 0) {
0x0000a02c beq 0xa044 | goto label_27;
| }
0x0000a030 cmp sb, 9 |
0x0000a034 cmpne sb, 0x20 | __asm ("cmpne sb, 0x20");
| if (sb != 9) {
0x0000a038 moveq sb, 1 | sb = 1;
| }
| if (sb == 9) {
0x0000a03c movne sb, 0 | sb = 0;
| }
0x0000a040 beq 0xa020 |
| } while (sb == 9);
| label_27:
0x0000a044 ldr r3, [pc, 0xbc4] | r3 = *(0xac0c);
0x0000a048 add r3, pc, r3 | r3 = pc + r3;
0x0000a04c str r3, [sp, 0x38] | *(format) = r3;
0x0000a050 ldr r3, [pc, 0xbbc] | r3 = *(0xac10);
0x0000a054 add r3, pc, r3 | r3 = pc + r3;
0x0000a058 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
| label_1:
0x0000a05c mov r3, 0 | r3 = 0;
0x0000a060 add r8, sp, 0x1040 | r8 += arg_1040h;
0x0000a064 add r7, sp, 0x40 | r7 += nmeb;
0x0000a068 strb r3, [r8] | *(r8) = r3;
0x0000a06c strb r3, [sp, 0x40] | *(nmeb) = r3;
0x0000a070 mov r2, r7 | r2 = r7;
0x0000a074 mov r3, r8 | r3 = r8;
0x0000a078 ldr r1, [sp, 0x38] | r1 = *(format);
0x0000a07c mov r0, r6 | r0 = r6;
0x0000a080 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000a084 cmp r0, 0 |
| if (r0 <= 0) {
0x0000a088 ble 0xa38c | goto label_3;
| }
0x0000a08c mov r0, r8 | r0 = r8;
0x0000a090 bl 0x5250 | r0 = strlen (r0);
0x0000a094 mov r8, r0 | r8 = r0;
0x0000a098 mov r0, r7 | r0 = r7;
0x0000a09c bl 0x5250 | strlen (r0);
0x0000a0a0 ldr r2, [pc, 0xb70] | r2 = *(0xac14);
0x0000a0a4 cmp r8, r2 |
0x0000a0a8 cmpls r0, r2 | __asm ("cmpls r0, r2");
0x0000a0ac mov r7, r0 | r7 = r0;
0x0000a0b0 add r6, r6, r0 | r6 += r0;
| if (r8 <= r2) {
0x0000a0b4 bhi 0xa0c4 |
0x0000a0b8 add r2, r8, r0 | r2 = r8 + r0;
0x0000a0bc cmp r2, 0x1000 |
| if (r2 < 0x1000) {
0x0000a0c0 bls 0xa0f8 | goto label_28;
| }
| }
0x0000a0c4 mov r0, r4 | r0 = r4;
0x0000a0c8 bl 0x99c8 | freecookie ();
0x0000a0cc ldr r1, [pc, 0xb48] | r1 = *(0xac18);
0x0000a0d0 mov r3, r8 | r3 = r8;
0x0000a0d4 mov r2, r7 | r2 = r7;
0x0000a0d8 add r1, pc, r1 | r1 = pc + r1;
0x0000a0dc ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x0000a0e0 bl 0x104cc | Curl_infof ();
| label_0:
0x0000a0e4 mov r4, 0 | r4 = 0;
| label_22:
0x0000a0e8 mov r0, r4 | r0 = r4;
0x0000a0ec add sp, sp, 0x2040 |
0x0000a0f0 add sp, sp, 4 |
0x0000a0f4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_28:
0x0000a0f8 ldrb r3, [r6] | r3 = *(r6);
0x0000a0fc cmp r0, 0 |
0x0000a100 str r3, [sp, 0x20] | var_20h = r3;
| if (r0 == 0) {
0x0000a104 beq 0xa144 | goto label_29;
| }
0x0000a108 ldrb r2, [r6, -1] | r2 = *((r6 - 1));
0x0000a10c cmp r2, 9 |
0x0000a110 cmpne r2, 0x20 | __asm ("cmpne r2, 0x20");
0x0000a114 bne 0xa144 |
| while (1) {
0x0000a118 ldrb r2, [r6, -1]! | r2 = *((r6 -= 1));
0x0000a11c cmp r2, 0 |
| if (r2 != 0) {
0x0000a120 beq 0xa138 |
0x0000a124 cmp r2, 9 |
0x0000a128 cmpne r2, 0x20 | __asm ("cmpne r2, 0x20");
| if (r2 != 9) {
0x0000a12c bne 0xa138 | goto label_30;
| }
0x0000a130 cmp r7, 0 |
| if (r7 != 0) {
0x0000a134 bne 0xa150 | goto label_31;
| }
| }
| label_30:
0x0000a138 mov r1, 0 | r1 = 0;
0x0000a13c add r2, sp, 0x40 | r2 += nmeb;
0x0000a140 strb r1, [r2, r7] | *((r2 + r7)) = r1;
| label_29:
0x0000a144 add r0, sp, 0x1040 | r0 += arg_1040h;
0x0000a148 mov ip, 0 |
0x0000a14c b 0xa160 | goto label_32;
| label_31:
0x0000a150 sub r7, r7, 1 | r7--;
0x0000a154 b 0xa118 |
| }
| do {
0x0000a158 mov r8, r2 | r8 = r2;
0x0000a15c strb ip, [r2, r0] | *((r2 + r0)) = ip;
| label_32:
0x0000a160 cmp r8, 0 |
| if (r8 == 0) {
0x0000a164 beq 0xa17c | goto label_33;
| }
0x0000a168 sub r2, r8, 1 | r2 = r8 - 1;
0x0000a16c ldrb r1, [r2, r0] | r1 = *((r2 + r0));
0x0000a170 cmp r1, 9 |
0x0000a174 cmpne r1, 0x20 | __asm ("cmpne r1, 0x20");
0x0000a178 beq 0xa158 |
| } while (r1 == 9);
| label_33:
0x0000a17c add r6, sp, 0x1000 | r6 += arg_1000h;
0x0000a180 add r6, r6, 0x3f | r6 += 0x3f;
| do {
0x0000a184 add r6, r6, 1 | r6++;
0x0000a188 ldrb r2, [r6] | r2 = *(r6);
0x0000a18c mov r7, r6 | r7 = r6;
0x0000a190 cmp r2, 0 |
| if (r2 == 0) {
0x0000a194 beq 0xa1a4 | goto label_34;
| }
0x0000a198 cmp r2, 9 |
0x0000a19c cmpne r2, 0x20 | __asm ("cmpne r2, 0x20");
0x0000a1a0 beq 0xa184 |
| } while (r2 == 9);
| label_34:
0x0000a1a4 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0000a1a8 cmp r2, 0 |
| if (r2 == 0) {
0x0000a1ac bne 0xa208 |
0x0000a1b0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000a1b4 cmp r3, 0x3d |
| if (r3 != 0x3d) {
0x0000a1b8 bne 0xa2ac | goto label_2;
| }
0x0000a1bc ldr r3, [pc, 0xa5c] | r3 = *(0xac1c);
0x0000a1c0 add r0, sp, 0x40 | r0 += nmeb;
0x0000a1c4 ldr r7, [sl, r3] | r7 = *((sl + r3));
0x0000a1c8 ldr r3, [r7] | r3 = *(r7);
0x0000a1cc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000a1d0 ldr r3, [r7] | r3 = *(r7);
0x0000a1d4 str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000a1d8 mov r0, r6 | r0 = r6;
0x0000a1dc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000a1e0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000a1e4 cmp r3, 0 |
0x0000a1e8 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0000a1ec clz r0, r0 | r0 &= r0;
0x0000a1f0 lsr r0, r0, 5 | r0 >>= 5;
| if (r3 != 0) {
0x0000a1f4 moveq r0, 1 | r0 = 1;
| }
0x0000a1f8 cmp r0, 0 |
| if (r0 == 0) {
0x0000a1fc beq 0xa38c | goto label_3;
| }
0x0000a200 mov r5, r0 | r5 = r0;
0x0000a204 b 0xa2ac | goto label_2;
| }
0x0000a208 cmp r8, 0 |
0x0000a20c beq 0xa334 |
| while (r3 == 0x3d) {
0x0000a210 ldr r0, [pc, 0xa0c] | r0 = *(0xac20);
0x0000a214 add r8, sp, 0x40 | r8 += nmeb;
0x0000a218 mov r1, r8 | r1 = r8;
0x0000a21c add r0, pc, r0 | r0 = pc + r0;
0x0000a220 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a224 cmp r0, 0 |
| if (r0 != 0) {
0x0000a228 bne 0xa3f4 | goto label_35;
| }
0x0000a22c ldr r0, [pc, 0x9f4] | r0 = *(0xac24);
0x0000a230 mov r1, r8 | r1 = r8;
0x0000a234 add r0, pc, r0 | r0 = pc + r0;
0x0000a238 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a23c cmp r0, 0 |
| if (r0 == 0) {
0x0000a240 beq 0xa4c8 | goto label_36;
| }
0x0000a244 ldrb r3, [r6] | r3 = *(r6);
0x0000a248 mov r1, 0x2e | r1 = 0x2e;
0x0000a24c cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0000a250 addeq r7, r6, 1 | r7 = r6 + 1;
| }
0x0000a254 mov r0, r7 | r0 = r7;
0x0000a258 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000a25c cmp r0, 0 |
| if (r0 == 0) {
0x0000a260 beq 0xa438 | goto label_37;
| }
| label_4:
0x0000a264 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a268 add r3, r3, 0x2c | r3 += 0x2c;
0x0000a26c ldr r0, [r3] | r0 = *(r3);
0x0000a270 cmp r0, 0 |
| if (r0 != 0) {
0x0000a274 moveq r0, r7 | r0 = r7;
| }
| label_5:
0x0000a278 bl 0x9e94 | isip ();
0x0000a27c add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a280 add r3, r3, 0x2c | r3 += 0x2c;
0x0000a284 ldr r3, [r3] | r3 = *(r3);
0x0000a288 cmp r3, 0 |
0x0000a28c mov r6, r0 | r6 = r0;
| if (r3 != 0) {
0x0000a290 bne 0xa468 | goto label_38;
| }
| label_6:
0x0000a294 mov r1, r7 | r1 = r7;
0x0000a298 add r0, r4, 0x14 | r0 = r4 + 0x14;
0x0000a29c bl 0x9a58 | strstore ();
0x0000a2a0 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0000a2a4 cmp r3, 0 |
| if (r3 != 0) {
0x0000a2a8 bne 0xa4b8 | goto label_39;
| }
| label_2:
0x0000a2ac ldr r0, [r4, 0x2c] | r0 = *((r4 + 0x2c));
0x0000a2b0 cmp r0, 0 |
| if (r0 == 0) {
0x0000a2b4 beq 0xa564 | goto label_40;
| }
0x0000a2b8 ldrb r3, [r0] | r3 = *(r0);
0x0000a2bc mov r2, 0xa | r2 = 0xa;
0x0000a2c0 cmp r3, 0x22 |
| if (r3 != 0x22) {
0x0000a2c4 addeq r0, r0, 1 | r0++;
| }
0x0000a2c8 add r3, r4, 0x18 | r3 = r4 + 0x18;
0x0000a2cc mov r1, 0 | r1 = 0;
0x0000a2d0 bl 0x2188c | r0 = curlx_strtoofft ();
0x0000a2d4 cmp r0, 1 |
| if (r0 != 1) {
0x0000a2d8 mvneq r2, 0 | r2 = ~0;
| }
| if (r0 != 1) {
0x0000a2dc mvneq r3, 0x80000000 | r3 = ~0x80000000;
| }
| if (r0 == 1) {
0x0000a2e0 beq 0xa55c | goto label_11;
| }
0x0000a2e4 cmp r0, 0 |
| if (r0 == 0) {
0x0000a2e8 bne 0xa320 |
0x0000a2ec ldr r2, [sp, 0x30] | r2 = *(s1);
0x0000a2f0 ldrd r0, r1, [r4, 0x18] | __asm ("ldrd r0, r1, [r4, 0x18]");
0x0000a2f4 asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0000a2f8 mvn r6, 0 | r6 = ~0;
0x0000a2fc strd r2, r3, [sp, 0x20] | __asm ("strd r2, r3, [sp, 0x20]");
0x0000a300 mvn r7, 0x80000000 | r7 = ~0x80000000;
0x0000a304 subs r2, r6, r2 | r2 = r6 - r2;
0x0000a308 sbc r3, r7, r3 | __asm ("sbc r3, r7, r3");
0x0000a30c mov sb, r3 | sb = r3;
0x0000a310 cmp r2, r0 |
0x0000a314 sbcs r3, sb, r1 | __asm ("sbcs r3, sb, r1");
| if (r2 >= r0) {
0x0000a318 bge 0xa550 | goto label_41;
| }
0x0000a31c strd r6, r7, [r4, 0x18] | __asm ("strd r6, r7, [r4, 0x18]");
| }
| label_10:
0x0000a320 cmp r5, 0 |
| if (r5 == 0) {
0x0000a324 beq 0xa5a8 | goto label_42;
| }
| label_12:
0x0000a328 mov r0, r4 | r0 = r4;
0x0000a32c bl 0x99c8 | freecookie ();
0x0000a330 b 0xa0e4 | goto label_0;
0x0000a334 ldr r0, [pc, 0x8f0] | r0 = *(0xac28);
0x0000a338 add r3, sp, 0x40 | r3 += nmeb;
0x0000a33c mov r1, r3 | r1 = r3;
0x0000a340 add r0, pc, r0 | r0 = pc + r0;
0x0000a344 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x0000a348 bl 0x19dc0 | Curl_strcasecompare ();
0x0000a34c ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0000a350 cmp r0, 0 |
| if (r0 == 0) {
0x0000a354 movne r3, 1 | r3 = 1;
| }
| if (r0 == 0) {
0x0000a358 strbne r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
| }
| if (r0 != 0) {
0x0000a35c bne 0xa38c | goto label_3;
| }
0x0000a360 ldr r0, [pc, 0x8c8] | r0 = *(0xac2c);
0x0000a364 mov r1, r3 | r1 = r3;
0x0000a368 add r0, pc, r0 | r0 = pc + r0;
0x0000a36c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a370 cmp r0, 0 |
| if (r0 == 0) {
0x0000a374 movne r3, 1 | r3 = 1;
| }
| if (r0 == 0) {
0x0000a378 strbne r3, [r4, 0x32] | *((r4 + 0x32)) = r3;
| }
| if (r0 != 0) {
0x0000a37c bne 0xa38c | goto label_3;
| }
0x0000a380 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000a384 cmp r3, 0x3d |
0x0000a388 beq 0xa210 |
| }
| label_3:
0x0000a38c cmp fp, 0 |
| if (fp == 0) {
0x0000a390 beq 0xa3ec | goto label_43;
| }
0x0000a394 ldrb r3, [fp] | r3 = *(fp);
0x0000a398 cmp r3, 0 |
| if (r3 == 0) {
0x0000a39c beq 0xa3ec | goto label_43;
| }
0x0000a3a0 add fp, fp, 1 |
| do {
0x0000a3a4 mov r6, fp | r6 = fp;
0x0000a3a8 ldrb r7, [fp], 1 | r7 = *(fp);
| fp++;
0x0000a3ac cmp r7, 0 |
| if (r7 == 0) {
0x0000a3b0 beq 0xa3c0 | goto label_44;
| }
0x0000a3b4 cmp r7, 9 |
0x0000a3b8 cmpne r7, 0x20 | __asm ("cmpne r7, 0x20");
0x0000a3bc beq 0xa3a4 |
| } while (r7 == 9);
| label_44:
0x0000a3c0 mov r1, 0x3b | r1 = 0x3b;
0x0000a3c4 mov r0, r6 | r0 = r6;
0x0000a3c8 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000a3cc subs fp, r0, 0 |
| if (fp != r0) {
0x0000a3d0 bne 0xa05c | goto label_1;
| }
0x0000a3d4 cmp r7, 0 |
| if (r7 == 0) {
0x0000a3d8 beq 0xa3ec | goto label_43;
| }
0x0000a3dc mov r0, r6 | r0 = r6;
0x0000a3e0 bl 0x5250 | r0 = strlen (r0);
0x0000a3e4 adds fp, r6, r0 |
| if (fp != r6) {
0x0000a3e8 bne 0xa05c | goto label_1;
| }
| label_43:
0x0000a3ec mov r5, sb | r5 = sb;
0x0000a3f0 b 0xa2ac | goto label_2;
| label_35:
0x0000a3f4 mov r1, r6 | r1 = r6;
0x0000a3f8 add r0, r4, 0xc | r0 = r4 + 0xc;
0x0000a3fc bl 0x9a58 | strstore ();
0x0000a400 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000a404 cmp r3, 0 |
| if (r3 == 0) {
0x0000a408 beq 0xa2ac | goto label_2;
| }
0x0000a40c ldr r3, [pc, 0x7f8] |
0x0000a410 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0000a414 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000a418 ldr r3, [r3] | r3 = *(0xac08);
0x0000a41c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000a420 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000a424 bl 0x9c58 | r0 = sanitize_cookie_path ();
0x0000a428 cmp r0, 0 |
0x0000a42c str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
| if (r0 != 0) {
| label_8:
0x0000a430 bne 0xa38c | goto label_3;
| }
0x0000a434 b 0xa2ac | goto label_2;
| label_37:
0x0000a438 ldr r1, [pc, 0x7f4] | r1 = *(0xac30);
0x0000a43c mov r0, r7 | r0 = r7;
0x0000a440 add r1, pc, r1 | r1 = pc + r1;
0x0000a444 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a448 cmp r0, 0 |
| if (r0 != 0) {
0x0000a44c bne 0xa264 | goto label_4;
| }
0x0000a450 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x0000a454 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a458 add r3, r3, 0x2c | r3 += 0x2c;
0x0000a45c str r2, [r3] | *(r3) = r2;
0x0000a460 mov r0, r2 | r0 = r2;
0x0000a464 b 0xa278 | goto label_5;
| label_38:
0x0000a468 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a46c add r3, r3, 0x2c | r3 += 0x2c;
0x0000a470 cmp r6, 0 |
0x0000a474 ldr r1, [r3] | r1 = *(r3);
0x0000a478 mov r0, r7 | r0 = r7;
| if (r6 == 0) {
0x0000a47c beq 0xa4a8 | goto label_45;
| }
0x0000a480 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0000a484 cmp r0, 0 |
| if (r0 == 0) {
0x0000a488 beq 0xa294 | goto label_6;
| }
| label_7:
0x0000a48c ldr r1, [pc, 0x7a4] | r1 = *(0xac34);
0x0000a490 mov r2, r7 | r2 = r7;
0x0000a494 add r1, pc, r1 | r1 = pc + r1;
0x0000a498 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x0000a49c bl 0x104cc | Curl_infof ();
0x0000a4a0 mov sb, r5 | sb = r5;
0x0000a4a4 b 0xa38c | goto label_3;
| label_45:
0x0000a4a8 bl 0x9b3c | r0 = tailmatch ();
0x0000a4ac cmp r0, 0 |
| if (r0 != 0) {
0x0000a4b0 bne 0xa294 | goto label_6;
| }
0x0000a4b4 b 0xa48c | goto label_7;
| label_39:
0x0000a4b8 cmp r6, 0 |
| if (r6 != 0) {
0x0000a4bc moveq r3, 1 | r3 = 1;
| }
| if (r6 != 0) {
0x0000a4c0 strbeq r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| }
0x0000a4c4 b 0xa38c | goto label_3;
| label_36:
0x0000a4c8 ldr r0, [pc, 0x76c] | r0 = *(0xac38);
0x0000a4cc mov r1, r8 | r1 = r8;
0x0000a4d0 add r0, pc, r0 | r0 = pc + r0;
0x0000a4d4 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a4d8 cmp r0, 0 |
| if (r0 == 0) {
0x0000a4dc beq 0xa4f8 | goto label_46;
| }
0x0000a4e0 mov r1, r6 | r1 = r6;
0x0000a4e4 add r0, r4, 0x28 | r0 = r4 + 0x28;
0x0000a4e8 bl 0x9a58 | strstore ();
0x0000a4ec ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
| do {
| label_9:
0x0000a4f0 cmp r3, 0 |
0x0000a4f4 b 0xa430 | goto label_8;
| label_46:
0x0000a4f8 ldr r0, [pc, 0x740] | r0 = *(0xac3c);
0x0000a4fc mov r1, r8 | r1 = r8;
0x0000a500 add r0, pc, r0 | r0 = pc + r0;
0x0000a504 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a508 cmp r0, 0 |
| if (r0 == 0) {
0x0000a50c beq 0xa524 | goto label_47;
| }
0x0000a510 mov r1, r6 | r1 = r6;
0x0000a514 add r0, r4, 0x2c | r0 = r4 + 0x2c;
0x0000a518 bl 0x9a58 | strstore ();
0x0000a51c ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0000a520 b 0xa4f0 |
| } while (1);
| label_47:
0x0000a524 ldr r0, [pc, 0x718] | r0 = "__";
0x0000a528 mov r1, r8 | r1 = r8;
0x0000a52c add r0, pc, r0 | r0 = pc + r0;
0x0000a530 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a534 cmp r0, 0 |
| if (r0 == 0) {
0x0000a538 beq 0xa38c | goto label_3;
| }
0x0000a53c mov r1, r6 | r1 = r6;
0x0000a540 add r0, r4, 0x20 | r0 = r4 + 0x20;
0x0000a544 bl 0x9a58 | strstore ();
0x0000a548 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0000a54c b 0xa4f0 | goto label_9;
| label_41:
0x0000a550 ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h]");
0x0000a554 adds r2, r2, r0 | r2 += r0;
0x0000a558 adc r3, r3, r1 | __asm ("adc r3, r3, r1");
| label_11:
0x0000a55c strd r2, r3, [r4, 0x18] | __asm ("strd r2, r3, [r4, 0x18]");
0x0000a560 b 0xa320 | goto label_10;
| label_40:
0x0000a564 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0000a568 cmp r3, 0 |
| if (r3 == 0) {
0x0000a56c beq 0xa320 | goto label_10;
| }
0x0000a570 mov r1, r0 | r1 = r0;
0x0000a574 mov r0, r3 | r0 = r3;
0x0000a578 bl 0x5a60 | r0 = fcn_00005a60 ();
0x0000a57c asr r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0000a580 orrs r3, r0, r1 | r3 = r0 | r1;
| if (r3 != r0) {
0x0000a584 moveq r2, 1 | r2 = 1;
| }
| if (r3 == r0) {
0x0000a588 beq 0xa5a0 | goto label_48;
| }
0x0000a58c cmp r0, 0 |
0x0000a590 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
0x0000a594 strdge r0, r1, [r4, 0x18] | __asm ("strdge r0, r1, [r4, 0x18]");
| if (r0 >= 0) {
0x0000a598 bge 0xa320 | goto label_10;
| }
0x0000a59c mov r2, 0 | r2 = 0;
| label_48:
0x0000a5a0 mov r3, 0 | r3 = 0;
0x0000a5a4 b 0xa55c | goto label_11;
| label_42:
0x0000a5a8 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a5ac add r3, r3, 0x2c | r3 += 0x2c;
0x0000a5b0 ldr r3, [r3] | r3 = *(r3);
0x0000a5b4 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0000a5b8 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0000a5bc movne r3, 1 | r3 = 1;
| }
0x0000a5c0 cmp r2, 0 |
| if (r2 == 0) {
0x0000a5c4 movne r3, 0 | r3 = 0;
| }
0x0000a5c8 cmp r3, 0 |
| if (r3 == 0) {
0x0000a5cc beq 0xa5f8 | goto label_49;
| }
0x0000a5d0 ldr r3, [pc, 0x648] |
0x0000a5d4 add r2, sp, 0x2040 | r2 += arg_2040h;
0x0000a5d8 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000a5dc add r2, r2, 0x2c | r2 += 0x2c;
0x0000a5e0 ldr r3, [r3] | r3 = *(0xac1c);
0x0000a5e4 ldr r0, [r2] | r0 = *(r2);
0x0000a5e8 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000a5ec cmp r0, 0 |
0x0000a5f0 str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
| if (r0 == 0) {
0x0000a5f4 beq 0xa328 | goto label_12;
| }
| label_49:
0x0000a5f8 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a5fc add r3, r3, 0x30 | r3 += 0x30;
0x0000a600 ldr r3, [r3] | r3 = *(r3);
0x0000a604 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0000a608 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0000a60c movne r3, 1 | r3 = 1;
| }
0x0000a610 cmp r2, 0 |
| if (r2 == 0) {
0x0000a614 movne r3, 0 | r3 = 0;
| }
0x0000a618 cmp r3, 0 |
| if (r3 != 0) {
0x0000a61c beq 0xa658 |
0x0000a620 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a624 add r3, r3, 0x30 | r3 += 0x30;
0x0000a628 mov r1, 0x3f | r1 = 0x3f;
0x0000a62c ldr r0, [r3] | r0 = *(r3);
0x0000a630 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000a634 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 != r0) {
0x0000a638 bne 0xa730 | goto label_50;
| }
0x0000a63c add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a640 add r3, r3, 0x30 | r3 += 0x30;
0x0000a644 mov r1, 0x2f | r1 = 0x2f;
0x0000a648 ldr r0, [r3] | r0 = *(r3);
0x0000a64c bl 0x5160 | r0 = strrchr (r0, r1);
| label_13:
0x0000a650 cmp r0, 0 |
| if (r0 != 0) {
0x0000a654 bne 0xa758 | goto label_51;
| }
| }
| label_14:
0x0000a658 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000a65c cmp r3, 0 |
| if (r3 == 0) {
0x0000a660 beq 0xa328 | goto label_12;
| }
| label_16:
0x0000a664 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000a668 ldrb r5, [r3, 0x404] | r5 = *((r3 + 0x404));
0x0000a66c cmp r5, 0 |
| if (r5 != 0) {
0x0000a670 bne 0xa68c | goto label_52;
| }
0x0000a674 ldrb r3, [r3, 0x40c] | r3 = *((r3 + 0x40c));
0x0000a678 cmp r3, 0 |
| if (r3 == 0) {
0x0000a67c beq 0xa68c | goto label_52;
| }
0x0000a680 ldrd r2, r3, [r4, 0x18] | __asm ("ldrd r2, r3, [r4, 0x18]");
0x0000a684 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 == r2) {
0x0000a688 beq 0xa328 | goto label_12;
| }
| label_52:
0x0000a68c ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x0000a690 strb r5, [r4, 0x31] | *((r4 + 0x31)) = r5;
0x0000a694 cmp r3, 0 |
| if (r3 == 0) {
0x0000a698 bne 0xa6a4 |
0x0000a69c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000a6a0 bl 0x9aa8 | remove_expired ();
| }
0x0000a6a4 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x0000a6a8 bl 0x9edc | cookiehash ();
0x0000a6ac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000a6b0 mov r7, 0 | r7 = 0;
0x0000a6b4 ldr r5, [r3, r0, lsl 2] | offset_0 = r0 << 2;
| r5 = *((r3 + offset_0));
0x0000a6b8 mov r6, r0 | r6 = r0;
| do {
0x0000a6bc cmp r5, 0 |
| if (r5 == 0) {
0x0000a6c0 beq 0xab58 | goto label_53;
| }
0x0000a6c4 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0000a6c8 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0000a6cc bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a6d0 cmp r0, 0 |
| if (r0 != 0) {
0x0000a6d4 beq 0xa724 |
0x0000a6d8 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x0000a6dc ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x0000a6e0 cmp r0, 0 |
| if (r0 == 0) {
0x0000a6e4 beq 0xaa74 | goto label_54;
| }
0x0000a6e8 cmp r1, 0 |
| if (r1 == 0) {
0x0000a6ec beq 0xa724 | goto label_21;
| }
0x0000a6f0 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a6f4 cmp r0, 0 |
| if (r0 == 0) {
0x0000a6f8 beq 0xa724 | goto label_21;
| }
0x0000a6fc ldrb r2, [r5, 0x24] | r2 = *((r5 + 0x24));
0x0000a700 ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0000a704 cmp r2, r3 |
| if (r2 != r3) {
| label_20:
0x0000a708 bne 0xa724 | goto label_21;
| }
0x0000a70c ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x0000a710 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x0000a714 cmp r0, 0 |
| if (r0 != 0) {
0x0000a718 bne 0xaa7c | goto label_55;
| }
0x0000a71c cmp r1, 0 |
| if (r1 == 0) {
0x0000a720 beq 0xaa90 | goto label_56;
| }
| }
| label_21:
0x0000a724 mov r7, r5 | r7 = r5;
0x0000a728 ldr r5, [r5] | r5 = *(r5);
0x0000a72c b 0xa6bc |
| } while (1);
| label_50:
0x0000a730 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a734 add r3, r3, 0x30 | r3 += 0x30;
0x0000a738 ldr r3, [r3] | r3 = *(r3);
0x0000a73c mov r1, 0x2f | r1 = 0x2f;
0x0000a740 sub r2, r2, r3 | r2 -= r3;
0x0000a744 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a748 add r3, r3, 0x30 | r3 += 0x30;
0x0000a74c ldr r0, [r3] | r0 = *(r3);
0x0000a750 bl 0x2514c | Curl_memrchr ();
0x0000a754 b 0xa650 | goto label_13;
| label_51:
0x0000a758 add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a75c add r3, r3, 0x30 | r3 += 0x30;
0x0000a760 ldr r3, [r3] | r3 = *(r3);
0x0000a764 sub r0, r0, r3 | r0 -= r3;
0x0000a768 ldr r3, [pc, 0x4d8] |
0x0000a76c add r5, r0, 1 | r5 = r0 + 1;
0x0000a770 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000a774 add r0, r0, 2 | r0 += 2;
0x0000a778 ldr r3, [r3] | r3 = *(0xac44);
0x0000a77c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000a780 cmp r0, 0 |
0x0000a784 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
| if (r0 == 0) {
0x0000a788 beq 0xa328 | goto label_12;
| }
0x0000a78c add r3, sp, 0x2040 | r3 += arg_2040h;
0x0000a790 add r3, r3, 0x30 | r3 += 0x30;
0x0000a794 ldr r1, [r3] | r1 = *(r3);
0x0000a798 mov r2, r5 | r2 = r5;
0x0000a79c bl 0x4f5c | memcpy (r0, r1, r2);
0x0000a7a0 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000a7a4 mov r2, 0 | r2 = 0;
0x0000a7a8 strb r2, [r3, r5] | *((r3 + r5)) = r2;
0x0000a7ac ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000a7b0 bl 0x9c58 | r0 = sanitize_cookie_path ();
0x0000a7b4 cmp r0, 0 |
0x0000a7b8 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
| if (r0 != 0) {
0x0000a7bc bne 0xa658 | goto label_14;
| }
0x0000a7c0 b 0xa328 | goto label_12;
| label_26:
0x0000a7c4 ldr r1, [pc, 0x480] | r1 = *(0xac48);
0x0000a7c8 mov r0, r6 | r0 = r6;
0x0000a7cc add r7, sp, 0x1040 | r7 += arg_1040h;
0x0000a7d0 mov r2, 0xa | r2 = 0xa;
0x0000a7d4 add r1, pc, r1 | r1 = pc + r1;
0x0000a7d8 str r5, [r7] | *(r7) = r5;
0x0000a7dc bl 0x516c | r0 = strncmp (r0, r1, r2);
0x0000a7e0 cmp r0, 0 |
| if (r0 != 0) {
0x0000a7e4 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0000a7e8 addeq r6, r6, 0xa | r6 += 0xa;
| }
| if (r0 != 0) {
0x0000a7ec strbeq r3, [r4, 0x32] | *((r4 + 0x32)) = r3;
| }
0x0000a7f0 ldrb r3, [r6] | r3 = *(r6);
0x0000a7f4 cmp r3, 0x23 |
| if (r3 == 0x23) {
0x0000a7f8 beq 0x9ff4 | goto label_15;
| }
0x0000a7fc mov r1, 0xd | r1 = 0xd;
0x0000a800 mov r0, r6 | r0 = r6;
0x0000a804 bl 0x5b38 | strchr (r0, r1);
0x0000a808 mov r1, 0xa | r1 = 0xa;
0x0000a80c ldr r8, [pc, 0x43c] | r8 = *(0xac4c);
0x0000a810 mov sb, 0 | sb = 0;
0x0000a814 add r8, pc, r8 | r8 = pc + r8;
0x0000a818 cmp r0, 0 |
| if (r0 == 0) {
0x0000a81c movne r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x0000a820 strbne r3, [r0] | *(r0) = r3;
| }
0x0000a824 mov r0, r6 | r0 = r6;
0x0000a828 bl 0x5b38 | strchr (r0, r1);
0x0000a82c ldr r1, [pc, 0x420] | r1 = *(0xac50);
0x0000a830 mov r2, r7 | r2 = r7;
0x0000a834 add r1, pc, r1 | r1 = pc + r1;
0x0000a838 cmp r0, 0 |
| if (r0 == 0) {
0x0000a83c movne r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x0000a840 strbne r3, [r0] | *(r0) = r3;
| }
0x0000a844 mov r0, r6 | r0 = r6;
0x0000a848 bl 0x4e78 | strtok_r ();
0x0000a84c ldr r3, [pc, 0x404] | r3 = *(0xac54);
0x0000a850 mov r6, sb | r6 = sb;
0x0000a854 add r3, pc, r3 | r3 = pc + r3;
0x0000a858 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x0000a85c ldr r3, [pc, 0x3f8] | r3 = *(0xac58);
0x0000a860 add r3, pc, r3 | r3 = pc + r3;
0x0000a864 str r3, [sp, 0x30] | *(s1) = r3;
0x0000a868 mov r5, r0 | r5 = r0;
| label_17:
0x0000a86c eor r0, sb, 1 | r0 = sb ^ 1;
0x0000a870 cmp r5, 0 |
| if (r5 != 0) {
0x0000a874 moveq fp, 0 |
| }
| if (r5 == 0) {
0x0000a878 andne fp, r0, 1 |
| }
0x0000a87c cmp fp, 0 |
| if (fp != 0) {
0x0000a880 bne 0xa8cc | goto label_57;
| }
0x0000a884 cmp r6, 6 |
| if (r6 == 6) {
0x0000a888 bne 0xa8b4 |
0x0000a88c ldr r3, [pc, 0x38c] |
0x0000a890 ldr r0, [pc, 0x3c8] | r0 = *(0xac5c);
0x0000a894 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000a898 add r0, pc, r0 | r0 = pc + r0;
0x0000a89c ldr r3, [r3] | r3 = *(0xac1c);
0x0000a8a0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000a8a4 cmp r0, 0 |
| if (r0 != 0) {
0x0000a8a8 moveq sb, 1 | sb = 1;
| }
| if (r0 == 0) {
0x0000a8ac movne r6, 7 | r6 = 7;
| }
0x0000a8b0 str r0, [r4, 8] | *((r4 + 8)) = r0;
| }
0x0000a8b4 cmp r6, 7 |
| if (r6 != 7) {
0x0000a8b8 moveq r6, sb | r6 = sb;
| }
| if (r6 == 7) {
0x0000a8bc orrne r6, sb, 1 | r6 = sb | 1;
| }
0x0000a8c0 tst r6, 0xff |
| if ((r6 & 0xff) == 0) {
0x0000a8c4 beq 0xa664 | goto label_16;
| }
0x0000a8c8 b 0xa328 | goto label_12;
| label_57:
0x0000a8cc cmp r6, 6 |
| if (r6 > 6) {
| /* switch table (7 cases) at 0xa8d8 */
0x0000a8d0 addls pc, pc, r6, lsl 2 | pc += (r6 << 2);
| }
0x0000a8d4 b 0xa960 | goto label_58;
0x0000a8d8 b 0xa8f4 | goto label_59;
0x0000a8dc b 0xa944 | goto label_60;
0x0000a8e0 b 0xa968 | goto label_61;
0x0000a8e4 b 0xaa14 | goto label_62;
0x0000a8e8 b 0xaa1c | goto label_63;
0x0000a8ec b 0xaa3c | goto label_64;
0x0000a8f0 b 0xaa58 | goto label_65;
| label_59:
0x0000a8f4 ldrb r3, [r5] | r3 = *(r5);
0x0000a8f8 cmp r3, 0x2e |
0x0000a8fc ldr r3, [pc, 0x31c] |
| if (r3 != 0x2e) {
0x0000a900 addeq r5, r5, 1 | r5++;
| }
0x0000a904 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000a908 mov r0, r5 | r0 = r5;
0x0000a90c ldr r3, [r3] | r3 = *(0xac1c);
0x0000a910 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000a914 str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
| label_19:
0x0000a918 clz fp, r0 |
0x0000a91c lsr fp, fp, 5 |
| do {
| label_18:
0x0000a920 ldr r1, [pc, 0x33c] | r1 = *(0xac60);
0x0000a924 mov r2, r7 | r2 = r7;
0x0000a928 add r1, pc, r1 | r1 = pc + r1;
0x0000a92c mov r0, 0 | r0 = 0;
0x0000a930 bl 0x4e78 | strtok_r ();
0x0000a934 add r6, r6, 1 | r6++;
0x0000a938 mov sb, fp | sb = fp;
0x0000a93c mov r5, r0 | r5 = r0;
0x0000a940 b 0xa86c | goto label_17;
| label_60:
0x0000a944 ldr r1, [pc, 0x31c] | r1 = *(0xac64);
0x0000a948 mov r0, r5 | r0 = r5;
0x0000a94c add r1, pc, r1 | r1 = pc + r1;
0x0000a950 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000a954 adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x0000a958 movne r0, 1 | r0 = 1;
| }
0x0000a95c strb r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
| label_58:
0x0000a960 mov fp, 0 |
0x0000a964 b 0xa920 |
| } while (1);
| label_61:
0x0000a968 mov r1, r5 | r1 = r5;
0x0000a96c ldr r0, [sp, 0x30] | r0 = *(s1);
0x0000a970 bl 0x5a30 | strcmp (r0, r1);
0x0000a974 ldr r2, [pc, 0x2a4] | r2 = *(0xac1c);
0x0000a978 ldr r3, [sl, r2] | r3 = *((sl + r2));
0x0000a97c str r3, [sp, 0x20] | var_20h = r3;
0x0000a980 ldr sb, [r3] | sb = *(r3);
0x0000a984 cmp r0, 0 |
| if (r0 == 0) {
0x0000a988 beq 0xa9c4 | goto label_66;
| }
0x0000a98c ldr r0, [pc, 0x2d8] | r0 = *(0xac68);
0x0000a990 mov r1, r5 | r1 = r5;
0x0000a994 add r0, pc, r0 | r0 = pc + r0;
0x0000a998 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0000a99c cmp r0, 0 |
| if (r0 == 0) {
0x0000a9a0 beq 0xa9c4 | goto label_66;
| }
0x0000a9a4 mov r0, r5 | r0 = r5;
0x0000a9a8 blx sb | r0 = sb (r0);
0x0000a9ac cmp r0, 0 |
0x0000a9b0 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
| if (r0 == 0) {
0x0000a9b4 beq 0xa920 | goto label_18;
| }
0x0000a9b8 bl 0x9c58 | sanitize_cookie_path ();
0x0000a9bc str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0000a9c0 b 0xa918 | goto label_19;
| label_66:
0x0000a9c4 mov r0, r8 | r0 = r8;
0x0000a9c8 blx sb | sb (r0);
0x0000a9cc ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000a9d0 ldr r2, [r3] | r2 = *(r3);
0x0000a9d4 mov r6, r0 | r6 = r0;
0x0000a9d8 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x0000a9dc mov r0, r8 | r0 = r8;
0x0000a9e0 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000a9e4 cmp r0, 0 |
0x0000a9e8 clzne fp, r6 | __asm ("clzne fp, r6");
| if (r0 == 0) {
0x0000a9ec lsrne fp, fp, 5 |
| }
0x0000a9f0 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
| do {
0x0000a9f4 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x0000a9f8 mov r0, r5 | r0 = r5;
0x0000a9fc bl 0x19dc0 | Curl_strcasecompare ();
0x0000aa00 mov r6, 3 | r6 = 3;
0x0000aa04 adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x0000aa08 movne r0, 1 | r0 = 1;
| }
0x0000aa0c strb r0, [r4, 0x30] | *((r4 + 0x30)) = r0;
0x0000aa10 b 0xa920 | goto label_18;
| label_62:
0x0000aa14 mov fp, 0 |
0x0000aa18 b 0xa9f4 |
| } while (1);
| label_63:
0x0000aa1c add r3, r4, 0x18 | r3 = r4 + 0x18;
0x0000aa20 mov r2, 0xa | r2 = 0xa;
0x0000aa24 mov r1, 0 | r1 = 0;
0x0000aa28 mov r0, r5 | r0 = r5;
0x0000aa2c bl 0x2188c | r0 = curlx_strtoofft ();
0x0000aa30 adds fp, r0, 0 |
| if (fp == r0) {
0x0000aa34 movne fp, 1 |
| }
0x0000aa38 b 0xa920 | goto label_18;
| label_64:
0x0000aa3c ldr r3, [pc, 0x1dc] |
0x0000aa40 mov r0, r5 | r0 = r5;
0x0000aa44 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000aa48 ldr r3, [r3] | r3 = *(0xac1c);
0x0000aa4c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aa50 str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000aa54 b 0xa918 | goto label_19;
| label_65:
0x0000aa58 ldr r3, [pc, 0x1c0] |
0x0000aa5c mov r0, r5 | r0 = r5;
0x0000aa60 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0000aa64 ldr r3, [r3] | r3 = *(0xac1c);
0x0000aa68 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aa6c str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0000aa70 b 0xa918 | goto label_19;
| label_54:
0x0000aa74 cmp r1, 0 |
0x0000aa78 b 0xa708 | goto label_20;
| label_55:
0x0000aa7c cmp r1, 0 |
| if (r1 == 0) {
0x0000aa80 beq 0xa724 | goto label_21;
| }
0x0000aa84 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000aa88 cmp r0, 0 |
| if (r0 == 0) {
0x0000aa8c beq 0xa724 | goto label_21;
| }
| label_56:
0x0000aa90 ldrb r7, [r4, 0x31] | r7 = *((r4 + 0x31));
0x0000aa94 cmp r7, 0 |
| if (r7 == 0) {
0x0000aa98 beq 0xabdc | goto label_67;
| }
| label_23:
0x0000aa9c ldr r3, [r5] | r3 = *(r5);
0x0000aaa0 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0000aaa4 str r3, [r4] | *(r4) = r3;
0x0000aaa8 ldr r3, [pc, 0x15c] | r3 = *(0xac08);
0x0000aaac ldr r7, [sl, r3] | r7 = *((sl + r3));
0x0000aab0 ldr r3, [r7] | r3 = *(r7);
0x0000aab4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aab8 ldr r3, [r7] | r3 = *(r7);
0x0000aabc ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0000aac0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aac4 ldr r3, [r7] | r3 = *(r7);
0x0000aac8 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x0000aacc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aad0 ldr r3, [r7] | r3 = *(r7);
0x0000aad4 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0000aad8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aadc ldr r3, [r7] | r3 = *(r7);
0x0000aae0 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x0000aae4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aae8 ldr r3, [r7] | r3 = *(r7);
0x0000aaec ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x0000aaf0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aaf4 ldr r3, [r7] | r3 = *(r7);
0x0000aaf8 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0000aafc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000ab00 ldr r3, [r7] | r3 = *(r7);
0x0000ab04 ldr r0, [r5, 0x2c] | r0 = *((r5 + 0x2c));
0x0000ab08 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000ab0c mov lr, r4 | lr = r4;
0x0000ab10 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0000ab14 mov ip, r5 |
0x0000ab18 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0000ab1c ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0000ab20 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0000ab24 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0000ab28 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0000ab2c ldr r3, [r7] | r3 = *(r7);
0x0000ab30 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x0000ab34 mov r7, r5 | r7 = r5;
0x0000ab38 stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x0000ab3c mov r0, r4 | r0 = r4;
0x0000ab40 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_24:
0x0000ab44 ldr r3, [r7] | r3 = *(r7);
0x0000ab48 cmp r3, 0 |
| if (r3 != 0) {
0x0000ab4c bne 0xabec | goto label_68;
| }
0x0000ab50 mov r4, r5 | r4 = r5;
0x0000ab54 mov r5, 1 | r5 = 1;
| label_53:
0x0000ab58 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000ab5c ldrb r3, [r3, 0x404] | r3 = *((r3 + 0x404));
0x0000ab60 cmp r3, 0 |
| if (r3 != 0) {
0x0000ab64 beq 0xabac |
0x0000ab68 cmp r5, 0 |
| if (r5 == 0) {
0x0000ab6c beq 0xabf4 | goto label_69;
| }
0x0000ab70 ldr r2, [pc, 0xf8] | r2 = *(0xac6c);
0x0000ab74 add r2, pc, r2 | r2 = pc + r2;
| label_25:
0x0000ab78 ldrd r0, r1, [r4, 0x18] | __asm ("ldrd r0, r1, [r4, 0x18]");
0x0000ab7c strd r0, r1, [sp, 0x10] | __asm ("strd r0, r1, [sp, 0x10]");
0x0000ab80 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000ab84 ldr r1, [pc, 0xe8] | r1 = *(0xac70);
0x0000ab88 str r3, [sp, 8] | var_8h = r3;
0x0000ab8c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0000ab90 add r1, pc, r1 | r1 = pc + r1;
0x0000ab94 str r3, [sp, 4] | var_4h = r3;
0x0000ab98 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000ab9c ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x0000aba0 str r3, [sp] | *(sp) = r3;
0x0000aba4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000aba8 bl 0x104cc | Curl_infof ();
| }
0x0000abac cmp r5, 0 |
| if (r5 != 0) {
0x0000abb0 bne 0xa0e8 | goto label_22;
| }
0x0000abb4 cmp r7, 0 |
| if (r7 != 0) {
0x0000abb8 ldreq r3, [sp, 0x1c] | r3 = var_1ch;
| }
0x0000abbc ldr r2, [sp, 0x1c] | r2 = var_1ch;
| if (r7 != 0) {
0x0000abc0 streq r4, [r3, r6, lsl 2] | offset_1 = r6 << 2;
| *((r3 + offset_1)) = r4;
| }
0x0000abc4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r7 == 0) {
0x0000abc8 strne r4, [r7] | *(r7) = r4;
| }
0x0000abcc ldr r3, [r3, 0x408] | r3 = *((r3 + 0x408));
0x0000abd0 add r3, r3, 1 | r3++;
0x0000abd4 str r3, [r2, 0x408] | *((r2 + 0x408)) = r3;
0x0000abd8 b 0xa0e8 | goto label_22;
| label_67:
0x0000abdc ldrb r3, [r5, 0x31] | r3 = *((r5 + 0x31));
0x0000abe0 cmp r3, 0 |
| if (r3 != 0) {
0x0000abe4 bne 0xa328 | goto label_12;
| }
0x0000abe8 b 0xaa9c | goto label_23;
| label_68:
0x0000abec mov r7, r3 | r7 = r3;
0x0000abf0 b 0xab44 | goto label_24;
| label_69:
0x0000abf4 ldr r2, [pc, 0x7c] | r2 = *(0xac74);
0x0000abf8 add r2, pc, r2 | r2 = pc + r2;
0x0000abfc b 0xab78 | goto label_25;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xaca0 */
| #include <stdint.h>
|
; (fcn) sym.Curl_cookie_getlist () | void Curl_cookie_getlist (int32_t arg1, int32_t arg2) {
| char * s1;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_20h_2;
| int32_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x0000aca0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000aca4 ldr r5, [pc, 0x498] | r5 = *(0xb140);
0x0000aca8 sub sp, sp, 0x2c |
0x0000acac mov r4, r0 | r4 = r0;
0x0000acb0 mov r0, 0 | r0 = 0;
0x0000acb4 mov fp, r1 |
0x0000acb8 str r2, [sp, 0x14] | var_14h = r2;
0x0000acbc str r3, [sp, 0x18] | var_18h = r3;
0x0000acc0 bl 0x5544 | time (r0);
0x0000acc4 add r5, pc, r5 | r5 = pc + r5;
0x0000acc8 mov r7, r0 | r7 = r0;
0x0000accc mov r0, fp | r0 = fp;
0x0000acd0 bl 0x9edc | cookiehash ();
0x0000acd4 cmp r4, 0 |
| if (r4 != 0) {
0x0000acd8 moveq r6, r4 | r6 = r4;
| }
| if (r4 == 0) {
0x0000acdc beq 0xae2c | goto label_16;
| }
0x0000ace0 ldr r6, [r4, r0, lsl 2] | offset_0 = r0 << 2;
| r6 = *((r4 + offset_0));
0x0000ace4 mov r8, r0 | r8 = r0;
0x0000ace8 cmp r6, 0 |
| if (r6 == 0) {
0x0000acec beq 0xae2c | goto label_16;
| }
0x0000acf0 mov r0, r4 | r0 = r4;
0x0000acf4 bl 0x9aa8 | remove_expired ();
0x0000acf8 mov r0, fp | r0 = fp;
0x0000acfc bl 0x9e94 | isip ();
0x0000ad00 ldr r3, [pc, 0x440] | r3 = $d;
0x0000ad04 ldr r4, [r4, r8, lsl 2] | offset_1 = r8 << 2;
| r4 = *((r4 + offset_1));
0x0000ad08 add r3, pc, r3 | r3 = pc + r3;
0x0000ad0c mov sb, 0 | sb = 0;
0x0000ad10 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000ad14 mov r2, r7 | r2 = r7;
0x0000ad18 asr r3, r7, 0x1f | r3 = r7 >> 0x1f;
0x0000ad1c mov r6, sb | r6 = sb;
0x0000ad20 strd r2, r3, [sp, 0x20] | __asm ("strd r2, r3, [var_20h]");
0x0000ad24 str r0, [sp, 8] | var_8h = r0;
| do {
0x0000ad28 cmp r4, 0 |
| if (r4 == 0) {
0x0000ad2c bne 0xadb4 |
0x0000ad30 cmp sb, 0 |
| if (sb == 0) {
0x0000ad34 beq 0xae2c | goto label_16;
| }
0x0000ad38 ldr r3, [pc, 0x40c] |
0x0000ad3c lsl r7, sb, 2 | r7 = sb << 2;
0x0000ad40 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000ad44 mov r0, r7 | r0 = r7;
0x0000ad48 ldr r3, [r3] | r3 = *(0xb148);
0x0000ad4c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000ad50 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0000ad54 subne r3, r4, 4 | r3 = r4 - 4;
| }
| if (r4 != r0) {
0x0000ad58 beq 0xae20 |
| label_14:
0x0000ad5c cmp r6, 0 |
| if (r6 != 0) {
0x0000ad60 bne 0xb128 | goto label_17;
| }
0x0000ad64 ldr r3, [pc, 0x3e4] | r3 = *(0xb14c);
0x0000ad68 mov r2, 4 | r2 = 4;
0x0000ad6c add r3, pc, r3 | r3 = pc + r3;
0x0000ad70 mov r1, sb | r1 = sb;
0x0000ad74 mov r0, r4 | r0 = r4;
0x0000ad78 bl 0x5784 | qsort ();
0x0000ad7c mov r3, r4 | r3 = r4;
0x0000ad80 ldr r6, [r3], 4 | r6 = *(r3);
| r3 += 4;
0x0000ad84 add r7, r4, r7 | r7 = r4 + r7;
| label_15:
0x0000ad88 cmp r7, r3 |
| if (r7 != r3) {
0x0000ad8c bne 0xb134 | goto label_18;
| }
0x0000ad90 ldr r3, [r7, -4] | r3 = *((r7 - 4));
0x0000ad94 mov r2, 0 | r2 = 0;
0x0000ad98 str r2, [r3] | *(r3) = r2;
0x0000ad9c ldr r3, [pc, 0x3b0] |
0x0000ada0 mov r0, r4 | r0 = r4;
0x0000ada4 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000ada8 ldr r3, [r3] | r3 = *(0xb150);
0x0000adac blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000adb0 b 0xae2c |
| } else {
0x0000adb4 ldrd r2, r3, [r4, 0x18] | __asm ("ldrd r2, r3, [r4, 0x18]");
0x0000adb8 orrs r1, r2, r3 | r1 = r2 | r3;
| if (r1 != r2) {
0x0000adbc beq 0xadd0 |
0x0000adc0 ldrd r0, r1, [sp, 0x20] | __asm ("ldrd r0, r1, [var_20h]");
0x0000adc4 cmp r0, r2 |
0x0000adc8 sbcs r3, r1, r3 | __asm ("sbcs r3, r1, r3");
| if (r0 >= r2) {
0x0000adcc bge 0xae68 | goto label_2;
| }
| }
0x0000add0 ldrb r7, [r4, 0x30] | r7 = *((r4 + 0x30));
0x0000add4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000add8 eor r7, r7, 1 | r7 ^= 1;
0x0000addc orrs r7, r3, r7 | r7 = r3 | r7;
| if (r7 == r3) {
0x0000ade0 beq 0xae68 | goto label_2;
| }
0x0000ade4 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x0000ade8 cmp r0, 0 |
| if (r0 != 0) {
0x0000adec bne 0xae38 | goto label_19;
| }
| label_0:
0x0000adf0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000adf4 cmp r3, 0 |
0x0000adf8 str r3, [sp, 4] | s1 = r3;
| if (r3 != 0) {
0x0000adfc bne 0xae9c | goto label_20;
| }
| label_3:
0x0000ae00 ldr r0, [pc, 0xd] | r0 = *(0xae11);
0x0000ae04 mov r1, 1 | r1 = 1;
0x0000ae08 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000ae0c mov r0, 0x38 | r0 = 0x38;
0x0000ae10 ldr r3, [r3] | r3 = *(r3);
0x0000ae14 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0000ae18 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x0000ae1c bne 0xaf88 | goto label_21;
| }
| }
| label_5:
0x0000ae20 mov r0, r6 | r0 = r6;
0x0000ae24 bl 0xac7c | Curl_cookie_freelist ();
0x0000ae28 mov r6, 0 | r6 = 0;
| }
| label_16:
0x0000ae2c mov r0, r6 | r0 = r6;
0x0000ae30 add sp, sp, 0x2c |
0x0000ae34 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_19:
0x0000ae38 ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0000ae3c ldr r2, [sp, 8] | r2 = var_8h;
0x0000ae40 eor r3, r3, 1 | r3 ^= 1;
0x0000ae44 orr r3, r2, r3 | r3 = r2 | r3;
0x0000ae48 tst r3, 0xff |
| if ((r3 & 0xff) == 0) {
0x0000ae4c beq 0xae70 | goto label_22;
| }
| label_1:
0x0000ae50 ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0000ae54 ldr r2, [sp, 8] | r2 = var_8h;
0x0000ae58 eor r3, r3, 1 | r3 ^= 1;
0x0000ae5c orr r3, r2, r3 | r3 = r2 | r3;
0x0000ae60 tst r3, 0xff |
| if ((r3 & 0xff) != 0) {
0x0000ae64 bne 0xae84 | goto label_23;
| }
| label_2:
0x0000ae68 ldr r4, [r4] | r4 = *(r4);
0x0000ae6c b 0xad28 |
| } while (1);
| label_22:
0x0000ae70 mov r1, fp | r1 = fp;
0x0000ae74 bl 0x9b3c | r0 = tailmatch ();
0x0000ae78 cmp r0, 0 |
| if (r0 != 0) {
0x0000ae7c bne 0xadf0 | goto label_0;
| }
0x0000ae80 b 0xae50 | goto label_1;
| label_23:
0x0000ae84 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x0000ae88 mov r0, fp | r0 = fp;
0x0000ae8c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000ae90 cmp r0, 0 |
| if (r0 != 0) {
0x0000ae94 bne 0xadf0 | goto label_0;
| }
0x0000ae98 b 0xae68 | goto label_2;
| label_20:
0x0000ae9c ldr r0, [sp, 4] | r0 = s1;
0x0000aea0 bl 0x5250 | r0 = strlen (r0);
0x0000aea4 cmp r0, 1 |
0x0000aea8 mov sl, r0 | sl = r0;
| if (r0 == 1) {
0x0000aeac beq 0xae00 | goto label_3;
| }
0x0000aeb0 ldr r3, [pc, 0x2a4] |
0x0000aeb4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000aeb8 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000aebc str r3, [sp, 0xc] | var_ch = r3;
0x0000aec0 ldr r3, [r3] | r3 = *(0xb158);
0x0000aec4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000aec8 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000aecc beq 0xae68 | goto label_2;
| }
0x0000aed0 mov r1, 0x3f | r1 = 0x3f;
0x0000aed4 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000aed8 cmp r0, 0 |
| if (r0 == 0) {
0x0000aedc movne r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x0000aee0 strbne r3, [r0] | *(r0) = r3;
| }
0x0000aee4 ldr r3, [pc, 0x268] |
0x0000aee8 ldrb r2, [r8] | r2 = *(r8);
0x0000aeec ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000aef0 cmp r2, 0x2f |
0x0000aef4 str r3, [sp, 0x10] | var_10h = r3;
0x0000aef8 ldr r3, [r3] | r3 = *(0xb150);
| if (r2 == 0x2f) {
0x0000aefc beq 0xaf20 | goto label_24;
| }
0x0000af00 mov r0, r8 | r0 = r8;
0x0000af04 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x0000af08 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000af0c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000af10 ldr r3, [r3] | r3 = *(r3);
0x0000af14 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000af18 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000af1c beq 0xae68 | goto label_2;
| }
| label_24:
0x0000af20 mov r0, r8 | r0 = r8;
0x0000af24 bl 0x5250 | r0 = strlen (r0);
0x0000af28 cmp sl, r0 |
0x0000af2c str r0, [sp, 0xc] | var_ch = r0;
| if (sl > r0) {
0x0000af30 bhi 0xaf80 | goto label_25;
| }
0x0000af34 mov r2, sl | r2 = sl;
0x0000af38 mov r1, r8 | r1 = r8;
0x0000af3c ldr r0, [sp, 4] | r0 = s1;
0x0000af40 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x0000af44 cmp r0, 0 |
| if (r0 != 0) {
0x0000af48 bne 0xaf80 | goto label_25;
| }
0x0000af4c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000af50 cmp sl, r3 |
| if (sl == r3) {
0x0000af54 ldrbne r7, [r8, sl] | r7 = *((r8 + sl));
| }
| if (sl == r3) {
0x0000af58 subne r7, r7, 0x2f | r7 -= 0x2f;
| }
0x0000af5c clzne r7, r7 | __asm ("clzne r7, r7");
| if (sl == r3) {
0x0000af60 lsrne r7, r7, 5 | r7 >>= 5;
| }
| label_4:
0x0000af64 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000af68 mov r0, r8 | r0 = r8;
0x0000af6c ldr r3, [r3] | r3 = *(r3);
0x0000af70 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000af74 cmp r7, 0 |
| if (r7 != 0) {
0x0000af78 bne 0xae00 | goto label_3;
| }
0x0000af7c b 0xae68 | goto label_2;
| label_25:
0x0000af80 mov r7, 0 | r7 = 0;
0x0000af84 b 0xaf64 | goto label_4;
| label_21:
0x0000af88 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x0000af8c cmp r0, 0 |
0x0000af90 bne 0xb020 |
| while (r0 != 0) {
0x0000af94 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x0000af98 cmp r0, 0 |
| if (r0 != 0) {
0x0000af9c bne 0xb048 | goto label_26;
| }
| label_6:
0x0000afa0 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000afa4 cmp r0, 0 |
| if (r0 != 0) {
0x0000afa8 bne 0xb068 | goto label_27;
| }
| label_8:
0x0000afac ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0000afb0 cmp r0, 0 |
| if (r0 != 0) {
0x0000afb4 bne 0xb088 | goto label_28;
| }
| label_9:
0x0000afb8 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000afbc cmp r0, 0 |
| if (r0 != 0) {
0x0000afc0 bne 0xb0a8 | goto label_29;
| }
| label_10:
0x0000afc4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000afc8 cmp r0, 0 |
| if (r0 != 0) {
0x0000afcc bne 0xb0c8 | goto label_30;
| }
| label_11:
0x0000afd0 ldr r0, [r4, 0x2c] | r0 = *((r4 + 0x2c));
0x0000afd4 cmp r0, 0 |
| if (r0 != 0) {
0x0000afd8 bne 0xb0e8 | goto label_31;
| }
| label_12:
0x0000afdc ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0000afe0 cmp r0, 0 |
| if (r0 != 0) {
0x0000afe4 bne 0xb108 | goto label_32;
| }
| label_13:
0x0000afe8 ldrd r2, r3, [r4, 0x18] | __asm ("ldrd r2, r3, [r4, 0x18]");
0x0000afec add sb, sb, 1 | sb++;
0x0000aff0 strd r2, r3, [r7, 0x18] | __asm ("strd r2, r3, [r7, 0x18]");
0x0000aff4 ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0000aff8 strb r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
0x0000affc ldrb r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0000b000 strb r3, [r7, 0x30] | *((r7 + 0x30)) = r3;
0x0000b004 ldrb r3, [r4, 0x31] | r3 = *((r4 + 0x31));
0x0000b008 strb r3, [r7, 0x31] | *((r7 + 0x31)) = r3;
0x0000b00c ldrb r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x0000b010 str r6, [r7] | *(r7) = r6;
0x0000b014 strb r3, [r7, 0x32] | *((r7 + 0x32)) = r3;
0x0000b018 mov r6, r7 | r6 = r7;
0x0000b01c b 0xae68 | goto label_2;
0x0000b020 ldr r3, [pc, 0x134] |
0x0000b024 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b028 ldr r3, [r3] | r3 = *(0xb158);
0x0000b02c blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b030 cmp r0, 0 |
0x0000b034 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x0000b038 bne 0xaf94 |
| }
| label_7:
0x0000b03c mov r0, r7 | r0 = r7;
0x0000b040 bl 0x99c8 | freecookie ();
0x0000b044 b 0xae20 | goto label_5;
| label_26:
0x0000b048 ldr r3, [pc, 0x10c] |
0x0000b04c ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b050 ldr r3, [r3] | r3 = *(0xb158);
0x0000b054 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b058 cmp r0, 0 |
0x0000b05c str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
| if (r0 != 0) {
0x0000b060 bne 0xafa0 | goto label_6;
| }
0x0000b064 b 0xb03c | goto label_7;
| label_27:
0x0000b068 ldr r3, [pc, 0xec] |
0x0000b06c ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b070 ldr r3, [r3] | r3 = *(0xb158);
0x0000b074 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b078 cmp r0, 0 |
0x0000b07c str r0, [r7, 0xc] | *((r7 + 0xc)) = r0;
| if (r0 != 0) {
0x0000b080 bne 0xafac | goto label_8;
| }
0x0000b084 b 0xb03c | goto label_7;
| label_28:
0x0000b088 ldr r3, [pc, 0xcc] |
0x0000b08c ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b090 ldr r3, [r3] | r3 = *(0xb158);
0x0000b094 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b098 cmp r0, 0 |
0x0000b09c str r0, [r7, 0x10] | *((r7 + 0x10)) = r0;
| if (r0 != 0) {
0x0000b0a0 bne 0xafb8 | goto label_9;
| }
0x0000b0a4 b 0xb03c | goto label_7;
| label_29:
0x0000b0a8 ldr r3, [pc, 0xac] |
0x0000b0ac ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b0b0 ldr r3, [r3] | r3 = *(0xb158);
0x0000b0b4 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b0b8 cmp r0, 0 |
0x0000b0bc str r0, [r7, 4] | *((r7 + 4)) = r0;
| if (r0 != 0) {
0x0000b0c0 bne 0xafc4 | goto label_10;
| }
0x0000b0c4 b 0xb03c | goto label_7;
| label_30:
0x0000b0c8 ldr r3, [pc, 0x8c] |
0x0000b0cc ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b0d0 ldr r3, [r3] | r3 = *(0xb158);
0x0000b0d4 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b0d8 cmp r0, 0 |
0x0000b0dc str r0, [r7, 8] | *((r7 + 8)) = r0;
| if (r0 != 0) {
0x0000b0e0 bne 0xafd0 | goto label_11;
| }
0x0000b0e4 b 0xb03c | goto label_7;
| label_31:
0x0000b0e8 ldr r3, [pc, 0x6c] |
0x0000b0ec ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b0f0 ldr r3, [r3] | r3 = *(0xb158);
0x0000b0f4 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b0f8 cmp r0, 0 |
0x0000b0fc str r0, [r7, 0x2c] | *((r7 + 0x2c)) = r0;
| if (r0 != 0) {
0x0000b100 bne 0xafdc | goto label_12;
| }
0x0000b104 b 0xb03c | goto label_7;
| label_32:
0x0000b108 ldr r3, [pc, 0x4c] |
0x0000b10c ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b110 ldr r3, [r3] | r3 = *(0xb158);
0x0000b114 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x0000b118 cmp r0, 0 |
0x0000b11c str r0, [r7, 0x28] | *((r7 + 0x28)) = r0;
| if (r0 != 0) {
0x0000b120 bne 0xafe8 | goto label_13;
| }
0x0000b124 b 0xb03c | goto label_7;
| label_17:
0x0000b128 str r6, [r3, 4]! | *((r3 += 4)) = r6;
0x0000b12c ldr r6, [r6] | r6 = *(r6);
0x0000b130 b 0xad5c | goto label_14;
| label_18:
0x0000b134 ldr r2, [r3, -4] | r2 = *((r3 - 4));
0x0000b138 ldr r1, [r3], 4 | r1 = *(r3);
| r3 += 4;
0x0000b13c str r1, [r2] | *(r2) = r1;
0x0000b140 b 0xad88 | goto label_15;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc1ec */
| #include <stdint.h>
|
; (fcn) sym.Curl_copy_header_value () | void Curl_copy_header_value (size_t nmeb) {
| r0 = nmeb;
0x0000c1ec push {r4, r5, r6, r7, r8, lr} |
0x0000c1f0 ldr r7, [pc, 0xdc] | r7 = *(0xc2d0);
0x0000c1f4 add r7, pc, r7 | r7 = pc + r7;
| do {
0x0000c1f8 mov r5, r0 | r5 = r0;
0x0000c1fc ldrb r3, [r0], 1 | r3 = *(r0);
| r0++;
0x0000c200 cmp r3, 0 |
0x0000c204 cmpne r3, 0x3a | __asm ("cmpne r3, 0x3a");
0x0000c208 bne 0xc1f8 |
| } while (r3 != 0);
0x0000c20c cmp r3, 0 |
| if (r3 == 0) {
0x0000c210 beq 0xc234 | goto label_2;
| }
0x0000c214 mov r4, r0 | r4 = r0;
| do {
0x0000c218 mov r5, r4 | r5 = r4;
0x0000c21c ldrb r0, [r4], 1 | r0 = *(r4);
| r4++;
0x0000c220 cmp r0, 0 |
| if (r0 == 0) {
0x0000c224 beq 0xc234 | goto label_2;
| }
0x0000c228 bl 0x2f898 | r0 = Curl_isspace ();
0x0000c22c cmp r0, 0 |
0x0000c230 bne 0xc218 |
| } while (r0 != 0);
| label_2:
0x0000c234 mov r1, 0xd | r1 = 0xd;
0x0000c238 mov r0, r5 | r0 = r5;
0x0000c23c bl 0x5b38 | r0 = strchr (r0, r1);
0x0000c240 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0000c244 bne 0xc26c |
0x0000c248 mov r1, 0xa | r1 = 0xa;
0x0000c24c mov r0, r5 | r0 = r5;
0x0000c250 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000c254 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0000c258 bne 0xc26c | goto label_0;
| }
0x0000c25c mov r0, r5 | r0 = r5;
0x0000c260 bl 0x5250 | r0 = strlen (r0);
0x0000c264 adds r4, r5, r0 | r4 = r5 + r0;
| if (r4 == r5) {
0x0000c268 beq 0xc298 | goto label_1;
| }
| }
| label_0:
0x0000c26c cmp r5, r4 |
0x0000c270 blo 0xc2a0 |
| while (r0 == 0) {
0x0000c274 ldr r3, [pc, 0x5c] |
0x0000c278 sub r4, r4, r5 | r4 -= r5;
0x0000c27c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000c280 add r6, r4, 1 | r6 = r4 + 1;
0x0000c284 ldr r3, [r3] | r3 = $d;
0x0000c288 add r0, r6, 1 | r0 = r6 + 1;
0x0000c28c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000c290 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0000c294 bne 0xc2bc | goto label_3;
| }
| label_1:
0x0000c298 mov r0, r4 | r0 = r4;
0x0000c29c pop {r4, r5, r6, r7, r8, pc} |
0x0000c2a0 ldrb r0, [r4] | r0 = *(r4);
0x0000c2a4 bl 0x2f898 | Curl_isspace ();
0x0000c2a8 sub r6, r4, 1 | r6 = r4 - 1;
0x0000c2ac cmp r0, 0 |
0x0000c2b0 beq 0xc274 |
| }
0x0000c2b4 mov r4, r6 | r4 = r6;
0x0000c2b8 b 0xc26c | goto label_0;
| label_3:
0x0000c2bc mov r2, r6 | r2 = r6;
0x0000c2c0 mov r1, r5 | r1 = r5;
0x0000c2c4 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000c2c8 mov r3, 0 | r3 = 0;
0x0000c2cc strb r3, [r4, r6] | *((r4 + r6)) = r3;
0x0000c2d0 b 0xc298 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x10424 */
| #include <stdint.h>
|
; (fcn) sym.Curl_debug () | void Curl_debug (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x00010424 push {r0, r1, r4, r5, r6, r7, r8, lr} |
0x00010428 ldr r4, [r0, 0x1a8] | r4 = *((r0 + 0x1a8));
0x0001042c mov r5, r0 | r5 = r0;
0x00010430 cmp r4, 0 |
0x00010434 mov r6, r1 | r6 = r1;
0x00010438 mov r7, r2 | r7 = r2;
0x0001043c mov r8, r3 | r8 = r3;
| if (r4 == 0) {
0x00010440 beq 0x10488 | goto label_1;
| }
0x00010444 mov r1, 1 | r1 = 1;
0x00010448 bl 0x203dc | Curl_set_in_callback ();
0x0001044c ldr r3, [r5, 0x134] | r3 = *((r5 + 0x134));
0x00010450 ldr r4, [r5, 0x1a8] | r4 = *((r5 + 0x1a8));
0x00010454 str r3, [sp] | *(sp) = r3;
0x00010458 mov r1, r6 | r1 = r6;
0x0001045c mov r3, r8 | r3 = r8;
0x00010460 mov r2, r7 | r2 = r7;
0x00010464 mov r0, r5 | r0 = r5;
0x00010468 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0001046c mov r1, 0 | r1 = 0;
0x00010470 mov r4, r0 | r4 = r0;
0x00010474 mov r0, r5 | r0 = r5;
0x00010478 bl 0x203dc | Curl_set_in_callback ();
| do {
| label_0:
0x0001047c mov r0, r4 | r0 = r4;
0x00010480 add sp, sp, 8 |
0x00010484 pop {r4, r5, r6, r7, r8, pc} |
| label_1:
0x00010488 cmp r1, 2 |
0x0001048c bhi 0x1047c |
| } while (r1 > 2);
0x00010490 ldr r3, [r0, 0x130] | r3 = *((r0 + 0x130));
0x00010494 ldr r0, [pc, 0x2c] | r0 = *(0x104c4);
0x00010498 add r6, r1, r1, lsl 1 | r6 = r1 + (r1 << 1);
0x0001049c add r0, pc, r0 | r0 = pc + r0;
0x000104a0 mov r2, 1 | r2 = 1;
0x000104a4 mov r1, 2 | r1 = 2;
0x000104a8 add r0, r0, r6 | r0 += r6;
0x000104ac bl 0x4f2c | fwrite (r0, r1, r2, r3);
0x000104b0 ldr r3, [r5, 0x130] | r3 = *((r5 + 0x130));
0x000104b4 mov r2, 1 | r2 = 1;
0x000104b8 mov r1, r8 | r1 = r8;
0x000104bc mov r0, r7 | r0 = r7;
0x000104c0 bl 0x4f2c | fwrite (r0, r1, r2, r3);
0x000104c4 b 0x1047c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x29418 */
| #include <stdint.h>
|
; (fcn) sym.Curl_dedotdotify () | void Curl_dedotdotify (int32_t arg1) {
| char * s1;
| char * var_8h;
| char * var_ch;
| char * var_10h;
| char * var_14h;
| char * var_18h;
| char * var_1ch;
| int32_t var_24h;
| r0 = arg1;
0x00029418 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002941c ldr r7, [pc, 0x288] | r7 = *(0x296a8);
0x00029420 sub sp, sp, 0x24 |
0x00029424 mov r8, r0 | r8 = r0;
0x00029428 bl 0x5250 | strlen (r0);
0x0002942c ldr r3, [pc, 0x27c] | r3 = $d;
0x00029430 add r7, pc, r7 | r7 = pc + r7;
0x00029434 ldr r3, [r7, r3] |
0x00029438 ldr r3, [r3] | r3 = *(0x296a8);
0x0002943c add r0, r0, 1 | r0++;
0x00029440 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00029444 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00029448 beq 0x29480 | goto label_0;
| }
0x0002944c ldr r3, [pc, 0x260] |
0x00029450 mov r0, r8 | r0 = r8;
0x00029454 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00029458 ldr r3, [r3] | r3 = *(0x296b0);
0x0002945c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00029460 subs r6, r0, 0 | r6 = r0 - 0;
0x00029464 bne 0x2948c |
| while (r3 == 0) {
0x00029468 ldr r3, [pc, 0x248] |
0x0002946c mov r0, r5 | r0 = r5;
0x00029470 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00029474 mov r5, r6 | r5 = r6;
0x00029478 ldr r3, [r3] | r3 = *(0x296b4);
0x0002947c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_0:
0x00029480 mov r0, r5 | r0 = r5;
0x00029484 add sp, sp, 0x24 |
0x00029488 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0002948c ldrb r3, [r6] | r3 = *(r6);
0x00029490 cmp r3, 0 |
0x00029494 beq 0x29468 |
| }
0x00029498 mov r1, 0x3f | r1 = 0x3f;
0x0002949c bl 0x5b38 | strchr (r0, r1);
0x000294a0 ldr fp, [pc, 0x214] | fp = *(0x296b8);
0x000294a4 mov r4, r5 | r4 = r5;
0x000294a8 mov sl, r6 | sl = r6;
0x000294ac add fp, pc, fp |
0x000294b0 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x000294b4 movne r3, 0 | r3 = 0;
| }
| if (sb == r0) {
0x000294b8 strbne r3, [sb] | *(sb) = r3;
| }
0x000294bc ldr r3, [pc, 0x1fc] | r3 = *(0x296bc);
0x000294c0 add r3, pc, r3 | r3 = pc + r3;
0x000294c4 str r3, [sp, 4] | s1 = r3;
0x000294c8 ldr r3, [pc, 0x1f4] | r3 = *(0x296c0);
0x000294cc add r3, pc, r3 | r3 = pc + r3;
0x000294d0 str r3, [sp, 8] | var_8h = r3;
0x000294d4 ldr r3, [pc, 0x1ec] | r3 = *(0x296c4);
0x000294d8 add r3, pc, r3 | r3 = pc + r3;
0x000294dc str r3, [sp, 0xc] | var_ch = r3;
0x000294e0 ldr r3, [pc, 0x1e4] | r3 = *(0x296c8);
0x000294e4 add r3, pc, r3 | r3 = pc + r3;
0x000294e8 str r3, [sp, 0x10] | var_10h = r3;
0x000294ec ldr r3, [pc, 0x1dc] | r3 = *(0x296cc);
0x000294f0 add r3, pc, r3 | r3 = pc + r3;
0x000294f4 str r3, [sp, 0x14] | var_14h = r3;
0x000294f8 ldr r3, [pc, 0x1d4] | r3 = *(0x296d0);
0x000294fc add r3, pc, r3 | r3 = pc + r3;
0x00029500 str r3, [sp, 0x18] | var_18h = r3;
0x00029504 ldr r3, [pc, 0x1cc] | r3 = *(0x296d4);
0x00029508 add r3, pc, r3 | r3 = pc + r3;
0x0002950c str r3, [sp, 0x1c] | var_1ch = r3;
| do {
0x00029510 mov r2, 2 | r2 = 2;
0x00029514 mov r1, sl | r1 = sl;
0x00029518 ldr r0, [sp, 4] | r0 = s1;
0x0002951c bl 0x516c | r0 = strncmp (r0, r1, r2);
0x00029520 cmp r0, 0 |
| if (r0 != 0) {
0x00029524 bne 0x29578 | goto label_5;
| }
| label_2:
0x00029528 add sl, sl, 2 | sl += 2;
| label_1:
0x0002952c ldrb r2, [sl] | r2 = *(sl);
0x00029530 cmp r2, 0 |
0x00029534 bne 0x29510 |
| } while (r2 != 0);
0x00029538 cmp sb, 0 |
| if (sb != 0) {
0x0002953c beq 0x29560 |
0x00029540 sub sb, sb, r6 | sb -= r6;
0x00029544 add r8, r8, sb | r8 += sb;
0x00029548 mov r0, r8 | r0 = r8;
0x0002954c bl 0x5250 | strlen (r0);
0x00029550 mov r1, r8 | r1 = r8;
0x00029554 add r2, r0, 1 | r2 = r0 + 1;
0x00029558 mov r0, r4 | r0 = r4;
0x0002955c bl 0x4f5c | memcpy (r0, r1, r2);
| }
0x00029560 ldr r3, [pc, 0x150] |
0x00029564 mov r0, r6 | r0 = r6;
0x00029568 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002956c ldr r3, [r3] | r3 = *(0x296b4);
0x00029570 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00029574 b 0x29480 | goto label_0;
| label_5:
0x00029578 mov r1, sl | r1 = sl;
0x0002957c mov r2, 3 | r2 = 3;
0x00029580 ldr r0, [sp, 8] | r0 = var_8h;
0x00029584 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x00029588 cmp r0, 0 |
| if (r0 == 0) {
0x0002958c addeq sl, sl, 3 | sl += 3;
| goto label_6;
| }
| if (r0 == 0) {
| label_6:
0x00029590 beq 0x2952c | goto label_1;
| }
0x00029594 mov r2, 3 | r2 = 3;
0x00029598 mov r1, sl | r1 = sl;
0x0002959c ldr r0, [sp, 0xc] | r0 = var_ch;
0x000295a0 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x000295a4 cmp r0, 0 |
| if (r0 == 0) {
0x000295a8 beq 0x29528 | goto label_2;
| }
0x000295ac mov r1, sl | r1 = sl;
0x000295b0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000295b4 bl 0x5a30 | r0 = strcmp (r0, r1);
0x000295b8 cmp r0, 0 |
| if (r0 != 0) {
0x000295bc moveq r2, 0x2f | r2 = 0x2f;
| }
| if (r0 == 0) {
0x000295c0 strbeq r2, [sl, 1]! | *((sl += 1)) = r2;
| goto label_7;
| }
| if (r0 == 0) {
| label_7:
0x000295c4 beq 0x2952c | goto label_1;
| }
0x000295c8 mov r1, sl | r1 = sl;
0x000295cc mov r2, 4 | r2 = 4;
0x000295d0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000295d4 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x000295d8 cmp r0, 0 |
| if (r0 != 0) {
0x000295dc addeq sl, sl, 3 | sl += 3;
| }
| if (r0 == 0) {
0x000295e0 beq 0x29644 | goto label_8;
| }
0x000295e4 mov r1, sl | r1 = sl;
0x000295e8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000295ec bl 0x5a30 | r0 = strcmp (r0, r1);
0x000295f0 cmp r0, 0 |
| if (r0 != 0) {
0x000295f4 moveq r2, 0x2f | r2 = 0x2f;
| }
| if (r0 != 0) {
0x000295f8 strbeq r2, [sl, 2]! | *((sl += 2)) = r2;
| }
| if (r0 == 0) {
0x000295fc beq 0x29664 | goto label_9;
| }
0x00029600 mov r1, sl | r1 = sl;
0x00029604 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00029608 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0002960c cmp r0, 0 |
| if (r0 != 0) {
0x00029610 beq 0x29628 |
0x00029614 mov r1, sl | r1 = sl;
0x00029618 mov r0, fp | r0 = fp;
0x0002961c bl 0x5a30 | r0 = strcmp (r0, r1);
0x00029620 cmp r0, 0 |
| if (r0 != 0) {
0x00029624 bne 0x29670 | goto label_10;
| }
| }
0x00029628 mov r2, 0 | r2 = 0;
0x0002962c strb r2, [sl] | *(sl) = r2;
0x00029630 strb r2, [r5] | *(r5) = r2;
0x00029634 b 0x2952c | goto label_1;
| do {
0x00029638 ldrb r2, [r4, -1]! | r2 = *((r4 -= 1));
0x0002963c cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x00029640 beq 0x2964c | goto label_4;
| }
| label_8:
0x00029644 cmp r4, r5 |
0x00029648 bhi 0x29638 |
| } while (r4 > r5);
| do {
| label_4:
0x0002964c mov r2, 0 | r2 = 0;
0x00029650 strb r2, [r4] | *(r4) = r2;
0x00029654 b 0x2952c | goto label_1;
| label_3:
0x00029658 ldrb r2, [r4, -1]! | r2 = *((r4 -= 1));
0x0002965c cmp r2, 0x2f |
0x00029660 beq 0x2964c |
| } while (r2 == 0x2f);
| label_9:
0x00029664 cmp r4, r5 |
| if (r4 > r5) {
0x00029668 bhi 0x29658 | goto label_3;
| }
0x0002966c b 0x2964c | goto label_4;
| label_10:
0x00029670 add ip, sl, 1 |
| do {
0x00029674 ldrb r2, [ip, -1] | r2 = *((ip - 1));
0x00029678 mov r1, r4 | r1 = r4;
0x0002967c strb r2, [r4], 1 | *(r4) = r2;
| r4++;
0x00029680 ldrb r0, [ip] | r0 = *(ip);
0x00029684 mov sl, ip | sl = ip;
0x00029688 subs r2, r0, 0x2f | r2 = r0 - 0x2f;
| if (r2 == r0) {
0x0002968c movne r2, 1 | r2 = 1;
| }
0x00029690 cmp r0, 0 |
| if (r0 != 0) {
0x00029694 moveq r2, 0 | r2 = 0;
| }
0x00029698 cmp r2, 0 |
0x0002969c add ip, ip, 1 |
0x000296a0 bne 0x29674 |
| } while (r2 != 0);
0x000296a4 strb r2, [r1, 1] | *((r1 + 1)) = r2;
0x000296a8 b 0x2952c | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1e348 */
| #include <stdint.h>
|
; (fcn) sym.Curl_expire () | void Curl_expire (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| void * s2;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x0001e348 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001e34c ldr r6, [r0, 0x64] | r6 = *((r0 + 0x64));
0x0001e350 sub sp, sp, 0x14 |
0x0001e354 cmp r6, 0 |
| if (r6 == 0) {
0x0001e358 beq 0x1e4d4 | goto label_1;
| }
0x0001e35c add r5, sp, 8 | r5 += s2;
0x0001e360 mov r4, r0 | r4 = r0;
0x0001e364 mov sb, r1 | sb = r1;
0x0001e368 mov r0, r5 | r0 = r5;
0x0001e36c mov r7, r2 | r7 = r2;
0x0001e370 bl 0x69f0 | Curl_now ();
0x0001e374 mov r1, 0x3e8 | r1 = 0x3e8;
0x0001e378 mov r0, sb | r0 = sb;
0x0001e37c bl 0x37f24 | divsi3 ();
0x0001e380 ldr r8, [sp, 8] | r8 = s2;
0x0001e384 mov r1, 0x3e8 | r1 = 0x3e8;
0x0001e388 add sl, r4, 0x4800 | sl = r4 + 0x4800;
0x0001e38c add fp, sl, 0xd0 |
0x0001e390 add r8, r0, r8 | r8 = r0 + r8;
0x0001e394 mov r0, sb | r0 = sb;
0x0001e398 str r8, [sp, 8] | s2 = r8;
0x0001e39c bl 0x38000 | aeabi_idivmod ();
0x0001e3a0 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001e3a4 mov r3, 0x3e8 | r3 = 0x3e8;
0x0001e3a8 mla r0, r3, r1, r2 | __asm ("mla r0, r3, r1, r2");
0x0001e3ac ldr r3, [pc, 0x154] | r3 = *(0x1e504);
0x0001e3b0 str r0, [sp, 0xc] | var_ch = r0;
0x0001e3b4 cmp r0, r3 |
| if (r0 <= r3) {
0x0001e3b8 addgt r8, r8, 1 | r8++;
| }
| if (r0 <= r3) {
0x0001e3bc strgt r8, [sp, 8] | s2 = r8;
| }
0x0001e3c0 mov r8, 0x18 | r8 = 0x18;
| if (r0 <= r3) {
0x0001e3c4 subgt r1, r0, 0xf4000 | r1 = r0 - 0xf4000;
| }
0x0001e3c8 mul sb, r7, r8 | sb = r7 * r8;
| if (r0 <= r3) {
0x0001e3cc subgt r1, r1, 0x240 | r1 -= 0x240;
| }
| if (r0 <= r3) {
0x0001e3d0 strgt r1, [sp, 0xc] | var_ch = r1;
| }
0x0001e3d4 mov r0, r4 | r0 = r4;
0x0001e3d8 mov r1, r7 | r1 = r7;
0x0001e3dc bl 0x1d32c | multi_deltimeout ();
0x0001e3e0 add r0, sb, 0x4800 | r0 = sb + 0x4800;
0x0001e3e4 add r3, r0, 0xe0 | r3 = r0 + 0xe0;
0x0001e3e8 add r8, r4, sb | r8 = r4 + sb;
0x0001e3ec add r0, r0, 0xec | r0 += 0xec;
0x0001e3f0 add r3, r4, r3 | r3 = r4 + r3;
0x0001e3f4 mov r2, 8 | r2 = 8;
0x0001e3f8 mov r1, r5 | r1 = r5;
0x0001e3fc add r8, r8, 0x4800 | r8 += 0x4800;
0x0001e400 add r0, r4, r0 | r0 = r4 + r0;
0x0001e404 str r3, [sp] | *(sp) = r3;
0x0001e408 bl 0x4f5c | memcpy (r0, r1, r2);
0x0001e40c str r7, [r8, 0xf4] | *((r8 + 0xf4)) = r7;
0x0001e410 mov r0, fp | r0 = fp;
0x0001e414 bl 0x1cd30 | Curl_llist_count ();
0x0001e418 add r7, r4, 0x4000 | r7 = r4 + 0x4000;
0x0001e41c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0001e420 beq 0x1e440 | goto label_2;
| }
0x0001e424 ldr r3, [sp] | r3 = *(sp);
0x0001e428 ldr sb, [r7, 0x8d0] | sb = *((r7 + 0x8d0));
0x0001e42c add r3, r3, 0xc | r3 += 0xc;
0x0001e430 mov r8, 0 | r8 = 0;
0x0001e434 str r3, [sp, 4] | var_4h = r3;
| label_0:
0x0001e438 cmp sb, 0 |
0x0001e43c bne 0x1e4dc |
| while (r0 > 0) {
| label_2:
0x0001e440 ldr r3, [sp] | r3 = *(sp);
0x0001e444 mov r1, r8 | r1 = r8;
0x0001e448 mov r2, r3 | r2 = r3;
0x0001e44c mov r0, fp | r0 = fp;
0x0001e450 bl 0x1cbfc | Curl_llist_insert_next ();
0x0001e454 ldr r3, [r7, 0x8ac] | r3 = *((r7 + 0x8ac));
0x0001e458 add sb, sl, 0xac | sb = sl + 0xac;
0x0001e45c cmp r3, 0 |
| if (r3 == 0) {
0x0001e460 bne 0x1e470 |
0x0001e464 ldr r3, [r7, 0x8b0] | r3 = *((r7 + 0x8b0));
0x0001e468 cmp r3, 0 |
| if (r3 == 0) {
0x0001e46c beq 0x1e4ac | goto label_3;
| }
| }
0x0001e470 ldm sb, {r2, r3} | r2 = *(sb);
| r3 = *((sb + 4));
0x0001e474 ldm r5, {r0, r1} | r0 = *(r5);
| r1 = *((r5 + 4));
0x0001e478 bl 0x6a20 | r0 = Curl_timediff ();
0x0001e47c cmp r0, 0 |
| if (r0 <= 0) {
0x0001e480 bgt 0x1e4d4 |
0x0001e484 add r2, r6, 0x5c | r2 = r6 + 0x5c;
0x0001e488 add r1, sl, 0xb4 | r1 = sl + 0xb4;
0x0001e48c ldr r0, [r6, 0x5c] | r0 = *((r6 + 0x5c));
0x0001e490 bl 0x23854 | r0 = Curl_splayremovebyaddr ();
0x0001e494 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 != r0) {
0x0001e498 beq 0x1e4ac |
0x0001e49c ldr r1, [pc, 0x68] | r1 = $d;
0x0001e4a0 mov r0, r4 | r0 = r4;
0x0001e4a4 add r1, pc, r1 | r1 = pc + r1;
0x0001e4a8 bl 0x104cc | r0 = Curl_infof ();
| }
| label_3:
0x0001e4ac ldm r5, {r0, r1} | r0 = *(r5);
| r1 = *((r5 + 4));
0x0001e4b0 ldr r2, [r6, 0x5c] | r2 = *((r6 + 0x5c));
0x0001e4b4 add r3, r7, 0x8a0 | r3 = r7 + 0x8a0;
0x0001e4b8 add r3, r3, 0xc | r3 += 0xc;
0x0001e4bc stm r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x0001e4c0 str r4, [r7, 0x8cc] | *((r7 + 0x8cc)) = r4;
0x0001e4c4 add r3, sl, 0xb4 | r3 = sl + 0xb4;
0x0001e4c8 ldm sb, {r0, r1} | r0 = *(sb);
| r1 = *((sb + 4));
0x0001e4cc bl 0x236b0 | Curl_splayinsert ();
0x0001e4d0 str r0, [r6, 0x5c] | *((r6 + 0x5c)) = r0;
| }
| label_1:
0x0001e4d4 add sp, sp, 0x14 |
0x0001e4d8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0001e4dc ldr r1, [sb] | r1 = *(sb);
0x0001e4e0 ldr r3, [sp, 4] | r3 = var_4h;
0x0001e4e4 add r1, r1, 0xc | r1 += 0xc;
0x0001e4e8 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x0001e4ec ldm r1, {r0, r1} | r0 = *(r1);
| r1 = *((r1 + 4));
0x0001e4f0 bl 0x6a20 | r0 = Curl_timediff ();
0x0001e4f4 cmp r0, 0 |
0x0001e4f8 bgt 0x1e440 |
| }
0x0001e4fc mov r8, sb | r8 = sb;
0x0001e500 ldr sb, [sb, 8] | sb = *((sb + 8));
0x0001e504 b 0x1e438 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1eb2c */
| #include <stdint.h>
|
; (fcn) sym.Curl_expire_done () | void Curl_expire_done (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001eb2c b 0x1d32c | return void (*0x1d32c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1eb30 */
| #include <stdint.h>
|
; (fcn) sym.Curl_expire_clear () | void Curl_expire_clear (int32_t arg1) {
| r0 = arg1;
0x0001eb30 ldr r3, [r0, 0x64] | r3 = *((r0 + 0x64));
0x0001eb34 cmp r3, 0 |
| if (r3 != 0) {
0x0001eb38 bxeq lr | return;
| }
0x0001eb3c push {r4, r5, r6, lr} |
0x0001eb40 add r4, r0, 0x4000 | r4 = r0 + 0x4000;
0x0001eb44 ldr r2, [r4, 0x8ac] | r2 = *((r4 + 0x8ac));
0x0001eb48 cmp r2, 0 |
| if (r2 == 0) {
0x0001eb4c bne 0x1eb5c |
0x0001eb50 ldr r2, [r4, 0x8b0] | r2 = *((r4 + 0x8b0));
0x0001eb54 cmp r2, 0 |
0x0001eb58 popeq {r4, r5, r6, pc} |
| }
0x0001eb5c add r1, r0, 0x4800 | r1 = r0 + 0x4800;
0x0001eb60 add r2, r3, 0x5c | r2 = r3 + 0x5c;
0x0001eb64 mov r5, r0 | r5 = r0;
0x0001eb68 add r6, r1, 0xd0 | r6 = r1 + 0xd0;
0x0001eb6c ldr r0, [r3, 0x5c] | r0 = *((r3 + 0x5c));
0x0001eb70 add r1, r1, 0xb4 | r1 += 0xb4;
0x0001eb74 bl 0x23854 | r0 = Curl_splayremovebyaddr ();
0x0001eb78 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 == r0) {
0x0001eb7c beq 0x1eb90 | goto label_0;
| }
0x0001eb80 ldr r1, [pc, 0x34] | r1 = *(0x1ebb8);
0x0001eb84 mov r0, r5 | r0 = r5;
0x0001eb88 add r1, pc, r1 | r1 = pc + r1;
0x0001eb8c bl 0x104cc | Curl_infof ();
| do {
| label_0:
0x0001eb90 ldr r3, [r4, 0x8dc] | r3 = *((r4 + 0x8dc));
0x0001eb94 cmp r3, 0 |
| if (r3 == 0) {
0x0001eb98 bne 0x1eba8 |
0x0001eb9c str r3, [r4, 0x8ac] | *((r4 + 0x8ac)) = r3;
0x0001eba0 str r3, [r4, 0x8b0] | *((r4 + 0x8b0)) = r3;
0x0001eba4 pop {r4, r5, r6, pc} |
| }
0x0001eba8 mov r2, 0 | r2 = 0;
0x0001ebac ldr r1, [r4, 0x8d4] | r1 = *((r4 + 0x8d4));
0x0001ebb0 mov r0, r6 | r0 = r6;
0x0001ebb4 bl 0x1cc64 | Curl_llist_remove ();
0x0001ebb8 b 0x1eb90 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x195bc */
| #include <stdint.h>
|
; (fcn) sym.Curl_follow () | void Curl_follow (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_17h;
| int32_t var_18h;
| int32_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x000195bc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000195c0 ldr r8, [pc, 0x4dc] | r8 = *(0x19aa0);
0x000195c4 cmp r2, 3 |
0x000195c8 add r8, pc, r8 | r8 = pc + r8;
0x000195cc sub sp, sp, 0x2c |
0x000195d0 mov r4, r0 | r4 = r0;
0x000195d4 mov r5, r1 | r5 = r1;
0x000195d8 mov fp, r2 |
| if (r2 != 3) {
0x000195dc bne 0x19678 | goto label_8;
| }
0x000195e0 ldr r2, [r0, 0x164] | r2 = *((r0 + 0x164));
0x000195e4 ldr r3, [r0, 0x160] | r3 = *((r0 + 0x160));
0x000195e8 cmn r2, 1 |
0x000195ec mov r7, 1 | r7 = 1;
| if (r2 != 1) {
0x000195f0 beq 0x195fc |
0x000195f4 cmp r2, r3 |
| if (r2 <= r3) {
0x000195f8 ble 0x19784 | goto label_9;
| }
| }
0x000195fc add r2, r4, 0x4000 | r2 = r4 + 0x4000;
0x00019600 strb r7, [r2, 0x7e0] | *((r2 + 0x7e0)) = r7;
0x00019604 ldrb r7, [r4, 0x4cf] | r7 = *((r4 + 0x4cf));
0x00019608 add r3, r3, 1 | r3++;
0x0001960c cmp r7, 0 |
0x00019610 str r3, [r4, 0x160] | *((r4 + 0x160)) = r3;
| if (r7 == 0) {
0x00019614 beq 0x1967c | goto label_0;
| }
0x00019618 ldrb r3, [r4, 0x684] | r3 = *((r4 + 0x684));
0x0001961c cmp r3, 0 |
| if (r3 != 0) {
0x00019620 beq 0x19644 |
0x00019624 ldr r3, [pc, 0x47c] |
0x00019628 ldr r0, [r4, 0x680] | r0 = *((r4 + 0x680));
0x0001962c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00019630 ldr r3, [r3] | r3 = $d;
0x00019634 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00019638 mov r3, 0 | r3 = 0;
0x0001963c str r3, [r4, 0x680] | *((r4 + 0x680)) = r3;
0x00019640 strb r3, [r4, 0x684] | *((r4 + 0x684)) = r3;
| }
0x00019644 ldr r3, [pc, 0x460] |
0x00019648 ldr r0, [r4, 0x678] | r0 = *((r4 + 0x678));
0x0001964c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00019650 ldr r3, [r3] | r3 = *(0x19aa8);
0x00019654 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00019658 cmp r0, 0 |
| if (r0 == 0) {
0x0001965c movne r3, 1 | r3 = 1;
| }
0x00019660 str r0, [r4, 0x680] | *((r4 + 0x680)) = r0;
| if (r0 == 0) {
0x00019664 strbne r3, [r4, 0x684] | *((r4 + 0x684)) = r3;
| }
0x00019668 bne 0x19678 |
| while (sl == r0) {
| label_2:
0x0001966c mov r0, 0x1b | r0 = 0x1b;
| label_4:
0x00019670 add sp, sp, 0x2c |
0x00019674 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00019678 mov r7, 0 | r7 = 0;
| label_0:
0x0001967c ldr r1, [pc, 0x42c] | r1 = *(0x19aac);
0x00019680 add r3, sp, 0x17 | r3 += var_17h;
0x00019684 add r2, sp, 0x18 | r2 += var_18h;
0x00019688 add r1, pc, r1 | r1 = pc + r1;
0x0001968c mov r0, r5 | r0 = r5;
0x00019690 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x00019694 cmp r0, 2 |
| if (r0 == 2) {
0x00019698 beq 0x19934 | goto label_10;
| }
0x0001969c ldr r3, [pc, 0x408] |
0x000196a0 ldr r0, [r4, 0x678] | r0 = *((r4 + 0x678));
0x000196a4 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000196a8 ldr r3, [r3] | r3 = *(0x19aa8);
0x000196ac blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000196b0 subs sl, r0, 0 | sl = r0 - 0;
0x000196b4 beq 0x1966c |
| }
0x000196b8 ldr r1, [pc, 0x3f4] | r1 = *(0x19ab0);
0x000196bc add r1, pc, r1 | r1 = pc + r1;
0x000196c0 bl 0x5a18 | strstr (r0, r1);
0x000196c4 ldrb r1, [r5] | r1 = *(r5);
0x000196c8 cmp r0, 0 |
| if (r0 == 0) {
0x000196cc addne r6, r0, 2 | r6 = r0 + 2;
| }
| if (r0 != 0) {
0x000196d0 moveq r6, sl | r6 = sl;
| }
0x000196d4 cmp r1, 0x2f |
| if (r1 == 0x2f) {
0x000196d8 beq 0x19834 | goto label_11;
| }
0x000196dc mov r1, 0x3f | r1 = 0x3f;
0x000196e0 mov r0, r6 | r0 = r6;
0x000196e4 bl 0x5b38 | r0 = strchr (r0, r1);
0x000196e8 cmp r0, 0 |
| if (r0 == 0) {
0x000196ec movne r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x000196f0 strbne r3, [r0] | *(r0) = r3;
| }
0x000196f4 ldrb r3, [r5] | r3 = *(r5);
0x000196f8 cmp r3, 0x3f |
| if (r3 != 0x3f) {
0x000196fc beq 0x19718 |
0x00019700 mov r1, 0x2f | r1 = 0x2f;
0x00019704 mov r0, r6 | r0 = r6;
0x00019708 bl 0x5160 | r0 = strrchr (r0, r1);
0x0001970c cmp r0, 0 |
| if (r0 == 0) {
0x00019710 movne r3, 0 | r3 = 0;
| }
| if (r0 != 0) {
0x00019714 strbne r3, [r0] | *(r0) = r3;
| goto label_12;
| }
| }
| label_12:
0x00019718 mov r0, r6 | r0 = r6;
0x0001971c mov r1, 0x2f | r1 = 0x2f;
0x00019720 bl 0x5b38 | strchr (r0, r1);
0x00019724 ldrb r3, [r5] | r3 = *(r5);
0x00019728 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0001972c addne r6, r6, 1 | r6++;
| }
0x00019730 cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x00019734 movne sb, 0 | sb = 0;
| }
| if (r3 != 0x2e) {
0x00019738 bne 0x19770 | goto label_13;
| }
0x0001973c ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00019740 mov sb, 0 | sb = 0;
0x00019744 cmp r3, 0x2f |
0x00019748 addeq r5, r5, 2 | r5 += 2;
| while (1) {
0x0001974c ldrb r3, [r5] | r3 = *(r5);
0x00019750 cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x00019754 bne 0x19770 |
0x00019758 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0001975c cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x00019760 bne 0x19770 | goto label_13;
| }
0x00019764 ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x00019768 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0001976c beq 0x1978c | goto label_14;
| }
| }
| label_13:
0x00019770 cmp r6, 0 |
| if (r6 == 0) {
0x00019774 movne r3, 0 | r3 = 0;
| }
| if (r6 != 0) {
0x00019778 bne 0x197b8 | goto label_15;
| }
| label_1:
0x0001977c mov r0, 0 | r0 = 0;
0x00019780 b 0x197c8 | goto label_3;
| label_9:
0x00019784 mov fp, r7 |
0x00019788 b 0x1967c | goto label_0;
| label_14:
0x0001978c add sb, sb, 1 | sb++;
0x00019790 add r5, r5, 3 | r5 += 3;
0x00019794 b 0x1974c |
| }
| do {
0x00019798 mov r1, 0x2f | r1 = 0x2f;
0x0001979c mov r0, r6 | r0 = r6;
0x000197a0 str r3, [sp, 4] | var_4h = r3;
0x000197a4 bl 0x5160 | r0 = strrchr (r0, r1);
0x000197a8 cmp r0, 0 |
| if (r0 == 0) {
0x000197ac beq 0x197c4 | goto label_16;
| }
0x000197b0 ldr r3, [sp, 4] | r3 = var_4h;
0x000197b4 strb r3, [r0] | *(r0) = r3;
| label_15:
0x000197b8 subs sb, sb, 1 | sb--;
0x000197bc bhs 0x19798 |
| } while (sb >= sb);
0x000197c0 b 0x1977c | goto label_1;
| label_16:
0x000197c4 strb r0, [r6] | *(r6) = r0;
| do {
| label_3:
0x000197c8 eor r3, r0, 1 | r3 = r0 ^ 1;
0x000197cc mov r1, r3 | r1 = r3;
0x000197d0 mov r0, r5 | r0 = r5;
0x000197d4 str r3, [sp, 4] | var_4h = r3;
0x000197d8 bl 0x17d0c | r0 = strlen_url ();
0x000197dc mov sb, r0 | sb = r0;
0x000197e0 mov r0, sl | r0 = sl;
0x000197e4 bl 0x5250 | strlen (r0);
0x000197e8 ldr r2, [pc, 0x2c8] |
0x000197ec mov r3, r0 | r3 = r0;
0x000197f0 str r3, [sp, 0xc] | var_ch = r3;
0x000197f4 ldr r2, [r8, r2] | r2 = *((r8 + r2));
0x000197f8 add r0, sb, r0 | r0 = sb + r0;
0x000197fc ldr r2, [r2] | r2 = *(0x19ab4);
0x00019800 add r0, r0, 2 | r0 += 2;
0x00019804 blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00019808 ldr r2, [pc, 0x298] | r2 = $d;
0x0001980c ldr r3, [r8, r2] | r3 = *((r8 + r2));
0x00019810 str r3, [sp, 8] | var_8h = r3;
0x00019814 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00019818 subs sb, r0, 0 | sb = r0 - 0;
| if (sb != r0) {
0x0001981c bne 0x19898 | goto label_17;
| }
0x00019820 ldr r3, [sp, 8] | r3 = var_8h;
0x00019824 mov r0, sl | r0 = sl;
0x00019828 ldr r3, [r3] | r3 = *(r3);
0x0001982c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00019830 b 0x1966c | goto label_2;
| label_11:
0x00019834 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00019838 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x0001983c moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0x2f) {
0x00019840 strbeq r3, [r6] | *(r6) = r3;
| }
| if (r3 != 0x2f) {
0x00019844 addeq r5, r5, 2 | r5 += 2;
| }
| if (r3 != 0x2f) {
0x00019848 moveq r0, 1 | r0 = 1;
| }
0x0001984c beq 0x197c8 |
| } while (r3 == 0x2f);
0x00019850 mov r0, r6 | r0 = r6;
0x00019854 bl 0x5b38 | strchr (r0, r1);
0x00019858 mov r1, 0x3f | r1 = 0x3f;
0x0001985c mov sb, r0 | sb = r0;
0x00019860 mov r0, r6 | r0 = r6;
0x00019864 bl 0x5b38 | strchr (r0, r1);
0x00019868 cmp sb, 0 |
| if (sb != 0) {
0x0001986c beq 0x19888 |
0x00019870 cmp r0, 0 |
0x00019874 cmpne sb, r0 | __asm ("cmpne sb, r0");
| if (r0 > 0) {
0x00019878 movls r0, sb | r0 = sb;
| }
0x0001987c mov r3, 0 | r3 = 0;
0x00019880 strb r3, [r0] | *(r0) = r3;
0x00019884 b 0x1977c | goto label_1;
| }
0x00019888 cmp r0, 0 |
| if (r0 == 0) {
0x0001988c strbne sb, [r0] | *(r0) = sb;
| }
| if (r0 == 0) {
0x00019890 movne r0, sb | r0 = sb;
| }
0x00019894 b 0x197c8 | goto label_3;
| label_17:
0x00019898 mov r2, r3 | r2 = r3;
0x0001989c mov r1, sl | r1 = sl;
0x000198a0 str r3, [sp, 0xc] | var_ch = r3;
0x000198a4 bl 0x4f5c | memcpy (r0, r1, r2);
0x000198a8 ldrb r2, [r5] | r2 = *(r5);
0x000198ac ldr r3, [sp, 0xc] | r3 = var_ch;
0x000198b0 cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x000198b4 beq 0x198dc |
0x000198b8 cmp r6, 0 |
| if (r6 != 0) {
0x000198bc beq 0x198cc |
0x000198c0 ldrb r1, [r6] | r1 = *(r6);
0x000198c4 cmp r1, 0 |
| if (r1 == 0) {
0x000198c8 beq 0x198dc | goto label_18;
| }
| }
0x000198cc cmp r2, 0x3f |
| if (r2 == 0x3f) {
0x000198d0 movne r2, 0x2f | r2 = 0x2f;
| }
| if (r2 == 0x3f) {
0x000198d4 strbne r2, [sb, r3] | *((sb + r3)) = r2;
| }
| if (r2 != 0x3f) {
0x000198d8 addne r3, r3, 1 | r3++;
| goto label_18;
| }
| }
| label_18:
0x000198dc add r0, sb, r3 | r0 = sb + r3;
0x000198e0 ldr r2, [sp, 4] | r2 = var_4h;
0x000198e4 mov r1, r5 | r1 = r5;
0x000198e8 bl 0x17d88 | strcpy_url ();
0x000198ec ldr r3, [sp, 8] | r3 = var_8h;
0x000198f0 mov r0, sl | r0 = sl;
0x000198f4 ldr r3, [r3] | r3 = *(r3);
0x000198f8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000198fc cmp fp, 1 |
| if (fp != 1) {
0x00019900 bne 0x1997c | goto label_19;
| }
| label_5:
0x00019904 add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x00019908 cmp r7, 0 |
0x0001990c str sb, [r3, 0xa8c] | *((r3 + 0xa8c)) = sb;
| if (r7 == 0) {
0x00019910 moveq r0, r7 | r0 = r7;
| goto label_20;
| }
| if (r7 == 0) {
| label_20:
0x00019914 beq 0x19670 | goto label_4;
| }
0x00019918 ldr r1, [pc, 0x19c] | r1 = *(0x19ab8);
0x0001991c mov r0, r4 | r0 = r4;
0x00019920 ldr r2, [r4, 0x164] | r2 = *((r4 + 0x164));
0x00019924 add r1, pc, r1 | r1 = pc + r1;
0x00019928 bl 0x10544 | Curl_failf ();
0x0001992c mov r0, 0x2f | r0 = 0x2f;
0x00019930 b 0x19670 | goto label_4;
| label_10:
0x00019934 mov r1, 0 | r1 = 0;
0x00019938 mov r0, r5 | r0 = r5;
0x0001993c bl 0x17d0c | strlen_url ();
0x00019940 ldr r3, [pc, 0x170] |
0x00019944 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00019948 ldr r3, [r3] | r3 = *(0x19ab4);
0x0001994c add r0, r0, 1 | r0++;
0x00019950 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00019954 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00019958 beq 0x1966c | goto label_2;
| }
0x0001995c mov r2, 0 | r2 = 0;
0x00019960 mov r1, r5 | r1 = r5;
0x00019964 bl 0x17d88 | strcpy_url ();
0x00019968 cmp fp, 1 |
| if (fp == 1) {
0x0001996c addne r3, r4, 0x4000 | r3 = r4 + 0x4000;
| }
| if (fp == 1) {
0x00019970 movne r2, 0 | r2 = 0;
| }
| if (fp != 1) {
0x00019974 strbne r2, [r3, 0x82c] | *((r3 + 0x82c)) = r2;
| goto label_21;
| }
| if (fp == 1) {
| label_21:
0x00019978 beq 0x19904 | goto label_5;
| }
| label_19:
0x0001997c ldrb r3, [r4, 0x67c] | r3 = *((r4 + 0x67c));
0x00019980 cmp r3, 0 |
| if (r3 != 0) {
0x00019984 beq 0x1999c |
0x00019988 ldr r3, [pc, 0x118] |
0x0001998c ldr r0, [r4, 0x678] | r0 = *((r4 + 0x678));
0x00019990 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00019994 ldr r3, [r3] | r3 = $d;
0x00019998 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0001999c ldr r1, [pc, 0x11c] | r1 = *(0x19abc);
0x000199a0 mov r5, 1 | r5 = 1;
0x000199a4 mov r2, sb | r2 = sb;
0x000199a8 str sb, [r4, 0x678] | *((r4 + 0x678)) = sb;
0x000199ac strb r5, [r4, 0x67c] | *((r4 + 0x67c)) = r5;
0x000199b0 add r1, pc, r1 | r1 = pc + r1;
0x000199b4 mov r0, r4 | r0 = r4;
0x000199b8 bl 0x104cc | Curl_infof ();
0x000199bc add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x000199c0 ldr r3, [r3, 0xa60] | r3 = *((r3 + 0xa60));
0x000199c4 ldr r2, [pc, 0xf8] | r2 = *(0x19ac0);
0x000199c8 cmp r3, r2 |
| if (r3 == r2) {
0x000199cc beq 0x19a38 | goto label_22;
| }
0x000199d0 add r2, r2, r5 | r2 += r5;
0x000199d4 cmp r3, r2 |
| if (r3 == r2) {
0x000199d8 beq 0x19a54 | goto label_23;
| }
0x000199dc sub r2, r2, 2 | r2 -= 2;
0x000199e0 cmp r3, r2 |
| if (r3 != r2) {
0x000199e4 bne 0x19a1c | goto label_7;
| }
0x000199e8 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x000199ec sub r3, r3, 2 | r3 -= 2;
0x000199f0 cmp r3, 2 |
| if (r3 > 2) {
0x000199f4 bhi 0x19a1c | goto label_7;
| }
0x000199f8 ldr r3, [r4, 0x168] | r3 = *((r4 + 0x168));
0x000199fc tst r3, 1 |
| if ((r3 & 1) != 0) {
| label_6:
0x00019a00 bne 0x19a1c | goto label_7;
| }
0x00019a04 ldr r1, [pc, 0xbc] | r1 = *(0x19ac4);
0x00019a08 mov r0, r4 | r0 = r4;
0x00019a0c add r1, pc, r1 | r1 = pc + r1;
0x00019a10 bl 0x104cc | Curl_infof ();
0x00019a14 mov r3, 1 | r3 = 1;
0x00019a18 str r3, [r4, 0x3d0] | *((r4 + 0x3d0)) = r3;
| do {
| label_7:
0x00019a1c mov r1, 0xa | r1 = 0xa;
0x00019a20 mov r0, r4 | r0 = r4;
0x00019a24 bl 0x7f7c | Curl_pgrsTime ();
0x00019a28 mov r0, r4 | r0 = r4;
0x00019a2c bl 0x7f50 | Curl_pgrsResetTransferSizes ();
0x00019a30 mov r0, 0 | r0 = 0;
0x00019a34 b 0x19670 | goto label_4;
| label_22:
0x00019a38 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x00019a3c sub r3, r3, 2 | r3 -= 2;
0x00019a40 cmp r3, 2 |
0x00019a44 bhi 0x19a1c |
| } while (r3 > 2);
0x00019a48 ldr r3, [r4, 0x168] | r3 = *((r4 + 0x168));
0x00019a4c tst r3, 2 |
0x00019a50 b 0x19a00 | goto label_6;
| label_23:
0x00019a54 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x00019a58 cmp r3, 1 |
| if (r3 == 1) {
0x00019a5c beq 0x19a1c | goto label_7;
| }
0x00019a60 ldr r3, [r4, 0x168] | r3 = *((r4 + 0x168));
0x00019a64 tst r3, 4 |
| if ((r3 & 4) != 0) {
0x00019a68 bne 0x19a1c | goto label_7;
| }
0x00019a6c ldrb r3, [r4, 0x4d0] | r3 = *((r4 + 0x4d0));
0x00019a70 str r5, [r4, 0x3d0] | *((r4 + 0x3d0)) = r5;
0x00019a74 cmp r3, 0 |
| if (r3 == 0) {
0x00019a78 beq 0x19a98 | goto label_24;
| }
0x00019a7c ldr r2, [pc, 0x48] | r2 = *(0x19ac8);
0x00019a80 add r2, pc, r2 | r2 = pc + r2;
| do {
0x00019a84 ldr r1, [pc, 0x44] | r1 = *(0x19acc);
0x00019a88 mov r0, r4 | r0 = r4;
0x00019a8c add r1, pc, r1 | r1 = pc + r1;
0x00019a90 bl 0x104cc | Curl_infof ();
0x00019a94 b 0x19a1c | goto label_7;
| label_24:
0x00019a98 ldr r2, [pc, 0x34] | r2 = *(0x19ad0);
0x00019a9c add r2, pc, r2 | r2 = pc + r2;
0x00019aa0 b 0x19a84 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x9610 */
| #include <stdint.h>
|
; (fcn) sym.Curl_getformdata () | void Curl_getformdata (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| char * s2;
| int32_t var_1ch;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x00009610 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009614 ldr r8, [pc, 0x2d0] | r8 = *(0x98e8);
0x00009618 sub sp, sp, 0x24 |
0x0000961c mov r4, r2 | r4 = r2;
0x00009620 str r0, [sp, 0x10] | var_10h = r0;
0x00009624 mov r0, r1 | r0 = r1;
0x00009628 mov fp, r1 |
0x0000962c str r3, [sp, 0x14] | var_14h = r3;
0x00009630 bl 0x2bb24 | Curl_mime_cleanpart ();
0x00009634 cmp r4, 0 |
0x00009638 add r8, pc, r8 | r8 = pc + r8;
| if (r4 != 0) {
0x0000963c moveq r5, r4 | r5 = r4;
| }
| if (r4 == 0) {
0x00009640 beq 0x9698 | goto label_10;
| }
0x00009644 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00009648 bl 0x549c | r0 = fcn_0000549c ();
0x0000964c subs sl, r0, 0 | sl = r0 - 0;
| if (sl == r0) {
0x00009650 beq 0x98e4 | goto label_11;
| }
0x00009654 mov r1, sl | r1 = sl;
0x00009658 mov r0, fp | r0 = fp;
0x0000965c bl 0x5bbc | fcn_00005bbc ();
0x00009660 ldr r3, [pc, 0x288] | r3 = $d;
0x00009664 add r3, pc, r3 | r3 = pc + r3;
0x00009668 str r3, [sp, 0x18] | s2 = r3;
0x0000966c mov r5, r0 | r5 = r0;
| do {
0x00009670 adds r3, r4, 0 | r3 = r4 + 0;
| if (r3 == r4) {
0x00009674 movne r3, 1 | r3 = 1;
| }
0x00009678 cmp r5, 0 |
| if (r5 == 0) {
0x0000967c movne r3, 0 | r3 = 0;
| }
0x00009680 cmp r3, 0 |
| if (r3 == 0) {
0x00009684 bne 0x96a4 |
0x00009688 cmp r5, 0 |
| if (r5 != 0) {
0x0000968c beq 0x9698 |
| label_9:
0x00009690 mov r0, fp | r0 = fp;
0x00009694 bl 0x2bb24 | Curl_mime_cleanpart ();
| }
| label_10:
0x00009698 mov r0, r5 | r0 = r5;
0x0000969c add sp, sp, 0x24 |
0x000096a0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000096a4 ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x000096a8 cmp r5, 0 |
| if (r5 == 0) {
0x000096ac beq 0x9700 | goto label_12;
| }
0x000096b0 mov r0, sl | r0 = sl;
0x000096b4 bl 0x5b8c | r0 = fcn_00005b8c ();
0x000096b8 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x000096bc bne 0x96cc | goto label_13;
| }
| label_1:
0x000096c0 mov r5, 0x1b | r5 = 0x1b;
| label_0:
0x000096c4 ldr r4, [r4] | r4 = *(r4);
0x000096c8 b 0x9670 |
| } while (1);
| label_13:
0x000096cc ldmib r4, {r1, r2} | __asm ("ldmib r4, {r1, r2}");
0x000096d0 bl 0x8b3c | r0 = setname ();
0x000096d4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x000096d8 bne 0x96c4 | goto label_0;
| }
0x000096dc ldr r0, [sp, 0x10] | r0 = var_10h;
0x000096e0 bl 0x549c | r0 = fcn_0000549c ();
0x000096e4 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x000096e8 beq 0x96c0 | goto label_1;
| }
0x000096ec mov r1, sb | r1 = sb;
0x000096f0 mov r0, r6 | r0 = r6;
0x000096f4 bl 0x5bbc | r0 = fcn_00005bbc ();
0x000096f8 mov r5, r0 | r5 = r0;
0x000096fc b 0x9704 | goto label_14;
| label_12:
0x00009700 mov sb, sl | sb = sl;
| label_14:
0x00009704 mov r7, r4 | r7 = r4;
| label_2:
0x00009708 adds r3, r7, 0 | r3 = r7 + 0;
| if (r3 == r7) {
0x0000970c movne r3, 1 | r3 = 1;
| }
0x00009710 cmp r5, 0 |
| if (r5 == 0) {
0x00009714 movne r3, 0 | r3 = 0;
| }
0x00009718 cmp r3, 0 |
| if (r3 == 0) {
0x0000971c beq 0x96c4 | goto label_0;
| }
0x00009720 mov r0, sb | r0 = sb;
0x00009724 bl 0x5b8c | r0 = fcn_00005b8c ();
0x00009728 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0000972c moveq r5, 0x1b | r5 = 0x1b;
| }
| if (r6 == r0) {
0x00009730 beq 0x9818 | goto label_3;
| }
0x00009734 mov r2, 0 | r2 = 0;
0x00009738 ldr r1, [r7, 0x20] | r1 = *((r7 + 0x20));
0x0000973c bl 0x57fc | r0 = fcn_000057fc ();
0x00009740 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00009744 bne 0x9818 | goto label_3;
| }
0x00009748 ldr r1, [r7, 0x1c] | r1 = *((r7 + 0x1c));
0x0000974c cmp r1, 0 |
0x00009750 bne 0x9820 |
| while (r0 == 0) {
0x00009754 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00009758 cmp r3, 0 |
| if (r3 == 0) {
0x0000975c bne 0x9774 |
0x00009760 ldmib r4, {r1, r2} | __asm ("ldmib r4, {r1, r2}");
0x00009764 mov r0, r6 | r0 = r6;
0x00009768 bl 0x8b3c | r0 = setname ();
0x0000976c cmp r0, 0 |
| if (r0 != 0) {
0x00009770 bne 0x9830 | goto label_7;
| }
| }
0x00009774 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00009778 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0000977c tst r1, 0x80 |
| if ((r1 & 0x80) != 0) {
0x00009780 bne 0x9838 | goto label_15;
| }
0x00009784 asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
| label_4:
0x00009788 orrs r0, r2, r3 | r0 = r2 | r3;
| if (r0 != r2) {
0x0000978c mvneq r2, 0 | r2 = ~0;
| }
| if (r0 != r2) {
0x00009790 mvneq r3, 0 | r3 = ~0;
| }
0x00009794 tst r1, 3 |
| if ((r1 & 3) == 0) {
0x00009798 beq 0x9868 | goto label_16;
| }
0x0000979c ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x000097a0 ldr r1, [sp, 0x18] | r1 = s2;
0x000097a4 mov r0, r3 | r0 = r3;
0x000097a8 str r3, [sp, 0x1c] | var_1ch = r3;
0x000097ac bl 0x5a30 | strcmp (r0, r1);
0x000097b0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000097b4 cmp r0, 0 |
| if (r0 != 0) {
0x000097b8 bne 0x9840 | goto label_17;
| }
0x000097bc ldr r3, [pc, 0x130] |
0x000097c0 mvn r2, 0 | r2 = ~0;
0x000097c4 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000097c8 ldr r3, [r3] | r3 = *(0x98f0);
0x000097cc str r0, [sp, 8] | var_8h = r0;
0x000097d0 str r3, [sp, 0xc] | var_ch = r3;
0x000097d4 ldr r3, [pc, 0x11c] | r3 = *(0x98f4);
0x000097d8 mov r0, r6 | r0 = r6;
0x000097dc ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000097e0 str r3, [sp, 4] | var_4h = r3;
0x000097e4 ldr r3, [pc, 0x110] | r3 = *(0x98f8);
0x000097e8 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000097ec str r3, [sp] | *(sp) = r3;
0x000097f0 mvn r3, 0 | r3 = ~0;
0x000097f4 bl 0x51fc | r0 = fcn_000051fc ();
| label_5:
0x000097f8 cmp r0, 0 |
| if (r0 != 0) {
0x000097fc bne 0x9830 | goto label_7;
| }
0x00009800 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00009804 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x00009808 bne 0x9850 | goto label_18;
| }
| label_6:
0x0000980c ldr r1, [r4, 0x2c] | r1 = *((r4 + 0x2c));
0x00009810 cmp r1, 0 |
| if (r1 != 0) {
0x00009814 bne 0x98c0 | goto label_19;
| }
| label_3:
0x00009818 ldr r7, [r7, 0x24] | r7 = *((r7 + 0x24));
0x0000981c b 0x9708 | goto label_2;
0x00009820 mov r0, r6 | r0 = r6;
0x00009824 bl 0x4f8c | r0 = fcn_00004f8c ();
0x00009828 cmp r0, 0 |
0x0000982c beq 0x9754 |
| }
| label_7:
0x00009830 mov r5, r0 | r5 = r0;
0x00009834 b 0x9818 | goto label_3;
| label_15:
0x00009838 ldrd r2, r3, [r4, 0x38] | __asm ("ldrd r2, r3, [r4, 0x38]");
0x0000983c b 0x9788 | goto label_4;
| label_17:
0x00009840 mov r1, r3 | r1 = r3;
0x00009844 mov r0, r6 | r0 = r6;
0x00009848 bl 0x5088 | fcn_00005088 ();
0x0000984c b 0x97f8 | goto label_5;
| label_18:
0x00009850 mov r1, r0 | r1 = r0;
0x00009854 mov r0, r6 | r0 = r6;
0x00009858 bl 0x5184 | r0 = fcn_00005184 ();
| label_8:
0x0000985c cmp r0, 0 |
| if (r0 == 0) {
0x00009860 beq 0x980c | goto label_6;
| }
0x00009864 b 0x9830 | goto label_7;
| label_16:
0x00009868 ands r0, r1, 0x10 | r0 = r1 & 0x10;
| if (r0 == r1) {
0x0000986c beq 0x988c | goto label_20;
| }
0x00009870 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00009874 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x00009878 cmp r2, 0 |
0x0000987c mvneq r2, 0 | r2 = ~0;
| while (1) {
0x00009880 mov r0, r6 | r0 = r6;
0x00009884 bl 0x5700 | fcn_00005700 ();
0x00009888 b 0x985c | goto label_8;
| label_20:
0x0000988c tst r1, 0x40 |
| if ((r1 & 0x40) != 0) {
0x00009890 beq 0x98b8 |
0x00009894 ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x00009898 str r0, [sp, 8] | var_8h = r0;
0x0000989c str r1, [sp, 0xc] | var_ch = r1;
0x000098a0 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000098a4 str r0, [sp, 4] | var_4h = r0;
0x000098a8 str r1, [sp] | *(sp) = r1;
0x000098ac mov r0, r6 | r0 = r6;
0x000098b0 bl 0x51fc | fcn_000051fc ();
0x000098b4 b 0x985c | goto label_8;
| }
0x000098b8 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x000098bc b 0x9880 |
| }
| label_19:
0x000098c0 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000098c4 cmp r3, 0 |
| if (r3 != 0) {
0x000098c8 bne 0x98d8 | goto label_21;
| }
0x000098cc ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000098d0 tst r3, 0x51 |
| if ((r3 & 0x51) == 0) {
0x000098d4 beq 0x9818 | goto label_3;
| }
| label_21:
0x000098d8 mov r0, r6 | r0 = r6;
0x000098dc bl 0x5184 | fcn_00005184 ();
0x000098e0 b 0x9830 | goto label_7;
| label_11:
0x000098e4 mov r5, 0x1b | r5 = 0x1b;
0x000098e8 b 0x9690 | goto label_9;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x174b0 */
| #include <stdint.h>
|
; (fcn) sym.Curl_getinfo () | void Curl_getinfo (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x000174b0 push {r1, r2, r3} |
0x000174b4 push {r0, r1, r2, r4, r5, r6, r7, r8, lr} |
0x000174b8 ldr r7, [pc, 0x754] | r7 = *(0x17c10);
0x000174bc subs r4, r0, 0 | r4 = r0 - 0;
0x000174c0 add r7, pc, r7 | r7 = pc + r7;
0x000174c4 ldr r5, [sp, 0x24] | r5 = var_24h;
| if (r4 == r0) {
0x000174c8 beq 0x174f4 | goto label_0;
| }
0x000174cc and r2, r5, 0xf00000 | r2 = r5 & 0xf00000;
0x000174d0 add r3, sp, 0x28 | r3 += var_28h;
0x000174d4 cmp r2, 0x300000 |
0x000174d8 str r3, [sp, 4] | var_4h = r3;
| if (r2 == 0x300000) {
0x000174dc beq 0x17884 | goto label_14;
| }
| if (r2 > 0x300000) {
0x000174e0 bgt 0x174fc | goto label_15;
| }
0x000174e4 cmp r2, 0x100000 |
| if (r2 == 0x100000) {
0x000174e8 beq 0x1755c | goto label_16;
| }
0x000174ec cmp r2, 0x200000 |
| if (r2 == 0x200000) {
0x000174f0 beq 0x17660 | goto label_17;
| }
| do {
| label_0:
0x000174f4 mov r0, 0x30 | r0 = 0x30;
0x000174f8 b 0x17868 | goto label_13;
| label_15:
0x000174fc cmp r2, 0x500000 |
| if (r2 == 0x500000) {
0x00017500 beq 0x17be4 | goto label_18;
| }
0x00017504 cmp r2, 0x600000 |
| if (r2 == 0x600000) {
0x00017508 beq 0x179d0 | goto label_19;
| }
0x0001750c cmp r2, 0x400000 |
0x00017510 bne 0x174f4 |
| } while (r2 != 0x400000);
0x00017514 ldr r8, [r3] | r8 = *(r3);
0x00017518 add r2, sp, 0x2c | r2 += var_2ch;
0x0001751c cmp r8, 0 |
0x00017520 str r2, [sp, 4] | var_4h = r2;
| if (r8 == 0) {
0x00017524 beq 0x174f4 | goto label_0;
| }
0x00017528 ldr r3, [pc, 0x6e8] | r3 = $d;
0x0001752c cmp r5, r3 |
| if (r5 == r3) {
0x00017530 beq 0x17bd0 | goto label_20;
| }
| if (r5 > r3) {
0x00017534 bhi 0x17b24 | goto label_21;
| }
0x00017538 sub r3, r3, 7 | r3 -= 7;
0x0001753c cmp r5, r3 |
| if (r5 == r3) {
0x00017540 beq 0x17bc0 | goto label_22;
| }
0x00017544 add r3, r3, 1 | r3++;
0x00017548 cmp r5, r3 |
| if (r5 != r3) {
0x0001754c bne 0x174f4 | goto label_0;
| }
0x00017550 mov r0, r4 | r0 = r4;
0x00017554 bl 0xb568 | Curl_cookie_list ();
0x00017558 b 0x17bc8 | goto label_23;
| label_16:
0x0001755c ldr r3, [r3] | r3 = *(r3);
0x00017560 add r2, sp, 0x2c | r2 += var_2ch;
0x00017564 cmp r3, 0 |
0x00017568 str r2, [sp, 4] | var_4h = r2;
| if (r3 == 0) {
0x0001756c beq 0x174f4 | goto label_0;
| }
0x00017570 ldr r2, [pc, 0x6a4] | r2 = *(0x17c18);
0x00017574 cmp r5, r2 |
| if (r5 == r2) {
0x00017578 beq 0x17640 | goto label_24;
| }
| if (r5 > r2) {
0x0001757c bhi 0x175dc | goto label_25;
| }
0x00017580 sub r2, r2, 0xd | r2 -= 0xd;
0x00017584 cmp r5, r2 |
| if (r5 == r2) {
0x00017588 beq 0x1762c | goto label_26;
| }
| if (r5 > r2) {
0x0001758c bhi 0x175b0 | goto label_27;
| }
0x00017590 sub r2, r2, 0x11 | r2 -= 0x11;
0x00017594 cmp r5, r2 |
| if (r5 != r2) {
0x00017598 bne 0x174f4 | goto label_0;
| }
0x0001759c ldr r2, [r4, 0x678] | r2 = *((r4 + 0x678));
0x000175a0 cmp r2, 0 |
| if (r2 != 0) {
0x000175a4 ldreq r2, [pc, 0x674] | r2 = *((pc + 0x674));
| }
| if (r2 != 0) {
0x000175a8 addeq r2, pc, r2 | r2 = pc + r2;
| }
0x000175ac b 0x175d0 | goto label_2;
| label_27:
0x000175b0 ldr r2, [pc, 0x66c] | r2 = *(0x17c20);
0x000175b4 cmp r5, r2 |
| if (r5 == r2) {
0x000175b8 beq 0x17638 | goto label_28;
| }
0x000175bc add r2, r2, 9 | r2 += 9;
0x000175c0 cmp r5, r2 |
| if (r5 != r2) {
0x000175c4 addeq r4, r4, 0x4000 | r4 += 0x4000;
| }
| if (r5 == r2) {
0x000175c8 ldreq r2, [r4, 0x9d0] | r2 = *((r4 + 0x9d0));
| goto label_29;
| }
| if (r5 != r2) {
| label_29:
0x000175cc bne 0x174f4 | goto label_0;
| }
| label_2:
0x000175d0 str r2, [r3] | *(r3) = r2;
| label_1:
0x000175d4 mov r0, 0 | r0 = 0;
0x000175d8 b 0x17868 | goto label_13;
| label_25:
0x000175dc ldr r2, [pc, 0x644] | r2 = *(0x17c24);
0x000175e0 cmp r5, r2 |
| if (r5 == r2) {
0x000175e4 beq 0x17658 | goto label_30;
| }
| if (r5 > r2) {
0x000175e8 bhi 0x17608 | goto label_31;
| }
0x000175ec sub r2, r2, 4 | r2 -= 4;
0x000175f0 cmp r5, r2 |
| if (r5 != r2) {
0x000175f4 addeq r4, r4, 0x4a00 | r4 += 0x4a00;
| }
| if (r5 == r2) {
0x000175f8 addeq r4, r4, 0x90 | r4 += 0x90;
| goto label_32;
| }
| if (r5 != r2) {
| label_32:
0x000175fc bne 0x174f4 | goto label_0;
| }
| label_3:
0x00017600 str r4, [r3] | *(r3) = r4;
0x00017604 b 0x175d4 | goto label_1;
| label_31:
0x00017608 ldr r2, [pc, 0x61c] | r2 = *(0x17c28);
0x0001760c cmp r5, r2 |
| if (r5 == r2) {
0x00017610 beq 0x1764c | goto label_33;
| }
0x00017614 add r2, r2, 8 | r2 += 8;
0x00017618 cmp r5, r2 |
| if (r5 != r2) {
0x0001761c addeq r4, r4, 0x4000 | r4 += 0x4000;
| }
| if (r5 == r2) {
0x00017620 ldreq r2, [r4, 0xaf8] | r2 = *((r4 + 0xaf8));
| goto label_34;
| }
| if (r5 == r2) {
| label_34:
0x00017624 beq 0x175d0 | goto label_2;
| }
0x00017628 b 0x174f4 | goto label_0;
| label_26:
0x0001762c add r4, r4, 0x4000 | r4 += 0x4000;
0x00017630 ldr r2, [r4, 0xa88] | r2 = *((r4 + 0xa88));
0x00017634 b 0x175d0 | goto label_2;
| label_28:
0x00017638 ldr r2, [r4, 0x49c] | r2 = *((r4 + 0x49c));
0x0001763c b 0x175d0 | goto label_2;
| label_24:
0x00017640 add r4, r4, 0x4000 | r4 += 0x4000;
0x00017644 ldr r2, [r4, 0xa8c] | r2 = *((r4 + 0xa8c));
0x00017648 b 0x175d0 | goto label_2;
| label_33:
0x0001764c add r4, r4, 0x4a00 | r4 += 0x4a00;
0x00017650 add r4, r4, 0xc4 | r4 += 0xc4;
0x00017654 b 0x17600 | goto label_3;
| label_30:
0x00017658 ldr r2, [r4, 0x5cc] | r2 = *((r4 + 0x5cc));
0x0001765c b 0x175d0 | goto label_2;
| label_17:
0x00017660 ldr r6, [r3] | r6 = *(r3);
0x00017664 add r2, sp, 0x2c | r2 += var_2ch;
0x00017668 cmp r6, 0 |
0x0001766c str r2, [sp, 4] | var_4h = r2;
| if (r6 == 0) {
0x00017670 beq 0x174f4 | goto label_0;
| }
0x00017674 sub r5, r5, 0x200000 | r5 -= 0x200000;
0x00017678 sub r5, r5, 2 | r5 -= 2;
0x0001767c cmp r5, 0x2e |
| if (r5 > 0x2e) {
| /* switch table (47 cases) at 0x17688 */
0x00017680 addls pc, pc, r5, lsl 2 | pc += (r5 << 2);
| }
0x00017684 b 0x174f4 | goto label_0;
0x00017688 b 0x17744 | goto label_35;
0x0001768c b 0x174f4 | goto label_0;
0x00017690 b 0x174f4 | goto label_0;
0x00017694 b 0x174f4 | goto label_0;
0x00017698 b 0x174f4 | goto label_0;
0x0001769c b 0x174f4 | goto label_0;
0x000176a0 b 0x174f4 | goto label_0;
0x000176a4 b 0x174f4 | goto label_0;
0x000176a8 b 0x174f4 | goto label_0;
0x000176ac b 0x1776c | goto label_36;
0x000176b0 b 0x17778 | goto label_37;
0x000176b4 b 0x17784 | goto label_38;
0x000176b8 b 0x17760 | goto label_39;
0x000176bc b 0x174f4 | goto label_0;
0x000176c0 b 0x174f4 | goto label_0;
0x000176c4 b 0x174f4 | goto label_0;
0x000176c8 b 0x174f4 | goto label_0;
0x000176cc b 0x174f4 | goto label_0;
0x000176d0 b 0x17794 | goto label_40;
0x000176d4 b 0x174f4 | goto label_0;
0x000176d8 b 0x17754 | goto label_41;
0x000176dc b 0x1779c | goto label_42;
0x000176e0 b 0x177a8 | goto label_43;
0x000176e4 b 0x177b4 | goto label_44;
0x000176e8 b 0x177c0 | goto label_45;
0x000176ec b 0x174f4 | goto label_0;
0x000176f0 b 0x174f4 | goto label_0;
0x000176f4 b 0x177cc | goto label_46;
0x000176f8 b 0x174f4 | goto label_0;
0x000176fc b 0x174f4 | goto label_0;
0x00017700 b 0x174f4 | goto label_0;
0x00017704 b 0x174f4 | goto label_0;
0x00017708 b 0x174f4 | goto label_0;
0x0001770c b 0x177f8 | goto label_47;
0x00017710 b 0x174f4 | goto label_0;
0x00017714 b 0x17804 | goto label_48;
0x00017718 b 0x17810 | goto label_49;
0x0001771c b 0x1781c | goto label_50;
0x00017720 b 0x177e0 | goto label_51;
0x00017724 b 0x174f4 | goto label_0;
0x00017728 b 0x177ec | goto label_52;
0x0001772c b 0x174f4 | goto label_0;
0x00017730 b 0x174f4 | goto label_0;
0x00017734 b 0x174f4 | goto label_0;
0x00017738 b 0x17828 | goto label_53;
0x0001773c b 0x1778c | goto label_54;
0x00017740 b 0x17878 | goto label_55;
| label_35:
0x00017744 add r4, r4, 0x4000 | r4 += 0x4000;
0x00017748 ldr r3, [r4, 0xa60] | r3 = *((r4 + 0xa60));
| do {
| label_4:
0x0001774c str r3, [r6] | *(r6) = r3;
0x00017750 b 0x175d4 | goto label_1;
| label_41:
0x00017754 add r4, r4, 0x4000 | r4 += 0x4000;
0x00017758 ldr r3, [r4, 0xa64] | r3 = *((r4 + 0xa64));
0x0001775c b 0x1774c |
| } while (1);
| label_39:
0x00017760 add r4, r4, 0x4000 | r4 += 0x4000;
0x00017764 ldr r3, [r4, 0xa6c] | r3 = *((r4 + 0xa6c));
0x00017768 b 0x1774c | goto label_4;
| label_36:
0x0001776c add r4, r4, 0x4000 | r4 += 0x4000;
0x00017770 ldr r3, [r4, 0xa74] | r3 = *((r4 + 0xa74));
0x00017774 b 0x1774c | goto label_4;
| label_37:
0x00017778 add r4, r4, 0x4000 | r4 += 0x4000;
0x0001777c ldr r3, [r4, 0xa78] | r3 = *((r4 + 0xa78));
0x00017780 b 0x1774c | goto label_4;
| label_38:
0x00017784 ldr r3, [r4, 0x408] | r3 = *((r4 + 0x408));
0x00017788 b 0x1774c | goto label_4;
| label_54:
0x0001778c ldr r3, [r4, 0x460] | r3 = *((r4 + 0x460));
0x00017790 b 0x1774c | goto label_4;
| label_40:
0x00017794 ldr r3, [r4, 0x160] | r3 = *((r4 + 0x160));
0x00017798 b 0x1774c | goto label_4;
| label_42:
0x0001779c add r4, r4, 0x4000 | r4 += 0x4000;
0x000177a0 ldr r3, [r4, 0xa80] | r3 = *((r4 + 0xa80));
0x000177a4 b 0x1774c | goto label_4;
| label_43:
0x000177a8 add r4, r4, 0x4000 | r4 += 0x4000;
0x000177ac ldr r3, [r4, 0xa7c] | r3 = *((r4 + 0xa7c));
0x000177b0 b 0x1774c | goto label_4;
| label_44:
0x000177b4 add r4, r4, 0x4000 | r4 += 0x4000;
0x000177b8 ldr r3, [r4, 0x824] | r3 = *((r4 + 0x824));
0x000177bc b 0x1774c | goto label_4;
| label_45:
0x000177c0 add r4, r4, 0x4000 | r4 += 0x4000;
0x000177c4 ldr r3, [r4, 0xa84] | r3 = *((r4 + 0xa84));
0x000177c8 b 0x1774c | goto label_4;
| label_46:
0x000177cc mov r1, 0 | r1 = 0;
0x000177d0 mov r0, r4 | r0 = r4;
0x000177d4 bl 0x1bb50 | Curl_getconnectinfo ();
0x000177d8 str r0, [r6] | *(r6) = r0;
0x000177dc b 0x175d4 | goto label_1;
| label_51:
0x000177e0 add r4, r4, 0x4000 | r4 += 0x4000;
0x000177e4 ldr r3, [r4, 0xac0] | r3 = *((r4 + 0xac0));
0x000177e8 b 0x1774c | goto label_4;
| label_52:
0x000177ec add r4, r4, 0x4000 | r4 += 0x4000;
0x000177f0 ldr r3, [r4, 0xaf4] | r3 = *((r4 + 0xaf4));
0x000177f4 b 0x1774c | goto label_4;
| label_47:
0x000177f8 add r4, r4, 0x4000 | r4 += 0x4000;
0x000177fc ldrb r3, [r4, 0xa70] | r3 = *((r4 + 0xa70));
0x00017800 b 0x1774c | goto label_4;
| label_48:
0x00017804 add r4, r4, 0x4000 | r4 += 0x4000;
0x00017808 ldr r3, [r4, 0xa00] | r3 = *((r4 + 0xa00));
0x0001780c b 0x1774c | goto label_4;
| label_49:
0x00017810 add r4, r4, 0x4000 | r4 += 0x4000;
0x00017814 ldr r3, [r4, 0xa04] | r3 = *((r4 + 0xa04));
0x00017818 b 0x1774c | goto label_4;
| label_50:
0x0001781c add r4, r4, 0x4000 | r4 += 0x4000;
0x00017820 ldr r3, [r4, 0xa08] | r3 = *((r4 + 0xa08));
0x00017824 b 0x1774c | goto label_4;
| label_53:
0x00017828 add r4, r4, 0x4000 | r4 += 0x4000;
0x0001782c ldr r3, [r4, 0xa68] | r3 = *((r4 + 0xa68));
0x00017830 cmp r3, 0xb |
| if (r3 != 0xb) {
0x00017834 beq 0x17858 |
0x00017838 cmp r3, 0x14 |
0x0001783c mov r0, 0 | r0 = 0;
| if (r3 != 0x14) {
0x00017840 beq 0x17860 |
0x00017844 cmp r3, 0xa |
| if (r3 != 0xa) {
0x00017848 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0xa) {
0x0001784c beq 0x17864 | goto label_56;
| }
0x00017850 str r0, [r6] | *(r6) = r0;
0x00017854 b 0x17868 |
| } else {
0x00017858 mov r3, 2 | r3 = 2;
0x0001785c b 0x1774c | goto label_4;
| }
0x00017860 mov r3, 3 | r3 = 3;
| label_56:
0x00017864 str r3, [r6] | *(r6) = r3;
| }
| label_13:
0x00017868 add sp, sp, 0xc |
0x0001786c pop {r4, r5, r6, r7, r8, lr} |
0x00017870 add sp, sp, 0xc |
0x00017874 bx lr | return;
| label_55:
0x00017878 add r4, r4, 0x4000 | r4 += 0x4000;
0x0001787c ldr r3, [r4, 0xafc] | r3 = *((r4 + 0xafc));
0x00017880 b 0x1774c | goto label_4;
| label_14:
0x00017884 ldr r6, [sp, 0x28] | r6 = var_28h;
0x00017888 add r3, sp, 0x2c | r3 += var_2ch;
0x0001788c cmp r6, 0 |
0x00017890 str r3, [sp, 4] | var_4h = r3;
| if (r6 == 0) {
0x00017894 beq 0x174f4 | goto label_0;
| }
0x00017898 sub r5, r5, 0x300000 | r5 -= 0x300000;
0x0001789c sub r5, r5, 3 | r5 -= 3;
0x000178a0 cmp r5, 0x1e |
| if (r5 > 0x1e) {
| /* switch table (31 cases) at 0x178ac */
0x000178a4 addls pc, pc, r5, lsl 2 | pc += (r5 << 2);
| }
0x000178a8 b 0x174f4 | goto label_0;
0x000178ac b 0x17928 | goto label_57;
0x000178b0 b 0x17940 | goto label_58;
0x000178b4 b 0x17948 | goto label_59;
0x000178b8 b 0x17958 | goto label_60;
0x000178bc b 0x17968 | goto label_61;
0x000178c0 b 0x17974 | goto label_62;
0x000178c4 b 0x17988 | goto label_63;
0x000178c8 b 0x17990 | goto label_64;
0x000178cc b 0x174f4 | goto label_0;
0x000178d0 b 0x174f4 | goto label_0;
0x000178d4 b 0x174f4 | goto label_0;
0x000178d8 b 0x174f4 | goto label_0;
0x000178dc b 0x17998 | goto label_65;
0x000178e0 b 0x179b4 | goto label_66;
0x000178e4 b 0x17960 | goto label_67;
0x000178e8 b 0x174f4 | goto label_0;
0x000178ec b 0x179c8 | goto label_68;
0x000178f0 b 0x174f4 | goto label_0;
0x000178f4 b 0x174f4 | goto label_0;
0x000178f8 b 0x174f4 | goto label_0;
0x000178fc b 0x174f4 | goto label_0;
0x00017900 b 0x174f4 | goto label_0;
0x00017904 b 0x174f4 | goto label_0;
0x00017908 b 0x174f4 | goto label_0;
0x0001790c b 0x174f4 | goto label_0;
0x00017910 b 0x174f4 | goto label_0;
0x00017914 b 0x174f4 | goto label_0;
0x00017918 b 0x174f4 | goto label_0;
0x0001791c b 0x174f4 | goto label_0;
0x00017920 b 0x174f4 | goto label_0;
0x00017924 b 0x17950 | goto label_69;
| label_57:
0x00017928 ldr r0, [r4, 0x6d4] | r0 = *((r4 + 0x6d4));
| do {
| label_5:
0x0001792c bl 0x382fc | floatsidf ();
0x00017930 mov r2, 0 | r2 = 0;
0x00017934 ldr r3, [pc, 0x2f4] | r3 = *(0x17c2c);
0x00017938 bl 0x3864c | divdf3 ();
0x0001793c b 0x17980 | goto label_7;
| label_58:
0x00017940 ldr r0, [r4, 0x6e8] | r0 = *((r4 + 0x6e8));
0x00017944 b 0x1792c |
| } while (1);
| label_59:
0x00017948 ldr r0, [r4, 0x6ec] | r0 = *((r4 + 0x6ec));
0x0001794c b 0x1792c | goto label_5;
| label_69:
0x00017950 ldr r0, [r4, 0x6f0] | r0 = *((r4 + 0x6f0));
0x00017954 b 0x1792c | goto label_5;
| label_60:
0x00017958 ldr r0, [r4, 0x6f4] | r0 = *((r4 + 0x6f4));
0x0001795c b 0x1792c | goto label_5;
| label_67:
0x00017960 ldr r0, [r4, 0x6f8] | r0 = *((r4 + 0x6f8));
0x00017964 b 0x1792c | goto label_5;
| label_61:
0x00017968 add r4, r4, 0x6c0 | r4 += 0x6c0;
| do {
| label_8:
0x0001796c ldrd r0, r1, [r4, -8] | __asm ("ldrd r0, r1, [r4, -8]");
0x00017970 b 0x1797c | goto label_70;
| label_62:
0x00017974 add r4, r4, 0x6b0 | r4 += 0x6b0;
| label_6:
0x00017978 ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
| label_70:
0x0001797c bl 0x38380 | floatdidf ();
| label_7:
0x00017980 strd r0, r1, [r6] | __asm ("strd r0, r1, [r6]");
0x00017984 b 0x175d4 | goto label_1;
| label_63:
0x00017988 add r4, r4, 0x6e0 | r4 += 0x6e0;
0x0001798c b 0x1796c |
| } while (1);
| label_64:
0x00017990 add r4, r4, 0x6e0 | r4 += 0x6e0;
0x00017994 b 0x17978 | goto label_6;
| label_65:
0x00017998 ldr r3, [r4, 0x6d0] | r3 = *((r4 + 0x6d0));
0x0001799c tst r3, 0x40 |
| if ((r3 & 0x40) != 0) {
0x000179a0 addne r4, r4, 0x6a0 | r4 += 0x6a0;
| goto label_71;
| }
| if ((r3 & 0x40) != 0) {
| label_71:
0x000179a4 bne 0x17978 | goto label_6;
| }
| do {
0x000179a8 mov r0, 0 | r0 = 0;
0x000179ac ldr r1, [pc, 0x280] | r1 = *(0x17c30);
0x000179b0 b 0x17980 | goto label_7;
| label_66:
0x000179b4 ldr r3, [r4, 0x6d0] | r3 = *((r4 + 0x6d0));
0x000179b8 tst r3, 0x20 |
0x000179bc beq 0x179a8 |
| } while ((r3 & 0x20) == 0);
0x000179c0 add r4, r4, 0x6b0 | r4 += 0x6b0;
0x000179c4 b 0x1796c | goto label_8;
| label_68:
0x000179c8 ldr r0, [r4, 0x6fc] | r0 = *((r4 + 0x6fc));
0x000179cc b 0x1792c | goto label_5;
| label_19:
0x000179d0 ldr r3, [r3] | r3 = *(r3);
0x000179d4 add r2, sp, 0x2c | r2 += var_2ch;
0x000179d8 cmp r3, 0 |
0x000179dc str r2, [sp, 4] | var_4h = r2;
| if (r3 == 0) {
0x000179e0 beq 0x174f4 | goto label_0;
| }
0x000179e4 ldr r2, [pc, 0x24c] | r2 = *(0x17c34);
0x000179e8 cmp r5, r2 |
| if (r5 == r2) {
0x000179ec beq 0x17ae0 | goto label_72;
| }
| if (r5 > r2) {
0x000179f0 bhi 0x17a4c | goto label_73;
| }
0x000179f4 sub r2, r2, 7 | r2 -= 7;
0x000179f8 cmp r5, r2 |
| if (r5 == r2) {
0x000179fc beq 0x17ac4 | goto label_74;
| }
| if (r5 > r2) {
0x00017a00 bhi 0x17a28 | goto label_75;
| }
0x00017a04 sub r2, r2, 2 | r2 -= 2;
0x00017a08 cmp r5, r2 |
| if (r5 == r2) {
0x00017a0c beq 0x17ab4 | goto label_76;
| }
0x00017a10 add r2, r2, 1 | r2++;
0x00017a14 cmp r5, r2 |
| if (r5 == r2) {
0x00017a18 addeq r4, r4, 0x6b0 | r4 += 0x6b0;
| goto label_77;
| }
| if (r5 != r2) {
| label_77:
0x00017a1c bne 0x174f4 | goto label_0;
| }
| do {
| label_10:
0x00017a20 ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
0x00017a24 b 0x17abc | goto label_12;
| label_75:
0x00017a28 ldr r2, [pc, 0x20c] | r2 = *(0x17c38);
0x00017a2c cmp r5, r2 |
| if (r5 == r2) {
0x00017a30 beq 0x17aa8 | goto label_78;
| }
| if (r5 > r2) {
0x00017a34 bhi 0x17acc | goto label_79;
| }
0x00017a38 sub r2, r2, 4 | r2 -= 4;
0x00017a3c cmp r5, r2 |
| if (r5 != r2) {
0x00017a40 addeq r4, r4, 0x6e0 | r4 += 0x6e0;
| }
0x00017a44 beq 0x17a20 |
| } while (r5 == r2);
0x00017a48 b 0x174f4 | goto label_0;
| label_73:
0x00017a4c ldr r2, [pc, 0x1ec] | r2 = *(0x17c3c);
0x00017a50 cmp r5, r2 |
| if (r5 == r2) {
0x00017a54 beq 0x17b0c | goto label_80;
| }
| if (r5 > r2) {
0x00017a58 bhi 0x17a84 | goto label_81;
| }
0x00017a5c sub r2, r2, 2 | r2 -= 2;
0x00017a60 cmp r5, r2 |
| if (r5 == r2) {
0x00017a64 beq 0x17afc | goto label_82;
| }
| if (r5 > r2) {
0x00017a68 bhi 0x17b04 | goto label_83;
| }
0x00017a6c sub r2, r2, 1 | r2--;
0x00017a70 cmp r5, r2 |
| if (r5 == r2) {
0x00017a74 ldreq r0, [r4, 0x6d4] | r0 = *((r4 + 0x6d4));
| goto label_84;
| }
| if (r5 != r2) {
| label_84:
0x00017a78 bne 0x174f4 | goto label_0;
| }
| do {
| label_9:
0x00017a7c asr r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00017a80 b 0x17abc | goto label_12;
| label_81:
0x00017a84 ldr r2, [pc, 0x1b8] | r2 = *(0x17c40);
0x00017a88 cmp r5, r2 |
| if (r5 == r2) {
0x00017a8c beq 0x17b1c | goto label_85;
| }
| if (r5 <= r2) {
0x00017a90 blo 0x17b14 | goto label_86;
| }
0x00017a94 add r2, r2, 1 | r2++;
0x00017a98 cmp r5, r2 |
| if (r5 != r2) {
0x00017a9c ldreq r0, [r4, 0x6f0] | r0 = *((r4 + 0x6f0));
| }
0x00017aa0 beq 0x17a7c |
| } while (r5 == r2);
0x00017aa4 b 0x174f4 | goto label_0;
| label_78:
0x00017aa8 add r4, r4, 0x4000 | r4 += 0x4000;
0x00017aac ldr r0, [r4, 0xa6c] | r0 = *((r4 + 0xa6c));
0x00017ab0 b 0x17a7c | goto label_9;
| label_76:
0x00017ab4 add r4, r4, 0x6c0 | r4 += 0x6c0;
| do {
| label_11:
0x00017ab8 ldrd r0, r1, [r4, -8] | __asm ("ldrd r0, r1, [r4, -8]");
| label_12:
0x00017abc strd r0, r1, [r3] | __asm ("strd r0, r1, [r3]");
0x00017ac0 b 0x175d4 | goto label_1;
| label_74:
0x00017ac4 add r4, r4, 0x6e0 | r4 += 0x6e0;
0x00017ac8 b 0x17ab8 |
| } while (1);
| label_79:
0x00017acc ldr r2, [r4, 0x6d0] | r2 = *((r4 + 0x6d0));
0x00017ad0 tst r2, 0x40 |
| if ((r2 & 0x40) == 0) {
0x00017ad4 beq 0x17af0 | goto label_87;
| }
0x00017ad8 add r4, r4, 0x6a0 | r4 += 0x6a0;
0x00017adc b 0x17a20 | goto label_10;
| label_72:
0x00017ae0 ldr r2, [r4, 0x6d0] | r2 = *((r4 + 0x6d0));
0x00017ae4 tst r2, 0x20 |
| if ((r2 & 0x20) != 0) {
0x00017ae8 addne r4, r4, 0x6b0 | r4 += 0x6b0;
| goto label_88;
| }
| if ((r2 & 0x20) != 0) {
| label_88:
0x00017aec bne 0x17ab8 | goto label_11;
| }
| label_87:
0x00017af0 mvn r0, 0 | r0 = ~0;
0x00017af4 mvn r1, 0 | r1 = ~0;
0x00017af8 b 0x17abc | goto label_12;
| label_82:
0x00017afc ldr r0, [r4, 0x6e8] | r0 = *((r4 + 0x6e8));
0x00017b00 b 0x17a7c | goto label_9;
| label_83:
0x00017b04 ldr r0, [r4, 0x6ec] | r0 = *((r4 + 0x6ec));
0x00017b08 b 0x17a7c | goto label_9;
| label_80:
0x00017b0c ldr r0, [r4, 0x6f4] | r0 = *((r4 + 0x6f4));
0x00017b10 b 0x17a7c | goto label_9;
| label_86:
0x00017b14 ldr r0, [r4, 0x6f8] | r0 = *((r4 + 0x6f8));
0x00017b18 b 0x17a7c | goto label_9;
| label_85:
0x00017b1c ldr r0, [r4, 0x6fc] | r0 = *((r4 + 0x6fc));
0x00017b20 b 0x17a7c | goto label_9;
| label_21:
0x00017b24 ldr r3, [pc, 0x11c] | r3 = *(0x17c44);
0x00017b28 cmp r5, r3 |
| if (r5 == r3) {
0x00017b2c beq 0x17b3c | goto label_89;
| }
0x00017b30 add r3, r3, 2 | r3 += 2;
0x00017b34 cmp r5, r3 |
| if (r5 != r3) {
0x00017b38 bne 0x174f4 | goto label_0;
| }
| label_89:
0x00017b3c add r3, r4, 0x4b00 | r3 = r4 + 0x4b00;
0x00017b40 add r3, r3, 8 | r3 += 8;
0x00017b44 ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x00017b48 str r3, [r8] | *(r8) = r3;
0x00017b4c bl 0x36d54 | Curl_ssl_backend ();
0x00017b50 mov r2, 0 | r2 = 0;
0x00017b54 subs r3, r6, r2 | r3 = r6 - r2;
0x00017b58 add r4, r4, 0x4000 | r4 += 0x4000;
| if (r3 == r6) {
0x00017b5c movne r3, 1 | r3 = 1;
| }
0x00017b60 str r2, [r4, 0xb0c] | *((r4 + 0xb0c)) = r2;
0x00017b64 cmp r0, r2 |
0x00017b68 str r0, [r4, 0xb08] | *((r4 + 0xb08)) = r0;
| if (r0 == r2) {
0x00017b6c movne r0, r3 | r0 = r3;
| }
| if (r0 != r2) {
0x00017b70 moveq r0, r2 | r0 = r2;
| }
0x00017b74 cmp r0, r2 |
| if (r0 == r2) {
0x00017b78 beq 0x17868 | goto label_13;
| }
0x00017b7c ldrb r3, [r6, 0x1bc] | r3 = *((r6 + 0x1bc));
0x00017b80 cmp r3, r2 |
| if (r3 != r2) {
0x00017b84 bne 0x17bdc | goto label_90;
| }
0x00017b88 ldrb r0, [r6, 0x1cc] | r0 = *((r6 + 0x1cc));
0x00017b8c cmp r0, r2 |
| if (r0 != r2) {
0x00017b90 movne r0, 1 | r0 = 1;
| goto label_91;
| }
| if (r0 == r2) {
| label_91:
0x00017b94 beq 0x17868 | goto label_13;
| }
| do {
0x00017b98 ldr r3, [pc, 0xac] |
0x00017b9c add r0, r6, r0, lsl 4 | r0 = r6 + (r0 << 4);
0x00017ba0 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00017ba4 mov r1, r5 | r1 = r5;
0x00017ba8 ldr r3, [r3] |
0x00017bac add r0, r0, 0x1bc | r0 += 0x1bc;
0x00017bb0 ldr r3, [r3, 0x38] | r3 = *(0x17c80);
0x00017bb4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00017bb8 str r0, [r4, 0xb0c] | *((r4 + 0xb0c)) = r0;
0x00017bbc b 0x175d4 | goto label_1;
| label_22:
0x00017bc0 mov r0, r4 | r0 = r4;
0x00017bc4 bl 0x375f4 | Curl_ssl_engines_list ();
| label_23:
0x00017bc8 str r0, [r8] | *(r8) = r0;
0x00017bcc b 0x175d4 | goto label_1;
| label_20:
0x00017bd0 add r4, r4, 0x4b00 | r4 += 0x4b00;
0x00017bd4 str r4, [r8] | *(r8) = r4;
0x00017bd8 b 0x175d4 | goto label_1;
| label_90:
0x00017bdc mov r0, r2 | r0 = r2;
0x00017be0 b 0x17b98 |
| } while (1);
| label_18:
0x00017be4 ldr r4, [r3] | r4 = *(r3);
0x00017be8 add r2, sp, 0x2c | r2 += var_2ch;
0x00017bec cmp r4, 0 |
0x00017bf0 str r2, [sp, 4] | var_4h = r2;
| if (r4 == 0) {
0x00017bf4 beq 0x174f4 | goto label_0;
| }
0x00017bf8 ldr r3, [pc, 0x50] | r3 = *(0x17c4c);
0x00017bfc cmp r5, r3 |
| if (r5 != r3) {
0x00017c00 bne 0x174f4 | goto label_0;
| }
0x00017c04 mov r1, 0 | r1 = 0;
0x00017c08 bl 0x1bb50 | Curl_getconnectinfo ();
0x00017c0c str r0, [r4] | *(r4) = r0;
0x00017c10 b 0x175d4 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1d1e4 */
| #include <stdint.h>
|
; (fcn) sym.Curl_hash_str () | void Curl_hash_str (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001d1e4 mov ip, r0 |
0x0001d1e8 add r1, r0, r1 | r1 = r0 + r1;
0x0001d1ec ldr r0, [pc, 0x28] | r0 = *(0x1d218);
0x0001d1f0 push {r4, lr} |
| do {
0x0001d1f4 cmp ip, r1 |
| if (ip > r1) {
0x0001d1f8 blo 0x1d20c |
0x0001d1fc mov r1, r2 | r1 = r2;
0x0001d200 bl 0x37f04 | aeabi_uidivmod ();
0x0001d204 mov r0, r1 | r0 = r1;
0x0001d208 pop {r4, pc} |
| }
0x0001d20c add r3, r0, r0, lsl 5 | r3 = r0 + (r0 << 5);
0x0001d210 ldrb r0, [ip], 1 | r0 = *(ip);
| ip++;
0x0001d214 eor r0, r0, r3 | r0 ^= r3;
0x0001d218 b 0x1d1f4 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xb9b8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_setup_conn () | void Curl_http_setup_conn (int32_t arg1) {
| r0 = arg1;
0x0000b9b8 ldr r3, [pc, 0x4c] |
0x0000b9bc ldr r2, [pc, 0x4c] | r2 = $d;
0x0000b9c0 add r3, pc, r3 | r3 = pc + r3;
0x0000b9c4 push {r4, r5, r6, lr} |
0x0000b9c8 ldr r3, [r3, r2] |
0x0000b9cc mov r5, r0 | r5 = r0;
0x0000b9d0 ldr r3, [r3] | r3 = *(0xba08);
0x0000b9d4 mov r1, 0x1b8 | r1 = 0x1b8;
0x0000b9d8 mov r0, 1 | r0 = 1;
0x0000b9dc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000b9e0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0000b9e4 beq 0xba04 |
0x0000b9e8 add r0, r4, 0x30 | r0 = r4 + 0x30;
0x0000b9ec ldr r1, [r5] | r1 = *(r5);
0x0000b9f0 bl 0x2bb08 | Curl_mime_initpart ();
0x0000b9f4 ldr r3, [r5] | r3 = *(r5);
0x0000b9f8 mov r0, 0 | r0 = 0;
0x0000b9fc str r4, [r3, 0x12c] | *((r3 + 0x12c)) = r4;
0x0000ba00 pop {r4, r5, r6, pc} |
| }
0x0000ba04 mov r0, 0x1b | r0 = 0x1b;
0x0000ba08 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc2dc */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_auth_act () | void Curl_http_auth_act (int32_t arg1) {
| r0 = arg1;
0x0000c2dc push {r4, r5, r6, r7, r8, lr} |
0x0000c2e0 ldr r4, [r0] | r4 = *(r0);
0x0000c2e4 ldr r8, [pc, 0x1d4] | r8 = *(0xc4bc);
0x0000c2e8 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000c2ec add r8, pc, r8 | r8 = pc + r8;
0x0000c2f0 sub r2, r3, 0x64 | r2 = r3 - 0x64;
0x0000c2f4 cmp r2, 0x63 |
| if (r2 < 0x63) {
0x0000c2f8 bls 0xc318 | goto label_2;
| }
0x0000c2fc add r7, r4, 0x4000 | r7 = r4 + 0x4000;
0x0000c300 ldrb r2, [r7, 0x8a0] | r2 = *((r7 + 0x8a0));
0x0000c304 cmp r2, 0 |
| if (r2 == 0) {
0x0000c308 beq 0xc320 | goto label_3;
| }
0x0000c30c ldrb r3, [r4, 0x4c8] | r3 = *((r4 + 0x4c8));
0x0000c310 cmp r3, 0 |
| if (r3 != 0) {
0x0000c314 bne 0xc458 | goto label_4;
| }
| do {
| label_2:
0x0000c318 mov r0, 0 | r0 = 0;
0x0000c31c pop {r4, r5, r6, r7, r8, pc} |
| label_3:
0x0000c320 ldrb r6, [r0, 0x258] | r6 = *((r0 + 0x258));
0x0000c324 mov r5, r0 | r5 = r0;
0x0000c328 cmp r6, 0 |
| if (r6 != 0) {
0x0000c32c beq 0xc36c |
0x0000c330 ldr r2, [pc, 0x18c] | r2 = $d;
0x0000c334 cmp r3, r2 |
| if (r3 != r2) {
0x0000c338 beq 0xc354 |
0x0000c33c ldrb r6, [r0, 0x262] | r6 = *((r0 + 0x262));
0x0000c340 cmp r3, 0x12c |
| if (r3 < 0x12c) {
0x0000c344 movge r6, 0 | r6 = 0;
| }
| if (r3 >= 0x12c) {
0x0000c348 andlt r6, r6, 1 | r6 &= 1;
| }
0x0000c34c cmp r6, 0 |
| if (r6 == 0) {
0x0000c350 beq 0xc36c | goto label_5;
| }
| }
0x0000c354 add r0, r4, 0x4800 | r0 = r4 + 0x4800;
0x0000c358 add r0, r0, 0x80 | r0 += 0x80;
0x0000c35c bl 0xb868 | r0 = pickoneauth ();
0x0000c360 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0000c364 moveq r3, 1 | r3 = 1;
| }
| if (r6 == r0) {
0x0000c368 strbeq r3, [r7, 0x8a0] | *((r7 + 0x8a0)) = r3;
| goto label_5;
| }
| }
| label_5:
0x0000c36c ldrb r0, [r5, 0x259] | r0 = *((r5 + 0x259));
0x0000c370 cmp r0, 0 |
| if (r0 != 0) {
0x0000c374 beq 0xc3b8 |
0x0000c378 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000c37c ldr r2, [pc, 0x144] | r2 = *(0xc4c4);
0x0000c380 cmp r3, r2 |
| if (r3 != r2) {
0x0000c384 beq 0xc3a0 |
0x0000c388 ldrb r0, [r5, 0x262] | r0 = *((r5 + 0x262));
0x0000c38c cmp r3, 0x12c |
| if (r3 < 0x12c) {
0x0000c390 movge r0, 0 | r0 = 0;
| }
| if (r3 >= 0x12c) {
0x0000c394 andlt r0, r0, 1 | r0 &= 1;
| }
0x0000c398 cmp r0, 0 |
| if (r0 == 0) {
0x0000c39c beq 0xc3b8 | goto label_6;
| }
| }
0x0000c3a0 add r0, r4, 0x4800 | r0 = r4 + 0x4800;
0x0000c3a4 add r0, r0, 0x90 | r0 += 0x90;
0x0000c3a8 bl 0xb868 | r0 = pickoneauth ();
0x0000c3ac cmp r0, 0 |
| if (r0 != 0) {
0x0000c3b0 moveq r3, 1 | r3 = 1;
| }
| if (r0 == 0) {
0x0000c3b4 strbeq r3, [r7, 0x8a0] | *((r7 + 0x8a0)) = r3;
| goto label_6;
| }
| }
| label_6:
0x0000c3b8 orr r6, r6, r0 | r6 |= r0;
0x0000c3bc tst r6, 0xff |
| if ((r6 & 0xff) == 0) {
0x0000c3c0 beq 0xc460 | goto label_7;
| }
0x0000c3c4 ldr r3, [pc, 0x100] |
0x0000c3c8 ldr r0, [r4, 0x11c] | r0 = *((r4 + 0x11c));
0x0000c3cc ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000c3d0 ldr r3, [r3] | r3 = *(0xc4c8);
0x0000c3d4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000c3d8 mov r3, 0 | r3 = 0;
0x0000c3dc str r3, [r4, 0x11c] | *((r4 + 0x11c)) = r3;
0x0000c3e0 ldr r3, [pc, 0xe8] |
0x0000c3e4 ldr r0, [r4, 0x678] | r0 = *((r4 + 0x678));
0x0000c3e8 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000c3ec ldr r3, [r3] | r3 = *(0xc4cc);
0x0000c3f0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000c3f4 cmp r0, 0 |
0x0000c3f8 str r0, [r4, 0x11c] | *((r4 + 0x11c)) = r0;
| if (r0 == 0) {
0x0000c3fc bne 0xc408 |
| label_1:
0x0000c400 mov r0, 0x1b | r0 = 0x1b;
0x0000c404 pop {r4, r5, r6, r7, r8, pc} |
| }
0x0000c408 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x0000c40c cmp r3, 1 |
0x0000c410 cmpne r3, 6 | __asm ("cmpne r3, 6");
| if (r3 != 1) {
0x0000c414 beq 0xc434 |
0x0000c418 ldrb r3, [r5, 0x263] | r3 = *((r5 + 0x263));
0x0000c41c cmp r3, 0 |
| if (r3 != 0) {
0x0000c420 bne 0xc434 | goto label_0;
| }
0x0000c424 mov r0, r5 | r0 = r5;
0x0000c428 bl 0xbbe8 | r0 = http_perhapsrewind ();
0x0000c42c cmp r0, 0 |
0x0000c430 popne {r4, r5, r6, r7, r8, pc} |
| }
| label_0:
0x0000c434 mov r0, r5 | r0 = r5;
0x0000c438 bl 0xb8e4 | r0 = http_should_fail ();
0x0000c43c cmp r0, 0 |
0x0000c440 beq 0xc318 |
| } while (r0 == 0);
0x0000c444 ldr r1, [pc, 0x88] | r1 = *(0xc4d0);
0x0000c448 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000c44c add r1, pc, r1 | r1 = pc + r1;
0x0000c450 mov r0, r4 | r0 = r4;
0x0000c454 bl 0x10544 | Curl_failf ();
| label_4:
0x0000c458 mov r0, 0x16 | r0 = 0x16;
0x0000c45c pop {r4, r5, r6, r7, r8, pc} |
| label_7:
0x0000c460 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000c464 cmp r3, 0x12c |
| if (r3 >= 0x12c) {
0x0000c468 bge 0xc434 | goto label_0;
| }
0x0000c46c ldrb r3, [r7, 0x88c] | r3 = *((r7 + 0x88c));
0x0000c470 cmp r3, 0 |
| if (r3 != 0) {
0x0000c474 bne 0xc434 | goto label_0;
| }
0x0000c478 ldrb r3, [r5, 0x262] | r3 = *((r5 + 0x262));
0x0000c47c cmp r3, 0 |
| if (r3 == 0) {
0x0000c480 beq 0xc434 | goto label_0;
| }
0x0000c484 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x0000c488 cmp r3, 1 |
0x0000c48c cmpne r3, 6 | __asm ("cmpne r3, 6");
| if (r3 == 1) {
0x0000c490 beq 0xc434 | goto label_0;
| }
0x0000c494 ldr r3, [pc, 0x34] |
0x0000c498 ldr r0, [r4, 0x678] | r0 = *((r4 + 0x678));
0x0000c49c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x0000c4a0 ldr r3, [r3] | r3 = *(0xc4cc);
0x0000c4a4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000c4a8 cmp r0, 0 |
0x0000c4ac str r0, [r4, 0x11c] | *((r4 + 0x11c)) = r0;
| if (r0 == 0) {
0x0000c4b0 beq 0xc400 | goto label_1;
| }
0x0000c4b4 mov r3, 1 | r3 = 1;
0x0000c4b8 strb r3, [r7, 0x88c] | *((r7 + 0x88c)) = r3;
0x0000c4bc b 0xc434 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc4d8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_output_auth () | void Curl_http_output_auth (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x0000c4d8 push {r0, r1, r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000c4dc ldr r8, [r0] | r8 = *(r0);
0x0000c4e0 ldrb sl, [r0, 0x256] | sl = *((r0 + 0x256));
0x0000c4e4 add lr, r8, 0x4800 | lr = r8 + 0x4800;
0x0000c4e8 cmp sl, 0 |
0x0000c4ec add r7, lr, 0x80 | r7 = lr + 0x80;
0x0000c4f0 add r4, r8, 0x4000 | r4 = r8 + 0x4000;
| if (sl != 0) {
0x0000c4f4 beq 0xc504 |
0x0000c4f8 ldrb ip, [r0, 0x259] | ip = *((r0 + 0x259));
0x0000c4fc cmp ip, 0 |
| if (ip != 0) {
0x0000c500 bne 0xc534 | goto label_2;
| }
| }
0x0000c504 ldrb ip, [r0, 0x258] | ip = *((r0 + 0x258));
0x0000c508 cmp ip, 0 |
| if (ip != 0) {
0x0000c50c bne 0xc534 | goto label_2;
| }
0x0000c510 ldr ip, [r0, 0x17c] | ip = *((r0 + 0x17c));
0x0000c514 cmp ip, 0 |
| if (ip != 0) {
0x0000c518 bne 0xc534 | goto label_2;
| }
0x0000c51c mov r3, 1 | r3 = 1;
0x0000c520 mov r0, ip | r0 = ip;
0x0000c524 strb r3, [r4, 0x88c] | *((r4 + 0x88c)) = r3;
0x0000c528 strb r3, [r4, 0x89c] | *((r4 + 0x89c)) = r3;
| do {
| label_0:
0x0000c52c add sp, sp, 8 |
0x0000c530 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_2:
0x0000c534 ldr ip, [r4, 0x880] | ip = *((r4 + 0x880));
0x0000c538 cmp ip, 0 |
| if (ip != 0) {
0x0000c53c beq 0xc54c |
0x0000c540 ldr r5, [r4, 0x884] | r5 = *((r4 + 0x884));
0x0000c544 cmp r5, 0 |
| if (r5 == 0) {
0x0000c548 streq ip, [r4, 0x884] | *((r4 + 0x884)) = ip;
| goto label_3;
| }
| }
| label_3:
0x0000c54c ldr ip, [r4, 0x890] | ip = *((r4 + 0x890));
0x0000c550 cmp ip, 0 |
| if (ip != 0) {
0x0000c554 beq 0xc564 |
0x0000c558 ldr r5, [r4, 0x894] | r5 = *((r4 + 0x894));
0x0000c55c cmp r5, 0 |
| if (r5 == 0) {
0x0000c560 streq ip, [r4, 0x894] | *((r4 + 0x894)) = ip;
| goto label_4;
| }
| }
| label_4:
0x0000c564 cmp sl, 0 |
0x0000c568 mov r6, r2 | r6 = r2;
0x0000c56c mov r5, r1 | r5 = r1;
0x0000c570 mov sb, r0 | sb = r0;
| if (sl == 0) {
0x0000c574 beq 0xc5d0 | goto label_5;
| }
0x0000c578 ldrb r2, [r0, 0x261] | r2 = *((r0 + 0x261));
0x0000c57c cmp r2, r3 |
| if (r2 != r3) {
0x0000c580 bne 0xc5d0 | goto label_5;
| }
0x0000c584 mov r3, 1 | r3 = 1;
0x0000c588 str r3, [sp] | *(sp) = r3;
0x0000c58c mov r2, r1 | r2 = r1;
0x0000c590 mov r3, r6 | r3 = r6;
0x0000c594 add r1, lr, 0x90 | r1 = lr + 0x90;
0x0000c598 bl 0xbebc | r0 = output_auth_headers ();
0x0000c59c cmp r0, 0 |
0x0000c5a0 bne 0xc52c |
| } while (r0 != 0);
| do {
0x0000c5a4 ldrb r3, [r4, 0x7e0] | r3 = *((r4 + 0x7e0));
0x0000c5a8 cmp r3, 0 |
| if (r3 != 0) {
0x0000c5ac bne 0xc5dc | goto label_6;
| }
| label_1:
0x0000c5b0 mov r3, 0 | r3 = 0;
0x0000c5b4 str r3, [sp] | *(sp) = r3;
0x0000c5b8 mov r2, r5 | r2 = r5;
0x0000c5bc mov r3, r6 | r3 = r6;
0x0000c5c0 mov r1, r7 | r1 = r7;
0x0000c5c4 mov r0, sb | r0 = sb;
0x0000c5c8 bl 0xbebc | output_auth_headers ();
0x0000c5cc b 0xc52c | goto label_0;
| label_5:
0x0000c5d0 mov r3, 1 | r3 = 1;
0x0000c5d4 strb r3, [r4, 0x89c] | *((r4 + 0x89c)) = r3;
0x0000c5d8 b 0xc5a4 |
| } while (1);
| label_6:
0x0000c5dc ldrb r3, [sb, 0x267] | r3 = *((sb + 0x267));
0x0000c5e0 cmp r3, 0 |
| if (r3 != 0) {
0x0000c5e4 bne 0xc5b0 | goto label_1;
| }
0x0000c5e8 ldr r0, [r4, 0x7e4] | r0 = *((r4 + 0x7e4));
0x0000c5ec cmp r0, 0 |
| if (r0 == 0) {
0x0000c5f0 beq 0xc5b0 | goto label_1;
| }
0x0000c5f4 ldrb r3, [r8, 0x4cc] | r3 = *((r8 + 0x4cc));
0x0000c5f8 cmp r3, 0 |
| if (r3 != 0) {
0x0000c5fc bne 0xc5b0 | goto label_1;
| }
0x0000c600 ldr r1, [sb, 0xa0] | r1 = *((sb + 0xa0));
0x0000c604 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000c608 cmp r0, 0 |
| if (r0 != 0) {
0x0000c60c bne 0xc5b0 | goto label_1;
| }
0x0000c610 mov r3, 1 | r3 = 1;
0x0000c614 strb r3, [r4, 0x88c] | *((r4 + 0x88c)) = r3;
0x0000c618 b 0xc52c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc61c */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_input_auth () | void Curl_http_input_auth (int32_t arg_8a0h, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x0000c61c ldr r3, [pc, 0x274] | r3 = *(0xc894);
0x0000c620 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000c624 ldr r7, [r0] | r7 = *(r0);
0x0000c628 sub sp, sp, 0x14 |
0x0000c62c add r3, pc, r3 | r3 = pc + r3;
0x0000c630 str r3, [sp, 4] | var_4h = r3;
0x0000c634 ldr sl, [pc, 0x260] | sl = $d;
0x0000c638 ldr r3, [pc, 0x260] | r3 = *(0xc89c);
0x0000c63c subs sb, r1, 0 | sb = r1 - 0;
0x0000c640 add r6, r7, 0x4a00 | r6 = r7 + 0x4a00;
0x0000c644 add r4, r7, 0x4800 | r4 = r7 + 0x4800;
0x0000c648 add r3, pc, r3 | r3 = pc + r3;
0x0000c64c mov r8, r0 | r8 = r0;
0x0000c650 mov r5, r2 | r5 = r2;
| if (sb == r1) {
0x0000c654 addne r6, r6, 0x7c | r6 += 0x7c;
| }
| if (sb == r1) {
0x0000c658 addne r4, r4, 0x90 | r4 += 0x90;
| }
| if (sb != r1) {
0x0000c65c addeq r6, r6, 0x80 | r6 += 0x80;
| }
| if (sb != r1) {
0x0000c660 addeq r4, r4, 0x80 | r4 += 0x80;
| }
0x0000c664 add sl, pc, sl | sl = pc + sl;
0x0000c668 str r3, [sp, 8] | var_8h = r3;
| label_0:
0x0000c66c ldrb r0, [r5] | r0 = *(r5);
0x0000c670 cmp r0, 0 |
| if (r0 == 0) {
0x0000c674 bne 0xc680 |
0x0000c678 add sp, sp, 0x14 |
0x0000c67c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0000c680 mov r2, 4 | r2 = 4;
0x0000c684 mov r1, r5 | r1 = r5;
0x0000c688 ldr r0, [sp, 4] | r0 = var_4h;
0x0000c68c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c690 cmp r0, 0 |
| if (r0 == 0) {
0x0000c694 beq 0xc750 | goto label_4;
| }
0x0000c698 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c69c tst r3, 0x28 |
0x0000c6a0 beq 0xc708 |
| while (r0 != 0) {
0x0000c6a4 ldr r3, [r6] | r3 = *(r6);
0x0000c6a8 orr r3, r3, 8 | r3 |= 8;
0x0000c6ac str r3, [r6] | *(r6) = r3;
0x0000c6b0 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c6b4 orr r3, r3, 8 | r3 |= 8;
0x0000c6b8 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c6bc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000c6c0 cmp r3, 0x20 |
0x0000c6c4 cmpne r3, 8 | __asm ("cmpne r3, 8");
| if (r3 != 0x20) {
0x0000c6c8 bne 0xc714 | goto label_2;
| }
0x0000c6cc mov r2, r5 | r2 = r5;
0x0000c6d0 mov r1, sb | r1 = sb;
0x0000c6d4 mov r0, r8 | r0 = r8;
0x0000c6d8 bl 0x26dd4 | Curl_input_ntlm ();
0x0000c6dc add fp, r7, 0x4000 |
0x0000c6e0 cmp r0, 0 |
| if (r0 != 0) {
0x0000c6e4 strbeq r0, [fp, 0x8a0] | *(arg_8a0h) = r0;
| }
| if (r0 == 0) {
0x0000c6e8 beq 0xc714 | goto label_2;
| }
0x0000c6ec ldr r1, [pc, 0x1b0] | r1 = *(0xc8a0);
0x0000c6f0 mov r0, r7 | r0 = r7;
0x0000c6f4 add r1, pc, r1 | r1 = pc + r1;
0x0000c6f8 bl 0x104cc | Curl_infof ();
0x0000c6fc mov r3, 1 | r3 = 1;
0x0000c700 strb r3, [fp, 0x8a0] | *(arg_8a0h) = r3;
0x0000c704 b 0xc714 | goto label_2;
0x0000c708 bl 0x31304 | r0 = Curl_auth_is_ntlm_supported ();
0x0000c70c cmp r0, 0 |
0x0000c710 bne 0xc6a4 |
| }
| do {
| label_2:
0x0000c714 mov fp, r5 |
0x0000c718 ldrb r3, [r5], 1 | r3 = *(r5);
| r5++;
0x0000c71c cmp r3, 0 |
0x0000c720 cmpne r3, 0x2c | __asm ("cmpne r3, 0x2c");
0x0000c724 bne 0xc714 |
| } while (r3 != 0);
0x0000c728 cmp r3, 0x2c |
| if (r3 != 0x2c) {
0x0000c72c moveq fp, r5 |
| }
| label_1:
0x0000c730 mov r5, fp | r5 = fp;
0x0000c734 ldrb r0, [fp], 1 | r0 = *(fp);
| fp++;
0x0000c738 cmp r0, 0 |
| if (r0 == 0) {
0x0000c73c beq 0xc66c | goto label_0;
| }
0x0000c740 bl 0x2f898 | r0 = Curl_isspace ();
0x0000c744 cmp r0, 0 |
| if (r0 != 0) {
0x0000c748 bne 0xc730 | goto label_1;
| }
0x0000c74c b 0xc66c | goto label_0;
| label_4:
0x0000c750 mov r2, 6 | r2 = 6;
0x0000c754 mov r1, r5 | r1 = r5;
0x0000c758 ldr r0, [sp, 8] | r0 = var_8h;
0x0000c75c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c760 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0000c764 beq 0xc7e4 | goto label_5;
| }
0x0000c768 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c76c tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0000c770 beq 0xc788 |
0x0000c774 ldr r1, [pc, 0x12c] | r1 = *(0xc8a4);
0x0000c778 mov r0, r7 | r0 = r7;
0x0000c77c add r1, pc, r1 | r1 = pc + r1;
0x0000c780 bl 0x104cc | Curl_infof ();
0x0000c784 b 0xc714 | goto label_2;
| }
0x0000c788 bl 0x305cc | r0 = Curl_auth_is_digest_supported ();
0x0000c78c cmp r0, 0 |
| if (r0 == 0) {
0x0000c790 beq 0xc714 | goto label_2;
| }
0x0000c794 ldr r3, [r6] | r3 = *(r6);
0x0000c798 mov r2, r5 | r2 = r5;
0x0000c79c orr r3, r3, 2 | r3 |= 2;
0x0000c7a0 str r3, [r6] | *(r6) = r3;
0x0000c7a4 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c7a8 mov r1, sb | r1 = sb;
0x0000c7ac orr r3, r3, 2 | r3 |= 2;
0x0000c7b0 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c7b4 mov r0, r8 | r0 = r8;
0x0000c7b8 bl 0x214f0 | r0 = Curl_input_digest ();
0x0000c7bc cmp r0, 0 |
| if (r0 == 0) {
0x0000c7c0 beq 0xc714 | goto label_2;
| }
0x0000c7c4 ldr r1, [pc, 0xe0] | r1 = *(0xc8a8);
0x0000c7c8 add r1, pc, r1 | r1 = pc + r1;
| label_3:
0x0000c7cc mov r0, r7 | r0 = r7;
0x0000c7d0 bl 0x104cc | Curl_infof ();
0x0000c7d4 add r3, r7, 0x4000 | r3 = r7 + 0x4000;
0x0000c7d8 mov r2, 1 | r2 = 1;
0x0000c7dc strb r2, [r3, 0x8a0] | *((r3 + 0x8a0)) = r2;
0x0000c7e0 b 0xc714 | goto label_2;
| label_5:
0x0000c7e4 mov r2, 5 | r2 = 5;
0x0000c7e8 mov r1, r5 | r1 = r5;
0x0000c7ec mov r0, sl | r0 = sl;
0x0000c7f0 str r3, [sp, 0xc] | var_ch = r3;
0x0000c7f4 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c7f8 subs fp, r0, 0 |
| if (fp == r0) {
0x0000c7fc beq 0xc848 | goto label_6;
| }
0x0000c800 ldr r2, [r6] | r2 = *(r6);
0x0000c804 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000c808 orr r2, r2, 1 | r2 |= 1;
0x0000c80c str r2, [r6] | *(r6) = r2;
0x0000c810 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0000c814 ldr fp, [r4, 4] | fp = *((r4 + 4));
0x0000c818 orr r2, r2, 1 | r2 |= 1;
0x0000c81c cmp fp, 1 |
0x0000c820 str r2, [r4, 8] | *((r4 + 8)) = r2;
| if (fp != 1) {
0x0000c824 bne 0xc714 | goto label_2;
| }
0x0000c828 ldr r1, [pc, 0x80] | r1 = *(0xc8ac);
0x0000c82c str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c830 add r1, pc, r1 | r1 = pc + r1;
0x0000c834 mov r0, r7 | r0 = r7;
0x0000c838 bl 0x104cc | Curl_infof ();
0x0000c83c add r3, r7, 0x4000 | r3 = r7 + 0x4000;
0x0000c840 strb fp, [r3, 0x8a0] | *((r3 + 0x8a0)) = fp;
0x0000c844 b 0xc714 | goto label_2;
| label_6:
0x0000c848 ldr r0, [pc, 0x64] | r0 = *(0xc8b0);
0x0000c84c mov r2, 6 | r2 = 6;
0x0000c850 mov r1, r5 | r1 = r5;
0x0000c854 add r0, pc, r0 | r0 = pc + r0;
0x0000c858 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c85c cmp r0, 0 |
| if (r0 == 0) {
0x0000c860 beq 0xc714 | goto label_2;
| }
0x0000c864 ldr r3, [r6] | r3 = *(r6);
0x0000c868 orr r3, r3, 0x40 | r3 |= 0x40;
0x0000c86c str r3, [r6] | *(r6) = r3;
0x0000c870 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c874 orr r3, r3, 0x40 | r3 |= 0x40;
0x0000c878 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c87c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000c880 cmp r3, 0x40 |
| if (r3 != 0x40) {
0x0000c884 bne 0xc714 | goto label_2;
| }
0x0000c888 ldr r1, [pc, 0x28] | r1 = *(0xc8b4);
0x0000c88c str fp, [r4, 8] | *((r4 + 8)) = fp;
0x0000c890 add r1, pc, r1 | r1 = pc + r1;
0x0000c894 b 0xc7cc | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc924 */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_done () | void Curl_http_done (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0000c924 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000c928 ldr r4, [r0] | r4 = *(r0);
0x0000c92c mov sb, 0 | sb = 0;
0x0000c930 add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x0000c934 ldr r8, [r4, 0x12c] | r8 = *((r4 + 0x12c));
0x0000c938 strb sb, [r3, 0x88d] | *((r3 + 0x88d)) = sb;
0x0000c93c strb sb, [r3, 0x89d] | *((r3 + 0x89d)) = sb;
0x0000c940 mov r6, r0 | r6 = r0;
0x0000c944 mov r5, r1 | r5 = r1;
0x0000c948 mov r7, r2 | r7 = r2;
0x0000c94c bl 0x20ed0 | Curl_unencode_cleanup ();
0x0000c950 ldr r3, [r4, 0x174] | r3 = *((r4 + 0x174));
0x0000c954 cmp r8, sb |
0x0000c958 str r3, [r6, 0x2f0] | *((r6 + 0x2f0)) = r3;
0x0000c95c ldr r3, [r4, 0x1c8] | r3 = *((r4 + 0x1c8));
0x0000c960 str r3, [r6, 0x2f4] | *((r6 + 0x2f4)) = r3;
| if (r8 != sb) {
0x0000c964 bne 0xc974 | goto label_2;
| }
| label_0:
0x0000c968 mov r5, 0 | r5 = 0;
| do {
| label_1:
0x0000c96c mov r0, r5 | r0 = r5;
0x0000c970 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0000c974 ldr r0, [r8, 0x1b4] | r0 = *((r8 + 0x1b4));
0x0000c978 cmp r0, 0 |
| if (r0 != 0) {
0x0000c97c beq 0xc988 |
0x0000c980 bl 0xc8e4 | Curl_add_buffer_free ();
0x0000c984 str sb, [r8, 0x1b4] | *((r8 + 0x1b4)) = sb;
| }
0x0000c988 add r0, r8, 0x30 | r0 = r8 + 0x30;
0x0000c98c bl 0x2bb24 | Curl_mime_cleanpart ();
0x0000c990 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x0000c994 sub r3, r3, 3 | r3 -= 3;
0x0000c998 cmp r3, 2 |
| if (r3 <= 2) {
0x0000c99c bhi 0xc9b4 |
0x0000c9a0 ldrd r2, r3, [r8, 0x20] | __asm ("ldrd r2, r3, [r8, 0x20]");
0x0000c9a4 ldrd r0, r1, [r8, 0x28] | __asm ("ldrd r0, r1, [r8, 0x28]");
0x0000c9a8 adds sl, r2, r0 | sl = r2 + r0;
0x0000c9ac adc fp, r3, r1 | __asm ("adc fp, r3, r1");
0x0000c9b0 strd sl, fp, [r4, 0x90] | __asm ("strd sl, fp, [r4, 0x90]");
| }
0x0000c9b4 cmp r5, 0 |
0x0000c9b8 bne 0xc96c |
| } while (r5 != 0);
0x0000c9bc cmp r7, 0 |
| if (r7 != 0) {
0x0000c9c0 bne 0xc968 | goto label_0;
| }
0x0000c9c4 ldrb r3, [r6, 0x260] | r3 = *((r6 + 0x260));
0x0000c9c8 cmp r3, 0 |
| if (r3 != 0) {
0x0000c9cc bne 0xc968 | goto label_0;
| }
0x0000c9d0 ldrb r3, [r4, 0x4f1] | r3 = *((r4 + 0x4f1));
0x0000c9d4 cmp r3, 0 |
| if (r3 != 0) {
0x0000c9d8 bne 0xc968 | goto label_0;
| }
0x0000c9dc ldrd r2, r3, [r8, 0x20] | __asm ("ldrd r2, r3, [r8, 0x20]");
0x0000c9e0 ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x0000c9e4 adds r6, r2, r1 | r6 = r2 + r1;
0x0000c9e8 adc r7, r3, r1, asr 31 | __asm ("adc r7, r3, r1, asr 31");
0x0000c9ec ldr r1, [r4, 0xa4] | r1 = *((r4 + 0xa4));
0x0000c9f0 subs r2, r6, r1 | r2 = r6 - r1;
0x0000c9f4 sbc r3, r7, r1, asr 31 | __asm ("sbc r3, r7, r1, asr 31");
0x0000c9f8 cmp r2, 1 |
0x0000c9fc sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x0000ca00 bge 0xc968 | goto label_0;
| }
0x0000ca04 ldr r1, [pc, 0x10] | r1 = *(0xca18);
0x0000ca08 mov r0, r4 | r0 = r4;
0x0000ca0c add r1, pc, r1 | r1 = pc + r1;
0x0000ca10 bl 0x10544 | Curl_failf ();
0x0000ca14 mov r5, 0x34 | r5 = 0x34;
0x0000ca18 b 0xc96c | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xcdac */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_connect () | void Curl_http_connect (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| char * dest;
| int32_t var_18h;
| int32_t var_98h;
| r0 = arg1;
| r1 = arg2;
0x0000cdac push {r4, r5, r6, r7, r8, lr} |
0x0000cdb0 mov r4, r0 | r4 = r0;
0x0000cdb4 sub sp, sp, 0x98 |
0x0000cdb8 mov r7, r1 | r7 = r1;
0x0000cdbc mov r1, 0 | r1 = 0;
0x0000cdc0 bl 0x1cb34 | Curl_conncontrol ();
0x0000cdc4 mov r1, 0 | r1 = 0;
0x0000cdc8 mov r0, r4 | r0 = r4;
0x0000cdcc bl 0x26274 | r0 = Curl_proxy_connect ();
0x0000cdd0 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0000cdd4 bne 0xcef4 | goto label_1;
| }
0x0000cdd8 ldrb r3, [r4, 0x26a] | r3 = *((r4 + 0x26a));
0x0000cddc cmp r3, 0 |
| if (r3 != 0) {
0x0000cde0 bne 0xcef4 | goto label_1;
| }
0x0000cde4 ldr r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x0000cde8 cmp r3, 2 |
| if (r3 == 2) {
0x0000cdec bne 0xcdfc |
0x0000cdf0 ldrb r3, [r4, 0x271] | r3 = *((r4 + 0x271));
0x0000cdf4 cmp r3, 0 |
| if (r3 == 0) {
0x0000cdf8 beq 0xcef4 | goto label_1;
| }
| }
0x0000cdfc mov r0, r4 | r0 = r4;
0x0000ce00 bl 0x255fc | r0 = Curl_connect_ongoing ();
0x0000ce04 cmp r0, 0 |
| if (r0 != 0) {
0x0000ce08 bne 0xcef4 | goto label_1;
| }
0x0000ce0c ldr r5, [r4] | r5 = *(r4);
0x0000ce10 ldrb r3, [r5, 0x65c] | r3 = *((r5 + 0x65c));
0x0000ce14 cmp r3, 0 |
0x0000ce18 bne 0xce44 |
| while (r0 == 0) {
0x0000ce1c ldr r3, [r4, 0x288] | r3 = *((r4 + 0x288));
0x0000ce20 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000ce24 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0000ce28 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 2) != 0) {
0x0000ce2c strbeq r3, [r7] | *(r7) = r3;
| }
| if ((r3 & 2) == 0) {
0x0000ce30 beq 0xcef4 | goto label_1;
| }
0x0000ce34 mov r1, r7 | r1 = r7;
0x0000ce38 mov r0, r4 | r0 = r4;
0x0000ce3c bl 0xb988 | https_connecting ();
0x0000ce40 b 0xcef0 | goto label_2;
0x0000ce44 ldrb r3, [r4, 0x25b] | r3 = *((r4 + 0x25b));
0x0000ce48 cmp r3, 0 |
0x0000ce4c add r3, sp, 0x10 | r3 += dest;
| if (r3 == 0) {
0x0000ce50 beq 0xcf00 | goto label_3;
| }
0x0000ce54 ldr r1, [pc, 0xb0] | r1 = *(0xcf08);
0x0000ce58 add r1, pc, r1 | r1 = pc + r1;
| label_0:
0x0000ce5c mov r0, r3 | r0 = r3;
0x0000ce60 bl 0x5c28 | strcpy (r0, r1);
0x0000ce64 add r2, r5, 0x4000 | r2 = r5 + 0x4000;
0x0000ce68 ldr r1, [r2, 0xac0] | r1 = *((r2 + 0xac0));
0x0000ce6c add r5, r5, 0x4a00 | r5 += 0x4a00;
0x0000ce70 str r1, [sp, 0xc] | var_ch = r1;
0x0000ce74 ldr r2, [r2, 0xaf4] | r2 = *((r2 + 0xaf4));
0x0000ce78 add r8, sp, 0x18 | r8 += var_18h;
0x0000ce7c str r2, [sp, 8] | var_8h = r2;
0x0000ce80 add r2, r5, 0x90 | r2 = r5 + 0x90;
0x0000ce84 str r2, [sp, 4] | var_4h = r2;
0x0000ce88 ldr r2, [pc, 0x80] | r2 = $d;
0x0000ce8c add r5, r5, 0xc4 | r5 += 0xc4;
0x0000ce90 str r5, [sp] | *(sp) = r5;
0x0000ce94 add r2, pc, r2 | r2 = pc + r2;
0x0000ce98 mov r1, 0x80 | r1 = 0x80;
0x0000ce9c mov r3, r0 | r3 = r0;
0x0000cea0 mov r0, r8 | r0 = r8;
0x0000cea4 bl 0x579c | fcn_0000579c ();
0x0000cea8 bl 0xc8bc | Curl_add_buffer_init ();
0x0000ceac subs r5, r0, 0 | r5 -= var_18h;
| if (r5 != var_18h) {
0x0000ceb0 moveq r6, 0x1b | r6 = 0x1b;
| }
| if (r5 == var_18h) {
0x0000ceb4 beq 0xcef4 | goto label_1;
| }
0x0000ceb8 mov r1, r8 | r1 = r8;
0x0000cebc bl 0xcd18 | Curl_add_bufferf ();
0x0000cec0 subs r3, r0, 0 | r3 -= var_18h;
| if (r3 == var_18h) {
0x0000cec4 movne r6, r3 | r6 = r3;
| }
| if (r3 != var_18h) {
0x0000cec8 bne 0xcef4 | goto label_1;
| }
0x0000cecc ldr r2, [r4] | r2 = *(r4);
0x0000ced0 str r3, [sp] | *(sp) = r3;
0x0000ced4 add r2, r2, 0x4a00 | r2 += 0x4a00;
0x0000ced8 add r2, r2, 0x78 | r2 += 0x78;
0x0000cedc mov r1, r4 | r1 = r4;
0x0000cee0 mov r0, r5 | r0 = r5;
0x0000cee4 bl 0xca20 | r0 = Curl_add_buffer_send ();
0x0000cee8 cmp r0, 0 |
0x0000ceec beq 0xce1c |
| }
| label_2:
0x0000cef0 mov r6, r0 | r6 = r0;
| label_1:
0x0000cef4 mov r0, r6 | r0 = r6;
0x0000cef8 add sp, sp, 0x98 |
0x0000cefc pop {r4, r5, r6, r7, r8, pc} |
| label_3:
0x0000cf00 ldr r1, [pc, 0xc] | r1 = *(0xcf10);
0x0000cf04 add r1, pc, r1 | r1 = pc + r1;
0x0000cf08 b 0xce5c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xd478 */
| #include <stdint.h>
|
; (fcn) sym.Curl_http () | void Curl_http (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_30h;
| int32_t var_38h;
| int32_t var_3ch;
| char * s;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_48h_2;
| int32_t var_50h;
| int32_t var_54h;
| size_t nmeb;
| void * s1;
| int32_t var_60h;
| int32_t var_64h;
| int32_t var_6ch;
| int32_t var_6dh;
| int32_t var_70h;
| int32_t var_74h;
| int32_t var_7ch;
| r0 = arg1;
| r1 = arg2;
0x0000d478 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000d47c ldr sl, [r0] | sl = *(r0);
0x0000d480 ldr r3, [pc, 0xf0c] | r3 = *(0xe390);
0x0000d484 sub sp, sp, 0x7c |
0x0000d488 add r3, pc, r3 | r3 = pc + r3;
0x0000d48c add r6, sl, 0x4000 | r6 = sl + 0x4000;
0x0000d490 str r3, [sp, 0x44] | var_44h = r3;
0x0000d494 ldr r3, [r6, 0x9ec] | r3 = *((r6 + 0x9ec));
0x0000d498 mov r5, 1 | r5 = 1;
0x0000d49c str r3, [sp, 0x40] | s = r3;
0x0000d4a0 mov r3, 0 | r3 = 0;
0x0000d4a4 str r3, [sp, 0x6c] | var_6ch = r3;
0x0000d4a8 str r3, [sp, 0x70] | var_70h = r3;
0x0000d4ac strb r3, [sp, 0x74] | var_74h = r3;
0x0000d4b0 ldr r3, [r0, 0xa0] | r3 = *((r0 + 0xa0));
0x0000d4b4 str r3, [sp, 0x58] | nmeb = r3;
0x0000d4b8 ldr r3, [sl, 0x3d0] | r3 = *((sl + 0x3d0));
0x0000d4bc strb r5, [r1] | *(r1) = r5;
0x0000d4c0 str r3, [sp, 0x30] | var_30h = r3;
0x0000d4c4 ldr r3, [r0, 0x180] | r3 = *((r0 + 0x180));
0x0000d4c8 cmp r3, 0x13 |
| if (r3 > 0x13) {
0x0000d4cc bgt 0xd540 | goto label_8;
| }
0x0000d4d0 ldr r3, [r0, 0x504] | r3 = *((r0 + 0x504));
0x0000d4d4 cmp r3, 3 |
| if (r3 != 3) {
0x0000d4d8 moveq r3, 0x14 | r3 = 0x14;
| }
| if (r3 != 3) {
0x0000d4dc streq r3, [r0, 0x180] | *((r0 + 0x180)) = r3;
| }
| if (r3 == 3) {
0x0000d4e0 beq 0xd540 | goto label_8;
| }
0x0000d4e4 ldrb r3, [r6, 0x7e0] | r3 = *((r6 + 0x7e0));
0x0000d4e8 mov r4, r0 | r4 = r0;
0x0000d4ec cmp r3, 0 |
0x0000d4f0 ldr sb, [sl, 0x12c] | sb = *((sl + 0x12c));
| if (r3 != 0) {
0x0000d4f4 bne 0xd54c | goto label_33;
| }
0x0000d4f8 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0000d4fc ldr r3, [pc, 0xe94] |
0x0000d500 ldr r0, [r6, 0x7e4] | r0 = *((r6 + 0x7e4));
0x0000d504 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000d508 ldr r3, [r3] | r3 = $d;
0x0000d50c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000d510 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0000d514 ldr r3, [pc, 0xe80] |
0x0000d518 ldr r0, [r4, 0xa0] | r0 = *((r4 + 0xa0));
0x0000d51c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000d520 ldr r3, [r3] | r3 = *(0xe398);
0x0000d524 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000d528 cmp r0, 0 |
| if (r0 == 0) {
0x0000d52c ldrne r3, [r4, 0x100] | r3 = *((r4 + 0x100));
| }
0x0000d530 str r0, [r6, 0x7e4] | *((r6 + 0x7e4)) = r0;
| if (r0 == 0) {
0x0000d534 strne r3, [r6, 0x7e8] | *((r6 + 0x7e8)) = r3;
| }
| if (r0 != 0) {
0x0000d538 bne 0xd54c | goto label_33;
| }
| label_0:
0x0000d53c mov r5, 0x1b | r5 = 0x1b;
| do {
| label_8:
0x0000d540 mov r0, r5 | r0 = r5;
0x0000d544 add sp, sp, 0x7c |
0x0000d548 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_33:
0x0000d54c mov r3, 0 | r3 = 0;
0x0000d550 mov r2, 0 | r2 = 0;
0x0000d554 strd r2, r3, [sb, 0x20] | __asm ("strd r2, r3, [sb, 0x20]");
0x0000d558 strd r2, r3, [sb, 0x28] | __asm ("strd r2, r3, [sb, 0x28]");
0x0000d55c ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x0000d560 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000d564 tst r3, 7 |
| if ((r3 & 7) != 0) {
0x0000d568 beq 0xd580 |
0x0000d56c ldrb r3, [sl, 0x4d1] | r3 = *((sl + 0x4d1));
0x0000d570 cmp r3, 0 |
0x0000d574 ldr r3, [sp, 0x30] | r3 = var_30h;
| if (r3 == 0) {
0x0000d578 movne r3, 5 | r3 = 5;
| }
0x0000d57c str r3, [sp, 0x30] | var_30h = r3;
| }
0x0000d580 ldr r3, [sl, 0x520] | r3 = *((sl + 0x520));
0x0000d584 cmp r3, 0 |
0x0000d588 str r3, [sp, 0x38] | var_38h = r3;
| if (r3 == 0) {
0x0000d58c bne 0xd5d4 |
0x0000d590 ldrb r3, [sl, 0x4d0] | r3 = *((sl + 0x4d0));
0x0000d594 cmp r3, 0 |
| if (r3 != 0) {
0x0000d598 bne 0xd77c | goto label_34;
| }
0x0000d59c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000d5a0 sub r3, r3, 2 | r3 -= 2;
0x0000d5a4 cmp r3, 5 |
| if (r3 > 5) {
| /* switch table (6 cases) at 0xd5b0 */
0x0000d5a8 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0000d5ac b 0xd764 | goto label_35;
0x0000d5b0 b 0xd5c8 | goto label_36;
0x0000d5b4 b 0xd5c8 | goto label_36;
0x0000d5b8 b 0xd5c8 | goto label_36;
0x0000d5bc b 0xd788 | goto label_37;
0x0000d5c0 b 0xd770 | goto label_38;
0x0000d5c4 b 0xd758 | goto label_39;
| label_36:
0x0000d5c8 ldr r3, [pc, 0xdd0] | r3 = *(0xe39c);
0x0000d5cc add r3, pc, r3 | r3 = pc + r3;
| label_1:
0x0000d5d0 str r3, [sp, 0x38] | var_38h = r3;
| }
0x0000d5d4 ldr r1, [pc, 0xdc8] | r1 = *(0xe3a0);
0x0000d5d8 mov r0, r4 | r0 = r4;
0x0000d5dc add r1, pc, r1 | r1 = pc + r1;
0x0000d5e0 bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000d5e4 cmp r0, 0 |
| if (r0 != 0) {
0x0000d5e8 beq 0xd60c |
0x0000d5ec ldr r2, [sp, 0x44] | r2 = var_44h;
0x0000d5f0 ldr r3, [pc, 0xda0] |
0x0000d5f4 ldr r0, [r4, 0x29c] | r0 = *((r4 + 0x29c));
0x0000d5f8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000d5fc ldr r3, [r3] | r3 = $d;
0x0000d600 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000d604 mov r3, 0 | r3 = 0;
0x0000d608 str r3, [r4, 0x29c] | *((r4 + 0x29c)) = r3;
| }
0x0000d60c mov r3, 0 | r3 = 0;
0x0000d610 ldr r2, [sp, 0x40] | r2 = s;
0x0000d614 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0000d618 mov r0, r4 | r0 = r4;
0x0000d61c bl 0xc4d8 | r0 = Curl_http_output_auth ();
0x0000d620 subs r5, r0, 0 | r5 = r0 - 0;
0x0000d624 bne 0xd540 |
| } while (r5 != r0);
0x0000d628 ldrb r3, [r6, 0x88d] | r3 = *((r6 + 0x88d));
0x0000d62c cmp r3, 0 |
| if (r3 == 0) {
0x0000d630 bne 0xd640 |
0x0000d634 ldrb r3, [r6, 0x89d] | r3 = *((r6 + 0x89d));
0x0000d638 cmp r3, 0 |
| if (r3 == 0) {
0x0000d63c beq 0xd654 | goto label_40;
| }
| }
0x0000d640 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000d644 cmp r3, 1 |
0x0000d648 cmpne r3, 6 | __asm ("cmpne r3, 6");
| if (r3 == 1) {
0x0000d64c movne r3, 1 | r3 = 1;
| }
| if (r3 == 1) {
0x0000d650 bne 0xd658 |
| label_40:
0x0000d654 mov r3, 0 | r3 = 0;
| }
0x0000d658 strb r3, [r4, 0x262] | *((r4 + 0x262)) = r3;
0x0000d65c ldr r2, [sp, 0x44] | r2 = var_44h;
0x0000d660 ldr r3, [pc, 0xd30] | r3 = $d;
0x0000d664 ldr r0, [r4, 0x2ac] | r0 = *((r4 + 0x2ac));
0x0000d668 ldr r8, [r2, r3] | r8 = *((r2 + r3));
0x0000d66c ldr r3, [r8] | r3 = *(r8);
0x0000d670 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000d674 mov r3, 0 | r3 = 0;
0x0000d678 str r3, [r4, 0x2ac] | *((r4 + 0x2ac)) = r3;
0x0000d67c ldr r3, [sl, 0x680] | r3 = *((sl + 0x680));
0x0000d680 cmp r3, 0 |
| if (r3 == 0) {
0x0000d684 beq 0xd794 | goto label_41;
| }
0x0000d688 ldr r1, [pc, 0xd18] | r1 = *(0xe3a4);
0x0000d68c mov r0, r4 | r0 = r4;
0x0000d690 add r1, pc, r1 | r1 = pc + r1;
0x0000d694 bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000d698 cmp r0, 0 |
| if (r0 != 0) {
0x0000d69c bne 0xd794 | goto label_41;
| }
0x0000d6a0 ldr r0, [pc, 0xd04] | r0 = *(0xe3a8);
0x0000d6a4 ldr r1, [sl, 0x680] | r1 = *((sl + 0x680));
0x0000d6a8 add r0, pc, r0 | r0 = pc + r0;
0x0000d6ac bl 0x5b80 | r0 = fcn_00005b80 ();
0x0000d6b0 cmp r0, 0 |
0x0000d6b4 str r0, [r4, 0x2ac] | *((r4 + 0x2ac)) = r0;
| if (r0 == 0) {
0x0000d6b8 beq 0xd53c | goto label_0;
| }
| label_2:
0x0000d6bc ldr r3, [sl, 0x518] | r3 = *((sl + 0x518));
0x0000d6c0 cmp r3, 0 |
| if (r3 != 0) {
0x0000d6c4 bne 0xd7a0 | goto label_42;
| }
| label_3:
0x0000d6c8 mov r3, 0 | r3 = 0;
| label_4:
0x0000d6cc ldr r1, [pc, 0xcdc] | r1 = *(0xe3ac);
0x0000d6d0 mov r0, r4 | r0 = r4;
0x0000d6d4 add r1, pc, r1 | r1 = pc + r1;
0x0000d6d8 str r3, [sp, 0x50] | var_50h = r3;
0x0000d6dc bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000d6e0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000d6e4 bne 0xd7c0 | goto label_43;
| }
0x0000d6e8 ldr r2, [sl, 0x52c] | r2 = *((sl + 0x52c));
0x0000d6ec ldr r3, [r8] | r3 = *(r8);
0x0000d6f0 cmp r2, 0 |
0x0000d6f4 ldr r0, [r4, 0x2a0] | r0 = *((r4 + 0x2a0));
| if (r2 == 0) {
0x0000d6f8 beq 0xd7c0 | goto label_43;
| }
0x0000d6fc blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x0000d700 ldr r0, [pc, 0xcac] | r0 = *(0xe3b0);
0x0000d704 str r5, [r4, 0x2a0] | *((r4 + 0x2a0)) = r5;
0x0000d708 ldr r1, [sl, 0x52c] | r1 = *((sl + 0x52c));
0x0000d70c add r0, pc, r0 | r0 = pc + r0;
0x0000d710 bl 0x5b80 | r0 = fcn_00005b80 ();
0x0000d714 cmp r0, 0 |
0x0000d718 str r0, [r4, 0x2a0] | *((r4 + 0x2a0)) = r0;
| if (r0 == 0) {
0x0000d71c beq 0xd53c | goto label_0;
| }
| label_5:
0x0000d720 ldr r1, [pc, 0xc90] | r1 = *(0xe3b4);
0x0000d724 mov r0, r4 | r0 = r4;
0x0000d728 add r1, pc, r1 | r1 = pc + r1;
0x0000d72c bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000d730 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0000d734 beq 0xd7d8 | goto label_44;
| }
| label_6:
0x0000d738 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000d73c cmp r3, 3 |
| if (r3 == 3) {
0x0000d740 beq 0xd880 | goto label_45;
| }
0x0000d744 cmp r3, 4 |
| if (r3 != 4) {
0x0000d748 addeq r3, sl, 0x238 | r3 = sl + 0x238;
| }
| if (r3 == 4) {
0x0000d74c movne r3, 0 | r3 = 0;
| }
0x0000d750 str r3, [sb] | *(sb) = r3;
0x0000d754 b 0xd8ac | goto label_46;
| label_39:
0x0000d758 ldr r3, [pc, 0xc5c] | r3 = *(0xe3b8);
0x0000d75c add r3, pc, r3 | r3 = pc + r3;
0x0000d760 b 0xd5d0 | goto label_1;
| label_35:
0x0000d764 ldr r3, [pc, 0xc54] | r3 = *(0xe3bc);
0x0000d768 add r3, pc, r3 | r3 = pc + r3;
0x0000d76c b 0xd5d0 | goto label_1;
| label_38:
0x0000d770 ldr r3, [pc, 0xc4c] | r3 = *(0xe3c0);
0x0000d774 add r3, pc, r3 | r3 = pc + r3;
0x0000d778 b 0xd5d0 | goto label_1;
| label_34:
0x0000d77c ldr r3, [pc, 0xc44] | r3 = *(0xe3c4);
0x0000d780 add r3, pc, r3 | r3 = pc + r3;
0x0000d784 b 0xd5d0 | goto label_1;
| label_37:
0x0000d788 ldr r3, [pc, 0xc3c] | r3 = *(0xe3c8);
0x0000d78c add r3, pc, r3 | r3 = pc + r3;
0x0000d790 b 0xd5d0 | goto label_1;
| label_41:
0x0000d794 mov r3, 0 | r3 = 0;
0x0000d798 str r3, [r4, 0x2ac] | *((r4 + 0x2ac)) = r3;
0x0000d79c b 0xd6bc | goto label_2;
| label_42:
0x0000d7a0 ldr r1, [pc, 0xc28] | r1 = *(0xe3cc);
0x0000d7a4 mov r0, r4 | r0 = r4;
0x0000d7a8 add r1, pc, r1 | r1 = pc + r1;
0x0000d7ac bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000d7b0 cmp r0, 0 |
| if (r0 != 0) {
0x0000d7b4 bne 0xd6c8 | goto label_3;
| }
0x0000d7b8 ldr r3, [sl, 0x518] | r3 = *((sl + 0x518));
0x0000d7bc b 0xd6cc | goto label_4;
| label_43:
0x0000d7c0 ldr r3, [r8] | r3 = *(r8);
0x0000d7c4 ldr r0, [r4, 0x2a0] | r0 = *((r4 + 0x2a0));
0x0000d7c8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000d7cc mov r3, 0 | r3 = 0;
0x0000d7d0 str r3, [r4, 0x2a0] | *((r4 + 0x2a0)) = r3;
0x0000d7d4 b 0xd720 | goto label_5;
| label_44:
0x0000d7d8 ldrb r3, [sl, 0x4cb] | r3 = *((sl + 0x4cb));
0x0000d7dc cmp r3, 0 |
| if (r3 == 0) {
0x0000d7e0 beq 0xd738 | goto label_6;
| }
0x0000d7e4 ldr r1, [pc, 0xbe8] | r1 = *(0xe3d0);
0x0000d7e8 mov r0, r4 | r0 = r4;
0x0000d7ec add r1, pc, r1 | r1 = pc + r1;
0x0000d7f0 bl 0x17e50 | Curl_checkheaders ();
0x0000d7f4 ldr r3, [r8] | r3 = *(r8);
0x0000d7f8 mov r5, r0 | r5 = r0;
0x0000d7fc ldr r0, [r4, 0x2bc] | r0 = *((r4 + 0x2bc));
0x0000d800 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000d804 cmp r5, 0 |
0x0000d808 str r7, [r4, 0x2bc] | *((r4 + 0x2bc)) = r7;
| if (r5 == 0) {
0x0000d80c beq 0xd83c | goto label_47;
| }
0x0000d810 mov r0, r5 | r0 = r5;
0x0000d814 bl 0xc1ec | r0 = Curl_copy_header_value ();
0x0000d818 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0000d81c beq 0xd53c | goto label_0;
| }
0x0000d820 ldrb r3, [r5] | r3 = *(r5);
0x0000d824 mov r1, r5 | r1 = r5;
0x0000d828 cmp r3, 0 |
| if (r3 == 0) {
0x0000d82c beq 0xd874 | goto label_48;
| }
0x0000d830 ldr r2, [pc, 0xba0] | r2 = *(0xe3d4);
0x0000d834 add r2, pc, r2 | r2 = pc + r2;
0x0000d838 b 0xd848 | goto label_7;
| label_47:
0x0000d83c ldr r1, [pc, 0xb98] | r1 = *(0xe3d8);
0x0000d840 add r1, pc, r1 | r1 = pc + r1;
0x0000d844 mov r2, r1 | r2 = r1;
| label_7:
0x0000d848 ldr r0, [pc, 0xb90] | r0 = *(0xe3dc);
0x0000d84c add r0, pc, r0 | r0 = pc + r0;
0x0000d850 bl 0x5b80 | fcn_00005b80 ();
0x0000d854 ldr r3, [r8] | r3 = *(r8);
0x0000d858 str r0, [r4, 0x2bc] | *((r4 + 0x2bc)) = r0;
0x0000d85c mov r0, r5 | r0 = r5;
0x0000d860 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000d864 ldr r3, [r4, 0x2bc] | r3 = *((r4 + 0x2bc));
0x0000d868 cmp r3, 0 |
| if (r3 != 0) {
0x0000d86c bne 0xd738 | goto label_6;
| }
0x0000d870 b 0xd53c | goto label_0;
| label_48:
0x0000d874 ldr r2, [pc, 0xb68] | r2 = *(0xe3e0);
0x0000d878 add r2, pc, r2 | r2 = pc + r2;
0x0000d87c b 0xd848 | goto label_7;
| label_45:
0x0000d880 add r7, sb, 0x30 | r7 = sb + 0x30;
0x0000d884 mov r0, r7 | r0 = r7;
0x0000d888 bl 0x2bb24 | Curl_mime_cleanpart ();
0x0000d88c ldr r3, [r6, 0xa20] | r3 = *((r6 + 0xa20));
0x0000d890 ldr r2, [sl, 0x230] | r2 = *((sl + 0x230));
0x0000d894 mov r1, r7 | r1 = r7;
0x0000d898 mov r0, sl | r0 = sl;
0x0000d89c bl 0x9610 | r0 = Curl_getformdata ();
0x0000d8a0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0000d8a4 streq r7, [sb] | *(sb) = r7;
| goto label_49;
| }
| if (r5 != r0) {
| label_49:
0x0000d8a8 bne 0xd540 | goto label_8;
| }
| label_46:
0x0000d8ac ldr r3, [sb] | r3 = *(sb);
0x0000d8b0 cmp r3, 0 |
| if (r3 == 0) {
0x0000d8b4 beq 0xd954 | goto label_50;
| }
0x0000d8b8 ldr r1, [pc, 0xb28] | r1 = *(0xe3e4);
0x0000d8bc mov r0, r4 | r0 = r4;
0x0000d8c0 add r1, pc, r1 | r1 = pc + r1;
0x0000d8c4 bl 0x17e50 | Curl_checkheaders ();
0x0000d8c8 ldr r3, [sb] | r3 = *(sb);
0x0000d8cc ldr r2, [r3, 0x48] | r2 = *((r3 + 0x48));
0x0000d8d0 orr r2, r2, 2 | r2 |= 2;
0x0000d8d4 str r2, [r3, 0x48] | *((r3 + 0x48)) = r2;
0x0000d8d8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0000d8dc beq 0xdb9c | goto label_51;
| }
0x0000d8e0 add r2, r5, 0xd | r2 = r5 + 0xd;
| do {
0x0000d8e4 mov r5, r2 | r5 = r2;
0x0000d8e8 ldrb r1, [r5] | r1 = *(r5);
0x0000d8ec add r2, r2, 1 | r2++;
0x0000d8f0 cmp r1, 0x20 |
0x0000d8f4 beq 0xd8e4 |
| } while (r1 == 0x20);
| label_9:
0x0000d8f8 mov r2, 0 | r2 = 0;
0x0000d8fc ldr r1, [sl, 0x228] | r1 = *((sl + 0x228));
0x0000d900 mov r0, r3 | r0 = r3;
0x0000d904 bl 0x57fc | fcn_000057fc ();
0x0000d908 mov r1, r5 | r1 = r5;
0x0000d90c mov r3, 1 | r3 = 1;
0x0000d910 mov r2, 0 | r2 = 0;
0x0000d914 ldr r0, [sb] | r0 = *(sb);
0x0000d918 bl 0x2c738 | Curl_mime_prepare_headers ();
0x0000d91c mov r2, 0 | r2 = 0;
0x0000d920 mov r1, r2 | r1 = r2;
0x0000d924 mov r5, r0 | r5 = r0;
0x0000d928 ldr r0, [sb] | r0 = *(sb);
0x0000d92c bl 0x57fc | fcn_000057fc ();
0x0000d930 cmp r5, 0 |
| if (r5 != 0) {
0x0000d934 bne 0xd540 | goto label_8;
| }
0x0000d938 ldr r0, [sb] | r0 = *(sb);
0x0000d93c bl 0x2c4b4 | r0 = Curl_mime_rewind ();
0x0000d940 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000d944 bne 0xd540 | goto label_8;
| }
0x0000d948 ldr r0, [sb] | r0 = *(sb);
0x0000d94c bl 0x2c4cc | Curl_mime_size ();
0x0000d950 strd r0, r1, [sb, 8] | __asm ("strd r0, r1, [sb, 8]");
| label_50:
0x0000d954 ldr r1, [pc, 0xa90] | r1 = *(0xe3e8);
0x0000d958 mov r0, r4 | r0 = r4;
0x0000d95c add r1, pc, r1 | r1 = pc + r1;
0x0000d960 bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000d964 cmp r0, 0 |
| if (r0 == 0) {
0x0000d968 beq 0xdbb0 | goto label_52;
| }
0x0000d96c ldr r2, [pc, 0xa7c] | r2 = *(0xe3ec);
0x0000d970 ldr r1, [pc, 0xa7c] | r1 = *(0xe3f0);
0x0000d974 add r2, pc, r2 | r2 = pc + r2;
0x0000d978 add r1, pc, r1 | r1 = pc + r1;
0x0000d97c bl 0xcf18 | Curl_compareheader ();
0x0000d980 ldr r3, [pc, 0xa70] | r3 = *(0xe3f4);
0x0000d984 add r3, pc, r3 | r3 = pc + r3;
0x0000d988 strb r0, [sl, 0x129] | *((sl + 0x129)) = r0;
| label_10:
0x0000d98c str r3, [sp, 0x54] | var_54h = r3;
0x0000d990 ldr r0, [r4, 0x2b0] | r0 = *((r4 + 0x2b0));
0x0000d994 ldr r3, [r8] | r3 = *(r8);
0x0000d998 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000d99c ldr r1, [pc, 0xa58] | r1 = *(0xe3f8);
0x0000d9a0 mov r3, 0 | r3 = 0;
0x0000d9a4 str r3, [r4, 0x2b0] | *((r4 + 0x2b0)) = r3;
0x0000d9a8 add r1, pc, r1 | r1 = pc + r1;
0x0000d9ac mov r0, r4 | r0 = r4;
0x0000d9b0 bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000d9b4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0000d9b8 beq 0xdc90 | goto label_53;
| }
0x0000d9bc add r3, sl, 0x4000 | r3 = sl + 0x4000;
0x0000d9c0 ldrb r2, [r3, 0x7e0] | r2 = *((r3 + 0x7e0));
0x0000d9c4 cmp r2, 0 |
| if (r2 != 0) {
0x0000d9c8 bne 0xdc7c | goto label_54;
| }
| label_11:
0x0000d9cc mov r0, r6 | r0 = r6;
0x0000d9d0 bl 0xc1ec | r0 = Curl_copy_header_value ();
0x0000d9d4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0000d9d8 beq 0xd53c | goto label_0;
| }
0x0000d9dc ldrb r3, [r5] | r3 = *(r5);
0x0000d9e0 cmp r3, 0 |
| if (r3 != 0) {
0x0000d9e4 bne 0xdcf8 | goto label_55;
| }
0x0000d9e8 ldr r3, [r8] | r3 = *(r8);
0x0000d9ec blx r3 | uint32_t (*r3)(uint32_t) (r3);
| label_13:
0x0000d9f0 ldr r0, [pc, 0xa08] | r0 = *(0xe3fc);
0x0000d9f4 mov r1, r6 | r1 = r6;
0x0000d9f8 add r0, pc, r0 | r0 = pc + r0;
0x0000d9fc bl 0x5a30 | r0 = strcmp (r0, r1);
0x0000da00 cmp r0, 0 |
| if (r0 != 0) {
0x0000da04 streq r0, [r4, 0x2b0] | *((r4 + 0x2b0)) = r0;
| }
| if (r0 == 0) {
0x0000da08 beq 0xda28 | goto label_56;
| }
0x0000da0c ldr r0, [pc, 0x9f0] | r0 = *(0xe400);
0x0000da10 add r1, r6, 5 | r1 = r6 + 5;
0x0000da14 add r0, pc, r0 | r0 = pc + r0;
0x0000da18 bl 0x5b80 | r0 = fcn_00005b80 ();
0x0000da1c cmp r0, 0 |
0x0000da20 str r0, [r4, 0x2b0] | *((r4 + 0x2b0)) = r0;
| if (r0 == 0) {
| label_12:
0x0000da24 beq 0xd53c | goto label_0;
| }
| label_56:
0x0000da28 ldrb r3, [r4, 0x256] | r3 = *((r4 + 0x256));
0x0000da2c cmp r3, 0 |
0x0000da30 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 == 0) {
0x0000da34 beq 0xddec | goto label_18;
| }
0x0000da38 ldrb r3, [r4, 0x261] | r3 = *((r4 + 0x261));
0x0000da3c cmp r3, 0 |
0x0000da40 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 != 0) {
0x0000da44 bne 0xdf18 | goto label_57;
| }
0x0000da48 ldr r6, [r4, 0xa4] | r6 = *((r4 + 0xa4));
0x0000da4c ldr r5, [r4, 0xa0] | r5 = *((r4 + 0xa0));
0x0000da50 ldr r7, [sl, 0x678] | r7 = *((sl + 0x678));
0x0000da54 cmp r6, r5 |
| if (r6 == r5) {
0x0000da58 beq 0xdb38 | goto label_58;
| }
0x0000da5c mov r1, r6 | r1 = r6;
0x0000da60 mov r0, r7 | r0 = r7;
0x0000da64 bl 0x5a18 | r0 = strstr (r0, r1);
0x0000da68 subs r3, r0, 0 | r3 = r0 - 0;
0x0000da6c str r3, [sp, 0x40] | s = r3;
| if (r3 == r0) {
0x0000da70 beq 0xdb38 | goto label_58;
| }
0x0000da74 mov r0, r6 | r0 = r6;
0x0000da78 bl 0x5250 | r0 = strlen (r0);
0x0000da7c mov fp, r0 |
0x0000da80 mov r0, r5 | r0 = r5;
0x0000da84 bl 0x5250 | r0 = strlen (r0);
0x0000da88 mov r6, r0 | r6 = r0;
0x0000da8c mov r0, r7 | r0 = r7;
0x0000da90 bl 0x5250 | strlen (r0);
0x0000da94 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0000da98 ldr r3, [pc, 0x968] |
0x0000da9c str r0, [sp, 0x48] | var_48h = r0;
0x0000daa0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000daa4 add r0, r6, r0 | r0 = r6 + r0;
0x0000daa8 add r0, r0, 1 | r0++;
0x0000daac ldr r3, [r3] | r3 = *(0xe404);
0x0000dab0 sub r0, r0, fp | r0 -= fp;
0x0000dab4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0000dab8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0000dabc beq 0xd53c | goto label_0;
| }
0x0000dac0 ldr r3, [sp, 0x40] | r3 = s;
0x0000dac4 mov r1, r7 | r1 = r7;
0x0000dac8 sub r3, r3, r7 | r3 -= r7;
0x0000dacc mov r2, r3 | r2 = r3;
0x0000dad0 str r3, [sp, 0x5c] | s1 = r3;
0x0000dad4 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000dad8 ldr r3, [sp, 0x5c] | r3 = s1;
0x0000dadc mov r2, r6 | r2 = r6;
0x0000dae0 ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x0000dae4 add r0, r5, r3 | r0 = r5 + r3;
0x0000dae8 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000daec ldr r3, [sp, 0x5c] | r3 = s1;
0x0000daf0 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0000daf4 add r0, r3, r6 | r0 = r3 + r6;
0x0000daf8 sub r2, r2, r3 | r2 -= r3;
0x0000dafc ldr r3, [sp, 0x40] | r3 = s;
0x0000db00 sub r2, r2, fp | r2 -= fp;
0x0000db04 add r1, r3, fp | r1 = r3 + fp;
0x0000db08 add r2, r2, 1 | r2++;
0x0000db0c add r0, r5, r0 | r0 = r5 + r0;
0x0000db10 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000db14 ldrb r3, [sl, 0x67c] | r3 = *((sl + 0x67c));
0x0000db18 cmp r3, 0 |
| if (r3 != 0) {
0x0000db1c beq 0xdb2c |
0x0000db20 ldr r3, [r8] | r3 = *(r8);
0x0000db24 ldr r0, [sl, 0x678] | r0 = *((sl + 0x678));
0x0000db28 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0000db2c mov r3, 1 | r3 = 1;
0x0000db30 str r5, [sl, 0x678] | *((sl + 0x678)) = r5;
0x0000db34 strb r3, [sl, 0x67c] | *((sl + 0x67c)) = r3;
| label_58:
0x0000db38 ldr r3, [sl, 0x678] | r3 = *((sl + 0x678));
0x0000db3c ldr r0, [pc, 0x8c8] | r0 = *(0xe408);
0x0000db40 mov r2, 6 | r2 = 6;
0x0000db44 mov r1, r3 | r1 = r3;
0x0000db48 add r0, pc, r0 | r0 = pc + r0;
0x0000db4c str r3, [sp, 0x40] | s = r3;
0x0000db50 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000db54 cmp r0, 0 |
| if (r0 == 0) {
0x0000db58 beq 0xddec | goto label_18;
| }
0x0000db5c ldrb r3, [sl, 0x504] | r3 = *((sl + 0x504));
0x0000db60 cmp r3, 0 |
| if (r3 == 0) {
0x0000db64 beq 0xddd4 | goto label_17;
| }
0x0000db68 ldr r1, [pc, 0x8a0] | r1 = *(0xe40c);
0x0000db6c ldr r0, [sp, 0x40] | r0 = s;
0x0000db70 add r1, pc, r1 | r1 = pc + r1;
0x0000db74 bl 0x5a18 | r0 = strstr (r0, r1);
0x0000db78 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x0000db7c bne 0xdd98 | goto label_59;
| }
| label_15:
0x0000db80 add r3, sl, 0x4000 | r3 = sl + 0x4000;
0x0000db84 ldr r3, [r3, 0x9ec] | r3 = *((r3 + 0x9ec));
0x0000db88 ldrb r3, [r3] | r3 = *(r3);
0x0000db8c cmp r3, 0 |
| if (r3 == 0) {
0x0000db90 beq 0xdecc | goto label_60;
| }
| label_16:
0x0000db94 add r0, sp, 0x6c | r0 += var_6ch;
0x0000db98 b 0xdef4 | goto label_61;
| label_51:
0x0000db9c ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0000dba0 cmp r2, 4 |
| if (r2 != 4) {
0x0000dba4 ldreq r5, [pc, 0x868] | r5 = *(0x0000e414);
| }
| if (r2 != 4) {
0x0000dba8 addeq r5, pc, r5 | r5 = pc + r5;
| }
0x0000dbac b 0xd8f8 | goto label_9;
| label_52:
0x0000dbb0 ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x0000dbb4 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000dbb8 tst r3, 3 |
| if ((r3 & 3) != 0) {
0x0000dbbc beq 0xdc54 |
0x0000dbc0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000dbc4 sub r3, r3, 3 | r3 -= 3;
0x0000dbc8 cmp r3, 1 |
| if (r3 <= 1) {
0x0000dbcc bhi 0xdbe0 |
0x0000dbd0 ldrd r2, r3, [sb, 8] | __asm ("ldrd r2, r3, [sb, 8]");
0x0000dbd4 cmp r2, 0 |
0x0000dbd8 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 < 0) {
0x0000dbdc blt 0xdc08 | goto label_62;
| }
| }
0x0000dbe0 ldrb r3, [sl, 0x4d1] | r3 = *((sl + 0x4d1));
0x0000dbe4 cmp r3, 0 |
| if (r3 == 0) {
0x0000dbe8 beq 0xdc54 | goto label_63;
| }
0x0000dbec add r3, sl, 0x4a00 | r3 = sl + 0x4a00;
0x0000dbf0 ldrd r0, r1, [r3, 0x10] | __asm ("ldrd r0, r1, [r3, 0x10]");
0x0000dbf4 mvn r3, 0 | r3 = ~0;
0x0000dbf8 mvn r2, 0 | r2 = ~0;
0x0000dbfc cmp r1, r3 |
0x0000dc00 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| if (r1 != r3) {
0x0000dc04 bne 0xdc54 | goto label_63;
| }
| label_62:
0x0000dc08 ldrb r3, [r4, 0x262] | r3 = *((r4 + 0x262));
0x0000dc0c cmp r3, 0 |
| if (r3 != 0) {
0x0000dc10 bne 0xdc5c | goto label_64;
| }
0x0000dc14 add r3, sl, 0x4000 | r3 = sl + 0x4000;
0x0000dc18 ldr r3, [r3, 0x9d8] | r3 = *((r3 + 0x9d8));
0x0000dc1c cmp r3, 0xa |
| if (r3 != 0xa) {
0x0000dc20 beq 0xdc3c |
0x0000dc24 add r1, r4, 0x180 | r1 = r4 + 0x180;
0x0000dc28 mov r0, sl | r0 = sl;
0x0000dc2c bl 0xbd88 | r0 = use_http_1_1plus_isra_0_part_1 ();
0x0000dc30 cmp r0, 0 |
| if (r0 == 0) {
0x0000dc34 movne r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0000dc38 bne 0xdc58 | goto label_65;
| }
| }
0x0000dc3c ldr r1, [pc, 0x7d4] | r1 = *(0xe414);
0x0000dc40 mov r0, sl | r0 = sl;
0x0000dc44 add r1, pc, r1 | r1 = pc + r1;
0x0000dc48 bl 0x10544 | Curl_failf ();
0x0000dc4c mov r5, 0x19 | r5 = 0x19;
0x0000dc50 b 0xd540 | goto label_8;
| }
| label_63:
0x0000dc54 mov r3, 0 | r3 = 0;
| label_65:
0x0000dc58 strb r3, [sl, 0x129] | *((sl + 0x129)) = r3;
| label_64:
0x0000dc5c ldrb r3, [sl, 0x129] | r3 = *((sl + 0x129));
0x0000dc60 cmp r3, 0 |
| if (r3 != 0) {
0x0000dc64 ldreq r3, [pc, 0x7b0] | r3 = *((pc + 0x7b0));
| }
| if (r3 == 0) {
0x0000dc68 addeq r3, pc, r3 | r3 = pc + r3;
| goto label_66;
| }
| if (r3 == 0) {
| label_66:
0x0000dc6c beq 0xd98c | goto label_10;
| }
0x0000dc70 ldr r3, [pc, 0x7a8] | r3 = *(0xe41c);
0x0000dc74 add r3, pc, r3 | r3 = pc + r3;
0x0000dc78 b 0xd98c | goto label_10;
| label_54:
0x0000dc7c ldr r1, [r4, 0xa0] | r1 = *((r4 + 0xa0));
0x0000dc80 ldr r0, [r3, 0x7e4] | r0 = *((r3 + 0x7e4));
0x0000dc84 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0000dc88 cmp r0, 0 |
| if (r0 != 0) {
0x0000dc8c bne 0xd9cc | goto label_11;
| }
| label_53:
0x0000dc90 ldr r3, [r4, 0x288] | r3 = *((r4 + 0x288));
0x0000dc94 ldr r2, [r4, 0x100] | r2 = *((r4 + 0x100));
0x0000dc98 ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x0000dc9c ldrb r3, [r4, 0x25a] | r3 = *((r4 + 0x25a));
0x0000dca0 tst r1, 2 |
| if ((r1 & 2) != 0) {
0x0000dca4 beq 0xdcb4 |
0x0000dca8 ldr r0, [pc, 0x774] | r0 = *(0xe420);
0x0000dcac cmp r2, r0 |
| if (r2 == r0) {
0x0000dcb0 beq 0xdcc4 | goto label_67;
| }
| }
0x0000dcb4 tst r1, 1 |
| if ((r1 & 1) == 0) {
0x0000dcb8 beq 0xdd58 | goto label_68;
| }
0x0000dcbc cmp r2, 0x50 |
| if (r2 != 0x50) {
0x0000dcc0 bne 0xdd58 | goto label_68;
| }
| label_67:
0x0000dcc4 cmp r3, 0 |
| if (r3 != 0) {
0x0000dcc8 bne 0xdd44 | goto label_69;
| }
0x0000dccc ldr r1, [pc, 0x754] | r1 = *(0xe424);
0x0000dcd0 add r1, pc, r1 | r1 = pc + r1;
0x0000dcd4 mov r3, r1 | r3 = r1;
| do {
0x0000dcd8 ldr r0, [pc, 0x74c] | r0 = *(0xe428);
0x0000dcdc ldr r2, [sp, 0x58] | r2 = nmeb;
0x0000dce0 add r0, pc, r0 | r0 = pc + r0;
0x0000dce4 bl 0x5b80 | fcn_00005b80 ();
| label_14:
0x0000dce8 str r0, [r4, 0x2b0] | *((r4 + 0x2b0)) = r0;
0x0000dcec ldr r3, [r4, 0x2b0] | r3 = *((r4 + 0x2b0));
0x0000dcf0 cmp r3, 0 |
0x0000dcf4 b 0xda24 | goto label_12;
| label_55:
0x0000dcf8 cmp r3, 0x5b |
| if (r3 == 0x5b) {
0x0000dcfc movne r1, 0x3a | r1 = 0x3a;
| }
| if (r3 == 0x5b) {
0x0000dd00 bne 0xdd20 |
0x0000dd04 bl 0x5250 | strlen (r0);
0x0000dd08 add r1, r5, 1 | r1 = r5 + 1;
0x0000dd0c sub r2, r0, 1 | r2 = r0 - 1;
0x0000dd10 mov r0, r5 | r0 = r5;
0x0000dd14 bl 0x5448 | memmove (r0, r1, r2);
0x0000dd18 mov r1, 0x5d | r1 = 0x5d;
0x0000dd1c mov r0, r5 | r0 = r5;
| }
0x0000dd20 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000dd24 cmp r0, 0 |
| if (r0 == 0) {
0x0000dd28 movne r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x0000dd2c strbne r3, [r0] | *(r0) = r3;
| }
0x0000dd30 ldr r3, [r8] | r3 = *(r8);
0x0000dd34 ldr r0, [r4, 0x2b4] | r0 = *((r4 + 0x2b4));
0x0000dd38 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000dd3c str r5, [r4, 0x2b4] | *((r4 + 0x2b4)) = r5;
0x0000dd40 b 0xd9f0 | goto label_13;
| label_69:
0x0000dd44 ldr r1, [pc, 0x6e4] | r1 = *(0xe42c);
0x0000dd48 ldr r3, [pc, 0x6e4] | r3 = *(0xe430);
0x0000dd4c add r1, pc, r1 | r1 = pc + r1;
0x0000dd50 add r3, pc, r3 | r3 = pc + r3;
0x0000dd54 b 0xdcd8 |
| } while (1);
| label_68:
0x0000dd58 cmp r3, 0 |
| if (r3 != 0) {
0x0000dd5c bne 0xdd84 | goto label_70;
| }
0x0000dd60 ldr r1, [pc, 0x6d0] | r1 = *(0xe434);
0x0000dd64 add r1, pc, r1 | r1 = pc + r1;
0x0000dd68 mov r3, r1 | r3 = r1;
| do {
0x0000dd6c ldr r0, [pc, 0x6c8] | r0 = *(0xe438);
0x0000dd70 str r2, [sp] | *(sp) = r2;
0x0000dd74 add r0, pc, r0 | r0 = pc + r0;
0x0000dd78 ldr r2, [sp, 0x58] | r2 = nmeb;
0x0000dd7c bl 0x5b80 | fcn_00005b80 ();
0x0000dd80 b 0xdce8 | goto label_14;
| label_70:
0x0000dd84 ldr r1, [pc, 0x6b4] | r1 = *(0xe43c);
0x0000dd88 ldr r3, [pc, 0x6b4] | r3 = "rinfo";
0x0000dd8c add r1, pc, r1 | r1 = pc + r1;
0x0000dd90 add r3, pc, r3 | r3 = pc + r3;
0x0000dd94 b 0xdd6c |
| } while (1);
| label_59:
0x0000dd98 ldrb r0, [r3, 6] | r0 = *((r3 + 6));
0x0000dd9c cmp r0, 0 |
| if (r0 == 0) {
0x0000dda0 beq 0xddd4 | goto label_17;
| }
0x0000dda4 ldrb r3, [r3, 7] | r3 = *((r3 + 7));
0x0000dda8 cmp r3, 0 |
| if (r3 != 0) {
0x0000ddac bne 0xddd4 | goto label_17;
| }
0x0000ddb0 bl 0x19dac | r0 = Curl_raw_toupper ();
0x0000ddb4 sub r0, r0, 0x41 | r0 -= 0x41;
0x0000ddb8 and r0, r0, 0xff | r0 &= 0xff;
0x0000ddbc cmp r0, 8 |
| if (r0 > 8) {
0x0000ddc0 bhi 0xdb80 | goto label_15;
| }
0x0000ddc4 ldr r3, [pc, 0x67c] | r3 = *(0xe444);
0x0000ddc8 mov r2, 1 | r2 = 1;
0x0000ddcc ands r3, r3, r2, lsl r0 | r3 &= (r2 << r0);
| if (r3 == r3) {
0x0000ddd0 beq 0xdb80 | goto label_15;
| }
| label_17:
0x0000ddd4 ldrb r3, [r4, 0x258] | r3 = *((r4 + 0x258));
0x0000ddd8 cmp r3, 0 |
0x0000dddc str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 == 0) {
0x0000dde0 ldrbne r3, [r4, 0x268] | r3 = *((r4 + 0x268));
| }
| if (r3 == 0) {
0x0000dde4 eorne r3, r3, 1 | r3 ^= 1;
| }
| if (r3 != 0) {
0x0000dde8 bne 0xdf1c | goto label_71;
| }
| label_18:
0x0000ddec ldr r1, [pc, 0x658] | r1 = *(0xe448);
0x0000ddf0 mov r0, r4 | r0 = r4;
0x0000ddf4 add r1, pc, r1 | r1 = pc + r1;
0x0000ddf8 bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000ddfc cmp r0, 0 |
| if (r0 == 0) {
0x0000de00 movne r3, 0 | r3 = 0;
| }
| if (r0 != 0) {
0x0000de04 ldreq r3, [pc, 0x644] | r3 = *((pc + 0x644));
| }
| if (r0 != 0) {
0x0000de08 addeq r3, pc, r3 | r3 = pc + r3;
| }
0x0000de0c str r3, [sb, 0x18] | *((sb + 0x18)) = r3;
0x0000de10 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000de14 cmp r3, 5 |
0x0000de18 cmpne r3, 2 | __asm ("cmpne r3, 2");
| if (r3 != 5) {
0x0000de1c moveq fp, 1 |
| }
| if (r3 == 5) {
0x0000de20 movne fp, 0 |
| }
| if (r3 != 5) {
0x0000de24 bne 0xe02c | goto label_72;
| }
0x0000de28 add r6, sl, 0x4a00 | r6 = sl + 0x4a00;
0x0000de2c ldrd r2, r3, [r6, -8] | __asm ("ldrd r2, r3, [r6, -8]");
0x0000de30 orrs r1, r2, r3 | r1 = r2 | r3;
| if (r1 == r2) {
0x0000de34 beq 0xe02c | goto label_72;
| }
0x0000de38 cmp r2, 0 |
0x0000de3c sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 0) {
0x0000de40 movlt r2, 0 | r2 = 0;
| }
| if (r2 >= 0) {
0x0000de44 movlt r3, 0 | r3 = 0;
| }
0x0000de48 strdlt r2, r3, [r6, -8] | __asm ("strdlt r2, r3, [r6, -8]");
0x0000de4c ldrd r2, r3, [r6, -8] | __asm ("ldrd r2, r3, [r6, -8]");
0x0000de50 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 == r2) {
0x0000de54 beq 0xe02c | goto label_72;
| }
0x0000de58 add r3, sl, 0x4000 | r3 = sl + 0x4000;
0x0000de5c ldrb r5, [r3, 0x7e0] | r5 = *((r3 + 0x7e0));
0x0000de60 cmp r5, 0 |
| if (r5 != 0) {
0x0000de64 bne 0xe02c | goto label_72;
| }
0x0000de68 ldr r3, [r4, 0x2f0] | r3 = *((r4 + 0x2f0));
0x0000de6c cmp r3, 0 |
| if (r3 == 0) {
0x0000de70 beq 0xdf24 | goto label_73;
| }
0x0000de74 mov r1, 1 | r1 = 1;
0x0000de78 mov r0, sl | r0 = sl;
0x0000de7c bl 0x203dc | Curl_set_in_callback ();
0x0000de80 ldrd r2, r3, [r6, -8] | __asm ("ldrd r2, r3, [r6, -8]");
0x0000de84 str r5, [sp] | *(sp) = r5;
0x0000de88 ldr r1, [r4, 0x2f0] | r1 = *((r4 + 0x2f0));
0x0000de8c ldr r0, [r4, 0x2f4] | r0 = *((r4 + 0x2f4));
0x0000de90 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0000de94 mov r1, r5 | r1 = r5;
0x0000de98 mov r6, r0 | r6 = r0;
0x0000de9c mov r0, sl | r0 = sl;
0x0000dea0 bl 0x203dc | Curl_set_in_callback ();
0x0000dea4 cmp r6, 0 |
| if (r6 == 0) {
0x0000dea8 beq 0xdfdc | goto label_74;
| }
0x0000deac cmp r6, 2 |
| if (r6 == 2) {
0x0000deb0 beq 0xdf24 | goto label_73;
| }
0x0000deb4 ldr r1, [pc, 0x598] | r1 = *(0xe450);
0x0000deb8 mov r0, sl | r0 = sl;
0x0000debc add r1, pc, r1 | r1 = pc + r1;
0x0000dec0 bl 0x10544 | Curl_failf ();
| label_19:
0x0000dec4 mov r5, 0x1a | r5 = 0x1a;
0x0000dec8 b 0xd540 | goto label_8;
| label_60:
0x0000decc ldr r0, [sp, 0x40] | r0 = s;
0x0000ded0 bl 0x5250 | strlen (r0);
0x0000ded4 ldr r3, [sp, 0x40] | r3 = s;
0x0000ded8 add r0, r3, r0 | r0 = r3 + r0;
0x0000dedc ldrb r3, [r0, -1] | r3 = *((r0 - 1));
0x0000dee0 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0000dee4 movne r3, 0x2f | r3 = 0x2f;
| }
| if (r3 == 0x2f) {
0x0000dee8 strbne r3, [sp, 0x6c] | var_6ch = r3;
| }
| if (r3 != 0x2f) {
0x0000deec addne r0, sp, 0x6d | r0 += var_6dh;
| goto label_75;
| }
| if (r3 == 0x2f) {
| label_75:
0x0000def0 beq 0xdb94 | goto label_16;
| }
| label_61:
0x0000def4 ldrb r3, [sl, 0x4c3] | r3 = *((sl + 0x4c3));
0x0000def8 ldr r2, [pc, 0x558] | r2 = *(0xe454);
0x0000defc cmp r3, 0 |
| if (r3 != 0) {
0x0000df00 moveq r3, 0x69 | r3 = 0x69;
| }
| if (r3 == 0) {
0x0000df04 movne r3, 0x61 | r3 = 0x61;
| }
0x0000df08 add r2, pc, r2 | r2 = pc + r2;
0x0000df0c mov r1, 8 | r1 = 8;
0x0000df10 bl 0x579c | fcn_0000579c ();
0x0000df14 b 0xddd4 | goto label_17;
| label_57:
0x0000df18 mov r3, 0 | r3 = 0;
| label_71:
0x0000df1c str r3, [sp, 0x3c] | var_3ch = r3;
0x0000df20 b 0xddec | goto label_18;
| label_73:
0x0000df24 mov r2, 0 | r2 = 0;
0x0000df28 mov r3, 0 | r3 = 0;
0x0000df2c add r6, sl, 0x4a00 | r6 = sl + 0x4a00;
0x0000df30 add r7, sl, 0x4000 | r7 = sl + 0x4000;
0x0000df34 strd r2, r3, [sp, 0x48] | __asm ("strd r2, r3, [var_48h]");
| do {
0x0000df38 ldr r5, [sl, 0x498] | r5 = *((sl + 0x498));
0x0000df3c ldrd r0, r1, [r6, -8] | __asm ("ldrd r0, r1, [r6, -8]");
0x0000df40 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h]");
0x0000df44 subs r2, r0, r2 | r2 = r0 - r2;
0x0000df48 sbc r3, r1, r3 | __asm ("sbc r3, r1, r3");
0x0000df4c mov r0, r2 | r0 = r2;
0x0000df50 mov r1, r3 | r1 = r3;
0x0000df54 cmp r5, r0 |
0x0000df58 asr r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x0000df5c sbcs r3, r3, r1 | __asm ("sbcs r3, r3, r1");
| if (r5 >= r0) {
0x0000df60 blt 0xdf6c |
0x0000df64 bl 0x25364 | r0 = curlx_sotouz ();
0x0000df68 mov r5, r0 | r5 = r0;
| }
0x0000df6c mov r2, r5 | r2 = r5;
0x0000df70 ldr r3, [r7, 0xa24] | r3 = *((r7 + 0xa24));
0x0000df74 mov r1, 1 | r1 = 1;
0x0000df78 ldr r0, [sl, 0x7cc] | r0 = *((sl + 0x7cc));
0x0000df7c ldr ip, [r7, 0xa20] | ip = *((r7 + 0xa20));
0x0000df80 blx ip | ip (r0, r1, r2, r3);
0x0000df84 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h]");
0x0000df88 adds r2, r2, r0 | r2 += r0;
0x0000df8c adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000df90 cmp r5, r0 |
| if (r5 < r0) {
0x0000df94 movhs r5, 0 | r5 = 0;
| }
| if (r5 >= r0) {
0x0000df98 movlo r5, 1 | r5 = 1;
| }
0x0000df9c cmp r0, 0 |
| if (r0 == 0) {
0x0000dfa0 movne r0, r5 | r0 = r5;
| }
| if (r0 != 0) {
0x0000dfa4 moveq r0, 1 | r0 = 1;
| }
0x0000dfa8 cmp r0, 0 |
0x0000dfac strd r2, r3, [sp, 0x48] | __asm ("strd r2, r3, [var_48h]");
| if (r0 != 0) {
0x0000dfb0 beq 0xdfc8 |
0x0000dfb4 ldr r1, [pc, 0x4a0] | r1 = *(0xe458);
0x0000dfb8 mov r0, sl | r0 = sl;
0x0000dfbc add r1, pc, r1 | r1 = pc + r1;
0x0000dfc0 bl 0x10544 | Curl_failf ();
0x0000dfc4 b 0xdec4 | goto label_19;
| }
0x0000dfc8 ldrd r2, r3, [r6, -8] | __asm ("ldrd r2, r3, [r6, -8]");
0x0000dfcc ldrd r0, r1, [sp, 0x48] | __asm ("ldrd r0, r1, [var_48h]");
0x0000dfd0 cmp r0, r2 |
0x0000dfd4 sbcs r3, r1, r3 | __asm ("sbcs r3, r1, r3");
0x0000dfd8 blt 0xdf38 |
| } while (r0 < r2);
| label_74:
0x0000dfdc add ip, sl, 0x4a00 |
0x0000dfe0 ldrd r0, r1, [ip, 0x10] | __asm ("ldrd r0, r1, [ip, 0x10]");
0x0000dfe4 cmp r0, 1 |
0x0000dfe8 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
| if (r0 >= 1) {
0x0000dfec blt 0xe02c |
0x0000dff0 ldrd r2, r3, [ip, -8] | __asm ("ldrd r2, r3, [ip, -8]");
0x0000dff4 subs r0, r0, r2 | r0 -= r2;
0x0000dff8 sbc r1, r1, r3 | __asm ("sbc r1, r1, r3");
0x0000dffc cmp r0, 1 |
0x0000e000 mov r6, r0 | r6 = r0;
0x0000e004 mov r7, r1 | r7 = r1;
0x0000e008 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
0x0000e00c strd r6, r7, [ip, 0x10] | __asm ("strd r6, r7, [ip, 0x10]");
| if (r0 >= 1) {
0x0000e010 bge 0xe02c | goto label_72;
| }
0x0000e014 ldr r1, [pc, 0x444] | r1 = *(0xe45c);
0x0000e018 mov r0, sl | r0 = sl;
0x0000e01c add r1, pc, r1 | r1 = pc + r1;
0x0000e020 bl 0x10544 | Curl_failf ();
0x0000e024 mov r5, 0x12 | r5 = 0x12;
0x0000e028 b 0xd540 | goto label_8;
| }
| label_72:
0x0000e02c add r5, sl, 0x4000 | r5 = sl + 0x4000;
0x0000e030 ldrb r3, [r5, 0x9f1] | r3 = *((r5 + 0x9f1));
0x0000e034 cmp r3, 0 |
| if (r3 != 0) {
0x0000e038 beq 0xe084 |
0x0000e03c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000e040 cmp r3, 6 |
0x0000e044 cmpne r3, 1 | __asm ("cmpne r3, 1");
| if (r3 != 6) {
0x0000e048 bne 0xe584 | goto label_76;
| }
0x0000e04c ldr r1, [pc, 0x410] | r1 = *(0xe460);
0x0000e050 mov r0, r4 | r0 = r4;
0x0000e054 add r1, pc, r1 | r1 = pc + r1;
0x0000e058 bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000e05c cmp r0, 0 |
| if (r0 != 0) {
0x0000e060 bne 0xe584 | goto label_76;
| }
0x0000e064 ldr r3, [r8] | r3 = *(r8);
0x0000e068 ldr r0, [r4, 0x2a8] | r0 = *((r4 + 0x2a8));
0x0000e06c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000e070 ldr r0, [pc, 0x3f0] | r0 = *(0xe464);
0x0000e074 ldr r1, [r5, 0x9f4] | r1 = *((r5 + 0x9f4));
0x0000e078 add r0, pc, r0 | r0 = pc + r0;
0x0000e07c bl 0x5b80 | fcn_00005b80 ();
0x0000e080 str r0, [r4, 0x2a8] | *((r4 + 0x2a8)) = r0;
| }
| label_20:
0x0000e084 add r3, sl, 0x4000 | r3 = sl + 0x4000;
0x0000e088 ldr r3, [r3, 0x9d8] | r3 = *((r3 + 0x9d8));
0x0000e08c cmp r3, 0xa |
| if (r3 == 0xa) {
0x0000e090 beq 0xe64c | goto label_77;
| }
0x0000e094 add r1, r4, 0x180 | r1 = r4 + 0x180;
0x0000e098 mov r0, sl | r0 = sl;
0x0000e09c bl 0xbd88 | r0 = use_http_1_1plus_isra_0_part_1 ();
0x0000e0a0 cmp r0, 0 |
| if (r0 == 0) {
0x0000e0a4 beq 0xe658 | goto label_78;
| }
0x0000e0a8 ldr r3, [pc, 0x3bc] | r3 = *(0xe468);
0x0000e0ac add r3, pc, r3 | r3 = pc + r3;
| label_22:
0x0000e0b0 str r3, [sp, 0x5c] | s1 = r3;
0x0000e0b4 bl 0xc8bc | r0 = Curl_add_buffer_init ();
0x0000e0b8 subs fp, r0, 0 |
| if (fp == r0) {
0x0000e0bc beq 0xd53c | goto label_0;
| }
0x0000e0c0 ldr r1, [pc, 0x3a8] | r1 = *(0xe46c);
0x0000e0c4 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000e0c8 add r1, pc, r1 | r1 = pc + r1;
0x0000e0cc bl 0xcd18 | r0 = Curl_add_bufferf ();
0x0000e0d0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000e0d4 bne 0xd540 | goto label_8;
| }
0x0000e0d8 ldr r5, [sl, 0x5f0] | r5 = *((sl + 0x5f0));
0x0000e0dc ldr r3, [sp, 0x40] | r3 = s;
0x0000e0e0 cmp r5, 0 |
| if (r5 != 0) {
0x0000e0e4 moveq r5, r3 | r5 = r3;
| }
0x0000e0e8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0000e0ec cmp r3, 0 |
| if (r3 == 0) {
0x0000e0f0 beq 0xe664 | goto label_79;
| }
0x0000e0f4 ldr r1, [pc, 0x378] | r1 = *(0xe470);
0x0000e0f8 add r5, r5, 6 | r5 += 6;
0x0000e0fc str r5, [sp] | *(sp) = r5;
0x0000e100 add r1, pc, r1 | r1 = pc + r1;
0x0000e104 ldr r3, [r4, 0x174] | r3 = *((r4 + 0x174));
0x0000e108 ldr r2, [r4, 0x170] | r2 = *((r4 + 0x170));
0x0000e10c mov r0, fp | r0 = fp;
0x0000e110 bl 0xcd18 | r0 = Curl_add_bufferf ();
| label_23:
0x0000e114 cmp r0, 0 |
0x0000e118 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000e11c bne 0xd540 | goto label_8;
| }
0x0000e120 ldr r3, [r4, 0x2b0] | r3 = *((r4 + 0x2b0));
0x0000e124 cmp r3, 0 |
0x0000e128 str r3, [sp, 0x38] | var_38h = r3;
| if (r3 != 0) {
0x0000e12c ldreq r3, [pc, 0x344] | r3 = *((pc + 0x344));
| }
| if (r3 != 0) {
0x0000e130 addeq r3, pc, r3 | r3 = pc + r3;
| }
| if (r3 != 0) {
0x0000e134 streq r3, [sp, 0x38] | var_38h = r3;
| }
0x0000e138 ldr r3, [r4, 0x298] | r3 = *((r4 + 0x298));
0x0000e13c cmp r3, 0 |
0x0000e140 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 != 0) {
0x0000e144 ldreq r3, [pc, 0x330] | r3 = *((pc + 0x330));
| }
| if (r3 != 0) {
0x0000e148 addeq r3, pc, r3 | r3 = pc + r3;
| }
| if (r3 != 0) {
0x0000e14c streq r3, [sp, 0x3c] | var_3ch = r3;
| }
0x0000e150 ldr r2, [r4, 0x2a4] | r2 = *((r4 + 0x2a4));
0x0000e154 cmp r2, 0 |
| if (r2 != 0) {
0x0000e158 ldreq r2, [pc, 0x320] | r2 = *((pc + 0x320));
| }
| if (r2 != 0) {
0x0000e15c addeq r2, pc, r2 | r2 = pc + r2;
| }
0x0000e160 add r3, sl, 0x4000 | r3 = sl + 0x4000;
0x0000e164 ldrb r3, [r3, 0x9f1] | r3 = *((r3 + 0x9f1));
0x0000e168 cmp r3, 0 |
| if (r3 == 0) {
0x0000e16c beq 0xe680 | goto label_80;
| }
0x0000e170 ldr r3, [r4, 0x2a8] | r3 = *((r4 + 0x2a8));
0x0000e174 cmp r3, 0 |
| if (r3 != 0) {
0x0000e178 ldreq r3, [pc, 0x304] | r3 = *((pc + 0x304));
| }
| if (r3 != 0) {
0x0000e17c addeq r3, pc, r3 | r3 = pc + r3;
| }
| label_24:
0x0000e180 ldr r1, [sl, 0x5a0] | r1 = *((sl + 0x5a0));
0x0000e184 cmp r1, 0 |
| if (r1 == 0) {
0x0000e188 beq 0xe68c | goto label_81;
| }
0x0000e18c ldrb r1, [r1] | r1 = *(r1);
0x0000e190 cmp r1, 0 |
| if (r1 == 0) {
0x0000e194 beq 0xe698 | goto label_82;
| }
0x0000e198 ldr r5, [r4, 0x29c] | r5 = *((r4 + 0x29c));
0x0000e19c cmp r5, 0 |
| if (r5 != 0) {
0x0000e1a0 ldreq r5, [pc, 0x2e0] | r5 = *((pc + 0x2e0));
| }
| if (r5 != 0) {
0x0000e1a4 addeq r5, pc, r5 | r5 = pc + r5;
| }
| label_25:
0x0000e1a8 ldr r1, [sb, 0x18] | r1 = *((sb + 0x18));
0x0000e1ac cmp r1, 0 |
0x0000e1b0 str r1, [sp, 0x40] | s = r1;
| if (r1 != 0) {
0x0000e1b4 ldreq r1, [pc, 0x2d0] | r1 = *((pc + 0x2d0));
| }
| if (r1 != 0) {
0x0000e1b8 addeq r1, pc, r1 | r1 = pc + r1;
| }
| if (r1 != 0) {
0x0000e1bc streq r1, [sp, 0x40] | s = r1;
| }
0x0000e1c0 ldr r1, [r4, 0x2bc] | r1 = *((r4 + 0x2bc));
0x0000e1c4 cmp r1, 0 |
0x0000e1c8 str r1, [sp, 0x48] | var_48h = r1;
| if (r1 != 0) {
0x0000e1cc ldreq r1, [pc, 0x2bc] | r1 = *((pc + 0x2bc));
| }
| if (r1 != 0) {
0x0000e1d0 addeq r1, pc, r1 | r1 = pc + r1;
| }
| if (r1 != 0) {
0x0000e1d4 streq r1, [sp, 0x48] | var_48h = r1;
| }
0x0000e1d8 ldr r1, [sl, 0x52c] | r1 = *((sl + 0x52c));
0x0000e1dc cmp r1, 0 |
| if (r1 == 0) {
0x0000e1e0 beq 0xe6a4 | goto label_83;
| }
0x0000e1e4 ldrb r1, [r1] | r1 = *(r1);
0x0000e1e8 cmp r1, 0 |
| if (r1 == 0) {
0x0000e1ec beq 0xe6b0 | goto label_84;
| }
0x0000e1f0 ldr r6, [r4, 0x2a0] | r6 = *((r4 + 0x2a0));
0x0000e1f4 cmp r6, 0 |
| if (r6 != 0) {
0x0000e1f8 ldreq r6, [pc, 0x294] | r6 = *((pc + 0x294));
| }
| if (r6 != 0) {
0x0000e1fc addeq r6, pc, r6 | r6 = pc + r6;
| }
| label_26:
0x0000e200 ldr r1, [sl, 0x680] | r1 = *((sl + 0x680));
0x0000e204 cmp r1, 0 |
| if (r1 == 0) {
0x0000e208 beq 0xe6bc | goto label_85;
| }
0x0000e20c ldr r7, [r4, 0x2ac] | r7 = *((r4 + 0x2ac));
0x0000e210 cmp r7, 0 |
| if (r7 != 0) {
0x0000e214 ldreq r7, [pc, 0x27c] | r7 = *((pc + 0x27c));
| }
| if (r7 != 0) {
0x0000e218 addeq r7, pc, r7 | r7 = pc + r7;
| }
| label_27:
0x0000e21c ldrb r1, [r4, 0x256] | r1 = *((r4 + 0x256));
0x0000e220 cmp r1, 0 |
| if (r1 != 0) {
0x0000e224 beq 0xe25c |
0x0000e228 ldrb r1, [r4, 0x261] | r1 = *((r4 + 0x261));
0x0000e22c cmp r1, 0 |
| if (r1 != 0) {
0x0000e230 bne 0xe25c | goto label_86;
| }
0x0000e234 ldr r1, [pc, 0x260] | r1 = *(0xe498);
0x0000e238 mov r0, r4 | r0 = r4;
0x0000e23c add r1, pc, r1 | r1 = pc + r1;
0x0000e240 str r3, [sp, 0x64] | var_64h = r3;
0x0000e244 str r2, [sp, 0x60] | var_60h = r2;
0x0000e248 bl 0xbe3c | Curl_checkProxyheaders ();
0x0000e24c ldr r2, [sp, 0x60] | r2 = var_60h;
0x0000e250 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0000e254 cmp r0, 0 |
| if (r0 == 0) {
0x0000e258 beq 0xe6c8 | goto label_87;
| }
| }
| label_86:
0x0000e25c ldr r1, [pc, 0x23c] | r1 = *(0xe49c);
0x0000e260 add r1, pc, r1 | r1 = pc + r1;
| label_28:
0x0000e264 str r1, [sp, 0x24] | var_24h = r1;
0x0000e268 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0000e26c str r3, [sp, 0xc] | var_ch = r3;
0x0000e270 str r1, [sp, 0x18] | var_18h = r1;
0x0000e274 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0000e278 ldr r1, [sp, 0x40] | r1 = s;
0x0000e27c ldr r0, [sp, 0x54] | r0 = var_54h;
0x0000e280 str r1, [sp, 0x14] | var_14h = r1;
0x0000e284 str r3, [sp, 4] | var_4h = r3;
0x0000e288 ldr r1, [pc, 0x214] | r1 = *(0xe4a0);
0x0000e28c ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000e290 add r1, pc, r1 | r1 = pc + r1;
0x0000e294 str r0, [sp, 0x28] | var_28h = r0;
0x0000e298 str r6, [sp, 0x1c] | var_1ch = r6;
0x0000e29c str r5, [sp, 0x10] | var_10h = r5;
0x0000e2a0 str r2, [sp, 8] | var_8h = r2;
0x0000e2a4 str r3, [sp] | *(sp) = r3;
0x0000e2a8 add r2, sp, 0x6c | r2 += var_6ch;
0x0000e2ac ldr r3, [sp, 0x5c] | r3 = s1;
0x0000e2b0 str r7, [sp, 0x20] | var_20h = r7;
0x0000e2b4 mov r0, fp | r0 = fp;
0x0000e2b8 bl 0xcd18 | Curl_add_bufferf ();
0x0000e2bc mov r6, 0 | r6 = 0;
0x0000e2c0 ldr r3, [r8] | r3 = *(r8);
0x0000e2c4 mov r5, r0 | r5 = r0;
0x0000e2c8 ldr r0, [r4, 0x2a4] | r0 = *((r4 + 0x2a4));
0x0000e2cc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000e2d0 str r6, [r4, 0x2a4] | *((r4 + 0x2a4)) = r6;
0x0000e2d4 ldr r3, [r8] | r3 = *(r8);
0x0000e2d8 ldr r0, [r4, 0x298] | r0 = *((r4 + 0x298));
0x0000e2dc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000e2e0 cmp r5, r6 |
0x0000e2e4 str r6, [r4, 0x298] | *((r4 + 0x298)) = r6;
| if (r5 != r6) {
0x0000e2e8 bne 0xd540 | goto label_8;
| }
0x0000e2ec ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x0000e2f0 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0000e2f4 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0000e2f8 bne 0xe318 | goto label_88;
| }
0x0000e2fc ldr r3, [r4, 0x180] | r3 = *((r4 + 0x180));
0x0000e300 cmp r3, 0x14 |
| if (r3 == 0x14) {
0x0000e304 beq 0xe318 | goto label_88;
| }
0x0000e308 ldr r3, [sl, 0x3d4] | r3 = *((sl + 0x3d4));
0x0000e30c cmp r3, 3 |
| if (r3 == 3) {
0x0000e310 moveq r5, 1 | r5 = 1;
| goto label_89;
| }
| if (r3 == 3) {
| label_89:
0x0000e314 beq 0xd540 | goto label_8;
| }
| label_88:
0x0000e318 ldr r3, [sl, 0x690] | r3 = *((sl + 0x690));
0x0000e31c cmp r3, 0 |
| if (r3 != 0) {
0x0000e320 bne 0xe778 | goto label_90;
| }
0x0000e324 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0000e328 cmp r3, 0 |
| if (r3 != 0) {
0x0000e32c bne 0xe6d4 | goto label_30;
| }
| label_29:
0x0000e330 mov r1, fp | r1 = fp;
0x0000e334 mov r0, sl | r0 = sl;
0x0000e338 bl 0xd328 | r0 = Curl_add_timecondition ();
0x0000e33c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000e340 bne 0xd540 | goto label_8;
| }
0x0000e344 mov r1, r5 | r1 = r5;
0x0000e348 mov r2, fp | r2 = fp;
0x0000e34c mov r0, r4 | r0 = r4;
0x0000e350 bl 0xcfec | r0 = Curl_add_custom_headers ();
0x0000e354 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000e358 bne 0xd540 | goto label_8;
| }
0x0000e35c mvn r3, 0 | r3 = ~0;
0x0000e360 str r5, [sb, 0x10] | *((sb + 0x10)) = r5;
0x0000e364 mvn r2, 0 | r2 = ~0;
0x0000e368 mov r0, sl | r0 = sl;
0x0000e36c bl 0x82d8 | Curl_pgrsSetUploadSize ();
0x0000e370 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000e374 sub r3, r3, 2 | r3 -= 2;
0x0000e378 cmp r3, 3 |
| if (r3 > 3) {
| /* switch table (4 cases) at 0xe384 */
0x0000e37c addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0000e380 b 0xeff8 | goto label_91;
0x0000e384 b 0xec68 | goto label_92;
0x0000e388 b 0xe988 | goto label_93;
0x0000e38c b 0xe988 | goto label_93;
0x0000e390 b 0xe87c | goto label_94;
| label_76:
0x0000e584 cmp fp, 0 |
| if (fp == 0) {
0x0000e588 beq 0xe084 | goto label_20;
| }
0x0000e58c ldr r1, [pc, -0xec] | r1 = *(0x0000e4a8);
0x0000e590 mov r0, r4 | r0 = r4;
0x0000e594 add r1, pc, r1 | r1 = pc + r1;
0x0000e598 bl 0x17e50 | r0 = Curl_checkheaders ();
0x0000e59c cmp r0, 0 |
| if (r0 != 0) {
0x0000e5a0 bne 0xe084 | goto label_20;
| }
0x0000e5a4 ldr r3, [r8] | r3 = *(r8);
0x0000e5a8 ldr r0, [r4, 0x2a8] | r0 = *((r4 + 0x2a8));
0x0000e5ac blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000e5b0 add r3, sl, 0x220 | r3 = sl + 0x220;
0x0000e5b4 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0000e5b8 cmp r2, 0 |
0x0000e5bc sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x0000e5c0 add r3, sl, 0x4a00 | r3 = sl + 0x4a00;
| if (r2 >= 0) {
0x0000e5c4 bge 0xe5f8 | goto label_95;
| }
0x0000e5c8 ldrd r0, r1, [r3, 0x10] | __asm ("ldrd r0, r1, [r3, 0x10]");
0x0000e5cc subs r2, r0, 1 | r2 = r0 - 1;
0x0000e5d0 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0000e5d4 ldr r0, [pc, -0x130] | r0 = *(0xe4a8);
0x0000e5d8 sbc r3, r1, 0 | __asm ("sbc r3, r1, 0");
0x0000e5dc add r0, pc, r0 | r0 = pc + r0;
0x0000e5e0 bl 0x5b80 | fcn_00005b80 ();
| label_21:
0x0000e5e4 str r0, [r4, 0x2a8] | *((r4 + 0x2a8)) = r0;
0x0000e5e8 ldr r3, [r4, 0x2a8] | r3 = *((r4 + 0x2a8));
0x0000e5ec cmp r3, 0 |
| if (r3 != 0) {
0x0000e5f0 bne 0xe084 | goto label_20;
| }
0x0000e5f4 b 0xd53c | goto label_0;
| label_95:
0x0000e5f8 ldrd r0, r1, [r3, -8] | __asm ("ldrd r0, r1, [r3, -8]");
0x0000e5fc add r2, sl, 0x4000 | r2 = sl + 0x4000;
0x0000e600 orrs lr, r0, r1 | lr = r0 | r1;
0x0000e604 ldr ip, [r2, 0x9f4] | ip = *((r2 + 0x9f4));
0x0000e608 ldrd r2, r3, [r3, 0x10] | __asm ("ldrd r2, r3, [r3, 0x10]");
| if (lr != r0) {
0x0000e60c beq 0xe638 |
0x0000e610 adds r6, r2, r0 | r6 = r2 + r0;
0x0000e614 ldr r0, [pc, -0x16c] | r0 = *(0xe4ac);
0x0000e618 adc r7, r3, r1 | __asm ("adc r7, r3, r1");
0x0000e61c subs r2, r6, 1 | r2 = r6 - 1;
0x0000e620 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x0000e624 sbc r3, r7, 0 | __asm ("sbc r3, r7, 0");
0x0000e628 mov r1, ip | r1 = ip;
0x0000e62c add r0, pc, r0 | r0 = pc + r0;
0x0000e630 bl 0x5b80 | fcn_00005b80 ();
0x0000e634 b 0xe5e4 | goto label_21;
| }
0x0000e638 ldr r0, [pc, -0x18c] | r0 = *(0x0000e4b4);
0x0000e63c mov r1, ip | r1 = ip;
0x0000e640 add r0, pc, r0 | r0 = pc + r0;
0x0000e644 bl 0x5b80 | fcn_00005b80 ();
0x0000e648 b 0xe5e4 | goto label_21;
| label_77:
0x0000e64c ldr r3, [pc, -0x19c] | r3 = *(0xe4b4);
0x0000e650 add r3, pc, r3 | r3 = pc + r3;
0x0000e654 b 0xe0b0 | goto label_22;
| label_78:
0x0000e658 ldr r3, [pc, -0x1a4] | r3 = *(0xe4b8);
0x0000e65c add r3, pc, r3 | r3 = pc + r3;
0x0000e660 b 0xe0b0 | goto label_22;
| label_79:
0x0000e664 mov r0, r5 | r0 = r5;
0x0000e668 bl 0x5250 | strlen (r0);
0x0000e66c mov r1, r5 | r1 = r5;
0x0000e670 mov r2, r0 | r2 = r0;
0x0000e674 mov r0, fp | r0 = fp;
0x0000e678 bl 0xcc00 | Curl_add_buffer ();
0x0000e67c b 0xe114 | goto label_23;
| label_80:
0x0000e680 ldr r3, [pc, -0x1c8] | r3 = *(0xe4bc);
0x0000e684 add r3, pc, r3 | r3 = pc + r3;
0x0000e688 b 0xe180 | goto label_24;
| label_81:
0x0000e68c ldr r5, [pc, -0x1d0] | r5 = *(0xe4c0);
0x0000e690 add r5, pc, r5 | r5 = pc + r5;
0x0000e694 b 0xe1a8 | goto label_25;
| label_82:
0x0000e698 ldr r5, [pc, -0x1d8] | r5 = *(0xe4c4);
0x0000e69c add r5, pc, r5 | r5 = pc + r5;
0x0000e6a0 b 0xe1a8 | goto label_25;
| label_83:
0x0000e6a4 ldr r6, [pc, -0x1e0] | r6 = *(0xe4c8);
0x0000e6a8 add r6, pc, r6 | r6 = pc + r6;
0x0000e6ac b 0xe200 | goto label_26;
| label_84:
0x0000e6b0 ldr r6, [pc, -0x1e8] | r6 = *(0xe4cc);
0x0000e6b4 add r6, pc, r6 | r6 = pc + r6;
0x0000e6b8 b 0xe200 | goto label_26;
| label_85:
0x0000e6bc ldr r7, [pc, -0x1f0] | r7 = *(0xe4d0);
0x0000e6c0 add r7, pc, r7 | r7 = pc + r7;
0x0000e6c4 b 0xe21c | goto label_27;
| label_87:
0x0000e6c8 ldr r1, [pc, -0x1f8] | r1 = *(0x0000e4d8);
0x0000e6cc add r1, pc, r1 | r1 = pc + r1;
0x0000e6d0 b 0xe264 | goto label_28;
| label_30:
0x0000e6d4 mov r6, 0 | r6 = 0;
| label_31:
0x0000e6d8 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0000e6dc clz r3, r5 | r3 &= r5;
0x0000e6e0 lsr r3, r3, 5 | r3 >>= 5;
0x0000e6e4 cmp r2, 0 |
| if (r2 != 0) {
0x0000e6e8 moveq r3, 0 | r3 = 0;
| }
0x0000e6ec cmp r3, 0 |
| if (r3 != 0) {
0x0000e6f0 beq 0xe738 |
0x0000e6f4 cmp r6, 0 |
| if (r6 != 0) {
0x0000e6f8 bne 0xe870 | goto label_96;
| }
0x0000e6fc ldr r1, [pc, -0x228] | r1 = *(0xe4d8);
0x0000e700 mov r0, fp | r0 = fp;
0x0000e704 add r1, pc, r1 | r1 = pc + r1;
0x0000e708 bl 0xcd18 | r0 = Curl_add_bufferf ();
0x0000e70c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000e710 bne 0xe738 | goto label_97;
| }
0x0000e714 ldr r2, [pc, -0x23c] | r2 = *(0xe4dc);
0x0000e718 add r2, pc, r2 | r2 = pc + r2;
| label_32:
0x0000e71c ldr r1, [pc, -0x240] | r1 = *(0x0000e4e4);
0x0000e720 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0000e724 add r1, pc, r1 | r1 = pc + r1;
0x0000e728 mov r0, fp | r0 = fp;
0x0000e72c bl 0xcd18 | Curl_add_bufferf ();
0x0000e730 add r6, r6, 1 | r6++;
0x0000e734 mov r5, r0 | r5 = r0;
| }
| label_97:
0x0000e738 cmp r6, 0 |
0x0000e73c clz r3, r5 | r3 &= r5;
0x0000e740 lsr r3, r3, 5 | r3 >>= 5;
| if (r6 == 0) {
0x0000e744 movne r6, r3 | r6 = r3;
| }
| if (r6 != 0) {
0x0000e748 moveq r6, 0 | r6 = 0;
| }
0x0000e74c cmp r6, 0 |
| if (r6 != 0) {
0x0000e750 beq 0xe76c |
0x0000e754 ldr r1, [pc, -0x274] | r1 = *(0xe4e4);
0x0000e758 mov r2, 2 | r2 = 2;
0x0000e75c add r1, pc, r1 | r1 = pc + r1;
0x0000e760 mov r0, fp | r0 = fp;
0x0000e764 bl 0xcc00 | r0 = Curl_add_buffer ();
0x0000e768 mov r5, r0 | r5 = r0;
| }
0x0000e76c cmp r5, 0 |
| if (r5 == 0) {
0x0000e770 beq 0xe330 | goto label_29;
| }
0x0000e774 b 0xd540 | goto label_8;
| label_90:
0x0000e778 mov r2, 2 | r2 = 2;
0x0000e77c mov r1, r2 | r1 = r2;
0x0000e780 mov r0, sl | r0 = sl;
0x0000e784 bl 0x21464 | Curl_share_lock ();
0x0000e788 ldr r3, [r4, 0x284] | r3 = *((r4 + 0x284));
0x0000e78c ldr r1, [r4, 0x2b4] | r1 = *((r4 + 0x2b4));
0x0000e790 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000e794 ldr r0, [sp, 0x58] | r0 = nmeb;
0x0000e798 cmp r1, 0 |
0x0000e79c lsr r3, r3, 1 | r3 >>= 1;
0x0000e7a0 add r2, sl, 0x4000 | r2 = sl + 0x4000;
| if (r1 != 0) {
0x0000e7a4 moveq r1, r0 | r1 = r0;
| }
0x0000e7a8 and r3, r3, 1 | r3 &= 1;
0x0000e7ac ldr r2, [r2, 0x9ec] | r2 = *((r2 + 0x9ec));
0x0000e7b0 ldr r0, [sl, 0x690] | r0 = *((sl + 0x690));
0x0000e7b4 bl 0xaca0 | Curl_cookie_getlist ();
0x0000e7b8 mov r1, 2 | r1 = 2;
0x0000e7bc mov r8, r0 | r8 = r0;
0x0000e7c0 mov r0, sl | r0 = sl;
0x0000e7c4 bl 0x214ac | Curl_share_unlock ();
0x0000e7c8 cmp r8, 0 |
| if (r8 == 0) {
0x0000e7cc beq 0xe6d4 | goto label_30;
| }
0x0000e7d0 ldr r3, [pc, -0x2ec] | r3 = *(0xe4e8);
0x0000e7d4 mov r7, r8 | r7 = r8;
0x0000e7d8 add r3, pc, r3 | r3 = pc + r3;
0x0000e7dc str r3, [sp, 0x38] | var_38h = r3;
0x0000e7e0 ldr r3, [pc, -0x2f8] | r3 = *(0xe4ec);
0x0000e7e4 mov r6, 0 | r6 = 0;
0x0000e7e8 add r3, pc, r3 | r3 = pc + r3;
0x0000e7ec str r3, [sp, 0x3c] | var_3ch = r3;
0x0000e7f0 ldr r3, [pc, -0x304] | r3 = *(0xe4f0);
0x0000e7f4 add r3, pc, r3 | r3 = pc + r3;
0x0000e7f8 str r3, [sp, 0x40] | s = r3;
| do {
0x0000e7fc ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0000e800 cmp r3, 0 |
| if (r3 != 0) {
0x0000e804 beq 0xe854 |
0x0000e808 cmp r6, 0 |
| if (r6 == 0) {
0x0000e80c ldrne r2, [sp, 0x3c] | r2 = var_3ch;
| }
| if (r6 == 0) {
0x0000e810 bne 0xe830 |
0x0000e814 ldr r1, [sp, 0x40] | r1 = s;
0x0000e818 mov r0, fp | r0 = fp;
0x0000e81c bl 0xcd18 | r0 = Curl_add_bufferf ();
0x0000e820 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000e824 bne 0xe864 | goto label_98;
| }
0x0000e828 ldr r2, [pc, -0x338] | r2 = *(0xe4f4);
0x0000e82c add r2, pc, r2 | r2 = pc + r2;
| }
0x0000e830 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0000e834 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0000e838 str r3, [sp] | *(sp) = r3;
0x0000e83c mov r0, fp | r0 = fp;
0x0000e840 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000e844 bl 0xcd18 | r0 = Curl_add_bufferf ();
0x0000e848 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000e84c bne 0xe864 | goto label_98;
| }
0x0000e850 add r6, r6, 1 | r6++;
| }
0x0000e854 ldr r7, [r7] | r7 = *(r7);
0x0000e858 cmp r7, 0 |
0x0000e85c bne 0xe7fc |
| } while (r7 != 0);
0x0000e860 mov r5, r7 | r5 = r7;
| label_98:
0x0000e864 mov r0, r8 | r0 = r8;
0x0000e868 bl 0xac7c | Curl_cookie_freelist ();
0x0000e86c b 0xe6d8 | goto label_31;
| label_96:
0x0000e870 ldr r2, [pc, -0x37c] | r2 = *(0xe4f8);
0x0000e874 add r2, pc, r2 | r2 = pc + r2;
0x0000e878 b 0xe71c | goto label_32;
| label_94:
0x0000e87c ldrb r3, [r4, 0x262] | r3 = *((r4 + 0x262));
0x0000e880 cmp r3, 0 |
| if (r3 != 0) {
0x0000e884 bne 0xe8c0 | void (*0xe8c0)() ();
| }
| label_93:
0x0000e988 ldrb r3, [r4, 0x262] | r3 = *((r4 + 0x262));
0x0000e98c cmp r3, 0 |
| if (r3 == 0) {
0x0000e990 beq 0xea14 | void (*0xea14)() ();
| }
| label_92:
0x0000ec68 ldrb r3, [r4, 0x262] | r3 = *((r4 + 0x262));
0x0000ec6c cmp r3, 0 |
| if (r3 != 0) {
0x0000ec70 bne 0xecf0 | void (*0xecf0)() ();
| }
| label_91:
0x0000eff8 ldr r1, [pc, -0xa84] | r1 = *(0xe578);
0x0000effc mov r2, 2 | r2 = 2;
0x0000f000 add r1, pc, r1 | r1 = pc + r1;
0x0000f004 mov r0, fp | r0 = fp;
0x0000f008 bl 0xcc00 | r0 = Curl_add_buffer ();
0x0000f00c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000f010 bne 0xd540 | goto label_8;
| }
0x0000f014 add r2, sl, 0x4a00 | r2 = sl + 0x4a00;
0x0000f018 str r5, [sp] | *(sp) = r5;
0x0000f01c mov r3, r5 | r3 = r5;
0x0000f020 add r2, r2, 0x78 | r2 += 0x78;
0x0000f024 mov r1, r4 | r1 = r4;
0x0000f028 mov r0, fp | r0 = fp;
0x0000f02c bl 0xca20 | r0 = Curl_add_buffer_send ();
0x0000f030 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0000f034 ldrne r1, [pc, -0xabc] | r1 = *((pc - 0xabc));
| }
| if (r5 == r0) {
0x0000f038 addne r1, pc, r1 | r1 = pc + r1;
| }
| /* Beware that this jump is a conditional jump.
| * r2dec transformed it as a return, due being the
| * last instruction. Please, check 'pdda' output
| * for more hints. */
0x0000f03c bne 0xe934 | return void (*0xe934)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xf060 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.Curl_http_readwrite_headers () | void Curl_http_readwrite_headers (int32_t arg_1h, int32_t arg_9d8h, int32_t arg_9dch, int32_t arg_a60h, int32_t arg_a68h, int32_t arg_a70h, int32_t arg_a74h, int32_t arg1, int32_t arg2) {
| int32_t var_1h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_38h_2;
| int32_t var_40h;
| int32_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x0000f060 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f064 ldr r7, [pc, 0xf9c] | r7 = *(0x10004);
0x0000f068 sub sp, sp, 0x44 |
0x0000f06c mov sl, r3 | sl = r3;
0x0000f070 add r3, r0, 0x70 | r3 = r0 + 0x70;
0x0000f074 str r3, [sp, 0x14] | var_14h = r3;
0x0000f078 ldr r3, [r2] | r3 = *(r2);
0x0000f07c mov r4, r0 | r4 = r0;
0x0000f080 str r3, [sp, 0x18] | var_18h = r3;
0x0000f084 ldr r3, [r0, 0xcc] | r3 = *((r0 + 0xcc));
0x0000f088 mov r5, r1 | r5 = r1;
0x0000f08c str r3, [sp, 0x1c] | var_1ch = r3;
0x0000f090 ldr r3, [pc, 0xf74] | r3 = $d;
0x0000f094 mov sb, r2 | sb = r2;
0x0000f098 add r3, pc, r3 | r3 = pc + r3;
0x0000f09c str r3, [sp, 0x20] | var_20h = r3;
0x0000f0a0 ldr r3, [pc, 0xf68] | r3 = *(0x1000c);
0x0000f0a4 add r7, pc, r7 | r7 = pc + r7;
0x0000f0a8 add r3, pc, r3 | r3 = pc + r3;
0x0000f0ac str r3, [sp, 0x24] | var_24h = r3;
0x0000f0b0 ldr r3, [pc, 0xf5c] | r3 = *(0x10010);
0x0000f0b4 add r3, pc, r3 | r3 = pc + r3;
0x0000f0b8 str r3, [sp, 0x28] | var_28h = r3;
| label_7:
0x0000f0bc ldr r8, [r4, 0xcc] | r8 = *((r4 + 0xcc));
0x0000f0c0 ldr r6, [sb] | r6 = *(sb);
0x0000f0c4 str r8, [r4, 0xd0] | *((r4 + 0xd0)) = r8;
0x0000f0c8 mov r2, r6 | r2 = r6;
0x0000f0cc mov r1, 0xa | r1 = 0xa;
0x0000f0d0 mov r0, r8 | r0 = r8;
0x0000f0d4 bl 0x58f8 | r0 = memchr (r0, r1, r2);
0x0000f0d8 cmp r0, 0 |
0x0000f0dc str r0, [r4, 0xd4] | *((r4 + 0xd4)) = r0;
| if (r0 != 0) {
0x0000f0e0 bne 0xf148 | goto label_22;
| }
0x0000f0e4 mov r2, r6 | r2 = r6;
0x0000f0e8 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000f0ec mov r0, r4 | r0 = r4;
0x0000f0f0 bl 0xbaf8 | r0 = header_append ();
0x0000f0f4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0000f0f8 bne 0xf13c | goto label_2;
| }
0x0000f0fc ldr r3, [r4, 0xc0] | r3 = *((r4 + 0xc0));
0x0000f100 cmp r3, 0 |
0x0000f104 beq 0xf110 |
| while (r3 < 5) {
| label_0:
0x0000f108 mov r6, 0 | r6 = 0;
0x0000f10c b 0xf13c | goto label_2;
0x0000f110 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000f114 cmp r3, 5 |
0x0000f118 bls 0xf108 |
| }
0x0000f11c ldr r1, [r4, 0x7c4] | r1 = *((r4 + 0x7c4));
0x0000f120 ldr r0, [r4, 0x4a0] | r0 = *((r4 + 0x4a0));
0x0000f124 bl 0xbdd4 | r0 = checkhttpprefix_isra_2 ();
0x0000f128 cmp r0, 0 |
| if (r0 != 0) {
0x0000f12c strbeq r6, [r4, 0xb8] | *((r4 + 0xb8)) = r6;
| }
| if (r0 == 0) {
0x0000f130 moveq r3, 2 | r3 = 2;
| goto label_23;
| }
| if (r0 != 0) {
| label_23:
0x0000f134 bne 0xf108 | goto label_0;
| }
| label_1:
0x0000f138 str r3, [r4, 0xbc] | *((r4 + 0xbc)) = r3;
| do {
| label_2:
0x0000f13c mov r0, r6 | r0 = r6;
0x0000f140 add sp, sp, 0x44 |
0x0000f144 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x0000f148 sub r3, r0, r8 | r3 = r0 - r8;
0x0000f14c add r3, r3, 1 | r3++;
0x0000f150 sub r6, r6, r3 | r6 -= r3;
0x0000f154 add r2, r0, 1 | r2 = r0 + 1;
0x0000f158 str r6, [sb] | *(sb) = r6;
0x0000f15c ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000f160 str r2, [r4, 0xcc] | *((r4 + 0xcc)) = r2;
0x0000f164 mov r0, r4 | r0 = r4;
0x0000f168 sub r2, r2, r8 | r2 -= r8;
0x0000f16c bl 0xbaf8 | r0 = header_append ();
0x0000f170 subs r6, r0, 0 | r6 = r0 - 0;
0x0000f174 bne 0xf13c |
| } while (r6 != r0);
0x0000f178 ldr r3, [r4, 0xc4] | r3 = *((r4 + 0xc4));
0x0000f17c ldr r1, [r4, 0x7c4] | r1 = *((r4 + 0x7c4));
0x0000f180 str r3, [r4, 0xd4] | *((r4 + 0xd4)) = r3;
0x0000f184 ldr r3, [r4, 0xc0] | r3 = *((r4 + 0xc0));
0x0000f188 str r1, [r4, 0xd8] | *((r4 + 0xd8)) = r1;
0x0000f18c cmp r3, 0 |
| if (r3 != 0) {
0x0000f190 bne 0xf1e0 | goto label_24;
| }
0x0000f194 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000f198 cmp r3, 5 |
| if (r3 < 5) {
0x0000f19c bls 0xf1e0 | goto label_24;
| }
0x0000f1a0 ldr r0, [r4, 0x4a0] | r0 = *((r4 + 0x4a0));
0x0000f1a4 bl 0xbdd4 | r0 = checkhttpprefix_isra_2 ();
0x0000f1a8 cmp r0, 0 |
| if (r0 != 0) {
0x0000f1ac bne 0xf1e0 | goto label_24;
| }
0x0000f1b0 ldr r3, [sb] | r3 = *(sb);
0x0000f1b4 strb r6, [r4, 0xb8] | *((r4 + 0xb8)) = r6;
0x0000f1b8 cmp r3, 0 |
| if (r3 != 0) {
0x0000f1bc movne r3, 1 | r3 = 1;
| goto label_25;
| }
| if (r3 != 0) {
| label_25:
0x0000f1c0 bne 0xf138 | goto label_1;
| }
0x0000f1c4 mov r3, 2 | r3 = 2;
0x0000f1c8 str r3, [r4, 0xbc] | *((r4 + 0xbc)) = r3;
0x0000f1cc ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000f1d0 str r3, [sb] | *(sb) = r3;
0x0000f1d4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000f1d8 str r3, [r4, 0xcc] | *((r4 + 0xcc)) = r3;
0x0000f1dc b 0xf13c | goto label_2;
| label_24:
0x0000f1e0 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f1e4 ldrb r3, [r0] | r3 = *(r0);
0x0000f1e8 cmp r3, 0xd |
0x0000f1ec cmpne r3, 0xa | __asm ("cmpne r3, 0xa");
| if (r3 != 0xd) {
0x0000f1f0 bne 0xf5f0 | goto label_26;
| }
0x0000f1f4 cmp r3, 0xd |
| if (r3 != 0xd) {
0x0000f1f8 addeq r0, r0, 1 | r0++;
| }
| if (r3 != 0xd) {
0x0000f1fc streq r0, [r4, 0xd8] | *((r4 + 0xd8)) = r0;
| }
0x0000f200 ldr r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x0000f204 ldrb r2, [r3] | r2 = *(r3);
0x0000f208 cmp r2, 0xa |
| if (r2 != 0xa) {
0x0000f20c addeq r3, r3, 1 | r3++;
| }
| if (r2 != 0xa) {
0x0000f210 streq r3, [r4, 0xd8] | *((r4 + 0xd8)) = r3;
| }
0x0000f214 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000f218 sub r2, r3, 0x64 | r2 = r3 - 0x64;
0x0000f21c cmp r2, 0x63 |
| if (r2 > 0x63) {
0x0000f220 bhi 0xf334 | goto label_27;
| }
0x0000f224 cmp r3, 0x64 |
| if (r3 != 0x64) {
0x0000f228 beq 0xf248 |
0x0000f22c cmp r3, 0x65 |
0x0000f230 mov r8, 0 | r8 = 0;
| if (r3 == 0x65) {
0x0000f234 beq 0xf2f8 | goto label_28;
| }
0x0000f238 mov r3, 1 | r3 = 1;
0x0000f23c strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000f240 str r8, [r4, 0xc0] | *((r4 + 0xc0)) = r8;
0x0000f244 b 0xf27c |
| } else {
0x0000f248 mov r3, 1 | r3 = 1;
0x0000f24c strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000f250 ldr r3, [r4, 0xf4] | r3 = *((r4 + 0xf4));
0x0000f254 mov r1, 0 | r1 = 0;
0x0000f258 cmp r3, r1 |
0x0000f25c str r1, [r4, 0xc0] | *((r4 + 0xc0)) = r1;
| if (r3 == r1) {
0x0000f260 beq 0xf27c | goto label_3;
| }
0x0000f264 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0000f268 str r1, [r4, 0xf4] | *((r4 + 0xf4)) = r1;
0x0000f26c orr r3, r3, 2 | r3 |= 2;
0x0000f270 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x0000f274 mov r0, r4 | r0 = r4;
0x0000f278 bl 0x1eb2c | Curl_expire_done ();
| }
| do {
| label_3:
0x0000f27c ldrb r3, [r5, 0x251] | r3 = *((r5 + 0x251));
0x0000f280 cmp r3, 0 |
| if (r3 != 0) {
0x0000f284 beq 0xf2d0 |
| label_4:
0x0000f288 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000f28c ldr r2, [pc, 0xd84] | r2 = *(0x10014);
0x0000f290 cmp r3, r2 |
| if (r3 != r2) {
0x0000f294 ldreq r3, [r5, 0x2f8] | r3 = *((r5 + 0x2f8));
| }
| if (r3 != r2) {
0x0000f298 beq 0xf2ac |
0x0000f29c ldr r2, [pc, 0xd78] | r2 = *(0x10018);
0x0000f2a0 cmp r3, r2 |
| if (r3 != r2) {
0x0000f2a4 bne 0xf2d0 | goto label_5;
| }
0x0000f2a8 ldr r3, [r5, 0x310] | r3 = *((r5 + 0x310));
| }
0x0000f2ac cmp r3, 2 |
| if (r3 != 2) {
0x0000f2b0 bne 0xf2d0 | goto label_5;
| }
0x0000f2b4 ldr r1, [pc, 0xd64] | r1 = *(0x1001c);
0x0000f2b8 mov r0, r4 | r0 = r4;
0x0000f2bc add r1, pc, r1 | r1 = pc + r1;
0x0000f2c0 bl 0x104cc | Curl_infof ();
0x0000f2c4 add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x0000f2c8 mov r2, 1 | r2 = 1;
0x0000f2cc strb r2, [r3, 0x8a0] | *((r3 + 0x8a0)) = r2;
| }
| label_5:
0x0000f2d0 mov r0, r5 | r0 = r5;
0x0000f2d4 bl 0xb8e4 | r0 = http_should_fail ();
0x0000f2d8 cmp r0, 0 |
| if (r0 == 0) {
0x0000f2dc beq 0xf3b4 | goto label_29;
| }
0x0000f2e0 ldr r1, [pc, 0xd3c] | r1 = *(0x10020);
0x0000f2e4 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000f2e8 add r1, pc, r1 | r1 = pc + r1;
| label_8:
0x0000f2ec mov r0, r4 | r0 = r4;
0x0000f2f0 bl 0x10544 | Curl_failf ();
0x0000f2f4 b 0xf8b8 | goto label_30;
| label_28:
0x0000f2f8 ldr fp, [r4, 0xf8] | fp = *((r4 + 0xf8));
0x0000f2fc cmp fp, 1 |
| if (fp == 1) {
0x0000f300 bne 0xf32c |
0x0000f304 ldr r1, [pc, 0xd1c] | r1 = *(0x10024);
0x0000f308 mov r0, r4 | r0 = r4;
0x0000f30c add r1, pc, r1 | r1 = pc + r1;
0x0000f310 bl 0x104cc | Curl_infof ();
0x0000f314 mov r3, 2 | r3 = 2;
0x0000f318 str r3, [r4, 0xf8] | *((r4 + 0xf8)) = r3;
0x0000f31c strb fp, [r4, 0xb8] | *((r4 + 0xb8)) = fp;
0x0000f320 str r8, [r4, 0xc0] | *((r4 + 0xc0)) = r8;
0x0000f324 mov r6, 1 | r6 = 1;
0x0000f328 b 0xf13c | goto label_2;
| }
0x0000f32c strb r8, [r4, 0xb8] | *((r4 + 0xb8)) = r8;
0x0000f330 b 0xf27c |
| } while (1);
| label_27:
0x0000f334 mov r3, 0 | r3 = 0;
0x0000f338 strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000f33c ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0000f340 mvn r1, 0 | r1 = ~0;
0x0000f344 mvn r0, 0 | r0 = ~0;
0x0000f348 cmp r3, r1 |
0x0000f34c cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| if (r3 != r1) {
0x0000f350 bne 0xf27c | goto label_3;
| }
0x0000f354 ldrb r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x0000f358 cmp r3, 0 |
| if (r3 != 0) {
0x0000f35c bne 0xf27c | goto label_3;
| }
0x0000f360 ldrb r3, [r5, 0x251] | r3 = *((r5 + 0x251));
0x0000f364 cmp r3, 0 |
| if (r3 != 0) {
0x0000f368 bne 0xf288 | goto label_4;
| }
0x0000f36c ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000f370 cmp r3, 0xb |
| if (r3 != 0xb) {
0x0000f374 bne 0xf2d0 | goto label_5;
| }
0x0000f378 ldr r3, [r5, 0x284] | r3 = *((r5 + 0x284));
0x0000f37c ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000f380 tst r3, 0x40000 |
| if ((r3 & 0x40000) != 0) {
0x0000f384 bne 0xf2d0 | goto label_5;
| }
0x0000f388 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x0000f38c cmp r3, 6 |
| if (r3 == 6) {
0x0000f390 beq 0xf2d0 | goto label_5;
| }
0x0000f394 ldr r1, [pc, 0xc90] | r1 = *(0x10028);
0x0000f398 mov r0, r4 | r0 = r4;
0x0000f39c add r1, pc, r1 | r1 = pc + r1;
0x0000f3a0 bl 0x104cc | Curl_infof ();
0x0000f3a4 mov r1, 2 | r1 = 2;
0x0000f3a8 mov r0, r5 | r0 = r5;
0x0000f3ac bl 0x1cb34 | Curl_conncontrol ();
0x0000f3b0 b 0xf27c | goto label_3;
| label_29:
0x0000f3b4 ldrb r3, [r4, 0x4cd] | r3 = *((r4 + 0x4cd));
0x0000f3b8 ldr r2, [r4, 0x7c4] | r2 = *((r4 + 0x7c4));
0x0000f3bc ldr r8, [r4, 0xd8] | r8 = *((r4 + 0xd8));
0x0000f3c0 cmp r3, 0 |
0x0000f3c4 sub r8, r8, r2 | r8 -= r2;
| if (r3 == 0) {
0x0000f3c8 movne r1, 3 | r1 = 3;
| }
| if (r3 != 0) {
0x0000f3cc moveq r1, 2 | r1 = 2;
| }
0x0000f3d0 mov r3, r8 | r3 = r8;
0x0000f3d4 mov r0, r5 | r0 = r5;
0x0000f3d8 bl 0x107cc | r0 = Curl_client_write ();
0x0000f3dc cmp r0, 0 |
| if (r0 != 0) {
0x0000f3e0 bne 0xfd50 | goto label_31;
| }
0x0000f3e4 add fp, r4, 0x4000 |
0x0000f3e8 ldr r3, [fp, 0xa74] | r3 = *(arg_a74h);
0x0000f3ec ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000f3f0 add r3, r3, r8 | r3 += r8;
0x0000f3f4 str r3, [fp, 0xa74] | *(arg_a74h) = r3;
0x0000f3f8 ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x0000f3fc sub r2, r2, 0x64 | r2 -= 0x64;
0x0000f400 add r3, r8, r3 | r3 = r8 + r3;
0x0000f404 cmp r2, 0x64 |
0x0000f408 str r3, [r4, 0xa0] | *((r4 + 0xa0)) = r3;
| if (r2 < 0x64) {
0x0000f40c movhs r3, 0 | r3 = 0;
| }
0x0000f410 str r3, [r4, 0xa4] | *((r4 + 0xa4)) = r3;
0x0000f414 mov r0, r5 | r0 = r5;
0x0000f418 bl 0xc2dc | r0 = Curl_http_auth_act ();
0x0000f41c subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x0000f420 bne 0x10114 | goto label_32;
| }
0x0000f424 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000f428 cmp r2, 0x12c |
| if (r2 >= 0x12c) {
0x0000f42c blt 0xf4e0 |
0x0000f430 ldrb r2, [r5, 0x262] | r2 = *((r5 + 0x262));
0x0000f434 cmp r2, 0 |
| if (r2 == 0) {
0x0000f438 bne 0xf4b8 |
0x0000f43c ldrb r2, [r5, 0x251] | r2 = *((r5 + 0x251));
0x0000f440 cmp r2, 0 |
| if (r2 != 0) {
0x0000f444 bne 0xf4b8 | goto label_6;
| }
0x0000f448 ldrb r2, [r5, 0x263] | r2 = *((r5 + 0x263));
0x0000f44c cmp r2, 0 |
| if (r2 != 0) {
0x0000f450 bne 0xf4c4 | goto label_33;
| }
0x0000f454 ldr r2, [r4, 0x3d0] | r2 = *((r4 + 0x3d0));
0x0000f458 sub r2, r2, 2 | r2 -= 2;
0x0000f45c cmp r2, 3 |
| if (r2 > 3) {
0x0000f460 bhi 0xf4b8 | goto label_6;
| }
0x0000f464 mov r1, r3 | r1 = r3;
0x0000f468 mov r0, r4 | r0 = r4;
0x0000f46c str r3, [sp, 0x2c] | var_2ch = r3;
0x0000f470 bl 0x1eb2c | Curl_expire_done ();
0x0000f474 ldrb r2, [r4, 0x114] | r2 = *((r4 + 0x114));
0x0000f478 cmp r2, 0 |
| if (r2 != 0) {
0x0000f47c bne 0xf4b8 | goto label_6;
| }
0x0000f480 ldrb r2, [r4, 0x4c9] | r2 = *((r4 + 0x4c9));
0x0000f484 cmp r2, 0 |
| if (r2 == 0) {
0x0000f488 beq 0xf588 | goto label_34;
| }
0x0000f48c ldr r1, [pc, 0xb9c] | r1 = *(0x1002c);
0x0000f490 mov r0, r4 | r0 = r4;
0x0000f494 add r1, pc, r1 | r1 = pc + r1;
0x0000f498 bl 0x104cc | Curl_infof ();
0x0000f49c ldr r2, [r4, 0xf4] | r2 = *((r4 + 0xf4));
0x0000f4a0 cmp r2, 0 |
| if (r2 == 0) {
0x0000f4a4 ldrne r3, [sp, 0x2c] | r3 = var_2ch;
| }
| if (r2 == 0) {
0x0000f4a8 strne r3, [r4, 0xf4] | *((r4 + 0xf4)) = r3;
| }
| if (r2 == 0) {
0x0000f4ac ldrne r3, [r4, 0x110] | r3 = *((r4 + 0x110));
| }
| if (r2 == 0) {
0x0000f4b0 orrne r3, r3, 2 | r3 |= 2;
| }
| if (r2 != 0) {
0x0000f4b4 strne r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| goto label_6;
| }
| }
| label_6:
0x0000f4b8 ldrb r3, [r5, 0x263] | r3 = *((r5 + 0x263));
0x0000f4bc cmp r3, 0 |
| if (r3 == 0) {
0x0000f4c0 beq 0xf4e0 | goto label_35;
| }
| label_33:
0x0000f4c4 ldr r1, [pc, 0xb68] | r1 = *(0x10030);
0x0000f4c8 mov r0, r4 | r0 = r4;
0x0000f4cc add r1, pc, r1 | r1 = pc + r1;
0x0000f4d0 bl 0x104cc | Curl_infof ();
0x0000f4d4 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0000f4d8 orr r3, r3, 2 | r3 |= 2;
0x0000f4dc str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| }
| label_35:
0x0000f4e0 ldrb r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x0000f4e4 cmp r3, 0 |
| if (r3 != 0) {
0x0000f4e8 bne 0xf5cc | goto label_36;
| }
0x0000f4ec ldrb r3, [r4, 0x4d0] | r3 = *((r4 + 0x4d0));
0x0000f4f0 cmp r3, 0 |
| if (r3 == 0) {
0x0000f4f4 movne r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x0000f4f8 strbne r3, [sl] | *(sl) = r3;
| }
| if (r3 == 0) {
0x0000f4fc bne 0xf518 |
0x0000f500 ldrb r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x0000f504 cmp r3, 0 |
| if (r3 == 0) {
0x0000f508 mvnne r2, 0 | r2 = ~0;
| }
| if (r3 == 0) {
0x0000f50c mvnne r3, 0 | r3 = ~0;
| }
0x0000f510 strdne r2, r3, [r4, 0x70] | __asm ("strdne r2, r3, [r4, 0x70]");
0x0000f514 strdne r2, r3, [r4, 0x80] | __asm ("strdne r2, r3, [r4, 0x80]");
| }
0x0000f518 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0000f51c mvn r1, 0 | r1 = ~0;
0x0000f520 mvn r0, 0 | r0 = ~0;
0x0000f524 cmp r3, r1 |
0x0000f528 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| if (r3 != r1) {
0x0000f52c beq 0xf540 |
0x0000f530 mov r0, r4 | r0 = r4;
0x0000f534 bl 0x8294 | Curl_pgrsSetDownloadSize ();
0x0000f538 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0000f53c strd r2, r3, [r4, 0x80] | __asm ("strd r2, r3, [r4, 0x80]");
| }
0x0000f540 ldrd r2, r3, [r4, 0x80] | __asm ("ldrd r2, r3, [r4, 0x80]");
0x0000f544 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x0000f548 moveq r3, 1 | r3 = 1;
| }
| if (r3 != r2) {
0x0000f54c strbeq r3, [sl] | *(sl) = r3;
| }
0x0000f550 ldrb r3, [sl] | r3 = *(sl);
0x0000f554 cmp r3, 0 |
| if (r3 == 0) {
0x0000f558 ldrne r3, [r4, 0x110] | r3 = *((r4 + 0x110));
| }
0x0000f55c bicne r3, r3, 1 | __asm ("bicne r3, r3, 1");
| if (r3 == 0) {
0x0000f560 strne r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| }
0x0000f564 ldrb r3, [r4, 0x4d8] | r3 = *((r4 + 0x4d8));
0x0000f568 cmp r3, 0 |
| if (r3 == 0) {
0x0000f56c beq 0xf108 | goto label_0;
| }
0x0000f570 mov r3, r8 | r3 = r8;
0x0000f574 ldr r2, [r4, 0xd0] | r2 = *((r4 + 0xd0));
0x0000f578 mov r1, 1 | r1 = 1;
0x0000f57c mov r0, r4 | r0 = r4;
0x0000f580 bl 0x10424 | Curl_debug ();
0x0000f584 b 0xf108 | goto label_0;
| label_34:
0x0000f588 ldr r1, [pc, 0xaa8] | r1 = *(0x10034);
0x0000f58c mov r0, r4 | r0 = r4;
0x0000f590 add r1, pc, r1 | r1 = pc + r1;
0x0000f594 bl 0x104cc | Curl_infof ();
0x0000f598 mov r1, 2 | r1 = 2;
0x0000f59c mov r0, r5 | r0 = r5;
0x0000f5a0 bl 0x1cb34 | Curl_conncontrol ();
0x0000f5a4 mov r3, 1 | r3 = 1;
0x0000f5a8 strb r3, [r4, 0x114] | *((r4 + 0x114)) = r3;
0x0000f5ac ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0000f5b0 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0000f5b4 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x0000f5b8 ldrb r3, [fp, 0x9dc] | r3 = *(arg_9dch);
0x0000f5bc cmp r3, 0 |
| if (r3 == 0) {
0x0000f5c0 movne r3, 3 | r3 = 3;
| }
| if (r3 == 0) {
0x0000f5c4 strne r3, [r4, 0xf4] | *((r4 + 0xf4)) = r3;
| }
0x0000f5c8 b 0xf4b8 | goto label_6;
| label_36:
0x0000f5cc ldr r3, [r4, 0x7c4] | r3 = *((r4 + 0x7c4));
0x0000f5d0 str r3, [r4, 0xc4] | *((r4 + 0xc4)) = r3;
0x0000f5d4 mov r3, 0 | r3 = 0;
0x0000f5d8 str r3, [r4, 0xc8] | *((r4 + 0xc8)) = r3;
| label_12:
0x0000f5dc ldr r3, [r4, 0xcc] | r3 = *((r4 + 0xcc));
0x0000f5e0 ldrb r3, [r3] | r3 = *(r3);
0x0000f5e4 cmp r3, 0 |
| if (r3 != 0) {
0x0000f5e8 bne 0xf0bc | goto label_7;
| }
0x0000f5ec b 0xf13c | goto label_2;
| label_26:
0x0000f5f0 ldr fp, [r4, 0xc0] | fp = *((r4 + 0xc0));
0x0000f5f4 add r3, fp, 1 | r3 += arg_1h;
0x0000f5f8 cmp fp, 0 |
0x0000f5fc str r3, [r4, 0xc0] | *((r4 + 0xc0)) = r3;
| if (fp != 0) {
0x0000f600 bne 0xf920 | goto label_37;
| }
0x0000f604 ldr r3, [r5, 0x284] | r3 = *((r5 + 0x284));
0x0000f608 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000f60c tst r3, 3 |
| if ((r3 & 3) == 0) {
0x0000f610 beq 0xf838 | goto label_38;
| }
0x0000f614 ldr r1, [pc, 0xa20] | r1 = *(0x10038);
0x0000f618 add r3, sp, 0x38 | r3 += var_38h;
0x0000f61c add r8, r4, 0xe8 | r8 = r4 + 0xe8;
0x0000f620 str r3, [sp] | *(sp) = r3;
0x0000f624 str r8, [sp, 4] | var_4h = r8;
0x0000f628 add r3, r5, 0x180 | r3 = r5 + 0x180;
0x0000f62c add r2, sp, 0x34 | r2 += var_34h;
0x0000f630 add r1, pc, r1 | r1 = pc + r1;
0x0000f634 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000f638 cmp r0, 1 |
| if (r0 != 1) {
0x0000f63c bne 0xf7e0 | goto label_39;
| }
0x0000f640 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000f644 cmp r3, 2 |
| if (r3 != 2) {
0x0000f648 bne 0x1011c | goto label_40;
| }
0x0000f64c ldr r1, [pc, 0x9ec] | r1 = *(0x1003c);
0x0000f650 mov r2, r8 | r2 = r8;
0x0000f654 add r1, pc, r1 | r1 = pc + r1;
0x0000f658 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f65c bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000f660 cmp r0, 1 |
| if (r0 != 1) {
0x0000f664 bne 0x1011c | goto label_40;
| }
0x0000f668 mov r3, 0x20 | r3 = 0x20;
0x0000f66c str fp, [r5, 0x180] | *((r5 + 0x180)) = fp;
0x0000f670 strb r3, [sp, 0x38] | var_38h = r3;
| do {
0x0000f674 ldrb r3, [sp, 0x38] | r3 = var_38h;
0x0000f678 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x0000f67c bne 0x1011c | goto label_40;
| }
0x0000f680 ldr r2, [r5, 0x180] | r2 = *((r5 + 0x180));
0x0000f684 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000f688 mov r1, 0xa | r1 = 0xa;
0x0000f68c mla r0, r1, r3, r2 | __asm ("mla r0, r1, r3, r2");
0x0000f690 ldr r3, [r4, 0xf8] | r3 = *((r4 + 0xf8));
0x0000f694 cmp r0, 0x14 |
0x0000f698 sub r2, r3, 2 | r2 = r3 - 2;
0x0000f69c clz r2, r2 | r2 &= r2;
0x0000f6a0 lsr r2, r2, 5 | r2 >>= 5;
| if (r0 != 0x14) {
0x0000f6a4 moveq r2, 0 | r2 = 0;
| }
0x0000f6a8 cmp r2, 0 |
0x0000f6ac str r0, [r5, 0x180] | *((r5 + 0x180)) = r0;
| if (r2 != 0) {
0x0000f6b0 beq 0xf6c4 |
0x0000f6b4 ldr r1, [pc, 0x988] | r1 = *(0x10040);
0x0000f6b8 mov r0, r4 | r0 = r4;
0x0000f6bc add r1, pc, r1 | r1 = pc + r1;
0x0000f6c0 bl 0x104cc | Curl_infof ();
| }
| label_9:
0x0000f6c4 add fp, r4, 0x4000 |
0x0000f6c8 ldr r2, [fp, 0x9d8] | r2 = *(arg_9d8h);
0x0000f6cc ldr r1, [r5, 0x180] | r1 = *((r5 + 0x180));
0x0000f6d0 clz r3, r2 | r3 &= r2;
0x0000f6d4 lsr r3, r3, 5 | r3 >>= 5;
0x0000f6d8 cmp r1, r2 |
| if (r1 >= r2) {
0x0000f6dc orrlt r3, r3, 1 | r3 |= 1;
| }
0x0000f6e0 cmp r3, 0 |
0x0000f6e4 add r3, r4, 0x4a00 | r3 = r4 + 0x4a00;
0x0000f6e8 ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x0000f6ec ldr r8, [r4, 0xe8] | r8 = *((r4 + 0xe8));
| if (r3 == 0) {
0x0000f6f0 strne r1, [fp, 0x9d8] | *(arg_9d8h) = r1;
| }
0x0000f6f4 orrs r3, r2, r3 | r3 = r2 | r3;
0x0000f6f8 str r8, [fp, 0xa60] | *(arg_a60h) = r8;
0x0000f6fc str r1, [fp, 0xa68] | *(arg_a68h) = r1;
| if (r3 != r2) {
0x0000f700 beq 0xf71c |
0x0000f704 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x0000f708 cmp r3, 1 |
0x0000f70c cmpeq r8, 0x1a0 | __asm ("cmpeq r8, aav.0x000000ff");
| if (r3 != 1) {
0x0000f710 moveq r3, 1 | r3 = 1;
| }
| if (r3 != 1) {
0x0000f714 strbeq r3, [r4, 0x115] | *((r4 + 0x115)) = r3;
| }
| if (r3 == 1) {
0x0000f718 beq 0xf8c0 | goto label_41;
| }
| }
0x0000f71c ldrb r3, [r4, 0x4c8] | r3 = *((r4 + 0x4c8));
0x0000f720 cmp r8, 0x190 |
| if (r8 >= 0x190) {
0x0000f724 movlt r3, 0 | r3 = 0;
| }
| if (r8 < 0x190) {
0x0000f728 andge r3, r3, 1 | r3 &= 1;
| }
0x0000f72c cmp r3, 0 |
| if (r3 == 0) {
0x0000f730 beq 0xf8c0 | goto label_41;
| }
0x0000f734 ldr r3, [pc, 0x8dc] | r3 = *(0x10014);
0x0000f738 cmp r8, r3 |
| if (r8 != r3) {
0x0000f73c ldrbeq r3, [r5, 0x258] | r3 = *((r5 + 0x258));
| }
| if (r8 != r3) {
0x0000f740 beq 0xf754 |
0x0000f744 ldr r3, [pc, 0x8d0] | r3 = *(0x10018);
0x0000f748 cmp r8, r3 |
| if (r8 != r3) {
0x0000f74c bne 0xf75c | goto label_42;
| }
0x0000f750 ldrb r3, [r5, 0x259] | r3 = *((r5 + 0x259));
| }
0x0000f754 cmp r3, 0 |
| if (r3 != 0) {
0x0000f758 bne 0xf8c0 | goto label_41;
| }
| label_42:
0x0000f75c ldr r5, [r4, 0xd8] | r5 = *((r4 + 0xd8));
0x0000f760 ldr r1, [pc, 0x8e0] | r1 = *(0x10044);
0x0000f764 mov r2, 4 | r2 = 4;
0x0000f768 add r1, pc, r1 | r1 = pc + r1;
0x0000f76c mov r0, r5 | r0 = r5;
0x0000f770 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x0000f774 cmp r0, 0 |
| if (r0 == 0) {
0x0000f778 bne 0xf7d0 |
0x0000f77c mov r1, 0x20 | r1 = 0x20;
0x0000f780 mov r0, r5 | r0 = r5;
0x0000f784 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000f788 cmp r0, 0 |
| if (r0 == 0) {
0x0000f78c beq 0xf7d0 | goto label_43;
| }
0x0000f790 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0000f794 cmp r3, 0 |
| if (r3 == 0) {
0x0000f798 beq 0xf7d0 | goto label_43;
| }
0x0000f79c add r5, r0, 1 | r5 = r0 + 1;
0x0000f7a0 mov r1, 0xd | r1 = 0xd;
0x0000f7a4 mov r0, r5 | r0 = r5;
0x0000f7a8 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000f7ac subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0000f7b0 movne r7, 0xd | r7 = 0xd;
| }
| if (r6 != r0) {
0x0000f7b4 bne 0xf898 | goto label_44;
| }
0x0000f7b8 mov r1, 0xa | r1 = 0xa;
0x0000f7bc mov r0, r5 | r0 = r5;
0x0000f7c0 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000f7c4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0000f7c8 movne r7, 0xa | r7 = 0xa;
| }
| if (r6 != r0) {
0x0000f7cc bne 0xf898 | goto label_44;
| }
| }
| label_43:
0x0000f7d0 ldr r1, [pc, 0x874] | r1 = *(0x10048);
0x0000f7d4 mov r2, r8 | r2 = r8;
0x0000f7d8 add r1, pc, r1 | r1 = pc + r1;
0x0000f7dc b 0xf2ec | goto label_8;
| label_39:
0x0000f7e0 cmp r0, 4 |
0x0000f7e4 beq 0xf674 |
| } while (r0 == 4);
0x0000f7e8 cmp r0, 0 |
| if (r0 != 0) {
0x0000f7ec bne 0x1011c | goto label_40;
| }
0x0000f7f0 ldr r1, [pc, 0x858] | r1 = *(0x1004c);
0x0000f7f4 mov r2, r8 | r2 = r8;
0x0000f7f8 add r1, pc, r1 | r1 = pc + r1;
0x0000f7fc ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f800 bl 0x5658 | sscanf (r0, r1, r2);
0x0000f804 mov r8, 0xa | r8 = 0xa;
0x0000f808 str r8, [r5, 0x180] | *((r5 + 0x180)) = r8;
0x0000f80c cmp r0, 0 |
| if (r0 != 0) {
0x0000f810 bne 0xf6c4 | goto label_9;
| }
0x0000f814 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000f818 ldr r0, [r4, 0x4a0] | r0 = *((r4 + 0x4a0));
0x0000f81c bl 0xbdd4 | r0 = checkhttpprefix_isra_2 ();
0x0000f820 cmp r0, 0 |
| if (r0 == 0) {
0x0000f824 beq 0xfa14 | goto label_45;
| }
0x0000f828 mov r3, 0xc8 | r3 = 0xc8;
0x0000f82c str r3, [r4, 0xe8] | *((r4 + 0xe8)) = r3;
0x0000f830 str r8, [r5, 0x180] | *((r5 + 0x180)) = r8;
0x0000f834 b 0xf6c4 | goto label_9;
| label_38:
0x0000f838 tst r3, 0x40000 |
| if ((r3 & 0x40000) == 0) {
0x0000f83c beq 0xfa14 | goto label_45;
| }
0x0000f840 ldr r1, [pc, 0x80c] | r1 = *(0x10050);
0x0000f844 add r3, r4, 0xe8 | r3 = r4 + 0xe8;
0x0000f848 str r3, [sp, 4] | var_4h = r3;
0x0000f84c add r3, sp, 0x34 | r3 += var_34h;
0x0000f850 str r3, [sp] | *(sp) = r3;
0x0000f854 add r2, sp, 0x38 | r2 += var_38h;
0x0000f858 add r3, r5, 0x184 | r3 = r5 + 0x184;
0x0000f85c add r1, pc, r1 | r1 = pc + r1;
0x0000f860 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000f864 cmp r0, 4 |
| if (r0 != 4) {
0x0000f868 bne 0xfa14 | goto label_45;
| }
0x0000f86c ldrb r3, [sp, 0x34] | r3 = var_34h;
0x0000f870 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x0000f874 bne 0xfa14 | goto label_45;
| }
0x0000f878 ldr r2, [r5, 0x184] | r2 = *((r5 + 0x184));
0x0000f87c ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000f880 mov r1, 0xa | r1 = 0xa;
0x0000f884 mla r3, r1, r0, r2 | __asm ("mla r3, r1, r0, r2");
0x0000f888 str r3, [r5, 0x184] | *((r5 + 0x184)) = r3;
0x0000f88c mov r3, 0xb | r3 = 0xb;
0x0000f890 str r3, [r5, 0x180] | *((r5 + 0x180)) = r3;
0x0000f894 b 0xf6c4 | goto label_9;
| label_44:
0x0000f898 ldr r1, [pc, 0x7b8] | r1 = *(0x10054);
0x0000f89c mov r3, 0 | r3 = 0;
0x0000f8a0 strb r3, [r6] | *(r6) = r3;
0x0000f8a4 mov r2, r5 | r2 = r5;
0x0000f8a8 add r1, pc, r1 | r1 = pc + r1;
0x0000f8ac mov r0, r4 | r0 = r4;
0x0000f8b0 bl 0x10544 | Curl_failf ();
0x0000f8b4 strb r7, [r6] | *(r6) = r7;
| label_30:
0x0000f8b8 mov r6, 0x16 | r6 = 0x16;
0x0000f8bc b 0xf13c | goto label_2;
| label_41:
0x0000f8c0 cmp r1, 0xa |
| if (r1 != 0xa) {
0x0000f8c4 bne 0xf9ac | goto label_46;
| }
0x0000f8c8 ldr r1, [pc, 0x78c] | r1 = *(0x10058);
0x0000f8cc mov r0, r4 | r0 = r4;
0x0000f8d0 add r1, pc, r1 | r1 = pc + r1;
0x0000f8d4 bl 0x104cc | Curl_infof ();
0x0000f8d8 mov r1, 1 | r1 = 1;
0x0000f8dc mov r0, r5 | r0 = r5;
0x0000f8e0 bl 0x1cb34 | Curl_conncontrol ();
| do {
| label_10:
0x0000f8e4 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000f8e8 cmp r3, 0xcc |
| if (r3 != 0xcc) {
0x0000f8ec beq 0xf8f8 |
0x0000f8f0 cmp r3, 0x130 |
| if (r3 != 0x130) {
0x0000f8f4 bne 0xf920 | goto label_37;
| }
| }
0x0000f8f8 ldr r3, [r4, 0x3c8] | r3 = *((r4 + 0x3c8));
0x0000f8fc mov r2, 0 | r2 = 0;
0x0000f900 cmp r3, 0 |
| if (r3 == 0) {
0x0000f904 movne r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x0000f908 strbne r3, [fp, 0xa70] | *(arg_a70h) = r3;
| }
0x0000f90c mov r3, 0 | r3 = 0;
0x0000f910 strd r2, r3, [r4, 0x70] | __asm ("strd r2, r3, [r4, 0x70]");
0x0000f914 strd r2, r3, [r4, 0x80] | __asm ("strd r2, r3, [r4, 0x80]");
0x0000f918 mov r3, 1 | r3 = 1;
0x0000f91c strb r3, [r4, 0x116] | *((r4 + 0x116)) = r3;
| label_37:
0x0000f920 ldrb r3, [r4, 0x116] | r3 = *((r4 + 0x116));
0x0000f924 cmp r3, 0 |
| if (r3 != 0) {
0x0000f928 bne 0xfafc | goto label_47;
| }
0x0000f92c ldrb r8, [r4, 0x4ef] | r8 = *((r4 + 0x4ef));
0x0000f930 cmp r8, 0 |
| if (r8 != 0) {
0x0000f934 bne 0xfafc | goto label_47;
| }
0x0000f938 ldr r0, [pc, 0x720] | r0 = *(0x1005c);
0x0000f93c mov r2, 0xf | r2 = 0xf;
0x0000f940 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000f944 add r0, pc, r0 | r0 = pc + r0;
0x0000f948 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000f94c cmp r0, 0 |
| if (r0 == 0) {
0x0000f950 beq 0xfafc | goto label_47;
| }
0x0000f954 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f958 add r3, sp, 0x38 | r3 += var_38h;
0x0000f95c mov r2, 0xa | r2 = 0xa;
0x0000f960 mov r1, r8 | r1 = r8;
0x0000f964 add r0, r0, 0xf | r0 += 0xf;
0x0000f968 bl 0x2188c | r0 = curlx_strtoofft ();
0x0000f96c cmp r0, 0 |
| if (r0 != 0) {
0x0000f970 bne 0xfaac | goto label_48;
| }
0x0000f974 add r3, r4, 0x4b0 | r3 = r4 + 0x4b0;
0x0000f978 ldrd r0, r1, [r3, -8] | __asm ("ldrd r0, r1, [r3, -8]");
0x0000f97c ldrd r2, r3, [sp, 0x38] | __asm ("ldrd r2, r3, [var_38h]");
0x0000f980 orrs ip, r0, r1 |
| if (ip == r0) {
0x0000f984 beq 0xfa20 | goto label_49;
| }
0x0000f988 cmp r0, r2 |
0x0000f98c sbcs r1, r1, r3 | __asm ("sbcs r1, r1, r3");
| if (r0 >= r2) {
0x0000f990 bge 0xfa20 | goto label_49;
| }
| label_13:
0x0000f994 ldr r1, [pc, 0x6c8] | r1 = *(0x10060);
0x0000f998 mov r0, r4 | r0 = r4;
0x0000f99c add r1, pc, r1 | r1 = pc + r1;
0x0000f9a0 bl 0x10544 | Curl_failf ();
0x0000f9a4 mov r6, 0x3f | r6 = 0x3f;
0x0000f9a8 b 0xf13c | goto label_2;
| label_46:
0x0000f9ac cmp r1, 0x14 |
| if (r1 != 0x14) {
0x0000f9b0 beq 0xf9c4 |
0x0000f9b4 ldr r3, [r4, 0xf8] | r3 = *((r4 + 0xf8));
0x0000f9b8 cmp r3, 1 |
0x0000f9bc cmpeq r8, 0x65 | __asm ("cmpeq r8, 0x65");
| if (r3 != 1) {
0x0000f9c0 bne 0xf9d4 | goto label_50;
| }
| }
0x0000f9c4 ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000f9c8 mov r2, 2 | r2 = 2;
| label_11:
0x0000f9cc str r2, [r3] | *(r3) = r2;
0x0000f9d0 b 0xf8e4 |
| } while (1);
| label_50:
0x0000f9d4 cmp r1, 0xa |
| if (r1 <= 0xa) {
0x0000f9d8 ble 0xf8e4 | goto label_10;
| }
0x0000f9dc ldrb r3, [r5, 0x251] | r3 = *((r5 + 0x251));
0x0000f9e0 cmp r3, 0 |
| if (r3 != 0) {
0x0000f9e4 bne 0xf8e4 | goto label_10;
| }
0x0000f9e8 ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000f9ec cmp r3, 0 |
| if (r3 == 0) {
0x0000f9f0 beq 0xf8e4 | goto label_10;
| }
0x0000f9f4 mov r1, r5 | r1 = r5;
0x0000f9f8 mov r0, r4 | r0 = r4;
0x0000f9fc bl 0x29094 | r0 = Curl_pipeline_site_blacklisted ();
0x0000fa00 cmp r0, 0 |
| if (r0 != 0) {
0x0000fa04 bne 0xf8e4 | goto label_10;
| }
0x0000fa08 ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000fa0c mov r2, 1 | r2 = 1;
0x0000fa10 b 0xf9cc | goto label_11;
| label_45:
0x0000fa14 mov r3, 0 | r3 = 0;
0x0000fa18 strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000fa1c b 0xf13c | goto label_2;
| label_49:
0x0000fa20 strd r2, r3, [r4, 0x70] | __asm ("strd r2, r3, [r4, 0x70]");
0x0000fa24 strd r2, r3, [r4, 0x80] | __asm ("strd r2, r3, [r4, 0x80]");
0x0000fa28 mov r0, r4 | r0 = r4;
0x0000fa2c bl 0x8294 | Curl_pgrsSetDownloadSize ();
| label_14:
0x0000fa30 ldrb r3, [r4, 0x4cd] | r3 = *((r4 + 0x4cd));
0x0000fa34 cmp r3, 0 |
0x0000fa38 ldrb r3, [r4, 0x4d8] | r3 = *((r4 + 0x4d8));
| if (r3 == 0) {
0x0000fa3c movne r8, 3 | r8 = 3;
| }
| if (r3 != 0) {
0x0000fa40 moveq r8, 2 | r8 = 2;
| }
0x0000fa44 cmp r3, 0 |
| if (r3 != 0) {
0x0000fa48 beq 0xfa60 |
0x0000fa4c ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000fa50 ldr r2, [r4, 0xd8] | r2 = *((r4 + 0xd8));
0x0000fa54 mov r1, 1 | r1 = 1;
0x0000fa58 mov r0, r4 | r0 = r4;
0x0000fa5c bl 0x10424 | Curl_debug ();
| }
0x0000fa60 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000fa64 ldr r2, [r4, 0xd8] | r2 = *((r4 + 0xd8));
0x0000fa68 mov r1, r8 | r1 = r8;
0x0000fa6c mov r0, r5 | r0 = r5;
0x0000fa70 bl 0x107cc | r0 = Curl_client_write ();
0x0000fa74 cmp r0, 0 |
| if (r0 != 0) {
0x0000fa78 bne 0xfd50 | goto label_31;
| }
0x0000fa7c add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x0000fa80 ldr r2, [r3, 0xa74] | r2 = *((r3 + 0xa74));
0x0000fa84 ldr r1, [r4, 0xc8] | r1 = *((r4 + 0xc8));
0x0000fa88 add r2, r2, r1 | r2 += r1;
0x0000fa8c str r2, [r3, 0xa74] | *((r3 + 0xa74)) = r2;
0x0000fa90 ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x0000fa94 str r0, [r4, 0xc8] | *((r4 + 0xc8)) = r0;
0x0000fa98 add r3, r3, r1 | r3 += r1;
0x0000fa9c str r3, [r4, 0xa0] | *((r4 + 0xa0)) = r3;
0x0000faa0 ldr r3, [r4, 0x7c4] | r3 = *((r4 + 0x7c4));
0x0000faa4 str r3, [r4, 0xc4] | *((r4 + 0xc4)) = r3;
0x0000faa8 b 0xf5dc | goto label_12;
| label_48:
0x0000faac cmp r0, 1 |
| if (r0 != 1) {
0x0000fab0 bne 0xfae4 | goto label_51;
| }
0x0000fab4 add r3, r4, 0x4b0 | r3 = r4 + 0x4b0;
0x0000fab8 ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x0000fabc orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x0000fac0 bne 0xf994 | goto label_13;
| }
0x0000fac4 mov r1, 2 | r1 = 2;
0x0000fac8 mov r0, r5 | r0 = r5;
0x0000facc bl 0x1cb34 | Curl_conncontrol ();
0x0000fad0 ldr r1, [pc, 0x590] | r1 = *(0x10064);
0x0000fad4 add r1, pc, r1 | r1 = pc + r1;
| label_16:
0x0000fad8 mov r0, r4 | r0 = r4;
0x0000fadc bl 0x104cc | Curl_infof ();
0x0000fae0 b 0xfa30 | goto label_14;
| label_51:
0x0000fae4 ldr r1, [pc, 0x580] | r1 = *(0x10068);
0x0000fae8 mov r0, r4 | r0 = r4;
0x0000faec add r1, pc, r1 | r1 = pc + r1;
0x0000faf0 bl 0x10544 | Curl_failf ();
0x0000faf4 mov r6, 8 | r6 = 8;
0x0000faf8 b 0xf13c | goto label_2;
| label_47:
0x0000fafc mov r2, 0xd | r2 = 0xd;
0x0000fb00 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fb04 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0000fb08 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fb0c cmp r0, 0 |
| if (r0 != 0) {
0x0000fb10 beq 0xfb60 |
0x0000fb14 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fb18 bl 0xc1ec | r0 = Curl_copy_header_value ();
0x0000fb1c subs fp, r0, 0 |
| if (fp == r0) {
0x0000fb20 bne 0xfb2c |
| label_19:
0x0000fb24 mov r6, 0x1b | r6 = 0x1b;
0x0000fb28 b 0xf13c | goto label_2;
| }
0x0000fb2c ldr r3, [pc, 0x53c] |
0x0000fb30 ldrb r2, [fp] | r2 = *(fp);
0x0000fb34 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000fb38 cmp r2, 0 |
0x0000fb3c ldr r3, [r3] | r3 = *(0x1006c);
| if (r2 == 0) {
0x0000fb40 bne 0xfb4c |
| label_15:
0x0000fb44 blx r3 | uint32_t (*r3)() ();
0x0000fb48 b 0xfa30 | goto label_14;
| }
0x0000fb4c add r8, r4, 0x4000 | r8 = r4 + 0x4000;
0x0000fb50 ldr r0, [r8, 0xa88] | r0 = *((r8 + 0xa88));
0x0000fb54 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x0000fb58 str fp, [r8, 0xa88] | *((r8 + 0xa88)) = fp;
0x0000fb5c b 0xfa30 | goto label_14;
| }
0x0000fb60 mov r2, 7 | r2 = 7;
0x0000fb64 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fb68 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000fb6c bl 0x5bd4 | fcn_00005bd4 ();
0x0000fb70 ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000fb74 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000fb78 beq 0xfbd8 | goto label_52;
| }
0x0000fb7c cmp r3, 0x13 |
| if (r3 > 0x13) {
0x0000fb80 bgt 0xfa30 | goto label_14;
| }
0x0000fb84 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fb88 bl 0xc1ec | Curl_copy_header_value ();
0x0000fb8c ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000fb90 cmp r3, 0 |
0x0000fb94 mov r8, r0 | r8 = r0;
| if (r3 != 0) {
0x0000fb98 beq 0xfbc4 |
0x0000fb9c ldr r3, [r3] | r3 = *(r3);
0x0000fba0 cmp r3, 1 |
| if (r3 != 1) {
0x0000fba4 bne 0xfbc4 | goto label_53;
| }
0x0000fba8 mov r1, r0 | r1 = r0;
0x0000fbac mov r0, r4 | r0 = r4;
0x0000fbb0 bl 0x29218 | r0 = Curl_pipeline_server_blacklisted ();
0x0000fbb4 cmp r0, 0 |
| if (r0 == 0) {
0x0000fbb8 ldrne r3, [r5, 0x500] | r3 = *((r5 + 0x500));
| }
| if (r0 == 0) {
0x0000fbbc mvnne r2, 0 | r2 = ~0;
| }
| if (r0 != 0) {
0x0000fbc0 strne r2, [r3] | *(r3) = r2;
| goto label_53;
| }
| }
| label_53:
0x0000fbc4 ldr r3, [pc, 0x4a4] |
0x0000fbc8 mov r0, r8 | r0 = r8;
0x0000fbcc ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000fbd0 ldr r3, [r3] | r3 = *(0x1006c);
0x0000fbd4 b 0xfb44 | goto label_15;
| label_52:
0x0000fbd8 cmp r3, 0xa |
| if (r3 == 0xa) {
0x0000fbdc bne 0xfc24 |
0x0000fbe0 ldrb r3, [r5, 0x256] | r3 = *((r5 + 0x256));
0x0000fbe4 cmp r3, 0 |
| if (r3 == 0) {
0x0000fbe8 beq 0xfc24 | goto label_54;
| }
0x0000fbec ldr r2, [pc, 0x480] | r2 = *(0x10070);
0x0000fbf0 ldr r1, [pc, 0x480] | r1 = *(0x10074);
0x0000fbf4 add r2, pc, r2 | r2 = pc + r2;
0x0000fbf8 add r1, pc, r1 | r1 = pc + r1;
0x0000fbfc ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fc00 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fc04 cmp r0, 0 |
| if (r0 == 0) {
0x0000fc08 beq 0xfc24 | goto label_54;
| }
0x0000fc0c mov r1, r8 | r1 = r8;
0x0000fc10 mov r0, r5 | r0 = r5;
0x0000fc14 bl 0x1cb34 | Curl_conncontrol ();
0x0000fc18 ldr r1, [pc, 0x45c] | r1 = "___error:__s";
0x0000fc1c add r1, pc, r1 | r1 = pc + r1;
0x0000fc20 b 0xfad8 | goto label_16;
| }
| label_54:
0x0000fc24 ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000fc28 cmp r3, 0xb |
| if (r3 == 0xb) {
0x0000fc2c bne 0xfc74 |
0x0000fc30 ldrb r3, [r5, 0x256] | r3 = *((r5 + 0x256));
0x0000fc34 cmp r3, 0 |
| if (r3 == 0) {
0x0000fc38 beq 0xfc74 | goto label_55;
| }
0x0000fc3c ldr r2, [pc, 0x43c] | r2 = *(0x1007c);
0x0000fc40 ldr r1, [pc, 0x43c] | r1 = *(0x10080);
0x0000fc44 add r2, pc, r2 | r2 = pc + r2;
0x0000fc48 add r1, pc, r1 | r1 = pc + r1;
0x0000fc4c ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fc50 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fc54 cmp r0, 0 |
| if (r0 == 0) {
0x0000fc58 beq 0xfc74 | goto label_55;
| }
0x0000fc5c mov r1, 1 | r1 = 1;
0x0000fc60 mov r0, r5 | r0 = r5;
0x0000fc64 bl 0x1cb34 | Curl_conncontrol ();
0x0000fc68 ldr r1, [pc, 0x418] | r1 = *(0x10084);
0x0000fc6c add r1, pc, r1 | r1 = pc + r1;
0x0000fc70 b 0xfad8 | goto label_16;
| }
| label_55:
0x0000fc74 ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000fc78 cmp r3, 0xa |
| if (r3 == 0xa) {
0x0000fc7c bne 0xfcb8 |
0x0000fc80 ldr r2, [pc, 0x404] | r2 = *(0x10088);
0x0000fc84 ldr r1, [pc, 0x404] | r1 = *(0x1008c);
0x0000fc88 add r2, pc, r2 | r2 = pc + r2;
0x0000fc8c add r1, pc, r1 | r1 = pc + r1;
0x0000fc90 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fc94 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fc98 cmp r0, 0 |
| if (r0 == 0) {
0x0000fc9c beq 0xfcb8 | goto label_56;
| }
0x0000fca0 mov r1, 0 | r1 = 0;
0x0000fca4 mov r0, r5 | r0 = r5;
0x0000fca8 bl 0x1cb34 | Curl_conncontrol ();
0x0000fcac ldr r1, [pc, 0x3e0] | r1 = *(0x10090);
0x0000fcb0 add r1, pc, r1 | r1 = pc + r1;
0x0000fcb4 b 0xfad8 | goto label_16;
| }
| label_56:
0x0000fcb8 ldr r1, [pc, 0x3d8] | r1 = *(0x10094);
0x0000fcbc ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000fcc0 add r1, pc, r1 | r1 = pc + r1;
0x0000fcc4 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fcc8 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fccc cmp r0, 0 |
| if (r0 != 0) {
0x0000fcd0 beq 0xfce4 |
0x0000fcd4 mov r1, 2 | r1 = 2;
0x0000fcd8 mov r0, r5 | r0 = r5;
0x0000fcdc bl 0x1cb34 | Curl_conncontrol ();
0x0000fce0 b 0xfa30 | goto label_14;
| }
0x0000fce4 ldr r0, [pc, 0x3b0] | r0 = *(0x10098);
0x0000fce8 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fcec mov r2, 0x12 | r2 = 0x12;
0x0000fcf0 add r0, pc, r0 | r0 = pc + r0;
0x0000fcf4 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fcf8 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000fcfc ldrne r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
| }
| if (r8 == r0) {
0x0000fd00 movne r2, 1 | r2 = 1;
| }
| if (r8 == r0) {
0x0000fd04 addne r1, r1, 0x12 | r1 += 0x12;
| }
| if (r8 == r0) {
0x0000fd08 bne 0xfd40 |
0x0000fd0c ldr r0, [pc, 0x38c] | r0 = *(0x1009c);
0x0000fd10 mov r2, 0x11 | r2 = 0x11;
0x0000fd14 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fd18 add r0, pc, r0 | r0 = pc + r0;
0x0000fd1c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fd20 cmp r0, 0 |
| if (r0 == 0) {
0x0000fd24 beq 0xfd58 | goto label_57;
| }
0x0000fd28 ldr r3, [r4, 0x52c] | r3 = *((r4 + 0x52c));
0x0000fd2c cmp r3, 0 |
| if (r3 == 0) {
0x0000fd30 beq 0xfd58 | goto label_57;
| }
0x0000fd34 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fd38 mov r2, r8 | r2 = r8;
0x0000fd3c add r1, r1, 0x11 | r1 += 0x11;
| }
0x0000fd40 mov r0, r5 | r0 = r5;
0x0000fd44 bl 0x20f2c | r0 = Curl_build_unencoding_stack ();
| label_21:
0x0000fd48 cmp r0, 0 |
| if (r0 == 0) {
0x0000fd4c beq 0xfa30 | goto label_14;
| }
| label_31:
0x0000fd50 mov r6, r0 | r6 = r0;
0x0000fd54 b 0xf13c | goto label_2;
| label_57:
0x0000fd58 ldr r0, [pc, 0x344] | r0 = *(0x100a0);
0x0000fd5c mov r2, 0xe | r2 = 0xe;
0x0000fd60 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fd64 add r0, pc, r0 | r0 = pc + r0;
0x0000fd68 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fd6c cmp r0, 0 |
| if (r0 == 0) {
0x0000fd70 beq 0xfe08 | goto label_58;
| }
0x0000fd74 ldr fp, [r4, 0xd8] | fp = *((r4 + 0xd8));
0x0000fd78 add fp, fp, 0xe |
| label_18:
0x0000fd7c mov r8, fp | r8 = fp;
0x0000fd80 ldrb r0, [fp], 1 | r0 = *(fp);
| fp++;
0x0000fd84 cmp r0, 0 |
| if (r0 != 0) {
0x0000fd88 bne 0xfdd8 | goto label_59;
| }
| label_17:
0x0000fd8c ldrb r0, [r8] | r0 = *(r8);
0x0000fd90 bl 0x2f8c0 | r0 = Curl_isdigit ();
0x0000fd94 cmp r0, 0 |
| if (r0 == 0) {
0x0000fd98 beq 0xfdf4 | goto label_60;
| }
0x0000fd9c add r3, r4, 0xe0 | r3 = r4 + 0xe0;
0x0000fda0 mov r2, 0xa | r2 = 0xa;
0x0000fda4 mov r1, 0 | r1 = 0;
0x0000fda8 mov r0, r8 | r0 = r8;
0x0000fdac bl 0x2188c | r0 = curlx_strtoofft ();
0x0000fdb0 cmp r0, 0 |
| if (r0 != 0) {
0x0000fdb4 bne 0xfa30 | goto label_14;
| }
0x0000fdb8 add r3, r4, 0x4a00 | r3 = r4 + 0x4a00;
0x0000fdbc ldrd r0, r1, [r3, -8] | __asm ("ldrd r0, r1, [r3, -8]");
0x0000fdc0 ldrd r2, r3, [r4, 0xe0] | __asm ("ldrd r2, r3, [r4, 0xe0]");
0x0000fdc4 cmp r1, r3 |
0x0000fdc8 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| if (r1 != r3) {
0x0000fdcc moveq r3, 1 | r3 = 1;
| }
| if (r1 != r3) {
0x0000fdd0 strbeq r3, [r4, 0xdc] | *((r4 + 0xdc)) = r3;
| }
0x0000fdd4 b 0xfa30 | goto label_14;
| label_59:
0x0000fdd8 bl 0x2f8c0 | r0 = Curl_isdigit ();
0x0000fddc cmp r0, 0 |
| if (r0 != 0) {
0x0000fde0 bne 0xfd8c | goto label_17;
| }
0x0000fde4 ldrb r3, [fp, -1] | r3 = var_1h;
0x0000fde8 cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x0000fdec bne 0xfd7c | goto label_18;
| }
0x0000fdf0 b 0xfd8c | goto label_17;
| label_60:
0x0000fdf4 add r3, r4, 0x4a00 | r3 = r4 + 0x4a00;
0x0000fdf8 mov r0, 0 | r0 = 0;
0x0000fdfc mov r1, 0 | r1 = 0;
0x0000fe00 strd r0, r1, [r3, -8] | __asm ("strd r0, r1, [r3, -8]");
0x0000fe04 b 0xfa30 | goto label_14;
| label_58:
0x0000fe08 ldr r3, [r4, 0x690] | r3 = *((r4 + 0x690));
0x0000fe0c cmp r3, 0 |
| if (r3 != 0) {
0x0000fe10 beq 0xfe8c |
0x0000fe14 ldr r0, [pc, 0x28c] | r0 = *(0x100a4);
0x0000fe18 mov r2, 0xb | r2 = 0xb;
0x0000fe1c ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fe20 add r0, pc, r0 | r0 = pc + r0;
0x0000fe24 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fe28 cmp r0, 0 |
| if (r0 == 0) {
0x0000fe2c beq 0xfe8c | goto label_61;
| }
0x0000fe30 mov r2, 2 | r2 = 2;
0x0000fe34 mov r1, r2 | r1 = r2;
0x0000fe38 mov r0, r4 | r0 = r4;
0x0000fe3c bl 0x21464 | Curl_share_lock ();
0x0000fe40 ldr r2, [r5, 0x2b4] | r2 = *((r5 + 0x2b4));
0x0000fe44 ldr r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x0000fe48 cmp r2, 0 |
0x0000fe4c add r0, r4, 0x4000 | r0 = r4 + 0x4000;
| if (r2 != 0) {
0x0000fe50 ldreq r2, [r5, 0xa0] | r2 = *((r5 + 0xa0));
| }
0x0000fe54 ldr r0, [r0, 0x9ec] | r0 = *((r0 + 0x9ec));
0x0000fe58 add r3, r3, 0xb | r3 += 0xb;
0x0000fe5c ldr r1, [r4, 0x690] | r1 = *((r4 + 0x690));
0x0000fe60 str r0, [sp, 8] | var_8h = r0;
0x0000fe64 str r2, [sp, 4] | var_4h = r2;
0x0000fe68 str r3, [sp] | *(sp) = r3;
0x0000fe6c mov r2, 1 | r2 = 1;
0x0000fe70 mov r3, 0 | r3 = 0;
0x0000fe74 mov r0, r4 | r0 = r4;
0x0000fe78 bl 0x9f7c | Curl_cookie_add ();
0x0000fe7c mov r1, 2 | r1 = 2;
0x0000fe80 mov r0, r4 | r0 = r4;
0x0000fe84 bl 0x214ac | Curl_share_unlock ();
0x0000fe88 b 0xfa30 | goto label_14;
| }
| label_61:
0x0000fe8c ldr r0, [pc, 0x218] | r0 = *(0x100a8);
0x0000fe90 mov r2, 0xe | r2 = 0xe;
0x0000fe94 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fe98 add r0, pc, r0 | r0 = pc + r0;
0x0000fe9c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fea0 cmp r0, 0 |
| if (r0 != 0) {
0x0000fea4 beq 0xfef4 |
0x0000fea8 ldr r3, [r4, 0x3c8] | r3 = *((r4 + 0x3c8));
0x0000feac cmp r3, 0 |
| if (r3 == 0) {
0x0000feb0 bne 0xfec0 |
0x0000feb4 ldrb r3, [r4, 0x4c1] | r3 = *((r4 + 0x4c1));
0x0000feb8 cmp r3, 0 |
| if (r3 == 0) {
0x0000febc beq 0xfef4 | goto label_62;
| }
| }
0x0000fec0 mov r0, 0 | r0 = 0;
0x0000fec4 bl 0x5544 | time (r0);
0x0000fec8 add r1, sp, 0x40 | r1 += var_40h;
0x0000fecc str r0, [r1, -8]! | *((r1 -= 8)) = r0;
0x0000fed0 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fed4 add r0, r0, 0xe | r0 += 0xe;
0x0000fed8 bl 0x5a60 | fcn_00005a60 ();
0x0000fedc ldrb r3, [r4, 0x4c1] | r3 = *((r4 + 0x4c1));
0x0000fee0 cmp r3, 0 |
| if (r3 == 0) {
0x0000fee4 addne r3, r4, 0x4000 | r3 = r4 + 0x4000;
| }
0x0000fee8 str r0, [r4, 0x100] | *((r4 + 0x100)) = r0;
| if (r3 == 0) {
0x0000feec strne r0, [r3, 0xa6c] | *((r3 + 0xa6c)) = r0;
| }
0x0000fef0 b 0xfa30 | goto label_14;
| }
| label_62:
0x0000fef4 ldr r0, [pc, 0x1b4] | r0 = *(0x100ac);
0x0000fef8 mov r2, 0x11 | r2 = 0x11;
0x0000fefc ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000ff00 add r0, pc, r0 | r0 = pc + r0;
0x0000ff04 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000ff08 cmp r0, 0 |
| if (r0 == 0) {
0x0000ff0c beq 0xff7c | goto label_63;
| }
0x0000ff10 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000ff14 ldr r3, [pc, 0xfc] | r3 = *(0x10014);
0x0000ff18 cmp r2, r3 |
| if (r2 != r3) {
0x0000ff1c bne 0xff7c | goto label_63;
| }
| label_20:
0x0000ff20 ldr fp, [r4, 0xe8] | fp = *((r4 + 0xe8));
0x0000ff24 ldr r1, [pc, 0xf0] | r1 = *(0x10018);
0x0000ff28 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000ff2c sub fp, fp, r1 |
0x0000ff30 bl 0xc1ec | Curl_copy_header_value ();
0x0000ff34 clz fp, fp |
0x0000ff38 lsr fp, fp, 5 |
0x0000ff3c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000ff40 beq 0xfb24 | goto label_19;
| }
0x0000ff44 mov r1, fp | r1 = fp;
0x0000ff48 mov r2, r8 | r2 = r8;
0x0000ff4c mov r0, r5 | r0 = r5;
0x0000ff50 bl 0xc61c | Curl_http_input_auth ();
0x0000ff54 ldr r3, [pc, 0x114] |
0x0000ff58 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000ff5c ldr r3, [r3] | r3 = *(0x1006c);
0x0000ff60 mov fp, r0 |
0x0000ff64 mov r0, r8 | r0 = r8;
0x0000ff68 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000ff6c cmp fp, 0 |
| if (fp == 0) {
0x0000ff70 beq 0xfa30 | goto label_14;
| }
0x0000ff74 mov r6, fp | r6 = fp;
0x0000ff78 b 0xf13c | goto label_2;
| label_63:
0x0000ff7c ldr r0, [pc, 0x130] | r0 = *(0x100b0);
0x0000ff80 mov r2, 0x13 | r2 = 0x13;
0x0000ff84 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000ff88 add r0, pc, r0 | r0 = pc + r0;
0x0000ff8c bl 0x5bd4 | fcn_00005bd4 ();
0x0000ff90 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000ff94 cmp r0, 0 |
| if (r0 == 0) {
0x0000ff98 beq 0xffa8 | goto label_64;
| }
0x0000ff9c ldr r2, [pc, 0x78] | r2 = *(0x10018);
0x0000ffa0 cmp r3, r2 |
| if (r3 == r2) {
0x0000ffa4 beq 0xff20 | goto label_20;
| }
| label_64:
0x0000ffa8 sub r3, r3, 0x12c | r3 -= 0x12c;
0x0000ffac cmp r3, 0x63 |
| if (r3 > 0x63) {
0x0000ffb0 bhi 0x100fc | goto label_65;
| }
0x0000ffb4 ldr r0, [pc, 0xfc] | r0 = *(0x100b4);
0x0000ffb8 mov r2, 9 | r2 = 9;
0x0000ffbc ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000ffc0 add r0, pc, r0 | r0 = pc + r0;
0x0000ffc4 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000ffc8 cmp r0, 0 |
| if (r0 == 0) {
0x0000ffcc beq 0x100fc | goto label_65;
| }
0x0000ffd0 ldr r3, [r4, 0x118] | r3 = *((r4 + 0x118));
0x0000ffd4 cmp r3, 0 |
| if (r3 != 0) {
0x0000ffd8 bne 0x100fc | goto label_65;
| }
0x0000ffdc ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000ffe0 bl 0xc1ec | r0 = Curl_copy_header_value ();
0x0000ffe4 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0000ffe8 beq 0xfb24 | goto label_19;
| }
0x0000ffec ldrb r2, [r3] | r2 = *(r3);
0x0000fff0 cmp r2, 0 |
| if (r2 == 0) {
0x0000fff4 bne 0x100c4 |
0x0000fff8 ldr r3, [pc, 0x70] | r3 = *(0x1006c);
0x0000fffc addseq r3, r7, r3 | __asm ("addseq r3, r7, r3");
| if (r2 != 0) {
0x00010000 andeq r0, r0, r0 | r0 &= r0;
| }
0x00010004 b 0xfb44 | goto label_15;
| }
0x000100c4 str r3, [r4, 0x118] | *((r4 + 0x118)) = r3;
0x000100c8 ldrb r3, [r4, 0x4ca] | r3 = *((r4 + 0x4ca));
0x000100cc cmp r3, 0 |
| if (r3 == 0) {
0x000100d0 beq 0xfa30 | goto label_14;
| }
0x000100d4 ldr r3, [pc, -0x20] |
0x000100d8 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000100dc ldr r3, [r3] | r3 = *(0x100b8);
0x000100e0 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x000100e4 cmp r0, 0 |
0x000100e8 str r0, [r4, 0x11c] | *((r4 + 0x11c)) = r0;
| if (r0 == 0) {
0x000100ec beq 0xfb24 | goto label_19;
| }
0x000100f0 mov r0, r5 | r0 = r5;
0x000100f4 bl 0xbbe8 | http_perhapsrewind ();
0x000100f8 b 0xfd48 | goto label_21;
| label_65:
0x000100fc ldr r3, [r5, 0x284] | r3 = *((r5 + 0x284));
0x00010100 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00010104 tst r3, 0x40000 |
| if ((r3 & 0x40000) == 0) {
0x00010108 beq 0xfa30 | goto label_14;
| }
0x0001010c mov r6, 4 | r6 = 4;
0x00010110 b 0xf13c | goto label_2;
| label_32:
0x00010114 mov r6, r3 | r6 = r3;
0x00010118 b 0xf13c | goto label_2;
| label_40:
0x0001011c ldr r1, [pc, -0x64] | r1 = *(0x000100c0);
0x00010120 mov r0, r4 | r0 = r4;
0x00010124 add r1, pc, r1 | r1 = pc + r1;
0x00010128 b 0x10060 | void (*0x10060)() ();
0x0001012c ldrd r0, r1, [r0, r0]! | __asm ("ldrd r0, r1, [r0, r0]!");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1b220 */
| #include <stdint.h>
|
; (fcn) sym.Curl_httpchunk_init () | void Curl_httpchunk_init (int32_t arg1) {
| r0 = arg1;
0x0001b220 mov r3, 0 | r3 = 0;
0x0001b224 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
0x0001b228 str r3, [r0, 0x38] | *((r0 + 0x38)) = r3;
0x0001b22c str r3, [r0, 0x28] | *((r0 + 0x28)) = r3;
0x0001b230 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1b234 */
| #include <stdint.h>
|
; (fcn) sym.Curl_httpchunk_read () | void Curl_httpchunk_read (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0001b234 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001b238 ldr r8, [r0] | r8 = *(r0);
0x0001b23c mov sl, r3 | sl = r3;
0x0001b240 mov r3, 0 | r3 = 0;
0x0001b244 str r3, [sl] | *(sl) = r3;
0x0001b248 ldrb r3, [r8, 0x4f8] | r3 = *((r8 + 0x4f8));
0x0001b24c ldr fp, [pc, 0x3c4] | fp = *(0x1b614);
0x0001b250 cmp r3, 0 |
0x0001b254 add fp, pc, fp |
0x0001b258 mov r4, r0 | r4 = r0;
0x0001b25c mov r5, r1 | r5 = r1;
0x0001b260 mov r6, r2 | r6 = r2;
0x0001b264 asr r7, r2, 0x1f | r7 = r2 >> 0x1f;
| if (r3 == 0) {
0x0001b268 beq 0x1b304 | goto label_1;
| }
0x0001b26c ldrb r3, [r8, 0x115] | r3 = *((r8 + 0x115));
0x0001b270 cmp r3, 0 |
| if (r3 != 0) {
0x0001b274 bne 0x1b304 | goto label_1;
| }
0x0001b278 mov r3, r2 | r3 = r2;
0x0001b27c mov r2, r1 | r2 = r1;
0x0001b280 mov r1, 1 | r1 = 1;
0x0001b284 bl 0x107cc | r0 = Curl_client_write ();
0x0001b288 cmp r0, 0 |
| if (r0 == 0) {
0x0001b28c beq 0x1b304 | goto label_1;
| }
| label_4:
0x0001b290 mov r0, 4 | r0 = 4;
| label_0:
0x0001b294 add sp, sp, 0xc |
0x0001b298 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x0001b29c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001b2a0 cmp r3, 7 |
| if (r3 > 7) {
| /* switch table (8 cases) at 0x1b2ac */
0x0001b2a4 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0001b2a8 b 0x1b304 | goto label_1;
0x0001b2ac b 0x1b2cc | goto label_10;
0x0001b2b0 b 0x1b354 | goto label_11;
0x0001b2b4 b 0x1b398 | goto label_12;
0x0001b2b8 b 0x1b450 | goto label_13;
0x0001b2bc b 0x1b5e4 | goto label_14;
0x0001b2c0 b 0x1b478 | goto label_15;
0x0001b2c4 b 0x1b5a0 | goto label_16;
0x0001b2c8 b 0x1b5b4 | goto label_17;
| label_10:
0x0001b2cc ldrb r0, [r5] | r0 = *(r5);
0x0001b2d0 bl 0x2f910 | Curl_isxdigit ();
0x0001b2d4 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001b2d8 cmp r0, 0 |
| if (r0 == 0) {
0x0001b2dc beq 0x1b314 | goto label_18;
| }
0x0001b2e0 cmp r3, 0xf |
| if (r3 > 0xf) {
0x0001b2e4 bgt 0x1b608 | goto label_19;
| }
0x0001b2e8 ldrb r1, [r5], 1 | r1 = *(r5);
| r5++;
0x0001b2ec subs r6, r6, 1 | r6--;
0x0001b2f0 add r2, r4, r3 | r2 = r4 + r3;
0x0001b2f4 sbc r7, r7, 0 | __asm ("sbc r7, r7, 0");
0x0001b2f8 add r3, r3, 1 | r3++;
0x0001b2fc strb r1, [r2, 0x10] | *((r2 + 0x10)) = r1;
0x0001b300 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| label_1:
0x0001b304 orrs r3, r6, r7 | r3 = r6 | r7;
0x0001b308 bne 0x1b29c |
| } while (r3 != r6);
0x0001b30c mov r0, 0 | r0 = 0;
0x0001b310 b 0x1b294 | goto label_0;
| label_18:
0x0001b314 cmp r3, 0 |
| if (r3 != 0) {
0x0001b318 beq 0x1b34c |
0x0001b31c add r3, r4, r3 | r3 = r4 + r3;
0x0001b320 mov r2, 0x10 | r2 = 0x10;
0x0001b324 strb r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x0001b328 add r1, sp, 4 | r1 += var_4h;
0x0001b32c add r3, r4, 0x30 | r3 = r4 + 0x30;
0x0001b330 add r0, r4, r2 | r0 = r4 + r2;
0x0001b334 bl 0x2188c | r0 = curlx_strtoofft ();
0x0001b338 cmp r0, 0 |
| if (r0 != 0) {
0x0001b33c bne 0x1b34c | goto label_20;
| }
0x0001b340 mov r3, 1 | r3 = 1;
| label_2:
0x0001b344 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001b348 b 0x1b304 | goto label_1;
| }
| label_20:
0x0001b34c mov r0, 2 | r0 = 2;
0x0001b350 b 0x1b294 | goto label_0;
| label_11:
0x0001b354 ldrb r3, [r5] | r3 = *(r5);
0x0001b358 cmp r3, 0xa |
| if (r3 != 0xa) {
0x0001b35c bne 0x1b37c | goto label_7;
| }
0x0001b360 ldrd r2, r3, [r4, 0x30] | __asm ("ldrd r2, r3, [r4, 0x30]");
0x0001b364 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x0001b368 bne 0x1b38c | goto label_21;
| }
0x0001b36c mov r3, 5 | r3 = 5;
0x0001b370 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001b374 mov r3, 0 | r3 = 0;
0x0001b378 str r3, [r4, 0x448] | *((r4 + 0x448)) = r3;
| do {
| label_7:
0x0001b37c subs r6, r6, 1 | r6--;
0x0001b380 add r5, r5, 1 | r5++;
0x0001b384 sbc r7, r7, 0 | __asm ("sbc r7, r7, 0");
0x0001b388 b 0x1b304 | goto label_1;
| label_21:
0x0001b38c mov r3, 2 | r3 = 2;
| label_6:
0x0001b390 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001b394 b 0x1b37c |
| } while (1);
| label_12:
0x0001b398 ldrd r0, r1, [r4, 0x30] | __asm ("ldrd r0, r1, [r4, 0x30]");
0x0001b39c cmp r6, r0 |
0x0001b3a0 sbcs r3, r7, r1 | __asm ("sbcs r3, r7, r1");
| if (r6 >= r0) {
0x0001b3a4 movlt r0, r6 | r0 = r6;
| }
| if (r6 >= r0) {
0x0001b3a8 movlt r1, r7 | r1 = r7;
| }
0x0001b3ac bl 0x25364 | curlx_sotouz ();
0x0001b3b0 ldr r3, [r4] | r3 = *(r4);
0x0001b3b4 ldrb r2, [r3, 0x4f8] | r2 = *((r3 + 0x4f8));
0x0001b3b8 cmp r2, 0 |
0x0001b3bc mov sb, r0 | sb = r0;
| if (r2 == 0) {
0x0001b3c0 beq 0x1b400 | goto label_22;
| }
| label_3:
0x0001b3c4 ldr r3, [sl] | r3 = *(sl);
0x0001b3c8 mov r1, 0 | r1 = 0;
0x0001b3cc add r3, r3, sb | r3 += sb;
0x0001b3d0 str r3, [sl] | *(sl) = r3;
0x0001b3d4 ldrd r2, r3, [r4, 0x30] | __asm ("ldrd r2, r3, [r4, 0x30]");
0x0001b3d8 add r5, r5, sb | r5 += sb;
0x0001b3dc subs r2, r2, sb | r2 -= sb;
0x0001b3e0 sbc r3, r3, r1 | __asm ("sbc r3, r3, r1");
0x0001b3e4 subs r6, r6, sb | r6 -= sb;
0x0001b3e8 strd r2, r3, [r4, 0x30] | __asm ("strd r2, r3, [r4, 0x30]");
0x0001b3ec sbc r7, r7, r1 | __asm ("sbc r7, r7, r1");
0x0001b3f0 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x0001b3f4 bne 0x1b304 | goto label_1;
| }
0x0001b3f8 mov r3, 3 | r3 = 3;
0x0001b3fc b 0x1b344 | goto label_2;
| label_22:
0x0001b400 ldrb r2, [r8, 0x115] | r2 = *((r8 + 0x115));
0x0001b404 cmp r2, 0 |
| if (r2 != 0) {
0x0001b408 bne 0x1b3c4 | goto label_3;
| }
0x0001b40c ldrb r3, [r3, 0x4f9] | r3 = *((r3 + 0x4f9));
0x0001b410 mov r2, r5 | r2 = r5;
0x0001b414 cmp r3, 0 |
0x0001b418 mov r3, r0 | r3 = r0;
| if (r3 != 0) {
0x0001b41c bne 0x1b440 | goto label_23;
| }
0x0001b420 ldr r1, [r8, 0xfc] | r1 = *((r8 + 0xfc));
0x0001b424 cmp r1, 0 |
| if (r1 == 0) {
0x0001b428 beq 0x1b440 | goto label_23;
| }
0x0001b42c mov r0, r4 | r0 = r4;
0x0001b430 bl 0x20a70 | r0 = Curl_unencode_write ();
| label_5:
0x0001b434 cmp r0, 0 |
| if (r0 == 0) {
0x0001b438 beq 0x1b3c4 | goto label_3;
| }
0x0001b43c b 0x1b290 | goto label_4;
| label_23:
0x0001b440 mov r1, 1 | r1 = 1;
0x0001b444 mov r0, r4 | r0 = r4;
0x0001b448 bl 0x107cc | Curl_client_write ();
0x0001b44c b 0x1b434 | goto label_5;
| label_13:
0x0001b450 ldrb r3, [r5] | r3 = *(r5);
0x0001b454 cmp r3, 0xa |
| if (r3 != 0xa) {
0x0001b458 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0xa) {
0x0001b45c streq r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| }
| if (r3 == 0xa) {
0x0001b460 streq r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
| goto label_24;
| }
| if (r3 == 0xa) {
| label_24:
0x0001b464 beq 0x1b390 | goto label_6;
| }
0x0001b468 cmp r3, 0xd |
| if (r3 == 0xd) {
0x0001b46c beq 0x1b37c | goto label_7;
| }
| label_9:
0x0001b470 mov r0, 3 | r0 = 3;
0x0001b474 b 0x1b294 | goto label_0;
| label_15:
0x0001b478 ldrb r2, [r5] | r2 = *(r5);
0x0001b47c ldr r3, [r4, 0x448] | r3 = *((r4 + 0x448));
0x0001b480 cmp r2, 0xa |
0x0001b484 cmpne r2, 0xd | __asm ("cmpne r2, 0xd");
| if (r2 != 0xa) {
0x0001b488 bne 0x1b524 | goto label_25;
| }
0x0001b48c cmp r3, 0 |
| if (r3 == 0) {
0x0001b490 beq 0x1b51c | goto label_26;
| }
0x0001b494 ldr r2, [r4, 0x440] | r2 = *((r4 + 0x440));
0x0001b498 add r1, r3, 1 | r1 = r3 + 1;
0x0001b49c str r1, [r4, 0x448] | *((r4 + 0x448)) = r1;
0x0001b4a0 mov r1, 0xd | r1 = 0xd;
0x0001b4a4 strb r1, [r2, r3] | *((r2 + r3)) = r1;
0x0001b4a8 ldr r3, [r4, 0x448] | r3 = *((r4 + 0x448));
0x0001b4ac ldr r2, [r4, 0x440] | r2 = *((r4 + 0x440));
0x0001b4b0 add r1, r3, 1 | r1 = r3 + 1;
0x0001b4b4 str r1, [r4, 0x448] | *((r4 + 0x448)) = r1;
0x0001b4b8 mov r1, 0xa | r1 = 0xa;
0x0001b4bc strb r1, [r2, r3] | *((r2 + r3)) = r1;
0x0001b4c0 ldr r3, [r4, 0x448] | r3 = *((r4 + 0x448));
0x0001b4c4 ldr r2, [r4, 0x440] | r2 = *((r4 + 0x440));
0x0001b4c8 mov r1, 0 | r1 = 0;
0x0001b4cc strb r1, [r2, r3] | *((r2 + r3)) = r1;
0x0001b4d0 ldrb r3, [r8, 0x4f8] | r3 = *((r8 + 0x4f8));
0x0001b4d4 cmp r3, r1 |
| if (r3 == r1) {
0x0001b4d8 beq 0x1b4fc | goto label_27;
| }
| label_8:
0x0001b4dc mov r3, 0 | r3 = 0;
0x0001b4e0 str r3, [r4, 0x448] | *((r4 + 0x448)) = r3;
0x0001b4e4 mov r3, 6 | r3 = 6;
0x0001b4e8 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001b4ec ldrb r3, [r5] | r3 = *(r5);
0x0001b4f0 cmp r3, 0xa |
| if (r3 != 0xa) {
0x0001b4f4 bne 0x1b37c | goto label_7;
| }
0x0001b4f8 b 0x1b304 | goto label_1;
| label_27:
0x0001b4fc ldr r3, [r4, 0x448] | r3 = *((r4 + 0x448));
0x0001b500 ldr r2, [r4, 0x440] | r2 = *((r4 + 0x440));
0x0001b504 mov r1, 2 | r1 = 2;
0x0001b508 mov r0, r4 | r0 = r4;
0x0001b50c bl 0x107cc | r0 = Curl_client_write ();
0x0001b510 cmp r0, 0 |
| if (r0 == 0) {
0x0001b514 beq 0x1b4dc | goto label_8;
| }
0x0001b518 b 0x1b290 | goto label_4;
| label_26:
0x0001b51c mov r3, 7 | r3 = 7;
0x0001b520 b 0x1b344 | goto label_2;
| label_25:
0x0001b524 ldr r1, [r4, 0x444] | r1 = *((r4 + 0x444));
0x0001b528 cmp r1, r3 |
| if (r1 > r3) {
0x0001b52c bgt 0x1b564 | goto label_28;
| }
0x0001b530 cmp r1, 0 |
| if (r1 == 0) {
0x0001b534 beq 0x1b580 | goto label_29;
| }
0x0001b538 ldr r3, [pc, 0xdc] |
0x0001b53c lsl r1, r1, 1 | r1 <<= 1;
0x0001b540 str r1, [r4, 0x444] | *((r4 + 0x444)) = r1;
0x0001b544 ldr r3, [fp, r3] | r3 = *((fp + r3));
0x0001b548 add r1, r1, 3 | r1 += 3;
0x0001b54c ldr r3, [r3] | r3 = $d;
0x0001b550 ldr r0, [r4, 0x440] | r0 = *((r4 + 0x440));
0x0001b554 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| do {
0x0001b558 cmp r0, 0 |
| if (r0 == 0) {
0x0001b55c beq 0x1b610 | goto label_30;
| }
0x0001b560 str r0, [r4, 0x440] | *((r4 + 0x440)) = r0;
| label_28:
0x0001b564 ldr r3, [r4, 0x448] | r3 = *((r4 + 0x448));
0x0001b568 ldr r2, [r4, 0x440] | r2 = *((r4 + 0x440));
0x0001b56c add r1, r3, 1 | r1 = r3 + 1;
0x0001b570 str r1, [r4, 0x448] | *((r4 + 0x448)) = r1;
0x0001b574 ldrb r1, [r5] | r1 = *(r5);
0x0001b578 strb r1, [r2, r3] | *((r2 + r3)) = r1;
0x0001b57c b 0x1b37c | goto label_7;
| label_29:
0x0001b580 mov r3, 0x80 | r3 = 0x80;
0x0001b584 str r3, [r4, 0x444] | *((r4 + 0x444)) = r3;
0x0001b588 ldr r3, [pc, 0x90] |
0x0001b58c mov r0, 0x83 | r0 = 0x83;
0x0001b590 ldr r3, [fp, r3] | r3 = *((fp + r3));
0x0001b594 ldr r3, [r3] | r3 = *(0x1b61c);
0x0001b598 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001b59c b 0x1b558 |
| } while (1);
| label_16:
0x0001b5a0 ldrb r3, [r5] | r3 = *(r5);
0x0001b5a4 cmp r3, 0xa |
| if (r3 != 0xa) {
0x0001b5a8 bne 0x1b470 | goto label_9;
| }
0x0001b5ac mov r3, 7 | r3 = 7;
0x0001b5b0 b 0x1b390 | goto label_6;
| label_17:
0x0001b5b4 ldrb r3, [r5] | r3 = *(r5);
0x0001b5b8 cmp r3, 0xd |
0x0001b5bc cmpne r3, 0xa | __asm ("cmpne r3, 0xa");
| if (r3 != 0xd) {
0x0001b5c0 movne r3, 5 | r3 = 5;
| goto label_31;
| }
| if (r3 != 0xd) {
| label_31:
0x0001b5c4 bne 0x1b344 | goto label_2;
| }
0x0001b5c8 cmp r3, 0xd |
| if (r3 == 0xd) {
0x0001b5cc bne 0x1b5dc |
0x0001b5d0 subs r6, r6, 1 | r6--;
0x0001b5d4 add r5, r5, 1 | r5++;
0x0001b5d8 sbc r7, r7, 0 | __asm ("sbc r7, r7, 0");
| }
0x0001b5dc mov r3, 4 | r3 = 4;
0x0001b5e0 b 0x1b344 | goto label_2;
| label_14:
0x0001b5e4 ldrb r3, [r5] | r3 = *(r5);
0x0001b5e8 cmp r3, 0xa |
| if (r3 != 0xa) {
0x0001b5ec bne 0x1b470 | goto label_9;
| }
0x0001b5f0 subs r0, r6, 1 | r0 = r6 - 1;
0x0001b5f4 sbc r1, r7, 0 | __asm ("sbc r1, r7, 0");
0x0001b5f8 bl 0x25364 | curlx_sotouz ();
0x0001b5fc str r0, [r4, 0x38] | *((r4 + 0x38)) = r0;
0x0001b600 mvn r0, 0 | r0 = ~0;
0x0001b604 b 0x1b294 | goto label_0;
| label_19:
0x0001b608 mov r0, 1 | r0 = 1;
0x0001b60c b 0x1b294 | goto label_0;
| label_30:
0x0001b610 mov r0, 6 | r0 = 6;
0x0001b614 b 0x1b294 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x26db8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_ntlm_cleanup () | void Curl_http_ntlm_cleanup (int32_t arg1) {
| r0 = arg1;
0x00026db8 push {r4, lr} |
0x00026dbc mov r4, r0 | r4 = r0;
0x00026dc0 add r0, r0, 0x2f8 | r0 += 0x2f8;
0x00026dc4 bl 0x31504 | Curl_auth_ntlm_cleanup ();
0x00026dc8 add r0, r4, 0x310 | r0 = r4 + 0x310;
0x00026dcc pop {r4, lr} |
0x00026dd0 b 0x31504 | return void (*0x31504)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xc61c */
| #include <stdint.h>
|
; (fcn) sym.Curl_http_input_auth () | void Curl_http_input_auth (int32_t arg_8a0h, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x0000c61c ldr r3, [pc, 0x274] | r3 = *(0xc894);
0x0000c620 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000c624 ldr r7, [r0] | r7 = *(r0);
0x0000c628 sub sp, sp, 0x14 |
0x0000c62c add r3, pc, r3 | r3 = pc + r3;
0x0000c630 str r3, [sp, 4] | var_4h = r3;
0x0000c634 ldr sl, [pc, 0x260] | sl = $d;
0x0000c638 ldr r3, [pc, 0x260] | r3 = *(0xc89c);
0x0000c63c subs sb, r1, 0 | sb = r1 - 0;
0x0000c640 add r6, r7, 0x4a00 | r6 = r7 + 0x4a00;
0x0000c644 add r4, r7, 0x4800 | r4 = r7 + 0x4800;
0x0000c648 add r3, pc, r3 | r3 = pc + r3;
0x0000c64c mov r8, r0 | r8 = r0;
0x0000c650 mov r5, r2 | r5 = r2;
| if (sb == r1) {
0x0000c654 addne r6, r6, 0x7c | r6 += 0x7c;
| }
| if (sb == r1) {
0x0000c658 addne r4, r4, 0x90 | r4 += 0x90;
| }
| if (sb != r1) {
0x0000c65c addeq r6, r6, 0x80 | r6 += 0x80;
| }
| if (sb != r1) {
0x0000c660 addeq r4, r4, 0x80 | r4 += 0x80;
| }
0x0000c664 add sl, pc, sl | sl = pc + sl;
0x0000c668 str r3, [sp, 8] | var_8h = r3;
| label_0:
0x0000c66c ldrb r0, [r5] | r0 = *(r5);
0x0000c670 cmp r0, 0 |
| if (r0 == 0) {
0x0000c674 bne 0xc680 |
0x0000c678 add sp, sp, 0x14 |
0x0000c67c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0000c680 mov r2, 4 | r2 = 4;
0x0000c684 mov r1, r5 | r1 = r5;
0x0000c688 ldr r0, [sp, 4] | r0 = var_4h;
0x0000c68c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c690 cmp r0, 0 |
| if (r0 == 0) {
0x0000c694 beq 0xc750 | goto label_4;
| }
0x0000c698 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c69c tst r3, 0x28 |
0x0000c6a0 beq 0xc708 |
| while (r0 != 0) {
0x0000c6a4 ldr r3, [r6] | r3 = *(r6);
0x0000c6a8 orr r3, r3, 8 | r3 |= 8;
0x0000c6ac str r3, [r6] | *(r6) = r3;
0x0000c6b0 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c6b4 orr r3, r3, 8 | r3 |= 8;
0x0000c6b8 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c6bc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000c6c0 cmp r3, 0x20 |
0x0000c6c4 cmpne r3, 8 | __asm ("cmpne r3, 8");
| if (r3 != 0x20) {
0x0000c6c8 bne 0xc714 | goto label_2;
| }
0x0000c6cc mov r2, r5 | r2 = r5;
0x0000c6d0 mov r1, sb | r1 = sb;
0x0000c6d4 mov r0, r8 | r0 = r8;
0x0000c6d8 bl 0x26dd4 | Curl_input_ntlm ();
0x0000c6dc add fp, r7, 0x4000 |
0x0000c6e0 cmp r0, 0 |
| if (r0 != 0) {
0x0000c6e4 strbeq r0, [fp, 0x8a0] | *(arg_8a0h) = r0;
| }
| if (r0 == 0) {
0x0000c6e8 beq 0xc714 | goto label_2;
| }
0x0000c6ec ldr r1, [pc, 0x1b0] | r1 = *(0xc8a0);
0x0000c6f0 mov r0, r7 | r0 = r7;
0x0000c6f4 add r1, pc, r1 | r1 = pc + r1;
0x0000c6f8 bl 0x104cc | Curl_infof ();
0x0000c6fc mov r3, 1 | r3 = 1;
0x0000c700 strb r3, [fp, 0x8a0] | *(arg_8a0h) = r3;
0x0000c704 b 0xc714 | goto label_2;
0x0000c708 bl 0x31304 | r0 = Curl_auth_is_ntlm_supported ();
0x0000c70c cmp r0, 0 |
0x0000c710 bne 0xc6a4 |
| }
| do {
| label_2:
0x0000c714 mov fp, r5 |
0x0000c718 ldrb r3, [r5], 1 | r3 = *(r5);
| r5++;
0x0000c71c cmp r3, 0 |
0x0000c720 cmpne r3, 0x2c | __asm ("cmpne r3, 0x2c");
0x0000c724 bne 0xc714 |
| } while (r3 != 0);
0x0000c728 cmp r3, 0x2c |
| if (r3 != 0x2c) {
0x0000c72c moveq fp, r5 |
| }
| label_1:
0x0000c730 mov r5, fp | r5 = fp;
0x0000c734 ldrb r0, [fp], 1 | r0 = *(fp);
| fp++;
0x0000c738 cmp r0, 0 |
| if (r0 == 0) {
0x0000c73c beq 0xc66c | goto label_0;
| }
0x0000c740 bl 0x2f898 | r0 = Curl_isspace ();
0x0000c744 cmp r0, 0 |
| if (r0 != 0) {
0x0000c748 bne 0xc730 | goto label_1;
| }
0x0000c74c b 0xc66c | goto label_0;
| label_4:
0x0000c750 mov r2, 6 | r2 = 6;
0x0000c754 mov r1, r5 | r1 = r5;
0x0000c758 ldr r0, [sp, 8] | r0 = var_8h;
0x0000c75c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c760 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0000c764 beq 0xc7e4 | goto label_5;
| }
0x0000c768 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c76c tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0000c770 beq 0xc788 |
0x0000c774 ldr r1, [pc, 0x12c] | r1 = *(0xc8a4);
0x0000c778 mov r0, r7 | r0 = r7;
0x0000c77c add r1, pc, r1 | r1 = pc + r1;
0x0000c780 bl 0x104cc | Curl_infof ();
0x0000c784 b 0xc714 | goto label_2;
| }
0x0000c788 bl 0x305cc | r0 = Curl_auth_is_digest_supported ();
0x0000c78c cmp r0, 0 |
| if (r0 == 0) {
0x0000c790 beq 0xc714 | goto label_2;
| }
0x0000c794 ldr r3, [r6] | r3 = *(r6);
0x0000c798 mov r2, r5 | r2 = r5;
0x0000c79c orr r3, r3, 2 | r3 |= 2;
0x0000c7a0 str r3, [r6] | *(r6) = r3;
0x0000c7a4 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c7a8 mov r1, sb | r1 = sb;
0x0000c7ac orr r3, r3, 2 | r3 |= 2;
0x0000c7b0 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c7b4 mov r0, r8 | r0 = r8;
0x0000c7b8 bl 0x214f0 | r0 = Curl_input_digest ();
0x0000c7bc cmp r0, 0 |
| if (r0 == 0) {
0x0000c7c0 beq 0xc714 | goto label_2;
| }
0x0000c7c4 ldr r1, [pc, 0xe0] | r1 = *(0xc8a8);
0x0000c7c8 add r1, pc, r1 | r1 = pc + r1;
| label_3:
0x0000c7cc mov r0, r7 | r0 = r7;
0x0000c7d0 bl 0x104cc | Curl_infof ();
0x0000c7d4 add r3, r7, 0x4000 | r3 = r7 + 0x4000;
0x0000c7d8 mov r2, 1 | r2 = 1;
0x0000c7dc strb r2, [r3, 0x8a0] | *((r3 + 0x8a0)) = r2;
0x0000c7e0 b 0xc714 | goto label_2;
| label_5:
0x0000c7e4 mov r2, 5 | r2 = 5;
0x0000c7e8 mov r1, r5 | r1 = r5;
0x0000c7ec mov r0, sl | r0 = sl;
0x0000c7f0 str r3, [sp, 0xc] | var_ch = r3;
0x0000c7f4 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c7f8 subs fp, r0, 0 |
| if (fp == r0) {
0x0000c7fc beq 0xc848 | goto label_6;
| }
0x0000c800 ldr r2, [r6] | r2 = *(r6);
0x0000c804 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000c808 orr r2, r2, 1 | r2 |= 1;
0x0000c80c str r2, [r6] | *(r6) = r2;
0x0000c810 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0000c814 ldr fp, [r4, 4] | fp = *((r4 + 4));
0x0000c818 orr r2, r2, 1 | r2 |= 1;
0x0000c81c cmp fp, 1 |
0x0000c820 str r2, [r4, 8] | *((r4 + 8)) = r2;
| if (fp != 1) {
0x0000c824 bne 0xc714 | goto label_2;
| }
0x0000c828 ldr r1, [pc, 0x80] | r1 = *(0xc8ac);
0x0000c82c str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c830 add r1, pc, r1 | r1 = pc + r1;
0x0000c834 mov r0, r7 | r0 = r7;
0x0000c838 bl 0x104cc | Curl_infof ();
0x0000c83c add r3, r7, 0x4000 | r3 = r7 + 0x4000;
0x0000c840 strb fp, [r3, 0x8a0] | *((r3 + 0x8a0)) = fp;
0x0000c844 b 0xc714 | goto label_2;
| label_6:
0x0000c848 ldr r0, [pc, 0x64] | r0 = *(0xc8b0);
0x0000c84c mov r2, 6 | r2 = 6;
0x0000c850 mov r1, r5 | r1 = r5;
0x0000c854 add r0, pc, r0 | r0 = pc + r0;
0x0000c858 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000c85c cmp r0, 0 |
| if (r0 == 0) {
0x0000c860 beq 0xc714 | goto label_2;
| }
0x0000c864 ldr r3, [r6] | r3 = *(r6);
0x0000c868 orr r3, r3, 0x40 | r3 |= 0x40;
0x0000c86c str r3, [r6] | *(r6) = r3;
0x0000c870 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000c874 orr r3, r3, 0x40 | r3 |= 0x40;
0x0000c878 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c87c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000c880 cmp r3, 0x40 |
| if (r3 != 0x40) {
0x0000c884 bne 0xc714 | goto label_2;
| }
0x0000c888 ldr r1, [pc, 0x28] | r1 = *(0xc8b4);
0x0000c88c str fp, [r4, 8] | *((r4 + 8)) = fp;
0x0000c890 add r1, pc, r1 | r1 = pc + r1;
0x0000c894 b 0xc7cc | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xf060 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.Curl_http_readwrite_headers () | void Curl_http_readwrite_headers (int32_t arg_1h, int32_t arg_9d8h, int32_t arg_9dch, int32_t arg_a60h, int32_t arg_a68h, int32_t arg_a70h, int32_t arg_a74h, int32_t arg1, int32_t arg2) {
| int32_t var_1h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_38h_2;
| int32_t var_40h;
| int32_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x0000f060 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f064 ldr r7, [pc, 0xf9c] | r7 = *(0x10004);
0x0000f068 sub sp, sp, 0x44 |
0x0000f06c mov sl, r3 | sl = r3;
0x0000f070 add r3, r0, 0x70 | r3 = r0 + 0x70;
0x0000f074 str r3, [sp, 0x14] | var_14h = r3;
0x0000f078 ldr r3, [r2] | r3 = *(r2);
0x0000f07c mov r4, r0 | r4 = r0;
0x0000f080 str r3, [sp, 0x18] | var_18h = r3;
0x0000f084 ldr r3, [r0, 0xcc] | r3 = *((r0 + 0xcc));
0x0000f088 mov r5, r1 | r5 = r1;
0x0000f08c str r3, [sp, 0x1c] | var_1ch = r3;
0x0000f090 ldr r3, [pc, 0xf74] | r3 = $d;
0x0000f094 mov sb, r2 | sb = r2;
0x0000f098 add r3, pc, r3 | r3 = pc + r3;
0x0000f09c str r3, [sp, 0x20] | var_20h = r3;
0x0000f0a0 ldr r3, [pc, 0xf68] | r3 = *(0x1000c);
0x0000f0a4 add r7, pc, r7 | r7 = pc + r7;
0x0000f0a8 add r3, pc, r3 | r3 = pc + r3;
0x0000f0ac str r3, [sp, 0x24] | var_24h = r3;
0x0000f0b0 ldr r3, [pc, 0xf5c] | r3 = *(0x10010);
0x0000f0b4 add r3, pc, r3 | r3 = pc + r3;
0x0000f0b8 str r3, [sp, 0x28] | var_28h = r3;
| label_7:
0x0000f0bc ldr r8, [r4, 0xcc] | r8 = *((r4 + 0xcc));
0x0000f0c0 ldr r6, [sb] | r6 = *(sb);
0x0000f0c4 str r8, [r4, 0xd0] | *((r4 + 0xd0)) = r8;
0x0000f0c8 mov r2, r6 | r2 = r6;
0x0000f0cc mov r1, 0xa | r1 = 0xa;
0x0000f0d0 mov r0, r8 | r0 = r8;
0x0000f0d4 bl 0x58f8 | r0 = memchr (r0, r1, r2);
0x0000f0d8 cmp r0, 0 |
0x0000f0dc str r0, [r4, 0xd4] | *((r4 + 0xd4)) = r0;
| if (r0 != 0) {
0x0000f0e0 bne 0xf148 | goto label_22;
| }
0x0000f0e4 mov r2, r6 | r2 = r6;
0x0000f0e8 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000f0ec mov r0, r4 | r0 = r4;
0x0000f0f0 bl 0xbaf8 | r0 = header_append ();
0x0000f0f4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0000f0f8 bne 0xf13c | goto label_2;
| }
0x0000f0fc ldr r3, [r4, 0xc0] | r3 = *((r4 + 0xc0));
0x0000f100 cmp r3, 0 |
0x0000f104 beq 0xf110 |
| while (r3 < 5) {
| label_0:
0x0000f108 mov r6, 0 | r6 = 0;
0x0000f10c b 0xf13c | goto label_2;
0x0000f110 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000f114 cmp r3, 5 |
0x0000f118 bls 0xf108 |
| }
0x0000f11c ldr r1, [r4, 0x7c4] | r1 = *((r4 + 0x7c4));
0x0000f120 ldr r0, [r4, 0x4a0] | r0 = *((r4 + 0x4a0));
0x0000f124 bl 0xbdd4 | r0 = checkhttpprefix_isra_2 ();
0x0000f128 cmp r0, 0 |
| if (r0 != 0) {
0x0000f12c strbeq r6, [r4, 0xb8] | *((r4 + 0xb8)) = r6;
| }
| if (r0 == 0) {
0x0000f130 moveq r3, 2 | r3 = 2;
| goto label_23;
| }
| if (r0 != 0) {
| label_23:
0x0000f134 bne 0xf108 | goto label_0;
| }
| label_1:
0x0000f138 str r3, [r4, 0xbc] | *((r4 + 0xbc)) = r3;
| do {
| label_2:
0x0000f13c mov r0, r6 | r0 = r6;
0x0000f140 add sp, sp, 0x44 |
0x0000f144 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x0000f148 sub r3, r0, r8 | r3 = r0 - r8;
0x0000f14c add r3, r3, 1 | r3++;
0x0000f150 sub r6, r6, r3 | r6 -= r3;
0x0000f154 add r2, r0, 1 | r2 = r0 + 1;
0x0000f158 str r6, [sb] | *(sb) = r6;
0x0000f15c ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000f160 str r2, [r4, 0xcc] | *((r4 + 0xcc)) = r2;
0x0000f164 mov r0, r4 | r0 = r4;
0x0000f168 sub r2, r2, r8 | r2 -= r8;
0x0000f16c bl 0xbaf8 | r0 = header_append ();
0x0000f170 subs r6, r0, 0 | r6 = r0 - 0;
0x0000f174 bne 0xf13c |
| } while (r6 != r0);
0x0000f178 ldr r3, [r4, 0xc4] | r3 = *((r4 + 0xc4));
0x0000f17c ldr r1, [r4, 0x7c4] | r1 = *((r4 + 0x7c4));
0x0000f180 str r3, [r4, 0xd4] | *((r4 + 0xd4)) = r3;
0x0000f184 ldr r3, [r4, 0xc0] | r3 = *((r4 + 0xc0));
0x0000f188 str r1, [r4, 0xd8] | *((r4 + 0xd8)) = r1;
0x0000f18c cmp r3, 0 |
| if (r3 != 0) {
0x0000f190 bne 0xf1e0 | goto label_24;
| }
0x0000f194 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000f198 cmp r3, 5 |
| if (r3 < 5) {
0x0000f19c bls 0xf1e0 | goto label_24;
| }
0x0000f1a0 ldr r0, [r4, 0x4a0] | r0 = *((r4 + 0x4a0));
0x0000f1a4 bl 0xbdd4 | r0 = checkhttpprefix_isra_2 ();
0x0000f1a8 cmp r0, 0 |
| if (r0 != 0) {
0x0000f1ac bne 0xf1e0 | goto label_24;
| }
0x0000f1b0 ldr r3, [sb] | r3 = *(sb);
0x0000f1b4 strb r6, [r4, 0xb8] | *((r4 + 0xb8)) = r6;
0x0000f1b8 cmp r3, 0 |
| if (r3 != 0) {
0x0000f1bc movne r3, 1 | r3 = 1;
| goto label_25;
| }
| if (r3 != 0) {
| label_25:
0x0000f1c0 bne 0xf138 | goto label_1;
| }
0x0000f1c4 mov r3, 2 | r3 = 2;
0x0000f1c8 str r3, [r4, 0xbc] | *((r4 + 0xbc)) = r3;
0x0000f1cc ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000f1d0 str r3, [sb] | *(sb) = r3;
0x0000f1d4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000f1d8 str r3, [r4, 0xcc] | *((r4 + 0xcc)) = r3;
0x0000f1dc b 0xf13c | goto label_2;
| label_24:
0x0000f1e0 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f1e4 ldrb r3, [r0] | r3 = *(r0);
0x0000f1e8 cmp r3, 0xd |
0x0000f1ec cmpne r3, 0xa | __asm ("cmpne r3, 0xa");
| if (r3 != 0xd) {
0x0000f1f0 bne 0xf5f0 | goto label_26;
| }
0x0000f1f4 cmp r3, 0xd |
| if (r3 != 0xd) {
0x0000f1f8 addeq r0, r0, 1 | r0++;
| }
| if (r3 != 0xd) {
0x0000f1fc streq r0, [r4, 0xd8] | *((r4 + 0xd8)) = r0;
| }
0x0000f200 ldr r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x0000f204 ldrb r2, [r3] | r2 = *(r3);
0x0000f208 cmp r2, 0xa |
| if (r2 != 0xa) {
0x0000f20c addeq r3, r3, 1 | r3++;
| }
| if (r2 != 0xa) {
0x0000f210 streq r3, [r4, 0xd8] | *((r4 + 0xd8)) = r3;
| }
0x0000f214 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000f218 sub r2, r3, 0x64 | r2 = r3 - 0x64;
0x0000f21c cmp r2, 0x63 |
| if (r2 > 0x63) {
0x0000f220 bhi 0xf334 | goto label_27;
| }
0x0000f224 cmp r3, 0x64 |
| if (r3 != 0x64) {
0x0000f228 beq 0xf248 |
0x0000f22c cmp r3, 0x65 |
0x0000f230 mov r8, 0 | r8 = 0;
| if (r3 == 0x65) {
0x0000f234 beq 0xf2f8 | goto label_28;
| }
0x0000f238 mov r3, 1 | r3 = 1;
0x0000f23c strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000f240 str r8, [r4, 0xc0] | *((r4 + 0xc0)) = r8;
0x0000f244 b 0xf27c |
| } else {
0x0000f248 mov r3, 1 | r3 = 1;
0x0000f24c strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000f250 ldr r3, [r4, 0xf4] | r3 = *((r4 + 0xf4));
0x0000f254 mov r1, 0 | r1 = 0;
0x0000f258 cmp r3, r1 |
0x0000f25c str r1, [r4, 0xc0] | *((r4 + 0xc0)) = r1;
| if (r3 == r1) {
0x0000f260 beq 0xf27c | goto label_3;
| }
0x0000f264 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0000f268 str r1, [r4, 0xf4] | *((r4 + 0xf4)) = r1;
0x0000f26c orr r3, r3, 2 | r3 |= 2;
0x0000f270 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x0000f274 mov r0, r4 | r0 = r4;
0x0000f278 bl 0x1eb2c | Curl_expire_done ();
| }
| do {
| label_3:
0x0000f27c ldrb r3, [r5, 0x251] | r3 = *((r5 + 0x251));
0x0000f280 cmp r3, 0 |
| if (r3 != 0) {
0x0000f284 beq 0xf2d0 |
| label_4:
0x0000f288 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000f28c ldr r2, [pc, 0xd84] | r2 = *(0x10014);
0x0000f290 cmp r3, r2 |
| if (r3 != r2) {
0x0000f294 ldreq r3, [r5, 0x2f8] | r3 = *((r5 + 0x2f8));
| }
| if (r3 != r2) {
0x0000f298 beq 0xf2ac |
0x0000f29c ldr r2, [pc, 0xd78] | r2 = *(0x10018);
0x0000f2a0 cmp r3, r2 |
| if (r3 != r2) {
0x0000f2a4 bne 0xf2d0 | goto label_5;
| }
0x0000f2a8 ldr r3, [r5, 0x310] | r3 = *((r5 + 0x310));
| }
0x0000f2ac cmp r3, 2 |
| if (r3 != 2) {
0x0000f2b0 bne 0xf2d0 | goto label_5;
| }
0x0000f2b4 ldr r1, [pc, 0xd64] | r1 = *(0x1001c);
0x0000f2b8 mov r0, r4 | r0 = r4;
0x0000f2bc add r1, pc, r1 | r1 = pc + r1;
0x0000f2c0 bl 0x104cc | Curl_infof ();
0x0000f2c4 add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x0000f2c8 mov r2, 1 | r2 = 1;
0x0000f2cc strb r2, [r3, 0x8a0] | *((r3 + 0x8a0)) = r2;
| }
| label_5:
0x0000f2d0 mov r0, r5 | r0 = r5;
0x0000f2d4 bl 0xb8e4 | r0 = http_should_fail ();
0x0000f2d8 cmp r0, 0 |
| if (r0 == 0) {
0x0000f2dc beq 0xf3b4 | goto label_29;
| }
0x0000f2e0 ldr r1, [pc, 0xd3c] | r1 = *(0x10020);
0x0000f2e4 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000f2e8 add r1, pc, r1 | r1 = pc + r1;
| label_8:
0x0000f2ec mov r0, r4 | r0 = r4;
0x0000f2f0 bl 0x10544 | Curl_failf ();
0x0000f2f4 b 0xf8b8 | goto label_30;
| label_28:
0x0000f2f8 ldr fp, [r4, 0xf8] | fp = *((r4 + 0xf8));
0x0000f2fc cmp fp, 1 |
| if (fp == 1) {
0x0000f300 bne 0xf32c |
0x0000f304 ldr r1, [pc, 0xd1c] | r1 = *(0x10024);
0x0000f308 mov r0, r4 | r0 = r4;
0x0000f30c add r1, pc, r1 | r1 = pc + r1;
0x0000f310 bl 0x104cc | Curl_infof ();
0x0000f314 mov r3, 2 | r3 = 2;
0x0000f318 str r3, [r4, 0xf8] | *((r4 + 0xf8)) = r3;
0x0000f31c strb fp, [r4, 0xb8] | *((r4 + 0xb8)) = fp;
0x0000f320 str r8, [r4, 0xc0] | *((r4 + 0xc0)) = r8;
0x0000f324 mov r6, 1 | r6 = 1;
0x0000f328 b 0xf13c | goto label_2;
| }
0x0000f32c strb r8, [r4, 0xb8] | *((r4 + 0xb8)) = r8;
0x0000f330 b 0xf27c |
| } while (1);
| label_27:
0x0000f334 mov r3, 0 | r3 = 0;
0x0000f338 strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000f33c ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0000f340 mvn r1, 0 | r1 = ~0;
0x0000f344 mvn r0, 0 | r0 = ~0;
0x0000f348 cmp r3, r1 |
0x0000f34c cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| if (r3 != r1) {
0x0000f350 bne 0xf27c | goto label_3;
| }
0x0000f354 ldrb r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x0000f358 cmp r3, 0 |
| if (r3 != 0) {
0x0000f35c bne 0xf27c | goto label_3;
| }
0x0000f360 ldrb r3, [r5, 0x251] | r3 = *((r5 + 0x251));
0x0000f364 cmp r3, 0 |
| if (r3 != 0) {
0x0000f368 bne 0xf288 | goto label_4;
| }
0x0000f36c ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000f370 cmp r3, 0xb |
| if (r3 != 0xb) {
0x0000f374 bne 0xf2d0 | goto label_5;
| }
0x0000f378 ldr r3, [r5, 0x284] | r3 = *((r5 + 0x284));
0x0000f37c ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000f380 tst r3, 0x40000 |
| if ((r3 & 0x40000) != 0) {
0x0000f384 bne 0xf2d0 | goto label_5;
| }
0x0000f388 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x0000f38c cmp r3, 6 |
| if (r3 == 6) {
0x0000f390 beq 0xf2d0 | goto label_5;
| }
0x0000f394 ldr r1, [pc, 0xc90] | r1 = *(0x10028);
0x0000f398 mov r0, r4 | r0 = r4;
0x0000f39c add r1, pc, r1 | r1 = pc + r1;
0x0000f3a0 bl 0x104cc | Curl_infof ();
0x0000f3a4 mov r1, 2 | r1 = 2;
0x0000f3a8 mov r0, r5 | r0 = r5;
0x0000f3ac bl 0x1cb34 | Curl_conncontrol ();
0x0000f3b0 b 0xf27c | goto label_3;
| label_29:
0x0000f3b4 ldrb r3, [r4, 0x4cd] | r3 = *((r4 + 0x4cd));
0x0000f3b8 ldr r2, [r4, 0x7c4] | r2 = *((r4 + 0x7c4));
0x0000f3bc ldr r8, [r4, 0xd8] | r8 = *((r4 + 0xd8));
0x0000f3c0 cmp r3, 0 |
0x0000f3c4 sub r8, r8, r2 | r8 -= r2;
| if (r3 == 0) {
0x0000f3c8 movne r1, 3 | r1 = 3;
| }
| if (r3 != 0) {
0x0000f3cc moveq r1, 2 | r1 = 2;
| }
0x0000f3d0 mov r3, r8 | r3 = r8;
0x0000f3d4 mov r0, r5 | r0 = r5;
0x0000f3d8 bl 0x107cc | r0 = Curl_client_write ();
0x0000f3dc cmp r0, 0 |
| if (r0 != 0) {
0x0000f3e0 bne 0xfd50 | goto label_31;
| }
0x0000f3e4 add fp, r4, 0x4000 |
0x0000f3e8 ldr r3, [fp, 0xa74] | r3 = *(arg_a74h);
0x0000f3ec ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000f3f0 add r3, r3, r8 | r3 += r8;
0x0000f3f4 str r3, [fp, 0xa74] | *(arg_a74h) = r3;
0x0000f3f8 ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x0000f3fc sub r2, r2, 0x64 | r2 -= 0x64;
0x0000f400 add r3, r8, r3 | r3 = r8 + r3;
0x0000f404 cmp r2, 0x64 |
0x0000f408 str r3, [r4, 0xa0] | *((r4 + 0xa0)) = r3;
| if (r2 < 0x64) {
0x0000f40c movhs r3, 0 | r3 = 0;
| }
0x0000f410 str r3, [r4, 0xa4] | *((r4 + 0xa4)) = r3;
0x0000f414 mov r0, r5 | r0 = r5;
0x0000f418 bl 0xc2dc | r0 = Curl_http_auth_act ();
0x0000f41c subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x0000f420 bne 0x10114 | goto label_32;
| }
0x0000f424 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000f428 cmp r2, 0x12c |
| if (r2 >= 0x12c) {
0x0000f42c blt 0xf4e0 |
0x0000f430 ldrb r2, [r5, 0x262] | r2 = *((r5 + 0x262));
0x0000f434 cmp r2, 0 |
| if (r2 == 0) {
0x0000f438 bne 0xf4b8 |
0x0000f43c ldrb r2, [r5, 0x251] | r2 = *((r5 + 0x251));
0x0000f440 cmp r2, 0 |
| if (r2 != 0) {
0x0000f444 bne 0xf4b8 | goto label_6;
| }
0x0000f448 ldrb r2, [r5, 0x263] | r2 = *((r5 + 0x263));
0x0000f44c cmp r2, 0 |
| if (r2 != 0) {
0x0000f450 bne 0xf4c4 | goto label_33;
| }
0x0000f454 ldr r2, [r4, 0x3d0] | r2 = *((r4 + 0x3d0));
0x0000f458 sub r2, r2, 2 | r2 -= 2;
0x0000f45c cmp r2, 3 |
| if (r2 > 3) {
0x0000f460 bhi 0xf4b8 | goto label_6;
| }
0x0000f464 mov r1, r3 | r1 = r3;
0x0000f468 mov r0, r4 | r0 = r4;
0x0000f46c str r3, [sp, 0x2c] | var_2ch = r3;
0x0000f470 bl 0x1eb2c | Curl_expire_done ();
0x0000f474 ldrb r2, [r4, 0x114] | r2 = *((r4 + 0x114));
0x0000f478 cmp r2, 0 |
| if (r2 != 0) {
0x0000f47c bne 0xf4b8 | goto label_6;
| }
0x0000f480 ldrb r2, [r4, 0x4c9] | r2 = *((r4 + 0x4c9));
0x0000f484 cmp r2, 0 |
| if (r2 == 0) {
0x0000f488 beq 0xf588 | goto label_34;
| }
0x0000f48c ldr r1, [pc, 0xb9c] | r1 = *(0x1002c);
0x0000f490 mov r0, r4 | r0 = r4;
0x0000f494 add r1, pc, r1 | r1 = pc + r1;
0x0000f498 bl 0x104cc | Curl_infof ();
0x0000f49c ldr r2, [r4, 0xf4] | r2 = *((r4 + 0xf4));
0x0000f4a0 cmp r2, 0 |
| if (r2 == 0) {
0x0000f4a4 ldrne r3, [sp, 0x2c] | r3 = var_2ch;
| }
| if (r2 == 0) {
0x0000f4a8 strne r3, [r4, 0xf4] | *((r4 + 0xf4)) = r3;
| }
| if (r2 == 0) {
0x0000f4ac ldrne r3, [r4, 0x110] | r3 = *((r4 + 0x110));
| }
| if (r2 == 0) {
0x0000f4b0 orrne r3, r3, 2 | r3 |= 2;
| }
| if (r2 != 0) {
0x0000f4b4 strne r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| goto label_6;
| }
| }
| label_6:
0x0000f4b8 ldrb r3, [r5, 0x263] | r3 = *((r5 + 0x263));
0x0000f4bc cmp r3, 0 |
| if (r3 == 0) {
0x0000f4c0 beq 0xf4e0 | goto label_35;
| }
| label_33:
0x0000f4c4 ldr r1, [pc, 0xb68] | r1 = *(0x10030);
0x0000f4c8 mov r0, r4 | r0 = r4;
0x0000f4cc add r1, pc, r1 | r1 = pc + r1;
0x0000f4d0 bl 0x104cc | Curl_infof ();
0x0000f4d4 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0000f4d8 orr r3, r3, 2 | r3 |= 2;
0x0000f4dc str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| }
| label_35:
0x0000f4e0 ldrb r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x0000f4e4 cmp r3, 0 |
| if (r3 != 0) {
0x0000f4e8 bne 0xf5cc | goto label_36;
| }
0x0000f4ec ldrb r3, [r4, 0x4d0] | r3 = *((r4 + 0x4d0));
0x0000f4f0 cmp r3, 0 |
| if (r3 == 0) {
0x0000f4f4 movne r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x0000f4f8 strbne r3, [sl] | *(sl) = r3;
| }
| if (r3 == 0) {
0x0000f4fc bne 0xf518 |
0x0000f500 ldrb r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x0000f504 cmp r3, 0 |
| if (r3 == 0) {
0x0000f508 mvnne r2, 0 | r2 = ~0;
| }
| if (r3 == 0) {
0x0000f50c mvnne r3, 0 | r3 = ~0;
| }
0x0000f510 strdne r2, r3, [r4, 0x70] | __asm ("strdne r2, r3, [r4, 0x70]");
0x0000f514 strdne r2, r3, [r4, 0x80] | __asm ("strdne r2, r3, [r4, 0x80]");
| }
0x0000f518 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0000f51c mvn r1, 0 | r1 = ~0;
0x0000f520 mvn r0, 0 | r0 = ~0;
0x0000f524 cmp r3, r1 |
0x0000f528 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| if (r3 != r1) {
0x0000f52c beq 0xf540 |
0x0000f530 mov r0, r4 | r0 = r4;
0x0000f534 bl 0x8294 | Curl_pgrsSetDownloadSize ();
0x0000f538 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0000f53c strd r2, r3, [r4, 0x80] | __asm ("strd r2, r3, [r4, 0x80]");
| }
0x0000f540 ldrd r2, r3, [r4, 0x80] | __asm ("ldrd r2, r3, [r4, 0x80]");
0x0000f544 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x0000f548 moveq r3, 1 | r3 = 1;
| }
| if (r3 != r2) {
0x0000f54c strbeq r3, [sl] | *(sl) = r3;
| }
0x0000f550 ldrb r3, [sl] | r3 = *(sl);
0x0000f554 cmp r3, 0 |
| if (r3 == 0) {
0x0000f558 ldrne r3, [r4, 0x110] | r3 = *((r4 + 0x110));
| }
0x0000f55c bicne r3, r3, 1 | __asm ("bicne r3, r3, 1");
| if (r3 == 0) {
0x0000f560 strne r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| }
0x0000f564 ldrb r3, [r4, 0x4d8] | r3 = *((r4 + 0x4d8));
0x0000f568 cmp r3, 0 |
| if (r3 == 0) {
0x0000f56c beq 0xf108 | goto label_0;
| }
0x0000f570 mov r3, r8 | r3 = r8;
0x0000f574 ldr r2, [r4, 0xd0] | r2 = *((r4 + 0xd0));
0x0000f578 mov r1, 1 | r1 = 1;
0x0000f57c mov r0, r4 | r0 = r4;
0x0000f580 bl 0x10424 | Curl_debug ();
0x0000f584 b 0xf108 | goto label_0;
| label_34:
0x0000f588 ldr r1, [pc, 0xaa8] | r1 = *(0x10034);
0x0000f58c mov r0, r4 | r0 = r4;
0x0000f590 add r1, pc, r1 | r1 = pc + r1;
0x0000f594 bl 0x104cc | Curl_infof ();
0x0000f598 mov r1, 2 | r1 = 2;
0x0000f59c mov r0, r5 | r0 = r5;
0x0000f5a0 bl 0x1cb34 | Curl_conncontrol ();
0x0000f5a4 mov r3, 1 | r3 = 1;
0x0000f5a8 strb r3, [r4, 0x114] | *((r4 + 0x114)) = r3;
0x0000f5ac ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0000f5b0 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0000f5b4 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x0000f5b8 ldrb r3, [fp, 0x9dc] | r3 = *(arg_9dch);
0x0000f5bc cmp r3, 0 |
| if (r3 == 0) {
0x0000f5c0 movne r3, 3 | r3 = 3;
| }
| if (r3 == 0) {
0x0000f5c4 strne r3, [r4, 0xf4] | *((r4 + 0xf4)) = r3;
| }
0x0000f5c8 b 0xf4b8 | goto label_6;
| label_36:
0x0000f5cc ldr r3, [r4, 0x7c4] | r3 = *((r4 + 0x7c4));
0x0000f5d0 str r3, [r4, 0xc4] | *((r4 + 0xc4)) = r3;
0x0000f5d4 mov r3, 0 | r3 = 0;
0x0000f5d8 str r3, [r4, 0xc8] | *((r4 + 0xc8)) = r3;
| label_12:
0x0000f5dc ldr r3, [r4, 0xcc] | r3 = *((r4 + 0xcc));
0x0000f5e0 ldrb r3, [r3] | r3 = *(r3);
0x0000f5e4 cmp r3, 0 |
| if (r3 != 0) {
0x0000f5e8 bne 0xf0bc | goto label_7;
| }
0x0000f5ec b 0xf13c | goto label_2;
| label_26:
0x0000f5f0 ldr fp, [r4, 0xc0] | fp = *((r4 + 0xc0));
0x0000f5f4 add r3, fp, 1 | r3 += arg_1h;
0x0000f5f8 cmp fp, 0 |
0x0000f5fc str r3, [r4, 0xc0] | *((r4 + 0xc0)) = r3;
| if (fp != 0) {
0x0000f600 bne 0xf920 | goto label_37;
| }
0x0000f604 ldr r3, [r5, 0x284] | r3 = *((r5 + 0x284));
0x0000f608 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000f60c tst r3, 3 |
| if ((r3 & 3) == 0) {
0x0000f610 beq 0xf838 | goto label_38;
| }
0x0000f614 ldr r1, [pc, 0xa20] | r1 = *(0x10038);
0x0000f618 add r3, sp, 0x38 | r3 += var_38h;
0x0000f61c add r8, r4, 0xe8 | r8 = r4 + 0xe8;
0x0000f620 str r3, [sp] | *(sp) = r3;
0x0000f624 str r8, [sp, 4] | var_4h = r8;
0x0000f628 add r3, r5, 0x180 | r3 = r5 + 0x180;
0x0000f62c add r2, sp, 0x34 | r2 += var_34h;
0x0000f630 add r1, pc, r1 | r1 = pc + r1;
0x0000f634 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000f638 cmp r0, 1 |
| if (r0 != 1) {
0x0000f63c bne 0xf7e0 | goto label_39;
| }
0x0000f640 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000f644 cmp r3, 2 |
| if (r3 != 2) {
0x0000f648 bne 0x1011c | goto label_40;
| }
0x0000f64c ldr r1, [pc, 0x9ec] | r1 = *(0x1003c);
0x0000f650 mov r2, r8 | r2 = r8;
0x0000f654 add r1, pc, r1 | r1 = pc + r1;
0x0000f658 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f65c bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000f660 cmp r0, 1 |
| if (r0 != 1) {
0x0000f664 bne 0x1011c | goto label_40;
| }
0x0000f668 mov r3, 0x20 | r3 = 0x20;
0x0000f66c str fp, [r5, 0x180] | *((r5 + 0x180)) = fp;
0x0000f670 strb r3, [sp, 0x38] | var_38h = r3;
| do {
0x0000f674 ldrb r3, [sp, 0x38] | r3 = var_38h;
0x0000f678 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x0000f67c bne 0x1011c | goto label_40;
| }
0x0000f680 ldr r2, [r5, 0x180] | r2 = *((r5 + 0x180));
0x0000f684 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000f688 mov r1, 0xa | r1 = 0xa;
0x0000f68c mla r0, r1, r3, r2 | __asm ("mla r0, r1, r3, r2");
0x0000f690 ldr r3, [r4, 0xf8] | r3 = *((r4 + 0xf8));
0x0000f694 cmp r0, 0x14 |
0x0000f698 sub r2, r3, 2 | r2 = r3 - 2;
0x0000f69c clz r2, r2 | r2 &= r2;
0x0000f6a0 lsr r2, r2, 5 | r2 >>= 5;
| if (r0 != 0x14) {
0x0000f6a4 moveq r2, 0 | r2 = 0;
| }
0x0000f6a8 cmp r2, 0 |
0x0000f6ac str r0, [r5, 0x180] | *((r5 + 0x180)) = r0;
| if (r2 != 0) {
0x0000f6b0 beq 0xf6c4 |
0x0000f6b4 ldr r1, [pc, 0x988] | r1 = *(0x10040);
0x0000f6b8 mov r0, r4 | r0 = r4;
0x0000f6bc add r1, pc, r1 | r1 = pc + r1;
0x0000f6c0 bl 0x104cc | Curl_infof ();
| }
| label_9:
0x0000f6c4 add fp, r4, 0x4000 |
0x0000f6c8 ldr r2, [fp, 0x9d8] | r2 = *(arg_9d8h);
0x0000f6cc ldr r1, [r5, 0x180] | r1 = *((r5 + 0x180));
0x0000f6d0 clz r3, r2 | r3 &= r2;
0x0000f6d4 lsr r3, r3, 5 | r3 >>= 5;
0x0000f6d8 cmp r1, r2 |
| if (r1 >= r2) {
0x0000f6dc orrlt r3, r3, 1 | r3 |= 1;
| }
0x0000f6e0 cmp r3, 0 |
0x0000f6e4 add r3, r4, 0x4a00 | r3 = r4 + 0x4a00;
0x0000f6e8 ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x0000f6ec ldr r8, [r4, 0xe8] | r8 = *((r4 + 0xe8));
| if (r3 == 0) {
0x0000f6f0 strne r1, [fp, 0x9d8] | *(arg_9d8h) = r1;
| }
0x0000f6f4 orrs r3, r2, r3 | r3 = r2 | r3;
0x0000f6f8 str r8, [fp, 0xa60] | *(arg_a60h) = r8;
0x0000f6fc str r1, [fp, 0xa68] | *(arg_a68h) = r1;
| if (r3 != r2) {
0x0000f700 beq 0xf71c |
0x0000f704 ldr r3, [r4, 0x3d0] | r3 = *((r4 + 0x3d0));
0x0000f708 cmp r3, 1 |
0x0000f70c cmpeq r8, 0x1a0 | __asm ("cmpeq r8, aav.0x000000ff");
| if (r3 != 1) {
0x0000f710 moveq r3, 1 | r3 = 1;
| }
| if (r3 != 1) {
0x0000f714 strbeq r3, [r4, 0x115] | *((r4 + 0x115)) = r3;
| }
| if (r3 == 1) {
0x0000f718 beq 0xf8c0 | goto label_41;
| }
| }
0x0000f71c ldrb r3, [r4, 0x4c8] | r3 = *((r4 + 0x4c8));
0x0000f720 cmp r8, 0x190 |
| if (r8 >= 0x190) {
0x0000f724 movlt r3, 0 | r3 = 0;
| }
| if (r8 < 0x190) {
0x0000f728 andge r3, r3, 1 | r3 &= 1;
| }
0x0000f72c cmp r3, 0 |
| if (r3 == 0) {
0x0000f730 beq 0xf8c0 | goto label_41;
| }
0x0000f734 ldr r3, [pc, 0x8dc] | r3 = *(0x10014);
0x0000f738 cmp r8, r3 |
| if (r8 != r3) {
0x0000f73c ldrbeq r3, [r5, 0x258] | r3 = *((r5 + 0x258));
| }
| if (r8 != r3) {
0x0000f740 beq 0xf754 |
0x0000f744 ldr r3, [pc, 0x8d0] | r3 = *(0x10018);
0x0000f748 cmp r8, r3 |
| if (r8 != r3) {
0x0000f74c bne 0xf75c | goto label_42;
| }
0x0000f750 ldrb r3, [r5, 0x259] | r3 = *((r5 + 0x259));
| }
0x0000f754 cmp r3, 0 |
| if (r3 != 0) {
0x0000f758 bne 0xf8c0 | goto label_41;
| }
| label_42:
0x0000f75c ldr r5, [r4, 0xd8] | r5 = *((r4 + 0xd8));
0x0000f760 ldr r1, [pc, 0x8e0] | r1 = *(0x10044);
0x0000f764 mov r2, 4 | r2 = 4;
0x0000f768 add r1, pc, r1 | r1 = pc + r1;
0x0000f76c mov r0, r5 | r0 = r5;
0x0000f770 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x0000f774 cmp r0, 0 |
| if (r0 == 0) {
0x0000f778 bne 0xf7d0 |
0x0000f77c mov r1, 0x20 | r1 = 0x20;
0x0000f780 mov r0, r5 | r0 = r5;
0x0000f784 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000f788 cmp r0, 0 |
| if (r0 == 0) {
0x0000f78c beq 0xf7d0 | goto label_43;
| }
0x0000f790 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0000f794 cmp r3, 0 |
| if (r3 == 0) {
0x0000f798 beq 0xf7d0 | goto label_43;
| }
0x0000f79c add r5, r0, 1 | r5 = r0 + 1;
0x0000f7a0 mov r1, 0xd | r1 = 0xd;
0x0000f7a4 mov r0, r5 | r0 = r5;
0x0000f7a8 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000f7ac subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0000f7b0 movne r7, 0xd | r7 = 0xd;
| }
| if (r6 != r0) {
0x0000f7b4 bne 0xf898 | goto label_44;
| }
0x0000f7b8 mov r1, 0xa | r1 = 0xa;
0x0000f7bc mov r0, r5 | r0 = r5;
0x0000f7c0 bl 0x5b38 | r0 = strchr (r0, r1);
0x0000f7c4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0000f7c8 movne r7, 0xa | r7 = 0xa;
| }
| if (r6 != r0) {
0x0000f7cc bne 0xf898 | goto label_44;
| }
| }
| label_43:
0x0000f7d0 ldr r1, [pc, 0x874] | r1 = *(0x10048);
0x0000f7d4 mov r2, r8 | r2 = r8;
0x0000f7d8 add r1, pc, r1 | r1 = pc + r1;
0x0000f7dc b 0xf2ec | goto label_8;
| label_39:
0x0000f7e0 cmp r0, 4 |
0x0000f7e4 beq 0xf674 |
| } while (r0 == 4);
0x0000f7e8 cmp r0, 0 |
| if (r0 != 0) {
0x0000f7ec bne 0x1011c | goto label_40;
| }
0x0000f7f0 ldr r1, [pc, 0x858] | r1 = *(0x1004c);
0x0000f7f4 mov r2, r8 | r2 = r8;
0x0000f7f8 add r1, pc, r1 | r1 = pc + r1;
0x0000f7fc ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f800 bl 0x5658 | sscanf (r0, r1, r2);
0x0000f804 mov r8, 0xa | r8 = 0xa;
0x0000f808 str r8, [r5, 0x180] | *((r5 + 0x180)) = r8;
0x0000f80c cmp r0, 0 |
| if (r0 != 0) {
0x0000f810 bne 0xf6c4 | goto label_9;
| }
0x0000f814 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000f818 ldr r0, [r4, 0x4a0] | r0 = *((r4 + 0x4a0));
0x0000f81c bl 0xbdd4 | r0 = checkhttpprefix_isra_2 ();
0x0000f820 cmp r0, 0 |
| if (r0 == 0) {
0x0000f824 beq 0xfa14 | goto label_45;
| }
0x0000f828 mov r3, 0xc8 | r3 = 0xc8;
0x0000f82c str r3, [r4, 0xe8] | *((r4 + 0xe8)) = r3;
0x0000f830 str r8, [r5, 0x180] | *((r5 + 0x180)) = r8;
0x0000f834 b 0xf6c4 | goto label_9;
| label_38:
0x0000f838 tst r3, 0x40000 |
| if ((r3 & 0x40000) == 0) {
0x0000f83c beq 0xfa14 | goto label_45;
| }
0x0000f840 ldr r1, [pc, 0x80c] | r1 = *(0x10050);
0x0000f844 add r3, r4, 0xe8 | r3 = r4 + 0xe8;
0x0000f848 str r3, [sp, 4] | var_4h = r3;
0x0000f84c add r3, sp, 0x34 | r3 += var_34h;
0x0000f850 str r3, [sp] | *(sp) = r3;
0x0000f854 add r2, sp, 0x38 | r2 += var_38h;
0x0000f858 add r3, r5, 0x184 | r3 = r5 + 0x184;
0x0000f85c add r1, pc, r1 | r1 = pc + r1;
0x0000f860 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000f864 cmp r0, 4 |
| if (r0 != 4) {
0x0000f868 bne 0xfa14 | goto label_45;
| }
0x0000f86c ldrb r3, [sp, 0x34] | r3 = var_34h;
0x0000f870 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x0000f874 bne 0xfa14 | goto label_45;
| }
0x0000f878 ldr r2, [r5, 0x184] | r2 = *((r5 + 0x184));
0x0000f87c ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000f880 mov r1, 0xa | r1 = 0xa;
0x0000f884 mla r3, r1, r0, r2 | __asm ("mla r3, r1, r0, r2");
0x0000f888 str r3, [r5, 0x184] | *((r5 + 0x184)) = r3;
0x0000f88c mov r3, 0xb | r3 = 0xb;
0x0000f890 str r3, [r5, 0x180] | *((r5 + 0x180)) = r3;
0x0000f894 b 0xf6c4 | goto label_9;
| label_44:
0x0000f898 ldr r1, [pc, 0x7b8] | r1 = *(0x10054);
0x0000f89c mov r3, 0 | r3 = 0;
0x0000f8a0 strb r3, [r6] | *(r6) = r3;
0x0000f8a4 mov r2, r5 | r2 = r5;
0x0000f8a8 add r1, pc, r1 | r1 = pc + r1;
0x0000f8ac mov r0, r4 | r0 = r4;
0x0000f8b0 bl 0x10544 | Curl_failf ();
0x0000f8b4 strb r7, [r6] | *(r6) = r7;
| label_30:
0x0000f8b8 mov r6, 0x16 | r6 = 0x16;
0x0000f8bc b 0xf13c | goto label_2;
| label_41:
0x0000f8c0 cmp r1, 0xa |
| if (r1 != 0xa) {
0x0000f8c4 bne 0xf9ac | goto label_46;
| }
0x0000f8c8 ldr r1, [pc, 0x78c] | r1 = *(0x10058);
0x0000f8cc mov r0, r4 | r0 = r4;
0x0000f8d0 add r1, pc, r1 | r1 = pc + r1;
0x0000f8d4 bl 0x104cc | Curl_infof ();
0x0000f8d8 mov r1, 1 | r1 = 1;
0x0000f8dc mov r0, r5 | r0 = r5;
0x0000f8e0 bl 0x1cb34 | Curl_conncontrol ();
| do {
| label_10:
0x0000f8e4 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000f8e8 cmp r3, 0xcc |
| if (r3 != 0xcc) {
0x0000f8ec beq 0xf8f8 |
0x0000f8f0 cmp r3, 0x130 |
| if (r3 != 0x130) {
0x0000f8f4 bne 0xf920 | goto label_37;
| }
| }
0x0000f8f8 ldr r3, [r4, 0x3c8] | r3 = *((r4 + 0x3c8));
0x0000f8fc mov r2, 0 | r2 = 0;
0x0000f900 cmp r3, 0 |
| if (r3 == 0) {
0x0000f904 movne r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x0000f908 strbne r3, [fp, 0xa70] | *(arg_a70h) = r3;
| }
0x0000f90c mov r3, 0 | r3 = 0;
0x0000f910 strd r2, r3, [r4, 0x70] | __asm ("strd r2, r3, [r4, 0x70]");
0x0000f914 strd r2, r3, [r4, 0x80] | __asm ("strd r2, r3, [r4, 0x80]");
0x0000f918 mov r3, 1 | r3 = 1;
0x0000f91c strb r3, [r4, 0x116] | *((r4 + 0x116)) = r3;
| label_37:
0x0000f920 ldrb r3, [r4, 0x116] | r3 = *((r4 + 0x116));
0x0000f924 cmp r3, 0 |
| if (r3 != 0) {
0x0000f928 bne 0xfafc | goto label_47;
| }
0x0000f92c ldrb r8, [r4, 0x4ef] | r8 = *((r4 + 0x4ef));
0x0000f930 cmp r8, 0 |
| if (r8 != 0) {
0x0000f934 bne 0xfafc | goto label_47;
| }
0x0000f938 ldr r0, [pc, 0x720] | r0 = *(0x1005c);
0x0000f93c mov r2, 0xf | r2 = 0xf;
0x0000f940 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000f944 add r0, pc, r0 | r0 = pc + r0;
0x0000f948 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000f94c cmp r0, 0 |
| if (r0 == 0) {
0x0000f950 beq 0xfafc | goto label_47;
| }
0x0000f954 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000f958 add r3, sp, 0x38 | r3 += var_38h;
0x0000f95c mov r2, 0xa | r2 = 0xa;
0x0000f960 mov r1, r8 | r1 = r8;
0x0000f964 add r0, r0, 0xf | r0 += 0xf;
0x0000f968 bl 0x2188c | r0 = curlx_strtoofft ();
0x0000f96c cmp r0, 0 |
| if (r0 != 0) {
0x0000f970 bne 0xfaac | goto label_48;
| }
0x0000f974 add r3, r4, 0x4b0 | r3 = r4 + 0x4b0;
0x0000f978 ldrd r0, r1, [r3, -8] | __asm ("ldrd r0, r1, [r3, -8]");
0x0000f97c ldrd r2, r3, [sp, 0x38] | __asm ("ldrd r2, r3, [var_38h]");
0x0000f980 orrs ip, r0, r1 |
| if (ip == r0) {
0x0000f984 beq 0xfa20 | goto label_49;
| }
0x0000f988 cmp r0, r2 |
0x0000f98c sbcs r1, r1, r3 | __asm ("sbcs r1, r1, r3");
| if (r0 >= r2) {
0x0000f990 bge 0xfa20 | goto label_49;
| }
| label_13:
0x0000f994 ldr r1, [pc, 0x6c8] | r1 = *(0x10060);
0x0000f998 mov r0, r4 | r0 = r4;
0x0000f99c add r1, pc, r1 | r1 = pc + r1;
0x0000f9a0 bl 0x10544 | Curl_failf ();
0x0000f9a4 mov r6, 0x3f | r6 = 0x3f;
0x0000f9a8 b 0xf13c | goto label_2;
| label_46:
0x0000f9ac cmp r1, 0x14 |
| if (r1 != 0x14) {
0x0000f9b0 beq 0xf9c4 |
0x0000f9b4 ldr r3, [r4, 0xf8] | r3 = *((r4 + 0xf8));
0x0000f9b8 cmp r3, 1 |
0x0000f9bc cmpeq r8, 0x65 | __asm ("cmpeq r8, 0x65");
| if (r3 != 1) {
0x0000f9c0 bne 0xf9d4 | goto label_50;
| }
| }
0x0000f9c4 ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000f9c8 mov r2, 2 | r2 = 2;
| label_11:
0x0000f9cc str r2, [r3] | *(r3) = r2;
0x0000f9d0 b 0xf8e4 |
| } while (1);
| label_50:
0x0000f9d4 cmp r1, 0xa |
| if (r1 <= 0xa) {
0x0000f9d8 ble 0xf8e4 | goto label_10;
| }
0x0000f9dc ldrb r3, [r5, 0x251] | r3 = *((r5 + 0x251));
0x0000f9e0 cmp r3, 0 |
| if (r3 != 0) {
0x0000f9e4 bne 0xf8e4 | goto label_10;
| }
0x0000f9e8 ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000f9ec cmp r3, 0 |
| if (r3 == 0) {
0x0000f9f0 beq 0xf8e4 | goto label_10;
| }
0x0000f9f4 mov r1, r5 | r1 = r5;
0x0000f9f8 mov r0, r4 | r0 = r4;
0x0000f9fc bl 0x29094 | r0 = Curl_pipeline_site_blacklisted ();
0x0000fa00 cmp r0, 0 |
| if (r0 != 0) {
0x0000fa04 bne 0xf8e4 | goto label_10;
| }
0x0000fa08 ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000fa0c mov r2, 1 | r2 = 1;
0x0000fa10 b 0xf9cc | goto label_11;
| label_45:
0x0000fa14 mov r3, 0 | r3 = 0;
0x0000fa18 strb r3, [r4, 0xb8] | *((r4 + 0xb8)) = r3;
0x0000fa1c b 0xf13c | goto label_2;
| label_49:
0x0000fa20 strd r2, r3, [r4, 0x70] | __asm ("strd r2, r3, [r4, 0x70]");
0x0000fa24 strd r2, r3, [r4, 0x80] | __asm ("strd r2, r3, [r4, 0x80]");
0x0000fa28 mov r0, r4 | r0 = r4;
0x0000fa2c bl 0x8294 | Curl_pgrsSetDownloadSize ();
| label_14:
0x0000fa30 ldrb r3, [r4, 0x4cd] | r3 = *((r4 + 0x4cd));
0x0000fa34 cmp r3, 0 |
0x0000fa38 ldrb r3, [r4, 0x4d8] | r3 = *((r4 + 0x4d8));
| if (r3 == 0) {
0x0000fa3c movne r8, 3 | r8 = 3;
| }
| if (r3 != 0) {
0x0000fa40 moveq r8, 2 | r8 = 2;
| }
0x0000fa44 cmp r3, 0 |
| if (r3 != 0) {
0x0000fa48 beq 0xfa60 |
0x0000fa4c ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000fa50 ldr r2, [r4, 0xd8] | r2 = *((r4 + 0xd8));
0x0000fa54 mov r1, 1 | r1 = 1;
0x0000fa58 mov r0, r4 | r0 = r4;
0x0000fa5c bl 0x10424 | Curl_debug ();
| }
0x0000fa60 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0000fa64 ldr r2, [r4, 0xd8] | r2 = *((r4 + 0xd8));
0x0000fa68 mov r1, r8 | r1 = r8;
0x0000fa6c mov r0, r5 | r0 = r5;
0x0000fa70 bl 0x107cc | r0 = Curl_client_write ();
0x0000fa74 cmp r0, 0 |
| if (r0 != 0) {
0x0000fa78 bne 0xfd50 | goto label_31;
| }
0x0000fa7c add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x0000fa80 ldr r2, [r3, 0xa74] | r2 = *((r3 + 0xa74));
0x0000fa84 ldr r1, [r4, 0xc8] | r1 = *((r4 + 0xc8));
0x0000fa88 add r2, r2, r1 | r2 += r1;
0x0000fa8c str r2, [r3, 0xa74] | *((r3 + 0xa74)) = r2;
0x0000fa90 ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x0000fa94 str r0, [r4, 0xc8] | *((r4 + 0xc8)) = r0;
0x0000fa98 add r3, r3, r1 | r3 += r1;
0x0000fa9c str r3, [r4, 0xa0] | *((r4 + 0xa0)) = r3;
0x0000faa0 ldr r3, [r4, 0x7c4] | r3 = *((r4 + 0x7c4));
0x0000faa4 str r3, [r4, 0xc4] | *((r4 + 0xc4)) = r3;
0x0000faa8 b 0xf5dc | goto label_12;
| label_48:
0x0000faac cmp r0, 1 |
| if (r0 != 1) {
0x0000fab0 bne 0xfae4 | goto label_51;
| }
0x0000fab4 add r3, r4, 0x4b0 | r3 = r4 + 0x4b0;
0x0000fab8 ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x0000fabc orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x0000fac0 bne 0xf994 | goto label_13;
| }
0x0000fac4 mov r1, 2 | r1 = 2;
0x0000fac8 mov r0, r5 | r0 = r5;
0x0000facc bl 0x1cb34 | Curl_conncontrol ();
0x0000fad0 ldr r1, [pc, 0x590] | r1 = *(0x10064);
0x0000fad4 add r1, pc, r1 | r1 = pc + r1;
| label_16:
0x0000fad8 mov r0, r4 | r0 = r4;
0x0000fadc bl 0x104cc | Curl_infof ();
0x0000fae0 b 0xfa30 | goto label_14;
| label_51:
0x0000fae4 ldr r1, [pc, 0x580] | r1 = *(0x10068);
0x0000fae8 mov r0, r4 | r0 = r4;
0x0000faec add r1, pc, r1 | r1 = pc + r1;
0x0000faf0 bl 0x10544 | Curl_failf ();
0x0000faf4 mov r6, 8 | r6 = 8;
0x0000faf8 b 0xf13c | goto label_2;
| label_47:
0x0000fafc mov r2, 0xd | r2 = 0xd;
0x0000fb00 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fb04 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0000fb08 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fb0c cmp r0, 0 |
| if (r0 != 0) {
0x0000fb10 beq 0xfb60 |
0x0000fb14 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fb18 bl 0xc1ec | r0 = Curl_copy_header_value ();
0x0000fb1c subs fp, r0, 0 |
| if (fp == r0) {
0x0000fb20 bne 0xfb2c |
| label_19:
0x0000fb24 mov r6, 0x1b | r6 = 0x1b;
0x0000fb28 b 0xf13c | goto label_2;
| }
0x0000fb2c ldr r3, [pc, 0x53c] |
0x0000fb30 ldrb r2, [fp] | r2 = *(fp);
0x0000fb34 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000fb38 cmp r2, 0 |
0x0000fb3c ldr r3, [r3] | r3 = *(0x1006c);
| if (r2 == 0) {
0x0000fb40 bne 0xfb4c |
| label_15:
0x0000fb44 blx r3 | uint32_t (*r3)() ();
0x0000fb48 b 0xfa30 | goto label_14;
| }
0x0000fb4c add r8, r4, 0x4000 | r8 = r4 + 0x4000;
0x0000fb50 ldr r0, [r8, 0xa88] | r0 = *((r8 + 0xa88));
0x0000fb54 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x0000fb58 str fp, [r8, 0xa88] | *((r8 + 0xa88)) = fp;
0x0000fb5c b 0xfa30 | goto label_14;
| }
0x0000fb60 mov r2, 7 | r2 = 7;
0x0000fb64 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fb68 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000fb6c bl 0x5bd4 | fcn_00005bd4 ();
0x0000fb70 ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000fb74 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000fb78 beq 0xfbd8 | goto label_52;
| }
0x0000fb7c cmp r3, 0x13 |
| if (r3 > 0x13) {
0x0000fb80 bgt 0xfa30 | goto label_14;
| }
0x0000fb84 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fb88 bl 0xc1ec | Curl_copy_header_value ();
0x0000fb8c ldr r3, [r5, 0x500] | r3 = *((r5 + 0x500));
0x0000fb90 cmp r3, 0 |
0x0000fb94 mov r8, r0 | r8 = r0;
| if (r3 != 0) {
0x0000fb98 beq 0xfbc4 |
0x0000fb9c ldr r3, [r3] | r3 = *(r3);
0x0000fba0 cmp r3, 1 |
| if (r3 != 1) {
0x0000fba4 bne 0xfbc4 | goto label_53;
| }
0x0000fba8 mov r1, r0 | r1 = r0;
0x0000fbac mov r0, r4 | r0 = r4;
0x0000fbb0 bl 0x29218 | r0 = Curl_pipeline_server_blacklisted ();
0x0000fbb4 cmp r0, 0 |
| if (r0 == 0) {
0x0000fbb8 ldrne r3, [r5, 0x500] | r3 = *((r5 + 0x500));
| }
| if (r0 == 0) {
0x0000fbbc mvnne r2, 0 | r2 = ~0;
| }
| if (r0 != 0) {
0x0000fbc0 strne r2, [r3] | *(r3) = r2;
| goto label_53;
| }
| }
| label_53:
0x0000fbc4 ldr r3, [pc, 0x4a4] |
0x0000fbc8 mov r0, r8 | r0 = r8;
0x0000fbcc ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000fbd0 ldr r3, [r3] | r3 = *(0x1006c);
0x0000fbd4 b 0xfb44 | goto label_15;
| label_52:
0x0000fbd8 cmp r3, 0xa |
| if (r3 == 0xa) {
0x0000fbdc bne 0xfc24 |
0x0000fbe0 ldrb r3, [r5, 0x256] | r3 = *((r5 + 0x256));
0x0000fbe4 cmp r3, 0 |
| if (r3 == 0) {
0x0000fbe8 beq 0xfc24 | goto label_54;
| }
0x0000fbec ldr r2, [pc, 0x480] | r2 = *(0x10070);
0x0000fbf0 ldr r1, [pc, 0x480] | r1 = *(0x10074);
0x0000fbf4 add r2, pc, r2 | r2 = pc + r2;
0x0000fbf8 add r1, pc, r1 | r1 = pc + r1;
0x0000fbfc ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fc00 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fc04 cmp r0, 0 |
| if (r0 == 0) {
0x0000fc08 beq 0xfc24 | goto label_54;
| }
0x0000fc0c mov r1, r8 | r1 = r8;
0x0000fc10 mov r0, r5 | r0 = r5;
0x0000fc14 bl 0x1cb34 | Curl_conncontrol ();
0x0000fc18 ldr r1, [pc, 0x45c] | r1 = "___error:__s";
0x0000fc1c add r1, pc, r1 | r1 = pc + r1;
0x0000fc20 b 0xfad8 | goto label_16;
| }
| label_54:
0x0000fc24 ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000fc28 cmp r3, 0xb |
| if (r3 == 0xb) {
0x0000fc2c bne 0xfc74 |
0x0000fc30 ldrb r3, [r5, 0x256] | r3 = *((r5 + 0x256));
0x0000fc34 cmp r3, 0 |
| if (r3 == 0) {
0x0000fc38 beq 0xfc74 | goto label_55;
| }
0x0000fc3c ldr r2, [pc, 0x43c] | r2 = *(0x1007c);
0x0000fc40 ldr r1, [pc, 0x43c] | r1 = *(0x10080);
0x0000fc44 add r2, pc, r2 | r2 = pc + r2;
0x0000fc48 add r1, pc, r1 | r1 = pc + r1;
0x0000fc4c ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fc50 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fc54 cmp r0, 0 |
| if (r0 == 0) {
0x0000fc58 beq 0xfc74 | goto label_55;
| }
0x0000fc5c mov r1, 1 | r1 = 1;
0x0000fc60 mov r0, r5 | r0 = r5;
0x0000fc64 bl 0x1cb34 | Curl_conncontrol ();
0x0000fc68 ldr r1, [pc, 0x418] | r1 = *(0x10084);
0x0000fc6c add r1, pc, r1 | r1 = pc + r1;
0x0000fc70 b 0xfad8 | goto label_16;
| }
| label_55:
0x0000fc74 ldr r3, [r5, 0x180] | r3 = *((r5 + 0x180));
0x0000fc78 cmp r3, 0xa |
| if (r3 == 0xa) {
0x0000fc7c bne 0xfcb8 |
0x0000fc80 ldr r2, [pc, 0x404] | r2 = *(0x10088);
0x0000fc84 ldr r1, [pc, 0x404] | r1 = *(0x1008c);
0x0000fc88 add r2, pc, r2 | r2 = pc + r2;
0x0000fc8c add r1, pc, r1 | r1 = pc + r1;
0x0000fc90 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fc94 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fc98 cmp r0, 0 |
| if (r0 == 0) {
0x0000fc9c beq 0xfcb8 | goto label_56;
| }
0x0000fca0 mov r1, 0 | r1 = 0;
0x0000fca4 mov r0, r5 | r0 = r5;
0x0000fca8 bl 0x1cb34 | Curl_conncontrol ();
0x0000fcac ldr r1, [pc, 0x3e0] | r1 = *(0x10090);
0x0000fcb0 add r1, pc, r1 | r1 = pc + r1;
0x0000fcb4 b 0xfad8 | goto label_16;
| }
| label_56:
0x0000fcb8 ldr r1, [pc, 0x3d8] | r1 = *(0x10094);
0x0000fcbc ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000fcc0 add r1, pc, r1 | r1 = pc + r1;
0x0000fcc4 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fcc8 bl 0xcf18 | r0 = Curl_compareheader ();
0x0000fccc cmp r0, 0 |
| if (r0 != 0) {
0x0000fcd0 beq 0xfce4 |
0x0000fcd4 mov r1, 2 | r1 = 2;
0x0000fcd8 mov r0, r5 | r0 = r5;
0x0000fcdc bl 0x1cb34 | Curl_conncontrol ();
0x0000fce0 b 0xfa30 | goto label_14;
| }
0x0000fce4 ldr r0, [pc, 0x3b0] | r0 = *(0x10098);
0x0000fce8 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fcec mov r2, 0x12 | r2 = 0x12;
0x0000fcf0 add r0, pc, r0 | r0 = pc + r0;
0x0000fcf4 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fcf8 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000fcfc ldrne r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
| }
| if (r8 == r0) {
0x0000fd00 movne r2, 1 | r2 = 1;
| }
| if (r8 == r0) {
0x0000fd04 addne r1, r1, 0x12 | r1 += 0x12;
| }
| if (r8 == r0) {
0x0000fd08 bne 0xfd40 |
0x0000fd0c ldr r0, [pc, 0x38c] | r0 = *(0x1009c);
0x0000fd10 mov r2, 0x11 | r2 = 0x11;
0x0000fd14 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fd18 add r0, pc, r0 | r0 = pc + r0;
0x0000fd1c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fd20 cmp r0, 0 |
| if (r0 == 0) {
0x0000fd24 beq 0xfd58 | goto label_57;
| }
0x0000fd28 ldr r3, [r4, 0x52c] | r3 = *((r4 + 0x52c));
0x0000fd2c cmp r3, 0 |
| if (r3 == 0) {
0x0000fd30 beq 0xfd58 | goto label_57;
| }
0x0000fd34 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fd38 mov r2, r8 | r2 = r8;
0x0000fd3c add r1, r1, 0x11 | r1 += 0x11;
| }
0x0000fd40 mov r0, r5 | r0 = r5;
0x0000fd44 bl 0x20f2c | r0 = Curl_build_unencoding_stack ();
| label_21:
0x0000fd48 cmp r0, 0 |
| if (r0 == 0) {
0x0000fd4c beq 0xfa30 | goto label_14;
| }
| label_31:
0x0000fd50 mov r6, r0 | r6 = r0;
0x0000fd54 b 0xf13c | goto label_2;
| label_57:
0x0000fd58 ldr r0, [pc, 0x344] | r0 = *(0x100a0);
0x0000fd5c mov r2, 0xe | r2 = 0xe;
0x0000fd60 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fd64 add r0, pc, r0 | r0 = pc + r0;
0x0000fd68 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fd6c cmp r0, 0 |
| if (r0 == 0) {
0x0000fd70 beq 0xfe08 | goto label_58;
| }
0x0000fd74 ldr fp, [r4, 0xd8] | fp = *((r4 + 0xd8));
0x0000fd78 add fp, fp, 0xe |
| label_18:
0x0000fd7c mov r8, fp | r8 = fp;
0x0000fd80 ldrb r0, [fp], 1 | r0 = *(fp);
| fp++;
0x0000fd84 cmp r0, 0 |
| if (r0 != 0) {
0x0000fd88 bne 0xfdd8 | goto label_59;
| }
| label_17:
0x0000fd8c ldrb r0, [r8] | r0 = *(r8);
0x0000fd90 bl 0x2f8c0 | r0 = Curl_isdigit ();
0x0000fd94 cmp r0, 0 |
| if (r0 == 0) {
0x0000fd98 beq 0xfdf4 | goto label_60;
| }
0x0000fd9c add r3, r4, 0xe0 | r3 = r4 + 0xe0;
0x0000fda0 mov r2, 0xa | r2 = 0xa;
0x0000fda4 mov r1, 0 | r1 = 0;
0x0000fda8 mov r0, r8 | r0 = r8;
0x0000fdac bl 0x2188c | r0 = curlx_strtoofft ();
0x0000fdb0 cmp r0, 0 |
| if (r0 != 0) {
0x0000fdb4 bne 0xfa30 | goto label_14;
| }
0x0000fdb8 add r3, r4, 0x4a00 | r3 = r4 + 0x4a00;
0x0000fdbc ldrd r0, r1, [r3, -8] | __asm ("ldrd r0, r1, [r3, -8]");
0x0000fdc0 ldrd r2, r3, [r4, 0xe0] | __asm ("ldrd r2, r3, [r4, 0xe0]");
0x0000fdc4 cmp r1, r3 |
0x0000fdc8 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| if (r1 != r3) {
0x0000fdcc moveq r3, 1 | r3 = 1;
| }
| if (r1 != r3) {
0x0000fdd0 strbeq r3, [r4, 0xdc] | *((r4 + 0xdc)) = r3;
| }
0x0000fdd4 b 0xfa30 | goto label_14;
| label_59:
0x0000fdd8 bl 0x2f8c0 | r0 = Curl_isdigit ();
0x0000fddc cmp r0, 0 |
| if (r0 != 0) {
0x0000fde0 bne 0xfd8c | goto label_17;
| }
0x0000fde4 ldrb r3, [fp, -1] | r3 = var_1h;
0x0000fde8 cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x0000fdec bne 0xfd7c | goto label_18;
| }
0x0000fdf0 b 0xfd8c | goto label_17;
| label_60:
0x0000fdf4 add r3, r4, 0x4a00 | r3 = r4 + 0x4a00;
0x0000fdf8 mov r0, 0 | r0 = 0;
0x0000fdfc mov r1, 0 | r1 = 0;
0x0000fe00 strd r0, r1, [r3, -8] | __asm ("strd r0, r1, [r3, -8]");
0x0000fe04 b 0xfa30 | goto label_14;
| label_58:
0x0000fe08 ldr r3, [r4, 0x690] | r3 = *((r4 + 0x690));
0x0000fe0c cmp r3, 0 |
| if (r3 != 0) {
0x0000fe10 beq 0xfe8c |
0x0000fe14 ldr r0, [pc, 0x28c] | r0 = *(0x100a4);
0x0000fe18 mov r2, 0xb | r2 = 0xb;
0x0000fe1c ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fe20 add r0, pc, r0 | r0 = pc + r0;
0x0000fe24 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fe28 cmp r0, 0 |
| if (r0 == 0) {
0x0000fe2c beq 0xfe8c | goto label_61;
| }
0x0000fe30 mov r2, 2 | r2 = 2;
0x0000fe34 mov r1, r2 | r1 = r2;
0x0000fe38 mov r0, r4 | r0 = r4;
0x0000fe3c bl 0x21464 | Curl_share_lock ();
0x0000fe40 ldr r2, [r5, 0x2b4] | r2 = *((r5 + 0x2b4));
0x0000fe44 ldr r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x0000fe48 cmp r2, 0 |
0x0000fe4c add r0, r4, 0x4000 | r0 = r4 + 0x4000;
| if (r2 != 0) {
0x0000fe50 ldreq r2, [r5, 0xa0] | r2 = *((r5 + 0xa0));
| }
0x0000fe54 ldr r0, [r0, 0x9ec] | r0 = *((r0 + 0x9ec));
0x0000fe58 add r3, r3, 0xb | r3 += 0xb;
0x0000fe5c ldr r1, [r4, 0x690] | r1 = *((r4 + 0x690));
0x0000fe60 str r0, [sp, 8] | var_8h = r0;
0x0000fe64 str r2, [sp, 4] | var_4h = r2;
0x0000fe68 str r3, [sp] | *(sp) = r3;
0x0000fe6c mov r2, 1 | r2 = 1;
0x0000fe70 mov r3, 0 | r3 = 0;
0x0000fe74 mov r0, r4 | r0 = r4;
0x0000fe78 bl 0x9f7c | Curl_cookie_add ();
0x0000fe7c mov r1, 2 | r1 = 2;
0x0000fe80 mov r0, r4 | r0 = r4;
0x0000fe84 bl 0x214ac | Curl_share_unlock ();
0x0000fe88 b 0xfa30 | goto label_14;
| }
| label_61:
0x0000fe8c ldr r0, [pc, 0x218] | r0 = *(0x100a8);
0x0000fe90 mov r2, 0xe | r2 = 0xe;
0x0000fe94 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000fe98 add r0, pc, r0 | r0 = pc + r0;
0x0000fe9c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000fea0 cmp r0, 0 |
| if (r0 != 0) {
0x0000fea4 beq 0xfef4 |
0x0000fea8 ldr r3, [r4, 0x3c8] | r3 = *((r4 + 0x3c8));
0x0000feac cmp r3, 0 |
| if (r3 == 0) {
0x0000feb0 bne 0xfec0 |
0x0000feb4 ldrb r3, [r4, 0x4c1] | r3 = *((r4 + 0x4c1));
0x0000feb8 cmp r3, 0 |
| if (r3 == 0) {
0x0000febc beq 0xfef4 | goto label_62;
| }
| }
0x0000fec0 mov r0, 0 | r0 = 0;
0x0000fec4 bl 0x5544 | time (r0);
0x0000fec8 add r1, sp, 0x40 | r1 += var_40h;
0x0000fecc str r0, [r1, -8]! | *((r1 -= 8)) = r0;
0x0000fed0 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000fed4 add r0, r0, 0xe | r0 += 0xe;
0x0000fed8 bl 0x5a60 | fcn_00005a60 ();
0x0000fedc ldrb r3, [r4, 0x4c1] | r3 = *((r4 + 0x4c1));
0x0000fee0 cmp r3, 0 |
| if (r3 == 0) {
0x0000fee4 addne r3, r4, 0x4000 | r3 = r4 + 0x4000;
| }
0x0000fee8 str r0, [r4, 0x100] | *((r4 + 0x100)) = r0;
| if (r3 == 0) {
0x0000feec strne r0, [r3, 0xa6c] | *((r3 + 0xa6c)) = r0;
| }
0x0000fef0 b 0xfa30 | goto label_14;
| }
| label_62:
0x0000fef4 ldr r0, [pc, 0x1b4] | r0 = *(0x100ac);
0x0000fef8 mov r2, 0x11 | r2 = 0x11;
0x0000fefc ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000ff00 add r0, pc, r0 | r0 = pc + r0;
0x0000ff04 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000ff08 cmp r0, 0 |
| if (r0 == 0) {
0x0000ff0c beq 0xff7c | goto label_63;
| }
0x0000ff10 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0000ff14 ldr r3, [pc, 0xfc] | r3 = *(0x10014);
0x0000ff18 cmp r2, r3 |
| if (r2 != r3) {
0x0000ff1c bne 0xff7c | goto label_63;
| }
| label_20:
0x0000ff20 ldr fp, [r4, 0xe8] | fp = *((r4 + 0xe8));
0x0000ff24 ldr r1, [pc, 0xf0] | r1 = *(0x10018);
0x0000ff28 ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000ff2c sub fp, fp, r1 |
0x0000ff30 bl 0xc1ec | Curl_copy_header_value ();
0x0000ff34 clz fp, fp |
0x0000ff38 lsr fp, fp, 5 |
0x0000ff3c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000ff40 beq 0xfb24 | goto label_19;
| }
0x0000ff44 mov r1, fp | r1 = fp;
0x0000ff48 mov r2, r8 | r2 = r8;
0x0000ff4c mov r0, r5 | r0 = r5;
0x0000ff50 bl 0xc61c | Curl_http_input_auth ();
0x0000ff54 ldr r3, [pc, 0x114] |
0x0000ff58 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000ff5c ldr r3, [r3] | r3 = *(0x1006c);
0x0000ff60 mov fp, r0 |
0x0000ff64 mov r0, r8 | r0 = r8;
0x0000ff68 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000ff6c cmp fp, 0 |
| if (fp == 0) {
0x0000ff70 beq 0xfa30 | goto label_14;
| }
0x0000ff74 mov r6, fp | r6 = fp;
0x0000ff78 b 0xf13c | goto label_2;
| label_63:
0x0000ff7c ldr r0, [pc, 0x130] | r0 = *(0x100b0);
0x0000ff80 mov r2, 0x13 | r2 = 0x13;
0x0000ff84 ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000ff88 add r0, pc, r0 | r0 = pc + r0;
0x0000ff8c bl 0x5bd4 | fcn_00005bd4 ();
0x0000ff90 ldr r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0000ff94 cmp r0, 0 |
| if (r0 == 0) {
0x0000ff98 beq 0xffa8 | goto label_64;
| }
0x0000ff9c ldr r2, [pc, 0x78] | r2 = *(0x10018);
0x0000ffa0 cmp r3, r2 |
| if (r3 == r2) {
0x0000ffa4 beq 0xff20 | goto label_20;
| }
| label_64:
0x0000ffa8 sub r3, r3, 0x12c | r3 -= 0x12c;
0x0000ffac cmp r3, 0x63 |
| if (r3 > 0x63) {
0x0000ffb0 bhi 0x100fc | goto label_65;
| }
0x0000ffb4 ldr r0, [pc, 0xfc] | r0 = *(0x100b4);
0x0000ffb8 mov r2, 9 | r2 = 9;
0x0000ffbc ldr r1, [r4, 0xd8] | r1 = *((r4 + 0xd8));
0x0000ffc0 add r0, pc, r0 | r0 = pc + r0;
0x0000ffc4 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0000ffc8 cmp r0, 0 |
| if (r0 == 0) {
0x0000ffcc beq 0x100fc | goto label_65;
| }
0x0000ffd0 ldr r3, [r4, 0x118] | r3 = *((r4 + 0x118));
0x0000ffd4 cmp r3, 0 |
| if (r3 != 0) {
0x0000ffd8 bne 0x100fc | goto label_65;
| }
0x0000ffdc ldr r0, [r4, 0xd8] | r0 = *((r4 + 0xd8));
0x0000ffe0 bl 0xc1ec | r0 = Curl_copy_header_value ();
0x0000ffe4 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0000ffe8 beq 0xfb24 | goto label_19;
| }
0x0000ffec ldrb r2, [r3] | r2 = *(r3);
0x0000fff0 cmp r2, 0 |
| if (r2 == 0) {
0x0000fff4 bne 0x100c4 |
0x0000fff8 ldr r3, [pc, 0x70] | r3 = *(0x1006c);
0x0000fffc addseq r3, r7, r3 | __asm ("addseq r3, r7, r3");
| if (r2 != 0) {
0x00010000 andeq r0, r0, r0 | r0 &= r0;
| }
0x00010004 b 0xfb44 | goto label_15;
| }
0x000100c4 str r3, [r4, 0x118] | *((r4 + 0x118)) = r3;
0x000100c8 ldrb r3, [r4, 0x4ca] | r3 = *((r4 + 0x4ca));
0x000100cc cmp r3, 0 |
| if (r3 == 0) {
0x000100d0 beq 0xfa30 | goto label_14;
| }
0x000100d4 ldr r3, [pc, -0x20] |
0x000100d8 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000100dc ldr r3, [r3] | r3 = *(0x100b8);
0x000100e0 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x000100e4 cmp r0, 0 |
0x000100e8 str r0, [r4, 0x11c] | *((r4 + 0x11c)) = r0;
| if (r0 == 0) {
0x000100ec beq 0xfb24 | goto label_19;
| }
0x000100f0 mov r0, r5 | r0 = r5;
0x000100f4 bl 0xbbe8 | http_perhapsrewind ();
0x000100f8 b 0xfd48 | goto label_21;
| label_65:
0x000100fc ldr r3, [r5, 0x284] | r3 = *((r5 + 0x284));
0x00010100 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00010104 tst r3, 0x40000 |
| if ((r3 & 0x40000) == 0) {
0x00010108 beq 0xfa30 | goto label_14;
| }
0x0001010c mov r6, 4 | r6 = 4;
0x00010110 b 0xf13c | goto label_2;
| label_32:
0x00010114 mov r6, r3 | r6 = r3;
0x00010118 b 0xf13c | goto label_2;
| label_40:
0x0001011c ldr r1, [pc, -0x64] | r1 = *(0x000100c0);
0x00010120 mov r0, r4 | r0 = r4;
0x00010124 add r1, pc, r1 | r1 = pc + r1;
0x00010128 b 0x10060 | void (*0x10060)() ();
0x0001012c ldrd r0, r1, [r0, r0]! | __asm ("ldrd r0, r1, [r0, r0]!");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x77e8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_loadhostpairs () | void Curl_loadhostpairs (int32_t arg1) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| char * * endptr;
| void * var_20h;
| int8_t var_140h;
| void * s1;
| int32_t var_1h;
| int32_t var_160h;
| int32_t var_0h_2;
| int32_t var_164h;
| r0 = arg1;
0x000077e8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000077ec ldr sl, [pc, 0x3bc] | sl = *(0x00007bb0);
0x000077f0 sub sp, sp, 0x164 |
0x000077f4 mov r3, 0 | r3 = 0;
0x000077f8 str r3, [sp, 0x18] | var_18h = r3;
0x000077fc ldr r3, [pc, 0x3b0] | r3 = $d;
0x00007800 ldr r6, [r0, 0x68c] | r6 = *((r0 + 0x68c));
0x00007804 add r3, pc, r3 | r3 = pc + r3;
0x00007808 str r3, [sp, 0xc] | var_ch = r3;
0x0000780c ldr r3, [pc, 0x3a4] | r3 = *(0x7bb4);
0x00007810 mov r4, r0 | r4 = r0;
0x00007814 add r3, pc, r3 | r3 = pc + r3;
0x00007818 add sl, pc, sl | sl = pc + sl;
0x0000781c str r3, [sp, 0x10] | var_10h = r3;
| do {
0x00007820 cmp r6, 0 |
| if (r6 == 0) {
0x00007824 bne 0x7838 |
0x00007828 mov r0, r6 | r0 = r6;
0x0000782c str r6, [r4, 0x68c] | *((r4 + 0x68c)) = r6;
| label_2:
0x00007830 add sp, sp, 0x164 |
0x00007834 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00007838 ldr r5, [r6] | r5 = *(r6);
0x0000783c cmp r5, 0 |
| if (r5 != 0) {
0x00007840 beq 0x788c |
0x00007844 ldrb r3, [r5] | r3 = *(r5);
0x00007848 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x0000784c bne 0x790c | goto label_3;
| }
0x00007850 ldr r1, [pc, 0x364] | r1 = *(0x7bb8);
0x00007854 add r7, sp, 0x60 | r7 += s1;
0x00007858 add r0, r5, 1 | r0 = r5 + 1;
0x0000785c add r3, sp, 0x18 | r3 += var_18h;
0x00007860 mov r2, r7 | r2 = r7;
0x00007864 add r1, pc, r1 | r1 = pc + r1;
0x00007868 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0000786c cmp r0, 2 |
0x00007870 mov r5, r0 | r5 = r0;
| if (r0 == 2) {
0x00007874 beq 0x7894 | goto label_4;
| }
0x00007878 ldr r1, [pc, 0x340] | r1 = *(0x7bbc);
0x0000787c ldr r2, [r6] | r2 = *(r6);
0x00007880 add r1, pc, r1 | r1 = pc + r1;
0x00007884 mov r0, r4 | r0 = r4;
0x00007888 bl 0x104cc | Curl_infof ();
| }
| label_0:
0x0000788c ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x00007890 b 0x7820 |
| } while (1);
| label_4:
0x00007894 mov r0, r7 | r0 = r7;
0x00007898 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000789c bl 0x6edc | create_hostcache_id ();
0x000078a0 subs r7, r0, 0 | r7 -= s1;
| if (r7 == s1) {
0x000078a4 beq 0x7ba8 | goto label_5;
| }
0x000078a8 bl 0x5250 | strlen (r0);
0x000078ac ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x000078b0 cmp r3, 0 |
0x000078b4 mov r8, r0 | r8 = r0;
| if (r3 != 0) {
0x000078b8 beq 0x78cc |
0x000078bc mov r2, r5 | r2 = r5;
0x000078c0 mov r1, 3 | r1 = 3;
0x000078c4 mov r0, r4 | r0 = r4;
0x000078c8 bl 0x21464 | Curl_share_lock ();
| }
0x000078cc add r2, r8, 1 | r2 += var_1h;
0x000078d0 mov r1, r7 | r1 = r7;
0x000078d4 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000078d8 bl 0x1cfe0 | Curl_hash_delete ();
0x000078dc ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x000078e0 cmp r3, 0 |
| if (r3 != 0) {
0x000078e4 beq 0x78f4 |
0x000078e8 mov r1, 3 | r1 = 3;
0x000078ec mov r0, r4 | r0 = r4;
0x000078f0 bl 0x214ac | Curl_share_unlock ();
| }
0x000078f4 ldr r3, [pc, 0x2c8] |
0x000078f8 mov r0, r7 | r0 = r7;
0x000078fc ldr r3, [sl, r3] | r3 = *((sl + r3));
0x00007900 ldr r3, [r3] | r3 = *(0x7bc0);
0x00007904 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00007908 b 0x788c | goto label_0;
| label_3:
0x0000790c mov r1, 0x3a | r1 = 0x3a;
0x00007910 mov r0, r5 | r0 = r5;
0x00007914 bl 0x5b38 | r0 = strchr (r0, r1);
0x00007918 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000791c beq 0x79b8 | goto label_6;
| }
0x00007920 sub r2, r8, r5 | r2 = r8 - r5;
0x00007924 cmp r2, 0xff |
| if (r2 != 0xff) {
0x00007928 andeq r0, r5, 0x22 | r0 = r5 & 0x22;
| }
0x0000792c add r0, sp, 5 | r0 = sp + 5;
0x00007930 mov r1, r5 | r1 = r5;
0x00007934 mov r0, sb | r0 = sb;
0x00007938 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000793c ldr r3, [r6] | r3 = *(r6);
0x00007940 add r2, sp, 0x160 | r2 += var_160h;
0x00007944 sub r3, r8, r3 | r3 = r8 - r3;
0x00007948 add r8, r8, 1 | r8++;
0x0000794c add r3, r2, r3 | r3 = r2 + r3;
0x00007950 mov r7, 0 | r7 = 0;
0x00007954 mov r2, 0xa | r2 = 0xa;
0x00007958 add r1, sp, 0x1c | r1 += endptr;
0x0000795c cdp2 p0, 0xf, c0, c8, c8, 0 | __asm ("cdp2 p0, 0xf, c0, c8, c8, 0");
0x00007960 subseq r0, r1, r4 | __asm ("subseq r0, r1, r4");
0x00007964 stclo p4, c6, [r0, -0x1d0] | __asm ("stclo p4, c6, aav.0x000000ff");
| if (r2 != 0xff) {
0x00007968 andeq r1, r0, r1, lsl 15 | r1 = r0 & (r1 << 15);
| }
| if (r2 != 0xff) {
0x0000796c andeq r0, r0, r0 | r0 &= r0;
| }
| if (r2 != 0xff) {
0x00007970 andeq r0, r4, 0 | r0 = 0;
| }
| if (r2 != 0xff) {
0x00007974 addeq r0, r1, r5 | r0 = r1 + r5;
| }
0x00007978 invalid |
| if (r2 == 0xff) {
0x0000797c beq 0x47980 | void (*0x47980)() ();
| }
0x00007980 ldrb r2, [r3] | r2 = *(r3);
0x00007984 cmp r2, 0x3a |
| if (r2 != 0x3a) {
0x00007988 bne 0x79b8 | goto label_6;
| }
0x0000798c add r3, r3, 1 | r3++;
0x00007990 mov r8, r7 | r8 = r7;
0x00007994 add fp, sp, 0x20 |
0x00007998 str r0, [sp, 0x18] | var_18h = r0;
0x0000799c str r3, [sp, 8] | var_8h = r3;
| do {
| label_1:
0x000079a0 ldr r5, [sp, 0x1c] | r5 = endptr;
0x000079a4 ldrb r3, [r5] | r3 = *(r5);
0x000079a8 cmp r3, 0 |
| if (r3 == 0) {
0x000079ac bne 0x79c0 |
0x000079b0 cmp r8, 0 |
| if (r8 != 0) {
0x000079b4 bne 0x7ac4 | goto label_7;
| }
| label_6:
0x000079b8 mov r8, 0 | r8 = 0;
0x000079bc b 0x7a74 | goto label_8;
| }
0x000079c0 add r3, r5, 1 | r3 = r5 + 1;
0x000079c4 mov r0, r3 | r0 = r3;
0x000079c8 mov r1, 0x2c | r1 = 0x2c;
0x000079cc str r3, [sp, 0x14] | var_14h = r3;
0x000079d0 bl 0x5b38 | strchr (r0, r1);
0x000079d4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000079d8 cmp r0, 0 |
| if (r0 == 0) {
0x000079dc bne 0x79f0 |
0x000079e0 mov r0, r3 | r0 = r3;
0x000079e4 bl 0x5250 | strlen (r0);
0x000079e8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000079ec add r0, r3, r0 | r0 = r3 + r0;
| }
0x000079f0 str r0, [sp, 0x1c] | endptr = r0;
0x000079f4 ldrb r2, [r5, 1] | r2 = *((r5 + 1));
0x000079f8 cmp r2, 0x5b |
| if (r2 == 0x5b) {
0x000079fc bne 0x7a1c |
0x00007a00 cmp r0, r3 |
| if (r0 == r3) {
0x00007a04 beq 0x7a74 | goto label_8;
| }
0x00007a08 ldrb r3, [r0, -1] | r3 = *((r0 - 1));
0x00007a0c cmp r3, 0x5d |
| if (r3 != 0x5d) {
0x00007a10 bne 0x7a74 | goto label_8;
| }
0x00007a14 add r3, r5, 2 | r3 = r5 + 2;
0x00007a18 sub r0, r0, 1 | r0--;
| }
0x00007a1c subs r5, r0, r3 | r5 = r0 - r3;
0x00007a20 beq 0x79a0 |
| } while (r5 == r0);
0x00007a24 cmp r5, 0x3f |
| if (r5 <= 0x3f) {
0x00007a28 bhi 0x7a74 |
0x00007a2c mov r2, r5 | r2 = r5;
0x00007a30 mov r1, r3 | r1 = r3;
0x00007a34 mov r0, fp | r0 = fp;
0x00007a38 bl 0x4f5c | memcpy (r0, r1, r2);
0x00007a3c add r3, sp, 0x160 | r3 += var_160h;
0x00007a40 add r5, r3, r5 | r5 = r3 + r5;
0x00007a44 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00007a48 mov r3, 0 | r3 = 0;
0x00007a4c mov r0, fp | r0 = fp;
0x00007a50 strb r3, [r5, -0x140] | var_140h = r3;
0x00007a54 bl 0x24e20 | r0 = Curl_str2addr ();
0x00007a58 cmp r0, 0 |
| if (r0 != 0) {
0x00007a5c bne 0x7a90 | goto label_9;
| }
0x00007a60 ldr r1, [pc, 0x164] | r1 = *(0x7bc8);
0x00007a64 mov r2, fp | r2 = fp;
0x00007a68 add r1, pc, r1 | r1 = pc + r1;
0x00007a6c mov r0, r4 | r0 = r4;
0x00007a70 bl 0x104cc | Curl_infof ();
| }
| label_8:
0x00007a74 mov r0, r4 | r0 = r4;
0x00007a78 ldr r2, [r6] | r2 = *(r6);
0x00007a7c ldr r1, [sp, 0xc] | r1 = var_ch;
0x00007a80 bl 0x104cc | Curl_infof ();
0x00007a84 mov r0, r8 | r0 = r8;
0x00007a88 bl 0x24920 | Curl_freeaddrinfo ();
0x00007a8c b 0x788c | goto label_0;
| label_9:
0x00007a90 cmp r7, 0 |
| if (r7 == 0) {
0x00007a94 strne r0, [r7, 0x1c] | *((r7 + 0x1c)) = r0;
| }
| if (r7 != 0) {
0x00007a98 moveq r8, r0 | r8 = r0;
| }
0x00007a9c mov r7, r0 | r7 = r0;
0x00007aa0 b 0x79a0 | goto label_1;
| do {
0x00007aa4 ldr r3, [sp, 8] | r3 = var_8h;
0x00007aa8 mov r2, sb | r2 = sb;
0x00007aac str r3, [sp] | *(sp) = r3;
0x00007ab0 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00007ab4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00007ab8 mov r0, r4 | r0 = r4;
0x00007abc bl 0x104cc | Curl_infof ();
0x00007ac0 b 0x788c | goto label_0;
| label_7:
0x00007ac4 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00007ac8 mov r0, sb | r0 = sb;
0x00007acc bl 0x6edc | create_hostcache_id ();
0x00007ad0 subs r7, r0, 0 | r7 -= s1;
| if (r7 == s1) {
0x00007ad4 beq 0x7ba0 | goto label_10;
| }
0x00007ad8 bl 0x5250 | strlen (r0);
0x00007adc ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x00007ae0 cmp r3, 0 |
0x00007ae4 mov r5, r0 | r5 = r0;
| if (r3 != 0) {
0x00007ae8 beq 0x7afc |
0x00007aec mov r2, 2 | r2 = 2;
0x00007af0 mov r1, 3 | r1 = 3;
0x00007af4 mov r0, r4 | r0 = r4;
0x00007af8 bl 0x21464 | Curl_share_lock ();
| }
0x00007afc add r5, r5, 1 | r5 += var_1h;
0x00007b00 mov r2, r5 | r2 = r5;
0x00007b04 mov r1, r7 | r1 = r7;
0x00007b08 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x00007b0c bl 0x1d070 | r0 = Curl_hash_pick ();
0x00007b10 cmp r0, 0 |
| if (r0 != 0) {
0x00007b14 beq 0x7b40 |
0x00007b18 ldr r1, [pc, 0xb0] | r1 = *(0x7bcc);
0x00007b1c mov r2, sb | r2 = sb;
0x00007b20 add r1, pc, r1 | r1 = pc + r1;
0x00007b24 mov r0, r4 | r0 = r4;
0x00007b28 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00007b2c bl 0x104cc | Curl_infof ();
0x00007b30 mov r2, r5 | r2 = r5;
0x00007b34 mov r1, r7 | r1 = r7;
0x00007b38 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x00007b3c bl 0x1cfe0 | Curl_hash_delete ();
| }
0x00007b40 ldr r3, [pc, 0x7c] |
0x00007b44 mov r0, r7 | r0 = r7;
0x00007b48 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x00007b4c ldr r3, [r3] | r3 = *(0x7bc0);
0x00007b50 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00007b54 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00007b58 mov r2, sb | r2 = sb;
0x00007b5c mov r1, r8 | r1 = r8;
0x00007b60 mov r0, r4 | r0 = r4;
0x00007b64 bl 0x73d8 | r0 = Curl_cache_addr ();
0x00007b68 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00007b6c movne r3, 0 | r3 = 0;
| }
| if (r5 == r0) {
0x00007b70 strne r3, [r5, 4] | *((r5 + 4)) = r3;
| }
| if (r5 == r0) {
0x00007b74 ldrne r3, [r5, 8] | r3 = *((r5 + 8));
| }
| if (r5 == r0) {
0x00007b78 subne r3, r3, 1 | r3--;
| }
| if (r5 == r0) {
0x00007b7c strne r3, [r5, 8] | *((r5 + 8)) = r3;
| }
0x00007b80 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x00007b84 cmp r3, 0 |
| if (r3 != 0) {
0x00007b88 beq 0x7b98 |
0x00007b8c mov r1, 3 | r1 = 3;
0x00007b90 mov r0, r4 | r0 = r4;
0x00007b94 bl 0x214ac | Curl_share_unlock ();
| }
0x00007b98 cmp r5, 0 |
0x00007b9c bne 0x7aa4 |
| } while (r5 != 0);
| label_10:
0x00007ba0 mov r0, r8 | r0 = r8;
0x00007ba4 bl 0x24920 | Curl_freeaddrinfo ();
| label_5:
0x00007ba8 mov r0, 0x1b | r0 = 0x1b;
0x00007bac b 0x7830 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2514c */
| #include <stdint.h>
|
; (fcn) sym.Curl_memrchr () | uint32_t Curl_memrchr (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002514c cmp r2, 0 |
| if (r2 == 0) {
0x00025150 subne r2, r2, 1 | r2--;
| }
| if (r2 == 0) {
0x00025154 addne r3, r0, r2 | r3 = r0 + r2;
| }
| if (r2 == 0) {
0x00025158 andne r1, r1, 0xff | r1 &= 0xff;
| }
| if (r2 != 0) {
0x0002515c bne 0x25178 | goto label_2;
| }
| do {
| label_1:
0x00025160 mov r0, r2 | r0 = r2;
0x00025164 bx lr | return r0;
| label_0:
0x00025168 ldrb ip, [r2] | ip = *(r2);
0x0002516c sub r3, r3, 1 | r3--;
0x00025170 cmp ip, r1 |
0x00025174 beq 0x25160 |
| } while (ip == r1);
| label_2:
0x00025178 cmp r3, r0 |
0x0002517c mov r2, r3 | r2 = r3;
| if (r3 >= r0) {
0x00025180 bhs 0x25168 | goto label_0;
| }
0x00025184 mov r2, 0 | r2 = 0;
0x00025188 b 0x25160 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2c4cc */
| #include <stdint.h>
|
; (fcn) sym.Curl_mime_size () | void Curl_mime_size (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002c4cc push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002c4d0 ldr r3, [r0, 0xc] | r3 = *(arg_0hxc);
0x0002c4d4 mov r5, r0 | r5 = r0;
0x0002c4d8 cmp r3, 4 |
| if (r3 != 4) {
0x0002c4dc bne 0x2c520 | goto label_2;
| }
0x0002c4e0 ldr r4, [r0, 0x20] | r4 = *((r0 + 0x20));
0x0002c4e4 cmp r4, 0 |
| if (r4 != 0) {
0x0002c4e8 moveq r6, 0 | r6 = 0;
| }
| if (r4 != 0) {
0x0002c4ec moveq r7, 0 | r7 = 0;
| }
| if (r4 == 0) {
0x0002c4f0 beq 0x2c51c | goto label_3;
| }
0x0002c4f4 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0002c4f8 bl 0x5250 | strlen (r0);
0x0002c4fc ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x0002c500 mov sb, 0 | sb = 0;
0x0002c504 mov r7, sb | r7 = sb;
0x0002c508 add r0, r0, 6 | r0 += 6;
0x0002c50c mov r8, r0 | r8 = r0;
0x0002c510 mov r6, r0 | r6 = r0;
| do {
0x0002c514 cmp r4, 0 |
| if (r4 == 0) {
0x0002c518 bne 0x2c558 |
| label_3:
0x0002c51c strd r6, r7, [r5, 0x40] | __asm ("strd r6, r7, [r5, 0x40]");
| label_2:
0x0002c520 ldr r3, [r5, 0x58] | r3 = *((r5 + 0x58));
0x0002c524 cmp r3, 0 |
| if (r3 != 0) {
0x0002c528 bne 0x2c5a8 | goto label_4;
| }
0x0002c52c ldrd sl, fp, [r5, 0x40] | __asm ("ldrd sl, fp, [r5, 0x40]");
| label_0:
0x0002c530 cmp sl, 0 |
0x0002c534 sbcs r3, fp, 0 | __asm ("sbcs r3, arg_0h");
| if (sl >= 0) {
0x0002c538 blt 0x2c54c |
0x0002c53c ldr r8, [r5, 0x48] | r8 = *((r5 + 0x48));
0x0002c540 ands r8, r8, 2 | r8 &= 2;
| if (r8 != r8) {
0x0002c544 ldreq r4, [r5, 0x28] | r4 = *((r5 + 0x28));
| }
| if (r8 == r8) {
0x0002c548 beq 0x2c5d4 | goto label_5;
| }
| }
| label_1:
0x0002c54c mov r0, sl | r0 = sl;
0x0002c550 mov r1, fp | r1 = fp;
0x0002c554 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0002c558 mov r0, r4 | r0 = r4;
0x0002c55c bl 0x2c4cc | r0 = Curl_mime_size ();
0x0002c560 cmp r0, 0 |
0x0002c564 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
0x0002c568 mov sl, r0 | sl = r0;
0x0002c56c mov fp, r1 |
| if (r0 >= 0) {
0x0002c570 blt 0x2c598 |
0x0002c574 cmp r6, 0 |
0x0002c578 sbcs r3, r7, 0 | __asm ("sbcs r3, r7, 0");
| if (r6 >= 0) {
0x0002c57c movlt sl, r6 | sl = r6;
| }
| if (r6 >= 0) {
0x0002c580 movlt fp, r7 |
| }
| if (r6 < 0) {
0x0002c584 blt 0x2c598 | goto label_6;
| }
0x0002c588 adds r0, sl, r8 | r0 = sl + r8;
0x0002c58c adc r1, fp, sb | __asm ("adc r1, fp, sb");
0x0002c590 adds sl, r0, r6 | sl = r0 + r6;
0x0002c594 adc fp, r1, r7 | __asm ("adc fp, r1, r7");
| }
| label_6:
0x0002c598 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x0002c59c mov r6, sl | r6 = sl;
0x0002c5a0 mov r7, fp | r7 = fp;
0x0002c5a4 b 0x2c514 |
| } while (1);
| label_4:
0x0002c5a8 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0002c5ac mov r0, r5 | r0 = r5;
0x0002c5b0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002c5b4 mov sl, r0 | sl = r0;
0x0002c5b8 mov fp, r1 |
0x0002c5bc b 0x2c530 | goto label_0;
| do {
0x0002c5c0 ldr r0, [r4] | r0 = *(r4);
0x0002c5c4 bl 0x5250 | strlen (r0);
0x0002c5c8 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0002c5cc add r0, r0, 2 | r0 += 2;
0x0002c5d0 add r8, r8, r0 | r8 += r0;
| label_5:
0x0002c5d4 cmp r4, 0 |
0x0002c5d8 bne 0x2c5c0 |
| } while (r4 != 0);
0x0002c5dc adds r2, sl, r8 | r2 = sl + r8;
0x0002c5e0 ldr r8, [pc, 0x5c] | r8 = *(0x2c640);
0x0002c5e4 ldr r5, [r5, 0x2c] | r5 = *((r5 + 0x2c));
0x0002c5e8 adc r3, fp, 0 | __asm ("adc r3, arg_0h");
0x0002c5ec mov r6, r2 | r6 = r2;
0x0002c5f0 mov r7, r3 | r7 = r3;
0x0002c5f4 add r8, pc, r8 | r8 = pc + r8;
| do {
0x0002c5f8 cmp r5, 0 |
| if (r5 == 0) {
0x0002c5fc bne 0x2c614 |
0x0002c600 adds r6, r6, r4 | r6 += r4;
0x0002c604 adc r7, r7, 0 | __asm ("adc r7, r7, 0");
0x0002c608 adds sl, r6, 2 | sl = r6 + 2;
0x0002c60c adc fp, r7, 0 | __asm ("adc fp, r7, 0");
0x0002c610 b 0x2c54c | goto label_1;
| }
0x0002c614 mov r2, 0xc | r2 = 0xc;
0x0002c618 mov r1, r8 | r1 = r8;
0x0002c61c mov r0, r5 | r0 = r5;
0x0002c620 bl 0x2b40c | r0 = match_header_isra_5 ();
0x0002c624 cmp r0, 0 |
| if (r0 == 0) {
0x0002c628 bne 0x2c63c |
0x0002c62c ldr r0, [r5] | r0 = *(r5);
0x0002c630 bl 0x5250 | strlen (r0);
0x0002c634 add r4, r4, 2 | r4 += 2;
0x0002c638 add r4, r4, r0 | r4 += r0;
| }
0x0002c63c ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x0002c640 b 0x2c5f8 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x270b0 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ntlm_core_mk_nt_hash () | void Curl_ntlm_core_mk_nt_hash (char * s) {
| int32_t var_4h;
| int32_t var_60h;
| r1 = s;
0x000270b0 push {r4, r5, r6, r7, r8, lr} |
0x000270b4 ldr r5, [pc, 0xe0] | r5 = *(0x27198);
0x000270b8 sub sp, sp, 0x60 |
0x000270bc mov r0, r1 | r0 = r1;
0x000270c0 mov r6, r1 | r6 = r1;
0x000270c4 mov r8, r2 | r8 = r2;
0x000270c8 bl 0x5250 | strlen (r0);
0x000270cc add r5, pc, r5 | r5 = pc + r5;
0x000270d0 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x000270d4 beq 0x27108 | goto label_2;
| }
0x000270d8 ldr r3, [pc, 0xc0] |
0x000270dc lsl r0, r7, 1 | r0 = r7 << 1;
0x000270e0 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000270e4 ldr r3, [r3] | r3 = $d;
0x000270e8 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000270ec subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000270f0 movne r3, 0 | r3 = 0;
| }
| if (r4 == r0) {
0x000270f4 movne r1, r3 | r1 = r3;
| }
| if (r4 != r0) {
0x000270f8 bne 0x2717c | goto label_3;
| }
| do {
0x000270fc mov r0, 0x1b | r0 = 0x1b;
| label_0:
0x00027100 add sp, sp, 0x60 |
0x00027104 pop {r4, r5, r6, r7, r8, pc} |
| label_2:
0x00027108 ldr r3, [pc, 0x94] |
0x0002710c ldr r0, [pc, 0x94] | r0 = *(0x271a4);
0x00027110 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00027114 add r0, pc, r0 | r0 = pc + r0;
0x00027118 ldr r3, [r3] | r3 = *(0x271a0);
0x0002711c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00027120 subs r4, r0, 0 | r4 = r0 - 0;
0x00027124 beq 0x270fc |
| } while (r4 == r0);
| label_1:
0x00027128 add r6, sp, 4 | r6 += var_4h;
0x0002712c mov r0, r6 | r0 = r6;
0x00027130 bl 0x4fc8 | MD4_Init ();
0x00027134 lsl r2, r7, 1 | r2 = r7 << 1;
0x00027138 mov r1, r4 | r1 = r4;
0x0002713c mov r0, r6 | r0 = r6;
0x00027140 bl 0x4e30 | MD4_Update ();
0x00027144 mov r1, r6 | r1 = r6;
0x00027148 mov r0, r8 | r0 = r8;
0x0002714c bl 0x5808 | MD4_Final ();
0x00027150 mov r2, 5 | r2 = 5;
0x00027154 mov r1, 0 | r1 = 0;
0x00027158 add r0, r8, 0x10 | r0 = r8 + 0x10;
0x0002715c bl 0x576c | memset (r0, r1, r2);
0x00027160 ldr r3, [pc, 0x44] |
0x00027164 mov r0, r4 | r0 = r4;
0x00027168 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0002716c ldr r3, [r3] | r3 = *(0x271a8);
0x00027170 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00027174 mov r0, 0 | r0 = 0;
0x00027178 b 0x27100 | goto label_0;
| do {
| label_3:
0x0002717c ldrb r2, [r6, r3] | r2 = *((r6 + r3));
0x00027180 strb r2, [r4, r3, lsl 1] | offset_0 = r3 << 1;
| *((r4 + offset_0)) = r2;
0x00027184 add r2, r4, r3, lsl 1 | r2 = r4 + (r3 << 1);
0x00027188 add r3, r3, 1 | r3++;
0x0002718c cmp r7, r3 |
0x00027190 strb r1, [r2, 1] | *((r2 + 1)) = r1;
0x00027194 bne 0x2717c |
| } while (r7 != r3);
0x00027198 b 0x27128 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x27218 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ntlm_core_mk_ntlmv2_hash () | void Curl_ntlm_core_mk_ntlmv2_hash (int32_t arg_38h, int32_t arg_3ch, char * arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00027218 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002721c ldr sb, [pc, 0xfc] | sb = *(0x2731c);
0x00027220 lsr fp, r3, 0x1f |
0x00027224 orrs fp, fp, r1, lsr 31 |
0x00027228 add sb, pc, sb | sb = pc + sb;
0x0002722c sub sp, sp, 0x14 |
0x00027230 beq 0x27244 |
| while (r8 < r1) {
| label_0:
0x00027234 mov r4, 0x1b | r4 = 0x1b;
| label_1:
0x00027238 mov r0, r4 | r0 = r4;
0x0002723c add sp, sp, 0x14 |
0x00027240 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00027244 adds r8, r1, r3 | r8 = r1 + r3;
0x00027248 bmi 0x27234 |
| }
0x0002724c mov r6, r3 | r6 = r3;
0x00027250 ldr r3, [pc, 0xcc] |
0x00027254 lsl r8, r8, 1 | r8 <<= 1;
0x00027258 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x0002725c mov r5, r0 | r5 = r0;
0x00027260 ldr r3, [r3] | r3 = $d;
0x00027264 mov r0, r8 | r0 = r8;
0x00027268 mov sl, r2 | sl = r2;
0x0002726c mov r4, r1 | r4 = r1;
0x00027270 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00027274 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x00027278 movne r3, r7 | r3 = r7;
| }
| if (r7 != r0) {
0x0002727c addne r2, r5, r4 | r2 = r5 + r4;
| goto label_3;
| }
| if (r7 == r0) {
| label_3:
0x00027280 beq 0x27234 | goto label_0;
| }
| do {
0x00027284 cmp r5, r2 |
0x00027288 add r3, r3, 2 | r3 += 2;
| if (r5 == r2) {
0x0002728c bne 0x272e4 |
0x00027290 mov r0, 0 | r0 = 0;
0x00027294 add r4, r7, r4, lsl 1 | r4 = r7 + (r4 << 1);
0x00027298 mov r3, r0 | r3 = r0;
| label_2:
0x0002729c cmp r6, r0 |
| if (r6 != r0) {
0x000272a0 bne 0x27308 | goto label_4;
| }
0x000272a4 mov r0, r8 | r0 = r8;
0x000272a8 bl 0x25340 | curlx_uztoui ();
0x000272ac ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000272b0 mov r2, r7 | r2 = r7;
0x000272b4 str r3, [sp] | *(sp) = r3;
0x000272b8 mov r1, 0x10 | r1 = 0x10;
0x000272bc mov r3, r0 | r3 = r0;
0x000272c0 ldr r0, [sp, 0x38] | r0 = *(arg_38h);
0x000272c4 bl 0x271b0 | Curl_hmac_md5 ();
0x000272c8 ldr r3, [pc, 0x58] |
0x000272cc ldr r3, [sb, r3] | r3 = *((sb + r3));
0x000272d0 ldr r3, [r3] | r3 = *(0x27324);
0x000272d4 mov r4, r0 | r4 = r0;
0x000272d8 mov r0, r7 | r0 = r7;
0x000272dc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000272e0 b 0x27238 | goto label_1;
| }
0x000272e4 ldrb r0, [r5], 1 | r0 = *(r5);
| r5++;
0x000272e8 str r2, [sp, 0xc] | var_ch = r2;
0x000272ec str r3, [sp, 8] | var_8h = r3;
0x000272f0 bl 0x19dac | Curl_raw_toupper ();
0x000272f4 ldr r3, [sp, 8] | r3 = var_8h;
0x000272f8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000272fc strb fp, [r3, -1] | *((r3 - 1)) = fp;
0x00027300 strb r0, [r3, -2] | *((r3 - 2)) = r0;
0x00027304 b 0x27284 |
| } while (1);
| label_4:
0x00027308 ldrb r2, [sl, r0] | r2 = *((sl + r0));
0x0002730c strb r2, [r4, r0, lsl 1] | offset_0 = r0 << 1;
| *((r4 + offset_0)) = r2;
0x00027310 add r2, r4, r0, lsl 1 | r2 = r4 + (r0 << 1);
0x00027314 strb r3, [r2, 1] | *((r2 + 1)) = r3;
0x00027318 add r0, r0, 1 | r0++;
0x0002731c b 0x2729c | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x31f60 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ossl_close_all () | void Curl_ossl_close_all (int32_t arg1) {
| r0 = arg1;
0x00031f60 push {r4, lr} |
0x00031f64 add r4, r0, 0x4000 | r4 = r0 + 0x4000;
0x00031f68 ldr r0, [r4, 0x8a8] | r0 = *((r4 + 0x8a8));
0x00031f6c cmp r0, 0 |
0x00031f70 popeq {r4, pc} |
0x00031f74 bl 0x5724 | ENGINE_finish ();
0x00031f78 ldr r0, [r4, 0x8a8] | r0 = *((r4 + 0x8a8));
0x00031f7c bl 0x573c | ENGINE_free ();
0x00031f80 mov r3, 0 | r3 = 0;
0x00031f84 str r3, [r4, 0x8a8] | *((r4 + 0x8a8)) = r3;
0x00031f88 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x330ac */
| #include <stdint.h>
|
; (fcn) sym.Curl_ossl_close () | void Curl_ossl_close (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000330ac push {r4, r5, r6, lr} |
0x000330b0 lsl r5, r1, 4 | r5 = r1 << 4;
0x000330b4 mov r4, r0 | r4 = r0;
0x000330b8 add r0, r0, r5 | r0 += r5;
0x000330bc add r0, r0, 0x1c8 | r0 += 0x1c8;
0x000330c0 bl 0x33048 | ossl_close_isra_1 ();
0x000330c4 add r0, r4, r5 | r0 = r4 + r5;
0x000330c8 add r0, r0, 0x1e8 | r0 += 0x1e8;
0x000330cc pop {r4, r5, r6, lr} |
0x000330d0 b 0x33048 | return void (*0x33048)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x32c94 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ossl_data_pending () | void Curl_ossl_data_pending (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00032c94 push {r4, lr} |
0x00032c98 add r4, r0, r1, lsl 4 | r4 = r0 + (r1 << 4);
0x00032c9c ldr r3, [r4, 0x1c8] | r3 = *((r4 + 0x1c8));
0x00032ca0 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032ca4 cmp r0, 0 |
0x00032ca8 bne 0x32ccc |
| while (r0 == 0) {
0x00032cac ldr r3, [r4, 0x1e8] | r3 = *((r4 + 0x1e8));
0x00032cb0 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032cb4 cmp r0, 0 |
0x00032cb8 popeq {r4, pc} |
0x00032cbc bl 0x594c | r0 = SSL_pending ();
0x00032cc0 adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x00032cc4 movne r0, 1 | r0 = 1;
| }
0x00032cc8 pop {r4, pc} |
0x00032ccc bl 0x594c | r0 = SSL_pending ();
0x00032cd0 cmp r0, 0 |
0x00032cd4 beq 0x32cac |
| }
0x00032cd8 mov r0, 1 | r0 = 1;
0x00032cdc pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x34cd0 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ossl_seed.part.4 () | void Curl_ossl_seed_part_4 (int32_t arg1) {
| void * s2;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| void * s1;
| int32_t var_12ch;
| r0 = arg1;
0x00034cd0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00034cd4 sub sp, sp, 0x12c |
0x00034cd8 mov fp, r0 |
0x00034cdc mov r7, sp | r7 = sp;
| label_0:
0x00034ce0 mov r4, 0 | r4 = 0;
0x00034ce4 add sl, sp, 0x20 | sl += var_20h;
| do {
0x00034ce8 mov r0, r7 | r0 = r7;
0x00034cec bl 0x69f0 | Curl_now ();
0x00034cf0 mov r0, 1 | r0 = 1;
0x00034cf4 bl 0x22dac | Curl_wait_ms ();
0x00034cf8 ldr r6, [sp] | r6 = *(sp);
0x00034cfc add r8, r4, 1 | r8 = r4 + 1;
0x00034d00 ldr r2, [sp, 4] | r2 = var_4h;
0x00034d04 mul r3, r8, r6 | r3 = r8 * r6;
0x00034d08 add r5, r4, 2 | r5 = r4 + 2;
0x00034d0c mov r6, r3 | r6 = r3;
0x00034d10 mul r3, r2, r5 | r3 = r2 * r5;
0x00034d14 mov r0, sl | r0 = sl;
0x00034d18 mov r5, r3 | r5 = r3;
0x00034d1c bl 0x69f0 | Curl_now ();
0x00034d20 add r0, sp, 0x18 | r0 += var_18h;
0x00034d24 ldr sb, [sp, 0x20] | sb = var_20h;
0x00034d28 bl 0x69f0 | Curl_now ();
0x00034d2c ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00034d30 add r0, sp, 0x10 | r0 += var_10h;
0x00034d34 add r3, sb, r1 | r3 = sb + r1;
0x00034d38 add r1, r4, 3 | r1 = r4 + 3;
0x00034d3c mul r2, r1, r3 | r2 = r1 * r3;
0x00034d40 eor r2, r6, r2, lsl 8 | r2 = r6 ^ (r2 << 8);
0x00034d44 str r2, [sp] | *(sp) = r2;
0x00034d48 bl 0x69f0 | Curl_now ();
0x00034d4c add r0, sp, 8 | r0 += var_8h;
0x00034d50 ldr r6, [sp, 0x10] | r6 = var_10h;
0x00034d54 bl 0x69f0 | Curl_now ();
0x00034d58 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00034d5c add r3, r4, 4 | r3 = r4 + 4;
0x00034d60 add r6, r6, r2 | r6 += r2;
0x00034d64 mul r4, r6, r3 | r4 = r6 * r3;
0x00034d68 mov r2, 8 | r2 = 8;
0x00034d6c eor r4, r5, r4, lsl 16 | r4 = r5 ^ (r4 << 16);
0x00034d70 mov r1, r7 | r1 = r7;
0x00034d74 add r0, sl, r8, lsl 3 | r0 = sl + (r8 << 3);
0x00034d78 str r4, [sp, 4] | var_4h = r4;
0x00034d7c bl 0x4f5c | memcpy (r0, r1, r2);
0x00034d80 cmp r8, 8 |
0x00034d84 add r5, sp, 0x28 | r5 += s1;
0x00034d88 mov r4, r8 | r4 = r8;
0x00034d8c bne 0x34ce8 |
| } while (r8 != 8);
0x00034d90 mov r2, 0 | r2 = 0;
0x00034d94 ldr r3, [pc, 0x7c] | r3 = *(0x34e14);
0x00034d98 mov r1, 0x40 | r1 = 0x40;
0x00034d9c mov r0, r5 | r0 = r5;
0x00034da0 bl 0x582c | RAND_add ();
0x00034da4 bl 0x5b14 | r0 = RAND_status ();
0x00034da8 cmp r0, 0 |
| if (r0 == 0) {
0x00034dac beq 0x34ce0 | goto label_0;
| }
0x00034db0 mov r3, 0 | r3 = 0;
0x00034db4 mov r1, 0x100 | r1 = 0x100;
0x00034db8 mov r0, r5 | r0 = r5;
0x00034dbc strb r3, [sp, 0x28] | s1 = r3;
0x00034dc0 bl 0x58a4 | RAND_file_name ();
0x00034dc4 ldrb r3, [sp, 0x28] | r3 = s1;
0x00034dc8 cmp r3, 0 |
0x00034dcc bne 0x34dfc |
| while (r0 == 0) {
0x00034dd0 ldr r1, [pc, 0x44] | r1 = *(0x34e18);
0x00034dd4 mov r0, fp | r0 = fp;
0x00034dd8 add r1, pc, r1 | r1 = pc + r1;
0x00034ddc bl 0x104cc | Curl_infof ();
0x00034de0 bl 0x5b14 | r0 = RAND_status ();
0x00034de4 cmp r0, 0 |
| if (r0 != 0) {
0x00034de8 moveq r0, 0x23 | r0 = 0x23;
| }
| if (r0 != 0) {
0x00034dec beq 0x34df4 |
| label_1:
0x00034df0 mov r0, 0 | r0 = 0;
| }
0x00034df4 add sp, sp, 0x12c |
0x00034df8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00034dfc mov r1, 0x400 | r1 = 0x400;
0x00034e00 mov r0, r5 | r0 = r5;
0x00034e04 bl 0x4ec0 | RAND_load_file ();
0x00034e08 bl 0x5b14 | r0 = RAND_status ();
0x00034e0c cmp r0, 0 |
0x00034e10 beq 0x34dd0 |
| }
0x00034e14 b 0x34df0 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x32154 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ossl_shutdown () | void Curl_ossl_shutdown (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_104h;
| r0 = arg1;
| r1 = arg2;
0x00032154 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00032158 ldr r6, [r0] | r6 = *(r0);
0x0003215c sub sp, sp, 0x104 |
0x00032160 ldr r3, [r6, 0x4e8] | r3 = *((r6 + 0x4e8));
0x00032164 mov r7, r0 | r7 = r0;
0x00032168 cmp r3, 2 |
0x0003216c mov r8, r1 | r8 = r1;
| if (r3 == 2) {
0x00032170 bne 0x32184 |
0x00032174 add r3, r0, r1, lsl 4 | r3 = r0 + (r1 << 4);
0x00032178 ldr r3, [r3, 0x1c8] | r3 = *((r3 + 0x1c8));
0x0003217c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032180 bl 0x5880 | SSL_shutdown ();
| }
0x00032184 add r5, r7, r8, lsl 4 | r5 = r7 + (r8 << 4);
0x00032188 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x0003218c ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00032190 cmp r4, 0 |
| if (r4 == 0) {
0x00032194 beq 0x321f0 | goto label_2;
| }
0x00032198 ldr sl, [pc, 0x148] | sl = *(0x322e4);
0x0003219c ldr sb, [pc, 0x148] | sb = "trpbrk";
0x000321a0 add r8, r8, 0x66 | r8 += 0x66;
0x000321a4 add sl, pc, sl | sl = pc + sl;
| do {
0x000321a8 mvn r2, 0 | r2 = ~0;
0x000321ac mov r3, sb | r3 = sb;
0x000321b0 mov r1, r2 | r1 = r2;
0x000321b4 ldr r0, [r7, r8, lsl 2] | offset_0 = r8 << 2;
| r0 = *((r7 + offset_0));
0x000321b8 bl 0x22ea8 | r0 = Curl_socket_check ();
0x000321bc subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 <= r0) {
0x000321c0 bgt 0x321fc |
| if (r4 != r0) {
0x000321c4 bne 0x322c8 | goto label_3;
| }
0x000321c8 ldr r1, [pc, 0x120] | r1 = "trpbrk";
0x000321cc mov r0, r6 | r0 = r6;
0x000321d0 add r1, pc, r1 | r1 = pc + r1;
0x000321d4 bl 0x10544 | Curl_failf ();
| label_0:
0x000321d8 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x000321dc ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000321e0 bl 0x56e8 | SSL_free ();
0x000321e4 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x000321e8 mov r2, 0 | r2 = 0;
0x000321ec str r2, [r3, 4] | *((r3 + 4)) = r2;
| label_2:
0x000321f0 mov r0, r4 | r0 = r4;
0x000321f4 add sp, sp, 0x104 |
0x000321f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000321fc bl 0x5028 | ERR_clear_error ();
0x00032200 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x00032204 mov r4, sp | r4 = sp;
0x00032208 mov r2, 0x100 | r2 = 0x100;
0x0003220c mov r1, r4 | r1 = r4;
0x00032210 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032214 bl 0x53f4 | SSL_read ();
0x00032218 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x0003221c mov r1, r0 | r1 = r0;
0x00032220 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032224 bl 0x5ba4 | r0 = SSL_get_error ();
0x00032228 mov fp, r0 |
0x0003222c cmp r0, 6 |
| if (r0 > 6) {
| /* switch table (7 cases) at 0x32238 */
0x00032230 addls pc, pc, r0, lsl 2 | pc += (r0 << 2);
| }
0x00032234 b 0x3227c | goto label_4;
0x00032238 b 0x32274 | goto label_5;
0x0003223c b 0x3227c | goto label_4;
0x00032240 b 0x32254 | goto label_6;
0x00032244 b 0x32264 | goto label_7;
0x00032248 b 0x3227c | goto label_4;
0x0003224c b 0x3227c | goto label_4;
0x00032250 b 0x32274 | goto label_5;
| label_6:
0x00032254 mov r1, sl | r1 = sl;
0x00032258 mov r0, r6 | r0 = r6;
0x0003225c bl 0x104cc | Curl_infof ();
0x00032260 b 0x321a8 |
| } while (1);
| label_7:
0x00032264 ldr r1, [pc, 0x88] | r1 = *(0x322f0);
0x00032268 mov r0, r6 | r0 = r6;
0x0003226c add r1, pc, r1 | r1 = pc + r1;
0x00032270 bl 0x104cc | Curl_infof ();
| do {
| label_5:
0x00032274 mov r4, 0 | r4 = 0;
0x00032278 b 0x321d8 | goto label_0;
| label_4:
0x0003227c bl 0x4e9c | ERR_get_error ();
0x00032280 ldr r6, [r7] | r6 = *(r7);
0x00032284 cmp r0, 0 |
| if (r0 == 0) {
0x00032288 beq 0x322b8 | goto label_8;
| }
0x0003228c mov r2, 0x100 | r2 = 0x100;
0x00032290 mov r1, r4 | r1 = r4;
0x00032294 bl 0x5064 | ERR_error_string_n ();
| label_1:
0x00032298 bl 0x4eb4 | errno_location ();
0x0003229c ldr r1, [pc, 0x54] | r1 = *(0x322f4);
0x000322a0 mov r2, r4 | r2 = r4;
0x000322a4 add r1, pc, r1 | r1 = pc + r1;
0x000322a8 ldr r3, [r0] | r3 = *(r0);
0x000322ac mov r0, r6 | r0 = r6;
0x000322b0 bl 0x10544 | Curl_failf ();
0x000322b4 b 0x32274 |
| } while (1);
| label_8:
0x000322b8 mov r0, fp | r0 = fp;
0x000322bc bl 0x31d0c | r0 = SSL_ERROR_to_str ();
0x000322c0 mov r4, r0 | r4 = r0;
0x000322c4 b 0x32298 | goto label_1;
| label_3:
0x000322c8 bl 0x4eb4 | errno_location ();
0x000322cc ldr r1, [pc, 0x28] | r1 = *(0x322f8);
0x000322d0 mvn r4, 0 | r4 = ~0;
0x000322d4 add r1, pc, r1 | r1 = pc + r1;
0x000322d8 ldr r2, [r0] | r2 = *(r0);
0x000322dc mov r0, r6 | r0 = r6;
0x000322e0 bl 0x10544 | Curl_failf ();
0x000322e4 b 0x321d8 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x21568 */
| #include <stdint.h>
|
; (fcn) sym.Curl_output_digest () | void Curl_output_digest (int32_t arg_0h, int32_t arg1, size_t nmeb) {
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| size_t var_20h;
| int32_t var_24h;
| int32_t var_2ch;
| r0 = arg1;
| r1 = nmeb;
0x00021568 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002156c ldr fp, [pc, 0x198] | fp = *(0x21708);
0x00021570 mov r6, r3 | r6 = r3;
0x00021574 ldr r3, [r0] | r3 = *(r0);
0x00021578 sub sp, sp, 0x2c |
0x0002157c str r2, [sp, 0x1c] | var_1ch = r2;
0x00021580 ldr r2, [pc, 0x188] | r2 = $d;
0x00021584 str r3, [sp, 0x14] | var_14h = r3;
0x00021588 subs r3, r1, 0 | r3 = r1 - 0;
0x0002158c str r3, [sp, 0x18] | var_18h = r3;
0x00021590 add fp, pc, fp |
0x00021594 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00021598 ldr sb, [fp, r2] | sb = *(0x21708);
| if (r3 == r1) {
0x0002159c ldrne r7, [r0, 0xf4] | r7 = *((r0 + 0xf4));
| }
| if (r3 != r1) {
0x000215a0 ldreq r7, [r0, 0x170] | r7 = *((r0 + 0x170));
| }
0x000215a4 add r4, r3, 0x4800 | r4 = r3 + 0x4800;
| if (r3 == r1) {
0x000215a8 addne r5, r0, 0x298 | r5 = r0 + 0x298;
| }
| if (r3 != r1) {
0x000215ac addeq r5, r0, 0x2a4 | r5 = r0 + 0x2a4;
| }
| if (r3 == r1) {
0x000215b0 ldrne r8, [r0, 0xf8] | r8 = *((r0 + 0xf8));
| }
| if (r3 != r1) {
0x000215b4 ldreq r8, [r0, 0x174] | r8 = *((r0 + 0x174));
| }
| if (r3 == r1) {
0x000215b8 ldrne r0, [r0, 0x298] | r0 = *((r0 + 0x298));
| }
| if (r3 != r1) {
0x000215bc ldreq r0, [r0, 0x2a4] | r0 = *((r0 + 0x2a4));
| }
0x000215c0 ldr r2, [sb] | r2 = *(0x21708);
| if (r3 == r1) {
0x000215c4 addne sl, r4, 0x58 | sl = r4 + 0x58;
| }
| if (r3 != r1) {
0x000215c8 addeq sl, r4, 0x30 | sl = r4 + 0x30;
| }
| if (r3 == r1) {
0x000215cc addne r4, r4, 0x90 | r4 += 0x90;
| }
| if (r3 != r1) {
0x000215d0 addeq r4, r4, 0x80 | r4 += 0x80;
| }
0x000215d4 blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r2, r3);
0x000215d8 mov r2, 0 | r2 = 0;
0x000215dc cmp r7, r2 |
0x000215e0 str r2, [r5] | *(r5) = r2;
| if (r7 != r2) {
0x000215e4 ldreq r7, [pc, 0x128] | r7 = *((pc + 0x128));
| }
| if (r7 != r2) {
0x000215e8 addeq r7, pc, r7 | r7 = pc + r7;
| }
0x000215ec cmp r8, 0 |
| if (r8 != 0) {
0x000215f0 ldreq r8, [pc, 0x120] | r8 = *((pc + 0x120));
| }
| if (r8 != 0) {
0x000215f4 addeq r8, pc, r8 | r8 = pc + r8;
| }
0x000215f8 ldr r2, [sl] | r2 = *(sl);
0x000215fc cmp r2, 0 |
| if (r2 != 0) {
0x00021600 strbeq r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
| }
| if (r2 != 0) {
0x00021604 moveq r7, r2 | r7 = r2;
| }
| if (r2 == 0) {
0x00021608 beq 0x21650 | goto label_0;
| }
0x0002160c ldrb r2, [r4, 0xe] | r2 = *((r4 + 0xe));
0x00021610 cmp r2, 0 |
| if (r2 == 0) {
0x00021614 beq 0x2165c | goto label_3;
| }
0x00021618 mov r1, 0x3f | r1 = 0x3f;
0x0002161c mov r0, r6 | r0 = r6;
0x00021620 bl 0x5b38 | r0 = strchr (r0, r1);
0x00021624 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x00021628 beq 0x2165c | goto label_3;
| }
0x0002162c ldr r0, [pc, 0xe8] | r0 = *(0x21718);
0x00021630 mov r2, r6 | r2 = r6;
0x00021634 sub r1, r1, r6 | r1 -= r6;
0x00021638 add r0, pc, r0 | r0 = pc + r0;
0x0002163c bl 0x5b80 | r0 = fcn_00005b80 ();
| do {
0x00021640 cmp r0, 0 |
0x00021644 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00021648 bne 0x21674 | goto label_4;
| }
| label_1:
0x0002164c mov r7, 0x1b | r7 = 0x1b;
| label_0:
0x00021650 mov r0, r7 | r0 = r7;
0x00021654 add sp, sp, 0x2c |
0x00021658 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x0002165c ldr r2, [pc, 0xbc] | r2 = *(0x2171c);
0x00021660 mov r0, r6 | r0 = r6;
0x00021664 ldr r3, [fp, r2] | r3 = *((fp + r2));
0x00021668 ldr r3, [r3] | r3 = *(r3);
0x0002166c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00021670 b 0x21640 |
| } while (1);
| label_4:
0x00021674 add r3, sp, 0x24 | r3 += var_24h;
0x00021678 str r3, [sp, 0xc] | var_ch = r3;
0x0002167c add r3, sp, 0x20 | r3 += var_20h;
0x00021680 mov r1, r7 | r1 = r7;
0x00021684 str r3, [sp, 8] | var_8h = r3;
0x00021688 mov r2, r8 | r2 = r8;
0x0002168c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00021690 stm sp, {r6, sl} | *(sp) = r6;
| *((sp + 4)) = sl;
0x00021694 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00021698 bl 0x30ca8 | Curl_auth_create_digest_http_message ();
0x0002169c ldr r3, [sb] | r3 = *(sb);
0x000216a0 mov r7, r0 | r7 = r0;
0x000216a4 mov r0, r6 | r0 = r6;
0x000216a8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000216ac cmp r7, 0 |
| if (r7 != 0) {
0x000216b0 bne 0x21650 | goto label_0;
| }
0x000216b4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000216b8 cmp r3, 0 |
| if (r3 != 0) {
0x000216bc bne 0x21700 | goto label_5;
| }
0x000216c0 ldr r1, [pc, 0x5c] | r1 = *(0x21720);
0x000216c4 add r1, pc, r1 | r1 = pc + r1;
| label_2:
0x000216c8 ldr r0, [pc, 0x58] | r0 = *(0x21724);
0x000216cc ldr r2, [sp, 0x20] | r2 = var_20h;
0x000216d0 add r0, pc, r0 | r0 = pc + r0;
0x000216d4 bl 0x5b80 | fcn_00005b80 ();
0x000216d8 ldr r3, [sb] | r3 = *(sb);
0x000216dc str r0, [r5] | *(r5) = r0;
0x000216e0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000216e4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000216e8 ldr r3, [r5] | r3 = *(r5);
0x000216ec cmp r3, 0 |
| if (r3 == 0) {
0x000216f0 beq 0x2164c | goto label_1;
| }
0x000216f4 mov r3, 1 | r3 = 1;
0x000216f8 strb r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000216fc b 0x21650 | goto label_0;
| label_5:
0x00021700 ldr r1, [pc, 0x24] | r1 = *(0x21728);
0x00021704 add r1, pc, r1 | r1 = pc + r1;
0x00021708 b 0x216c8 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x26b74 */
| #include <stdint.h>
|
; (fcn) sym.Curl_output_ntlm () | void Curl_output_ntlm (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| size_t nmeb;
| int32_t var_14h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00026b74 push {r4, r5, r6, r7, r8, sb, lr} |
0x00026b78 ldr r8, [pc, 0x208] | r8 = *(0x26d84);
0x00026b7c mov r4, r0 | r4 = r0;
0x00026b80 ldr r0, [r0] | r0 = *(r0);
0x00026b84 sub sp, sp, 0x1c |
0x00026b88 mov r3, 0 | r3 = 0;
0x00026b8c subs sb, r1, 0 | sb = r1 - 0;
0x00026b90 add r8, pc, r8 | r8 = pc + r8;
0x00026b94 str r3, [sp, 0x10] | nmeb = r3;
0x00026b98 str r3, [sp, 0x14] | var_14h = r3;
0x00026b9c add r7, r0, 0x4800 | r7 = r0 + 0x4800;
| if (sb == r1) {
0x00026ba0 beq 0x26c90 | goto label_5;
| }
0x00026ba4 ldr r3, [r0, 0x5d8] | r3 = *((r0 + 0x5d8));
0x00026ba8 add r5, r4, 0x298 | r5 = r4 + 0x298;
0x00026bac cmp r3, 0 |
0x00026bb0 ldr r1, [r4, 0xf4] | r1 = *((r4 + 0xf4));
0x00026bb4 ldr r2, [r4, 0xf8] | r2 = *((r4 + 0xf8));
| if (r3 != 0) {
0x00026bb8 ldreq r3, [pc, 0x1cc] | r3 = *((pc + 0x1cc));
| }
| if (r3 != 0) {
0x00026bbc addeq r3, pc, r3 | r3 = pc + r3;
| }
0x00026bc0 ldr r6, [r4, 0xe4] | r6 = *((r4 + 0xe4));
0x00026bc4 add r7, r7, 0x90 | r7 += 0x90;
0x00026bc8 add r4, r4, 0x310 | r4 += 0x310;
| do {
0x00026bcc mov ip, 0 |
0x00026bd0 cmp r1, ip |
0x00026bd4 strb ip, [r7, 0xc] | *((r7 + 0xc)) = ip;
| if (r1 != ip) {
0x00026bd8 ldreq r1, [pc, 0x1b0] | r1 = *((pc + 0x1b0));
| }
| if (r1 != ip) {
0x00026bdc addeq r1, pc, r1 | r1 = pc + r1;
| }
0x00026be0 cmp r2, 0 |
| if (r2 != 0) {
0x00026be4 ldreq r2, [pc, 0x1a8] | r2 = *((pc + 0x1a8));
| }
| if (r2 != 0) {
0x00026be8 addeq r2, pc, r2 | r2 = pc + r2;
| }
0x00026bec ldr ip, [r4] | ip = *(r4);
0x00026bf0 cmp ip, 3 |
| if (ip == 3) {
0x00026bf4 beq 0x26d60 | goto label_6;
| }
0x00026bf8 cmp ip, 4 |
| if (ip == 4) {
0x00026bfc beq 0x26d68 | goto label_7;
| }
0x00026c00 cmp ip, 2 |
0x00026c04 add lr, sp, 0x14 | lr += var_14h;
0x00026c08 add ip, sp, 0x10 |
| if (ip == 2) {
0x00026c0c beq 0x26cd0 | goto label_8;
| }
0x00026c10 str r6, [sp] | *(sp) = r6;
0x00026c14 stmib sp, {r4, ip, lr} | __asm ("stmib sp, {r4, ip, lr}");
0x00026c18 bl 0x31540 | r0 = Curl_auth_create_ntlm_type1_message ();
0x00026c1c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00026c20 bne 0x26c84 |
0x00026c24 ldr r3, [sp, 0x10] | r3 = nmeb;
0x00026c28 cmp r3, 0 |
| if (r3 == 0) {
0x00026c2c beq 0x26cc8 | goto label_2;
| }
0x00026c30 ldr r3, [pc, 0x160] | r3 = *(0x26d94);
0x00026c34 ldr r0, [r5] | r0 = *(r5);
0x00026c38 ldr r4, [r8, r3] | r4 = *((r8 + r3));
0x00026c3c ldr r3, [r4] | r3 = *(r4);
0x00026c40 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00026c44 cmp sb, 0 |
| if (sb == 0) {
0x00026c48 beq 0x26cbc | goto label_9;
| }
0x00026c4c ldr r1, [pc, 0x148] | r1 = *(0x26d98);
0x00026c50 add r1, pc, r1 | r1 = pc + r1;
| label_0:
0x00026c54 ldr r0, [pc, 0x144] | r0 = *(0x26d9c);
0x00026c58 ldr r2, [sp, 0x10] | r2 = nmeb;
0x00026c5c add r0, pc, r0 | r0 = pc + r0;
0x00026c60 bl 0x5b80 | fcn_00005b80 ();
0x00026c64 ldr r3, [r4] | r3 = *(r4);
0x00026c68 str r0, [r5] | *(r5) = r0;
0x00026c6c ldr r0, [sp, 0x10] | r0 = nmeb;
0x00026c70 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00026c74 ldr r3, [r5] | r3 = *(r5);
0x00026c78 cmp r3, 0 |
| if (r3 != 0) {
0x00026c7c bne 0x26cc8 | goto label_2;
| }
| label_3:
0x00026c80 mov r6, 0x1b | r6 = 0x1b;
| }
| label_1:
0x00026c84 mov r0, r6 | r0 = r6;
0x00026c88 add sp, sp, 0x1c |
0x00026c8c pop {r4, r5, r6, r7, r8, sb, pc} |
| label_5:
0x00026c90 ldr r3, [r0, 0x5dc] | r3 = *((r0 + 0x5dc));
0x00026c94 add r5, r4, 0x2a4 | r5 = r4 + 0x2a4;
0x00026c98 cmp r3, 0 |
0x00026c9c ldr r1, [r4, 0x170] | r1 = *((r4 + 0x170));
0x00026ca0 ldr r2, [r4, 0x174] | r2 = *((r4 + 0x174));
| if (r3 != 0) {
0x00026ca4 ldreq r3, [pc, 0xf8] | r3 = *((pc + 0xf8));
| }
| if (r3 != 0) {
0x00026ca8 addeq r3, pc, r3 | r3 = pc + r3;
| }
0x00026cac ldr r6, [r4, 0xa0] | r6 = *((r4 + 0xa0));
0x00026cb0 add r7, r7, 0x80 | r7 += 0x80;
0x00026cb4 add r4, r4, 0x2f8 | r4 += 0x2f8;
0x00026cb8 b 0x26bcc |
| } while (1);
| label_9:
0x00026cbc ldr r1, [pc, 0xe4] | r1 = *(0x26da4);
0x00026cc0 add r1, pc, r1 | r1 = pc + r1;
0x00026cc4 b 0x26c54 | goto label_0;
| label_2:
0x00026cc8 mov r6, 0 | r6 = 0;
0x00026ccc b 0x26c84 | goto label_1;
| label_8:
0x00026cd0 stm sp, {ip, lr} | *(sp) = ip;
| *((sp + 4)) = lr;
0x00026cd4 mov r3, r4 | r3 = r4;
0x00026cd8 bl 0x3161c | r0 = Curl_auth_create_ntlm_type3_message ();
0x00026cdc subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00026ce0 bne 0x26c84 | goto label_1;
| }
0x00026ce4 ldr r3, [sp, 0x10] | r3 = nmeb;
0x00026ce8 cmp r3, 0 |
| if (r3 == 0) {
0x00026cec beq 0x26cc8 | goto label_2;
| }
0x00026cf0 ldr r3, [pc, 0xa0] | r3 = *(0x26d94);
0x00026cf4 ldr r0, [r5] | r0 = *(r5);
0x00026cf8 ldr r8, [r8, r3] | r8 = *((r8 + r3));
0x00026cfc ldr r3, [r8] | r3 = *(r8);
0x00026d00 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00026d04 cmp sb, 0 |
| if (sb == 0) {
0x00026d08 beq 0x26d54 | goto label_10;
| }
0x00026d0c ldr r1, [pc, 0x98] | r1 = *(0x26da8);
0x00026d10 add r1, pc, r1 | r1 = pc + r1;
| label_4:
0x00026d14 ldr r0, [pc, 0x94] | r0 = *(0x26dac);
0x00026d18 ldr r2, [sp, 0x10] | r2 = nmeb;
0x00026d1c add r0, pc, r0 | r0 = pc + r0;
0x00026d20 bl 0x5b80 | fcn_00005b80 ();
0x00026d24 ldr r3, [r8] | r3 = *(r8);
0x00026d28 str r0, [r5] | *(r5) = r0;
0x00026d2c ldr r0, [sp, 0x10] | r0 = nmeb;
0x00026d30 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00026d34 ldr r3, [r5] | r3 = *(r5);
0x00026d38 cmp r3, 0 |
| if (r3 == 0) {
0x00026d3c movne r3, 3 | r3 = 3;
| }
| if (r3 != 0) {
0x00026d40 strne r3, [r4] | *(r4) = r3;
| goto label_11;
| }
| if (r3 == 0) {
| label_11:
0x00026d44 beq 0x26c80 | goto label_3;
| }
| do {
0x00026d48 mov r3, 1 | r3 = 1;
0x00026d4c strb r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x00026d50 b 0x26c84 | goto label_1;
| label_10:
0x00026d54 ldr r1, [pc, 0x58] | r1 = *(0x26db0);
0x00026d58 add r1, pc, r1 | r1 = pc + r1;
0x00026d5c b 0x26d14 | goto label_4;
| label_6:
0x00026d60 mov r3, 4 | r3 = 4;
0x00026d64 str r3, [r4] | *(r4) = r3;
| label_7:
0x00026d68 ldr r3, [pc, 0x28] |
0x00026d6c ldr r0, [r5] | r0 = *(r5);
0x00026d70 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00026d74 mov r6, 0 | r6 = 0;
0x00026d78 ldr r3, [r3] | r3 = *(0x26d94);
0x00026d7c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00026d80 str r6, [r5] | *(r5) = r6;
0x00026d84 b 0x26d48 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x11ab8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_parse_login_details () | void Curl_parse_login_details (int32_t arg_38h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00011ab8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00011abc ldr fp, [pc, 0x340] | fp = "lds_axceta_johnson_smv_cloud_build_build_at91_curl_prefix_src_curl_lib_vtls_openssl.c";
0x00011ac0 sub sp, sp, 0x14 |
0x00011ac4 cmp r3, 0 |
0x00011ac8 add fp, pc, fp |
0x00011acc mov sl, r0 | sl = r0;
0x00011ad0 mov sb, r1 | sb = r1;
0x00011ad4 str r2, [sp, 8] | var_8h = r2;
0x00011ad8 str r3, [sp, 0xc] | var_ch = r3;
| if (r3 == 0) {
0x00011adc beq 0x11d78 | goto label_7;
| }
0x00011ae0 mov r1, 0x3a | r1 = 0x3a;
0x00011ae4 bl 0x5b38 | strchr (r0, r1);
0x00011ae8 add r3, sl, sb | r3 = sl + sb;
0x00011aec cmp r0, r3 |
0x00011af0 mov r4, r0 | r4 = r0;
| if (r0 >= r3) {
0x00011af4 bhs 0x11d78 | goto label_7;
| }
0x00011af8 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00011afc cmp r3, 0 |
| if (r3 != 0) {
0x00011b00 bne 0x11d94 | goto label_8;
| }
| label_2:
0x00011b04 cmp r4, 0 |
| if (r4 == 0) {
0x00011b08 movne r5, 0 | r5 = 0;
| }
| if (r4 != 0) {
0x00011b0c bne 0x11dc8 | goto label_9;
| }
0x00011b10 mov r5, r4 | r5 = r4;
| do {
0x00011b14 mov r6, r4 | r6 = r4;
0x00011b18 b 0x11dfc | goto label_10;
| label_3:
0x00011b1c cmp r0, 0 |
0x00011b20 beq 0x11b14 |
| } while (r0 == 0);
0x00011b24 mov r5, 0 | r5 = 0;
0x00011b28 sub r2, r0, sl | r2 = r0 - sl;
0x00011b2c mov r4, r0 | r4 = r0;
0x00011b30 mov r6, r5 | r6 = r5;
| do {
0x00011b34 add r7, sl, sb | r7 = sl + sb;
0x00011b38 sub r7, r7, r4 | r7 -= r4;
0x00011b3c b 0x11b58 | goto label_11;
| label_4:
0x00011b40 sub r3, r4, r5 | r3 = r4 - r5;
0x00011b44 sub r6, r3, 1 | r6 = r3 - 1;
| label_5:
0x00011b48 cmp r5, 0 |
0x00011b4c cmpne r5, r4 | __asm ("cmpne r5, r4");
| if (r5 <= 0) {
0x00011b50 subhi r7, r5, r4 | r7 = r5 - r4;
| }
0x00011b54 bls 0x11b34 |
| } while (r5 < 0);
| label_11:
0x00011b58 sub r7, r7, 1 | r7--;
0x00011b5c mov sb, r2 | sb = r2;
| label_6:
0x00011b60 ldr r3, [sp, 8] | r3 = var_8h;
0x00011b64 adds r8, sb, 0 | r8 = sb + 0;
| if (r8 == sb) {
0x00011b68 movne r8, 1 | r8 = 1;
| }
0x00011b6c cmp r3, 0 |
| if (r3 != 0) {
0x00011b70 moveq r8, 0 | r8 = 0;
| }
0x00011b74 cmp r8, 0 |
| if (r8 != 0) {
0x00011b78 moveq r0, r8 | r0 = r8;
| }
| if (r8 != 0) {
0x00011b7c beq 0x11ba4 |
0x00011b80 ldr r2, [pc, 0x280] |
0x00011b84 add r0, sb, 1 | r0 = sb + 1;
0x00011b88 ldr r2, [fp, r2] | r2 = *((fp + r2));
0x00011b8c ldr r2, [r2] | r2 = "lds_axceta_johnson_smv_cloud_build_build_at91_curl_prefix_src_curl_lib_vtls_openssl.c";
0x00011b90 blx r2 | r0 = uint32_t (*r2)(uint32_t, char*) (r0, "lds_axceta_johnson_smv_cloud_build_build_at91_curl_prefix_src_curl_lib_vtls_openssl.c");
0x00011b94 cmp r0, 0 |
0x00011b98 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00011b9c moveq r0, 0x1b | r0 = 0x1b;
| }
| if (r0 != 0) {
0x00011ba0 movne r0, 0 | r0 = 0;
| goto label_12;
| }
| }
| label_12:
0x00011ba4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00011ba8 adds r2, r3, 0 | r2 = r3 + 0;
| if (r2 == r3) {
0x00011bac movne r2, 1 | r2 = 1;
| }
0x00011bb0 cmp r0, 0 |
| if (r0 == 0) {
0x00011bb4 movne r2, 0 | r2 = 0;
| }
0x00011bb8 cmp r2, 0 |
| if (r2 != 0) {
0x00011bbc streq r2, [sp] | *(sp) = r2;
| }
| if (r2 == 0) {
0x00011bc0 beq 0x11c04 | goto label_13;
| }
0x00011bc4 cmp r6, 0 |
| if (r6 == 0) {
0x00011bc8 beq 0x11c74 | goto label_14;
| }
0x00011bcc ldr r2, [pc, 0x234] |
0x00011bd0 add r0, r6, 1 | r0 = r6 + 1;
0x00011bd4 ldr r2, [fp, r2] | r2 = *((fp + r2));
0x00011bd8 ldr r2, [r2] | r2 = "lds_axceta_johnson_smv_cloud_build_build_at91_curl_prefix_src_curl_lib_vtls_openssl.c";
0x00011bdc blx r2 | r0 = uint32_t (*r2)(uint32_t, char*) (r0, "lds_axceta_johnson_smv_cloud_build_build_at91_curl_prefix_src_curl_lib_vtls_openssl.c");
0x00011be0 subs r3, r0, 0 | r3 = r0 - 0;
0x00011be4 str r3, [sp] | *(sp) = r3;
| if (r3 != r0) {
0x00011be8 bne 0x11c78 | goto label_15;
| }
0x00011bec ldr r2, [pc, 0x218] |
0x00011bf0 mov r0, r8 | r0 = r8;
0x00011bf4 ldr r2, [fp, r2] | r2 = *((fp + r2));
0x00011bf8 ldr r2, [r2] | r2 = *(0x11e08);
0x00011bfc blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
0x00011c00 mov r0, 0x1b | r0 = 0x1b;
| do {
| label_13:
0x00011c04 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00011c08 adds r2, r3, 0 | r2 = r3 + 0;
| if (r2 == r3) {
0x00011c0c movne r2, 1 | r2 = 1;
| }
0x00011c10 cmp r0, 0 |
| if (r0 == 0) {
0x00011c14 movne r2, 0 | r2 = 0;
| }
0x00011c18 cmp r2, 0 |
| if (r2 == 0) {
0x00011c1c beq 0x11c80 | goto label_16;
| }
0x00011c20 cmp r7, 0 |
| if (r7 == 0) {
0x00011c24 beq 0x11d70 | goto label_17;
| }
0x00011c28 ldr r2, [pc, 0x1d8] |
0x00011c2c add r0, r7, 1 | r0 = r7 + 1;
0x00011c30 ldr r2, [fp, r2] | r2 = *((fp + r2));
0x00011c34 ldr r2, [r2] | r2 = "lds_axceta_johnson_smv_cloud_build_build_at91_curl_prefix_src_curl_lib_vtls_openssl.c";
0x00011c38 blx r2 | r0 = uint32_t (*r2)(uint32_t, char*) (r0, "lds_axceta_johnson_smv_cloud_build_build_at91_curl_prefix_src_curl_lib_vtls_openssl.c");
0x00011c3c subs r3, r0, 0 | r3 = r0 - 0;
0x00011c40 str r3, [sp, 4] | var_4h = r3;
| if (r3 != r0) {
0x00011c44 bne 0x11c8c | goto label_1;
| }
0x00011c48 ldr r3, [pc, 0x1bc] | r3 = *(0x11e08);
0x00011c4c ldr r0, [sp] | r0 = *(sp);
0x00011c50 ldr r4, [fp, r3] | r4 = *((fp + r3));
0x00011c54 ldr r3, [r4] | r3 = *(r4);
0x00011c58 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00011c5c mov r0, r8 | r0 = r8;
0x00011c60 ldr r3, [r4] | r3 = *(r4);
0x00011c64 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00011c68 mov r0, 0x1b | r0 = 0x1b;
| label_0:
0x00011c6c add sp, sp, 0x14 |
0x00011c70 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x00011c74 str r6, [sp] | *(sp) = r6;
| label_15:
0x00011c78 mov r0, 0 | r0 = 0;
0x00011c7c b 0x11c04 |
| } while (1);
| label_16:
0x00011c80 cmp r0, 0 |
| if (r0 == 0) {
0x00011c84 streq r0, [sp, 4] | var_4h = r0;
| goto label_18;
| }
| if (r0 != 0) {
| label_18:
0x00011c88 bne 0x11c6c | goto label_0;
| }
| label_1:
0x00011c8c cmp r8, 0 |
| if (r8 != 0) {
0x00011c90 beq 0x11ccc |
0x00011c94 mov r2, sb | r2 = sb;
0x00011c98 mov r1, sl | r1 = sl;
0x00011c9c mov r0, r8 | r0 = r8;
0x00011ca0 bl 0x4f5c | memcpy (r0, r1, r2);
0x00011ca4 mov r2, 0 | r2 = 0;
0x00011ca8 strb r2, [r8, sb] | *((r8 + sb)) = r2;
0x00011cac ldr r2, [pc, 0x158] |
0x00011cb0 ldr r3, [sp, 8] | r3 = var_8h;
0x00011cb4 ldr r2, [fp, r2] | r2 = *((fp + r2));
0x00011cb8 ldr r0, [r3] | r0 = *(r3);
0x00011cbc ldr r2, [r2] | r2 = *(0x11e08);
0x00011cc0 blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00011cc4 ldr r3, [sp, 8] | r3 = var_8h;
0x00011cc8 str r8, [r3] | *(r3) = r8;
| }
0x00011ccc ldr r3, [sp] | r3 = *(sp);
0x00011cd0 cmp r3, 0 |
| if (r3 != 0) {
0x00011cd4 beq 0x11d18 |
0x00011cd8 mov r2, r6 | r2 = r6;
0x00011cdc add r1, r5, 1 | r1 = r5 + 1;
0x00011ce0 mov r0, r3 | r0 = r3;
0x00011ce4 bl 0x4f5c | memcpy (r0, r1, r2);
0x00011ce8 ldr r3, [sp] | r3 = *(sp);
0x00011cec mov r2, 0 | r2 = 0;
0x00011cf0 strb r2, [r3, r6] | *((r3 + r6)) = r2;
0x00011cf4 ldr r3, [pc, 0x110] |
0x00011cf8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00011cfc ldr r3, [fp, r3] | r3 = *((fp + r3));
0x00011d00 ldr r0, [r2] | r0 = *(r2);
0x00011d04 ldr r3, [r3] | r3 = *(0x11e08);
0x00011d08 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00011d0c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00011d10 ldr r2, [sp] | r2 = *(sp);
0x00011d14 str r2, [r3] | *(r3) = r2;
| }
0x00011d18 ldr r3, [sp, 4] | r3 = var_4h;
0x00011d1c cmp r3, 0 |
| if (r3 == 0) {
0x00011d20 ldreq r0, [sp, 4] | r0 = var_4h;
| goto label_19;
| }
| if (r3 == 0) {
| label_19:
0x00011d24 beq 0x11c6c | goto label_0;
| }
0x00011d28 add r1, r4, 1 | r1 = r4 + 1;
0x00011d2c mov r2, r7 | r2 = r7;
0x00011d30 mov r0, r3 | r0 = r3;
0x00011d34 bl 0x4f5c | memcpy (r0, r1, r2);
0x00011d38 ldr r3, [sp, 4] | r3 = var_4h;
0x00011d3c mov r4, 0 | r4 = 0;
0x00011d40 strb r4, [r3, r7] | *((r3 + r7)) = r4;
0x00011d44 ldr r3, [pc, 0xc0] |
0x00011d48 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x00011d4c ldr r3, [fp, r3] | r3 = *((fp + r3));
0x00011d50 ldr r0, [r2] | r0 = *(r2);
0x00011d54 ldr r3, [r3] | r3 = *(0x11e08);
0x00011d58 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00011d5c ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00011d60 ldr r2, [sp, 4] | r2 = var_4h;
0x00011d64 mov r0, r4 | r0 = r4;
0x00011d68 str r2, [r3] | *(r3) = r2;
0x00011d6c b 0x11c6c | goto label_0;
| label_17:
0x00011d70 str r7, [sp, 4] | var_4h = r7;
0x00011d74 b 0x11c8c | goto label_1;
| label_7:
0x00011d78 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00011d7c cmp r3, 0 |
| if (r3 != 0) {
0x00011d80 moveq r5, r3 | r5 = r3;
| }
| if (r3 != 0) {
0x00011d84 moveq r6, r5 | r6 = r5;
| }
| if (r3 != 0) {
0x00011d88 moveq r4, r6 | r4 = r6;
| }
| if (r3 == 0) {
0x00011d8c beq 0x11dfc | goto label_10;
| }
0x00011d90 mov r4, 0 | r4 = 0;
| label_8:
0x00011d94 mov r1, 0x3b | r1 = 0x3b;
0x00011d98 mov r0, sl | r0 = sl;
0x00011d9c bl 0x5b38 | strchr (r0, r1);
0x00011da0 add r3, sl, sb | r3 = sl + sb;
0x00011da4 cmp r0, r3 |
0x00011da8 mov r5, r0 | r5 = r0;
| if (r0 >= r3) {
0x00011dac bhs 0x11b04 | goto label_2;
| }
0x00011db0 cmp r4, 0 |
| if (r4 == 0) {
0x00011db4 beq 0x11b1c | goto label_3;
| }
0x00011db8 cmp r0, 0 |
0x00011dbc cmpne r0, r4 | __asm ("cmpne r0, r4");
| if (r0 >= 0) {
0x00011dc0 sublo r2, r0, sl | r2 = r0 - sl;
| }
| if (r0 > 0) {
0x00011dc4 blo 0x11dcc |
| label_9:
0x00011dc8 sub r2, r4, sl | r2 = r4 - sl;
| }
0x00011dcc mov r3, r4 | r3 = r4;
0x00011dd0 mov r4, r5 | r4 = r5;
0x00011dd4 cmp r4, 0 |
0x00011dd8 cmpne r3, r4 | __asm ("cmpne r3, r4");
0x00011ddc mov r5, r3 | r5 = r3;
| if (r4 <= 0) {
0x00011de0 blo 0x11b40 | goto label_4;
| }
0x00011de4 add r3, sl, sb | r3 = sl + sb;
0x00011de8 sub r3, r3, r5 | r3 -= r5;
0x00011dec cmp r4, 0 |
0x00011df0 sub r6, r3, 1 | r6 = r3 - 1;
| if (r4 == 0) {
0x00011df4 moveq sb, r2 | sb = r2;
| goto label_20;
| }
| if (r4 != 0) {
| label_20:
0x00011df8 bne 0x11b48 | goto label_5;
| }
| label_10:
0x00011dfc mov r7, r4 | r7 = r4;
0x00011e00 b 0x11b60 | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x28ed0 */
| #include <stdint.h>
|
; (fcn) sym.Curl_pipeline_penalized () | void Curl_pipeline_penalized (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_18h;
| r0 = arg1;
| r1 = arg2;
0x00028ed0 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00028ed4 subs r4, r0, 0 | r4 = r0 - 0;
0x00028ed8 sub sp, sp, 0x18 |
| if (r4 == r0) {
0x00028edc beq 0x28fa0 | goto label_3;
| }
0x00028ee0 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x00028ee4 mov sl, r1 | sl = r1;
0x00028ee8 bl 0x2039c | Curl_multi_content_length_penalty_size ();
0x00028eec mov r5, r4 | r5 = r4;
0x00028ef0 mov r8, r0 | r8 = r0;
0x00028ef4 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x00028ef8 mov sb, r1 | sb = r1;
0x00028efc bl 0x203b4 | Curl_multi_chunk_length_penalty_size ();
0x00028f00 ldr lr, [sl, 0x2d4] |
0x00028f04 ldr ip, [sl, 0x4c] | ip = *((sl + 0x4c));
0x00028f08 cmp lr, 0 |
0x00028f0c ldrd r2, r3, [sl, 0x30] | __asm ("ldrd r2, r3, [sl, 0x30]");
| if (lr == 0) {
0x00028f10 beq 0x28fb8 | goto label_4;
| }
0x00028f14 ldr lr, [lr] |
0x00028f18 cmp r8, 1 |
0x00028f1c ldrd r6, r7, [lr, 0x70] | __asm ("ldrd r6, r7, [lr, 0x70]");
0x00028f20 sbcs lr, sb, 0 | __asm ("sbcs lr, sb, 0");
| if (r8 < 1) {
0x00028f24 movge r4, 1 | r4 = 1;
| }
| if (r8 >= 1) {
0x00028f28 movlt r4, 0 | r4 = 0;
| }
0x00028f2c cmp r8, r6 |
0x00028f30 sbcs lr, sb, r7 | __asm ("sbcs lr, sb, r7");
| if (r8 < r6) {
0x00028f34 movge r4, 0 | r4 = 0;
| }
| if (r8 >= r6) {
0x00028f38 andlt r4, r4, 1 | r4 &= 1;
| }
0x00028f3c cmp r4, 0 |
| if (r4 != 0) {
0x00028f40 bne 0x28fc4 | goto label_5;
| }
| label_0:
0x00028f44 cmp r0, 1 |
0x00028f48 sbcs lr, r1, 0 | __asm ("sbcs lr, r1, 0");
0x00028f4c mov r4, 0 | r4 = 0;
| if (r0 >= 1) {
0x00028f50 ldrlt r1, [pc, 0x84] | r1 = *((pc + 0x84));
| }
| if (r0 >= 1) {
0x00028f54 addlt r1, pc, r1 | r1 = pc + r1;
| }
| if (r0 < 1) {
0x00028f58 blt 0x28f7c | goto label_2;
| }
| label_1:
0x00028f5c cmp r0, r2 |
0x00028f60 sbcs r1, r1, r3 | __asm ("sbcs r1, r1, r3");
| if (r0 >= r2) {
0x00028f64 blt 0x28f70 |
0x00028f68 cmp r4, 0 |
| if (r4 == 0) {
0x00028f6c beq 0x28fac | goto label_6;
| }
| }
0x00028f70 ldr r1, [pc, 0x68] | r1 = $d;
0x00028f74 mov r4, 1 | r4 = 1;
0x00028f78 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_2:
0x00028f7c str r1, [sp, 0x10] | var_10h = r1;
0x00028f80 ldr r1, [pc, 0x5c] | r1 = *(0x28fe0);
0x00028f84 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x00028f88 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x00028f8c mov r3, sl | r3 = sl;
0x00028f90 mov r2, ip | r2 = ip;
0x00028f94 add r1, pc, r1 | r1 = pc + r1;
0x00028f98 mov r0, r5 | r0 = r5;
0x00028f9c bl 0x104cc | Curl_infof ();
| label_3:
0x00028fa0 mov r0, r4 | r0 = r4;
0x00028fa4 add sp, sp, 0x18 |
0x00028fa8 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x00028fac ldr r1, [pc, 0x34] | r1 = *(0x28fe4);
0x00028fb0 add r1, pc, r1 | r1 = pc + r1;
0x00028fb4 b 0x28f7c |
| } while (1);
| label_4:
0x00028fb8 mvn r6, 1 | r6 = ~1;
0x00028fbc mvn r7, 0 | r7 = ~0;
0x00028fc0 b 0x28f44 | goto label_0;
| label_5:
0x00028fc4 cmp r0, 1 |
0x00028fc8 sbcs lr, r1, 0 | __asm ("sbcs lr, r1, 0");
| if (r0 >= 1) {
0x00028fcc bge 0x28f5c | goto label_1;
| }
0x00028fd0 ldr r1, [pc, 0x14] | r1 = *(0x28fe8);
0x00028fd4 add r1, pc, r1 | r1 = pc + r1;
0x00028fd8 b 0x28f7c | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2322c */
| #include <stdint.h>
|
; (fcn) sym.Curl_poll () | void Curl_poll (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_38h;
| int32_t var_b8h;
| int32_t var_138h;
| int32_t var_1b8h;
| int32_t var_1bch;
| r0 = arg1;
| r1 = arg2;
0x0002322c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00023230 mov r3, 0 | r3 = 0;
0x00023234 sub sp, sp, 0x1bc |
0x00023238 subs r8, r0, 0 | r8 -= arg_0h;
0x0002323c mov r4, r2 | r4 = r2;
0x00023240 str r3, [sp, 0x28] | var_28h = r3;
0x00023244 str r3, [sp, 0x2c] | var_2ch = r3;
| if (r8 == arg_0h) {
0x00023248 movne sb, r1 | sb = r1;
| }
| if (r8 != arg_0h) {
0x0002324c bne 0x23278 | goto label_7;
| }
| label_0:
0x00023250 mov r0, r4 | r0 = r4;
0x00023254 bl 0x22dac | r0 = Curl_wait_ms ();
0x00023258 mov r3, r0 | r3 = r0;
| label_1:
0x0002325c mov r0, r3 | r0 = r3;
0x00023260 add sp, sp, 0x1bc |
0x00023264 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x00023268 ldr r2, [r8, r3, lsl 3] | offset_0 = r3 << 3;
| r2 = *((r8 + offset_0));
0x0002326c cmn r2, 1 |
| if (r2 != 1) {
0x00023270 bne 0x233f4 | goto label_8;
| }
0x00023274 add r3, r3, 1 | r3++;
| label_7:
0x00023278 cmp r3, sb |
0x0002327c bne 0x23268 |
| } while (r3 != sb);
0x00023280 b 0x23250 | goto label_0;
| label_3:
0x00023284 mov r3, 0 | r3 = 0;
0x00023288 strh r3, [r0, 6] | *((r0 + 6)) = r3;
0x0002328c ldr r3, [r0] | r3 = *(r0);
0x00023290 cmn r3, 1 |
| if (r3 == 1) {
0x00023294 beq 0x23338 | goto label_9;
| }
0x00023298 ldr r1, [pc, 0x2dc] | r1 = *(0x23578);
0x0002329c cmp r3, r1 |
| if (r3 < r1) {
0x000232a0 bls 0x232b8 | goto label_10;
| }
0x000232a4 bl 0x4eb4 | errno_location ();
0x000232a8 mov r3, 0x16 | r3 = 0x16;
0x000232ac str r3, [r0] | *(r0) = r3;
| do {
0x000232b0 mvn r3, 0 | r3 = ~0;
0x000232b4 b 0x2325c | goto label_1;
| label_10:
0x000232b8 ldrh r1, [r0, 4] | r1 = *((r0 + 4));
0x000232bc tst r1, 7 |
| if ((r1 & 7) != 0) {
0x000232c0 beq 0x23338 |
0x000232c4 cmp r6, r3 |
| if (r6 >= r3) {
0x000232c8 movlt r6, r3 | r6 = r3;
| }
0x000232cc tst r1, 1 |
| if ((r1 & 1) != 0) {
0x000232d0 beq 0x232f0 |
0x000232d4 add ip, sp, 0x1b8 |
0x000232d8 lsr lr, r3, 5 | lr = r3 >> 5;
0x000232dc add lr, ip, lr, lsl 2 | lr = ip + (lr << 2);
0x000232e0 ldr fp, [lr, -0x180] | fp = *((lr - 0x180));
0x000232e4 and ip, r3, 0x1f |
0x000232e8 orr ip, fp, sl, lsl ip |
0x000232ec str ip, [lr, -0x180] | *((lr - 0x180)) = ip;
| }
0x000232f0 tst r1, 4 |
| if ((r1 & 4) != 0) {
0x000232f4 beq 0x23314 |
0x000232f8 add ip, sp, 0x1b8 |
0x000232fc lsr lr, r3, 5 | lr = r3 >> 5;
0x00023300 add lr, ip, lr, lsl 2 | lr = ip + (lr << 2);
0x00023304 ldr fp, [lr, -0x100] | fp = *((lr - 0x100));
0x00023308 and ip, r3, 0x1f |
0x0002330c orr ip, fp, sl, lsl ip |
0x00023310 str ip, [lr, -0x100] | *((lr - 0x100)) = ip;
| }
0x00023314 tst r1, 2 |
| if ((r1 & 2) == 0) {
0x00023318 beq 0x23338 | goto label_9;
| }
0x0002331c lsr r1, r3, 5 | r1 = r3 >> 5;
0x00023320 add ip, sp, 0x1b8 |
0x00023324 add r1, ip, r1, lsl 2 | r1 = ip + (r1 << 2);
0x00023328 ldr ip, [r1, -0x80] | ip = *((r1 - 0x80));
0x0002332c and r3, r3, 0x1f | r3 &= 0x1f;
0x00023330 orr r3, ip, sl, lsl r3 | r3 = ip | (sl << r3);
0x00023334 str r3, [r1, -0x80] | *((r1 - 0x80)) = r3;
| }
| label_9:
0x00023338 add r7, r7, 1 | r7++;
0x0002333c add r0, r0, 8 | r0 += 8;
0x00023340 b 0x2348c | goto label_11;
| label_4:
0x00023344 cmp r0, 0 |
0x00023348 blt 0x232b0 |
| } while (r0 < 0);
| if (r0 == 0) {
0x0002334c beq 0x23574 | goto label_12;
| }
0x00023350 mov r3, 0 | r3 = 0;
0x00023354 mov r0, r3 | r0 = r3;
0x00023358 mov ip, r3 |
0x0002335c mov lr, 1 | lr = 1;
| label_2:
0x00023360 cmp r7, r0 |
| if (r7 == r0) {
0x00023364 beq 0x2325c | goto label_1;
| }
0x00023368 ldr r2, [r8, r0, lsl 3] | offset_1 = r0 << 3;
| r2 = *((r8 + offset_1));
0x0002336c strh ip, [r5, 6] | *((r5 + 6)) = ip;
0x00023370 cmn r2, 1 |
| if (r2 != 1) {
0x00023374 beq 0x233e8 |
0x00023378 lsr r1, r2, 5 | r1 = r2 >> 5;
0x0002337c lsl r1, r1, 2 | r1 <<= 2;
0x00023380 add r4, sp, 0x1b8 | r4 += var_1b8h;
0x00023384 add r4, r4, r1 | r4 += r1;
0x00023388 ldr r4, [r4, -0x180] | r4 = *((r4 - 0x180));
0x0002338c and r2, r2, 0x1f | r2 &= 0x1f;
0x00023390 asr r4, r4, r2 | r4 >>= r2;
0x00023394 tst r4, 1 |
0x00023398 add r4, sp, 0x1b8 | r4 += var_1b8h;
0x0002339c add r4, r4, r1 | r4 += r1;
0x000233a0 ldr r4, [r4, -0x100] | r4 = *((r4 - 0x100));
0x000233a4 strhne lr, [r5, 6] | __asm ("strhne lr, [r5, 6]");
0x000233a8 asr r4, r4, r2 | r4 >>= r2;
0x000233ac tst r4, 1 |
0x000233b0 ldrhne r4, [r5, 6] | __asm ("ldrhne r4, [r5, 6]");
| if ((r4 & 1) == 0) {
0x000233b4 orrne r4, r4, 4 | r4 |= 4;
| }
0x000233b8 strhne r4, [r5, 6] | __asm ("strhne r4, [r5, 6]");
0x000233bc add r4, sp, 0x1b8 | r4 += var_1b8h;
0x000233c0 add r1, r4, r1 | r1 = r4 + r1;
0x000233c4 ldr r1, [r1, -0x80] | r1 = *((r1 - 0x80));
0x000233c8 asr r2, r1, r2 | r2 = r1 >> r2;
0x000233cc tst r2, 1 |
0x000233d0 ldrhne r2, [r5, 6] | __asm ("ldrhne r2, [r5, 6]");
| if ((r2 & 1) == 0) {
0x000233d4 orrne r2, r2, 2 | r2 |= 2;
| }
0x000233d8 strhne r2, [r5, 6] | __asm ("strhne r2, [r5, 6]");
0x000233dc ldrsh r2, [r5, 6] | r2 = *((r5 + 6));
0x000233e0 cmp r2, 0 |
| if (r2 != 0) {
0x000233e4 addne r3, r3, 1 | r3++;
| goto label_13;
| }
| }
| label_13:
0x000233e8 add r0, r0, 1 | r0++;
0x000233ec add r5, r5, 8 | r5 += 8;
0x000233f0 b 0x23360 | goto label_2;
| label_8:
0x000233f4 cmp r4, 0 |
| if (r4 > 0) {
0x000233f8 movle r2, 0 | r2 = 0;
| }
| if (r4 > 0) {
0x000233fc ble 0x2340c |
0x00023400 add r0, sp, 0x28 | r0 += var_28h;
0x00023404 bl 0x69f0 | Curl_now ();
0x00023408 mov r2, r4 | r2 = r4;
| }
0x0002340c add r1, sp, 0x38 | r1 += var_38h;
0x00023410 mov r3, 0 | r3 = 0;
0x00023414 str r1, [sp, 0xc] | var_ch = r1;
0x00023418 mov r1, r3 | r1 = r3;
| do {
0x0002341c ldr r0, [sp, 0xc] | r0 = var_ch;
0x00023420 str r1, [r0, r3, lsl 2] | offset_2 = r3 << 2;
| *((r0 + offset_2)) = r1;
0x00023424 add r3, r3, 1 | r3++;
0x00023428 cmp r3, 0x20 |
0x0002342c bne 0x2341c |
| } while (r3 != 0x20);
0x00023430 add r1, sp, 0xb8 | r1 += var_b8h;
0x00023434 mov r3, 0 | r3 = 0;
0x00023438 str r1, [sp, 0x10] | var_10h = r1;
0x0002343c mov r1, r3 | r1 = r3;
| do {
0x00023440 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00023444 str r1, [r0, r3, lsl 2] | offset_3 = r3 << 2;
| *((r0 + offset_3)) = r1;
0x00023448 add r3, r3, 1 | r3++;
0x0002344c cmp r3, 0x20 |
0x00023450 bne 0x23440 |
| } while (r3 != 0x20);
0x00023454 add r1, sp, 0x138 | r1 += var_138h;
0x00023458 mov r3, 0 | r3 = 0;
0x0002345c str r1, [sp, 0x14] | var_14h = r1;
0x00023460 mov r1, r3 | r1 = r3;
| do {
0x00023464 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00023468 str r1, [r0, r3, lsl 2] | offset_4 = r3 << 2;
| *((r0 + offset_4)) = r1;
0x0002346c add r3, r3, 1 | r3++;
0x00023470 cmp r3, 0x20 |
0x00023474 bne 0x23464 |
| } while (r3 != 0x20);
0x00023478 mov r5, r8 | r5 = r8;
0x0002347c mov r0, r8 | r0 = r8;
0x00023480 mov r7, 0 | r7 = 0;
0x00023484 mvn r6, 0 | r6 = ~0;
0x00023488 mov sl, 1 | sl = 1;
| label_11:
0x0002348c cmp r7, sb |
| if (r7 != sb) {
0x00023490 bne 0x23284 | goto label_3;
| }
0x00023494 ldr fp, [pc, 0xe4] | fp = $d;
0x00023498 cmp r4, 0 |
| if (r4 < 0) {
0x0002349c addge sb, sp, 0x20 | sb += var_20h;
| }
| if (r4 >= 0) {
0x000234a0 movlt sb, 0 | sb = 0;
| }
0x000234a4 mov sl, 0x3e8 | sl = 0x3e8;
0x000234a8 add r6, r6, 1 | r6++;
0x000234ac add fp, pc, fp |
| label_6:
0x000234b0 mov r1, 0x3e8 | r1 = 0x3e8;
0x000234b4 mov r0, r2 | r0 = r2;
0x000234b8 str r2, [sp, 0x1c] | var_1ch = r2;
0x000234bc bl 0x37f24 | divsi3 ();
0x000234c0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000234c4 mov r1, 0x3e8 | r1 = 0x3e8;
0x000234c8 str r0, [sp, 0x18] | var_18h = r0;
0x000234cc mov r0, r2 | r0 = r2;
0x000234d0 bl 0x38000 | aeabi_idivmod ();
0x000234d4 cmp r4, 0 |
| if (r4 <= 0) {
0x000234d8 ldrgt r3, [sp, 0x18] | r3 = var_18h;
| }
0x000234dc mul r2, sl, r1 | r2 = sl * r1;
| if (r4 <= 0) {
0x000234e0 strgt r3, [sp, 0x20] | var_20h = r3;
| }
| if (r4 <= 0) {
0x000234e4 strgt r2, [sp, 0x24] | var_24h = r2;
| }
| if (r4 <= 0) {
0x000234e8 bgt 0x234f8 |
| label_5:
0x000234ec cmp r4, 0 |
| if (r4 != 0) {
0x000234f0 streq r4, [sp, 0x20] | var_20h = r4;
| }
| if (r4 == 0) {
0x000234f4 streq r4, [sp, 0x24] | var_24h = r4;
| goto label_14;
| }
| }
| label_14:
0x000234f8 add r1, sp, 0xc | r1 += var_ch;
0x000234fc str sb, [sp] | *(sp) = sb;
0x00023500 mov r0, r6 | r0 = r6;
0x00023504 ldm r1, {r1, r2, r3} | r1 = *(r1);
| r2 = *((r1 + 4));
| r3 = *((r1 + 8));
0x00023508 bl 0x5364 | r0 = select ();
0x0002350c cmn r0, 1 |
| if (r0 != 1) {
0x00023510 bne 0x23344 | goto label_4;
| }
0x00023514 str r0, [sp, 0x18] | var_18h = r0;
0x00023518 bl 0x4eb4 | r0 = errno_location ();
0x0002351c ldr r2, [r0] | r2 = *(r0);
0x00023520 cmp r2, 0 |
| if (r2 == 0) {
0x00023524 beq 0x2353c | goto label_15;
| }
0x00023528 ldr r1, [fp] | r1 = *(fp);
0x0002352c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00023530 cmp r2, 4 |
0x00023534 cmpeq r1, 0 | __asm ("cmpeq r1, 0");
| if (r2 != 4) {
0x00023538 bne 0x2325c | goto label_1;
| }
| label_15:
0x0002353c cmp r4, 0 |
| if (r4 <= 0) {
0x00023540 ble 0x234ec | goto label_5;
| }
0x00023544 add r1, sp, 0x30 | r1 += var_30h;
0x00023548 mov r0, r1 | r0 = r1;
0x0002354c str r1, [sp, 0x18] | var_18h = r1;
0x00023550 bl 0x69f0 | Curl_now ();
0x00023554 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00023558 add r3, sp, 0x28 | r3 += var_28h;
0x0002355c ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x00023560 ldm r1, {r0, r1} | r0 = *(r1);
| r1 = *((r1 + 4));
0x00023564 bl 0x6a20 | r0 = Curl_timediff ();
0x00023568 sub r2, r4, r0 | r2 = r4 - r0;
0x0002356c cmp r2, 0 |
| if (r2 > 0) {
0x00023570 bgt 0x234b0 | goto label_6;
| }
| label_12:
0x00023574 mov r3, 0 | r3 = 0;
0x00023578 b 0x2325c | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2565c */
| #include <stdint.h>
|
; (fcn) sym.Curl_proxyCONNECT () | void Curl_proxyCONNECT (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_4h;
| int32_t var_48h;
| int32_t var_4ch;
| r0 = arg1;
| r1 = arg2;
0x0002565c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00025660 ldr r6, [r0, 0x4fc] | r6 = *((r0 + 0x4fc));
0x00025664 sub sp, sp, 0x4c |
0x00025668 str r3, [sp, 0x24] | var_24h = r3;
0x0002566c ldr r3, [pc, 0xb28] | r3 = *(0x26198);
0x00025670 cmp r6, 0 |
0x00025674 add r3, pc, r3 | r3 = pc + r3;
0x00025678 mov r5, r0 | r5 = r0;
0x0002567c str r1, [sp, 0x20] | var_20h = r1;
0x00025680 str r2, [sp, 0x1c] | var_1ch = r2;
0x00025684 str r3, [sp, 0x14] | var_14h = r3;
| if (r6 == 0) {
0x00025688 bne 0x256ec |
0x0002568c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00025690 ldr r3, [pc, 0xb08] |
0x00025694 ldr r1, [pc, 0xb08] | r1 = *(0x261a0);
0x00025698 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002569c mov r0, 1 | r0 = 1;
0x000256a0 ldr r3, [r3] | r3 = $d;
0x000256a4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000256a8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000256ac moveq fp, 0x1b |
| }
| if (r4 == r0) {
0x000256b0 beq 0x25a64 | goto label_16;
| }
0x000256b4 ldr r1, [pc, 0xaec] | r1 = *(0x261a4);
0x000256b8 ldr r0, [r5] | r0 = *(r5);
0x000256bc add r1, pc, r1 | r1 = pc + r1;
0x000256c0 bl 0x104cc | Curl_infof ();
0x000256c4 add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x000256c8 mov r2, 1 | r2 = 1;
0x000256cc mov r0, 0 | r0 = 0;
0x000256d0 mov r1, 0 | r1 = 0;
0x000256d4 str r4, [r5, 0x4fc] | *((r5 + 0x4fc)) = r4;
0x000256d8 str r6, [r3, 0x1c] | *((r3 + 0x1c)) = r6;
0x000256dc stmib r3, {r2, r4} | __asm ("stmib r3, {r2, r4}");
0x000256e0 str r4, [r3, 0xc] | *((r3 + 0xc)) = r4;
0x000256e4 strd r0, r1, [r3, 0x10] | __asm ("strd r0, r1, [r3, 0x10]");
0x000256e8 strb r6, [r3, 0x20] | *((r3 + 0x20)) = r6;
| }
0x000256ec mov r3, 0 | r3 = 0;
0x000256f0 mov r0, r5 | r0 = r5;
0x000256f4 str r3, [sp, 0x3c] | var_3ch = r3;
0x000256f8 bl 0x255d8 | r0 = Curl_connect_complete ();
0x000256fc cmp r0, 0 |
| if (r0 != 0) {
0x00025700 bne 0x2617c | goto label_17;
| }
0x00025704 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00025708 ldr r4, [r5] | r4 = *(r5);
0x0002570c add r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
0x00025710 str r3, [sp, 0x18] | var_18h = r3;
0x00025714 ldr r3, [r3, 0x198] | r3 = *((r3 + 0x198));
0x00025718 ldr r6, [r5, 0x4fc] | r6 = *((r5 + 0x4fc));
0x0002571c str r3, [sp, 0x2c] | var_2ch = r3;
0x00025720 ldr r3, [pc, 0xa84] | r3 = *(0x261a8);
0x00025724 strb r0, [r5, 0x26a] | *((r5 + 0x26a)) = r0;
0x00025728 add r3, pc, r3 | r3 = pc + r3;
0x0002572c str r3, [sp, 0x30] | var_30h = r3;
0x00025730 ldr r3, [pc, 0xa78] | r3 = *(0x261ac);
0x00025734 add r3, pc, r3 | r3 = pc + r3;
0x00025738 str r3, [sp, 0x28] | var_28h = r3;
| label_14:
0x0002573c add r3, r6, 0x4000 | r3 = r6 + 0x4000;
0x00025740 ldr r7, [r3, 0x1c] | r7 = *((r3 + 0x1c));
0x00025744 cmp r7, 0 |
| if (r7 != 0) {
0x00025748 bne 0x25a18 | goto label_18;
| }
0x0002574c ldr r1, [sp, 0x30] | r1 = var_30h;
0x00025750 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00025754 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00025758 mov r0, r4 | r0 = r4;
0x0002575c bl 0x104cc | Curl_infof ();
0x00025760 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00025764 ldr r3, [pc, 0xa48] | r3 = *(0x261b0);
0x00025768 ldr r0, [r4, 0x11c] | r0 = *((r4 + 0x11c));
0x0002576c ldr r8, [r2, r3] | r8 = *((r2 + r3));
0x00025770 ldr r3, [r8] | r3 = *(r8);
0x00025774 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00025778 str r7, [r4, 0x11c] | *((r4 + 0x11c)) = r7;
0x0002577c bl 0xc8bc | r0 = Curl_add_buffer_init ();
0x00025780 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x00025784 beq 0x257ac | goto label_6;
| }
0x00025788 ldr r0, [pc, 0xa28] | r0 = *(0x261b4);
0x0002578c ldr r2, [sp, 0x24] | r2 = var_24h;
0x00025790 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00025794 add r0, pc, r0 | r0 = pc + r0;
0x00025798 bl 0x5b80 | r0 = fcn_00005b80 ();
0x0002579c subs sb, r0, 0 | sb = r0 - 0;
0x000257a0 bne 0x257b4 |
| while (sl == r0) {
| label_0:
0x000257a4 mov r0, r7 | r0 = r7;
0x000257a8 bl 0xc8e4 | Curl_add_buffer_free ();
| label_6:
0x000257ac mov fp, 0x1b |
0x000257b0 b 0x25a44 | goto label_3;
0x000257b4 ldr r1, [pc, 0xa00] | r1 = *(0x261b8);
0x000257b8 mov r3, 1 | r3 = 1;
0x000257bc mov r2, sb | r2 = sb;
0x000257c0 add r1, pc, r1 | r1 = pc + r1;
0x000257c4 mov r0, r5 | r0 = r5;
0x000257c8 bl 0xc4d8 | Curl_http_output_auth ();
0x000257cc ldr r3, [r8] | r3 = *(r8);
0x000257d0 mov fp, r0 |
0x000257d4 mov r0, sb | r0 = sb;
0x000257d8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000257dc cmp fp, 0 |
| if (fp != 0) {
0x000257e0 bne 0x259f8 | goto label_19;
| }
0x000257e4 ldr r3, [r5, 0xf0] | r3 = *((r5 + 0xf0));
0x000257e8 cmp r3, 1 |
| if (r3 != 1) {
0x000257ec bne 0x258a0 | goto label_20;
| }
0x000257f0 ldr fp, [pc, 0x9c8] | fp = *(0x261bc);
0x000257f4 add fp, pc, fp |
| label_1:
0x000257f8 ldr r3, [r5, 0xa0] | r3 = *((r5 + 0xa0));
0x000257fc ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00025800 ldrb r0, [r5, 0x25a] | r0 = *((r5 + 0x25a));
0x00025804 cmp r2, r3 |
| if (r2 != r3) {
0x00025808 beq 0x25820 |
0x0002580c mov r1, 0x3a | r1 = 0x3a;
0x00025810 mov r0, r2 | r0 = r2;
0x00025814 bl 0x5b38 | r0 = strchr (r0, r1);
0x00025818 adds r0, r0, 0 | r0 += 0;
| if (r0 != r0) {
0x0002581c movne r0, 1 | r0 = 1;
| goto label_21;
| }
| }
| label_21:
0x00025820 cmp r0, 0 |
| if (r0 != 0) {
0x00025824 ldreq r1, [sp, 0x28] | r1 = var_28h;
| }
| if (r0 != 0) {
0x00025828 moveq r3, r1 | r3 = r1;
| }
| if (r0 == 0) {
0x0002582c ldrne r1, [pc, 0x990] | r1 = *(0x000261c4);
| }
| if (r0 == 0) {
0x00025830 ldrne r3, [pc, 0x990] | r3 = *(0x000261c8);
| }
| if (r0 == 0) {
0x00025834 addne r1, pc, r1 | r1 = pc + r1;
| }
| if (r0 == 0) {
0x00025838 addne r3, pc, r3 | r3 = pc + r3;
| }
0x0002583c ldr r2, [sp, 0x24] | r2 = var_24h;
0x00025840 ldr r0, [pc, 0x984] | r0 = *(0x261c8);
0x00025844 str r2, [sp] | *(sp) = r2;
0x00025848 add r0, pc, r0 | r0 = pc + r0;
0x0002584c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00025850 bl 0x5b80 | r0 = fcn_00005b80 ();
0x00025854 subs sl, r0, 0 | sl = r0 - 0;
0x00025858 beq 0x257a4 |
| }
0x0002585c ldr r1, [pc, 0x96c] | r1 = *(0x261cc);
0x00025860 mov r0, r5 | r0 = r5;
0x00025864 add r1, pc, r1 | r1 = pc + r1;
0x00025868 bl 0xbe3c | r0 = Curl_checkProxyheaders ();
0x0002586c cmp r0, 0 |
| if (r0 == 0) {
0x00025870 movne sb, 0 | sb = 0;
| }
| if (r0 == 0) {
0x00025874 bne 0x258ac |
0x00025878 ldr r0, [pc, 0x954] | r0 = *(0x261d0);
0x0002587c mov r1, sl | r1 = sl;
0x00025880 add r0, pc, r0 | r0 = pc + r0;
0x00025884 bl 0x5b80 | r0 = fcn_00005b80 ();
0x00025888 subs sb, r0, 0 | sb = r0 - 0;
| if (sb != r0) {
0x0002588c bne 0x258ac | goto label_22;
| }
0x00025890 ldr r3, [r8] | r3 = *(r8);
0x00025894 mov r0, sl | r0 = sl;
0x00025898 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002589c b 0x257a4 | goto label_0;
| label_20:
0x000258a0 ldr fp, [pc, 0x930] | fp = *(0x261d4);
0x000258a4 add fp, pc, fp |
0x000258a8 b 0x257f8 | goto label_1;
| }
| label_22:
0x000258ac ldr r1, [pc, 0x928] | r1 = *(0x261d8);
0x000258b0 mov r0, r5 | r0 = r5;
0x000258b4 add r1, pc, r1 | r1 = pc + r1;
0x000258b8 bl 0xbe3c | r0 = Curl_checkProxyheaders ();
0x000258bc cmp r0, 0 |
| if (r0 == 0) {
0x000258c0 beq 0x25904 | goto label_23;
| }
0x000258c4 ldr r2, [pc, 0x914] | r2 = *(0x261dc);
0x000258c8 add r2, pc, r2 | r2 = pc + r2;
| do {
0x000258cc ldr r1, [pc, 0x910] | r1 = *(0x261e0);
0x000258d0 mov r0, r5 | r0 = r5;
0x000258d4 add r1, pc, r1 | r1 = pc + r1;
0x000258d8 str r2, [sp, 0x34] | var_34h = r2;
0x000258dc bl 0xbe3c | Curl_checkProxyheaders ();
0x000258e0 ldr r2, [sp, 0x34] | r2 = var_34h;
0x000258e4 cmp r0, 0 |
| if (r0 != 0) {
0x000258e8 bne 0x25910 | goto label_24;
| }
0x000258ec ldr r3, [r4, 0x5a0] | r3 = *((r4 + 0x5a0));
0x000258f0 cmp r3, 0 |
| if (r3 == 0) {
0x000258f4 ldrne r1, [r5, 0x29c] | r1 = *((r5 + 0x29c));
| }
| if (r3 != 0) {
0x000258f8 ldreq r1, [pc, 0x8e8] | r1 = *((pc + 0x8e8));
| }
| if (r3 != 0) {
0x000258fc addeq r1, pc, r1 | r1 = pc + r1;
| }
0x00025900 b 0x25918 | goto label_25;
| label_23:
0x00025904 ldr r2, [pc, 0x8e0] | r2 = *(0x261e8);
0x00025908 add r2, pc, r2 | r2 = pc + r2;
0x0002590c b 0x258cc |
| } while (1);
| label_24:
0x00025910 ldr r1, [pc, 0x8d8] | r1 = *(0x261ec);
0x00025914 add r1, pc, r1 | r1 = pc + r1;
| label_25:
0x00025918 cmp sb, 0 |
| if (sb == 0) {
0x0002591c movne r0, sb | r0 = sb;
| }
| if (sb != 0) {
0x00025920 ldreq r0, [pc, 0x8cc] | r0 = *((pc + 0x8cc));
| }
| if (sb != 0) {
0x00025924 addeq r0, pc, r0 | r0 = pc + r0;
| }
0x00025928 ldr r3, [r5, 0x298] | r3 = *((r5 + 0x298));
0x0002592c cmp r3, 0 |
| if (r3 != 0) {
0x00025930 ldreq r3, [pc, 0x8c0] | r3 = *((pc + 0x8c0));
| }
| if (r3 != 0) {
0x00025934 addeq r3, pc, r3 | r3 = pc + r3;
| }
0x00025938 str r1, [sp, 8] | var_8h = r1;
0x0002593c ldr r1, [pc, 0x8b8] | r1 = *(0x261f8);
0x00025940 stm sp, {r0, r3} | *(sp) = r0;
| *((sp + 4)) = r3;
0x00025944 str r2, [sp, 0xc] | var_ch = r2;
0x00025948 mov r3, fp | r3 = fp;
0x0002594c mov r2, sl | r2 = sl;
0x00025950 add r1, pc, r1 | r1 = pc + r1;
0x00025954 mov r0, r7 | r0 = r7;
0x00025958 bl 0xcd18 | Curl_add_bufferf ();
0x0002595c cmp sb, 0 |
0x00025960 mov fp, r0 |
| if (sb != 0) {
0x00025964 beq 0x25974 |
0x00025968 ldr r3, [r8] | r3 = *(r8);
0x0002596c mov r0, sb | r0 = sb;
0x00025970 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x00025974 ldr r3, [r8] | r3 = *(r8);
0x00025978 mov r0, sl | r0 = sl;
0x0002597c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00025980 cmp fp, 0 |
| if (fp == 0) {
0x00025984 bne 0x259e4 |
0x00025988 mov r2, r7 | r2 = r7;
0x0002598c mov r1, 1 | r1 = 1;
0x00025990 mov r0, r5 | r0 = r5;
0x00025994 bl 0xcfec | r0 = Curl_add_custom_headers ();
0x00025998 subs fp, r0, 0 |
| if (fp != r0) {
0x0002599c bne 0x259e4 | goto label_26;
| }
0x000259a0 ldr r1, [pc, 0x858] | r1 = *(0x261fc);
0x000259a4 mov r0, r7 | r0 = r7;
0x000259a8 add r1, pc, r1 | r1 = pc + r1;
0x000259ac bl 0xcd18 | r0 = Curl_add_bufferf ();
0x000259b0 subs fp, r0, 0 |
| if (fp != r0) {
0x000259b4 bne 0x259e4 | goto label_26;
| }
0x000259b8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000259bc add r2, r4, 0x4a00 | r2 = r4 + 0x4a00;
0x000259c0 str r3, [sp] | *(sp) = r3;
0x000259c4 mov r0, r7 | r0 = r7;
0x000259c8 mov r3, fp | r3 = fp;
0x000259cc add r2, r2, 0x78 | r2 += 0x78;
0x000259d0 mov r1, r5 | r1 = r5;
0x000259d4 bl 0xca20 | r0 = Curl_add_buffer_send ();
0x000259d8 subs fp, r0, 0 |
| if (fp != r0) {
0x000259dc moveq r7, fp | r7 = fp;
| }
| if (fp == r0) {
0x000259e0 beq 0x259f8 | goto label_19;
| }
| }
| label_26:
0x000259e4 ldr r1, [pc, 0x818] | r1 = *(0x26200);
0x000259e8 mov r0, r4 | r0 = r4;
0x000259ec add r1, pc, r1 | r1 = pc + r1;
0x000259f0 bl 0x10544 | Curl_failf ();
0x000259f4 mov r7, 0 | r7 = 0;
| label_19:
0x000259f8 mov r0, r7 | r0 = r7;
0x000259fc bl 0xc8e4 | Curl_add_buffer_free ();
0x00025a00 cmp fp, 0 |
| if (fp != 0) {
0x00025a04 bne 0x25a44 | goto label_3;
| }
0x00025a08 add r3, r6, 0x4000 | r3 = r6 + 0x4000;
0x00025a0c mov r2, 1 | r2 = 1;
0x00025a10 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x00025a14 str fp, [r3] | *(r3) = fp;
| label_18:
0x00025a18 mov r2, 1 | r2 = 1;
0x00025a1c mov r1, 0 | r1 = 0;
0x00025a20 mov r0, r4 | r0 = r4;
0x00025a24 bl 0x1b738 | r0 = Curl_timeleft ();
0x00025a28 cmp r0, 0 |
| if (r0 > 0) {
0x00025a2c bgt 0x25a70 | goto label_27;
| }
0x00025a30 ldr r1, [pc, 0x7d0] | r1 = *(0x26204);
0x00025a34 mov r0, r4 | r0 = r4;
0x00025a38 add r1, pc, r1 | r1 = pc + r1;
0x00025a3c bl 0x10544 | Curl_failf ();
0x00025a40 mov fp, 0x1c |
| do {
| label_3:
0x00025a44 ldr r3, [r5, 0x4fc] | r3 = *((r5 + 0x4fc));
0x00025a48 ldr r1, [pc, 0x7bc] | r1 = *(0x26208);
0x00025a4c add r3, r3, 0x4000 | r3 += 0x4000;
0x00025a50 mov r2, 2 | r2 = 2;
0x00025a54 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x00025a58 add r1, pc, r1 | r1 = pc + r1;
0x00025a5c ldr r0, [r5] | r0 = *(r5);
0x00025a60 bl 0x104cc | Curl_infof ();
| label_16:
0x00025a64 mov r0, fp | r0 = fp;
0x00025a68 add sp, sp, 0x4c |
0x00025a6c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x00025a70 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00025a74 mov r0, r5 | r0 = r5;
0x00025a78 bl 0x1cb88 | r0 = Curl_conn_data_pending ();
0x00025a7c cmp r0, 0 |
| if (r0 == 0) {
0x00025a80 beq 0x2617c | goto label_17;
| }
0x00025a84 add r7, r6, 0x4000 | r7 = r6 + 0x4000;
0x00025a88 add sb, r7, 0x10 | sb = r7 + 0x10;
| label_5:
0x00025a8c ldr sl, [r7, 4] | sl = *((r7 + 4));
0x00025a90 cmp sl, 0 |
| if (sl == 0) {
0x00025a94 beq 0x25afc | goto label_4;
| }
0x00025a98 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x00025a9c cmp r2, r7 |
| if (r2 <= r7) {
0x00025aa0 blo 0x25abc | goto label_28;
| }
0x00025aa4 ldr r1, [pc, 0x764] | r1 = *(0x2620c);
0x00025aa8 mov r0, r4 | r0 = r4;
0x00025aac add r1, pc, r1 | r1 = pc + r1;
0x00025ab0 bl 0x10544 | Curl_failf ();
| label_2:
0x00025ab4 mov fp, 0x38 |
0x00025ab8 b 0x25a44 |
| } while (1);
| label_28:
0x00025abc add r3, sp, 0x40 | r3 += var_40h;
0x00025ac0 str r3, [sp] | *(sp) = r3;
0x00025ac4 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00025ac8 mov r3, 1 | r3 = 1;
0x00025acc mov r0, r5 | r0 = r5;
0x00025ad0 bl 0x102f0 | r0 = Curl_read ();
0x00025ad4 cmp r0, 0x51 |
0x00025ad8 mov r8, r0 | r8 = r0;
| if (r0 == 0x51) {
0x00025adc beq 0x2617c | goto label_17;
| }
0x00025ae0 mov r0, r5 | r0 = r5;
0x00025ae4 bl 0x831c | r0 = Curl_pgrsUpdate ();
0x00025ae8 subs sl, r0, 0 | sl = r0 - 0;
| if (sl != r0) {
0x00025aec bne 0x26194 | goto label_29;
| }
0x00025af0 cmp r8, 0 |
| if (r8 == 0) {
0x00025af4 beq 0x25c10 | goto label_30;
| }
0x00025af8 str sl, [r7, 4] | *((r7 + 4)) = sl;
| label_4:
0x00025afc mov r0, r5 | r0 = r5;
0x00025b00 bl 0x831c | r0 = Curl_pgrsUpdate ();
0x00025b04 cmp r0, 0 |
| if (r0 != 0) {
0x00025b08 bne 0x26194 | goto label_29;
| }
0x00025b0c cmp sl, 0 |
| if (sl != 0) {
0x00025b10 bne 0x25ab4 | goto label_2;
| }
0x00025b14 add sb, r4, 0x4000 | sb = r4 + 0x4000;
0x00025b18 ldr r3, [sb, 0xa64] | r3 = *((sb + 0xa64));
0x00025b1c sub r3, r3, 0xc8 | r3 -= 0xc8;
0x00025b20 cmp r3, 0x63 |
| if (r3 < 0x63) {
0x00025b24 bls 0x25b4c | goto label_31;
| }
0x00025b28 mov r0, r5 | r0 = r5;
0x00025b2c bl 0xc2dc | r0 = Curl_http_auth_act ();
0x00025b30 subs fp, r0, 0 |
| if (fp != r0) {
0x00025b34 bne 0x25a44 | goto label_3;
| }
0x00025b38 ldrb r3, [r5, 0x251] | r3 = *((r5 + 0x251));
0x00025b3c cmp r3, 0 |
| if (r3 == 0) {
0x00025b40 addne r3, r6, 0x4000 | r3 = r6 + 0x4000;
| }
| if (r3 == 0) {
0x00025b44 movne r2, 1 | r2 = 1;
| }
| if (r3 == 0) {
0x00025b48 strbne r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
| }
| label_31:
0x00025b4c add r8, r6, 0x4000 | r8 = r6 + 0x4000;
0x00025b50 ldrb r2, [r8, 0x20] | r2 = *((r8 + 0x20));
0x00025b54 ldr r3, [r4, 0x11c] | r3 = *((r4 + 0x11c));
0x00025b58 cmp r2, 0 |
| if (r2 == 0) {
0x00025b5c beq 0x260a8 | goto label_32;
| }
0x00025b60 cmp r3, 0 |
| if (r3 != 0) {
0x00025b64 beq 0x25b84 |
0x00025b68 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00025b6c mov r0, r5 | r0 = r5;
0x00025b70 ldr r1, [r3, 0x198] | r1 = *((r3 + 0x198));
0x00025b74 bl 0x1bc30 | Curl_closesocket ();
0x00025b78 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00025b7c mvn r3, 0 | r3 = ~0;
0x00025b80 str r3, [r2, 0x198] | *((r2 + 0x198)) = r3;
| }
| label_13:
0x00025b84 ldr r3, [sb, 0xa64] | r3 = *((sb + 0xa64));
0x00025b88 sub r3, r3, 0xc8 | r3 -= 0xc8;
0x00025b8c cmp r3, 0x63 |
| if (r3 < 0x63) {
0x00025b90 bls 0x26130 | goto label_33;
| }
0x00025b94 ldrb r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x00025b98 ldr r0, [r4, 0x11c] | r0 = *((r4 + 0x11c));
0x00025b9c cmp r3, 0 |
| if (r3 == 0) {
0x00025ba0 beq 0x260e8 | goto label_34;
| }
0x00025ba4 cmp r0, 0 |
| if (r0 == 0) {
0x00025ba8 beq 0x260e8 | goto label_34;
| }
0x00025bac ldr r1, [pc, 0x660] | r1 = *(0x26210);
0x00025bb0 mov r3, 1 | r3 = 1;
0x00025bb4 strb r3, [r5, 0x26a] | *((r5 + 0x26a)) = r3;
0x00025bb8 add r1, pc, r1 | r1 = pc + r1;
0x00025bbc mov r0, r4 | r0 = r4;
0x00025bc0 bl 0x104cc | Curl_infof ();
0x00025bc4 ldr r3, [r5, 0x4fc] | r3 = *((r5 + 0x4fc));
0x00025bc8 ldr r1, [pc, 0x648] | r1 = *(0x26214);
0x00025bcc add r3, r3, 0x4000 | r3 += 0x4000;
0x00025bd0 mov r2, 2 | r2 = 2;
0x00025bd4 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x00025bd8 add r1, pc, r1 | r1 = pc + r1;
0x00025bdc ldr r0, [r5] | r0 = *(r5);
0x00025be0 bl 0x104cc | Curl_infof ();
| label_15:
0x00025be4 mov r3, 0 | r3 = 0;
0x00025be8 str r3, [r8, 0x1c] | *((r8 + 0x1c)) = r3;
0x00025bec ldrb r3, [r5, 0x26a] | r3 = *((r5 + 0x26a));
0x00025bf0 cmp r3, 0 |
| if (r3 != 0) {
0x00025bf4 bne 0x2617c | goto label_17;
| }
0x00025bf8 ldr r1, [pc, 0x61c] | r1 = *(0x26218);
0x00025bfc ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x00025c00 add r1, pc, r1 | r1 = pc + r1;
0x00025c04 mov r0, r4 | r0 = r4;
0x00025c08 bl 0x10544 | Curl_failf ();
0x00025c0c b 0x25ab4 | goto label_2;
| label_30:
0x00025c10 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00025c14 cmp r3, 0 |
| if (r3 > 0) {
0x00025c18 bgt 0x25c78 | goto label_35;
| }
0x00025c1c ldr r3, [r4, 0x158] | r3 = *((r4 + 0x158));
0x00025c20 cmp r3, 0 |
| if (r3 == 0) {
0x00025c24 beq 0x25c60 | goto label_36;
| }
0x00025c28 add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x00025c2c ldr r3, [r3, 0x898] | r3 = *((r3 + 0x898));
0x00025c30 cmp r3, 0 |
| if (r3 == 0) {
0x00025c34 beq 0x25c60 | goto label_36;
| }
0x00025c38 ldr r1, [pc, 0x5e0] | r1 = *(0x2621c);
0x00025c3c mov r3, 1 | r3 = 1;
0x00025c40 strb r3, [r5, 0x26a] | *((r5 + 0x26a)) = r3;
0x00025c44 add r1, pc, r1 | r1 = pc + r1;
0x00025c48 mov r0, r4 | r0 = r4;
0x00025c4c bl 0x104cc | Curl_infof ();
| do {
0x00025c50 add r3, r6, 0x4000 | r3 = r6 + 0x4000;
0x00025c54 mov r2, 0 | r2 = 0;
0x00025c58 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00025c5c b 0x25afc | goto label_4;
| label_36:
0x00025c60 ldr r1, [pc, 0x5bc] | r1 = *(0x26220);
0x00025c64 mov r0, r4 | r0 = r4;
0x00025c68 add r1, pc, r1 | r1 = pc + r1;
0x00025c6c bl 0x10544 | Curl_failf ();
0x00025c70 mov sl, 1 | sl = 1;
0x00025c74 b 0x25c50 |
| } while (1);
| label_35:
0x00025c78 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00025c7c cmp r3, 1 |
| if (r3 <= 1) {
0x00025c80 ble 0x25cfc | goto label_37;
| }
0x00025c84 ldrd r0, r1, [r7, 0x10] | __asm ("ldrd r0, r1, [r7, 0x10]");
0x00025c88 str r6, [r7, 0xc] | *((r7 + 0xc)) = r6;
0x00025c8c orrs r3, r0, r1 | r3 = r0 | r1;
| if (r3 == r0) {
0x00025c90 beq 0x25cbc | goto label_38;
| }
0x00025c94 subs r2, r0, 1 | r2 = r0 - 1;
0x00025c98 sbc r3, r1, 0 | __asm ("sbc r3, r1, 0");
0x00025c9c cmp r2, 1 |
0x00025ca0 strd r2, r3, [r7, 0x10] | __asm ("strd r2, r3, [r7, 0x10]");
0x00025ca4 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x00025ca8 bge 0x25a8c | goto label_5;
| }
0x00025cac mov r3, 2 | r3 = 2;
0x00025cb0 str sl, [r7, 4] | *((r7 + 4)) = sl;
0x00025cb4 str r3, [r7, 0x1c] | *((r7 + 0x1c)) = r3;
0x00025cb8 b 0x25afc | goto label_4;
| label_38:
0x00025cbc add r3, sp, 0x48 | r3 += var_48h;
0x00025cc0 str r8, [r3, -4]! | *((r3 -= 4)) = r8;
0x00025cc4 mov r2, 1 | r2 = 1;
0x00025cc8 mov r1, r6 | r1 = r6;
0x00025ccc mov r0, r5 | r0 = r5;
0x00025cd0 bl 0x1b234 | r0 = Curl_httpchunk_read ();
0x00025cd4 cmn r0, 1 |
| if (r0 != 1) {
0x00025cd8 bne 0x25a8c | goto label_5;
| }
0x00025cdc ldr r1, [pc, 0x544] | r1 = *(0x26224);
0x00025ce0 mov r0, r4 | r0 = r4;
0x00025ce4 add r1, pc, r1 | r1 = pc + r1;
0x00025ce8 bl 0x104cc | Curl_infof ();
0x00025cec str r8, [r7, 4] | *((r7 + 4)) = r8;
| label_8:
0x00025cf0 mov r3, 2 | r3 = 2;
0x00025cf4 str r3, [r7, 0x1c] | *((r7 + 0x1c)) = r3;
0x00025cf8 b 0x25a8c | goto label_5;
| label_37:
0x00025cfc ldr r3, [r7] | r3 = *(r7);
0x00025d00 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x00025d04 add r3, r3, 1 | r3++;
0x00025d08 str r3, [r7] | *(r7) = r3;
0x00025d0c ldrb r1, [r2] | r1 = *(r2);
0x00025d10 cmp r1, 0xa |
| if (r1 == 0xa) {
0x00025d14 addne r2, r2, 1 | r2++;
| }
| if (r1 != 0xa) {
0x00025d18 strne r2, [r7, 0xc] | *((r7 + 0xc)) = r2;
| goto label_39;
| }
| if (r1 != 0xa) {
| label_39:
0x00025d1c bne 0x25a8c | goto label_5;
| }
0x00025d20 ldrb r2, [r4, 0x4d8] | r2 = *((r4 + 0x4d8));
0x00025d24 cmp r2, 0 |
| if (r2 != 0) {
0x00025d28 beq 0x25d3c |
0x00025d2c ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00025d30 mov r1, 1 | r1 = 1;
0x00025d34 mov r0, r4 | r0 = r4;
0x00025d38 bl 0x10424 | Curl_debug ();
| }
0x00025d3c ldrb r3, [r4, 0x64c] | r3 = *((r4 + 0x64c));
0x00025d40 cmp r3, 0 |
| if (r3 == 0) {
0x00025d44 beq 0x25e20 | goto label_40;
| }
| label_7:
0x00025d48 add r1, r4, 0x4000 | r1 = r4 + 0x4000;
0x00025d4c ldr r2, [r7] | r2 = *(r7);
0x00025d50 ldr r3, [r1, 0xa74] | r3 = *((r1 + 0xa74));
0x00025d54 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00025d58 add r3, r3, r2 | r3 += r2;
0x00025d5c str r3, [r1, 0xa74] | *((r1 + 0xa74)) = r3;
0x00025d60 ldr r3, [r4, 0xa0] | r3 = *((r4 + 0xa0));
0x00025d64 add r3, r3, r2 | r3 += r2;
0x00025d68 str r3, [r4, 0xa0] | *((r4 + 0xa0)) = r3;
0x00025d6c ldrb r3, [r0] | r3 = *(r0);
0x00025d70 cmp r3, 0xa |
0x00025d74 cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| if (r3 != 0xa) {
0x00025d78 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0xa) {
0x00025d7c movne r3, 0 | r3 = 0;
| }
| if (r3 == 0xa) {
0x00025d80 beq 0x25e4c | goto label_41;
| }
0x00025d84 strb r3, [r0, r2] | *((r0 + r2)) = r3;
0x00025d88 ldr r0, [pc, 0x49c] | r0 = *(0x26228);
0x00025d8c mov r2, 0x11 | r2 = 0x11;
0x00025d90 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00025d94 add r0, pc, r0 | r0 = pc + r0;
0x00025d98 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00025d9c cmp r0, 0 |
| if (r0 == 0) {
0x00025da0 beq 0x25f30 | goto label_42;
| }
0x00025da4 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x00025da8 ldr r3, [pc, 0x480] | r3 = *(0x2622c);
0x00025dac cmp r2, r3 |
| if (r2 != r3) {
0x00025db0 bne 0x25f30 | goto label_42;
| }
| label_10:
0x00025db4 ldr sl, [r4, 0xe8] | sl = *((r4 + 0xe8));
0x00025db8 ldr r1, [pc, 0x474] | r1 = *(0x26230);
0x00025dbc ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00025dc0 sub sl, sl, r1 | sl -= r1;
0x00025dc4 bl 0xc1ec | Curl_copy_header_value ();
0x00025dc8 clz sl, sl | sl &= sl;
0x00025dcc lsr sl, sl, 5 | sl >>= 5;
0x00025dd0 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x00025dd4 beq 0x257ac | goto label_6;
| }
0x00025dd8 mov r2, r8 | r2 = r8;
0x00025ddc mov r1, sl | r1 = sl;
0x00025de0 mov r0, r5 | r0 = r5;
0x00025de4 bl 0xc61c | Curl_http_input_auth ();
0x00025de8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00025dec ldr r3, [pc, 0x3c0] |
0x00025df0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00025df4 ldr r3, [r3] | r3 = *(0x261b0);
0x00025df8 mov fp, r0 |
0x00025dfc mov r0, r8 | r0 = r8;
0x00025e00 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00025e04 cmp fp, 0 |
| if (fp != 0) {
0x00025e08 bne 0x25a44 | goto label_3;
| }
| label_11:
0x00025e0c mov r3, 0 | r3 = 0;
0x00025e10 str r3, [r7] | *(r7) = r3;
0x00025e14 str r6, [r7, 0xc] | *((r7 + 0xc)) = r6;
0x00025e18 str r6, [r7, 8] | *((r7 + 8)) = r6;
0x00025e1c b 0x25a8c | goto label_5;
| label_40:
0x00025e20 ldrb r3, [r4, 0x4cd] | r3 = *((r4 + 0x4cd));
0x00025e24 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00025e28 cmp r3, 0 |
| if (r3 == 0) {
0x00025e2c movne r1, 3 | r1 = 3;
| }
| if (r3 != 0) {
0x00025e30 moveq r1, 2 | r1 = 2;
| }
0x00025e34 ldr r3, [r7] | r3 = *(r7);
0x00025e38 mov r0, r5 | r0 = r5;
0x00025e3c bl 0x107cc | r0 = Curl_client_write ();
0x00025e40 subs fp, r0, 0 |
| if (fp == r0) {
0x00025e44 beq 0x25d48 | goto label_7;
| }
0x00025e48 b 0x25a44 | goto label_3;
| label_41:
0x00025e4c ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x00025e50 ldr r3, [pc, 0x3dc] | r3 = *(0x26230);
0x00025e54 add r8, r6, 0x4000 | r8 = r6 + 0x4000;
0x00025e58 cmp r2, r3 |
0x00025e5c str r6, [r7, 0xc] | *((r7 + 0xc)) = r6;
0x00025e60 add r8, r8, 0x10 | r8 += 0x10;
| if (r2 != r3) {
0x00025e64 bne 0x25f24 | goto label_43;
| }
0x00025e68 ldrb r3, [r1, 0x8a0] | r3 = *((r1 + 0x8a0));
0x00025e6c cmp r3, 0 |
| if (r3 != 0) {
0x00025e70 bne 0x25f24 | goto label_43;
| }
0x00025e74 ldrd r2, r3, [r8] | __asm ("ldrd r2, r3, [r8]");
0x00025e78 mov r1, 2 | r1 = 2;
0x00025e7c str r1, [r7, 4] | *((r7 + 4)) = r1;
0x00025e80 orrs r1, r2, r3 | r1 = r2 | r3;
| if (r1 == r2) {
0x00025e84 beq 0x25ea8 | goto label_44;
| }
0x00025e88 ldr r1, [pc, 0x3a8] | r1 = *(0x26234);
0x00025e8c mov r0, r4 | r0 = r4;
0x00025e90 add r1, pc, r1 | r1 = pc + r1;
0x00025e94 bl 0x104cc | Curl_infof ();
| label_9:
0x00025e98 ldrd r2, r3, [r8] | __asm ("ldrd r2, r3, [r8]");
0x00025e9c orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x00025ea0 bne 0x25a8c | goto label_5;
| }
0x00025ea4 b 0x25cf0 | goto label_8;
| label_44:
0x00025ea8 ldrb r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00025eac cmp r3, 0 |
| if (r3 == 0) {
0x00025eb0 beq 0x25f28 | goto label_45;
| }
0x00025eb4 ldr r1, [pc, 0x380] | r1 = *(0x26238);
0x00025eb8 mov r0, r4 | r0 = r4;
0x00025ebc add r1, pc, r1 | r1 = pc + r1;
0x00025ec0 bl 0x104cc | Curl_infof ();
0x00025ec4 mov r3, 1 | r3 = 1;
0x00025ec8 strb r3, [r4, 0x115] | *((r4 + 0x115)) = r3;
0x00025ecc ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00025ed0 mov r0, r5 | r0 = r5;
0x00025ed4 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x00025ed8 cmp r2, 0xa |
| if (r2 != 0xa) {
0x00025edc addeq r3, r3, 1 | r3++;
| }
| if (r2 != 0xa) {
0x00025ee0 streq r3, [r7, 8] | *((r7 + 8)) = r3;
| }
0x00025ee4 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00025ee8 mov r2, 1 | r2 = 1;
0x00025eec add r3, sp, 0x40 | r3 += var_40h;
0x00025ef0 add r1, r1, r2 | r1 += r2;
0x00025ef4 bl 0x1b234 | r0 = Curl_httpchunk_read ();
0x00025ef8 cmn r0, 1 |
| if (r0 != 1) {
0x00025efc bne 0x25e98 | goto label_9;
| }
0x00025f00 ldr r1, [pc, 0x338] | r1 = *(0x2623c);
0x00025f04 mov r0, r4 | r0 = r4;
0x00025f08 add r1, pc, r1 | r1 = pc + r1;
0x00025f0c bl 0x104cc | Curl_infof ();
0x00025f10 mov r3, 0 | r3 = 0;
0x00025f14 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00025f18 mov r3, 2 | r3 = 2;
0x00025f1c str r3, [r7, 0x1c] | *((r7 + 0x1c)) = r3;
0x00025f20 b 0x25e98 | goto label_9;
| label_43:
0x00025f24 mov r3, 0 | r3 = 0;
| label_45:
0x00025f28 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00025f2c b 0x25e98 | goto label_9;
| label_42:
0x00025f30 ldr r0, [pc, 0x30c] | r0 = *(0x26240);
0x00025f34 mov r2, 0x13 | r2 = 0x13;
0x00025f38 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00025f3c add r0, pc, r0 | r0 = pc + r0;
0x00025f40 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00025f44 cmp r0, 0 |
| if (r0 == 0) {
0x00025f48 beq 0x25f5c | goto label_46;
| }
0x00025f4c ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x00025f50 ldr r3, [pc, 0x2dc] | r3 = *(0x26230);
0x00025f54 cmp r2, r3 |
| if (r2 == r3) {
0x00025f58 beq 0x25db4 | goto label_10;
| }
| label_46:
0x00025f5c ldr r0, [pc, 0x2e4] | r0 = *(0x26244);
0x00025f60 mov r2, 0xf | r2 = 0xf;
0x00025f64 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00025f68 add r0, pc, r0 | r0 = pc + r0;
0x00025f6c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00025f70 cmp r0, 0 |
| if (r0 == 0) {
0x00025f74 beq 0x25fb8 | goto label_47;
| }
0x00025f78 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x00025f7c sub r3, r2, 0xc8 | r3 = r2 - 0xc8;
0x00025f80 cmp r3, 0x63 |
| if (r3 > 0x63) {
0x00025f84 bhi 0x25f9c | goto label_48;
| }
0x00025f88 ldr r1, [pc, 0x2bc] | r1 = *(0x26248);
0x00025f8c add r1, pc, r1 | r1 = pc + r1;
| do {
0x00025f90 mov r0, r4 | r0 = r4;
0x00025f94 bl 0x104cc | Curl_infof ();
0x00025f98 b 0x25e0c | goto label_11;
| label_48:
0x00025f9c ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00025fa0 mov r3, sb | r3 = sb;
0x00025fa4 mov r2, 0xa | r2 = 0xa;
0x00025fa8 mov r1, 0 | r1 = 0;
0x00025fac add r0, r0, 0xf | r0 += 0xf;
0x00025fb0 bl 0x2188c | curlx_strtoofft ();
0x00025fb4 b 0x25e0c | goto label_11;
| label_47:
0x00025fb8 ldr r8, [pc, 0x290] | r8 = *(0x2624c);
0x00025fbc ldr r1, [pc, 0x290] | r1 = *(0x26250);
0x00025fc0 add r8, pc, r8 | r8 = pc + r8;
0x00025fc4 mov r2, r8 | r2 = r8;
0x00025fc8 add r1, pc, r1 | r1 = pc + r1;
0x00025fcc ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00025fd0 bl 0xcf18 | r0 = Curl_compareheader ();
0x00025fd4 cmp r0, 0 |
| if (r0 != 0) {
0x00025fd8 beq 0x25fe8 |
| label_12:
0x00025fdc mov r3, 1 | r3 = 1;
0x00025fe0 strb r3, [r7, 0x20] | *((r7 + 0x20)) = r3;
0x00025fe4 b 0x25e0c | goto label_11;
| }
0x00025fe8 ldr sl, [pc, 0x268] | sl = *(0x26254);
0x00025fec mov r2, 0x12 | r2 = 0x12;
0x00025ff0 add sl, pc, sl | sl = pc + sl;
0x00025ff4 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00025ff8 mov r0, sl | r0 = sl;
0x00025ffc bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00026000 cmp r0, 0 |
| if (r0 == 0) {
0x00026004 beq 0x26060 | goto label_49;
| }
0x00026008 ldr r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
0x0002600c sub r3, r2, 0xc8 | r3 = r2 - 0xc8;
0x00026010 cmp r3, 0x63 |
| if (r3 > 0x63) {
0x00026014 ldrls r1, [pc, 0x240] | r1 = *((pc + 0x240));
| }
| if (r3 > 0x63) {
0x00026018 addls r1, pc, r1 | r1 = pc + r1;
| }
0x0002601c bls 0x25f90 |
| } while (r3 < 0x63);
0x00026020 ldr r2, [pc, 0x238] | r2 = *(0x2625c);
0x00026024 mov r1, sl | r1 = sl;
0x00026028 add r2, pc, r2 | r2 = pc + r2;
0x0002602c ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00026030 bl 0xcf18 | r0 = Curl_compareheader ();
0x00026034 cmp r0, 0 |
| if (r0 == 0) {
0x00026038 beq 0x25e0c | goto label_11;
| }
0x0002603c ldr r1, [pc, 0x220] | r1 = *(0x26260);
0x00026040 mov r0, r4 | r0 = r4;
0x00026044 add r1, pc, r1 | r1 = pc + r1;
0x00026048 bl 0x104cc | Curl_infof ();
0x0002604c mov r3, 1 | r3 = 1;
0x00026050 strb r3, [r7, 0x18] | *((r7 + 0x18)) = r3;
0x00026054 mov r0, r5 | r0 = r5;
0x00026058 bl 0x1b220 | Curl_httpchunk_init ();
0x0002605c b 0x25e0c | goto label_11;
| label_49:
0x00026060 ldr r1, [pc, 0x200] | r1 = *(0x26264);
0x00026064 mov r2, r8 | r2 = r8;
0x00026068 add r1, pc, r1 | r1 = pc + r1;
0x0002606c ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00026070 bl 0xcf18 | r0 = Curl_compareheader ();
0x00026074 cmp r0, 0 |
| if (r0 != 0) {
0x00026078 bne 0x25fdc | goto label_12;
| }
0x0002607c ldr r1, [pc, 0x1e8] | r1 = *(0x26268);
0x00026080 add r3, r4, 0xe8 | r3 = r4 + 0xe8;
0x00026084 add r2, sp, 0x3c | r2 += var_3ch;
0x00026088 add r1, pc, r1 | r1 = pc + r1;
0x0002608c ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00026090 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x00026094 cmp r0, 2 |
| if (r0 != 2) {
0x00026098 ldreq r2, [r4, 0xe8] | r2 = *((r4 + 0xe8));
| }
| if (r0 != 2) {
0x0002609c addeq r3, r4, 0x4000 | r3 = r4 + 0x4000;
| }
| if (r0 != 2) {
0x000260a0 streq r2, [r3, 0xa64] | *((r3 + 0xa64)) = r2;
| }
0x000260a4 b 0x25e0c | goto label_11;
| label_32:
0x000260a8 cmp r3, 0 |
| if (r3 == 0) {
0x000260ac beq 0x25b84 | goto label_13;
| }
0x000260b0 ldr r3, [r8, 0x1c] | r3 = *((r8 + 0x1c));
0x000260b4 cmp r3, 2 |
| if (r3 != 2) {
0x000260b8 bne 0x2573c | goto label_14;
| }
0x000260bc ldr r1, [r5, 0x4fc] | r1 = *((r5 + 0x4fc));
0x000260c0 mov r0, 1 | r0 = 1;
0x000260c4 add r3, r1, 0x4000 | r3 = r1 + 0x4000;
0x000260c8 stmib r3, {r0, r1} | __asm ("stmib r3, {r0, r1}");
0x000260cc str r1, [r3, 0xc] | *((r3 + 0xc)) = r1;
0x000260d0 mov r0, 0 | r0 = 0;
0x000260d4 mov r1, 0 | r1 = 0;
0x000260d8 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x000260dc strd r0, r1, [r3, 0x10] | __asm ("strd r0, r1, [r3, 0x10]");
0x000260e0 strb r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x000260e4 b 0x2573c | goto label_14;
| label_34:
0x000260e8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000260ec ldr r3, [pc, 0xc0] |
0x000260f0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000260f4 ldr r3, [r3] | r3 = *(0x261b0);
0x000260f8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r2, r3);
0x000260fc mov r3, 0 | r3 = 0;
0x00026100 str r3, [r4, 0x11c] | *((r4 + 0x11c)) = r3;
0x00026104 mov r1, 2 | r1 = 2;
0x00026108 mov r0, r5 | r0 = r5;
0x0002610c bl 0x1cb34 | Curl_conncontrol ();
0x00026110 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00026114 mov r0, r5 | r0 = r5;
0x00026118 ldr r1, [r3, 0x198] | r1 = *((r3 + 0x198));
0x0002611c bl 0x1bc30 | Curl_closesocket ();
0x00026120 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00026124 mvn r3, 0 | r3 = ~0;
0x00026128 str r3, [r2, 0x198] | *((r2 + 0x198)) = r3;
0x0002612c b 0x25be4 | goto label_15;
| label_33:
0x00026130 mov r3, 2 | r3 = 2;
0x00026134 str r3, [r7, 0x1c] | *((r7 + 0x1c)) = r3;
0x00026138 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0002613c ldr r3, [pc, 0x70] |
0x00026140 ldr r0, [r5, 0x298] | r0 = *((r5 + 0x298));
0x00026144 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00026148 mov r6, 0 | r6 = 0;
0x0002614c ldr r3, [r3] | r3 = *(0x261b0);
0x00026150 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00026154 ldr r1, [pc, 0x114] | r1 = *(0x2626c);
0x00026158 mov r3, 1 | r3 = 1;
0x0002615c str r6, [r5, 0x298] | *((r5 + 0x298)) = r6;
0x00026160 ldr r2, [sb, 0xa64] | r2 = *((sb + 0xa64));
0x00026164 strb r3, [sb, 0x89c] | *((sb + 0x89c)) = r3;
0x00026168 add r1, pc, r1 | r1 = pc + r1;
0x0002616c mov r0, r4 | r0 = r4;
0x00026170 bl 0x104cc | Curl_infof ();
0x00026174 strb r6, [r4, 0x115] | *((r4 + 0x115)) = r6;
0x00026178 strb r6, [r5, 0x263] | *((r5 + 0x263)) = r6;
| label_17:
0x0002617c mov r0, r5 | r0 = r5;
0x00026180 bl 0x255d8 | r0 = Curl_connect_complete ();
0x00026184 subs fp, r0, 0 |
| if (fp == r0) {
0x00026188 beq 0x25a64 | goto label_16;
| }
0x0002618c mov fp, 0 |
0x00026190 b 0x25a44 | goto label_3;
| label_29:
0x00026194 mov fp, 0x2a |
0x00026198 b 0x25a44 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x26274 */
| #include <stdint.h>
|
; (fcn) sym.Curl_proxy_connect () | void Curl_proxy_connect (int32_t arg1, int32_t arg2) {
| void * s;
| int32_t var_1b8h;
| r0 = arg1;
| r1 = arg2;
0x00026274 ldr r3, [r0, 0xf0] | r3 = *((r0 + 0xf0));
0x00026278 push {r4, r5, r6, r7, r8, lr} |
0x0002627c ldr r7, [pc, 0x124] | r7 = *(0x263a4);
0x00026280 cmp r3, 2 |
0x00026284 add r7, pc, r7 | r7 = pc + r7;
0x00026288 sub sp, sp, 0x1b8 |
0x0002628c mov r4, r0 | r4 = r0;
0x00026290 mov r5, r1 | r5 = r1;
| if (r3 == 2) {
0x00026294 beq 0x262b4 | goto label_5;
| }
| label_0:
0x00026298 ldrb r3, [r4, 0x261] | r3 = *((r4 + 0x261));
0x0002629c cmp r3, 0 |
| if (r3 != 0) {
0x000262a0 bne 0x262f4 | goto label_6;
| }
| label_1:
0x000262a4 mov r6, 0 | r6 = 0;
| do {
| label_2:
0x000262a8 mov r0, r6 | r0 = r6;
0x000262ac add sp, sp, 0x1b8 |
0x000262b0 pop {r4, r5, r6, r7, r8, pc} |
| label_5:
0x000262b4 add r8, r0, r1 | r8 = r0 + r1;
0x000262b8 ldrb r3, [r8, 0x271] | r3 = *((r8 + 0x271));
0x000262bc cmp r3, 0 |
| if (r3 != 0) {
0x000262c0 bne 0x262e4 | goto label_7;
| }
0x000262c4 add r2, r1, 0x270 | r2 = r1 + 0x270;
0x000262c8 add r2, r2, 1 | r2++;
0x000262cc add r2, r0, r2 | r2 = r0 + r2;
0x000262d0 bl 0x36e84 | r0 = Curl_ssl_connect_nonblocking ();
0x000262d4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x000262d8 movne r3, 1 | r3 = 1;
| }
| if (r6 == r0) {
0x000262dc strbne r3, [r4, 0x251] | *((r4 + 0x251)) = r3;
| }
0x000262e0 bne 0x262a8 |
| } while (r6 != r0);
| label_7:
0x000262e4 ldrb r3, [r8, 0x271] | r3 = *((r8 + 0x271));
0x000262e8 cmp r3, 0 |
| if (r3 != 0) {
0x000262ec bne 0x26298 | goto label_0;
| }
0x000262f0 b 0x262a4 | goto label_1;
| label_6:
0x000262f4 ldrb r3, [r4, 0x256] | r3 = *((r4 + 0x256));
0x000262f8 cmp r3, 0 |
| if (r3 == 0) {
0x000262fc beq 0x262a4 | goto label_1;
| }
0x00026300 ldr r6, [r4] | r6 = *(r4);
0x00026304 mov r3, sp | r3 = sp;
0x00026308 mov r0, r3 | r0 = r3;
0x0002630c mov r2, 0x1b8 | r2 = 0x1b8;
0x00026310 mov r1, 0 | r1 = 0;
0x00026314 ldr r8, [r6, 0x12c] | r8 = *((r6 + 0x12c));
0x00026318 bl 0x576c | memset (r0, r1, r2);
0x0002631c mov r1, 0 | r1 = 0;
0x00026320 str r0, [r6, 0x12c] | *((r6 + 0x12c)) = r0;
0x00026324 mov r0, r4 | r0 = r4;
0x00026328 bl 0x1cb34 | Curl_conncontrol ();
0x0002632c ldrb r3, [r4, 0x253] | r3 = *((r4 + 0x253));
0x00026330 cmp r3, 0 |
| if (r3 == 0) {
0x00026334 beq 0x26384 | goto label_8;
| }
0x00026338 cmp r5, 1 |
0x0002633c ldr r2, [r4, 0xb4] | r2 = *((r4 + 0xb4));
| if (r5 != 1) {
0x00026340 bne 0x26394 | goto label_9;
| }
| label_3:
0x00026344 add r3, r4, 0x108 | r3 = r4 + 0x108;
0x00026348 ldrh r3, [r3] | r3 = *(r3);
| label_4:
0x0002634c mov r1, r5 | r1 = r5;
0x00026350 mov r0, r4 | r0 = r4;
0x00026354 bl 0x2565c | Curl_proxyCONNECT ();
0x00026358 ldr r3, [r4] | r3 = *(r4);
0x0002635c str r8, [r3, 0x12c] | *((r3 + 0x12c)) = r8;
0x00026360 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00026364 bne 0x262a8 | goto label_2;
| }
0x00026368 ldr r3, [pc, 0x3c] |
0x0002636c ldr r0, [r4, 0x298] | r0 = *((r4 + 0x298));
0x00026370 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00026374 ldr r3, [r3] | r3 = $d;
0x00026378 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002637c str r6, [r4, 0x298] | *((r4 + 0x298)) = r6;
0x00026380 b 0x262a8 | goto label_2;
| label_8:
0x00026384 cmp r5, 1 |
| if (r5 != 1) {
0x00026388 ldreq r2, [r4, 0xa8] | r2 = *((r4 + 0xa8));
| }
| if (r5 != 1) {
0x0002638c ldrne r2, [r4, 0xa0] | r2 = *((r4 + 0xa0));
| goto label_10;
| }
| if (r5 == 1) {
| label_10:
0x00026390 beq 0x26344 | goto label_3;
| }
| label_9:
0x00026394 ldrb r3, [r4, 0x254] | r3 = *((r4 + 0x254));
0x00026398 cmp r3, 0 |
| if (r3 == 0) {
0x0002639c ldrne r3, [r4, 0x104] | r3 = *((r4 + 0x104));
| }
| if (r3 != 0) {
0x000263a0 ldreq r3, [r4, 0x100] | r3 = *((r4 + 0x100));
| }
0x000263a4 b 0x2634c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x280e0 */
| #include <stdint.h>
|
| uint32_t rotate_right32 (uint32_t value, uint32_t count) {
| const uint32_t mask = (CHAR_BIT * sizeof (value)) - 1;
| count &= mask;
| return (value >> count) | (value << (-count & mask));
| }
|
; (fcn) sym.Curl_rand () | void Curl_rand (int32_t arg_0h, int32_t arg_4h, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000280e0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000280e4 ldr r7, [pc, 0x15c] | r7 = *(0x28244);
0x000280e8 ldr r6, [pc, 0x15c] | r6 = $d;
0x000280ec add r7, pc, r7 | r7 = pc + r7;
0x000280f0 sub sp, sp, 0x1c |
0x000280f4 mov r8, r0 | r8 = r0;
0x000280f8 mov r5, r1 | r5 = r1;
0x000280fc mov r4, r2 | r4 = r2;
0x00028100 mov fp, 0x2b |
0x00028104 add sl, r7, 4 | sl = r7 + 4;
| label_0:
0x00028108 cmp r4, 0 |
| if (r4 == 0) {
0x0002810c beq 0x2823c | goto label_2;
| }
0x00028110 cmp r4, 4 |
0x00028114 mov r2, 4 | r2 = 4;
0x00028118 add r1, sp, 0xc | r1 += var_ch;
0x0002811c mov r0, r8 | r0 = r8;
| if (r4 >= 4) {
0x00028120 movlo sb, r4 | sb = r4;
| }
| if (r4 < 4) {
0x00028124 movhs sb, 4 | sb = 4;
| }
0x00028128 bl 0x378b4 | r0 = Curl_ssl_random ();
0x0002812c cmp r0, 4 |
0x00028130 mov fp, r0 |
| if (r0 != 4) {
0x00028134 bne 0x28234 | goto label_3;
| }
0x00028138 ldrb r1, [r7] | r1 = *(r7);
0x0002813c cmp r1, 0 |
| if (r1 == 0) {
0x00028140 bne 0x281ec |
0x00028144 ldr r0, [pc, 0x104] | r0 = *(0x2824c);
0x00028148 add r0, pc, r0 | r0 = pc + r0;
0x0002814c bl 0x5a24 | r0 = open64 ();
0x00028150 subs r3, r0, 0 | r3 = r0 - 0;
0x00028154 str r3, [sp, 4] | var_4h = r3;
| if (r3 >= r0) {
0x00028158 blt 0x28180 |
0x0002815c mov r2, fp | r2 = fp;
0x00028160 mov r1, sl | r1 = sl;
0x00028164 bl 0x5304 | read (r0, r1, r2);
0x00028168 ldr r3, [sp, 4] | r3 = var_4h;
0x0002816c cmp r0, 4 |
| if (r0 != 4) {
0x00028170 moveq r2, 1 | r2 = 1;
| }
0x00028174 mov r0, r3 | r0 = r3;
| if (r0 != 4) {
0x00028178 strbeq r2, [r7] | *(r7) = r2;
| }
0x0002817c bl 0x55f8 | close (r0);
| }
0x00028180 ldr fp, [pc, 0xcc] | fp = *(0x28250);
0x00028184 add fp, pc, fp |
0x00028188 ldrb r3, [fp] | r3 = *(fp);
0x0002818c cmp r3, 0 |
| if (r3 != 0) {
0x00028190 bne 0x281ec | goto label_4;
| }
0x00028194 add r0, sp, 0x10 | r0 += var_10h;
0x00028198 bl 0x69f0 | Curl_now ();
0x0002819c ldr r1, [pc, 0xb4] | r1 = *(0x28254);
0x000281a0 mov r0, r8 | r0 = r8;
0x000281a4 add r1, pc, r1 | r1 = pc + r1;
0x000281a8 bl 0x104cc | Curl_infof ();
0x000281ac ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x000281b0 add r3, r3, r2 | r3 += r2;
0x000281b4 ldr r2, [fp, 4] | r2 = *(arg_4h);
0x000281b8 add r2, r3, r2 | r2 = r3 + r2;
0x000281bc mul r3, r6, r2 | r3 = r6 * r2;
0x000281c0 add r2, r3, 0x3000 | r2 = r3 + 0x3000;
0x000281c4 add r2, r2, 0x39 | r2 += 0x39;
0x000281c8 mul r3, r6, r2 | r3 = r6 * r2;
0x000281cc add r2, r3, 0x3000 | r2 = r3 + 0x3000;
0x000281d0 add r2, r2, 0x39 | r2 += 0x39;
0x000281d4 mul r3, r6, r2 | r3 = r6 * r2;
0x000281d8 add r3, r3, 0x3000 | r3 += 0x3000;
0x000281dc add r3, r3, 0x39 | r3 += 0x39;
0x000281e0 str r3, [fp, 4] | *(arg_4h) = r3;
0x000281e4 mov r3, 1 | r3 = 1;
0x000281e8 strb r3, [fp] | *(fp) = r3;
| }
| label_4:
0x000281ec ldr r2, [pc, 0x68] | r2 = *(0x28258);
0x000281f0 add r2, pc, r2 | r2 = pc + r2;
0x000281f4 ldr r3, [r2, 4] |
0x000281f8 mul r1, r6, r3 | r1 = r6 * r3;
0x000281fc add r3, r1, 0x3000 | r3 = r1 + 0x3000;
0x00028200 add r3, r3, 0x39 | r3 = 0x28295;
0x00028204 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00028208 ror r3, r3, 0x10 | r3 = rotate_right32 (r3, 16);
0x0002820c str r3, [sp, 0xc] | var_ch = r3;
| label_1:
0x00028210 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00028214 add r2, r5, sb | r2 = r5 + sb;
| do {
0x00028218 strb r3, [r5], 1 | *(r5) = r3;
| r5++;
0x0002821c cmp r5, r2 |
0x00028220 lsr r3, r3, 8 | r3 >>= 8;
0x00028224 bne 0x28218 |
| } while (r5 != r2);
0x00028228 sub r4, r4, sb | r4 -= sb;
0x0002822c mov fp, 0 |
0x00028230 b 0x28108 | goto label_0;
| label_3:
0x00028234 cmp r0, 0 |
| if (r0 == 0) {
0x00028238 beq 0x28210 | goto label_1;
| }
| label_2:
0x0002823c mov r0, fp | r0 = fp;
0x00028240 add sp, sp, 0x1c |
0x00028244 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x28260 */
| #include <stdint.h>
|
; (fcn) sym.Curl_rand_hex () | uint32_t Curl_rand_hex (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x00028260 cmp r2, 0xff |
| if (r2 > 0xff) {
0x00028264 bhi 0x282e0 | goto label_0;
| }
0x00028268 tst r2, 1 |
| if ((r2 & 1) == 0) {
0x0002826c beq 0x282e0 | goto label_0;
| }
0x00028270 push {r4, r5, lr} |
0x00028274 sub r4, r2, 1 | r4 = r2 - 1;
0x00028278 sub sp, sp, 0x84 |
0x0002827c mov r5, r1 | r5 = r1;
0x00028280 lsr r2, r4, 1 | r2 = r4 >> 1;
0x00028284 mov r1, sp | r1 = sp;
0x00028288 bl 0x280e0 | r0 = Curl_rand ();
0x0002828c cmp r0, 0 |
| if (r0 != 0) {
0x00028290 bne 0x282b8 | goto label_1;
| }
0x00028294 ldr ip, [pc, 0x4c] | ip = *(0x282e4);
0x00028298 mov r1, r5 | r1 = r5;
0x0002829c sub r2, sp, 1 | r2 = sp - 1;
0x000282a0 add ip, pc, ip |
| do {
0x000282a4 cmp r4, 0 |
0x000282a8 mov r3, r1 | r3 = r1;
0x000282ac add r1, r1, 2 | r1 += 2;
| if (r4 == 0) {
0x000282b0 bne 0x282c0 |
0x000282b4 strb r4, [r3] | *(r3) = r4;
| label_1:
0x000282b8 add sp, sp, 0x84 |
0x000282bc pop {r4, r5, pc} |
| }
0x000282c0 ldrb r3, [r2, 1]! | r3 = var_0h;
0x000282c4 sub r4, r4, 2 | r4 -= 2;
0x000282c8 ldrb lr, [ip, r3, lsr 4] |
0x000282cc and r3, r3, 0xf | r3 &= 0xf;
0x000282d0 ldrb r3, [ip, r3] | r3 = *((ip + r3));
0x000282d4 strb lr, [r1, -2] |
0x000282d8 strb r3, [r1, -1] | *((r1 - 1)) = r3;
0x000282dc b 0x282a4 |
| } while (1);
| label_0:
0x000282e0 mov r0, 0x2b | r0 = 0x2b;
0x000282e4 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x182f4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.Curl_readwrite () | void Curl_readwrite (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_10h_2;
| int32_t var_18h;
| int32_t var_20h;
| int32_t var_20h_2;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_52h;
| int32_t var_53h;
| size_t size;
| int32_t var_58h;
| int32_t var_5ch;
| r0 = arg1;
| r1 = arg2;
0x000182f4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000182f8 ldr sl, [r0, 0x4e8] | sl = *((r0 + 0x4e8));
0x000182fc sub sp, sp, 0x5c |
0x00018300 str r3, [sp, 0x38] | var_38h = r3;
0x00018304 ldr r3, [pc, 0xec8] | r3 = *(0x191d0);
0x00018308 str r2, [sp, 0x2c] | var_2ch = r2;
0x0001830c add r3, pc, r3 | r3 = pc + r3;
0x00018310 str r3, [sp, 0x3c] | var_3ch = r3;
0x00018314 add r3, r1, 0x70 | r3 = r1 + 0x70;
0x00018318 str r3, [sp, 0x30] | var_30h = r3;
0x0001831c mov r3, 0 | r3 = 0;
0x00018320 str r3, [r0, 0x4e8] | *((r0 + 0x4e8)) = r3;
0x00018324 ldr r3, [r1, 0x110] | r3 = *((r1 + 0x110));
0x00018328 mov r8, r0 | r8 = r0;
0x0001832c and r2, r3, 0x15 | r2 = r3 & 0x15;
0x00018330 cmp r2, 1 |
0x00018334 and r3, r3, 0x2a | r3 &= 0x2a;
| if (r2 != 1) {
0x00018338 ldreq r0, [r0, 0x290] | r0 = *((r0 + 0x290));
| }
| if (r2 == 1) {
0x0001833c mvnne r0, 0 | r0 = ~0;
| }
0x00018340 cmp r3, 2 |
0x00018344 ldr r3, [r8] | r3 = *(r8);
| if (r3 != 2) {
0x00018348 ldreq r2, [r8, 0x294] | r2 = *((r8 + 0x294));
| }
0x0001834c add r3, r3, 0x4000 | r3 += 0x4000;
0x00018350 ldr r3, [r3, 0xa18] | r3 = *((r3 + 0xa18));
| if (r3 == 2) {
0x00018354 mvnne r2, 0 | r2 = ~0;
| }
0x00018358 cmp r3, 0 |
0x0001835c mov r4, r1 | r4 = r1;
| if (r3 == 0) {
0x00018360 orrne sl, sl, 1 | sl |= 1;
| }
| if (r3 == 0) {
0x00018364 bne 0x18380 |
0x00018368 cmp sl, 0 |
| if (sl != 0) {
0x0001836c bne 0x18380 | goto label_19;
| }
0x00018370 mov r3, sl | r3 = sl;
0x00018374 mvn r1, 0 | r1 = ~0;
0x00018378 bl 0x22ea8 | r0 = Curl_socket_check ();
0x0001837c mov sl, r0 | sl = r0;
| }
| label_19:
0x00018380 cmp sl, 4 |
| if (sl != 4) {
0x00018384 bne 0x183a8 | goto label_20;
| }
0x00018388 ldr r1, [pc, 0xe48] | r1 = $d;
0x0001838c mov r0, r4 | r0 = r4;
0x00018390 add r1, pc, r1 | r1 = pc + r1;
0x00018394 bl 0x10544 | Curl_failf ();
0x00018398 mov r5, 0x37 | r5 = 0x37;
| do {
| label_0:
0x0001839c mov r0, r5 | r0 = r5;
0x000183a0 add sp, sp, 0x5c |
0x000183a4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x000183a8 ldr sb, [r4, 0x110] | sb = *((r4 + 0x110));
0x000183ac ands sb, sb, 1 | sb &= 1;
| if (sb == sb) {
0x000183b0 beq 0x18cf4 | goto label_21;
| }
0x000183b4 tst sl, 1 |
0x000183b8 mov r3, 0 | r3 = 0;
| if ((sl & 1) == 0) {
0x000183bc bne 0x183cc |
0x000183c0 ldrb r2, [r8, 0x269] | r2 = *((r8 + 0x269));
0x000183c4 cmp r2, r3 |
| if (r2 == r3) {
0x000183c8 beq 0x18cf0 | goto label_22;
| }
| }
0x000183cc ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000183d0 strb r3, [sp, 0x52] | var_52h = r3;
0x000183d4 strb r3, [r2] | *(r2) = r3;
0x000183d8 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000183dc mov r6, 0 | r6 = 0;
0x000183e0 strb r3, [r2] | *(r2) = r3;
0x000183e4 mov r3, 0x64 | r3 = 0x64;
0x000183e8 str r3, [sp, 0x34] | var_34h = r3;
0x000183ec ldr r3, [pc, 0xde8] | r3 = *(0x191d8);
0x000183f0 mov fp, r6 |
0x000183f4 add r3, pc, r3 | r3 = pc + r3;
0x000183f8 str r3, [sp, 0x40] | var_40h = r3;
0x000183fc ldr r3, [pc, 0xddc] | r3 = *(0x191dc);
0x00018400 add r3, pc, r3 | r3 = pc + r3;
0x00018404 str r3, [sp, 0x44] | var_44h = r3;
| label_10:
0x00018408 ldrd r0, r1, [r4, 0x70] | __asm ("ldrd r0, r1, [r4, 0x70]");
0x0001840c ldr ip, [r4, 0x498] | ip = *((r4 + 0x498));
0x00018410 mvn r3, 0 | r3 = ~0;
0x00018414 mvn r2, 0 | r2 = ~0;
0x00018418 cmp r1, r3 |
0x0001841c cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| if (r1 != r3) {
0x00018420 beq 0x18458 |
0x00018424 ldrb r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x00018428 cmp r3, 0 |
| if (r3 != 0) {
0x0001842c bne 0x18458 | goto label_23;
| }
0x00018430 ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x00018434 subs r0, r0, r2 | r0 -= r2;
0x00018438 sbc r1, r1, r3 | __asm ("sbc r1, r1, r3");
0x0001843c strd r0, r1, [sp, 0x20] | __asm ("strd r0, r1, [var_20h]");
0x00018440 ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h]");
0x00018444 mov r1, 0 | r1 = 0;
0x00018448 cmp r2, ip |
0x0001844c sbcs r3, r3, r1 | __asm ("sbcs r3, r3, r1");
0x00018450 ldr r3, [sp, 0x20] | r3 = var_20h;
| if (r2 < ip) {
0x00018454 movlt ip, r3 | goto label_23;
| }
| }
| label_23:
0x00018458 cmp ip, 0 |
| if (ip != 0) {
0x0001845c streq ip, [sp, 0x54] | size = ip;
| }
| if (ip == 0) {
0x00018460 beq 0x18494 | goto label_24;
| }
0x00018464 add r3, sp, 0x54 | r3 += size;
0x00018468 str r3, [sp] | *(sp) = r3;
0x0001846c ldr r2, [r4, 0x108] | r2 = *((r4 + 0x108));
0x00018470 mov r3, ip | r3 = ip;
0x00018474 ldr r1, [r8, 0x290] | r1 = *((r8 + 0x290));
0x00018478 mov r0, r8 | r0 = r8;
0x0001847c bl 0x102f0 | r0 = Curl_read ();
0x00018480 cmp r0, 0x51 |
0x00018484 mov r5, r0 | r5 = r0;
| if (r0 == 0x51) {
0x00018488 beq 0x18ce8 | goto label_25;
| }
0x0001848c cmp r0, 0 |
0x00018490 bne 0x1839c |
| } while (r0 != 0);
| label_24:
0x00018494 ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x00018498 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 == r2) {
0x0001849c bne 0x184e0 |
0x000184a0 ldrd r2, r3, [r4, 0x98] | __asm ("ldrd r2, r3, [r4, 0x98]");
0x000184a4 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x000184a8 bne 0x184e0 | goto label_26;
| }
0x000184ac mov r1, 7 | r1 = 7;
0x000184b0 mov r0, r4 | r0 = r4;
0x000184b4 bl 0x7f7c | Curl_pgrsTime ();
0x000184b8 ldr r3, [r4, 0xf4] | r3 = *((r4 + 0xf4));
0x000184bc cmp r3, 0 |
| if (r3 == 0) {
0x000184c0 beq 0x184e0 | goto label_26;
| }
0x000184c4 add r5, sp, 0x48 | r5 += var_48h;
0x000184c8 mov r0, r5 | r0 = r5;
0x000184cc bl 0x69f0 | Curl_now ();
0x000184d0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000184d4 ldm r5, {r0, r1} | r0 = *(r5);
| r1 = *((r5 + 4));
0x000184d8 add r3, r3, 0x7c | r3 += 0x7c;
0x000184dc stm r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
| }
| label_26:
0x000184e0 ldr r3, [sp, 0x54] | r3 = size;
0x000184e4 cmp r3, 0 |
| if (r3 != 0) {
0x000184e8 ldreq r2, [r4, 0x104] | r2 = *((r4 + 0x104));
| }
| if (r3 == 0) {
0x000184ec movne r2, 0 | r2 = 0;
| }
0x000184f0 clzeq r2, r2 | __asm ("clzeq r2, r2");
| if (r3 != 0) {
0x000184f4 lsreq r2, r2, 5 | r2 >>= 5;
| }
0x000184f8 str r2, [sp, 0x20] | var_20h = r2;
0x000184fc ldr r2, [sp, 0x20] | r2 = var_20h;
0x00018500 and r6, r2, 1 | r6 = r2 & 1;
0x00018504 cmp r3, 0 |
| if (r3 > 0) {
0x00018508 movle r2, r6 | r2 = r6;
| }
| if (r3 <= 0) {
0x0001850c orrgt r2, r6, 1 | r2 = r6 | 1;
| }
0x00018510 cmp r2, 0 |
| if (r2 == 0) {
0x00018514 beq 0x185e8 | goto label_27;
| }
0x00018518 ldr r2, [r4, 0x108] | r2 = *((r4 + 0x108));
0x0001851c mov r1, 0 | r1 = 0;
0x00018520 strb r1, [r2, r3] | *((r2 + r3)) = r1;
0x00018524 ldr r3, [r4, 0x108] | r3 = *((r4 + 0x108));
0x00018528 str r3, [r4, 0xcc] | *((r4 + 0xcc)) = r3;
0x0001852c ldr r3, [r8, 0x284] | r3 = *((r8 + 0x284));
0x00018530 ldr r5, [r3, 0x34] | r5 = *((r3 + 0x34));
0x00018534 cmp r5, r1 |
| if (r5 != r1) {
0x00018538 bne 0x185f8 | goto label_28;
| }
| label_1:
0x0001853c ldrb r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x00018540 cmp r3, 0 |
| if (r3 == 0) {
0x00018544 beq 0x186c4 | goto label_29;
| }
0x00018548 add r3, sp, 0x58 | r3 += var_58h;
0x0001854c mov r2, 0 | r2 = 0;
0x00018550 add r7, sp, 0x54 | r7 += size;
0x00018554 strb r2, [r3, -5]! | *((r3 -= 5)) = r2;
0x00018558 mov r1, r8 | r1 = r8;
0x0001855c mov r2, r7 | r2 = r7;
0x00018560 mov r0, r4 | r0 = r4;
0x00018564 bl 0xf060 | r0 = Curl_http_readwrite_headers ();
0x00018568 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0001856c bne 0x1839c | goto label_0;
| }
0x00018570 ldr r3, [r8, 0x284] | r3 = *((r8 + 0x284));
0x00018574 ldr r5, [r3, 0x34] | r5 = *((r3 + 0x34));
0x00018578 cmp r5, 0 |
| if (r5 != 0) {
0x0001857c bne 0x18668 | goto label_30;
| }
| label_2:
0x00018580 ldrb r3, [sp, 0x53] | r3 = var_53h;
0x00018584 cmp r3, 0 |
| if (r3 == 0) {
0x00018588 beq 0x186c4 | goto label_29;
| }
0x0001858c ldr r3, [sp, 0x54] | r3 = size;
0x00018590 cmp r3, 0 |
| if (r3 <= 0) {
0x00018594 ble 0x18620 | goto label_3;
| }
0x00018598 ldr r3, [r8] | r3 = *(r8);
0x0001859c mov r1, 1 | r1 = 1;
0x000185a0 ldr r0, [r3, 0x64] | r0 = *((r3 + 0x64));
0x000185a4 bl 0x1dbe4 | Curl_pipeline_wanted ();
0x000185a8 add r3, r4, 0x4000 | r3 = r4 + 0x4000;
0x000185ac ldr r3, [r3, 0x9ec] | r3 = *((r3 + 0x9ec));
0x000185b0 ldr r2, [sp, 0x54] | r2 = size;
0x000185b4 cmp r0, 0 |
| if (r0 == 0) {
0x000185b8 beq 0x186b0 | goto label_31;
| }
0x000185bc ldr r1, [pc, 0xc20] | r1 = *(0x191e0);
0x000185c0 mov r0, r4 | r0 = r4;
0x000185c4 add r1, pc, r1 | r1 = pc + r1;
0x000185c8 bl 0x104cc | Curl_infof ();
0x000185cc ldr r3, [r8, 0x2e8] | r3 = *((r8 + 0x2e8));
0x000185d0 ldr r2, [sp, 0x54] | r2 = size;
0x000185d4 sub r3, r3, r2 | r3 -= r2;
0x000185d8 str r3, [r8, 0x2e8] | *((r8 + 0x2e8)) = r3;
0x000185dc mov r3, 1 | r3 = 1;
0x000185e0 strb r3, [r8, 0x269] | *((r8 + 0x269)) = r3;
0x000185e4 b 0x18620 | goto label_3;
| label_27:
0x000185e8 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x000185ec bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
| label_5:
0x000185f0 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x000185f4 b 0x18620 | goto label_3;
| label_28:
0x000185f8 add r3, sp, 0x52 | r3 += var_52h;
0x000185fc add r2, sp, 0x54 | r2 += size;
0x00018600 mov r1, r8 | r1 = r8;
0x00018604 mov r0, r4 | r0 = r4;
0x00018608 blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0001860c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00018610 bne 0x1839c | goto label_0;
| }
0x00018614 ldrb r3, [sp, 0x52] | r3 = var_52h;
0x00018618 cmp r3, 0 |
| if (r3 == 0) {
0x0001861c beq 0x1853c | goto label_1;
| }
| label_3:
0x00018620 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00018624 cmp r3, 0 |
| if (r3 == 0) {
0x00018628 beq 0x18cc0 | goto label_32;
| }
| label_11:
0x0001862c ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018630 and r3, r3, 3 | r3 &= 3;
0x00018634 cmp r3, 2 |
| if (r3 != 2) {
0x00018638 bne 0x18770 | goto label_4;
| }
0x0001863c ldrb r3, [r8, 0x251] | r3 = *((r8 + 0x251));
0x00018640 cmp r3, 0 |
| if (r3 == 0) {
0x00018644 beq 0x18770 | goto label_4;
| }
0x00018648 ldr r1, [pc, 0xb98] | r1 = *(0x191e4);
0x0001864c mov r0, r4 | r0 = r4;
0x00018650 add r1, pc, r1 | r1 = pc + r1;
0x00018654 bl 0x104cc | Curl_infof ();
0x00018658 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0001865c bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x00018660 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x00018664 b 0x18770 | goto label_4;
| label_30:
0x00018668 ldrd r2, r3, [r4, 0x80] | __asm ("ldrd r2, r3, [r4, 0x80]");
0x0001866c cmp r2, 1 |
0x00018670 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x00018674 bge 0x18580 | goto label_2;
| }
0x00018678 ldr r3, [sp, 0x54] | r3 = size;
0x0001867c cmp r3, 0 |
| if (r3 <= 0) {
0x00018680 ble 0x18580 | goto label_2;
| }
0x00018684 add r3, sp, 0x52 | r3 += var_52h;
0x00018688 mov r2, r7 | r2 = r7;
0x0001868c mov r1, r8 | r1 = r8;
0x00018690 mov r0, r4 | r0 = r4;
0x00018694 blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00018698 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0001869c bne 0x1839c | goto label_0;
| }
0x000186a0 ldrb r3, [sp, 0x52] | r3 = var_52h;
0x000186a4 cmp r3, 0 |
| if (r3 == 0) {
0x000186a8 beq 0x18580 | goto label_2;
| }
0x000186ac b 0x18620 | goto label_3;
| label_31:
0x000186b0 ldr r1, [pc, 0xb34] | r1 = *(0x191e8);
0x000186b4 mov r0, r4 | r0 = r4;
0x000186b8 add r1, pc, r1 | r1 = pc + r1;
0x000186bc bl 0x104cc | Curl_infof ();
0x000186c0 b 0x18620 | goto label_3;
| label_29:
0x000186c4 ldr r3, [r4, 0xcc] | r3 = *((r4 + 0xcc));
0x000186c8 cmp r3, 0 |
| if (r3 == 0) {
0x000186cc beq 0x18b50 | goto label_8;
| }
0x000186d0 ldrb r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x000186d4 cmp r3, 0 |
| if (r3 != 0) {
0x000186d8 bne 0x18b50 | goto label_8;
| }
0x000186dc ldr r3, [sp, 0x54] | r3 = size;
0x000186e0 cmp r3, 0 |
| if (r3 <= 0) {
0x000186e4 orrgt r6, r6, 1 | r6 |= 1;
| }
0x000186e8 cmp r6, 0 |
| if (r6 == 0) {
0x000186ec beq 0x18b50 | goto label_8;
| }
0x000186f0 ldrb r3, [r4, 0x4d0] | r3 = *((r4 + 0x4d0));
0x000186f4 cmp r3, 0 |
| if (r3 != 0) {
0x000186f8 beq 0x1871c |
0x000186fc mov r1, 2 | r1 = 2;
0x00018700 mov r0, r8 | r0 = r8;
0x00018704 bl 0x1cb34 | Curl_conncontrol ();
0x00018708 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0001870c mov r3, 1 | r3 = 1;
0x00018710 strb r3, [r2] | *(r2) = r3;
0x00018714 mov r5, 8 | r5 = 8;
0x00018718 b 0x1839c | goto label_0;
| }
0x0001871c ldr r3, [r4, 0x104] | r3 = *((r4 + 0x104));
0x00018720 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00018724 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x00018728 bne 0x18890 | goto label_33;
| }
0x0001872c ldr r3, [r8, 0x284] | r3 = *((r8 + 0x284));
0x00018730 ldr r2, [pc, 0xab8] | r2 = *(0x191ec);
0x00018734 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00018738 tst r2, r3 |
| if ((r2 & r3) == 0) {
0x0001873c beq 0x18890 | goto label_33;
| }
0x00018740 ldr r3, [r4, 0x11c] | r3 = *((r4 + 0x11c));
0x00018744 cmp r3, 0 |
| if (r3 == 0) {
0x00018748 beq 0x1879c | goto label_34;
| }
0x0001874c ldrb r3, [r8, 0x251] | r3 = *((r8 + 0x251));
0x00018750 mov r2, 1 | r2 = 1;
0x00018754 cmp r3, 0 |
| if (r3 == 0) {
0x00018758 beq 0x18788 | goto label_35;
| }
0x0001875c ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018760 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00018764 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x00018768 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001876c strb r2, [r3] | *(r3) = r2;
| do {
| label_4:
0x00018770 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00018774 ldrb r3, [r3] | r3 = *(r3);
0x00018778 cmp r3, 0 |
| if (r3 == 0) {
0x0001877c beq 0x18cf4 | goto label_21;
| }
0x00018780 mov r5, 0 | r5 = 0;
0x00018784 b 0x1839c | goto label_0;
| label_35:
0x00018788 ldr r1, [pc, 0xa64] | r1 = *(0x191f0);
0x0001878c strb r2, [r4, 0x115] | *((r4 + 0x115)) = r2;
0x00018790 add r1, pc, r1 | r1 = pc + r1;
0x00018794 mov r0, r4 | r0 = r4;
0x00018798 bl 0x104cc | Curl_infof ();
| label_34:
0x0001879c add r3, r4, 0x4a00 | r3 = r4 + 0x4a00;
0x000187a0 ldrd r0, r1, [r3, -8] | __asm ("ldrd r0, r1, [r3, -8]");
0x000187a4 orrs r3, r0, r1 | r3 = r0 | r1;
| if (r3 == r0) {
0x000187a8 beq 0x1882c | goto label_36;
| }
0x000187ac ldrb r3, [r4, 0xdc] | r3 = *((r4 + 0xdc));
0x000187b0 cmp r3, 0 |
| if (r3 != 0) {
0x000187b4 bne 0x1882c | goto label_36;
| }
0x000187b8 ldr r5, [r4, 0x3d0] | r5 = *((r4 + 0x3d0));
0x000187bc cmp r5, 1 |
| if (r5 != 1) {
0x000187c0 bne 0x1882c | goto label_36;
| }
0x000187c4 ldrb r3, [r4, 0x115] | r3 = *((r4 + 0x115));
0x000187c8 cmp r3, 0 |
| if (r3 != 0) {
0x000187cc bne 0x1882c | goto label_36;
| }
0x000187d0 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x000187d4 cmp r1, r3 |
0x000187d8 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| if (r1 != r3) {
0x000187dc bne 0x18814 | goto label_37;
| }
0x000187e0 ldr r1, [pc, 0xa10] | r1 = *(0x191f4);
0x000187e4 mov r0, r4 | r0 = r4;
0x000187e8 add r1, pc, r1 | r1 = pc + r1;
0x000187ec bl 0x104cc | Curl_infof ();
0x000187f0 mov r1, r5 | r1 = r5;
0x000187f4 mov r0, r8 | r0 = r8;
0x000187f8 bl 0x1cb34 | Curl_conncontrol ();
0x000187fc ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018800 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00018804 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x00018808 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001880c strb r5, [r3] | *(r3) = r5;
0x00018810 b 0x18770 |
| } while (1);
| label_37:
0x00018814 ldr r1, [pc, 0x9e0] | r1 = *(0x191f8);
0x00018818 mov r0, r4 | r0 = r4;
0x0001881c add r1, pc, r1 | r1 = pc + r1;
0x00018820 bl 0x10544 | Curl_failf ();
0x00018824 mov r5, 0x21 | r5 = 0x21;
0x00018828 b 0x1839c | goto label_0;
| label_36:
0x0001882c ldr r3, [r4, 0x3c8] | r3 = *((r4 + 0x3c8));
0x00018830 cmp r3, 0 |
| if (r3 != 0) {
0x00018834 beq 0x18890 |
0x00018838 add r6, r4, 0x4000 | r6 = r4 + 0x4000;
0x0001883c ldr r3, [r6, 0x9f4] | r3 = *((r6 + 0x9f4));
0x00018840 cmp r3, 0 |
| if (r3 != 0) {
0x00018844 bne 0x18890 | goto label_33;
| }
0x00018848 ldr r1, [r4, 0x100] | r1 = *((r4 + 0x100));
0x0001884c mov r0, r4 | r0 = r4;
0x00018850 bl 0x18278 | r0 = Curl_meets_timecondition ();
0x00018854 cmp r0, 0 |
| if (r0 != 0) {
0x00018858 bne 0x18890 | goto label_33;
| }
0x0001885c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00018860 ldr r1, [pc, 0x998] | r1 = *(0x191fc);
0x00018864 mov r5, 1 | r5 = 1;
0x00018868 strb r5, [r3] | *(r3) = r5;
0x0001886c mov r3, 0x130 | r3 = 0x130;
0x00018870 mov r0, r4 | r0 = r4;
0x00018874 str r3, [r6, 0xa60] | *((r6 + 0xa60)) = r3;
0x00018878 add r1, pc, r1 | r1 = pc + r1;
0x0001887c bl 0x104cc | Curl_infof ();
0x00018880 mov r1, r5 | r1 = r5;
0x00018884 mov r0, r8 | r0 = r8;
0x00018888 bl 0x1cb34 | Curl_conncontrol ();
0x0001888c b 0x18770 | goto label_4;
| }
| label_33:
0x00018890 ldr r3, [r4, 0x104] | r3 = *((r4 + 0x104));
0x00018894 add r3, r3, 1 | r3++;
0x00018898 str r3, [r4, 0x104] | *((r4 + 0x104)) = r3;
0x0001889c ldrb r3, [r4, 0x4d8] | r3 = *((r4 + 0x4d8));
0x000188a0 cmp r3, 0 |
| if (r3 != 0) {
0x000188a4 beq 0x188e8 |
0x000188a8 ldr r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x000188ac cmp r3, 0 |
| if (r3 != 0) {
0x000188b0 beq 0x188d4 |
0x000188b4 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x000188b8 ldr r2, [r4, 0x7c4] | r2 = *((r4 + 0x7c4));
0x000188bc mov r1, 3 | r1 = 3;
0x000188c0 mov r0, r4 | r0 = r4;
0x000188c4 bl 0x10424 | Curl_debug ();
0x000188c8 ldr r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x000188cc cmp r3, 1 |
| if (r3 != 1) {
0x000188d0 bne 0x188e8 | goto label_38;
| }
| }
0x000188d4 ldr r3, [sp, 0x54] | r3 = size;
0x000188d8 ldr r2, [r4, 0xcc] | r2 = *((r4 + 0xcc));
0x000188dc mov r1, 3 | r1 = 3;
0x000188e0 mov r0, r4 | r0 = r4;
0x000188e4 bl 0x10424 | Curl_debug ();
| }
| label_38:
0x000188e8 ldrb r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x000188ec cmp r3, 0 |
| if (r3 != 0) {
0x000188f0 beq 0x189c4 |
0x000188f4 add r3, sp, 0x54 | r3 += size;
0x000188f8 ldr r2, [sp, 0x54] | r2 = size;
0x000188fc ldr r1, [r4, 0xcc] | r1 = *((r4 + 0xcc));
0x00018900 mov r0, r8 | r0 = r8;
0x00018904 bl 0x1b234 | r0 = Curl_httpchunk_read ();
0x00018908 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 > r0) {
0x0001890c ble 0x18950 |
0x00018910 cmp r3, 4 |
| if (r3 == 4) {
0x00018914 bne 0x18930 |
0x00018918 ldr r1, [pc, 0x8e4] | r1 = *(0x19200);
0x0001891c mov r0, r4 | r0 = r4;
0x00018920 add r1, pc, r1 | r1 = pc + r1;
0x00018924 bl 0x10544 | Curl_failf ();
0x00018928 mov r5, 0x17 | r5 = 0x17;
0x0001892c b 0x1839c | goto label_0;
| }
0x00018930 bl 0x1b624 | Curl_chunked_strerror ();
0x00018934 ldr r1, [pc, 0x8cc] | r1 = *(0x19204);
0x00018938 mov r5, 0x38 | r5 = 0x38;
0x0001893c add r1, pc, r1 | r1 = pc + r1;
0x00018940 mov r2, r0 | r2 = r0;
0x00018944 mov r0, r4 | r0 = r4;
0x00018948 bl 0x10544 | Curl_failf ();
0x0001894c b 0x1839c | goto label_0;
| }
0x00018950 cmn r3, 1 |
| if (r3 != 1) {
0x00018954 bne 0x189c4 | goto label_39;
| }
0x00018958 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0001895c ldr r5, [r8, 0x38] | r5 = *((r8 + 0x38));
0x00018960 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00018964 cmp r5, 0 |
0x00018968 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| if (r5 == 0) {
0x0001896c beq 0x189c4 | goto label_39;
| }
0x00018970 ldr r1, [pc, 0x894] | r1 = *(0x19208);
0x00018974 mov r2, r5 | r2 = r5;
0x00018978 add r1, pc, r1 | r1 = pc + r1;
0x0001897c ldr r0, [r8] | r0 = *(r8);
0x00018980 bl 0x104cc | Curl_infof ();
0x00018984 ldr r3, [r8] | r3 = *(r8);
0x00018988 mov r1, 1 | r1 = 1;
0x0001898c ldr r0, [r3, 0x64] | r0 = *((r3 + 0x64));
0x00018990 bl 0x1dbe4 | r0 = Curl_pipeline_wanted ();
0x00018994 cmp r0, 0 |
| if (r0 == 0) {
0x00018998 beq 0x189c4 | goto label_39;
| }
0x0001899c ldr r1, [pc, 0x86c] | r1 = *(0x1920c);
0x000189a0 mov r2, r5 | r2 = r5;
0x000189a4 add r1, pc, r1 | r1 = pc + r1;
0x000189a8 ldr r0, [r8] | r0 = *(r8);
0x000189ac bl 0x104cc | Curl_infof ();
0x000189b0 ldr r3, [r8, 0x2e8] | r3 = *((r8 + 0x2e8));
0x000189b4 sub r5, r3, r5 | r5 = r3 - r5;
0x000189b8 mov r3, 1 | r3 = 1;
0x000189bc str r5, [r8, 0x2e8] | *((r8 + 0x2e8)) = r5;
0x000189c0 strb r3, [r8, 0x269] | *((r8 + 0x269)) = r3;
| }
| label_39:
0x000189c4 ldr r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x000189c8 cmp r3, 1 |
| if (r3 == 1) {
0x000189cc bne 0x189f0 |
0x000189d0 ldrb r3, [r4, 0x115] | r3 = *((r4 + 0x115));
0x000189d4 cmp r3, 0 |
| if (r3 != 0) {
0x000189d8 bne 0x189f0 | goto label_40;
| }
0x000189dc ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x000189e0 ldr r1, [r4, 0xc8] | r1 = *((r4 + 0xc8));
0x000189e4 adds r6, r2, r1 | r6 = r2 + r1;
0x000189e8 adc r7, r3, 0 | __asm ("adc r7, r3, 0");
0x000189ec strd r6, r7, [r4, 0x90] | __asm ("strd r6, r7, [r4, 0x90]");
| }
| label_40:
0x000189f0 ldrd r2, r3, [r4, 0x80] | __asm ("ldrd r2, r3, [r4, 0x80]");
0x000189f4 mvn r1, 0 | r1 = ~0;
0x000189f8 mvn r0, 0 | r0 = ~0;
0x000189fc cmp r3, r1 |
0x00018a00 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| if (r3 != r1) {
0x00018a04 beq 0x18ac0 |
0x00018a08 ldrd r0, r1, [r4, 0x90] | __asm ("ldrd r0, r1, [r4, 0x90]");
0x00018a0c ldr ip, [sp, 0x54] | ip = size;
0x00018a10 adds r6, r0, ip | r6 = r0 + ip;
0x00018a14 adc r7, r1, ip, asr 31 | __asm ("adc r7, r1, ip, asr 31");
0x00018a18 cmp r6, r2 |
0x00018a1c sbcs lr, r7, r3 | __asm ("sbcs lr, r7, r3");
| if (r6 < r2) {
0x00018a20 blt 0x18ac0 | goto label_41;
| }
0x00018a24 add r0, ip, r0 | r0 = ip + r0;
0x00018a28 subs fp, r0, r2 |
| if (fp != r0) {
0x00018a2c beq 0x18aa0 |
0x00018a30 ldrb r3, [r4, 0x115] | r3 = *((r4 + 0x115));
0x00018a34 cmp r3, 0 |
| if (r3 != 0) {
0x00018a38 bne 0x18aa0 | goto label_6;
| }
0x00018a3c ldr r3, [r8] | r3 = *(r8);
0x00018a40 mov r1, 1 | r1 = 1;
0x00018a44 ldr r0, [r3, 0x64] | r0 = *((r3 + 0x64));
0x00018a48 bl 0x1dbe4 | Curl_pipeline_wanted ();
0x00018a4c ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x00018a50 ldrd r6, r7, [r4, 0x90] | __asm ("ldrd r6, r7, [r4, 0x90]");
0x00018a54 cmp r0, 0 |
0x00018a58 ldrd r0, r1, [r4, 0x80] | __asm ("ldrd r0, r1, [r4, 0x80]");
| if (r0 == 0) {
0x00018a5c beq 0x18bd0 | goto label_42;
| }
0x00018a60 ldr lr, [sp, 0x54] | lr = size;
0x00018a64 add ip, r4, 0x4000 |
0x00018a68 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h]");
0x00018a6c ldr r1, [sp, 0x44] | r1 = var_44h;
0x00018a70 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00018a74 str lr, [sp, 0x18] | var_18h = lr;
0x00018a78 strd r6, r7, [sp, 0x10] | __asm ("strd r6, r7, [var_10h]");
0x00018a7c ldr r3, [ip, 0x9ec] | r3 = *((ip + 0x9ec));
0x00018a80 mov r2, fp | r2 = fp;
0x00018a84 mov r0, r4 | r0 = r4;
0x00018a88 bl 0x104cc | Curl_infof ();
0x00018a8c ldr r3, [r8, 0x2e8] | r3 = *((r8 + 0x2e8));
0x00018a90 sub r3, r3, fp | r3 -= fp;
0x00018a94 str r3, [r8, 0x2e8] | *((r8 + 0x2e8)) = r3;
0x00018a98 mov r3, 1 | r3 = 1;
0x00018a9c strb r3, [r8, 0x269] | *((r8 + 0x269)) = r3;
| }
| label_6:
0x00018aa0 ldr r3, [r4, 0x80] | r3 = *((r4 + 0x80));
0x00018aa4 ldr r2, [r4, 0x90] | r2 = *((r4 + 0x90));
0x00018aa8 subs r3, r3, r2 | r3 -= r2;
| if (r3 >= r3) {
0x00018aac movmi r3, 0 | r3 = 0;
| }
0x00018ab0 str r3, [sp, 0x54] | size = r3;
0x00018ab4 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018ab8 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00018abc str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| }
| label_41:
0x00018ac0 ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x00018ac4 ldr r1, [sp, 0x54] | r1 = size;
0x00018ac8 mov r0, r4 | r0 = r4;
0x00018acc adds r6, r2, r1 | r6 = r2 + r1;
0x00018ad0 adc r7, r3, r1, asr 31 | __asm ("adc r7, r3, r1, asr 31");
0x00018ad4 mov r3, r7 | r3 = r7;
0x00018ad8 strd r6, r7, [r4, 0x90] | __asm ("strd r6, r7, [r4, 0x90]");
0x00018adc mov r2, r6 | r2 = r6;
0x00018ae0 bl 0x816c | Curl_pgrsSetDownloadCounter ();
0x00018ae4 ldrb r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x00018ae8 cmp r3, 0 |
| if (r3 == 0) {
0x00018aec bne 0x18b50 |
0x00018af0 ldr r2, [sp, 0x54] | r2 = size;
0x00018af4 ldr r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x00018af8 cmp r2, 0 |
| if (r2 == 0) {
0x00018afc bne 0x18b0c |
0x00018b00 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00018b04 orrs r2, r3, r2 | r2 = r3 | r2;
| if (r2 == r3) {
0x00018b08 beq 0x18b50 | goto label_8;
| }
| }
0x00018b0c cmp r3, 0 |
| if (r3 != 0) {
0x00018b10 bne 0x18bf0 | goto label_43;
| }
| label_7:
0x00018b14 ldr r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x00018b18 cmp r3, 1 |
| if (r3 <= 1) {
0x00018b1c bhi 0x18b48 |
0x00018b20 ldr r3, [r8] | r3 = *(r8);
0x00018b24 ldrb r3, [r3, 0x4f9] | r3 = *((r3 + 0x4f9));
0x00018b28 cmp r3, 0 |
| if (r3 == 0) {
0x00018b2c bne 0x18b3c |
0x00018b30 ldr r1, [r4, 0xfc] | r1 = *((r4 + 0xfc));
0x00018b34 cmp r1, 0 |
| if (r1 != 0) {
0x00018b38 bne 0x18c74 | goto label_44;
| }
| }
0x00018b3c ldrb r3, [r4, 0x115] | r3 = *((r4 + 0x115));
0x00018b40 cmp r3, 0 |
| if (r3 == 0) {
0x00018b44 beq 0x18c48 | goto label_45;
| }
| }
0x00018b48 mov r3, 0 | r3 = 0;
0x00018b4c str r3, [r4, 0xbc] | *((r4 + 0xbc)) = r3;
| }
| label_8:
0x00018b50 ldr r2, [r8, 0x284] | r2 = *((r8 + 0x284));
0x00018b54 ldr r5, [r2, 0x34] | r5 = *((r2 + 0x34));
0x00018b58 cmp fp, 0 |
0x00018b5c cmpne r5, 0 | __asm ("cmpne r5, 0");
| if (fp == 0) {
0x00018b60 beq 0x18c88 | goto label_46;
| }
0x00018b64 ldrb r3, [r8, 0x269] | r3 = *((r8 + 0x269));
0x00018b68 cmp r3, 0 |
| if (r3 != 0) {
0x00018b6c bne 0x18c88 | goto label_46;
| }
0x00018b70 ldr r2, [sp, 0x54] | r2 = size;
0x00018b74 ldr r3, [r4, 0xcc] | r3 = *((r4 + 0xcc));
0x00018b78 ldr r1, [r4, 0x498] | r1 = *((r4 + 0x498));
0x00018b7c add r3, r3, r2 | r3 += r2;
0x00018b80 ldr r2, [r4, 0x108] | r2 = *((r4 + 0x108));
0x00018b84 str r3, [r4, 0xcc] | *((r4 + 0xcc)) = r3;
0x00018b88 add r2, r2, r1 | r2 += r1;
0x00018b8c add r1, r3, fp | r1 = r3 + fp;
0x00018b90 cmp r2, r1 |
| if (r2 >= r1) {
0x00018b94 sublo fp, r2, r3 |
| }
0x00018b98 str fp, [sp, 0x54] | size = fp;
0x00018b9c add r3, sp, 0x52 | r3 += var_52h;
0x00018ba0 add r2, sp, 0x54 | r2 += size;
0x00018ba4 mov r1, r8 | r1 = r8;
0x00018ba8 mov r0, r4 | r0 = r4;
0x00018bac blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00018bb0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00018bb4 bne 0x1839c | goto label_0;
| }
0x00018bb8 ldrb r3, [sp, 0x52] | r3 = var_52h;
0x00018bbc cmp r3, 0 |
| if (r3 == 0) {
0x00018bc0 beq 0x18620 | goto label_3;
| }
0x00018bc4 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018bc8 orr r3, r3, 1 | r3 |= 1;
0x00018bcc b 0x185f0 | goto label_5;
| label_42:
0x00018bd0 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h]");
0x00018bd4 ldr r1, [sp, 0x40] | r1 = var_40h;
0x00018bd8 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00018bdc strd r6, r7, [sp, 0x10] | __asm ("strd r6, r7, [var_10h]");
0x00018be0 mov r2, fp | r2 = fp;
0x00018be4 mov r0, r4 | r0 = r4;
0x00018be8 bl 0x104cc | Curl_infof ();
0x00018bec b 0x18aa0 | goto label_6;
| label_43:
0x00018bf0 ldrb r3, [r4, 0x115] | r3 = *((r4 + 0x115));
0x00018bf4 cmp r3, 0 |
| if (r3 != 0) {
0x00018bf8 bne 0x18b14 | goto label_7;
| }
0x00018bfc ldrd r0, r1, [r4, 0x80] | __asm ("ldrd r0, r1, [r4, 0x80]");
0x00018c00 ldr r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x00018c04 mvn r7, 0 | r7 = ~0;
0x00018c08 mvn r6, 0 | r6 = ~0;
0x00018c0c cmp r1, r7 |
0x00018c10 cmpeq r0, r6 | __asm ("cmpeq r0, r6");
0x00018c14 ldr r2, [r4, 0x7c4] | r2 = *((r4 + 0x7c4));
| if (r1 != r7) {
0x00018c18 beq 0x18c2c |
0x00018c1c cmp r0, r3 |
0x00018c20 mov r7, 0 | r7 = 0;
0x00018c24 sbcs ip, r1, r7 | __asm ("sbcs ip, r1, r7");
| if (r0 < r3) {
0x00018c28 movlt r3, r0 | r3 = r0;
| goto label_47;
| }
| }
| label_47:
0x00018c2c mov r1, 1 | r1 = 1;
0x00018c30 mov r0, r8 | r0 = r8;
0x00018c34 bl 0x107cc | r0 = Curl_client_write ();
0x00018c38 cmp r0, 0 |
0x00018c3c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00018c40 beq 0x18b14 | goto label_7;
| }
0x00018c44 b 0x1839c | goto label_0;
| label_45:
0x00018c48 ldr r3, [sp, 0x54] | r3 = size;
0x00018c4c ldr r2, [r4, 0xcc] | r2 = *((r4 + 0xcc));
0x00018c50 mov r1, 1 | r1 = 1;
0x00018c54 mov r0, r8 | r0 = r8;
0x00018c58 bl 0x107cc | Curl_client_write ();
| label_9:
0x00018c5c mov r3, 0 | r3 = 0;
0x00018c60 cmp r0, r3 |
0x00018c64 mov r5, r0 | r5 = r0;
0x00018c68 str r3, [r4, 0xbc] | *((r4 + 0xbc)) = r3;
| if (r0 == r3) {
0x00018c6c beq 0x18b50 | goto label_8;
| }
0x00018c70 b 0x1839c | goto label_0;
| label_44:
0x00018c74 ldr r3, [sp, 0x54] | r3 = size;
0x00018c78 ldr r2, [r4, 0xcc] | r2 = *((r4 + 0xcc));
0x00018c7c mov r0, r8 | r0 = r8;
0x00018c80 bl 0x20a70 | Curl_unencode_write ();
0x00018c84 b 0x18c5c | goto label_9;
| label_46:
0x00018c88 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00018c8c ldr r1, [r2, 0x40] | r1 = *((r2 + 0x40));
0x00018c90 cmp r3, 0 |
| if (r3 == 0) {
0x00018c94 ldrne r3, [r4, 0x110] | r3 = *((r4 + 0x110));
| }
0x00018c98 bicne r3, r3, 1 | __asm ("bicne r3, r3, 1");
| if (r3 == 0) {
0x00018c9c strne r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
| }
0x00018ca0 ands r1, r1, 0x30 | r1 &= 0x30;
| if (r1 == r1) {
0x00018ca4 beq 0x18cd4 | goto label_48;
| }
| label_12:
0x00018ca8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00018cac mov r6, sb | r6 = sb;
0x00018cb0 sub r3, r3, 1 | r3--;
0x00018cb4 cmn r3, 1 |
0x00018cb8 str r3, [sp, 0x34] | var_34h = r3;
| if (r3 != 1) {
0x00018cbc bne 0x18408 | goto label_10;
| }
| label_32:
0x00018cc0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00018cc4 mov r3, 1 | r3 = 1;
0x00018cc8 str r3, [r8, 0x4e8] | *((r8 + 0x4e8)) = r3;
0x00018ccc strb r3, [r2] | *(r2) = r3;
0x00018cd0 b 0x1862c | goto label_11;
| label_48:
0x00018cd4 mov r0, r8 | r0 = r8;
0x00018cd8 bl 0x376a8 | r0 = Curl_ssl_data_pending ();
0x00018cdc cmp r0, 0 |
| if (r0 != 0) {
0x00018ce0 bne 0x18ca8 | goto label_12;
| }
0x00018ce4 b 0x18620 | goto label_3;
| label_25:
0x00018ce8 mov sb, r6 | sb = r6;
0x00018cec b 0x18620 | goto label_3;
| label_22:
0x00018cf0 mov sb, r2 | sb = r2;
| label_21:
0x00018cf4 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018cf8 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x00018cfc beq 0x18dc0 |
0x00018d00 tst sl, 2 |
| if ((sl & 2) == 0) {
0x00018d04 beq 0x18dc0 | goto label_49;
| }
0x00018d08 ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x00018d0c orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 == r2) {
0x00018d10 bne 0x18d2c |
0x00018d14 ldrd r2, r3, [r4, 0x98] | __asm ("ldrd r2, r3, [r4, 0x98]");
0x00018d18 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x00018d1c bne 0x18d2c | goto label_50;
| }
0x00018d20 mov r1, 7 | r1 = 7;
0x00018d24 mov r0, r4 | r0 = r4;
0x00018d28 bl 0x7f7c | Curl_pgrsTime ();
| }
| label_50:
0x00018d2c ldr r3, [r4, 0x120] | r3 = *((r4 + 0x120));
0x00018d30 orr r6, sb, 2 | r6 = sb | 2;
0x00018d34 cmp r3, 0 |
| if (r3 != 0) {
0x00018d38 bne 0x18f90 | goto label_51;
| }
0x00018d3c ldrb sl, [r4, 0x114] | sl = *((r4 + 0x114));
0x00018d40 add r3, r4, 0x7d0 | r3 = r4 + 0x7d0;
0x00018d44 cmp sl, 0 |
0x00018d48 str r3, [r4, 0x124] | *((r4 + 0x124)) = r3;
| if (sl != 0) {
0x00018d4c beq 0x18d64 |
| label_13:
0x00018d50 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018d54 tst r3, 0x20 |
| if ((r3 & 0x20) == 0) {
0x00018d58 beq 0x18e64 | goto label_52;
| }
| label_14:
0x00018d5c mov sb, r6 | sb = r6;
0x00018d60 b 0x18dc0 |
| } else {
0x00018d64 ldr r2, [r4, 0xf4] | r2 = *((r4 + 0xf4));
0x00018d68 ldr r3, [r4, 0x12c] | r3 = *((r4 + 0x12c));
0x00018d6c cmp r2, 2 |
| if (r2 != 2) {
0x00018d70 bne 0x18e1c | goto label_53;
| }
0x00018d74 ldr r2, [r3, 0x1b0] | r2 = *((r3 + 0x1b0));
0x00018d78 cmp r2, 2 |
| if (r2 != 2) {
0x00018d7c bne 0x18e1c | goto label_53;
| }
0x00018d80 mov r3, 1 | r3 = 1;
0x00018d84 str r3, [r4, 0xf4] | *((r4 + 0xf4)) = r3;
0x00018d88 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018d8c add r5, sp, 0x48 | r5 += var_48h;
0x00018d90 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x00018d94 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x00018d98 mov r0, r5 | r0 = r5;
0x00018d9c bl 0x69f0 | Curl_now ();
0x00018da0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00018da4 ldm r5, {r0, r1} | r0 = *(r5);
| r1 = *((r5 + 4));
0x00018da8 add r3, r3, 0x7c | r3 += 0x7c;
0x00018dac stm r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00018db0 ldr r1, [r4, 0x648] | r1 = *((r4 + 0x648));
0x00018db4 mov r2, sl | r2 = sl;
0x00018db8 mov r0, r4 | r0 = r4;
0x00018dbc bl 0x1e348 | Curl_expire ();
| }
| }
| label_49:
0x00018dc0 add r5, sp, 0x48 | r5 += var_48h;
0x00018dc4 mov r0, r5 | r0 = r5;
0x00018dc8 bl 0x69f0 | Curl_now ();
0x00018dcc ldr r3, [sp, 0x30] | r3 = var_30h;
0x00018dd0 ldm r5, {r0, r1} | r0 = *(r5);
| r1 = *((r5 + 4));
0x00018dd4 add r6, r3, 0x40 | r6 = r3 + 0x40;
0x00018dd8 cmp sb, 0 |
0x00018ddc stm r6, {r0, r1} | *(r6) = r0;
| *((r6 + 4)) = r1;
| if (sb == 0) {
0x00018de0 beq 0x190a8 | goto label_54;
| }
0x00018de4 ldr r1, [r4, 0x78] | r1 = *((r4 + 0x78));
0x00018de8 cmp r1, 0 |
0x00018dec ldrdne r2, r3, [r4, 0x90] | __asm ("ldrdne r2, r3, [r4, 0x90]");
0x00018df0 strdne r2, r3, [r1] | __asm ("strdne r2, r3, [r1]");
0x00018df4 ldr r1, [r4, 0x88] | r1 = *((r4 + 0x88));
0x00018df8 cmp r1, 0 |
0x00018dfc ldrdne r2, r3, [r4, 0x98] | __asm ("ldrdne r2, r3, [r4, 0x98]");
0x00018e00 strdne r2, r3, [r1] | __asm ("strdne r2, r3, [r1]");
| label_16:
0x00018e04 mov r0, r8 | r0 = r8;
0x00018e08 bl 0x831c | r0 = Curl_pgrsUpdate ();
0x00018e0c cmp r0, 0 |
| if (r0 == 0) {
0x00018e10 beq 0x19104 | goto label_55;
| }
| label_18:
0x00018e14 mov r5, 0x2a | r5 = 0x2a;
0x00018e18 b 0x1839c | goto label_0;
| label_53:
0x00018e1c ldr r2, [r8, 0x284] | r2 = *((r8 + 0x284));
0x00018e20 ldr r1, [pc, 0x3c8] | r1 = *(0x191ec);
0x00018e24 ldr r2, [r2, 0x40] | r2 = *((r2 + 0x40));
0x00018e28 mov r0, r8 | r0 = r8;
0x00018e2c tst r1, r2 |
| if ((r1 & r2) == 0) {
0x00018e30 ldrne sl, [r3, 0x1b0] | sl = *((r3 + 0x1b0));
| }
0x00018e34 add r2, sp, 0x54 | r2 += size;
| if ((r1 & r2) == 0) {
0x00018e38 subne sl, sl, 1 | sl--;
| }
0x00018e3c mov r1, 0x4000 | r1 = 0x4000;
0x00018e40 clzne sl, sl | __asm ("clzne sl, sl");
| if ((r1 & r2) == 0) {
0x00018e44 lsrne sl, sl, 5 | sl >>= 5;
| }
0x00018e48 bl 0x17eb4 | r0 = Curl_fillreadbuffer ();
0x00018e4c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00018e50 bne 0x1839c | goto label_0;
| }
0x00018e54 ldr r7, [sp, 0x54] | r7 = size;
0x00018e58 cmp r7, 0 |
| if (r7 == 0) {
0x00018e5c beq 0x18d50 | goto label_13;
| }
| if (r7 > 0) {
0x00018e60 bgt 0x18e90 | goto label_56;
| }
| label_52:
0x00018e64 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00018e68 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x00018e6c str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x00018e70 ldrb r3, [r8, 0x263] | r3 = *((r8 + 0x263));
0x00018e74 cmp r3, 0 |
| if (r3 == 0) {
0x00018e78 beq 0x18d5c | goto label_14;
| }
0x00018e7c mov r0, r8 | r0 = r8;
0x00018e80 bl 0x180c0 | r0 = Curl_readrewind ();
0x00018e84 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00018e88 beq 0x18d5c | goto label_14;
| }
0x00018e8c b 0x1839c | goto label_0;
| label_56:
0x00018e90 cmp sl, 0 |
0x00018e94 str r7, [r4, 0x120] | *((r4 + 0x120)) = r7;
| if (sl != 0) {
0x00018e98 bne 0x18f90 | goto label_51;
| }
0x00018e9c ldrb r3, [r4, 0x4c3] | r3 = *((r4 + 0x4c3));
0x00018ea0 cmp r3, 0 |
| if (r3 == 0) {
0x00018ea4 bne 0x18eb4 |
0x00018ea8 ldrb r3, [r4, 0x3a2] | r3 = *((r4 + 0x3a2));
0x00018eac cmp r3, 0 |
| if (r3 == 0) {
0x00018eb0 beq 0x18f90 | goto label_51;
| }
| }
0x00018eb4 add r5, r4, 0x4000 | r5 = r4 + 0x4000;
0x00018eb8 ldr r3, [r5, 0x81c] | r3 = *((r5 + 0x81c));
0x00018ebc cmp r3, 0 |
| if (r3 == 0) {
0x00018ec0 bne 0x18f04 |
0x00018ec4 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00018ec8 ldr r3, [pc, 0x344] |
0x00018ecc ldr r0, [r4, 0x498] | r0 = *((r4 + 0x498));
0x00018ed0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00018ed4 lsl r0, r0, 1 | r0 <<= 1;
0x00018ed8 ldr r3, [r3] | r3 = *(0x19210);
0x00018edc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00018ee0 cmp r0, 0 |
0x00018ee4 str r0, [r5, 0x81c] | *((r5 + 0x81c)) = r0;
| if (r0 != 0) {
0x00018ee8 bne 0x18f04 | goto label_57;
| }
0x00018eec ldr r1, [pc, 0x324] | r1 = *(0x19214);
0x00018ef0 mov r0, r4 | r0 = r4;
0x00018ef4 add r1, pc, r1 | r1 = pc + r1;
0x00018ef8 bl 0x10544 | Curl_failf ();
0x00018efc mov r5, 0x1b | r5 = 0x1b;
0x00018f00 b 0x1839c | goto label_0;
| }
| label_57:
0x00018f04 mov r3, 0 | r3 = 0;
0x00018f08 mov r2, r3 | r2 = r3;
0x00018f0c mov lr, 0xd | lr = 0xd;
0x00018f10 add ip, r4, 0x4a00 |
0x00018f14 mvn sl, 0 | sl = ~0;
0x00018f18 mvn fp, 0 |
| do {
0x00018f1c ldr r1, [r4, 0x124] | r1 = *((r4 + 0x124));
0x00018f20 ldr r0, [r5, 0x81c] | r0 = *((r5 + 0x81c));
0x00018f24 ldrb r1, [r1, r2] | r1 = *((r1 + r2));
0x00018f28 add sb, r0, r3 | sb = r0 + r3;
0x00018f2c cmp r1, 0xa |
| if (r1 == 0xa) {
0x00018f30 strbne r1, [r0, r3] | *((r0 + r3)) = r1;
| }
| if (r1 == 0xa) {
0x00018f34 bne 0x18f70 |
0x00018f38 strb lr, [sb] |
0x00018f3c ldr r0, [r5, 0x81c] | r0 = *((r5 + 0x81c));
0x00018f40 add r3, r3, 1 | r3++;
0x00018f44 strb r1, [r0, r3] | *((r0 + r3)) = r1;
0x00018f48 ldrb r1, [r4, 0x3a2] | r1 = *((r4 + 0x3a2));
0x00018f4c cmp r1, 0 |
| if (r1 != 0) {
0x00018f50 bne 0x18f70 | goto label_58;
| }
0x00018f54 ldrd r0, r1, [ip, 0x10] | __asm ("ldrd r0, r1, [ip, 0x10]");
0x00018f58 cmp r1, fp |
0x00018f5c cmpeq r0, sl | __asm ("cmpeq r0, sl");
| if (r1 == fp) {
0x00018f60 beq 0x18f70 | goto label_58;
| }
0x00018f64 adds r0, r0, 1 | r0++;
0x00018f68 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00018f6c strd r0, r1, [ip, 0x10] | __asm ("strd r0, r1, [ip, 0x10]");
| }
| label_58:
0x00018f70 add r2, r2, 1 | r2++;
0x00018f74 cmp r7, r2 |
0x00018f78 add r3, r3, 1 | r3++;
0x00018f7c bne 0x18f1c |
| } while (r7 != r2);
0x00018f80 cmp r7, r3 |
| if (r7 == r3) {
0x00018f84 ldrne r2, [r5, 0x81c] | r2 = *((r5 + 0x81c));
| }
| if (r7 == r3) {
0x00018f88 strne r3, [r4, 0x120] | *((r4 + 0x120)) = r3;
| }
| if (r7 == r3) {
0x00018f8c strne r2, [r4, 0x124] | *((r4 + 0x124)) = r2;
| }
| label_51:
0x00018f90 add r3, sp, 0x54 | r3 += size;
0x00018f94 str r3, [sp] | *(sp) = r3;
0x00018f98 ldr r2, [r4, 0x124] | r2 = *((r4 + 0x124));
0x00018f9c ldr r3, [r4, 0x120] | r3 = *((r4 + 0x120));
0x00018fa0 ldr r1, [r8, 0x294] | r1 = *((r8 + 0x294));
0x00018fa4 mov r0, r8 | r0 = r8;
0x00018fa8 bl 0x10244 | r0 = Curl_write ();
0x00018fac subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00018fb0 bne 0x1839c | goto label_0;
| }
0x00018fb4 ldrb r3, [r4, 0x4d8] | r3 = *((r4 + 0x4d8));
0x00018fb8 cmp r3, 0 |
| if (r3 != 0) {
0x00018fbc beq 0x18fd4 |
0x00018fc0 ldr r3, [sp, 0x54] | r3 = size;
0x00018fc4 ldr r2, [r4, 0x124] | r2 = *((r4 + 0x124));
0x00018fc8 mov r1, 4 | r1 = 4;
0x00018fcc mov r0, r4 | r0 = r4;
0x00018fd0 bl 0x10424 | Curl_debug ();
| }
0x00018fd4 ldrd r2, r3, [r4, 0x98] | __asm ("ldrd r2, r3, [r4, 0x98]");
0x00018fd8 ldr r1, [sp, 0x54] | r1 = size;
0x00018fdc adds sl, r2, r1 | sl = r2 + r1;
0x00018fe0 adc fp, r3, r1, asr 31 | __asm ("adc fp, r3, r1, asr 31");
0x00018fe4 ldrb r1, [r4, 0x129] | r1 = *((r4 + 0x129));
0x00018fe8 strd sl, fp, [r4, 0x98] | __asm ("strd sl, fp, [r4, 0x98]");
0x00018fec cmp r1, 0 |
| if (r1 != 0) {
0x00018ff0 beq 0x19000 |
0x00018ff4 ldrb r1, [r4, 0x12b] | r1 = *((r4 + 0x12b));
0x00018ff8 cmp r1, 0 |
| if (r1 == 0) {
0x00018ffc beq 0x1902c | goto label_59;
| }
| }
0x00019000 add r1, r4, 0x4a00 | r1 = r4 + 0x4a00;
0x00019004 ldrd r0, r1, [r1, 0x10] | __asm ("ldrd r0, r1, [r1, 0x10]");
0x00019008 cmp fp, r1 |
0x0001900c cmpeq sl, r0 | __asm ("cmpeq sl, r0");
| if (fp == r1) {
0x00019010 bne 0x1902c |
0x00019014 ldr r1, [pc, 0x200] | r1 = *(0x19218);
0x00019018 mov r3, 1 | r3 = 1;
0x0001901c strb r3, [r4, 0x114] | *((r4 + 0x114)) = r3;
0x00019020 add r1, pc, r1 | r1 = pc + r1;
0x00019024 mov r0, r4 | r0 = r4;
0x00019028 bl 0x104cc | Curl_infof ();
| }
| label_59:
0x0001902c ldr r3, [r4, 0x120] | r3 = *((r4 + 0x120));
0x00019030 ldr r2, [sp, 0x54] | r2 = size;
0x00019034 cmp r3, r2 |
| if (r3 == r2) {
0x00019038 beq 0x19060 | goto label_60;
| }
0x0001903c sub r3, r3, r2 | r3 -= r2;
0x00019040 str r3, [r4, 0x120] | *((r4 + 0x120)) = r3;
0x00019044 ldr r3, [r4, 0x124] | r3 = *((r4 + 0x124));
0x00019048 add r3, r3, r2 | r3 += r2;
0x0001904c str r3, [r4, 0x124] | *((r4 + 0x124)) = r3;
| do {
| label_15:
0x00019050 ldrd r2, r3, [r4, 0x98] | __asm ("ldrd r2, r3, [r4, 0x98]");
0x00019054 mov r0, r4 | r0 = r4;
0x00019058 bl 0x8288 | Curl_pgrsSetUploadCounter ();
0x0001905c b 0x18d5c | goto label_14;
| label_60:
0x00019060 add r3, r4, 0x7d0 | r3 = r4 + 0x7d0;
0x00019064 str r3, [r4, 0x124] | *((r4 + 0x124)) = r3;
0x00019068 mov r3, 0 | r3 = 0;
0x0001906c str r3, [r4, 0x120] | *((r4 + 0x120)) = r3;
0x00019070 ldrb r3, [r4, 0x114] | r3 = *((r4 + 0x114));
0x00019074 cmp r3, 0 |
0x00019078 beq 0x19050 |
| } while (r3 == 0);
0x0001907c ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00019080 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x00019084 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x00019088 ldrb r3, [r8, 0x263] | r3 = *((r8 + 0x263));
0x0001908c cmp r3, 0 |
| if (r3 == 0) {
0x00019090 beq 0x19050 | goto label_15;
| }
0x00019094 mov r0, r8 | r0 = r8;
0x00019098 bl 0x180c0 | r0 = Curl_readrewind ();
0x0001909c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000190a0 beq 0x19050 | goto label_15;
| }
0x000190a4 b 0x1839c | goto label_0;
| label_54:
0x000190a8 ldr r3, [r4, 0xf4] | r3 = *((r4 + 0xf4));
0x000190ac cmp r3, 1 |
| if (r3 != 1) {
0x000190b0 bne 0x18e04 | goto label_16;
| }
0x000190b4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000190b8 ldm r6, {r0, r1} | r0 = *(r6);
| r1 = *((r6 + 4));
0x000190bc add r3, r3, 0x7c | r3 += 0x7c;
0x000190c0 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x000190c4 bl 0x6a20 | Curl_timediff ();
0x000190c8 ldr r3, [r4, 0x648] | r3 = *((r4 + 0x648));
0x000190cc cmp r3, r0 |
| if (r3 > r0) {
0x000190d0 bgt 0x18e04 | goto label_16;
| }
0x000190d4 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x000190d8 mov r1, sb | r1 = sb;
0x000190dc orr r3, r3, 2 | r3 |= 2;
0x000190e0 mov r0, r4 | r0 = r4;
0x000190e4 str sb, [r4, 0xf4] | *((r4 + 0xf4)) = sb;
0x000190e8 str r3, [r4, 0x110] | *((r4 + 0x110)) = r3;
0x000190ec bl 0x1eb2c | Curl_expire_done ();
0x000190f0 ldr r1, [pc, 0x128] | r1 = *(0x1921c);
0x000190f4 mov r0, r4 | r0 = r4;
0x000190f8 add r1, pc, r1 | r1 = pc + r1;
0x000190fc bl 0x104cc | Curl_infof ();
0x00019100 b 0x18e04 | goto label_16;
| label_55:
0x00019104 ldm r6, {r1, r2} | r1 = *(r6);
| r2 = *((r6 + 4));
0x00019108 mov r0, r4 | r0 = r4;
0x0001910c bl 0x15410 | r0 = Curl_speedcheck ();
0x00019110 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00019114 bne 0x1839c | goto label_0;
| }
0x00019118 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0001911c cmp r3, 0 |
| if (r3 == 0) {
0x00019120 beq 0x19234 | goto label_61;
| }
0x00019124 mov r2, r5 | r2 = r5;
0x00019128 add r1, r4, 0xb0 | r1 = r4 + 0xb0;
0x0001912c mov r0, r4 | r0 = r4;
0x00019130 bl 0x1b738 | r0 = Curl_timeleft ();
0x00019134 cmp r0, 0 |
| if (r0 >= 0) {
0x00019138 blt 0x19158 |
| label_17:
0x0001913c ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00019140 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00019144 tst r3, 0x33 |
| if ((r3 & 0x33) != 0) {
0x00019148 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 0x33) == 0) {
0x0001914c movne r3, 0 | r3 = 0;
| }
0x00019150 strb r3, [r2] | *(r2) = r3;
0x00019154 b 0x1839c | goto label_0;
| }
0x00019158 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0001915c mvn r1, 0 | r1 = ~0;
0x00019160 cmp r3, r1 |
0x00019164 mvn r0, 0 | r0 = ~0;
0x00019168 add r3, r4, 0x700 | r3 = r4 + 0x700;
0x0001916c cmpeq r2, r0 | __asm ("cmpeq r2, r0");
0x00019170 add r3, r3, 8 | r3 += 8;
0x00019174 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x00019178 ldm r6, {r0, r1} | r0 = *(r6);
| r1 = *((r6 + 4));
| if (r3 == r1) {
0x0001917c beq 0x191b0 | goto label_62;
| }
0x00019180 bl 0x6a20 | Curl_timediff ();
0x00019184 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x00019188 ldr r1, [pc, 0x94] | r1 = *(0x19220);
0x0001918c strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x00019190 ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x00019194 add r1, pc, r1 | r1 = pc + r1;
0x00019198 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001919c mov r2, r0 | r2 = r0;
0x000191a0 mov r0, r4 | r0 = r4;
0x000191a4 bl 0x10544 | Curl_failf ();
| do {
0x000191a8 mov r5, 0x1c | r5 = 0x1c;
0x000191ac b 0x1839c | goto label_0;
| label_62:
0x000191b0 bl 0x6a20 | Curl_timediff ();
0x000191b4 ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x000191b8 ldr r1, [pc, 0x68] | r1 = *(0x19224);
0x000191bc strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x000191c0 add r1, pc, r1 | r1 = pc + r1;
0x000191c4 mov r2, r0 | r2 = r0;
0x000191c8 mov r0, r4 | r0 = r4;
0x000191cc bl 0x10544 | Curl_failf ();
0x000191d0 b 0x191a8 |
| } while (1);
| label_61:
0x00019234 ldrb r3, [r4, 0x4d0] | r3 = *((r4 + 0x4d0));
0x00019238 cmp r3, 0 |
| if (r3 != 0) {
0x0001923c bne 0x192dc | goto label_63;
| }
0x00019240 ldrd sl, fp, [r4, 0x70] | __asm ("ldrd sl, fp, [r4, 0x70]");
0x00019244 mvn r1, 0 | r1 = ~0;
0x00019248 mvn r0, 0 | r0 = ~0;
0x0001924c cmp fp, r1 |
0x00019250 cmpeq sl, r0 | __asm ("cmpeq sl, r0");
| if (fp == r1) {
0x00019254 beq 0x192b0 | goto label_64;
| }
0x00019258 ldrd r0, r1, [r4, 0x90] | __asm ("ldrd r0, r1, [r4, 0x90]");
0x0001925c cmp fp, r1 |
0x00019260 cmpeq sl, r0 | __asm ("cmpeq sl, r0");
| if (fp == r1) {
0x00019264 beq 0x192b0 | goto label_64;
| }
0x00019268 add ip, r4, 0x4900 |
0x0001926c ldrd r6, r7, [ip, 0xe0] | __asm ("ldrd r6, r7, [ip, 0xe0]");
0x00019270 adds r2, r6, sl | r2 = r6 + sl;
0x00019274 adc r3, r7, fp | __asm ("adc r3, r7, fp");
0x00019278 cmp r1, r3 |
0x0001927c cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| if (r1 == r3) {
0x00019280 beq 0x192b0 | goto label_64;
| }
0x00019284 ldr ip, [r4, 0x11c] | ip = *((r4 + 0x11c));
0x00019288 cmp ip, 0 |
| if (ip != 0) {
0x0001928c bne 0x192b0 | goto label_64;
| }
0x00019290 subs r2, sl, r0 | r2 = sl - r0;
0x00019294 sbc r3, fp, r1 | __asm ("sbc r3, fp, r1");
0x00019298 ldr r1, [pc, -0x74] | r1 = *(0x19228);
0x0001929c mov r0, r4 | r0 = r4;
0x000192a0 add r1, pc, r1 | r1 = pc + r1;
0x000192a4 bl 0x10544 | Curl_failf ();
| do {
0x000192a8 mov r5, 0x12 | r5 = 0x12;
0x000192ac b 0x1839c | goto label_0;
| label_64:
0x000192b0 ldrb r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x000192b4 cmp r3, 0 |
| if (r3 == 0) {
0x000192b8 beq 0x192dc | goto label_63;
| }
0x000192bc ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x000192c0 cmp r3, 4 |
| if (r3 == 4) {
0x000192c4 beq 0x192dc | goto label_63;
| }
0x000192c8 ldr r1, [pc, -0xa0] | r1 = *(0x1922c);
0x000192cc mov r0, r4 | r0 = r4;
0x000192d0 add r1, pc, r1 | r1 = pc + r1;
0x000192d4 bl 0x10544 | Curl_failf ();
0x000192d8 b 0x192a8 |
| } while (1);
| label_63:
0x000192dc mov r0, r8 | r0 = r8;
0x000192e0 bl 0x831c | r0 = Curl_pgrsUpdate ();
0x000192e4 cmp r0, 0 |
| if (r0 == 0) {
0x000192e8 beq 0x1913c | goto label_17;
| }
0x000192ec b 0x18e14 | goto label_18;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x266f0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.Curl_resolver_is_resolved () | void Curl_resolver_is_resolved (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000266f0 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x000266f4 ldr r5, [r0, 0x43c] | r5 = *((r0 + 0x43c));
0x000266f8 mov r6, 0 | r6 = 0;
0x000266fc cmp r5, r6 |
0x00026700 ldr r7, [r0] | r7 = *(r0);
0x00026704 str r6, [r1] | *(r1) = r6;
| if (r5 != r6) {
0x00026708 moveq r6, 6 | r6 = 6;
| }
| if (r5 == r6) {
0x0002670c beq 0x26784 | goto label_0;
| }
0x00026710 mov r4, r0 | r4 = r0;
0x00026714 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00026718 mov r8, r1 | r8 = r1;
0x0002671c bl 0x525c | pthread_mutex_lock ();
0x00026720 ldr sb, [r5, 0x10] | sb = *((r5 + 0x10));
0x00026724 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00026728 bl 0x59d0 | pthread_mutex_unlock ();
0x0002672c cmp sb, r6 |
| if (sb == r6) {
0x00026730 beq 0x267b4 | goto label_1;
| }
0x00026734 mov r0, r4 | r0 = r4;
0x00026738 bl 0x264bc | getaddrinfo_complete ();
0x0002673c ldr r3, [r4, 0x430] | r3 = *((r4 + 0x430));
0x00026740 add r7, r4, 0x420 | r7 = r4 + 0x420;
0x00026744 cmp r3, r6 |
0x00026748 add r7, r7, 8 | r7 += 8;
| if (r3 != r6) {
0x0002674c bne 0x267a0 | goto label_2;
| }
0x00026750 ldrb r3, [r4, 0x256] | r3 = *((r4 + 0x256));
0x00026754 cmp r3, r6 |
| if (r3 == r6) {
0x00026758 beq 0x26790 | goto label_3;
| }
0x0002675c ldr r2, [pc, 0xc8] | r2 = *(0x26828);
0x00026760 mov r6, 5 | r6 = 5;
0x00026764 add r2, pc, r2 | r2 = pc + r2;
| do {
0x00026768 ldr r1, [pc, 0xc0] | r1 = $d;
0x0002676c ldr r0, [r4] | r0 = *(r4);
0x00026770 ldr r3, [r4, 0x428] | r3 = *((r4 + 0x428));
0x00026774 add r1, pc, r1 | r1 = pc + r1;
0x00026778 bl 0x10544 | Curl_failf ();
0x0002677c mov r0, r7 | r0 = r7;
0x00026780 bl 0x2641c | destroy_async_data ();
| label_0:
0x00026784 mov r0, r6 | r0 = r6;
0x00026788 add sp, sp, 0xc |
0x0002678c pop {r4, r5, r6, r7, r8, sb, pc} |
| label_3:
0x00026790 ldr r2, [pc, 0x9c] | r2 = *(0x26830);
0x00026794 mov r6, 6 | r6 = 6;
0x00026798 add r2, pc, r2 | r2 = pc + r2;
0x0002679c b 0x26768 |
| } while (1);
| label_2:
0x000267a0 mov r0, r7 | r0 = r7;
0x000267a4 bl 0x2641c | destroy_async_data ();
0x000267a8 ldr r3, [r4, 0x430] | r3 = *((r4 + 0x430));
0x000267ac str r3, [r8] | *(r8) = r3;
0x000267b0 b 0x26784 | goto label_0;
| label_1:
0x000267b4 mov r6, sp | r6 = sp;
0x000267b8 mov r0, r6 | r0 = r6;
0x000267bc bl 0x69f0 | Curl_now ();
0x000267c0 add r3, r7, 0x700 | r3 = r7 + 0x700;
0x000267c4 add r3, r3, 8 | r3 += 8;
0x000267c8 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x000267cc ldm r6, {r0, r1} | r0 = *(r6);
| r1 = *((r6 + 4));
0x000267d0 bl 0x6a20 | Curl_timediff ();
0x000267d4 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000267d8 cmp r3, 0 |
| if (r3 != 0) {
0x000267dc moveq r3, 1 | r3 = 1;
| }
0x000267e0 bic r0, r0, r0, asr 31 | r0 = BIT_MASK (r0, r0);
| if (r3 != 0) {
0x000267e4 beq 0x267f8 |
0x000267e8 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x000267ec cmp r2, r0 |
| if (r2 > r0) {
0x000267f0 bgt 0x267fc | goto label_4;
| }
0x000267f4 lsl r3, r3, 1 | r3 <<= 1;
| }
0x000267f8 str r3, [r5, 4] | *((r5 + 4)) = r3;
| label_4:
0x000267fc ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00026800 mov r2, 1 | r2 = 1;
0x00026804 cmp r3, 0xfa |
| if (r3 <= 0xfa) {
0x00026808 movhi r3, 0xfa | r3 = 0xfa;
| }
| if (r3 <= 0xfa) {
0x0002680c strhi r3, [r5, 4] | *((r5 + 4)) = r3;
| }
0x00026810 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00026814 mov r6, 0 | r6 = 0;
0x00026818 add r0, r0, r1 | r0 += r1;
0x0002681c str r0, [r5, 8] | *((r5 + 8)) = r0;
0x00026820 ldr r0, [r4] | r0 = *(r4);
0x00026824 bl 0x1e348 | Curl_expire ();
0x00026828 b 0x26784 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x276fc */
| #include <stdint.h>
|
; (fcn) sym.Curl_sasl_start () | void Curl_sasl_start (int32_t arg1, uint32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x000276fc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00027700 ldr r4, [r1] | r4 = *(r1);
0x00027704 sub sp, sp, 0x24 |
0x00027708 str r3, [sp, 0x10] | var_10h = r3;
0x0002770c ldr r3, [pc, 0x4b8] | r3 = *(0x27bc8);
0x00027710 mov r6, r1 | r6 = r1;
0x00027714 ldr r1, [r1, 0xf0] | r1 = *((r1 + 0xf0));
0x00027718 add r3, pc, r3 | r3 = pc + r3;
0x0002771c str r3, [sp, 0x14] | var_14h = r3;
0x00027720 cmp r1, 2 |
0x00027724 mov r3, 0 | r3 = 0;
0x00027728 mov r8, r0 | r8 = r0;
0x0002772c mov r5, r2 | r5 = r2;
0x00027730 str r3, [sp, 0x18] | var_18h = r3;
0x00027734 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r1 == 2) {
0x00027738 bne 0x2775c |
0x0002773c ldr r3, [r6, 0x19c] | r3 = *((r6 + 0x19c));
0x00027740 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00027744 movne r3, 1 | r3 = 1;
| }
0x00027748 add r3, r6, r3, lsl 4 | r3 = r6 + (r3 << 4);
0x0002774c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00027750 cmp r3, 2 |
| if (r3 == 2) {
0x00027754 ldrne sl, [r6, 0xe4] | sl = *((r6 + 0xe4));
| }
| if (r3 != 2) {
0x00027758 bne 0x27768 | goto label_3;
| }
| }
0x0002775c cmp r1, 2 |
0x00027760 ldr sl, [r6, 0xa0] | sl = *((r6 + 0xa0));
| if (r1 == 2) {
0x00027764 bne 0x27788 |
| label_3:
0x00027768 ldr r3, [r6, 0x19c] | r3 = *((r6 + 0x19c));
0x0002776c adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00027770 movne r3, 1 | r3 = 1;
| }
0x00027774 add r3, r6, r3, lsl 4 | r3 = r6 + (r3 << 4);
0x00027778 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x0002777c cmp r3, 2 |
| if (r3 == 2) {
0x00027780 ldrne fp, [r6, 0xfc] | fp = *((r6 + 0xfc));
| }
| if (r3 != 2) {
0x00027784 bne 0x2778c | goto label_4;
| }
| }
0x00027788 ldr fp, [r6, 0x100] | fp = *((r6 + 0x100));
| label_4:
0x0002778c ldr sb, [r4, 0x5dc] | sb = *((r4 + 0x5dc));
0x00027790 ldr r7, [r8, 8] | r7 = *((r8 + 8));
0x00027794 cmp sb, 0 |
| if (sb != 0) {
0x00027798 ldreq r3, [r8] | r3 = *(r8);
| }
0x0002779c ldr r0, [r8, 0xc] | r0 = *((r8 + 0xc));
| if (sb != 0) {
0x000277a0 ldreq sb, [r3] | sb = *(r3);
| }
0x000277a4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000277a8 and r7, r7, r0 | r7 &= r0;
0x000277ac mov r1, 0 | r1 = 0;
0x000277b0 tst r7, 0x20 |
0x000277b4 strb r5, [r8, 0x16] | *((r8 + 0x16)) = r5;
0x000277b8 str r1, [r8, 0x10] | *((r8 + 0x10)) = r1;
0x000277bc str r1, [r3] | *(r3) = r1;
| if ((r7 & 0x20) == 0) {
0x000277c0 beq 0x278e0 | goto label_5;
| }
0x000277c4 ldr r1, [r6, 0x174] | r1 = *((r6 + 0x174));
0x000277c8 ldrb r1, [r1] | r1 = *(r1);
0x000277cc cmp r1, 0 |
| if (r1 != 0) {
0x000277d0 bne 0x278e0 | goto label_5;
| }
0x000277d4 mov r3, 0x20 | r3 = 0x20;
0x000277d8 cmp r5, 0 |
0x000277dc str r3, [r8, 0x10] | *((r8 + 0x10)) = r3;
| if (r5 == 0) {
0x000277e0 bne 0x277f0 |
0x000277e4 ldrb r3, [r4, 0x60c] | r3 = *((r4 + 0x60c));
0x000277e8 cmp r3, 0 |
| if (r3 == 0) {
0x000277ec beq 0x27b54 | goto label_6;
| }
| }
0x000277f0 mov r0, r4 | r0 = r4;
0x000277f4 add r3, sp, 0x1c | r3 += var_1ch;
0x000277f8 add r2, sp, 0x18 | r2 += var_18h;
0x000277fc ldr r1, [r6, 0x170] | r1 = *((r6 + 0x170));
0x00027800 bl 0x2fcc0 | Curl_auth_create_external_message ();
0x00027804 ldr r7, [pc, 0x3c4] | r7 = $d;
0x00027808 mov fp, 0x10 |
0x0002780c mov r4, 4 | r4 = 4;
0x00027810 add r7, pc, r7 | r7 = pc + r7;
0x00027814 mov r5, r0 | r5 = r0;
| do {
| label_1:
0x00027818 adds r3, r7, 0 | r3 = r7 + 0;
| if (r3 == r7) {
0x0002781c movne r3, 1 | r3 = 1;
| }
0x00027820 cmp r5, 0 |
| if (r5 == 0) {
0x00027824 movne r3, 0 | r3 = 0;
| }
0x00027828 cmp r3, 0 |
0x0002782c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00027830 ldr r3, [pc, 0x39c] | r3 = *(0x27bd0);
0x00027834 ldr sl, [r2, r3] | sl = *((r2 + r3));
| if (r3 != 0) {
0x00027838 beq 0x278c8 |
0x0002783c ldr r5, [sp, 0x18] | r5 = var_18h;
0x00027840 cmp r5, 0 |
| if (r5 != 0) {
0x00027844 beq 0x2788c |
0x00027848 ldr r3, [r8] | r3 = *(r8);
0x0002784c ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00027850 cmp r2, 0 |
0x00027854 str r2, [sp, 0x14] | var_14h = r2;
| if (r2 == 0) {
0x00027858 beq 0x2788c | goto label_7;
| }
0x0002785c mov r0, r7 | r0 = r7;
0x00027860 bl 0x5250 | strlen (r0);
0x00027864 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00027868 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0002786c add r0, r0, r3 | r0 += r3;
0x00027870 cmp r2, r0 |
| if (r2 >= r0) {
0x00027874 bhs 0x2788c | goto label_7;
| }
0x00027878 ldr r3, [sl] | r3 = *(sl);
0x0002787c mov r0, r5 | r0 = r5;
0x00027880 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00027884 mov r3, 0 | r3 = 0;
0x00027888 str r3, [sp, 0x18] | var_18h = r3;
| }
| label_7:
0x0002788c ldr r3, [r8] | r3 = *(r8);
0x00027890 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00027894 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00027898 mov r1, r7 | r1 = r7;
0x0002789c mov r0, r6 | r0 = r6;
0x000278a0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000278a4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x000278a8 bne 0x278c8 | goto label_8;
| }
0x000278ac ldr r2, [sp, 0x10] | r2 = var_10h;
0x000278b0 mov r3, 1 | r3 = 1;
0x000278b4 str r3, [r2] | *(r2) = r3;
0x000278b8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000278bc cmp r3, 0 |
| if (r3 == 0) {
0x000278c0 movne r4, fp | r4 = fp;
| }
0x000278c4 str r4, [r8, 4] | *((r8 + 4)) = r4;
| }
| label_8:
0x000278c8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000278cc ldr r3, [sl] | r3 = *(sl);
0x000278d0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000278d4 mov r0, r5 | r0 = r5;
0x000278d8 add sp, sp, 0x24 |
0x000278dc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x000278e0 ldrb r1, [r6, 0x258] | r1 = *((r6 + 0x258));
0x000278e4 cmp r1, 0 |
| if (r1 != 0) {
0x000278e8 bne 0x27900 | goto label_9;
| }
| label_2:
0x000278ec mov r4, 0 | r4 = 0;
0x000278f0 mov fp, 0x10 |
0x000278f4 mov r7, r4 | r7 = r4;
| label_0:
0x000278f8 mov r5, 0 | r5 = 0;
0x000278fc b 0x27818 |
| } while (1);
| label_9:
0x00027900 tst r7, 8 |
| if ((r7 & 8) != 0) {
0x00027904 beq 0x27930 |
0x00027908 bl 0x305cc | r0 = Curl_auth_is_digest_supported ();
0x0002790c cmp r0, 0 |
| if (r0 == 0) {
0x00027910 beq 0x27930 | goto label_10;
| }
0x00027914 ldr r7, [pc, 0x2bc] | r7 = *(0x27bd4);
0x00027918 mov r3, 8 | r3 = 8;
0x0002791c str r3, [r8, 0x10] | *((r8 + 0x10)) = r3;
0x00027920 mov fp, 0x10 |
0x00027924 mov r4, 6 | r4 = 6;
0x00027928 add r7, pc, r7 | r7 = pc + r7;
0x0002792c b 0x278f8 | goto label_0;
| }
| label_10:
0x00027930 tst r7, 4 |
| if ((r7 & 4) != 0) {
0x00027934 beq 0x27954 |
0x00027938 ldr r7, [pc, 0x29c] | r7 = *(0x27bd8);
0x0002793c mov r3, 4 | r3 = 4;
0x00027940 str r3, [r8, 0x10] | *((r8 + 0x10)) = r3;
0x00027944 mov fp, 0x10 |
0x00027948 mov r4, 5 | r4 = 5;
0x0002794c add r7, pc, r7 | r7 = pc + r7;
0x00027950 b 0x278f8 | goto label_0;
| }
0x00027954 tst r7, 0x40 |
| if ((r7 & 0x40) != 0) {
0x00027958 beq 0x279cc |
0x0002795c bl 0x31304 | r0 = Curl_auth_is_ntlm_supported ();
0x00027960 cmp r0, 0 |
| if (r0 == 0) {
0x00027964 beq 0x279cc | goto label_11;
| }
0x00027968 mov r1, 0x40 | r1 = 0x40;
0x0002796c cmp r5, 0 |
0x00027970 str r1, [r8, 0x10] | *((r8 + 0x10)) = r1;
| if (r5 == 0) {
0x00027974 bne 0x27984 |
0x00027978 ldrb r1, [r4, 0x60c] | r1 = *((r4 + 0x60c));
0x0002797c cmp r1, 0 |
| if (r1 == 0) {
0x00027980 beq 0x27b68 | goto label_12;
| }
| }
0x00027984 add r1, sp, 0x1c | r1 += var_1ch;
0x00027988 str r1, [sp, 0xc] | var_ch = r1;
0x0002798c add r1, sp, 0x18 | r1 += var_18h;
0x00027990 str r1, [sp, 8] | var_8h = r1;
0x00027994 add r1, r6, 0x2f8 | r1 = r6 + 0x2f8;
0x00027998 str r1, [sp, 4] | var_4h = r1;
0x0002799c mov r0, r4 | r0 = r4;
0x000279a0 str sl, [sp] | *(sp) = sl;
0x000279a4 mov r3, sb | r3 = sb;
0x000279a8 ldr r2, [r6, 0x174] | r2 = *((r6 + 0x174));
0x000279ac ldr r1, [r6, 0x170] | r1 = *((r6 + 0x170));
0x000279b0 bl 0x31540 | Curl_auth_create_ntlm_type1_message ();
0x000279b4 ldr r7, [pc, 0x224] | r7 = *(0x27bdc);
0x000279b8 mov fp, 9 |
0x000279bc mov r4, 8 | r4 = 8;
0x000279c0 add r7, pc, r7 | r7 = pc + r7;
0x000279c4 mov r5, r0 | r5 = r0;
0x000279c8 b 0x27818 | goto label_1;
| }
| label_11:
0x000279cc tst r7, 0x100 |
| if ((r7 & 0x100) != 0) {
0x000279d0 beq 0x27a3c |
0x000279d4 ldr r3, [r6, 0x17c] | r3 = *((r6 + 0x17c));
0x000279d8 cmp r3, 0 |
| if (r3 == 0) {
0x000279dc beq 0x27a3c | goto label_13;
| }
0x000279e0 mov r1, 0x100 | r1 = 0x100;
0x000279e4 cmp r5, 0 |
0x000279e8 str r1, [r8, 0x10] | *((r8 + 0x10)) = r1;
| if (r5 == 0) {
0x000279ec bne 0x279fc |
0x000279f0 ldrb r1, [r4, 0x60c] | r1 = *((r4 + 0x60c));
0x000279f4 cmp r1, 0 |
| if (r1 == 0) {
0x000279f8 beq 0x27b7c | goto label_14;
| }
| }
0x000279fc add r1, sp, 0x1c | r1 += var_1ch;
0x00027a00 str r1, [sp, 8] | var_8h = r1;
0x00027a04 add r1, sp, 0x18 | r1 += var_18h;
0x00027a08 str r1, [sp, 4] | var_4h = r1;
0x00027a0c str r3, [sp] | *(sp) = r3;
0x00027a10 mov r0, r4 | r0 = r4;
0x00027a14 mov r3, fp | r3 = fp;
0x00027a18 mov r2, sl | r2 = sl;
0x00027a1c ldr r1, [r6, 0x170] | r1 = *((r6 + 0x170));
0x00027a20 bl 0x31c20 | Curl_auth_create_oauth_bearer_message ();
0x00027a24 ldr r7, [pc, 0x1b8] | r7 = *(0x27be0);
0x00027a28 mov fp, 0xe |
0x00027a2c mov r4, 0xd | r4 = 0xd;
0x00027a30 add r7, pc, r7 | r7 = pc + r7;
0x00027a34 mov r5, r0 | r5 = r0;
0x00027a38 b 0x27818 | goto label_1;
| }
| label_13:
0x00027a3c tst r7, 0x80 |
| if ((r7 & 0x80) != 0) {
0x00027a40 beq 0x27aac |
0x00027a44 ldr r3, [r6, 0x17c] | r3 = *((r6 + 0x17c));
0x00027a48 cmp r3, 0 |
| if (r3 == 0) {
0x00027a4c beq 0x27aac | goto label_15;
| }
0x00027a50 mov r2, 0x80 | r2 = 0x80;
0x00027a54 cmp r5, 0 |
0x00027a58 str r2, [r8, 0x10] | *((r8 + 0x10)) = r2;
| if (r5 == 0) {
0x00027a5c bne 0x27a6c |
0x00027a60 ldrb r2, [r4, 0x60c] | r2 = *((r4 + 0x60c));
0x00027a64 cmp r2, 0 |
| if (r2 == 0) {
0x00027a68 beq 0x27b90 | goto label_16;
| }
| }
0x00027a6c add r2, sp, 0x1c | r2 += var_1ch;
0x00027a70 str r2, [sp, 8] | var_8h = r2;
0x00027a74 str r3, [sp] | *(sp) = r3;
0x00027a78 add r2, sp, 0x18 | r2 += var_18h;
0x00027a7c mov r3, 0 | r3 = 0;
0x00027a80 str r2, [sp, 4] | var_4h = r2;
0x00027a84 mov r0, r4 | r0 = r4;
0x00027a88 mov r2, r3 | r2 = r3;
0x00027a8c ldr r1, [r6, 0x170] | r1 = *((r6 + 0x170));
0x00027a90 bl 0x31c20 | Curl_auth_create_oauth_bearer_message ();
0x00027a94 ldr r7, [pc, 0x14c] | r7 = *(0x27be4);
0x00027a98 mov fp, 0x10 |
0x00027a9c mov r4, 0xd | r4 = 0xd;
0x00027aa0 add r7, pc, r7 | r7 = pc + r7;
0x00027aa4 mov r5, r0 | r5 = r0;
0x00027aa8 b 0x27818 | goto label_1;
| }
| label_15:
0x00027aac tst r7, 2 |
| if ((r7 & 2) != 0) {
0x00027ab0 beq 0x27b04 |
0x00027ab4 mov r3, 2 | r3 = 2;
0x00027ab8 cmp r5, 0 |
0x00027abc str r3, [r8, 0x10] | *((r8 + 0x10)) = r3;
| if (r5 == 0) {
0x00027ac0 bne 0x27ad0 |
0x00027ac4 ldrb r3, [r4, 0x60c] | r3 = *((r4 + 0x60c));
0x00027ac8 cmp r3, 0 |
| if (r3 == 0) {
0x00027acc beq 0x27ba4 | goto label_17;
| }
| }
0x00027ad0 add r3, sp, 0x1c | r3 += var_1ch;
0x00027ad4 str r3, [sp] | *(sp) = r3;
0x00027ad8 mov r0, r4 | r0 = r4;
0x00027adc add r3, sp, 0x18 | r3 += var_18h;
0x00027ae0 ldr r2, [r6, 0x174] | r2 = *((r6 + 0x174));
0x00027ae4 ldr r1, [r6, 0x170] | r1 = *((r6 + 0x170));
0x00027ae8 bl 0x2fb20 | Curl_auth_create_plain_message ();
0x00027aec ldr r7, [pc, 0xf8] | r7 = *(0x27be8);
0x00027af0 mov fp, 0x10 |
0x00027af4 mov r4, 1 | r4 = 1;
0x00027af8 add r7, pc, r7 | r7 = pc + r7;
0x00027afc mov r5, r0 | r5 = r0;
0x00027b00 b 0x27818 | goto label_1;
| }
0x00027b04 tst r7, 1 |
| if ((r7 & 1) == 0) {
0x00027b08 beq 0x278ec | goto label_2;
| }
0x00027b0c mov r3, 1 | r3 = 1;
0x00027b10 cmp r5, 0 |
0x00027b14 str r3, [r8, 0x10] | *((r8 + 0x10)) = r3;
| if (r5 == 0) {
0x00027b18 bne 0x27b28 |
0x00027b1c ldrb r3, [r4, 0x60c] | r3 = *((r4 + 0x60c));
0x00027b20 cmp r3, 0 |
| if (r3 == 0) {
0x00027b24 beq 0x27bb8 | goto label_18;
| }
| }
0x00027b28 mov r0, r4 | r0 = r4;
0x00027b2c add r3, sp, 0x1c | r3 += var_1ch;
0x00027b30 add r2, sp, 0x18 | r2 += var_18h;
0x00027b34 ldr r1, [r6, 0x170] | r1 = *((r6 + 0x170));
0x00027b38 bl 0x2fc30 | Curl_auth_create_login_message ();
0x00027b3c ldr r7, [pc, 0xac] | r7 = *(0x27bec);
0x00027b40 mov fp, 3 |
0x00027b44 mov r4, 2 | r4 = 2;
0x00027b48 add r7, pc, r7 | r7 = pc + r7;
0x00027b4c mov r5, r0 | r5 = r0;
0x00027b50 b 0x27818 | goto label_1;
| label_6:
0x00027b54 ldr r7, [pc, 0x98] | r7 = *(0x27bf0);
0x00027b58 mov fp, 0x10 |
0x00027b5c mov r4, 4 | r4 = 4;
0x00027b60 add r7, pc, r7 | r7 = pc + r7;
0x00027b64 b 0x27818 | goto label_1;
| label_12:
0x00027b68 ldr r7, [pc, 0x88] | r7 = *(0x27bf4);
0x00027b6c mov fp, 9 |
0x00027b70 mov r4, 8 | r4 = 8;
0x00027b74 add r7, pc, r7 | r7 = pc + r7;
0x00027b78 b 0x27818 | goto label_1;
| label_14:
0x00027b7c ldr r7, [pc, 0x78] | r7 = *(0x27bf8);
0x00027b80 mov fp, 0xe |
0x00027b84 mov r4, 0xd | r4 = 0xd;
0x00027b88 add r7, pc, r7 | r7 = pc + r7;
0x00027b8c b 0x27818 | goto label_1;
| label_16:
0x00027b90 ldr r7, [pc, 0x68] | r7 = *(0x27bfc);
0x00027b94 mov fp, 0x10 |
0x00027b98 mov r4, 0xd | r4 = 0xd;
0x00027b9c add r7, pc, r7 | r7 = pc + r7;
0x00027ba0 b 0x27818 | goto label_1;
| label_17:
0x00027ba4 ldr r7, [pc, 0x58] | r7 = *(0x27c00);
0x00027ba8 mov fp, 0x10 |
0x00027bac mov r4, 1 | r4 = 1;
0x00027bb0 add r7, pc, r7 | r7 = pc + r7;
0x00027bb4 b 0x27818 | goto label_1;
| label_18:
0x00027bb8 ldr r7, [pc, 0x48] | r7 = *(0x27c04);
0x00027bbc mov fp, 3 |
0x00027bc0 mov r4, 2 | r4 = 2;
0x00027bc4 add r7, pc, r7 | r7 = pc + r7;
0x00027bc8 b 0x27818 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x10ae8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_sendf () | void Curl_sendf (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_40h;
| int32_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x00010ae8 push {r2, r3} |
0x00010aec push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010af0 ldr sl, [r1] | sl = *(r1);
0x00010af4 sub sp, sp, 0x1c |
0x00010af8 str r0, [sp, 0xc] | var_ch = r0;
0x00010afc mov fp, r1 |
0x00010b00 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00010b04 add r1, sp, 0x44 | r1 += var_44h;
0x00010b08 str r1, [sp, 0x14] | var_14h = r1;
0x00010b0c bl 0x5490 | fcn_00005490 ();
0x00010b10 ldr sb, [pc, 0xa0] | sb = *(0x00010bb8);
0x00010b14 add sb, pc, sb | sb = pc + sb;
0x00010b18 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x00010b1c moveq r7, 0x1b | r7 = 0x1b;
| }
| if (r8 == r0) {
0x00010b20 beq 0x10ba4 | goto label_0;
| }
0x00010b24 mov r3, 0 | r3 = 0;
0x00010b28 add r6, sp, 0x18 | r6 += var_18h;
0x00010b2c str r3, [r6, -8]! | *((r6 -= 8)) = r3;
0x00010b30 bl 0x5250 | strlen (r0);
0x00010b34 mov r4, r8 | r4 = r8;
0x00010b38 mov r5, r0 | r5 = r0;
| do {
0x00010b3c str r6, [sp] | *(sp) = r6;
0x00010b40 mov r3, r5 | r3 = r5;
0x00010b44 mov r2, r4 | r2 = r4;
0x00010b48 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00010b4c mov r0, fp | r0 = fp;
0x00010b50 bl 0x10244 | r0 = Curl_write ();
0x00010b54 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x00010b58 bne 0x10b90 | goto label_1;
| }
0x00010b5c ldrb r3, [sl, 0x4d8] | r3 = *((sl + 0x4d8));
0x00010b60 cmp r3, 0 |
| if (r3 != 0) {
0x00010b64 beq 0x10b7c |
0x00010b68 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00010b6c mov r2, r4 | r2 = r4;
0x00010b70 mov r1, 4 | r1 = 4;
0x00010b74 mov r0, sl | r0 = sl;
0x00010b78 bl 0x10424 | Curl_debug ();
| }
0x00010b7c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00010b80 cmp r3, r5 |
| if (r3 == r5) {
0x00010b84 subne r5, r5, r3 | r5 -= r3;
| }
| if (r3 == r5) {
0x00010b88 addne r4, r4, r3 | r4 += r3;
| }
0x00010b8c bne 0x10b3c |
| } while (r3 != r5);
| label_1:
0x00010b90 ldr r3, [pc, 0x24] |
0x00010b94 mov r0, r8 | r0 = r8;
0x00010b98 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00010b9c ldr r3, [r3] | r3 = $d;
0x00010ba0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_0:
0x00010ba4 mov r0, r7 | r0 = r7;
0x00010ba8 add sp, sp, 0x1c |
0x00010bac pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010bb0 add sp, sp, 8 |
0x00010bb4 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x192f0 */
| #include <stdint.h>
|
; (fcn) sym.Curl_single_getsock () | void Curl_single_getsock (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000192f0 push {r4, lr} |
0x000192f4 ldr lr, [r0, 0x284] |
0x000192f8 ldr lr, [lr, 0x2c] |
0x000192fc cmp lr, 0 |
| if (lr != 0) {
0x00019300 beq 0x19310 |
0x00019304 mov r3, lr | r3 = lr;
0x00019308 pop {r4, lr} |
0x0001930c bx r3 | return uint32_t (*r3)() ();
| }
0x00019310 cmp r2, 1 |
0x00019314 mov r4, r2 | r4 = r2;
| if (r2 > 1) {
0x00019318 ble 0x19390 |
0x0001931c ldr r2, [r0] | r2 = *(r0);
0x00019320 mov r3, r0 | r3 = r0;
0x00019324 ldr r0, [r2, 0x110] | r0 = *((r2 + 0x110));
0x00019328 mov ip, r1 |
0x0001932c and r0, r0, 0x15 | r0 &= 0x15;
0x00019330 cmp r0, 1 |
| if (r0 != 1) {
0x00019334 ldreq r1, [r3, 0x290] | r1 = *((r3 + 0x290));
| }
| if (r0 == 1) {
0x00019338 movne r0, lr | r0 = lr;
| }
| if (r0 != 1) {
0x0001933c streq r1, [ip] | *(ip) = r1;
| }
0x00019340 ldr r2, [r2, 0x110] | r2 = *((r2 + 0x110));
0x00019344 and r2, r2, 0x2a | r2 &= 0x2a;
0x00019348 cmp r2, 2 |
0x0001934c popne {r4, pc} |
0x00019350 ldr r2, [r3, 0x294] | r2 = *((r3 + 0x294));
0x00019354 ldr r3, [r3, 0x290] | r3 = *((r3 + 0x290));
0x00019358 cmp r3, r2 |
| if (r3 == r2) {
0x0001935c bne 0x19374 |
0x00019360 cmp r0, 0 |
| if (r0 == 0) {
0x00019364 movne r3, 0 | r3 = 0;
| }
| if (r0 != 0) {
0x00019368 bne 0x19380 | goto label_0;
| }
0x0001936c mov r3, r0 | r3 = r0;
0x00019370 b 0x1937c |
| } else {
0x00019374 adds r3, r0, 0 | r3 = r0 + 0;
| if (r3 != r0) {
0x00019378 movne r3, 1 | r3 = 1;
| goto label_1;
| }
| }
| label_1:
0x0001937c str r2, [ip, r3, lsl 2] | offset_0 = r3 << 2;
| *((ip + offset_0)) = r2;
| label_0:
0x00019380 add r3, r3, 0x10 | r3 += 0x10;
0x00019384 mov r2, 1 | r2 = 1;
0x00019388 orr r0, r0, r2, lsl r3 | r0 |= (r2 << r3);
0x0001938c pop {r4, pc} |
| }
0x00019390 mov r0, lr | r0 = lr;
0x00019394 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x36df8 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ssl_connect () | void Curl_ssl_connect (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00036df8 add r3, r0, r1 | r3 = r0 + r1;
0x00036dfc ldrb r3, [r3, 0x271] | r3 = *((r3 + 0x271));
0x00036e00 push {r4, r5, r6, lr} |
0x00036e04 cmp r3, 0 |
0x00036e08 mov r4, r0 | r4 = r0;
0x00036e0c mov r6, r1 | r6 = r1;
0x00036e10 bne 0x36e6c |
| while (r5 == r0) {
0x00036e14 ldr r0, [r4] | r0 = *(r4);
0x00036e18 bl 0x36700 | r0 = ssl_prefs_check ();
0x00036e1c cmp r0, 0 |
| if (r0 != 0) {
0x00036e20 moveq r5, 0x23 | r5 = 0x23;
| }
| if (r0 == 0) {
0x00036e24 beq 0x36e78 | goto label_0;
| }
0x00036e28 add r3, r4, r6, lsl 4 | r3 = r4 + (r6 << 4);
0x00036e2c mov r2, 1 | r2 = 1;
0x00036e30 strb r2, [r3, 0x1bc] | *((r3 + 0x1bc)) = r2;
0x00036e34 str r2, [r3, 0x1c0] | *((r3 + 0x1c0)) = r2;
0x00036e38 ldr r3, [pc, 0x40] |
0x00036e3c mov r1, r6 | r1 = r6;
0x00036e40 add r3, pc, r3 | r3 = pc + r3;
0x00036e44 ldr r3, [r3] |
0x00036e48 mov r0, r4 | r0 = r4;
0x00036e4c ldr r3, [r3, 0x30] | r3 = *(0x36eac);
0x00036e50 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00036e54 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00036e58 bne 0x36e78 | goto label_0;
| }
0x00036e5c mov r1, 5 | r1 = 5;
0x00036e60 ldr r0, [r4] | r0 = *(r4);
0x00036e64 bl 0x7f7c | Curl_pgrsTime ();
0x00036e68 b 0x36e78 | goto label_0;
0x00036e6c bl 0x369e4 | r0 = ssl_connect_init_proxy ();
0x00036e70 subs r5, r0, 0 | r5 = r0 - 0;
0x00036e74 beq 0x36e14 |
| }
| label_0:
0x00036e78 mov r0, r5 | r0 = r5;
0x00036e7c pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x36e84 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ssl_connect_nonblocking () | void Curl_ssl_connect_nonblocking (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00036e84 add r3, r0, r1 | r3 = r0 + r1;
0x00036e88 ldrb r3, [r3, 0x271] | r3 = *((r3 + 0x271));
0x00036e8c push {r4, r5, r6, r7, r8, lr} |
0x00036e90 cmp r3, 0 |
0x00036e94 mov r4, r0 | r4 = r0;
0x00036e98 mov r6, r1 | r6 = r1;
0x00036e9c mov r7, r2 | r7 = r2;
0x00036ea0 bne 0x36f08 |
| while (r5 == r0) {
0x00036ea4 ldr r0, [r4] | r0 = *(r4);
0x00036ea8 bl 0x36700 | r0 = ssl_prefs_check ();
0x00036eac cmp r0, 0 |
| if (r0 != 0) {
0x00036eb0 moveq r5, 0x23 | r5 = 0x23;
| }
| if (r0 == 0) {
0x00036eb4 beq 0x36f14 | goto label_0;
| }
0x00036eb8 add r3, r4, r6, lsl 4 | r3 = r4 + (r6 << 4);
0x00036ebc mov r2, 1 | r2 = 1;
0x00036ec0 strb r2, [r3, 0x1bc] | *((r3 + 0x1bc)) = r2;
0x00036ec4 ldr r3, [pc, 0x50] |
0x00036ec8 mov r2, r7 | r2 = r7;
0x00036ecc add r3, pc, r3 | r3 = pc + r3;
0x00036ed0 ldr r3, [r3] |
0x00036ed4 mov r1, r6 | r1 = r6;
0x00036ed8 ldr r3, [r3, 0x34] | r3 = *(0x36f4c);
0x00036edc mov r0, r4 | r0 = r4;
0x00036ee0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00036ee4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00036ee8 bne 0x36f14 | goto label_0;
| }
0x00036eec ldrb r3, [r7] | r3 = *(r7);
0x00036ef0 cmp r3, 0 |
| if (r3 == 0) {
0x00036ef4 beq 0x36f14 | goto label_0;
| }
0x00036ef8 mov r1, 5 | r1 = 5;
0x00036efc ldr r0, [r4] | r0 = *(r4);
0x00036f00 bl 0x7f7c | Curl_pgrsTime ();
0x00036f04 b 0x36f14 | goto label_0;
0x00036f08 bl 0x369e4 | r0 = ssl_connect_init_proxy ();
0x00036f0c subs r5, r0, 0 | r5 = r0 - 0;
0x00036f10 beq 0x36ea4 |
| }
| label_0:
0x00036f14 mov r0, r5 | r0 = r5;
0x00036f18 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x36e84 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ssl_connect_nonblocking () | void Curl_ssl_connect_nonblocking (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00036e84 add r3, r0, r1 | r3 = r0 + r1;
0x00036e88 ldrb r3, [r3, 0x271] | r3 = *((r3 + 0x271));
0x00036e8c push {r4, r5, r6, r7, r8, lr} |
0x00036e90 cmp r3, 0 |
0x00036e94 mov r4, r0 | r4 = r0;
0x00036e98 mov r6, r1 | r6 = r1;
0x00036e9c mov r7, r2 | r7 = r2;
0x00036ea0 bne 0x36f08 |
| while (r5 == r0) {
0x00036ea4 ldr r0, [r4] | r0 = *(r4);
0x00036ea8 bl 0x36700 | r0 = ssl_prefs_check ();
0x00036eac cmp r0, 0 |
| if (r0 != 0) {
0x00036eb0 moveq r5, 0x23 | r5 = 0x23;
| }
| if (r0 == 0) {
0x00036eb4 beq 0x36f14 | goto label_0;
| }
0x00036eb8 add r3, r4, r6, lsl 4 | r3 = r4 + (r6 << 4);
0x00036ebc mov r2, 1 | r2 = 1;
0x00036ec0 strb r2, [r3, 0x1bc] | *((r3 + 0x1bc)) = r2;
0x00036ec4 ldr r3, [pc, 0x50] |
0x00036ec8 mov r2, r7 | r2 = r7;
0x00036ecc add r3, pc, r3 | r3 = pc + r3;
0x00036ed0 ldr r3, [r3] |
0x00036ed4 mov r1, r6 | r1 = r6;
0x00036ed8 ldr r3, [r3, 0x34] | r3 = *(0x36f4c);
0x00036edc mov r0, r4 | r0 = r4;
0x00036ee0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00036ee4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00036ee8 bne 0x36f14 | goto label_0;
| }
0x00036eec ldrb r3, [r7] | r3 = *(r7);
0x00036ef0 cmp r3, 0 |
| if (r3 == 0) {
0x00036ef4 beq 0x36f14 | goto label_0;
| }
0x00036ef8 mov r1, 5 | r1 = 5;
0x00036efc ldr r0, [r4] | r0 = *(r4);
0x00036f00 bl 0x7f7c | Curl_pgrsTime ();
0x00036f04 b 0x36f14 | goto label_0;
0x00036f08 bl 0x369e4 | r0 = ssl_connect_init_proxy ();
0x00036f0c subs r5, r0, 0 | r5 = r0 - 0;
0x00036f10 beq 0x36ea4 |
| }
| label_0:
0x00036f14 mov r0, r5 | r0 = r5;
0x00036f18 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x36f6c */
| #include <stdint.h>
|
; (fcn) sym.Curl_ssl_getsessionid () | void Curl_ssl_getsessionid (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00036f6c ldr ip, [r0, 0xf0] | ip = *((r0 + 0xf0));
0x00036f70 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00036f74 ldr r8, [r0] | r8 = *(r0);
0x00036f78 cmp ip, 2 |
0x00036f7c sub sp, sp, 0x14 |
| if (ip != 2) {
0x00036f80 bne 0x37004 | goto label_4;
| }
0x00036f84 add r3, r0, r3 | r3 = r0 + r3;
0x00036f88 ldrb r3, [r3, 0x271] | r3 = *((r3 + 0x271));
0x00036f8c cmp r3, 0 |
| if (r3 != 0) {
0x00036f90 bne 0x37004 | goto label_4;
| }
0x00036f94 ldr r3, [r0, 0xe4] | r3 = *((r0 + 0xe4));
0x00036f98 add fp, r0, 0x228 |
0x00036f9c str r3, [sp] | *(sp) = r3;
0x00036fa0 mov r3, 1 | r3 = 1;
| do {
0x00036fa4 ldr lr, [r0, 0xfc] |
0x00036fa8 cmp r3, 0 |
0x00036fac ldr sb, [r0, 0x100] | sb = *((r0 + 0x100));
0x00036fb0 mov r3, 0 | r3 = 0;
| if (r3 == 0) {
0x00036fb4 movne sb, lr | sb = lr;
| }
0x00036fb8 cmp ip, 2 |
0x00036fbc str r3, [r1] | *(r1) = r3;
| if (ip == 2) {
0x00036fc0 bne 0x36fe4 |
0x00036fc4 ldr r3, [r0, 0x19c] | r3 = *((r0 + 0x19c));
0x00036fc8 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00036fcc movne r3, 1 | r3 = 1;
| }
0x00036fd0 add r3, r0, r3, lsl 4 | r3 = r0 + (r3 << 4);
0x00036fd4 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00036fd8 cmp r3, 2 |
| if (r3 == 2) {
0x00036fdc ldrbne r6, [r8, 0x43f] | r6 = *((r8 + 0x43f));
| }
| if (r3 != 2) {
0x00036fe0 bne 0x36fe8 | goto label_5;
| }
| }
0x00036fe4 ldrb r6, [r8, 0x3e7] | r6 = *((r8 + 0x3e7));
| label_5:
0x00036fe8 eor r6, r6, 1 | r6 ^= 1;
0x00036fec cmp r6, 0 |
| if (r6 == 0) {
0x00036ff0 beq 0x37018 | goto label_6;
| }
| label_0:
0x00036ff4 mov r6, 1 | r6 = 1;
| label_1:
0x00036ff8 mov r0, r6 | r0 = r6;
0x00036ffc add sp, sp, 0x14 |
0x00037000 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00037004 ldr r3, [r0, 0xa0] | r3 = *((r0 + 0xa0));
0x00037008 add fp, r0, 0x200 |
0x0003700c str r3, [sp] | *(sp) = r3;
0x00037010 mov r3, 0 | r3 = 0;
0x00037014 b 0x36fa4 |
| } while (1);
| label_6:
0x00037018 ldr r5, [r8, 0x6c] | r5 = *((r8 + 0x6c));
0x0003701c cmp r5, 0 |
| if (r5 != 0) {
0x00037020 beq 0x37034 |
0x00037024 ldr r3, [r5] | r3 = *(r5);
0x00037028 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x0003702c addne r5, r5, 0x64 | r5 += 0x64;
| }
| if ((r3 & 0x10) != 0) {
0x00037030 bne 0x3703c | goto label_7;
| }
| }
0x00037034 add r5, r8, 0x4700 | r5 = r8 + 0x4700;
0x00037038 add r5, r5, 0xf0 | r5 += 0xf0;
| label_7:
0x0003703c add r3, r8, 0x4000 | r3 = r8 + 0x4000;
0x00037040 mov r4, r0 | r4 = r0;
0x00037044 mov r7, 0 | r7 = 0;
0x00037048 str r2, [sp, 4] | var_4h = r2;
0x0003704c str r1, [sp, 0xc] | var_ch = r1;
0x00037050 str r3, [sp, 8] | var_8h = r3;
| label_2:
0x00037054 ldr r3, [r8, 0x48c] | r3 = *((r8 + 0x48c));
0x00037058 cmp r3, r7 |
| if (r3 < r7) {
0x0003705c bls 0x36ff4 | goto label_0;
| }
0x00037060 ldr r3, [sp, 8] | r3 = var_8h;
0x00037064 mov r2, 0x48 | r2 = 0x48;
0x00037068 mul r2, r7, r2 | r2 = r7 * r2;
0x0003706c ldr r1, [r3, 0x7ec] | r1 = *((r3 + 0x7ec));
0x00037070 add sl, r1, r2 | sl = r1 + r2;
0x00037074 ldr r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x00037078 cmp r0, 0 |
| if (r0 == 0) {
0x0003707c beq 0x37148 | goto label_8;
| }
0x00037080 ldr r1, [r1, r2] | r1 = *((r1 + r2));
0x00037084 ldr r0, [sp] | r0 = *(sp);
0x00037088 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0003708c cmp r0, 0 |
| if (r0 == 0) {
0x00037090 beq 0x37148 | goto label_8;
| }
0x00037094 ldrb r2, [r4, 0x253] | r2 = *((r4 + 0x253));
0x00037098 ldr r1, [sl, 4] | r1 = *((sl + 4));
0x0003709c cmp r2, 0 |
| if (r2 != 0) {
0x000370a0 bne 0x37130 | goto label_9;
| }
0x000370a4 cmp r1, 0 |
| if (r1 != 0) {
0x000370a8 bne 0x37148 | goto label_8;
| }
| do {
0x000370ac ldrb r1, [r4, 0x254] | r1 = *((r4 + 0x254));
0x000370b0 ldr r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x000370b4 cmp r1, 0 |
| if (r1 != 0) {
0x000370b8 bne 0x37150 | goto label_10;
| }
0x000370bc cmn r2, 1 |
| if (r2 != 1) {
| label_3:
0x000370c0 bne 0x37148 | goto label_8;
| }
0x000370c4 ldr r2, [sl, 0x18] | r2 = *((sl + 0x18));
0x000370c8 cmp r2, sb |
| if (r2 != sb) {
0x000370cc bne 0x37148 | goto label_8;
| }
0x000370d0 ldr r2, [r4, 0x284] | r2 = *((r4 + 0x284));
0x000370d4 ldr r1, [sl, 8] | r1 = *((sl + 8));
0x000370d8 ldr r0, [r2] | r0 = *(r2);
0x000370dc bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x000370e0 cmp r0, 0 |
| if (r0 == 0) {
0x000370e4 beq 0x37148 | goto label_8;
| }
0x000370e8 add r1, sl, 0x20 | r1 = sl + 0x20;
0x000370ec mov r0, fp | r0 = fp;
0x000370f0 bl 0x36a84 | r0 = Curl_ssl_config_matches ();
0x000370f4 cmp r0, 0 |
| if (r0 == 0) {
0x000370f8 beq 0x37148 | goto label_8;
| }
0x000370fc ldr r2, [r5] | r2 = *(r5);
0x00037100 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00037104 add r2, r2, 1 | r2++;
0x00037108 str r2, [r5] | *(r5) = r2;
0x0003710c str r2, [sl, 0x14] | *((sl + 0x14)) = r2;
0x00037110 ldr r2, [sl, 0xc] | r2 = *((sl + 0xc));
0x00037114 str r2, [r3] | *(r3) = r2;
0x00037118 ldr r3, [sp, 4] | r3 = var_4h;
0x0003711c cmp r3, 0 |
| if (r3 == 0) {
0x00037120 ldrne r3, [sl, 0x10] | r3 = *((sl + 0x10));
| }
| if (r3 == 0) {
0x00037124 ldrne r2, [sp, 4] | r2 = var_4h;
| }
| if (r3 == 0) {
0x00037128 strne r3, [r2] | *(r2) = r3;
| }
0x0003712c b 0x36ff8 | goto label_1;
| label_9:
0x00037130 cmp r1, 0 |
| if (r1 == 0) {
0x00037134 beq 0x37148 | goto label_8;
| }
0x00037138 ldr r0, [r4, 0xb4] | r0 = *((r4 + 0xb4));
0x0003713c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00037140 cmp r0, 0 |
0x00037144 bne 0x370ac |
| } while (r0 != 0);
| do {
| label_8:
0x00037148 add r7, r7, 1 | r7++;
0x0003714c b 0x37054 | goto label_2;
| label_10:
0x00037150 cmn r2, 1 |
0x00037154 beq 0x37148 |
| } while (r2 == 1);
0x00037158 ldr r1, [r4, 0x104] | r1 = *((r4 + 0x104));
0x0003715c cmp r1, r2 |
0x00037160 b 0x370c0 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x37734 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ssl_init_certinfo () | void Curl_ssl_init_certinfo (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00037734 push {r4, r5, r6, lr} |
0x00037738 ldr r6, [pc, 0x40] | r6 = *(0x3777c);
0x0003773c mov r5, r1 | r5 = r1;
0x00037740 mov r4, r0 | r4 = r0;
0x00037744 bl 0x376c0 | Curl_ssl_free_certinfo ();
0x00037748 ldr r3, [pc, 0x34] | r3 = $d;
0x0003774c add r6, pc, r6 | r6 = pc + r6;
0x00037750 ldr r3, [r6, r3] |
0x00037754 mov r1, 4 | r1 = 4;
0x00037758 ldr r3, [r3] | r3 = *(0x3777c);
0x0003775c mov r0, r5 | r0 = r5;
0x00037760 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00037764 cmp r0, 0 |
| if (r0 == 0) {
0x00037768 addne r3, r4, 0x4000 | r3 = r4 + 0x4000;
| }
| if (r0 == 0) {
0x0003776c strne r0, [r3, 0xb04] | *((r3 + 0xb04)) = r0;
| }
| if (r0 == 0) {
0x00037770 strne r5, [r3, 0xb00] | *((r3 + 0xb00)) = r5;
| }
| if (r0 == 0) {
0x00037774 movne r0, 0 | r0 = 0;
| }
| if (r0 != 0) {
0x00037778 moveq r0, 0x1b | r0 = 0x1b;
| }
0x0003777c pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x37788 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ssl_push_certinfo_len () | void Curl_ssl_push_certinfo_len (int32_t arg_30h, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00037788 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0003778c ldr sb, [pc, 0xd4] | sb = *(0x37864);
0x00037790 mov r5, r0 | r5 = r0;
0x00037794 mov r0, r2 | r0 = r2;
0x00037798 mov r8, r1 | r8 = r1;
0x0003779c mov fp, r3 |
0x000377a0 str r2, [sp, 4] | var_4h = r2;
0x000377a4 bl 0x5250 | strlen (r0);
0x000377a8 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000377ac add sb, pc, sb | sb = pc + sb;
0x000377b0 add r4, r0, r3 | r4 = r0 + r3;
0x000377b4 ldr r3, [pc, 0xb0] | r3 = $d;
0x000377b8 add sl, r4, 2 | sl = r4 + 2;
0x000377bc ldr r3, [sb, r3] |
0x000377c0 mov r7, r0 | r7 = r0;
0x000377c4 ldr r3, [r3] | r3 = *(0x37864);
0x000377c8 mov r0, sl | r0 = sl;
0x000377cc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000377d0 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x000377d4 moveq r0, 0x1b | r0 = 0x1b;
| }
| if (r6 != r0) {
0x000377d8 beq 0x37860 |
0x000377dc ldr r2, [sp, 4] | r2 = var_4h;
0x000377e0 mov r1, sl | r1 = sl;
0x000377e4 mov r3, r2 | r3 = r2;
0x000377e8 ldr r2, [pc, 0x80] | r2 = *(0x3786c);
0x000377ec add r5, r5, 0x4000 | r5 += 0x4000;
0x000377f0 add r2, pc, r2 | r2 = pc + r2;
0x000377f4 bl 0x579c | fcn_0000579c ();
0x000377f8 add r0, r7, 1 | r0 = r7 + 1;
0x000377fc ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00037800 mov r1, fp | r1 = fp;
0x00037804 add r0, r6, r0 | r0 = r6 + r0;
0x00037808 bl 0x4f5c | memcpy (r0, r1, r2);
0x0003780c add r3, r6, r4 | r3 = r6 + r4;
0x00037810 mov r4, 0 | r4 = 0;
0x00037814 strb r4, [r3, 1] | *((r3 + 1)) = r4;
0x00037818 ldr r3, [r5, 0xb04] | r3 = *((r5 + 0xb04));
0x0003781c mov r1, r6 | r1 = r6;
0x00037820 ldr r0, [r3, r8, lsl 2] | offset_0 = r8 << 2;
| r0 = *((r3 + offset_0));
0x00037824 bl 0x24fa0 | r0 = Curl_slist_append_nodup ();
0x00037828 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0003782c movne r0, r4 | r0 = r4;
| }
| if (r7 == r0) {
0x00037830 bne 0x37858 |
0x00037834 ldr r3, [pc, 0x38] |
0x00037838 mov r0, r6 | r0 = r6;
0x0003783c ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00037840 ldr r3, [r3] | r3 = *(0x37870);
0x00037844 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00037848 ldr r3, [r5, 0xb04] | r3 = *((r5 + 0xb04));
0x0003784c ldr r0, [r3, r8, lsl 2] | r0 = *(0x37870);
0x00037850 bl 0x54fc | fcn_000054fc ();
0x00037854 mov r0, 0x1b | r0 = 0x1b;
| }
0x00037858 ldr r3, [r5, 0xb04] | r3 = *((r5 + 0xb04));
0x0003785c str r7, [r3, r8, lsl 2] | offset_1 = r8 << 2;
| *((r3 + offset_1)) = r7;
| }
0x00037860 add sp, sp, 0xc |
0x00037864 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x37550 */
| #include <stdint.h>
|
; (fcn) sym.Curl_ssl_shutdown () | void Curl_ssl_shutdown (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00037550 ldr r3, [pc, 0x5c] |
0x00037554 push {r4, r5, r6, lr} |
0x00037558 ldr r5, [pc, 0x58] | r5 = $d;
0x0003755c add r3, pc, r3 | r3 = pc + r3;
0x00037560 ldr r3, [r3] |
0x00037564 mov r4, r0 | r4 = r0;
0x00037568 ldr r3, [r3, 0x20] | r3 = *(0x375d0);
0x0003756c mov r6, r1 | r6 = r1;
0x00037570 blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x00037574 add r5, pc, r5 | r5 = pc + r5;
0x00037578 cmp r0, 0 |
| if (r0 == 0) {
0x0003757c bne 0x375ac |
0x00037580 add r3, r4, r6, lsl 4 | r3 = r4 + (r6 << 4);
0x00037584 strb r0, [r3, 0x1bc] | *((r3 + 0x1bc)) = r0;
0x00037588 str r0, [r3, 0x1c0] | *((r3 + 0x1c0)) = r0;
0x0003758c ldr r3, [pc, 0x28] | r3 = *(0x375b8);
0x00037590 add r4, r4, r6, lsl 2 | r4 += (r6 << 2);
0x00037594 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00037598 str r3, [r4, 0x1ac] | *((r4 + 0x1ac)) = r3;
0x0003759c ldr r3, [pc, 0x1c] | r3 = *(0x375bc);
0x000375a0 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000375a4 str r3, [r4, 0x1b4] | *((r4 + 0x1b4)) = r3;
0x000375a8 pop {r4, r5, r6, pc} |
| }
0x000375ac mov r0, 0x50 | r0 = 0x50;
0x000375b0 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x19ec4 */
| #include <stdint.h>
|
; (fcn) sym.Curl_strntoupper () | void Curl_strntoupper (char * arg1, char * arg2) {
| r0 = arg1;
| r1 = arg2;
0x00019ec4 cmp r2, 0 |
| if (r2 != 0) {
0x00019ec8 bxeq lr | return;
| }
0x00019ecc push {r4, lr} |
0x00019ed0 sub r1, r1, 1 | r1--;
0x00019ed4 mov r4, r0 | r4 = r0;
0x00019ed8 add r2, r0, r2 | r2 = r0 + r2;
| do {
0x00019edc ldrb r0, [r1, 1]! | r0 = *((r1 += 1));
0x00019ee0 bl 0x19dac | Curl_raw_toupper ();
0x00019ee4 strb r0, [r4], 1 | *(r4) = r0;
| r4++;
0x00019ee8 ldrb r3, [r1] | r3 = *(r1);
0x00019eec cmp r3, 0 |
0x00019ef0 popeq {r4, pc} |
0x00019ef4 cmp r4, r2 |
0x00019ef8 bne 0x19edc |
| } while (r4 != r2);
0x00019efc pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x157d4 */
| #include <stdint.h>
|
; (fcn) sym.Curl_urldecode () | void Curl_urldecode (int32_t arg_38h, int32_t arg_3ch, char * s) {
| int32_t var_0h;
| int32_t var_4h;
| char * str;
| int32_t var_9h;
| int32_t var_ah;
| int32_t var_14h;
| r1 = s;
0x000157d4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000157d8 ldr r7, [pc, 0x140] | r7 = *(0x1591c);
0x000157dc sub sp, sp, 0x14 |
0x000157e0 str r3, [sp] | *(sp) = r3;
0x000157e4 ldrb r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000157e8 cmp r2, 0 |
0x000157ec add r7, pc, r7 | r7 = pc + r7;
0x000157f0 mov r4, r1 | r4 = r1;
0x000157f4 str r3, [sp, 4] | var_4h = r3;
| if (r2 == 0) {
0x000157f8 addne r5, r2, 1 | r5 = r2 + 1;
| }
| if (r2 == 0) {
0x000157fc bne 0x1580c |
0x00015800 mov r0, r1 | r0 = r1;
0x00015804 bl 0x5250 | r0 = strlen (r0);
0x00015808 add r5, r0, 1 | r5 = r0 + 1;
| }
0x0001580c ldr r3, [pc, 0x110] |
0x00015810 mov r0, r5 | r0 = r5;
0x00015814 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00015818 ldr r3, [r3] | r3 = "k_asked_for_PAUSE_when_not_supported_";
0x0001581c blx r3 | r0 = uint32_t (*r3)(uint32_t, char*) (r0, "k_asked_for_PAUSE_when_not_supported_");
0x00015820 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x00015824 movne r6, r8 | r6 = r8;
| }
| if (r8 == r0) {
0x00015828 movne sl, 0 | sl = 0;
| }
| if (r8 == r0) {
0x0001582c addne fp, sp, 0xc |
| }
| if (r8 != r0) {
0x00015830 bne 0x158f4 | goto label_2;
| }
0x00015834 mov r0, 0x1b | r0 = 0x1b;
0x00015838 b 0x158d8 | goto label_1;
| label_0:
0x0001583c ldrb r0, [r4] | r0 = *(r4);
0x00015840 cmp sb, 2 |
0x00015844 sub r1, r0, 0x25 | r1 = r0 - 0x25;
0x00015848 clz r1, r1 | r1 &= r1;
0x0001584c lsr r1, r1, 5 | r1 >>= 5;
| if (sb > 2) {
0x00015850 movls r1, 0 | r1 = 0;
| }
0x00015854 cmp r1, 0 |
| if (r1 == 0) {
0x00015858 beq 0x158a8 | goto label_3;
| }
0x0001585c ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00015860 bl 0x2f910 | r0 = Curl_isxdigit ();
0x00015864 cmp r0, 0 |
| if (r0 == 0) {
0x00015868 beq 0x158e0 | goto label_4;
| }
0x0001586c ldrb r0, [r4, 2] | r0 = *((r4 + 2));
0x00015870 bl 0x2f910 | r0 = Curl_isxdigit ();
0x00015874 cmp r0, 0 |
| if (r0 == 0) {
0x00015878 beq 0x158e0 | goto label_4;
| }
0x0001587c ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x00015880 mov r1, fp | r1 = fp;
0x00015884 strb r2, [sp, 8] | str = r2;
0x00015888 ldrb r2, [r4, 2]! | r2 = *((r4 += 2));
0x0001588c add r0, sp, 8 | r0 += str;
0x00015890 strb r2, [sp, 9] | var_9h = r2;
0x00015894 mov r2, 0x10 | r2 = 0x10;
0x00015898 strb sl, [sp, 0xa] | var_ah = sl;
0x0001589c bl 0x510c | r0 = strtoul (r0, r1, r2);
0x000158a0 bl 0x2531c | curlx_ultouc ();
0x000158a4 sub sb, r5, 3 | sb = r5 - 3;
| do {
| label_3:
0x000158a8 ldr r1, [sp, 4] | r1 = var_4h;
0x000158ac cmp r0, 0x1f |
| if (r0 <= 0x1f) {
0x000158b0 movhi r1, 0 | r1 = 0;
| }
| if (r0 > 0x1f) {
0x000158b4 andls r1, r1, 1 | r1 &= 1;
| }
0x000158b8 cmp r1, 0 |
| if (r1 == 0) {
0x000158bc beq 0x158e8 | goto label_5;
| }
0x000158c0 ldr r2, [pc, 0x60] |
0x000158c4 mov r0, r8 | r0 = r8;
0x000158c8 ldr r2, [r7, r2] | r2 = *((r7 + r2));
0x000158cc ldr r2, [r2] | r2 = *(0x15924);
0x000158d0 blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
0x000158d4 mov r0, 3 | r0 = 3;
| label_1:
0x000158d8 add sp, sp, 0x14 |
0x000158dc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x000158e0 mov r0, 0x25 | r0 = 0x25;
0x000158e4 b 0x158a8 |
| } while (1);
| label_5:
0x000158e8 add r4, r4, 1 | r4++;
0x000158ec mov r5, sb | r5 = sb;
0x000158f0 strb r0, [r6], 1 | *(r6) = r0;
| r6++;
| label_2:
0x000158f4 subs sb, r5, 1 | sb = r5 - 1;
0x000158f8 sub r1, r6, r8 | r1 = r6 - r8;
| if (sb != r5) {
0x000158fc bne 0x1583c | goto label_0;
| }
0x00015900 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00015904 strb sb, [r8, r1] | *((r8 + r1)) = sb;
0x00015908 cmp r3, 0 |
| if (r3 == 0) {
0x0001590c strne r1, [r3] | *(r3) = r1;
| }
0x00015910 ldr r3, [sp] | r3 = *(sp);
0x00015914 mov r0, 0 | r0 = 0;
0x00015918 str r8, [r3] | *(r3) = r8;
0x0001591c b 0x158d8 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2ce34 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.Curl_vsetopt () | void Curl_vsetopt (int32_t arg1, uint32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_10h;
| r0 = arg1;
| r1 = arg2;
0x0002ce34 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} |
0x0002ce38 ldr r3, [pc, 0xf90] | r3 = *(0x2ddcc);
0x0002ce3c ldr r7, [pc, 0xf90] | r7 = $d;
0x0002ce40 cmp r1, r3 |
0x0002ce44 add r7, pc, r7 | r7 = pc + r7;
0x0002ce48 mov r4, r0 | r4 = r0;
0x0002ce4c mov r5, r2 | r5 = r2;
| if (r1 == r3) {
0x0002ce50 beq 0x2e3f0 | goto label_15;
| }
| if (r1 > r3) {
0x0002ce54 bhi 0x2d624 | goto label_16;
| }
0x0002ce58 cmp r1, 0x8c |
| if (r1 == 0x8c) {
0x0002ce5c beq 0x2ecb0 | goto label_17;
| }
| if (r1 > 0x8c) {
0x0002ce60 bhi 0x2d220 | goto label_18;
| }
0x0002ce64 cmp r1, 0x45 |
| if (r1 == 0x45) {
0x0002ce68 beq 0x2e158 | goto label_19;
| }
| if (r1 > 0x45) {
0x0002ce6c bhi 0x2d028 | goto label_20;
| }
0x0002ce70 cmp r1, 0x2d |
| if (r1 == 0x2d) {
0x0002ce74 beq 0x2e118 | goto label_21;
| }
| if (r1 > 0x2d) {
0x0002ce78 bhi 0x2cf38 | goto label_22;
| }
0x0002ce7c cmp r1, 0x1b |
| if (r1 == 0x1b) {
0x0002ce80 beq 0x2ec6c | goto label_23;
| }
| if (r1 > 0x1b) {
0x0002ce84 bhi 0x2cedc | goto label_24;
| }
0x0002ce88 cmp r1, 0xe |
| if (r1 == 0xe) {
0x0002ce8c beq 0x2e984 | goto label_25;
| }
| if (r1 > 0xe) {
0x0002ce90 bhi 0x2ceac | goto label_26;
| }
0x0002ce94 cmp r1, 3 |
| if (r1 == 3) {
0x0002ce98 beq 0x2e9e4 | goto label_27;
| }
0x0002ce9c cmp r1, 0xd |
| if (r1 == 0xd) {
0x0002cea0 beq 0x2e9fc | goto label_28;
| }
| do {
| label_0:
0x0002cea4 mov r5, 0x30 | r5 = 0x30;
0x0002cea8 b 0x2d7e0 | goto label_2;
| label_26:
0x0002ceac cmp r1, 0x14 |
| if (r1 == 0x14) {
0x0002ceb0 beq 0x2e9cc | goto label_29;
| }
0x0002ceb4 cmp r1, 0x15 |
| if (r1 == 0x15) {
0x0002ceb8 beq 0x2eb28 | goto label_30;
| }
0x0002cebc cmp r1, 0x13 |
0x0002cec0 bne 0x2cea4 |
| } while (r1 != 0x13);
0x0002cec4 ldr r3, [r2] | r3 = *(r2);
0x0002cec8 cmp r3, 0 |
| if (r3 < 0) {
0x0002cecc strge r3, [r0, 0x208] | *((r0 + 0x208)) = r3;
| }
| if (r3 < 0) {
0x0002ced0 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002ced4 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002ced8 b 0x2d7e0 | goto label_2;
| label_24:
0x0002cedc cmp r1, 0x29 |
| if (r1 == 0x29) {
0x0002cee0 beq 0x2e0c0 | goto label_31;
| }
| if (r1 > 0x29) {
0x0002cee4 bhi 0x2cf14 | goto label_32;
| }
0x0002cee8 cmp r1, 0x21 |
| if (r1 == 0x21) {
0x0002ceec beq 0x2e260 | goto label_33;
| }
0x0002cef0 cmp r1, 0x22 |
| if (r1 != 0x22) {
0x0002cef4 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != 0x22) {
0x0002cef8 moveq r5, 0 | r5 = 0;
| }
| if (r1 != 0x22) {
0x0002cefc streq r3, [r0, 0x3cc] | *((r0 + 0x3cc)) = r3;
| }
| if (r1 == 0x22) {
0x0002cf00 beq 0x2d7e0 | goto label_2;
| }
0x0002cf04 cmp r1, 0x20 |
| if (r1 != 0x20) {
0x0002cf08 bne 0x2cea4 | goto label_0;
| }
0x0002cf0c add r4, r0, 0x3dc | r4 = r0 + 0x3dc;
0x0002cf10 b 0x2e298 | goto label_34;
| label_32:
0x0002cf14 cmp r1, 0x2b |
0x0002cf18 ldr r5, [r2] | r5 = *(r2);
| if (r1 == 0x2b) {
0x0002cf1c beq 0x2e0d8 | goto label_35;
| }
| if (r1 > 0x2b) {
0x0002cf20 bhi 0x2e104 | goto label_36;
| }
0x0002cf24 adds r5, r5, 0 | r5 += 0;
| if (r5 == r5) {
0x0002cf28 movne r5, 1 | r5 = 1;
| }
0x0002cf2c strb r5, [r0, 0x4cd] | *((r0 + 0x4cd)) = r5;
0x0002cf30 mov r5, 0 | r5 = 0;
0x0002cf34 b 0x2d7e0 | goto label_2;
| label_22:
0x0002cf38 cmp r1, 0x35 |
| if (r1 == 0x35) {
0x0002cf3c beq 0x2e248 | goto label_37;
| }
| if (r1 > 0x35) {
0x0002cf40 bhi 0x2cfac | goto label_38;
| }
0x0002cf44 cmp r1, 0x30 |
| if (r1 == 0x30) {
0x0002cf48 beq 0x2e1f8 | goto label_39;
| }
| if (r1 > 0x30) {
0x0002cf4c bhi 0x2cf80 | goto label_40;
| }
0x0002cf50 cmp r1, 0x2e |
| if (r1 == 0x2e) {
0x0002cf54 beq 0x2cfcc | goto label_41;
| }
0x0002cf58 cmp r1, 0x2f |
| if (r1 != 0x2f) {
0x0002cf5c bne 0x2cea4 | goto label_0;
| }
0x0002cf60 ldr r3, [r2] | r3 = *(r2);
0x0002cf64 cmp r3, 0 |
| if (r3 == 0) {
0x0002cf68 beq 0x2e148 | goto label_42;
| }
0x0002cf6c mov r3, 2 | r3 = 2;
0x0002cf70 mov r5, 0 | r5 = 0;
0x0002cf74 str r3, [r0, 0x3d0] | *((r0 + 0x3d0)) = r3;
0x0002cf78 strb r5, [r0, 0x4d0] | *((r0 + 0x4d0)) = r5;
0x0002cf7c b 0x2d7e0 | goto label_2;
| label_40:
0x0002cf80 cmp r1, 0x33 |
| if (r1 == 0x33) {
0x0002cf84 beq 0x2e224 | goto label_43;
| }
| if (r1 > 0x33) {
0x0002cf88 bhi 0x2e300 | goto label_44;
| }
0x0002cf8c cmp r1, 0x32 |
| if (r1 != 0x32) {
0x0002cf90 bne 0x2cea4 | goto label_0;
| }
0x0002cf94 ldr r3, [r2] | r3 = *(r2);
0x0002cf98 mov r5, 0 | r5 = 0;
0x0002cf9c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002cfa0 movne r3, 1 | r3 = 1;
| }
0x0002cfa4 strb r3, [r0, 0x4c4] | *((r0 + 0x4c4)) = r3;
0x0002cfa8 b 0x2d7e0 | goto label_2;
| label_38:
0x0002cfac cmp r1, 0x3c |
| if (r1 == 0x3c) {
0x0002cfb0 beq 0x2e418 | goto label_45;
| }
| if (r1 > 0x3c) {
0x0002cfb4 bhi 0x2cff8 | goto label_46;
| }
0x0002cfb8 cmp r1, 0x3a |
| if (r1 == 0x3a) {
0x0002cfbc beq 0x2e2c8 | goto label_47;
| }
| if (r1 > 0x3a) {
0x0002cfc0 bhi 0x2e888 | goto label_48;
| }
0x0002cfc4 cmp r1, 0x36 |
| if (r1 != 0x36) {
0x0002cfc8 bne 0x2cea4 | goto label_0;
| }
| label_41:
0x0002cfcc ldr r3, [r5] | r3 = *(r5);
0x0002cfd0 cmp r3, 0 |
| if (r3 == 0) {
0x0002cfd4 movne r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x0002cfd8 moveq r3, 0 | r3 = 0;
| }
0x0002cfdc strb r3, [r4, 0x4d1] | *((r4 + 0x4d1)) = r3;
| if (r3 == 0) {
0x0002cfe0 beq 0x2e148 | goto label_42;
| }
0x0002cfe4 mov r3, 5 | r3 = 5;
0x0002cfe8 mov r5, 0 | r5 = 0;
0x0002cfec str r3, [r4, 0x3d0] | *((r4 + 0x3d0)) = r3;
0x0002cff0 strb r5, [r4, 0x4d0] | *((r4 + 0x4d0)) = r5;
0x0002cff4 b 0x2d7e0 | goto label_2;
| label_46:
0x0002cff8 cmp r1, 0x40 |
| if (r1 == 0x40) {
0x0002cffc beq 0x2ecd0 | goto label_49;
| }
0x0002d000 cmp r1, 0x44 |
| if (r1 == 0x44) {
0x0002d004 beq 0x2e318 | goto label_50;
| }
0x0002d008 cmp r1, 0x3d |
| if (r1 != 0x3d) {
0x0002d00c bne 0x2cea4 | goto label_0;
| }
0x0002d010 ldr r3, [r2] | r3 = *(r2);
0x0002d014 mov r5, 0 | r5 = 0;
0x0002d018 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d01c movne r3, 1 | r3 = 1;
| }
0x0002d020 strb r3, [r0, 0x4c2] | *((r0 + 0x4c2)) = r3;
0x0002d024 b 0x2d7e0 | goto label_2;
| label_20:
0x0002d028 cmp r1, 0x65 |
| if (r1 == 0x65) {
0x0002d02c beq 0x2e8b8 | goto label_51;
| }
| if (r1 > 0x65) {
0x0002d030 bhi 0x2d118 | goto label_52;
| }
0x0002d034 cmp r1, 0x54 |
| if (r1 == 0x54) {
0x0002d038 beq 0x2e80c | goto label_53;
| }
| if (r1 > 0x54) {
0x0002d03c bhi 0x2d0b0 | goto label_54;
| }
0x0002d040 cmp r1, 0x4b |
| if (r1 == 0x4b) {
0x0002d044 beq 0x2e0a8 | goto label_55;
| }
| if (r1 > 0x4b) {
0x0002d048 bhi 0x2d074 | goto label_56;
| }
0x0002d04c cmp r1, 0x47 |
| if (r1 == 0x47) {
0x0002d050 beq 0x2e090 | goto label_57;
| }
0x0002d054 cmp r1, 0x4a |
| if (r1 != 0x4a) {
0x0002d058 bne 0x2cea4 | goto label_0;
| }
0x0002d05c ldr r3, [r2] | r3 = *(r2);
0x0002d060 mov r5, 0 | r5 = 0;
0x0002d064 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d068 movne r3, 1 | r3 = 1;
| }
0x0002d06c strb r3, [r0, 0x4db] | *((r0 + 0x4db)) = r3;
0x0002d070 b 0x2d7e0 | goto label_2;
| label_56:
0x0002d074 cmp r1, 0x50 |
| if (r1 == 0x50) {
0x0002d078 beq 0x2e7e8 | goto label_58;
| }
0x0002d07c cmp r1, 0x51 |
| if (r1 == 0x51) {
0x0002d080 beq 0x2ecf8 | goto label_59;
| }
0x0002d084 cmp r1, 0x4e |
| if (r1 != 0x4e) {
0x0002d088 bne 0x2cea4 | goto label_0;
| }
0x0002d08c ldr r1, [r2] | r1 = *(r2);
0x0002d090 ldr r2, [pc, 0xe00] | r2 = *(0x2de94);
0x0002d094 cmp r1, r2 |
| if (r1 <= r2) {
0x0002d098 movhi r5, 0x2b | r5 = 0x2b;
| }
| if (r1 > r2) {
0x0002d09c movls r2, 0x3e8 | r2 = 0x3e8;
| }
| if (r1 > r2) {
0x0002d0a0 mulls r3, r2, r1 | r3 = r2 * r1;
| }
| if (r1 > r2) {
0x0002d0a4 movls r5, 0 | r5 = 0;
| }
| if (r1 > r2) {
0x0002d0a8 strls r3, [r0, 0x1e4] | *((r0 + 0x1e4)) = r3;
| }
0x0002d0ac b 0x2d7e0 | goto label_2;
| label_54:
0x0002d0b0 cmp r1, 0x5c |
| if (r1 == 0x5c) {
0x0002d0b4 beq 0x2e020 | goto label_60;
| }
| if (r1 > 0x5c) {
0x0002d0b8 bhi 0x2d0e8 | goto label_61;
| }
0x0002d0bc cmp r1, 0x5a |
| if (r1 == 0x5a) {
0x0002d0c0 beq 0x2ec60 | goto label_62;
| }
| if (r1 > 0x5a) {
0x0002d0c4 bhi 0x2e038 | goto label_63;
| }
0x0002d0c8 cmp r1, 0x55 |
| if (r1 != 0x55) {
0x0002d0cc bne 0x2cea4 | goto label_0;
| }
0x0002d0d0 ldr r3, [r2] | r3 = *(r2);
0x0002d0d4 mov r5, 0 | r5 = 0;
0x0002d0d8 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d0dc movne r3, 1 | r3 = 1;
| }
0x0002d0e0 strb r3, [r0, 0x4dc] | *((r0 + 0x4dc)) = r3;
0x0002d0e4 b 0x2d7e0 | goto label_2;
| label_61:
0x0002d0e8 cmp r1, 0x62 |
| if (r1 == 0x62) {
0x0002d0ec beq 0x2eee4 | goto label_64;
| }
0x0002d0f0 cmp r1, 0x63 |
| if (r1 == 0x63) {
0x0002d0f4 beq 0x2ef48 | goto label_65;
| }
0x0002d0f8 cmp r1, 0x60 |
| if (r1 != 0x60) {
0x0002d0fc bne 0x2cea4 | goto label_0;
| }
0x0002d100 ldr r3, [r2] | r3 = *(r2);
0x0002d104 mov r5, 0 | r5 = 0;
0x0002d108 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d10c movne r3, 1 | r3 = 1;
| }
0x0002d110 strb r3, [r0, 0x3a1] | *((r0 + 0x3a1)) = r3;
0x0002d114 b 0x2d7e0 | goto label_2;
| label_52:
0x0002d118 cmp r1, 0x72 |
| if (r1 == 0x72) {
0x0002d11c beq 0x2f07c | goto label_66;
| }
| if (r1 > 0x72) {
0x0002d120 bhi 0x2d1c0 | goto label_67;
| }
0x0002d124 cmp r1, 0x6e |
| if (r1 == 0x6e) {
0x0002d128 beq 0x2e170 | goto label_68;
| }
| if (r1 > 0x6e) {
0x0002d12c bhi 0x2d160 | goto label_69;
| }
0x0002d130 cmp r1, 0x6a |
| if (r1 == 0x6a) {
0x0002d134 beq 0x2e944 | goto label_70;
| }
0x0002d138 cmp r1, 0x6b |
| if (r1 == 0x6b) {
0x0002d13c beq 0x2e830 | goto label_71;
| }
0x0002d140 cmp r1, 0x69 |
| if (r1 != 0x69) {
0x0002d144 bne 0x2cea4 | goto label_0;
| }
0x0002d148 ldr r3, [r2] | r3 = *(r2);
0x0002d14c mov r5, 0 | r5 = 0;
0x0002d150 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d154 movne r3, 1 | r3 = 1;
| }
0x0002d158 strb r3, [r0, 0x4cc] | *((r0 + 0x4cc)) = r3;
0x0002d15c b 0x2d7e0 | goto label_2;
| label_69:
0x0002d160 cmp r1, 0x70 |
| if (r1 == 0x70) {
0x0002d164 beq 0x2e1a4 | goto label_72;
| }
| if (r1 > 0x70) {
0x0002d168 bhi 0x2f0f4 | goto label_73;
| }
0x0002d16c ldr r5, [r2] | r5 = *(r2);
0x0002d170 cmp r5, 0 |
| if (r5 != 0) {
0x0002d174 streq r5, [r0, 0x158] | *((r0 + 0x158)) = r5;
| }
| if (r5 == 0) {
0x0002d178 beq 0x2d7e0 | goto label_2;
| }
0x0002d17c tst r5, 0x10 |
0x0002d180 lsr r2, r5, 4 | r2 = r5 >> 4;
0x0002d184 bicne r5, r5, 0x10 | __asm ("bicne r5, r5, 0x10");
0x0002d188 add r3, r0, 0x4000 | r3 = r0 + 0x4000;
0x0002d18c and r2, r2, 1 | r2 &= 1;
| if ((r5 & 0x10) == 0) {
0x0002d190 orrne r5, r5, 2 | r5 |= 2;
| }
0x0002d194 strb r2, [r3, 0x89e] | *((r3 + 0x89e)) = r2;
0x0002d198 bic r5, r5, 0x24 | r5 = BIT_MASK (r5, 0x24);
0x0002d19c mov r3, 0 | r3 = 0;
| do {
0x0002d1a0 add r2, r3, 1 | r2 = r3 + 1;
0x0002d1a4 lsr r3, r5, r3 | r3 = r5 >> r3;
0x0002d1a8 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0002d1ac bne 0x2f438 | goto label_74;
| }
0x0002d1b0 cmp r2, 0x1f |
0x0002d1b4 mov r3, r2 | r3 = r2;
0x0002d1b8 bne 0x2d1a0 |
| } while (r2 != 0x1f);
0x0002d1bc b 0x2e880 | goto label_75;
| label_67:
0x0002d1c0 cmp r1, 0x88 |
| if (r1 == 0x88) {
0x0002d1c4 beq 0x2f14c | goto label_76;
| }
| if (r1 > 0x88) {
0x0002d1c8 bhi 0x2d1fc | goto label_77;
| }
0x0002d1cc cmp r1, 0x79 |
| if (r1 == 0x79) {
0x0002d1d0 beq 0x2f134 | goto label_78;
| }
0x0002d1d4 cmp r1, 0x81 |
| if (r1 == 0x81) {
0x0002d1d8 beq 0x2f0dc | goto label_79;
| }
0x0002d1dc cmp r1, 0x77 |
| if (r1 != 0x77) {
0x0002d1e0 bne 0x2cea4 | goto label_0;
| }
0x0002d1e4 ldr r3, [r2] | r3 = *(r2);
0x0002d1e8 cmp r3, 3 |
| if (r3 > 3) {
0x0002d1ec strls r3, [r0, 0x4e0] | *((r0 + 0x4e0)) = r3;
| }
| if (r3 > 3) {
0x0002d1f0 movls r5, 0 | r5 = 0;
| }
| if (r3 <= 3) {
0x0002d1f4 movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002d1f8 b 0x2d7e0 | goto label_2;
| label_77:
0x0002d1fc cmp r1, 0x8a |
0x0002d200 ldr r0, [r2] | r0 = *(r2);
| if (r1 == 0x8a) {
0x0002d204 beq 0x2e210 | goto label_80;
| }
| if (r1 > 0x8a) {
0x0002d208 bhi 0x2ec90 | goto label_81;
| }
0x0002d20c adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x0002d210 movne r0, 1 | r0 = 1;
| }
0x0002d214 strb r0, [r4, 0x4f0] | *((r4 + 0x4f0)) = r0;
0x0002d218 mov r5, 0 | r5 = 0;
0x0002d21c b 0x2d7e0 | goto label_2;
| label_18:
0x0002d220 cmp r1, 0xe1 |
| if (r1 == 0xe1) {
0x0002d224 beq 0x2f340 | goto label_82;
| }
| if (r1 > 0xe1) {
0x0002d228 bhi 0x2d400 | goto label_83;
| }
0x0002d22c cmp r1, 0xb5 |
| if (r1 != 0xb5) {
0x0002d230 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != 0xb5) {
0x0002d234 moveq r5, 0 | r5 = 0;
| }
| if (r1 != 0xb5) {
0x0002d238 streq r3, [r0, 0x600] | *((r0 + 0x600)) = r3;
| }
| if (r1 == 0xb5) {
0x0002d23c beq 0x2d7e0 | goto label_2;
| }
| if (r1 > 0xb5) {
0x0002d240 bhi 0x2d320 | goto label_84;
| }
0x0002d244 cmp r1, 0x9e |
| if (r1 == 0x9e) {
0x0002d248 beq 0x2f1dc | goto label_85;
| }
| if (r1 > 0x9e) {
0x0002d24c bhi 0x2d2ac | goto label_86;
| }
0x0002d250 cmp r1, 0x9a |
| if (r1 == 0x9a) {
0x0002d254 beq 0x2e95c | goto label_87;
| }
| if (r1 > 0x9a) {
0x0002d258 bhi 0x2d288 | goto label_88;
| }
0x0002d25c cmp r1, 0x8d |
| if (r1 == 0x8d) {
0x0002d260 beq 0x2f164 | goto label_89;
| }
0x0002d264 cmp r1, 0x96 |
| if (r1 != 0x96) {
0x0002d268 bne 0x2cea4 | goto label_0;
| }
0x0002d26c ldr r3, [r5] | r3 = *(r5);
0x0002d270 mov r5, 0 | r5 = 0;
0x0002d274 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d278 movne r3, 1 | r3 = 1;
| }
0x0002d27c strb r3, [r0, 0x3e7] | *((r0 + 0x3e7)) = r3;
0x0002d280 strb r3, [r0, 0x43f] | *((r0 + 0x43f)) = r3;
0x0002d284 b 0x2d7e0 | goto label_2;
| label_88:
0x0002d288 cmp r1, 0x9c |
0x0002d28c ldr r3, [r5] | r3 = *(r5);
| if (r1 == 0x9c) {
0x0002d290 beq 0x2ea20 | goto label_90;
| }
| if (r1 > 0x9c) {
0x0002d294 bhi 0x2f1c8 | goto label_91;
| }
0x0002d298 cmp r3, 0 |
| if (r3 < 0) {
0x0002d29c strge r3, [r0, 0x1e0] | *((r0 + 0x1e0)) = r3;
| }
| if (r3 < 0) {
0x0002d2a0 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002d2a4 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002d2a8 b 0x2d7e0 | goto label_2;
| label_86:
0x0002d2ac cmp r1, 0xa6 |
| if (r1 == 0xa6) {
0x0002d2b0 beq 0x2e8d0 | goto label_92;
| }
| if (r1 > 0xa6) {
0x0002d2b4 bhi 0x2d2e8 | goto label_93;
| }
0x0002d2b8 cmp r1, 0xa0 |
| if (r1 == 0xa0) {
0x0002d2bc beq 0x2f20c | goto label_94;
| }
| if (r1 <= 0xa0) {
0x0002d2c0 blo 0x2f1f4 | goto label_95;
| }
0x0002d2c4 cmp r1, 0xa1 |
| if (r1 != 0xa1) {
0x0002d2c8 bne 0x2cea4 | goto label_0;
| }
0x0002d2cc ldr r3, [r5] | r3 = *(r5);
0x0002d2d0 cmp r3, 0 |
| if (r3 < 0) {
0x0002d2d4 andge r3, r3, 7 | r3 &= 7;
| }
| if (r3 < 0) {
0x0002d2d8 strge r3, [r0, 0x168] | *((r0 + 0x168)) = r3;
| }
| if (r3 < 0) {
0x0002d2dc movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002d2e0 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002d2e4 b 0x2d7e0 | goto label_2;
| label_93:
0x0002d2e8 cmp r1, 0xac |
| if (r1 == 0xac) {
0x0002d2ec beq 0x2ee0c | goto label_96;
| }
0x0002d2f0 cmp r1, 0xb2 |
| if (r1 == 0xb2) {
0x0002d2f4 beq 0x2e1e0 | goto label_97;
| }
0x0002d2f8 cmp r1, 0xab |
| if (r1 != 0xab) {
0x0002d2fc bne 0x2cea4 | goto label_0;
| }
0x0002d300 ldr r0, [r5] | r0 = *(r5);
0x0002d304 cmp r0, 0xf |
| if (r0 <= 0xf) {
0x0002d308 movhi r5, 0x2b | r5 = 0x2b;
| }
| if (r0 > 0xf) {
0x0002d30c bhi 0x2d7e0 | goto label_2;
| }
0x0002d310 bl 0x2534c | curlx_sltoui ();
0x0002d314 mov r5, 0 | r5 = 0;
0x0002d318 str r0, [r4, 0x5fc] | *((r4 + 0x5fc)) = r0;
0x0002d31c b 0x2d7e0 | goto label_2;
| label_84:
0x0002d320 cmp r1, 0xcf |
| if (r1 == 0xcf) {
0x0002d324 beq 0x2e2e8 | goto label_98;
| }
| if (r1 > 0xcf) {
0x0002d328 bhi 0x2d39c | goto label_99;
| }
0x0002d32c cmp r1, 0xbd |
| if (r1 == 0xbd) {
0x0002d330 beq 0x2f23c | goto label_100;
| }
| if (r1 > 0xbd) {
0x0002d334 bhi 0x2d36c | goto label_101;
| }
0x0002d338 cmp r1, 0xb6 |
| if (r1 != 0xb6) {
0x0002d33c ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != 0xb6) {
0x0002d340 moveq r5, 0 | r5 = 0;
| }
| if (r1 != 0xb6) {
0x0002d344 streq r3, [r0, 0x604] | *((r0 + 0x604)) = r3;
| }
| if (r1 == 0xb6) {
0x0002d348 beq 0x2d7e0 | goto label_2;
| }
0x0002d34c cmp r1, 0xbc |
| if (r1 != 0xbc) {
0x0002d350 bne 0x2cea4 | goto label_0;
| }
0x0002d354 ldr r3, [r5] | r3 = *(r5);
0x0002d358 mov r5, 0 | r5 = 0;
0x0002d35c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d360 movne r3, 1 | r3 = 1;
| }
0x0002d364 strb r3, [r0, 0x4de] | *((r0 + 0x4de)) = r3;
0x0002d368 b 0x2d7e0 | goto label_2;
| label_101:
0x0002d36c cmp r1, 0xc1 |
| if (r1 <= 0xc1) {
0x0002d370 blo 0x2cea4 | goto label_0;
| }
0x0002d374 cmp r1, 0xc2 |
| if (r1 < 0xc2) {
0x0002d378 bls 0x2f288 | goto label_102;
| }
0x0002d37c cmp r1, 0xc5 |
| if (r1 != 0xc5) {
0x0002d380 bne 0x2cea4 | goto label_0;
| }
0x0002d384 ldr r3, [r5] | r3 = *(r5);
0x0002d388 mov r5, 0 | r5 = 0;
0x0002d38c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d390 movne r3, 1 | r3 = 1;
| }
0x0002d394 strb r3, [r0, 0x618] | *((r0 + 0x618)) = r3;
0x0002d398 b 0x2d7e0 | goto label_2;
| label_99:
0x0002d39c cmp r1, 0xd6 |
| if (r1 == 0xd6) {
0x0002d3a0 beq 0x2f2f8 | goto label_103;
| }
| if (r1 > 0xd6) {
0x0002d3a4 bhi 0x2d3d4 | goto label_104;
| }
0x0002d3a8 cmp r1, 0xd4 |
| if (r1 == 0xd4) {
0x0002d3ac beq 0x2ea34 | goto label_105;
| }
| if (r1 > 0xd4) {
0x0002d3b0 bhi 0x2f2e0 | goto label_106;
| }
0x0002d3b4 cmp r1, 0xd2 |
| if (r1 != 0xd2) {
0x0002d3b8 bne 0x2cea4 | goto label_0;
| }
0x0002d3bc ldr r3, [r5] | r3 = *(r5);
0x0002d3c0 cmp r3, 0 |
| if (r3 < 0) {
0x0002d3c4 strge r3, [r0, 0x62c] | *((r0 + 0x62c)) = r3;
| }
| if (r3 < 0) {
0x0002d3c8 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002d3cc movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002d3d0 b 0x2d7e0 | goto label_2;
| label_104:
0x0002d3d4 cmp r1, 0xd8 |
| if (r1 == 0xd8) {
0x0002d3d8 beq 0x2f09c | goto label_107;
| }
| if (r1 <= 0xd8) {
0x0002d3dc blo 0x2f310 | goto label_108;
| }
0x0002d3e0 cmp r1, 0xda |
| if (r1 != 0xda) {
0x0002d3e4 bne 0x2cea4 | goto label_0;
| }
0x0002d3e8 ldr r3, [r5] | r3 = *(r5);
0x0002d3ec mov r5, 0 | r5 = 0;
0x0002d3f0 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d3f4 movne r3, 1 | r3 = 1;
| }
0x0002d3f8 strb r3, [r0, 0x60c] | *((r0 + 0x60c)) = r3;
0x0002d3fc b 0x2d7e0 | goto label_2;
| label_83:
0x0002d400 ldr r3, [pc, 0x9d0] | r3 = *(0x2ddd4);
0x0002d404 cmp r1, r3 |
| if (r1 == r3) {
0x0002d408 beq 0x2f0bc | goto label_109;
| }
| if (r1 > r3) {
0x0002d40c bhi 0x2d4e8 | goto label_110;
| }
0x0002d410 cmp r1, 0xed |
| if (r1 == 0xed) {
0x0002d414 beq 0x2f3a4 | goto label_111;
| }
| if (r1 > 0xed) {
0x0002d418 bhi 0x2d47c | goto label_112;
| }
0x0002d41c cmp r1, 0xe5 |
| if (r1 == 0xe5) {
0x0002d420 beq 0x2e59c | goto label_113;
| }
| if (r1 > 0xe5) {
0x0002d424 bhi 0x2d450 | goto label_114;
| }
0x0002d428 cmp r1, 0xe2 |
| if (r1 == 0xe2) {
0x0002d42c beq 0x2f358 | goto label_115;
| }
0x0002d430 cmp r1, 0xe3 |
| if (r1 != 0xe3) {
0x0002d434 bne 0x2cea4 | goto label_0;
| }
0x0002d438 ldr r3, [r2] | r3 = *(r2);
0x0002d43c cmp r3, 0 |
| if (r3 < 0) {
0x0002d440 strge r3, [r0, 0x648] | *((r0 + 0x648)) = r3;
| }
| if (r3 < 0) {
0x0002d444 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002d448 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002d44c b 0x2d7e0 | goto label_2;
| label_114:
0x0002d450 cmp r1, 0xe9 |
| if (r1 == 0xe9) {
0x0002d454 beq 0x2ede8 | goto label_116;
| }
0x0002d458 cmp r1, 0xea |
| if (r1 == 0xea) {
0x0002d45c beq 0x2f38c | goto label_117;
| }
0x0002d460 cmp r1, 0xe8 |
| if (r1 != 0xe8) {
0x0002d464 bne 0x2cea4 | goto label_0;
| }
0x0002d468 bl 0x37d38 | r0 = Curl_ssl_cert_status_request ();
0x0002d46c cmp r0, 0 |
| if (r0 != 0) {
0x0002d470 bne 0x2ed70 | goto label_118;
| }
| label_14:
0x0002d474 mov r5, 4 | r5 = 4;
0x0002d478 b 0x2d7e0 | goto label_2;
| label_112:
0x0002d47c cmp r1, 0xf5 |
| if (r1 == 0xf5) {
0x0002d480 beq 0x2e130 | goto label_119;
| }
| if (r1 > 0xf5) {
0x0002d484 bhi 0x2d4a8 | goto label_120;
| }
0x0002d488 cmp r1, 0xf2 |
| if (r1 == 0xf2) {
0x0002d48c beq 0x2e1c8 | goto label_121;
| }
0x0002d490 cmp r1, 0xf4 |
| if (r1 == 0xf4) {
0x0002d494 beq 0x2f328 | goto label_122;
| }
0x0002d498 cmp r1, 0xef |
| if (r1 != 0xef) {
0x0002d49c bne 0x2cea4 | goto label_0;
| }
| label_3:
0x0002d4a0 mov r5, 4 | r5 = 4;
0x0002d4a4 b 0x2d7e0 | goto label_2;
| label_120:
0x0002d4a8 cmp r1, 0xf9 |
| if (r1 == 0xf9) {
0x0002d4ac beq 0x2ed40 | goto label_123;
| }
0x0002d4b0 cmp r1, 0xfa |
| if (r1 == 0xfa) {
0x0002d4b4 beq 0x2e290 | goto label_124;
| }
0x0002d4b8 cmp r1, 0xf8 |
| if (r1 != 0xf8) {
0x0002d4bc bne 0x2cea4 | goto label_0;
| }
0x0002d4c0 ldr r3, [r2] | r3 = *(r2);
0x0002d4c4 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002d4c8 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d4cc movne r3, 1 | r3 = 1;
| }
0x0002d4d0 cmp r2, 0 |
0x0002d4d4 strb r3, [r0, 0x43c] | *((r0 + 0x43c)) = r3;
| if (r2 == 0) {
0x0002d4d8 movne r5, 0 | r5 = 0;
| }
| if (r2 == 0) {
0x0002d4dc strbne r3, [r2, 0x230] | *((r2 + 0x230)) = r3;
| }
| if (r2 != 0) {
0x0002d4e0 bne 0x2d7e0 | goto label_2;
| }
0x0002d4e4 b 0x2eb98 | goto label_12;
| label_110:
0x0002d4e8 ldr r3, [pc, 0x8ec] | r3 = *(0x2ddd8);
0x0002d4ec cmp r1, r3 |
| if (r1 == r3) {
0x0002d4f0 beq 0x2e934 | goto label_125;
| }
| if (r1 > r3) {
0x0002d4f4 bhi 0x2d57c | goto label_126;
| }
0x0002d4f8 ldr r3, [pc, 0x8e0] | r3 = *(0x2dddc);
0x0002d4fc cmp r1, r3 |
| if (r1 == r3) {
0x0002d500 beq 0x2f3e4 | goto label_127;
| }
| if (r1 > r3) {
0x0002d504 bhi 0x2d540 | goto label_128;
| }
0x0002d508 sub r3, r3, 4 | r3 -= 4;
0x0002d50c cmp r1, r3 |
| if (r1 == r3) {
0x0002d510 beq 0x2e8f4 | goto label_129;
| }
0x0002d514 cmp r1, 0x10c |
| if (r1 == 0x10c) {
0x0002d518 beq 0x2f3cc | goto label_130;
| }
0x0002d51c sub r3, r3, 2 | r3 -= 2;
0x0002d520 cmp r1, r3 |
| if (r1 != r3) {
0x0002d524 bne 0x2cea4 | goto label_0;
| }
0x0002d528 ldr r3, [r2] | r3 = *(r2);
0x0002d52c mov r5, 0 | r5 = 0;
0x0002d530 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d534 movne r3, 1 | r3 = 1;
| }
0x0002d538 strb r3, [r0, 0x64c] | *((r0 + 0x64c)) = r3;
0x0002d53c b 0x2d7e0 | goto label_2;
| label_128:
0x0002d540 ldr r3, [pc, 0x89c] | r3 = *(0x2dde0);
0x0002d544 cmp r1, r3 |
| if (r1 == r3) {
0x0002d548 beq 0x2f3fc | goto label_131;
| }
0x0002d54c add r3, r3, 3 | r3 += 3;
0x0002d550 cmp r1, r3 |
| if (r1 == r3) {
0x0002d554 beq 0x2f414 | goto label_132;
| }
0x0002d558 sub r3, r3, 4 | r3 -= 4;
0x0002d55c cmp r1, r3 |
| if (r1 != r3) {
0x0002d560 bne 0x2cea4 | goto label_0;
| }
0x0002d564 ldr r3, [r2] | r3 = *(r2);
0x0002d568 mov r5, 0 | r5 = 0;
0x0002d56c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d570 movne r3, 1 | r3 = 1;
| }
0x0002d574 strb r3, [r0, 0x65c] | *((r0 + 0x65c)) = r3;
0x0002d578 b 0x2d7e0 | goto label_2;
| label_126:
0x0002d57c ldr r3, [pc, 0x864] | r3 = *(0x2dde4);
0x0002d580 cmp r1, r3 |
| if (r1 == r3) {
0x0002d584 beq 0x2eb04 | goto label_133;
| }
| if (r1 > r3) {
0x0002d588 bhi 0x2d5f4 | goto label_134;
| }
0x0002d58c sub r3, r3, 2 | r3 -= 2;
0x0002d590 cmp r1, r3 |
| if (r1 == r3) {
0x0002d594 beq 0x2e8a0 | goto label_135;
| }
| if (r1 > r3) {
0x0002d598 bhi 0x2ea4c | goto label_136;
| }
0x0002d59c sub r3, r3, 2 | r3 -= 2;
0x0002d5a0 cmp r1, r3 |
| if (r1 != r3) {
0x0002d5a4 bne 0x2cea4 | goto label_0;
| }
0x0002d5a8 ldrb r3, [r0, 0x67c] | r3 = *((r0 + 0x67c));
0x0002d5ac cmp r3, 0 |
| if (r3 != 0) {
0x0002d5b0 beq 0x2d5d4 |
0x0002d5b4 ldr r3, [pc, 0x8d4] |
0x0002d5b8 ldr r0, [r0, 0x678] | r0 = *((r0 + 0x678));
0x0002d5bc ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002d5c0 ldr r3, [r3] | r3 = *(0x2de8c);
0x0002d5c4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002d5c8 mov r3, 0 | r3 = 0;
0x0002d5cc str r3, [r4, 0x678] | *((r4 + 0x678)) = r3;
0x0002d5d0 strb r3, [r4, 0x67c] | *((r4 + 0x67c)) = r3;
| }
0x0002d5d4 add r0, r4, 0x560 | r0 = r4 + 0x560;
0x0002d5d8 ldr r1, [r5] | r1 = *(r5);
0x0002d5dc add r0, r0, 0xc | r0 += 0xc;
0x0002d5e0 bl 0x2cdb8 | Curl_setstropt ();
0x0002d5e4 ldr r3, [r4, 0x56c] | r3 = *((r4 + 0x56c));
0x0002d5e8 str r3, [r4, 0x678] | *((r4 + 0x678)) = r3;
0x0002d5ec mov r5, r0 | r5 = r0;
0x0002d5f0 b 0x2d7e0 | goto label_2;
| label_134:
0x0002d5f4 ldr r3, [pc, 0x7f0] | r3 = *(0x2dde8);
0x0002d5f8 cmp r1, r3 |
| if (r1 == r3) {
0x0002d5fc beq 0x2e974 | goto label_137;
| }
0x0002d600 add r3, r3, 1 | r3++;
0x0002d604 cmp r1, r3 |
| if (r1 == r3) {
0x0002d608 beq 0x2e924 | goto label_138;
| }
0x0002d60c sub r3, r3, 3 | r3 -= 3;
0x0002d610 cmp r1, r3 |
| if (r1 != r3) {
0x0002d614 bne 0x2cea4 | goto label_0;
| }
0x0002d618 ldr r1, [r2] | r1 = *(r2);
0x0002d61c add r0, r0, 0x560 | r0 += 0x560;
0x0002d620 b 0x2e070 | goto label_10;
| label_16:
0x0002d624 ldr r3, [pc, 0x7c4] | r3 = *(0x2ddec);
0x0002d628 cmp r1, r3 |
| if (r1 == r3) {
0x0002d62c beq 0x2eab0 | goto label_139;
| }
| if (r1 > r3) {
0x0002d630 bhi 0x2da9c | goto label_140;
| }
0x0002d634 sub r3, r3, 0x6a | r3 -= 0x6a;
0x0002d638 cmp r1, r3 |
| if (r1 == r3) {
0x0002d63c beq 0x2ee90 | goto label_141;
| }
| if (r1 > r3) {
0x0002d640 bhi 0x2d86c | goto label_142;
| }
0x0002d644 sub r3, r3, 0x28 | r3 -= 0x28;
0x0002d648 cmp r1, r3 |
| if (r1 == r3) {
0x0002d64c beq 0x2eaf4 | goto label_143;
| }
| if (r1 > r3) {
0x0002d650 bhi 0x2d750 | goto label_144;
| }
0x0002d654 sub r3, r3, 0x20 | r3 -= 0x20;
0x0002d658 cmp r1, r3 |
| if (r1 == r3) {
0x0002d65c beq 0x2ec00 | goto label_145;
| }
| if (r1 > r3) {
0x0002d660 bhi 0x2d6e0 | goto label_146;
| }
0x0002d664 sub r3, r3, 7 | r3 -= 7;
0x0002d668 cmp r1, r3 |
| if (r1 == r3) {
0x0002d66c beq 0x2e570 | goto label_147;
| }
| if (r1 > r3) {
0x0002d670 bhi 0x2d6b4 | goto label_148;
| }
0x0002d674 sub r3, r3, 2 | r3 -= 2;
0x0002d678 cmp r1, r3 |
| if (r1 == r3) {
0x0002d67c beq 0x2e524 | goto label_149;
| }
0x0002d680 add r3, r3, 1 | r3++;
0x0002d684 cmp r1, r3 |
| if (r1 != r3) {
0x0002d688 bne 0x2cea4 | goto label_0;
| }
0x0002d68c add r0, r0, 0x530 | r0 += 0x530;
0x0002d690 ldr r1, [r2] | r1 = *(r2);
0x0002d694 add r0, r0, 8 | r0 += 8;
0x0002d698 bl 0x2cdb8 | Curl_setstropt ();
0x0002d69c ldr r3, [r4, 0x538] | r3 = *((r4 + 0x538));
0x0002d6a0 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d6a4 movne r3, 1 | r3 = 1;
| }
0x0002d6a8 strb r3, [r4, 0x4c6] | *((r4 + 0x4c6)) = r3;
0x0002d6ac mov r5, r0 | r5 = r0;
0x0002d6b0 b 0x2d7e0 | goto label_2;
| label_148:
0x0002d6b4 ldr r3, [pc, 0x738] | r3 = *(0x2ddf0);
0x0002d6b8 cmp r1, r3 |
| if (r1 == r3) {
0x0002d6bc beq 0x2e57c | goto label_150;
| }
| if (r1 > r3) {
0x0002d6c0 bhi 0x2e4e4 | goto label_151;
| }
0x0002d6c4 sub r3, r3, 1 | r3--;
0x0002d6c8 cmp r1, r3 |
| if (r1 != r3) {
0x0002d6cc ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002d6d0 addeq r0, r0, 0x510 | r0 += 0x510;
| goto label_152;
| }
| if (r1 != r3) {
| label_152:
0x0002d6d4 bne 0x2cea4 | goto label_0;
| }
| label_1:
0x0002d6d8 add r0, r0, 8 | r0 += 8;
0x0002d6dc b 0x2dc70 | goto label_5;
| label_146:
0x0002d6e0 ldr r3, [pc, 0x710] | r3 = *(0x2ddf4);
0x0002d6e4 cmp r1, r3 |
| if (r1 == r3) {
0x0002d6e8 beq 0x2e5b0 | goto label_153;
| }
| if (r1 > r3) {
0x0002d6ec bhi 0x2d720 | goto label_154;
| }
0x0002d6f0 sub r3, r3, 3 | r3 -= 3;
0x0002d6f4 cmp r1, r3 |
| if (r1 == r3) {
0x0002d6f8 beq 0x2eaa0 | goto label_155;
| }
0x0002d6fc add r3, r3, 1 | r3++;
0x0002d700 cmp r1, r3 |
| if (r1 == r3) {
0x0002d704 beq 0x2e914 | goto label_156;
| }
0x0002d708 sub r3, r3, 3 | r3 -= 3;
0x0002d70c cmp r1, r3 |
| if (r1 != r3) {
0x0002d710 bne 0x2cea4 | goto label_0;
| }
0x0002d714 ldr r1, [r2] | r1 = *(r2);
0x0002d718 add r0, r0, 0x540 | r0 += 0x540;
0x0002d71c b 0x2e070 | goto label_10;
| label_154:
0x0002d720 ldr r3, [pc, 0x6d4] | r3 = *(0x2ddf8);
0x0002d724 cmp r1, r3 |
| if (r1 == r3) {
0x0002d728 beq 0x2eb88 | goto label_157;
| }
0x0002d72c add r3, r3, 2 | r3 += 2;
0x0002d730 cmp r1, r3 |
| if (r1 == r3) {
0x0002d734 beq 0x2ea80 | goto label_158;
| }
0x0002d738 sub r3, r3, 3 | r3 -= 3;
0x0002d73c cmp r1, r3 |
| if (r1 != r3) {
0x0002d740 bne 0x2cea4 | goto label_0;
| }
0x0002d744 ldr r1, [r2] | r1 = *(r2);
0x0002d748 add r0, r0, 0x520 | r0 += 0x520;
0x0002d74c b 0x2dc70 | goto label_5;
| label_144:
0x0002d750 ldr r3, [pc, 0x6a8] | r3 = *(0x2ddfc);
0x0002d754 cmp r1, r3 |
| if (r1 == r3) {
0x0002d758 beq 0x2e5f0 | goto label_159;
| }
| if (r1 > r3) {
0x0002d75c bhi 0x2d7ec | goto label_160;
| }
0x0002d760 sub r3, r3, 0x11 | r3 -= 0x11;
0x0002d764 cmp r1, r3 |
| if (r1 == r3) {
0x0002d768 beq 0x2ee84 | goto label_161;
| }
| if (r1 > r3) {
0x0002d76c bhi 0x2d7b0 | goto label_162;
| }
0x0002d770 sub r3, r3, 3 | r3 -= 3;
0x0002d774 cmp r1, r3 |
| if (r1 == r3) {
0x0002d778 beq 0x2ec84 | goto label_163;
| }
0x0002d77c add r3, r3, 1 | r3++;
0x0002d780 cmp r1, r3 |
| if (r1 != r3) {
0x0002d784 bne 0x2cea4 | goto label_0;
| }
0x0002d788 add r0, r0, 0x550 | r0 += 0x550;
0x0002d78c ldr r1, [r2] | r1 = *(r2);
0x0002d790 add r0, r0, 4 | r0 += 4;
0x0002d794 bl 0x2cdb8 | Curl_setstropt ();
0x0002d798 ldr r3, [r4, 0x554] | r3 = *((r4 + 0x554));
0x0002d79c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002d7a0 movne r3, 1 | r3 = 1;
| }
0x0002d7a4 strb r3, [r4, 0x4d9] | *((r4 + 0x4d9)) = r3;
0x0002d7a8 mov r5, r0 | r5 = r0;
0x0002d7ac b 0x2d7e0 | goto label_2;
| label_162:
0x0002d7b0 ldr r3, [pc, 0x64c] | r3 = "pe";
0x0002d7b4 cmp r1, r3 |
| if (r1 == r3) {
0x0002d7b8 beq 0x2e078 | goto label_164;
| }
0x0002d7bc add r3, r3, 1 | r3++;
0x0002d7c0 cmp r1, r3 |
| if (r1 == r3) {
0x0002d7c4 beq 0x2e084 | goto label_165;
| }
0x0002d7c8 sub r3, r3, 7 | r3 -= 7;
0x0002d7cc cmp r1, r3 |
| if (r1 != r3) {
0x0002d7d0 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != r3) {
0x0002d7d4 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002d7d8 streq r3, [r0, 0x3bc] | *((r0 + 0x3bc)) = r3;
| goto label_166;
| }
| if (r1 != r3) {
| label_166:
0x0002d7dc bne 0x2cea4 | goto label_0;
| }
| label_2:
0x0002d7e0 mov r0, r5 | r0 = r5;
0x0002d7e4 add sp, sp, 0x10 |
0x0002d7e8 pop {r4, r5, r6, r7, r8, pc} |
| label_160:
0x0002d7ec ldr r3, [pc, 0x614] | r3 = "y_escape";
0x0002d7f0 cmp r1, r3 |
| if (r1 == r3) {
0x0002d7f4 beq 0x2ec3c | goto label_167;
| }
| if (r1 > r3) {
0x0002d7f8 bhi 0x2d824 | goto label_168;
| }
0x0002d7fc sub r3, r3, 2 | r3 -= 2;
0x0002d800 cmp r1, r3 |
| if (r1 == r3) {
0x0002d804 beq 0x2ec0c | goto label_169;
| }
| if (r1 > r3) {
0x0002d808 bhi 0x2ec24 | goto label_170;
| }
0x0002d80c sub r3, r3, 3 | r3 -= 3;
0x0002d810 cmp r1, r3 |
| if (r1 != r3) {
0x0002d814 ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002d818 addeq r0, r0, 0x580 | r0 += 0x580;
| goto label_171;
| }
| if (r1 == r3) {
| label_171:
0x0002d81c beq 0x2d6d8 | goto label_1;
| }
0x0002d820 b 0x2cea4 | goto label_0;
| label_168:
0x0002d824 ldr r3, [pc, 0x5e0] | r3 = "l_escape";
0x0002d828 cmp r1, r3 |
| if (r1 == r3) {
0x0002d82c beq 0x2ea90 | goto label_172;
| }
0x0002d830 add r3, r3, 2 | r3 += 2;
0x0002d834 cmp r1, r3 |
| if (r1 == r3) {
0x0002d838 beq 0x2eb78 | goto label_173;
| }
0x0002d83c sub r3, r3, 6 | r3 -= 6;
0x0002d840 cmp r1, r3 |
| if (r1 != r3) {
0x0002d844 bne 0x2cea4 | goto label_0;
| }
0x0002d848 ldr r1, [r2] | r1 = *(r2);
0x0002d84c cmp r1, 0 |
| if (r1 == 0) {
0x0002d850 beq 0x2eb98 | goto label_12;
| }
0x0002d854 ldrb r3, [r1] | r3 = *(r1);
0x0002d858 cmp r3, 0 |
| if (r3 == 0) {
0x0002d85c beq 0x2eb98 | goto label_12;
| }
0x0002d860 add sp, sp, 0x10 |
0x0002d864 pop {r4, r5, r6, r7, r8, lr} |
0x0002d868 b 0x375c4 | void (*0x375c4)() ();
| label_142:
0x0002d86c ldr r3, [pc, 0x59c] | r3 = *(0x2de0c);
0x0002d870 cmp r1, r3 |
| if (r1 == r3) {
0x0002d874 beq 0x2eed8 | goto label_174;
| }
| if (r1 > r3) {
0x0002d878 bhi 0x2d9bc | goto label_175;
| }
0x0002d87c sub r3, r3, 0x26 | r3 -= 0x26;
0x0002d880 cmp r1, r3 |
| if (r1 == r3) {
0x0002d884 beq 0x2ebf0 | goto label_176;
| }
| if (r1 > r3) {
0x0002d888 bhi 0x2d93c | goto label_177;
| }
0x0002d88c sub r3, r3, 0x1c | r3 -= 0x1c;
0x0002d890 cmp r1, r3 |
| if (r1 == r3) {
0x0002d894 beq 0x2f06c | goto label_178;
| }
| if (r1 > r3) {
0x0002d898 bhi 0x2d908 | goto label_179;
| }
0x0002d89c sub r3, r3, 3 | r3 -= 3;
0x0002d8a0 cmp r1, r3 |
| if (r1 == r3) {
0x0002d8a4 beq 0x2ef60 | goto label_180;
| }
0x0002d8a8 add r3, r3, 2 | r3 += 2;
0x0002d8ac cmp r1, r3 |
| if (r1 != r3) {
0x0002d8b0 bne 0x2cea4 | goto label_0;
| }
0x0002d8b4 ldr r1, [r2] | r1 = *(r2);
0x0002d8b8 cmp r1, 0 |
| if (r1 == 0) {
0x0002d8bc beq 0x2e2e0 | goto label_181;
| }
0x0002d8c0 ldrb r3, [r1] | r3 = *(r1);
0x0002d8c4 cmp r3, 0 |
| if (r3 != 0) {
0x0002d8c8 bne 0x2e2e0 | goto label_181;
| }
0x0002d8cc bl 0x208ec | r0 = Curl_all_content_encodings ();
0x0002d8d0 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0002d8d4 moveq r5, 0x1b | r5 = 0x1b;
| goto label_182;
| }
| if (r6 == r0) {
| label_182:
0x0002d8d8 beq 0x2d7e0 | goto label_2;
| }
0x0002d8dc add r0, r4, 0x520 | r0 = r4 + 0x520;
0x0002d8e0 mov r1, r6 | r1 = r6;
0x0002d8e4 add r0, r0, 0xc | r0 += 0xc;
0x0002d8e8 bl 0x2cdb8 | Curl_setstropt ();
0x0002d8ec ldr r3, [pc, 0x59c] |
0x0002d8f0 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002d8f4 ldr r3, [r3] | r3 = *(0x2de8c);
0x0002d8f8 mov r5, r0 | r5 = r0;
0x0002d8fc mov r0, r6 | r0 = r6;
0x0002d900 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002d904 b 0x2d7e0 | goto label_2;
| label_179:
0x0002d908 ldr r3, [pc, 0x504] | r3 = *(0x2de10);
0x0002d90c cmp r1, r3 |
| if (r1 == r3) {
0x0002d910 beq 0x2edc0 | goto label_183;
| }
0x0002d914 add r3, r3, 9 | r3 += 9;
0x0002d918 cmp r1, r3 |
| if (r1 == r3) {
0x0002d91c beq 0x2e23c | goto label_184;
| }
0x0002d920 sub r3, r3, 0xe | r3 -= 0xe;
0x0002d924 cmp r1, r3 |
| if (r1 != r3) {
0x0002d928 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != r3) {
0x0002d92c moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002d930 streq r3, [r0, 0x4a0] | *((r0 + 0x4a0)) = r3;
| goto label_185;
| }
| if (r1 == r3) {
| label_185:
0x0002d934 beq 0x2d7e0 | goto label_2;
| }
0x0002d938 b 0x2cea4 | goto label_0;
| label_177:
0x0002d93c ldr r3, [pc, 0x4d4] | r3 = *(0x2de14);
0x0002d940 cmp r1, r3 |
| if (r1 == r3) {
0x0002d944 beq 0x2f188 | goto label_186;
| }
| if (r1 > r3) {
0x0002d948 bhi 0x2d97c | goto label_187;
| }
0x0002d94c sub r3, r3, 0xe | r3 -= 0xe;
0x0002d950 cmp r1, r3 |
| if (r1 == r3) {
0x0002d954 beq 0x2e628 | goto label_188;
| }
0x0002d958 add r3, r3, 0xc | r3 += 0xc;
0x0002d95c cmp r1, r3 |
| if (r1 == r3) {
0x0002d960 beq 0x2f17c | goto label_189;
| }
0x0002d964 sub r3, r3, 0xd | r3 -= 0xd;
0x0002d968 cmp r1, r3 |
| if (r1 != r3) {
0x0002d96c bne 0x2cea4 | goto label_0;
| }
0x0002d970 ldr r1, [r2] | r1 = *(r2);
0x0002d974 add r0, r0, 0x530 | r0 += 0x530;
0x0002d978 b 0x2dc70 | goto label_5;
| label_187:
0x0002d97c ldr r3, [pc, 0x498] | r3 = *(0x2de18);
0x0002d980 cmp r1, r3 |
| if (r1 == r3) {
0x0002d984 beq 0x2e330 | goto label_190;
| }
0x0002d988 add r3, r3, 3 | r3 += 3;
0x0002d98c cmp r1, r3 |
| if (r1 != r3) {
0x0002d990 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != r3) {
0x0002d994 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002d998 streq r3, [r0, 0x1c8] | *((r0 + 0x1c8)) = r3;
| goto label_191;
| }
| if (r1 == r3) {
| label_191:
0x0002d99c beq 0x2d7e0 | goto label_2;
| }
0x0002d9a0 sub r3, r3, 4 | r3 -= 4;
0x0002d9a4 cmp r1, r3 |
| if (r1 != r3) {
0x0002d9a8 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002d9ac moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002d9b0 streq r3, [r0, 0x1bc] | *((r0 + 0x1bc)) = r3;
| goto label_192;
| }
| if (r1 == r3) {
| label_192:
0x0002d9b4 beq 0x2d7e0 | goto label_2;
| }
0x0002d9b8 b 0x2cea4 | goto label_0;
| label_175:
0x0002d9bc ldr r3, [pc, 0x45c] | r3 = *(0x2de1c);
0x0002d9c0 cmp r1, r3 |
| if (r1 == r3) {
0x0002d9c4 beq 0x2f224 | goto label_193;
| }
| if (r1 > r3) {
0x0002d9c8 bhi 0x2da28 | goto label_194;
| }
0x0002d9cc sub r3, r3, 0xb | r3 -= 0xb;
0x0002d9d0 cmp r1, r3 |
| if (r1 == r3) {
0x0002d9d4 beq 0x2eb10 | goto label_195;
| }
| if (r1 > r3) {
0x0002d9d8 bhi 0x2da08 | goto label_196;
| }
0x0002d9dc sub r3, r3, 2 | r3 -= 2;
0x0002d9e0 cmp r1, r3 |
| if (r1 == r3) {
0x0002d9e4 beq 0x2ea68 | goto label_197;
| }
| if (r1 > r3) {
0x0002d9e8 bhi 0x2ea74 | goto label_198;
| }
0x0002d9ec sub r3, r3, 3 | r3 -= 3;
0x0002d9f0 cmp r1, r3 |
| if (r1 != r3) {
0x0002d9f4 ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002d9f8 addeq r0, r0, 0x5a0 | r0 += 0x5a0;
| goto label_199;
| }
| if (r1 != r3) {
| label_199:
0x0002d9fc bne 0x2cea4 | goto label_0;
| }
| label_4:
0x0002da00 add r0, r0, 0xc | r0 += 0xc;
0x0002da04 b 0x2dc70 | goto label_5;
| label_196:
0x0002da08 ldr r3, [pc, 0x414] | r3 = "l_mvfprintf";
0x0002da0c cmp r1, r3 |
| if (r1 == r3) {
0x0002da10 beq 0x2eb1c | goto label_200;
| }
| if (r1 < r3) {
0x0002da14 addhs r3, r3, 2 | r3 += 2;
| }
| if (r1 >= r3) {
0x0002da18 bhs 0x2db94 | goto label_201;
| }
0x0002da1c ldr r1, [r2] | r1 = *(r2);
0x0002da20 add r0, r0, 0x5c0 | r0 += 0x5c0;
0x0002da24 b 0x2e070 | goto label_10;
| label_194:
0x0002da28 ldr r3, [pc, 0x3f8] | r3 = *(0x2de24);
0x0002da2c cmp r1, r3 |
| if (r1 == r3) {
0x0002da30 beq 0x2f27c | goto label_202;
| }
| if (r1 > r3) {
0x0002da34 bhi 0x2da64 | goto label_203;
| }
0x0002da38 sub r3, r3, 2 | r3 -= 2;
0x0002da3c cmp r1, r3 |
| if (r1 == r3) {
0x0002da40 beq 0x2f264 | goto label_204;
| }
| if (r1 > r3) {
0x0002da44 bhi 0x2f270 | goto label_205;
| }
0x0002da48 sub r3, r3, 3 | r3 -= 3;
0x0002da4c cmp r1, r3 |
| if (r1 != r3) {
0x0002da50 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != r3) {
0x0002da54 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002da58 streq r3, [r0, 0x608] | *((r0 + 0x608)) = r3;
| goto label_206;
| }
| if (r1 == r3) {
| label_206:
0x0002da5c beq 0x2d7e0 | goto label_2;
| }
0x0002da60 b 0x2cea4 | goto label_0;
| label_203:
0x0002da64 ldr r3, [pc, 0x3c0] | r3 = "rintf";
0x0002da68 cmp r1, r3 |
| if (r1 == r3) {
0x0002da6c beq 0x2f29c | goto label_207;
| }
| if (r1 <= r3) {
0x0002da70 ldrhi r3, [r2] | r3 = *(r2);
| }
| if (r1 <= r3) {
0x0002da74 movhi r5, 0 | r5 = 0;
| }
| if (r1 > r3) {
0x0002da78 strhi r3, [r0, 0x628] | *((r0 + 0x628)) = r3;
| goto label_208;
| }
| if (r1 > r3) {
| label_208:
0x0002da7c bhi 0x2d7e0 | goto label_2;
| }
0x0002da80 sub r3, r3, 6 | r3 -= 6;
0x0002da84 cmp r1, r3 |
| if (r1 != r3) {
0x0002da88 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002da8c moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002da90 streq r3, [r0, 0x14c] | *((r0 + 0x14c)) = r3;
| goto label_209;
| }
| if (r1 == r3) {
| label_209:
0x0002da94 beq 0x2d7e0 | goto label_2;
| }
0x0002da98 b 0x2cea4 | goto label_0;
| label_140:
0x0002da9c ldr r3, [pc, 0x38c] | r3 = *(0x2de2c);
0x0002daa0 cmp r1, r3 |
| if (r1 == r3) {
0x0002daa4 beq 0x2e500 | goto label_210;
| }
| if (r1 > r3) {
0x0002daa8 bhi 0x2dc7c | goto label_211;
| }
0x0002daac sub r3, r3, 0x1c | r3 -= 0x1c;
0x0002dab0 cmp r1, r3 |
| if (r1 > r3) {
0x0002dab4 bhi 0x2dba8 | goto label_212;
| }
0x0002dab8 cmp r1, 0x2800 |
| if (r1 >= 0x2800) {
0x0002dabc bhs 0x2d4a0 | goto label_3;
| }
0x0002dac0 sub r3, r3, 0x12 | r3 -= 0x12;
0x0002dac4 cmp r1, r3 |
| if (r1 == r3) {
0x0002dac8 beq 0x2f2d0 | goto label_213;
| }
| if (r1 > r3) {
0x0002dacc bhi 0x2db30 | goto label_214;
| }
0x0002dad0 sub r3, r3, 6 | r3 -= 6;
0x0002dad4 cmp r1, r3 |
| if (r1 == r3) {
0x0002dad8 beq 0x2f230 | goto label_215;
| }
| if (r1 > r3) {
0x0002dadc bhi 0x2db08 | goto label_216;
| }
0x0002dae0 sub r3, r3, 8 | r3 -= 8;
0x0002dae4 cmp r1, r3 |
| if (r1 == r3) {
0x0002dae8 beq 0x2f1b8 | goto label_217;
| }
0x0002daec add r3, r3, 2 | r3 += 2;
0x0002daf0 cmp r1, r3 |
| if (r1 != r3) {
0x0002daf4 bne 0x2cea4 | goto label_0;
| }
0x0002daf8 ldr r1, [r2] | r1 = *(r2);
0x0002dafc add sp, sp, 0x10 |
0x0002db00 pop {r4, r5, r6, r7, r8, lr} |
0x0002db04 b 0x26b54 | void (*0x26b54)() ();
| label_216:
0x0002db08 ldr r3, [pc, 0x324] | r3 = *(0x2de30);
0x0002db0c cmp r1, r3 |
| if (r1 == r3) {
0x0002db10 beq 0x2f2b0 | goto label_218;
| }
| if (r1 > r3) {
0x0002db14 bhi 0x2f2c0 | goto label_219;
| }
0x0002db18 sub r3, r3, 1 | r3--;
0x0002db1c cmp r1, r3 |
| if (r1 != r3) {
0x0002db20 ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002db24 addeq r0, r0, 0x5e0 | r0 += 0x5e0;
| goto label_220;
| }
| if (r1 == r3) {
| label_220:
0x0002db28 beq 0x2d6d8 | goto label_1;
| }
0x0002db2c b 0x2cea4 | goto label_0;
| label_214:
0x0002db30 ldr r3, [pc, 0x300] | r3 = *(0x2de34);
0x0002db34 cmp r1, r3 |
| if (r1 == r3) {
0x0002db38 beq 0x2f370 | goto label_221;
| }
| if (r1 > r3) {
0x0002db3c bhi 0x2db70 | goto label_222;
| }
0x0002db40 sub r3, r3, 3 | r3 -= 3;
0x0002db44 cmp r1, r3 |
| if (r1 == r3) {
0x0002db48 beq 0x2e58c | goto label_223;
| }
0x0002db4c add r3, r3, 2 | r3 += 2;
0x0002db50 cmp r1, r3 |
| if (r1 == r3) {
0x0002db54 beq 0x2ee3c | goto label_224;
| }
0x0002db58 sub r3, r3, 6 | r3 -= 6;
0x0002db5c cmp r1, r3 |
| if (r1 != r3) {
0x0002db60 bne 0x2cea4 | goto label_0;
| }
0x0002db64 ldr r1, [r2] | r1 = *(r2);
0x0002db68 add r0, r0, 0x5b0 | r0 += 0x5b0;
0x0002db6c b 0x2da00 | goto label_4;
| label_222:
0x0002db70 ldr r3, [pc, 0x2c4] | r3 = *(0x2de38);
0x0002db74 cmp r1, r3 |
| if (r1 == r3) {
0x0002db78 beq 0x2e908 | goto label_225;
| }
0x0002db7c add r3, r3, 2 | r3 += 2;
0x0002db80 cmp r1, r3 |
| if (r1 != r3) {
0x0002db84 ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 != r3) {
0x0002db88 addeq r0, r0, 0x520 | r0 += 0x520;
| }
| if (r1 == r3) {
0x0002db8c beq 0x2e070 | goto label_10;
| }
0x0002db90 sub r3, r3, 3 | r3 -= 3;
| label_201:
0x0002db94 cmp r1, r3 |
| if (r1 != r3) {
0x0002db98 bne 0x2cea4 | goto label_0;
| }
0x0002db9c ldr r1, [r5] | r1 = *(r5);
0x0002dba0 add r0, r4, 0x5d0 | r0 = r4 + 0x5d0;
0x0002dba4 b 0x2d6d8 | goto label_1;
| label_212:
0x0002dba8 ldr r3, [pc, 0x290] | r3 = "oc";
0x0002dbac cmp r1, r3 |
| if (r1 == r3) {
0x0002dbb0 beq 0x2ec48 | goto label_226;
| }
| if (r1 > r3) {
0x0002dbb4 bhi 0x2dc14 | goto label_227;
| }
0x0002dbb8 sub r3, r3, 0xa | r3 -= 0xa;
0x0002dbbc cmp r1, r3 |
| if (r1 == r3) {
0x0002dbc0 beq 0x2eeb4 | goto label_228;
| }
| if (r1 > r3) {
0x0002dbc4 bhi 0x2dbec | goto label_229;
| }
0x0002dbc8 sub r3, r3, 4 | r3 -= 4;
0x0002dbcc cmp r1, r3 |
| if (r1 == r3) {
0x0002dbd0 beq 0x2f3bc | goto label_230;
| }
0x0002dbd4 add r3, r3, 3 | r3 += 3;
0x0002dbd8 cmp r1, r3 |
| if (r1 != r3) {
0x0002dbdc ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002dbe0 addeq r0, r0, 0x570 | r0 += 0x570;
| goto label_231;
| }
| if (r1 == r3) {
| label_231:
0x0002dbe4 beq 0x2da00 | goto label_4;
| }
0x0002dbe8 b 0x2cea4 | goto label_0;
| label_229:
0x0002dbec ldr r3, [pc, 0x250] | r3 = *(0x2de40);
0x0002dbf0 cmp r1, r3 |
| if (r1 == r3) {
0x0002dbf4 beq 0x2ec18 | goto label_232;
| }
| if (r1 > r3) {
0x0002dbf8 bhi 0x2ec30 | goto label_233;
| }
0x0002dbfc sub r3, r3, 1 | r3--;
0x0002dc00 cmp r1, r3 |
| if (r1 != r3) {
0x0002dc04 ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002dc08 addeq r0, r0, 0x500 | r0 += 0x500;
| goto label_234;
| }
| if (r1 == r3) {
| label_234:
0x0002dc0c beq 0x2da00 | goto label_4;
| }
0x0002dc10 b 0x2cea4 | goto label_0;
| label_227:
0x0002dc14 ldr r3, [pc, 0x22c] | r3 = *(0x2de44);
0x0002dc18 cmp r1, r3 |
| if (r1 == r3) {
0x0002dc1c beq 0x2e8ac | goto label_235;
| }
| if (r1 > r3) {
0x0002dc20 bhi 0x2dc4c | goto label_236;
| }
0x0002dc24 sub r3, r3, 3 | r3 -= 3;
0x0002dc28 cmp r1, r3 |
| if (r1 == r3) {
0x0002dc2c beq 0x2e050 | goto label_237;
| }
| if (r1 <= r3) {
0x0002dc30 blo 0x2ec54 | goto label_238;
| }
0x0002dc34 add r3, r3, 1 | r3++;
0x0002dc38 cmp r1, r3 |
| if (r1 != r3) {
0x0002dc3c ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002dc40 addeq r0, r0, 0x5a0 | r0 += 0x5a0;
| goto label_239;
| }
| if (r1 == r3) {
| label_239:
0x0002dc44 beq 0x2d6d8 | goto label_1;
| }
0x0002dc48 b 0x2cea4 | goto label_0;
| label_236:
0x0002dc4c ldr r3, [pc, 0x1f8] | r3 = *(0x2de48);
0x0002dc50 cmp r1, r3 |
| if (r1 == r3) {
0x0002dc54 beq 0x2f384 | goto label_240;
| }
| if (r1 <= r3) {
0x0002dc58 blo 0x2ee60 | goto label_241;
| }
0x0002dc5c add r3, r3, 2 | r3 += 2;
0x0002dc60 cmp r1, r3 |
| if (r1 != r3) {
0x0002dc64 ldreq r1, [r2] | r1 = *(r2);
| }
| if (r1 == r3) {
0x0002dc68 addeq r0, r0, 0x5f0 | r0 += 0x5f0;
| goto label_242;
| }
| if (r1 != r3) {
| label_242:
0x0002dc6c bne 0x2cea4 | goto label_0;
| }
| label_5:
0x0002dc70 add sp, sp, 0x10 |
0x0002dc74 pop {r4, r5, r6, r7, r8, lr} |
0x0002dc78 b 0x2cdb8 | void (*0x2cdb8)() ();
| label_211:
0x0002dc7c ldr r3, [pc, 0x1cc] | r3 = "url_global_init";
0x0002dc80 cmp r1, r3 |
| if (r1 == r3) {
0x0002dc84 beq 0x2f198 | goto label_243;
| }
| if (r1 > r3) {
0x0002dc88 bhi 0x2deac | goto label_244;
| }
0x0002dc8c sub r3, r3, 0x54 | r3 -= 0x54;
0x0002dc90 cmp r1, r3 |
| if (r1 == r3) {
0x0002dc94 beq 0x2ebb4 | goto label_245;
| }
| if (r1 > r3) {
0x0002dc98 bhi 0x2dd30 | goto label_246;
| }
0x0002dc9c ldr r3, [pc, 0x1b0] | r3 = *(0x2de50);
0x0002dca0 cmp r1, r3 |
| if (r1 == r3) {
0x0002dca4 beq 0x2e05c | goto label_247;
| }
| if (r1 > r3) {
0x0002dca8 bhi 0x2dce0 | goto label_248;
| }
0x0002dcac sub r3, r3, 4 | r3 -= 4;
0x0002dcb0 cmp r1, r3 |
| if (r1 == r3) {
0x0002dcb4 beq 0x2f1a8 | goto label_249;
| }
0x0002dcb8 add r3, r3, 3 | r3 += 3;
0x0002dcbc cmp r1, r3 |
| if (r1 != r3) {
0x0002dcc0 bne 0x2cea4 | goto label_0;
| }
0x0002dcc4 bl 0x37d68 | r0 = Curl_ssl_tls13_ciphersuites ();
0x0002dcc8 cmp r0, 0 |
| if (r0 == 0) {
0x0002dccc ldrne r1, [r5] | r1 = *(r5);
| }
| if (r0 != 0) {
0x0002dcd0 addne r0, r4, 0x590 | r0 = r4 + 0x590;
| goto label_250;
| }
| if (r0 != 0) {
| label_250:
0x0002dcd4 bne 0x2dc70 | goto label_5;
| }
| label_6:
0x0002dcd8 mov r5, 4 | r5 = 4;
0x0002dcdc b 0x2d7e0 | goto label_2;
| label_248:
0x0002dce0 ldr r3, [pc, 0x170] | r3 = *(0x2de54);
0x0002dce4 cmp r1, r3 |
| if (r1 == r3) {
0x0002dce8 beq 0x2ebc4 | goto label_251;
| }
0x0002dcec add r3, r3, 0x2c | r3 += 0x2c;
0x0002dcf0 cmp r1, r3 |
| if (r1 == r3) {
0x0002dcf4 beq 0x2eac4 | goto label_252;
| }
0x0002dcf8 sub r3, r3, 0x2d | r3 -= 0x2d;
0x0002dcfc cmp r1, r3 |
| if (r1 != r3) {
0x0002dd00 bne 0x2cea4 | goto label_0;
| }
0x0002dd04 ldr r5, [r2] | r5 = *(r2);
0x0002dd08 cmp r5, 0 |
| if (r5 == 0) {
0x0002dd0c movne r3, 1 | r3 = 1;
| }
0x0002dd10 str r5, [r0, 0x188] | *((r0 + 0x188)) = r5;
| if (r5 == 0) {
0x0002dd14 strne r3, [r0, 0x19c] | *((r0 + 0x19c)) = r3;
| }
| if (r5 == 0) {
0x0002dd18 movne r5, 0 | r5 = 0;
| }
| if (r5 != 0) {
0x0002dd1c ldreq r3, [pc, 0x138] | r3 = *((pc + 0x138));
| }
| if (r5 != 0) {
0x0002dd20 streq r5, [r0, 0x19c] | *((r0 + 0x19c)) = r5;
| }
| if (r5 != 0) {
0x0002dd24 ldreq r3, [r7, r3] | r3 = *((r7 + r3));
| }
| if (r5 != 0) {
0x0002dd28 streq r3, [r0, 0x188] | *((r0 + 0x188)) = r3;
| }
0x0002dd2c b 0x2d7e0 | goto label_2;
| label_246:
0x0002dd30 ldr r3, [pc, 0x128] | r3 = *(0x2de5c);
0x0002dd34 cmp r1, r3 |
| if (r1 != r3) {
0x0002dd38 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != r3) {
0x0002dd3c moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002dd40 streq r3, [r0, 0x1cc] | *((r0 + 0x1cc)) = r3;
| goto label_253;
| }
| if (r1 == r3) {
| label_253:
0x0002dd44 beq 0x2d7e0 | goto label_2;
| }
| if (r1 > r3) {
0x0002dd48 bhi 0x2dd8c | goto label_254;
| }
0x0002dd4c sub r3, r3, 0x22 | r3 -= 0x22;
0x0002dd50 cmp r1, r3 |
| if (r1 == r3) {
0x0002dd54 beq 0x2ed98 | goto label_255;
| }
0x0002dd58 add r3, r3, 0x16 | r3 += 0x16;
0x0002dd5c cmp r1, r3 |
| if (r1 != r3) {
0x0002dd60 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002dd64 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002dd68 streq r3, [r0, 0x1ac] | *((r0 + 0x1ac)) = r3;
| goto label_256;
| }
| if (r1 == r3) {
| label_256:
0x0002dd6c beq 0x2d7e0 | goto label_2;
| }
0x0002dd70 sub r3, r3, 0x24 | r3 -= 0x24;
0x0002dd74 cmp r1, r3 |
| if (r1 != r3) {
0x0002dd78 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002dd7c moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002dd80 streq r3, [r0, 0x1a8] | *((r0 + 0x1a8)) = r3;
| goto label_257;
| }
| if (r1 == r3) {
| label_257:
0x0002dd84 beq 0x2d7e0 | goto label_2;
| }
0x0002dd88 b 0x2cea4 | goto label_0;
| label_254:
0x0002dd8c ldr r3, [pc, 0xd0] | r3 = *(0x2de60);
0x0002dd90 cmp r1, r3 |
| if (r1 != r3) {
0x0002dd94 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002dd98 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002dd9c streq r3, [r0, 0x1d4] | *((r0 + 0x1d4)) = r3;
| goto label_258;
| }
| if (r1 == r3) {
| label_258:
0x0002dda0 beq 0x2d7e0 | goto label_2;
| }
| if (r1 >= r3) {
0x0002dda4 ldrlo r3, [r5] | r3 = *(r5);
| }
| if (r1 >= r3) {
0x0002dda8 movlo r5, 0 | r5 = 0;
| }
| if (r1 < r3) {
0x0002ddac strlo r3, [r0, 0x1d0] | *((r0 + 0x1d0)) = r3;
| goto label_259;
| }
| if (r1 <= r3) {
| label_259:
0x0002ddb0 blo 0x2d7e0 | goto label_2;
| }
0x0002ddb4 add r3, r3, 4 | r3 += 4;
0x0002ddb8 cmp r1, r3 |
| if (r1 != r3) {
0x0002ddbc ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002ddc0 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002ddc4 streq r3, [r0, 0x1b0] | *((r0 + 0x1b0)) = r3;
| goto label_260;
| }
| if (r1 == r3) {
| label_260:
0x0002ddc8 beq 0x2d7e0 | goto label_2;
| }
0x0002ddcc b 0x2cea4 | goto label_0;
| label_244:
0x0002deac ldr r3, [pc, -0x4c] | r3 = *(0x2de64);
0x0002deb0 cmp r1, r3 |
| if (r1 != r3) {
0x0002deb4 ldreq r3, [r2] | r3 = *(r2);
| }
| if (r1 != r3) {
0x0002deb8 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002debc streq r3, [r0, 0x668] | *((r0 + 0x668)) = r3;
| goto label_261;
| }
| if (r1 == r3) {
| label_261:
0x0002dec0 beq 0x2d7e0 | goto label_2;
| }
| if (r1 > r3) {
0x0002dec4 bhi 0x2df70 | goto label_262;
| }
0x0002dec8 sub r3, r3, 0x49 | r3 -= 0x49;
0x0002decc cmp r1, r3 |
| if (r1 != r3) {
0x0002ded0 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002ded4 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002ded8 streq r3, [r0, 0x620] | *((r0 + 0x620)) = r3;
| goto label_263;
| }
| if (r1 == r3) {
| label_263:
0x0002dedc beq 0x2d7e0 | goto label_2;
| }
| if (r1 > r3) {
0x0002dee0 bhi 0x2df30 | goto label_264;
| }
0x0002dee4 sub r3, r3, 3 | r3 -= 3;
0x0002dee8 cmp r1, r3 |
| if (r1 != r3) {
0x0002deec ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002def0 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002def4 streq r3, [r0, 0x190] | *((r0 + 0x190)) = r3;
| goto label_265;
| }
| if (r1 == r3) {
| label_265:
0x0002def8 beq 0x2d7e0 | goto label_2;
| }
0x0002defc add r3, r3, 2 | r3 += 2;
0x0002df00 cmp r1, r3 |
| if (r1 != r3) {
0x0002df04 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002df08 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002df0c streq r3, [r0, 0x61c] | *((r0 + 0x61c)) = r3;
| goto label_266;
| }
| if (r1 == r3) {
| label_266:
0x0002df10 beq 0x2d7e0 | goto label_2;
| }
0x0002df14 sub r3, r3, 0x1f | r3 -= 0x1f;
0x0002df18 cmp r1, r3 |
| if (r1 != r3) {
0x0002df1c ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002df20 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002df24 streq r3, [r0, 0x174] | *((r0 + 0x174)) = r3;
| goto label_267;
| }
| if (r1 == r3) {
| label_267:
0x0002df28 beq 0x2d7e0 | goto label_2;
| }
0x0002df2c b 0x2cea4 | goto label_0;
| label_264:
0x0002df30 ldr r3, [pc, -0xcc] | r3 = fcn.00004ef0;
0x0002df34 cmp r1, r3 |
| if (r1 != r3) {
0x0002df38 ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002df3c moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002df40 streq r3, [r0, 0x1c0] | *((r0 + 0x1c0)) = r3;
| goto label_268;
| }
| if (r1 == r3) {
| label_268:
0x0002df44 beq 0x2d7e0 | goto label_2;
| }
0x0002df48 add r3, r3, 0xb | r3 += 0xb;
0x0002df4c cmp r1, r3 |
| if (r1 == r3) {
0x0002df50 beq 0x2eae8 | goto label_269;
| }
0x0002df54 sub r3, r3, 0x13 | r3 -= 0x13;
0x0002df58 cmp r1, r3 |
| if (r1 != r3) {
0x0002df5c ldreq r3, [r5] | r3 = *(r5);
| }
| if (r1 != r3) {
0x0002df60 moveq r5, 0 | r5 = 0;
| }
| if (r1 == r3) {
0x0002df64 streq r3, [r0, 0x624] | *((r0 + 0x624)) = r3;
| goto label_270;
| }
| if (r1 == r3) {
| label_270:
0x0002df68 beq 0x2d7e0 | goto label_2;
| }
0x0002df6c b 0x2cea4 | goto label_0;
| label_262:
0x0002df70 ldr r3, [pc, -0x108] | r3 = *(0x2de6c);
0x0002df74 cmp r1, r3 |
| if (r1 == r3) {
0x0002df78 beq 0x2e478 | goto label_271;
| }
| if (r1 > r3) {
0x0002df7c bhi 0x2dfd4 | goto label_272;
| }
0x0002df80 sub r3, r3, 4 | r3 -= 4;
0x0002df84 cmp r1, r3 |
| if (r1 == r3) {
0x0002df88 beq 0x2eb48 | goto label_273;
| }
0x0002df8c add r3, r3, 1 | r3++;
0x0002df90 cmp r1, r3 |
| if (r1 == r3) {
0x0002df94 beq 0x2f10c | goto label_274;
| }
0x0002df98 sub r3, r3, 2 | r3 -= 2;
0x0002df9c cmp r1, r3 |
| if (r1 != r3) {
0x0002dfa0 bne 0x2cea4 | goto label_0;
| }
0x0002dfa4 add r3, r5, 7 | r3 = r5 + 7;
0x0002dfa8 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0002dfac ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0002dfb0 mvn r0, 0 | r0 = ~0;
0x0002dfb4 mvn r1, 0 | r1 = ~0;
0x0002dfb8 cmp r2, r0 |
0x0002dfbc sbcs r1, r3, r1 | __asm ("sbcs r1, r3, r1");
| if (r2 >= r0) {
0x0002dfc0 movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < r0) {
0x0002dfc4 addge r4, r4, 0x200 | r4 += 0x200;
| }
0x0002dfc8 strdge r2, r3, [r4] | __asm ("strdge r2, r3, [r4]");
| if (r2 < r0) {
0x0002dfcc movge r5, 0 | r5 = 0;
| }
0x0002dfd0 b 0x2d7e0 | goto label_2;
| label_272:
0x0002dfd4 ldr r3, [pc, -0x168] | r3 = *(0x0002de74);
0x0002dfd8 cmp r1, r3 |
| if (r1 == r3) {
0x0002dfdc beq 0x2e9a4 | goto label_275;
| }
0x0002dfe0 add r3, r3, 0x7c | r3 += 0x7c;
0x0002dfe4 cmp r1, r3 |
| if (r1 == r3) {
0x0002dfe8 beq 0x2e278 | goto label_276;
| }
0x0002dfec sub r3, r3, 0x7d | r3 -= 0x7d;
0x0002dff0 cmp r1, r3 |
| if (r1 != r3) {
0x0002dff4 bne 0x2cea4 | goto label_0;
| }
0x0002dff8 add r3, r5, 7 | r3 = r5 + 7;
0x0002dffc bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0002e000 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0002e004 cmp r2, 0 |
0x0002e008 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 >= 0) {
0x0002e00c movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < 0) {
0x0002e010 addge r4, r0, 0x210 | r4 = r0 + 0x210;
| }
0x0002e014 strdge r2, r3, [r4] | __asm ("strdge r2, r3, [r4]");
| if (r2 < 0) {
0x0002e018 movge r5, 0 | r5 = 0;
| }
0x0002e01c b 0x2d7e0 | goto label_2;
| label_60:
0x0002e020 ldr r3, [r2] | r3 = *(r2);
0x0002e024 cmn r3, 1 |
| if (r3 < 1) {
0x0002e028 strge r3, [r0, 0x494] | *((r0 + 0x494)) = r3;
| }
| if (r3 < 1) {
0x0002e02c movge r5, 0 | r5 = 0;
| }
| if (r3 >= 1) {
0x0002e030 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002e034 b 0x2d7e0 | goto label_2;
| label_63:
0x0002e038 ldr r3, [r2] | r3 = *(r2);
0x0002e03c mov r5, 0 | r5 = 0;
0x0002e040 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e044 movne r3, 1 | r3 = 1;
| }
0x0002e048 strb r3, [r0, 0x4ed] | *((r0 + 0x4ed)) = r3;
0x0002e04c b 0x2d7e0 | goto label_2;
| label_237:
0x0002e050 ldr r1, [r2] | r1 = *(r2);
0x0002e054 add r0, r0, 0x580 | r0 += 0x580;
0x0002e058 b 0x2da00 | goto label_4;
| label_247:
0x0002e05c bl 0x37d68 | r0 = Curl_ssl_tls13_ciphersuites ();
0x0002e060 cmp r0, 0 |
| if (r0 == 0) {
0x0002e064 ldrne r1, [r5] | r1 = *(r5);
| }
| if (r0 != 0) {
0x0002e068 addne r0, r4, 0x590 | r0 = r4 + 0x590;
| goto label_277;
| }
| if (r0 == 0) {
| label_277:
0x0002e06c beq 0x2dcd8 | goto label_6;
| }
| label_10:
0x0002e070 add r0, r0, 4 | r0 += 4;
0x0002e074 b 0x2dc70 | goto label_5;
| label_164:
0x0002e078 ldr r1, [r2] | r1 = *(r2);
0x0002e07c add r0, r0, 0x590 | r0 += 0x590;
0x0002e080 b 0x2da00 | goto label_4;
| label_165:
0x0002e084 ldr r1, [r2] | r1 = *(r2);
0x0002e088 add r0, r0, 0x590 | r0 += 0x590;
0x0002e08c b 0x2d6d8 | goto label_1;
| label_57:
0x0002e090 ldr r3, [r2] | r3 = *(r2);
0x0002e094 cmp r3, 0 |
| if (r3 < 0) {
0x0002e098 strge r3, [r0, 0x640] | *((r0 + 0x640)) = r3;
| }
| if (r3 < 0) {
0x0002e09c movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002e0a0 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002e0a4 b 0x2d7e0 | goto label_2;
| label_55:
0x0002e0a8 ldr r3, [r2] | r3 = *(r2);
0x0002e0ac mov r5, 0 | r5 = 0;
0x0002e0b0 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e0b4 movne r3, 1 | r3 = 1;
| }
0x0002e0b8 strb r3, [r0, 0x4da] | *((r0 + 0x4da)) = r3;
0x0002e0bc b 0x2d7e0 | goto label_2;
| label_31:
0x0002e0c0 ldr r3, [r2] | r3 = *(r2);
0x0002e0c4 mov r5, 0 | r5 = 0;
0x0002e0c8 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e0cc movne r3, 1 | r3 = 1;
| }
0x0002e0d0 strb r3, [r0, 0x4d8] | *((r0 + 0x4d8)) = r3;
0x0002e0d4 b 0x2d7e0 | goto label_2;
| label_35:
0x0002e0d8 cmp r5, 0 |
| if (r5 == 0) {
0x0002e0dc movne r3, 1 | r3 = 1;
| }
| if (r5 != 0) {
0x0002e0e0 moveq r3, 0 | r3 = 0;
| }
0x0002e0e4 strb r3, [r0, 0x4c7] | *((r0 + 0x4c7)) = r3;
0x0002e0e8 ldr r3, [r0, 0x6d0] | r3 = *((r0 + 0x6d0));
| if (r5 == 0) {
0x0002e0ec movne r5, 0 | r5 = 0;
| }
| if (r5 == 0) {
0x0002e0f0 orrne r3, r3, 0x10 | r3 |= 0x10;
| }
0x0002e0f4 biceq r3, r3, 0x10 | __asm ("biceq r3, r3, 0x10");
| if (r5 == 0) {
0x0002e0f8 strne r3, [r0, 0x6d0] | *((r0 + 0x6d0)) = r3;
| }
| if (r5 != 0) {
0x0002e0fc streq r3, [r0, 0x6d0] | *((r0 + 0x6d0)) = r3;
| }
0x0002e100 b 0x2d7e0 | goto label_2;
| label_36:
0x0002e104 adds r5, r5, 0 | r5 += 0;
| if (r5 == r5) {
0x0002e108 movne r5, 1 | r5 = 1;
| }
0x0002e10c strb r5, [r0, 0x4d0] | *((r0 + 0x4d0)) = r5;
0x0002e110 mov r5, 0 | r5 = 0;
0x0002e114 b 0x2d7e0 | goto label_2;
| label_21:
0x0002e118 ldr r3, [r2] | r3 = *(r2);
0x0002e11c mov r5, 0 | r5 = 0;
0x0002e120 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e124 movne r3, 1 | r3 = 1;
| }
0x0002e128 strb r3, [r0, 0x4c8] | *((r0 + 0x4c8)) = r3;
0x0002e12c b 0x2d7e0 | goto label_2;
| label_119:
0x0002e130 ldr r3, [r2] | r3 = *(r2);
0x0002e134 mov r5, 0 | r5 = 0;
0x0002e138 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e13c movne r3, 1 | r3 = 1;
| }
0x0002e140 strb r3, [r0, 0x4c9] | *((r0 + 0x4c9)) = r3;
0x0002e144 b 0x2d7e0 | goto label_2;
| label_42:
0x0002e148 mov r3, 1 | r3 = 1;
0x0002e14c str r3, [r4, 0x3d0] | *((r4 + 0x3d0)) = r3;
0x0002e150 mov r5, 0 | r5 = 0;
0x0002e154 b 0x2d7e0 | goto label_2;
| label_19:
0x0002e158 ldr r3, [r2] | r3 = *(r2);
0x0002e15c mov r5, 0 | r5 = 0;
0x0002e160 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e164 movne r3, 1 | r3 = 1;
| }
0x0002e168 strb r3, [r0, 0x4c1] | *((r0 + 0x4c1)) = r3;
0x0002e16c b 0x2d7e0 | goto label_2;
| label_68:
0x0002e170 ldr r5, [r2] | r5 = *(r2);
0x0002e174 cmp r5, 1 |
| if (r5 != 1) {
0x0002e178 streq r5, [r0, 0x4b4] | *((r0 + 0x4b4)) = r5;
| }
| if (r5 == 1) {
0x0002e17c moveq r5, 0 | r5 = 0;
| goto label_278;
| }
| if (r5 == 1) {
| label_278:
0x0002e180 beq 0x2d7e0 | goto label_2;
| }
0x0002e184 cmp r5, 2 |
| if (r5 != 2) {
0x0002e188 streq r5, [r0, 0x4b4] | *((r0 + 0x4b4)) = r5;
| }
| if (r5 == 2) {
0x0002e18c moveq r5, 0 | r5 = 0;
| goto label_279;
| }
| if (r5 == 2) {
| label_279:
0x0002e190 beq 0x2d7e0 | goto label_2;
| }
0x0002e194 cmp r5, 0 |
| if (r5 != 0) {
0x0002e198 streq r5, [r0, 0x4b4] | *((r0 + 0x4b4)) = r5;
| }
| if (r5 == 0) {
0x0002e19c movne r5, 0x30 | r5 = 0x30;
| }
0x0002e1a0 b 0x2d7e0 | goto label_2;
| label_72:
0x0002e1a4 ldr r1, [r2] | r1 = *(r2);
0x0002e1a8 ldr r2, [pc, -0x318] | r2 = *(0x0002de98);
0x0002e1ac cmp r1, r2 |
| if (r1 <= r2) {
0x0002e1b0 movhi r5, 0x2b | r5 = 0x2b;
| }
| if (r1 > r2) {
0x0002e1b4 movls r2, 0x3e8 | r2 = 0x3e8;
| }
| if (r1 > r2) {
0x0002e1b8 mulls r3, r2, r1 | r3 = r2 * r1;
| }
| if (r1 > r2) {
0x0002e1bc movls r5, 0 | r5 = 0;
| }
| if (r1 > r2) {
0x0002e1c0 strls r3, [r0, 0x1f0] | *((r0 + 0x1f0)) = r3;
| }
0x0002e1c4 b 0x2d7e0 | goto label_2;
| label_121:
0x0002e1c8 ldr r3, [r2] | r3 = *(r2);
0x0002e1cc mov r5, 0 | r5 = 0;
0x0002e1d0 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e1d4 movne r3, 1 | r3 = 1;
| }
0x0002e1d8 strb r3, [r0, 0x1f8] | *((r0 + 0x1f8)) = r3;
0x0002e1dc b 0x2d7e0 | goto label_2;
| label_97:
0x0002e1e0 ldr r3, [r5] | r3 = *(r5);
0x0002e1e4 cmp r3, 0 |
| if (r3 < 0) {
0x0002e1e8 strge r3, [r0, 0x1f4] | *((r0 + 0x1f4)) = r3;
| }
| if (r3 < 0) {
0x0002e1ec movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002e1f0 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002e1f4 b 0x2d7e0 | goto label_2;
| label_39:
0x0002e1f8 ldr r3, [r2] | r3 = *(r2);
0x0002e1fc mov r5, 0 | r5 = 0;
0x0002e200 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e204 movne r3, 1 | r3 = 1;
| }
0x0002e208 strb r3, [r0, 0x4c5] | *((r0 + 0x4c5)) = r3;
0x0002e20c b 0x2d7e0 | goto label_2;
| label_80:
0x0002e210 cmp r0, 3 |
| if (r0 > 3) {
0x0002e214 strls r0, [r4, 0x4b0] | *((r4 + 0x4b0)) = r0;
| }
| if (r0 > 3) {
0x0002e218 movls r5, 0 | r5 = 0;
| }
| if (r0 <= 3) {
0x0002e21c movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002e220 b 0x2d7e0 | goto label_2;
| label_43:
0x0002e224 ldr r3, [r2] | r3 = *(r2);
0x0002e228 cmp r3, 2 |
| if (r3 > 2) {
0x0002e22c strls r3, [r0, 0x4d4] | *((r0 + 0x4d4)) = r3;
| }
| if (r3 > 2) {
0x0002e230 movls r5, 0 | r5 = 0;
| }
| if (r3 <= 2) {
0x0002e234 movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002e238 b 0x2d7e0 | goto label_2;
| label_184:
0x0002e23c ldr r1, [r2] | r1 = *(r2);
0x0002e240 add r0, r0, 0x550 | r0 += 0x550;
0x0002e244 b 0x2d6d8 | goto label_1;
| label_37:
0x0002e248 ldr r3, [r2] | r3 = *(r2);
0x0002e24c mov r5, 0 | r5 = 0;
0x0002e250 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e254 movne r3, 1 | r3 = 1;
| }
0x0002e258 strb r3, [r0, 0x4c3] | *((r0 + 0x4c3)) = r3;
0x0002e25c b 0x2d7e0 | goto label_2;
| label_33:
0x0002e260 ldr r3, [r2] | r3 = *(r2);
0x0002e264 cmp r3, 3 |
| if (r3 > 3) {
0x0002e268 strls r3, [r0, 0x3c8] | *((r0 + 0x3c8)) = r3;
| }
| if (r3 > 3) {
0x0002e26c movls r5, 0 | r5 = 0;
| }
| if (r3 <= 3) {
0x0002e270 movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002e274 b 0x2d7e0 | goto label_2;
| label_276:
0x0002e278 add r3, r5, 7 | r3 = r5 + 7;
0x0002e27c bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0002e280 ldr r3, [r3] | r3 = *(r3);
0x0002e284 mov r5, 0 | r5 = 0;
0x0002e288 str r3, [r0, 0x3cc] | *((r0 + 0x3cc)) = r3;
0x0002e28c b 0x2d7e0 | goto label_2;
| label_124:
0x0002e290 add r4, r0, 0x430 | r4 = r0 + 0x430;
0x0002e294 add r4, r4, 4 | r4 += 4;
| label_34:
0x0002e298 ldr r3, [r5] | r3 = *(r5);
0x0002e29c lsl r2, r3, 0x10 | r2 = r3 << 0x10;
0x0002e2a0 lsr r3, r3, 0x10 | r3 >>= 0x10;
0x0002e2a4 lsr r2, r2, 0x10 | r2 >>= 0x10;
0x0002e2a8 lsl r3, r3, 0x10 | r3 <<= 0x10;
0x0002e2ac cmp r2, 7 |
0x0002e2b0 cmpls r3, 0x80000 | __asm ("cmpls r3, aav.0x000000ff");
| if (r2 < 7) {
0x0002e2b4 movhs r5, 1 | r5 = 1;
| }
| if (r2 >= 7) {
0x0002e2b8 movlo r5, 0 | r5 = 0;
| }
| if (r2 < 7) {
0x0002e2bc movhs r5, 0x2b | r5 = 0x2b;
| }
| if (r2 >= 7) {
0x0002e2c0 stmlo r4, {r2, r3} | *(r4) = r2;
| *((r4 + 4)) = r3;
| }
0x0002e2c4 b 0x2d7e0 | goto label_2;
| label_47:
0x0002e2c8 ldr r3, [r2] | r3 = *(r2);
0x0002e2cc mov r5, 0 | r5 = 0;
0x0002e2d0 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e2d4 movne r3, 1 | r3 = 1;
| }
0x0002e2d8 strb r3, [r0, 0x4cf] | *((r0 + 0x4cf)) = r3;
0x0002e2dc b 0x2d7e0 | goto label_2;
| label_181:
0x0002e2e0 add r0, r4, 0x520 | r0 = r4 + 0x520;
0x0002e2e4 b 0x2da00 | goto label_4;
| label_98:
0x0002e2e8 ldr r3, [r5] | r3 = *(r5);
0x0002e2ec mov r5, 0 | r5 = 0;
0x0002e2f0 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e2f4 movne r3, 1 | r3 = 1;
| }
0x0002e2f8 strb r3, [r0, 0x4cb] | *((r0 + 0x4cb)) = r3;
0x0002e2fc b 0x2d7e0 | goto label_2;
| label_44:
0x0002e300 ldr r3, [r2] | r3 = *(r2);
0x0002e304 mov r5, 0 | r5 = 0;
0x0002e308 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e30c movne r3, 1 | r3 = 1;
| }
0x0002e310 strb r3, [r0, 0x4ca] | *((r0 + 0x4ca)) = r3;
0x0002e314 b 0x2d7e0 | goto label_2;
| label_50:
0x0002e318 ldr r3, [r2] | r3 = *(r2);
0x0002e31c cmn r3, 1 |
| if (r3 < 1) {
0x0002e320 strge r3, [r0, 0x164] | *((r0 + 0x164)) = r3;
| }
| if (r3 < 1) {
0x0002e324 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 1) {
0x0002e328 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002e32c b 0x2d7e0 | goto label_2;
| label_190:
0x0002e330 ldr r6, [r2] | r6 = *(r2);
0x0002e334 cmp r6, 0 |
| if (r6 != 0) {
0x0002e338 beq 0x2e358 |
0x0002e33c add r5, r0, 0x180 | r5 = r0 + 0x180;
0x0002e340 ldrd r2, r3, [r5, -8] | __asm ("ldrd r2, r3, [r5, -8]");
0x0002e344 mvn r1, 0 | r1 = ~0;
0x0002e348 mvn r0, 0 | r0 = ~0;
0x0002e34c cmp r3, r1 |
0x0002e350 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| if (r3 != r1) {
0x0002e354 bne 0x2e380 | goto label_280;
| }
| }
0x0002e358 add r0, r4, 0x5f0 | r0 = r4 + 0x5f0;
0x0002e35c mov r1, r6 | r1 = r6;
0x0002e360 add r0, r0, 8 | r0 += 8;
0x0002e364 bl 0x2cdb8 | r0 = Curl_setstropt ();
0x0002e368 mov r5, r0 | r5 = r0;
| do {
| label_8:
0x0002e36c ldr r3, [r4, 0x5f8] | r3 = *((r4 + 0x5f8));
0x0002e370 str r3, [r4, 0x170] | *((r4 + 0x170)) = r3;
0x0002e374 mov r3, 2 | r3 = 2;
0x0002e378 str r3, [r4, 0x3d0] | *((r4 + 0x3d0)) = r3;
0x0002e37c b 0x2d7e0 | goto label_2;
| label_280:
0x0002e380 mov r1, 0 | r1 = 0;
0x0002e384 mvn r0, 0 | r0 = ~0;
0x0002e388 cmp r3, r1 |
0x0002e38c cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| if (r3 < r1) {
0x0002e390 bls 0x2e39c | goto label_281;
| }
| label_7:
0x0002e394 mov r5, 0x1b | r5 = 0x1b;
0x0002e398 b 0x2e36c |
| } while (1);
| label_281:
0x0002e39c add r0, r4, 0x5f0 | r0 = r4 + 0x5f0;
0x0002e3a0 mov r1, 0 | r1 = 0;
0x0002e3a4 add r0, r0, 8 | r0 += 8;
0x0002e3a8 bl 0x2cdb8 | Curl_setstropt ();
0x0002e3ac ldr r3, [pc, -0x53c] |
0x0002e3b0 ldrd r0, r1, [r5, -8] | __asm ("ldrd r0, r1, [r5, -8]");
0x0002e3b4 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002e3b8 orrs r2, r0, r1 | r2 = r0 | r1;
| if (r2 != r0) {
0x0002e3bc moveq r0, 1 | r0 = 1;
| }
0x0002e3c0 ldr r3, [r3] | r3 = *(0x2de74);
0x0002e3c4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0002e3c8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0002e3cc beq 0x2e394 | goto label_7;
| }
0x0002e3d0 ldrd r2, r3, [r5, -8] | __asm ("ldrd r2, r3, [r5, -8]");
0x0002e3d4 orrs r1, r2, r3 | r1 = r2 | r3;
| if (r1 != r2) {
0x0002e3d8 beq 0x2e3e4 |
0x0002e3dc mov r1, r6 | r1 = r6;
0x0002e3e0 bl 0x4f5c | memcpy (r0, r1, r2);
| }
0x0002e3e4 str r7, [r4, 0x5f8] | *((r4 + 0x5f8)) = r7;
0x0002e3e8 mov r5, 0 | r5 = 0;
0x0002e3ec b 0x2e36c | goto label_8;
| label_15:
0x0002e3f0 ldr r3, [r2] | r3 = *(r2);
0x0002e3f4 add r0, r0, 0x5f0 | r0 += 0x5f0;
0x0002e3f8 str r3, [r0, -0x480] | *((r0 - 0x480)) = r3;
0x0002e3fc mov r1, 0 | r1 = 0;
0x0002e400 add r0, r0, 8 | r0 += 8;
0x0002e404 bl 0x2cdb8 | Curl_setstropt ();
0x0002e408 mov r3, 2 | r3 = 2;
0x0002e40c str r3, [r4, 0x3d0] | *((r4 + 0x3d0)) = r3;
0x0002e410 mov r5, 0 | r5 = 0;
0x0002e414 b 0x2d7e0 | goto label_2;
| label_45:
0x0002e418 ldr r3, [r2] | r3 = *(r2);
0x0002e41c cmn r3, 1 |
0x0002e420 mov r6, r3 | r6 = r3;
0x0002e424 asr r7, r3, 0x1f | r7 = r3 >> 0x1f;
| if (r3 < 1) {
0x0002e428 movlt r5, 0x2b | r5 = 0x2b;
| goto label_282;
| }
| if (r3 < 1) {
| label_282:
0x0002e42c blt 0x2d7e0 | goto label_2;
| }
0x0002e430 add r5, r0, 0x180 | r5 = r0 + 0x180;
0x0002e434 ldrd r2, r3, [r5, -8] | __asm ("ldrd r2, r3, [r5, -8]");
0x0002e438 cmp r2, r6 |
0x0002e43c sbcs r3, r3, r7 | __asm ("sbcs r3, r3, r7");
| if (r2 < r6) {
0x0002e440 bge 0x2e46c |
0x0002e444 ldr r2, [r0, 0x170] | r2 = *((r0 + 0x170));
0x0002e448 ldr r3, [r0, 0x5f8] | r3 = *((r0 + 0x5f8));
0x0002e44c cmp r2, r3 |
| if (r2 != r3) {
0x0002e450 bne 0x2e46c | goto label_283;
| }
0x0002e454 add r0, r0, 0x5f0 | r0 += 0x5f0;
0x0002e458 mov r1, 0 | r1 = 0;
0x0002e45c add r0, r0, 8 | r0 += 8;
0x0002e460 bl 0x2cdb8 | Curl_setstropt ();
0x0002e464 mov r3, 0 | r3 = 0;
0x0002e468 str r3, [r4, 0x170] | *((r4 + 0x170)) = r3;
| }
| label_283:
0x0002e46c strd r6, r7, [r5, -8] | __asm ("strd r6, r7, [r5, -8]");
0x0002e470 mov r5, 0 | r5 = 0;
0x0002e474 b 0x2d7e0 | goto label_2;
| label_271:
0x0002e478 add r3, r5, 7 | r3 = r5 + 7;
0x0002e47c bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0002e480 ldrd r6, r7, [r3] | __asm ("ldrd r6, r7, [r3]");
0x0002e484 mvn r2, 0 | r2 = ~0;
0x0002e488 mvn r3, 0 | r3 = ~0;
0x0002e48c cmp r6, r2 |
0x0002e490 sbcs r3, r7, r3 | __asm ("sbcs r3, r7, r3");
| if (r6 < r2) {
0x0002e494 movlt r5, 0x2b | r5 = 0x2b;
| goto label_284;
| }
| if (r6 < r2) {
| label_284:
0x0002e498 blt 0x2d7e0 | goto label_2;
| }
0x0002e49c add r5, r0, 0x180 | r5 = r0 + 0x180;
0x0002e4a0 ldrd r2, r3, [r5, -8] | __asm ("ldrd r2, r3, [r5, -8]");
0x0002e4a4 cmp r2, r6 |
0x0002e4a8 sbcs r3, r3, r7 | __asm ("sbcs r3, r3, r7");
| if (r2 < r6) {
0x0002e4ac bge 0x2e4d8 |
0x0002e4b0 ldr r2, [r0, 0x170] | r2 = *((r0 + 0x170));
0x0002e4b4 ldr r3, [r0, 0x5f8] | r3 = *((r0 + 0x5f8));
0x0002e4b8 cmp r2, r3 |
| if (r2 != r3) {
0x0002e4bc bne 0x2e4d8 | goto label_285;
| }
0x0002e4c0 add r0, r0, 0x5f0 | r0 += 0x5f0;
0x0002e4c4 mov r1, 0 | r1 = 0;
0x0002e4c8 add r0, r0, 8 | r0 += 8;
0x0002e4cc bl 0x2cdb8 | Curl_setstropt ();
0x0002e4d0 mov r3, 0 | r3 = 0;
0x0002e4d4 str r3, [r4, 0x170] | *((r4 + 0x170)) = r3;
| }
| label_285:
0x0002e4d8 strd r6, r7, [r5, -8] | __asm ("strd r6, r7, [r5, -8]");
0x0002e4dc mov r5, 0 | r5 = 0;
0x0002e4e0 b 0x2d7e0 | goto label_2;
| label_151:
0x0002e4e4 ldr r3, [r2] | r3 = *(r2);
0x0002e4e8 mov r5, 0 | r5 = 0;
0x0002e4ec str r3, [r0, 0x230] | *((r0 + 0x230)) = r3;
0x0002e4f0 mov r3, 3 | r3 = 3;
0x0002e4f4 str r3, [r0, 0x3d0] | *((r0 + 0x3d0)) = r3;
0x0002e4f8 strb r5, [r0, 0x4d0] | *((r0 + 0x4d0)) = r5;
0x0002e4fc b 0x2d7e0 | goto label_2;
| label_210:
0x0002e500 ldr r1, [r5] | r1 = *(r5);
0x0002e504 mov r2, 0 | r2 = 0;
0x0002e508 add r0, r0, 0x238 | r0 += 0x238;
0x0002e50c bl 0x2c1a8 | r0 = Curl_mime_set_subparts ();
0x0002e510 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0002e514 moveq r3, 4 | r3 = 4;
| }
| if (r5 != r0) {
0x0002e518 streq r3, [r4, 0x3d0] | *((r4 + 0x3d0)) = r3;
| }
| if (r5 != r0) {
0x0002e51c strbeq r5, [r4, 0x4d0] | *((r4 + 0x4d0)) = r5;
| }
0x0002e520 b 0x2d7e0 | goto label_2;
| label_149:
0x0002e524 ldrb r3, [r0, 0x684] | r3 = *((r0 + 0x684));
0x0002e528 cmp r3, 0 |
| if (r3 != 0) {
0x0002e52c beq 0x2e550 |
0x0002e530 ldr r3, [pc, -0x6a8] |
0x0002e534 ldr r0, [r0, 0x680] | r0 = *((r0 + 0x680));
0x0002e538 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002e53c ldr r3, [r3] | r3 = *(0x2de8c);
0x0002e540 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002e544 mov r3, 0 | r3 = 0;
0x0002e548 str r3, [r4, 0x680] | *((r4 + 0x680)) = r3;
0x0002e54c strb r3, [r4, 0x684] | *((r4 + 0x684)) = r3;
| }
0x0002e550 add r0, r4, 0x560 | r0 = r4 + 0x560;
0x0002e554 ldr r1, [r5] | r1 = *(r5);
0x0002e558 add r0, r0, 8 | r0 += 8;
0x0002e55c bl 0x2cdb8 | Curl_setstropt ();
0x0002e560 ldr r3, [r4, 0x568] | r3 = *((r4 + 0x568));
0x0002e564 str r3, [r4, 0x680] | *((r4 + 0x680)) = r3;
0x0002e568 mov r5, r0 | r5 = r0;
0x0002e56c b 0x2d7e0 | goto label_2;
| label_147:
0x0002e570 ldr r1, [r2] | r1 = *(r2);
0x0002e574 add r0, r0, 0x5a0 | r0 += 0x5a0;
0x0002e578 b 0x2dc70 | goto label_5;
| label_150:
0x0002e57c ldr r3, [r2] | r3 = *(r2);
0x0002e580 mov r5, 0 | r5 = 0;
0x0002e584 str r3, [r0, 0x228] | *((r0 + 0x228)) = r3;
0x0002e588 b 0x2d7e0 | goto label_2;
| label_223:
0x0002e58c ldr r3, [r2] | r3 = *(r2);
0x0002e590 mov r5, 0 | r5 = 0;
0x0002e594 str r3, [r0, 0x22c] | *((r0 + 0x22c)) = r3;
0x0002e598 b 0x2d7e0 | goto label_2;
| label_113:
0x0002e59c ldrb r3, [r2] | r3 = *(r2);
0x0002e5a0 mov r5, 0 | r5 = 0;
0x0002e5a4 and r3, r3, 1 | r3 &= 1;
0x0002e5a8 strb r3, [r0, 0x3a0] | *((r0 + 0x3a0)) = r3;
0x0002e5ac b 0x2d7e0 | goto label_2;
| label_153:
0x0002e5b0 ldr r1, [r2] | r1 = *(r2);
0x0002e5b4 cmp r1, 0 |
| if (r1 == 0) {
0x0002e5b8 bne 0x2e5c4 |
| label_9:
0x0002e5bc mov r5, 0 | r5 = 0;
0x0002e5c0 b 0x2d7e0 | goto label_2;
| }
0x0002e5c4 ldr r0, [r0, 0x688] | r0 = *((r0 + 0x688));
0x0002e5c8 bl 0x543c | r0 = fcn_0000543c ();
0x0002e5cc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0002e5d0 strne r5, [r4, 0x688] | *((r4 + 0x688)) = r5;
| }
| if (r5 != r0) {
0x0002e5d4 movne r5, 0 | r5 = 0;
| goto label_286;
| }
| if (r5 != r0) {
| label_286:
0x0002e5d8 bne 0x2d7e0 | goto label_2;
| }
0x0002e5dc ldr r0, [r4, 0x688] | r0 = *((r4 + 0x688));
0x0002e5e0 bl 0x54fc | fcn_000054fc ();
0x0002e5e4 str r5, [r4, 0x688] | *((r4 + 0x688)) = r5;
0x0002e5e8 mov r5, 0x1b | r5 = 0x1b;
0x0002e5ec b 0x2d7e0 | goto label_2;
| label_159:
0x0002e5f0 add r0, r0, 0x510 | r0 += 0x510;
0x0002e5f4 ldr r1, [r2] | r1 = *(r2);
0x0002e5f8 add r0, r0, 0xc | r0 += 0xc;
0x0002e5fc bl 0x2cdb8 | Curl_setstropt ();
0x0002e600 ldrb r3, [r4, 0x3a1] | r3 = *((r4 + 0x3a1));
0x0002e604 ldr r2, [r4, 0x690] | r2 = *((r4 + 0x690));
0x0002e608 mov r1, 0 | r1 = 0;
0x0002e60c mov r5, r0 | r5 = r0;
0x0002e610 mov r0, r4 | r0 = r4;
0x0002e614 bl 0xb268 | r0 = Curl_cookie_init ();
0x0002e618 cmp r0, 0 |
| if (r0 != 0) {
0x0002e61c moveq r5, 0x1b | r5 = 0x1b;
| }
0x0002e620 str r0, [r4, 0x690] | *((r4 + 0x690)) = r0;
0x0002e624 b 0x2d7e0 | goto label_2;
| label_188:
0x0002e628 ldr r6, [r2] | r6 = *(r2);
0x0002e62c cmp r6, 0 |
| if (r6 == 0) {
0x0002e630 beq 0x2e5bc | goto label_9;
| }
0x0002e634 ldr r1, [pc, -0x7c0] | r1 = *(0x2de78);
0x0002e638 mov r0, r6 | r0 = r6;
0x0002e63c add r1, pc, r1 | r1 = pc + r1;
0x0002e640 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0002e644 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0002e648 beq 0x2e678 |
0x0002e64c mov r2, 2 | r2 = 2;
0x0002e650 mov r1, r2 | r1 = r2;
0x0002e654 mov r0, r4 | r0 = r4;
0x0002e658 bl 0x21464 | Curl_share_lock ();
0x0002e65c ldr r0, [r4, 0x690] | r0 = *((r4 + 0x690));
0x0002e660 bl 0xb160 | Curl_cookie_clearall ();
0x0002e664 mov r1, 2 | r1 = 2;
0x0002e668 mov r0, r4 | r0 = r4;
0x0002e66c bl 0x214ac | Curl_share_unlock ();
0x0002e670 mov r5, 0 | r5 = 0;
0x0002e674 b 0x2d7e0 | goto label_2;
| }
0x0002e678 ldr r1, [pc, -0x800] | r1 = *(0x0002de80);
0x0002e67c mov r0, r6 | r0 = r6;
0x0002e680 add r1, pc, r1 | r1 = pc + r1;
0x0002e684 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0002e688 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x0002e68c beq 0x2e6b8 |
0x0002e690 mov r2, 2 | r2 = 2;
0x0002e694 mov r1, r2 | r1 = r2;
0x0002e698 mov r0, r4 | r0 = r4;
0x0002e69c bl 0x21464 | Curl_share_lock ();
0x0002e6a0 ldr r0, [r4, 0x690] | r0 = *((r4 + 0x690));
0x0002e6a4 bl 0xb194 | Curl_cookie_clearsess ();
0x0002e6a8 mov r1, 2 | r1 = 2;
0x0002e6ac mov r0, r4 | r0 = r4;
0x0002e6b0 bl 0x214ac | Curl_share_unlock ();
0x0002e6b4 b 0x2d7e0 | goto label_2;
| }
0x0002e6b8 ldr r1, [pc, -0x83c] | r1 = *(0x2de80);
0x0002e6bc mov r0, r6 | r0 = r6;
0x0002e6c0 add r1, pc, r1 | r1 = pc + r1;
0x0002e6c4 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0002e6c8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0002e6cc beq 0x2e6e4 |
0x0002e6d0 mov r1, r8 | r1 = r8;
0x0002e6d4 mov r0, r4 | r0 = r4;
0x0002e6d8 bl 0xb64c | Curl_flush_cookies ();
0x0002e6dc mov r5, r8 | r5 = r8;
0x0002e6e0 b 0x2d7e0 | goto label_2;
| }
0x0002e6e4 ldr r1, [pc, -0x864] | r1 = *(0x0002de88);
0x0002e6e8 mov r0, r6 | r0 = r6;
0x0002e6ec add r1, pc, r1 | r1 = pc + r1;
0x0002e6f0 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x0002e6f4 cmp r0, 0 |
| if (r0 != 0) {
0x0002e6f8 beq 0x2e708 |
0x0002e6fc mov r0, r4 | r0 = r4;
0x0002e700 bl 0xb4e4 | Curl_cookie_loadfiles ();
0x0002e704 b 0x2d7e0 | goto label_2;
| }
0x0002e708 ldr r2, [r4, 0x690] | r2 = *((r4 + 0x690));
0x0002e70c cmp r2, 0 |
| if (r2 == 0) {
0x0002e710 bne 0x2e728 |
0x0002e714 mov r3, 1 | r3 = 1;
0x0002e718 mov r1, r2 | r1 = r2;
0x0002e71c mov r0, r4 | r0 = r4;
0x0002e720 bl 0xb268 | Curl_cookie_init ();
0x0002e724 str r0, [r4, 0x690] | *((r4 + 0x690)) = r0;
| }
0x0002e728 ldr r3, [pc, -0x8a4] |
0x0002e72c mov r0, r6 | r0 = r6;
0x0002e730 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002e734 ldr r3, [r3] | r3 = *(0x2de88);
0x0002e738 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002e73c ldr r3, [pc, -0x8b4] | r3 = *(0x2de8c);
0x0002e740 ldr r6, [r7, r3] | r6 = *((r7 + r3));
0x0002e744 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0002e748 beq 0x2e758 |
0x0002e74c ldr r3, [r4, 0x690] | r3 = *((r4 + 0x690));
0x0002e750 cmp r3, 0 |
| if (r3 != 0) {
0x0002e754 bne 0x2e76c | goto label_287;
| }
| }
0x0002e758 mov r0, r5 | r0 = r5;
0x0002e75c ldr r3, [r6] | r3 = *(r6);
0x0002e760 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002e764 mov r5, 0x1b | r5 = 0x1b;
0x0002e768 b 0x2d7e0 | goto label_2;
| label_287:
0x0002e76c mov r2, 2 | r2 = 2;
0x0002e770 mov r1, r2 | r1 = r2;
0x0002e774 mov r0, r4 | r0 = r4;
0x0002e778 bl 0x21464 | Curl_share_lock ();
0x0002e77c ldr r0, [pc, -0x8f0] | r0 = *(0x2de90);
0x0002e780 mov r2, 0xb | r2 = 0xb;
0x0002e784 mov r1, r5 | r1 = r5;
0x0002e788 add r0, pc, r0 | r0 = pc + r0;
0x0002e78c bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x0002e790 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0002e794 movne r3, 0 | r3 = 0;
| }
| if (r3 == r0) {
0x0002e798 addne r2, r5, 0xb | r2 = r5 + 0xb;
| }
| if (r3 == r0) {
0x0002e79c strne r3, [sp, 8] | var_8h = r3;
| }
| if (r3 == r0) {
0x0002e7a0 strne r3, [sp, 4] | var_4h = r3;
| }
| if (r3 == r0) {
0x0002e7a4 strne r2, [sp] | *(sp) = r2;
| }
| if (r3 != r0) {
0x0002e7a8 streq r3, [sp, 8] | var_8h = r3;
| }
| if (r3 != r0) {
0x0002e7ac streq r3, [sp, 4] | var_4h = r3;
| }
| if (r3 != r0) {
0x0002e7b0 streq r5, [sp] | *(sp) = r5;
| }
| if (r3 != r0) {
0x0002e7b4 moveq r2, r3 | r2 = r3;
| }
| if (r3 == r0) {
0x0002e7b8 movne r2, 1 | r2 = 1;
| }
0x0002e7bc ldr r1, [r4, 0x690] | r1 = *((r4 + 0x690));
0x0002e7c0 mov r0, r4 | r0 = r4;
0x0002e7c4 bl 0x9f7c | Curl_cookie_add ();
0x0002e7c8 mov r1, 2 | r1 = 2;
0x0002e7cc mov r0, r4 | r0 = r4;
0x0002e7d0 bl 0x214ac | Curl_share_unlock ();
0x0002e7d4 mov r0, r5 | r0 = r5;
0x0002e7d8 ldr r3, [r6] | r3 = *(r6);
0x0002e7dc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002e7e0 mov r5, 0 | r5 = 0;
0x0002e7e4 b 0x2d7e0 | goto label_2;
| label_58:
0x0002e7e8 ldr r3, [r2] | r3 = *(r2);
0x0002e7ec cmp r3, 0 |
| if (r3 == 0) {
0x0002e7f0 beq 0x2e5bc | goto label_9;
| }
0x0002e7f4 mov r5, 0 | r5 = 0;
0x0002e7f8 mov r3, 1 | r3 = 1;
0x0002e7fc str r3, [r0, 0x3d0] | *((r0 + 0x3d0)) = r3;
0x0002e800 strb r5, [r0, 0x4d1] | *((r0 + 0x4d1)) = r5;
0x0002e804 strb r5, [r0, 0x4d0] | *((r0 + 0x4d0)) = r5;
0x0002e808 b 0x2d7e0 | goto label_2;
| label_53:
0x0002e80c ldr r3, [r2] | r3 = *(r2);
0x0002e810 cmp r3, 0 |
| if (r3 < 0) {
0x0002e814 movlt r5, 0x2b | r5 = 0x2b;
| goto label_288;
| }
| if (r3 < 0) {
| label_288:
0x0002e818 blt 0x2d7e0 | goto label_2;
| }
0x0002e81c cmp r3, 2 |
| if (r3 > 2) {
0x0002e820 strle r3, [r0, 0x3d4] | *((r0 + 0x3d4)) = r3;
| }
| if (r3 > 2) {
0x0002e824 movle r5, 0 | r5 = 0;
| }
| if (r3 <= 2) {
0x0002e828 movgt r5, 1 | r5 = 1;
| }
0x0002e82c b 0x2d7e0 | goto label_2;
| label_71:
0x0002e830 ldr r5, [r2] | r5 = *(r2);
0x0002e834 cmp r5, 0 |
| if (r5 == 0) {
0x0002e838 streq r5, [r0, 0x154] | *((r0 + 0x154)) = r5;
| goto label_289;
| }
| if (r5 == 0) {
| label_289:
0x0002e83c beq 0x2d7e0 | goto label_2;
| }
0x0002e840 tst r5, 0x10 |
0x0002e844 lsr r2, r5, 4 | r2 = r5 >> 4;
0x0002e848 bicne r5, r5, 0x10 | __asm ("bicne r5, r5, 0x10");
0x0002e84c add r3, r0, 0x4000 | r3 = r0 + 0x4000;
0x0002e850 and r2, r2, 1 | r2 &= 1;
| if ((r5 & 0x10) == 0) {
0x0002e854 orrne r5, r5, 2 | r5 |= 2;
| }
0x0002e858 strb r2, [r3, 0x88e] | *((r3 + 0x88e)) = r2;
0x0002e85c bic r5, r5, 0x24 | r5 = BIT_MASK (r5, 0x24);
0x0002e860 mov r3, 0 | r3 = 0;
| do {
0x0002e864 add r2, r3, 1 | r2 = r3 + 1;
0x0002e868 lsr r3, r5, r3 | r3 = r5 >> r3;
0x0002e86c tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0002e870 bne 0x2f42c | goto label_290;
| }
0x0002e874 cmp r2, 0x1f |
0x0002e878 mov r3, r2 | r3 = r2;
0x0002e87c bne 0x2e864 |
| } while (r2 != 0x1f);
| label_75:
0x0002e880 mov r5, 4 | r5 = 4;
0x0002e884 b 0x2d7e0 | goto label_2;
| label_48:
0x0002e888 ldr r3, [r2] | r3 = *(r2);
0x0002e88c cmp r3, 0x10000 |
| if (r3 >= 0x10000) {
0x0002e890 strlo r3, [r0, 0x13c] | *((r0 + 0x13c)) = r3;
| }
| if (r3 >= 0x10000) {
0x0002e894 movlo r5, 0 | r5 = 0;
| }
| if (r3 < 0x10000) {
0x0002e898 movhs r5, 0x2b | r5 = 0x2b;
| }
0x0002e89c b 0x2d7e0 | goto label_2;
| label_135:
0x0002e8a0 ldr r1, [r2] | r1 = *(r2);
0x0002e8a4 add r0, r0, 0x550 | r0 += 0x550;
0x0002e8a8 b 0x2da00 | goto label_4;
| label_235:
0x0002e8ac ldr r1, [r2] | r1 = *(r2);
0x0002e8b0 add r0, r0, 0x560 | r0 += 0x560;
0x0002e8b4 b 0x2dc70 | goto label_5;
| label_51:
0x0002e8b8 ldr r3, [r2] | r3 = *(r2);
0x0002e8bc cmp r3, 7 |
| if (r3 > 7) {
0x0002e8c0 strls r3, [r0, 0x490] | *((r0 + 0x490)) = r3;
| }
| if (r3 > 7) {
0x0002e8c4 movls r5, 0 | r5 = 0;
| }
| if (r3 <= 7) {
0x0002e8c8 movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002e8cc b 0x2d7e0 | goto label_2;
| label_92:
0x0002e8d0 ldr r5, [r5] | r5 = *(r5);
0x0002e8d4 cmp r5, 0 |
| if (r5 == 0) {
0x0002e8d8 strbeq r5, [r0, 0x504] | *((r0 + 0x504)) = r5;
| goto label_291;
| }
| if (r5 == 0) {
| label_291:
0x0002e8dc beq 0x2d7e0 | goto label_2;
| }
0x0002e8e0 cmp r5, 1 |
| if (r5 != 1) {
0x0002e8e4 strbeq r5, [r0, 0x504] | *((r0 + 0x504)) = r5;
| }
| if (r5 != 1) {
0x0002e8e8 moveq r5, 0 | r5 = 0;
| }
| if (r5 == 1) {
0x0002e8ec movne r5, 0x30 | r5 = 0x30;
| }
0x0002e8f0 b 0x2d7e0 | goto label_2;
| label_129:
0x0002e8f4 ldr r3, [r2] | r3 = *(r2);
0x0002e8f8 str r3, [r0, 0x15c] | *((r0 + 0x15c)) = r3;
0x0002e8fc bics r3, r3, 5 | __asm ("bics r3, r3, 5");
| if (r5 == 1) {
0x0002e900 beq 0x2e5bc | goto label_9;
| }
0x0002e904 b 0x2dcd8 | goto label_6;
| label_225:
0x0002e908 ldr r1, [r2] | r1 = *(r2);
0x0002e90c add r0, r0, 0x5d0 | r0 += 0x5d0;
0x0002e910 b 0x2da00 | goto label_4;
| label_156:
0x0002e914 ldr r3, [r2] | r3 = *(r2);
0x0002e918 mov r5, 0 | r5 = 0;
0x0002e91c str r3, [r0, 0x148] | *((r0 + 0x148)) = r3;
0x0002e920 b 0x2d7e0 | goto label_2;
| label_138:
0x0002e924 ldr r3, [r2] | r3 = *(r2);
0x0002e928 mov r5, 0 | r5 = 0;
0x0002e92c str r3, [r0, 0x138] | *((r0 + 0x138)) = r3;
0x0002e930 b 0x2d7e0 | goto label_2;
| label_125:
0x0002e934 ldr r3, [r2] | r3 = *(r2);
0x0002e938 mov r5, 0 | r5 = 0;
0x0002e93c str r3, [r0, 0x140] | *((r0 + 0x140)) = r3;
0x0002e940 b 0x2d7e0 | goto label_2;
| label_70:
0x0002e944 ldr r3, [r2] | r3 = *(r2);
0x0002e948 mov r5, 0 | r5 = 0;
0x0002e94c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002e950 movne r3, 1 | r3 = 1;
| }
0x0002e954 strb r3, [r0, 0x4dd] | *((r0 + 0x4dd)) = r3;
0x0002e958 b 0x2d7e0 | goto label_2;
| label_87:
0x0002e95c ldr r3, [r5] | r3 = *(r5);
0x0002e960 cmp r3, 2 |
| if (r3 > 2) {
0x0002e964 strls r3, [r0, 0x4e8] | *((r0 + 0x4e8)) = r3;
| }
| if (r3 > 2) {
0x0002e968 movls r5, 0 | r5 = 0;
| }
| if (r3 <= 2) {
0x0002e96c movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002e970 b 0x2d7e0 | goto label_2;
| label_137:
0x0002e974 ldr r3, [r2] | r3 = *(r2);
0x0002e978 mov r5, 0 | r5 = 0;
0x0002e97c str r3, [r0, 0x144] | *((r0 + 0x144)) = r3;
0x0002e980 b 0x2d7e0 | goto label_2;
| label_25:
0x0002e984 ldr r2, [r2] | r2 = *(r2);
0x0002e988 cmn r2, 1 |
| if (r2 >= 1) {
0x0002e98c movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < 1) {
0x0002e990 addge r4, r0, 0x200 | r4 = r0 + 0x200;
| }
0x0002e994 asrge r3, r2, 0x1f | __asm ("asrge r3, r2, 0x1f");
0x0002e998 strdge r2, r3, [r4] | __asm ("strdge r2, r3, [r4]");
| if (r2 < 1) {
0x0002e99c movge r5, 0 | r5 = 0;
| }
0x0002e9a0 b 0x2d7e0 | goto label_2;
| label_275:
0x0002e9a4 add r3, r5, 7 | r3 = r5 + 7;
0x0002e9a8 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0002e9ac ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0002e9b0 cmp r2, 0 |
0x0002e9b4 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 >= 0) {
0x0002e9b8 movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < 0) {
0x0002e9bc addge r4, r0, 0x220 | r4 = r0 + 0x220;
| }
0x0002e9c0 strdge r2, r3, [r4, -8] | __asm ("strdge r2, r3, [r4, -8]");
| if (r2 < 0) {
0x0002e9c4 movge r5, 0 | r5 = 0;
| }
0x0002e9c8 b 0x2d7e0 | goto label_2;
| label_29:
0x0002e9cc ldr r3, [r2] | r3 = *(r2);
0x0002e9d0 cmp r3, 0 |
| if (r3 < 0) {
0x0002e9d4 strge r3, [r0, 0x20c] | *((r0 + 0x20c)) = r3;
| }
| if (r3 < 0) {
0x0002e9d8 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002e9dc movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002e9e0 b 0x2d7e0 | goto label_2;
| label_27:
0x0002e9e4 ldr r3, [r2] | r3 = *(r2);
0x0002e9e8 cmp r3, 0x10000 |
| if (r3 >= 0x10000) {
0x0002e9ec strlo r3, [r0, 0x150] | *((r0 + 0x150)) = r3;
| }
| if (r3 >= 0x10000) {
0x0002e9f0 movlo r5, 0 | r5 = 0;
| }
| if (r3 < 0x10000) {
0x0002e9f4 movhs r5, 0x2b | r5 = 0x2b;
| }
0x0002e9f8 b 0x2d7e0 | goto label_2;
| label_28:
0x0002e9fc ldr r1, [r2] | r1 = *(r2);
0x0002ea00 ldr r2, [pc, -0xb70] | r2 = *(0x0002de98);
0x0002ea04 cmp r1, r2 |
| if (r1 <= r2) {
0x0002ea08 movhi r5, 0x2b | r5 = 0x2b;
| }
| if (r1 > r2) {
0x0002ea0c movls r2, 0x3e8 | r2 = 0x3e8;
| }
| if (r1 > r2) {
0x0002ea10 mulls r3, r2, r1 | r3 = r2 * r1;
| }
| if (r1 > r2) {
0x0002ea14 movls r5, 0 | r5 = 0;
| }
| if (r1 > r2) {
0x0002ea18 strls r3, [r0, 0x1e0] | *((r0 + 0x1e0)) = r3;
| }
0x0002ea1c b 0x2d7e0 | goto label_2;
| label_90:
0x0002ea20 cmp r3, 0 |
| if (r3 < 0) {
0x0002ea24 strge r3, [r0, 0x1e4] | *((r0 + 0x1e4)) = r3;
| }
| if (r3 < 0) {
0x0002ea28 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002ea2c movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002ea30 b 0x2d7e0 | goto label_2;
| label_105:
0x0002ea34 ldr r3, [r5] | r3 = *(r5);
0x0002ea38 cmp r3, 0 |
| if (r3 < 0) {
0x0002ea3c strge r3, [r0, 0x1e8] | *((r0 + 0x1e8)) = r3;
| }
| if (r3 < 0) {
0x0002ea40 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002ea44 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002ea48 b 0x2d7e0 | goto label_2;
| label_136:
0x0002ea4c add r1, r0, 0x5b0 | r1 = r0 + 0x5b0;
0x0002ea50 add r2, r1, 8 | r2 = r1 + 8;
0x0002ea54 add r1, r1, 4 | r1 += 4;
| label_11:
0x0002ea58 ldr r0, [r5] | r0 = *(r5);
0x0002ea5c add sp, sp, 0x10 |
0x0002ea60 pop {r4, r5, r6, r7, r8, lr} |
0x0002ea64 b 0x2cc98 | void (*0x2cc98)() ();
| label_197:
0x0002ea68 ldr r1, [r2] | r1 = *(r2);
0x0002ea6c add r0, r0, 0x5b0 | r0 += 0x5b0;
0x0002ea70 b 0x2e070 | goto label_10;
| label_198:
0x0002ea74 ldr r1, [r2] | r1 = *(r2);
0x0002ea78 add r0, r0, 0x5b0 | r0 += 0x5b0;
0x0002ea7c b 0x2d6d8 | goto label_1;
| label_158:
0x0002ea80 ldr r3, [r2] | r3 = *(r2);
0x0002ea84 mov r5, 0 | r5 = 0;
0x0002ea88 str r3, [r0, 0x3a8] | *((r0 + 0x3a8)) = r3;
0x0002ea8c b 0x2d7e0 | goto label_2;
| label_172:
0x0002ea90 ldr r3, [r2] | r3 = *(r2);
0x0002ea94 mov r5, 0 | r5 = 0;
0x0002ea98 str r3, [r0, 0x3ac] | *((r0 + 0x3ac)) = r3;
0x0002ea9c b 0x2d7e0 | goto label_2;
| label_155:
0x0002eaa0 ldr r3, [r2] | r3 = *(r2);
0x0002eaa4 mov r5, 0 | r5 = 0;
0x0002eaa8 str r3, [r0, 0x3a4] | *((r0 + 0x3a4)) = r3;
0x0002eaac b 0x2d7e0 | goto label_2;
| label_139:
0x0002eab0 ldr r3, [r2] | r3 = *(r2);
0x0002eab4 mov r5, 0 | r5 = 0;
0x0002eab8 str r3, [r0, 0x3c0] | *((r0 + 0x3c0)) = r3;
0x0002eabc str r3, [r0, 0x68c] | *((r0 + 0x68c)) = r3;
0x0002eac0 b 0x2d7e0 | goto label_2;
| label_252:
0x0002eac4 ldr r3, [r2] | r3 = *(r2);
0x0002eac8 str r3, [r0, 0x1a0] | *((r0 + 0x1a0)) = r3;
| do {
0x0002eacc cmp r3, 0 |
| if (r3 == 0) {
0x0002ead0 movne r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x0002ead4 moveq r5, 0 | r5 = 0;
| }
| if (r3 == 0) {
0x0002ead8 strbne r3, [r4, 0x6c8] | *((r4 + 0x6c8)) = r3;
| }
| if (r3 == 0) {
0x0002eadc movne r5, 0 | r5 = 0;
| }
| if (r3 != 0) {
0x0002eae0 strbeq r5, [r4, 0x6c8] | *((r4 + 0x6c8)) = r5;
| }
0x0002eae4 b 0x2d7e0 | goto label_2;
| label_269:
0x0002eae8 ldr r3, [r5] | r3 = *(r5);
0x0002eaec str r3, [r0, 0x1a4] | *((r0 + 0x1a4)) = r3;
0x0002eaf0 b 0x2eacc |
| } while (1);
| label_143:
0x0002eaf4 ldr r3, [r2] | r3 = *(r2);
0x0002eaf8 mov r5, 0 | r5 = 0;
0x0002eafc str r3, [r0, 0x1d8] | *((r0 + 0x1d8)) = r3;
0x0002eb00 b 0x2d7e0 | goto label_2;
| label_133:
0x0002eb04 add r1, r0, 0x5c0 | r1 = r0 + 0x5c0;
0x0002eb08 add r2, r1, 4 | r2 = r1 + 4;
0x0002eb0c b 0x2ea58 | goto label_11;
| label_195:
0x0002eb10 ldr r1, [r2] | r1 = *(r2);
0x0002eb14 add r0, r0, 0x5c0 | r0 += 0x5c0;
0x0002eb18 b 0x2dc70 | goto label_5;
| label_200:
0x0002eb1c ldr r1, [r2] | r1 = *(r2);
0x0002eb20 add r0, r0, 0x5c0 | r0 += 0x5c0;
0x0002eb24 b 0x2d6d8 | goto label_1;
| label_30:
0x0002eb28 ldr r2, [r2] | r2 = *(r2);
0x0002eb2c cmn r2, 1 |
| if (r2 >= 1) {
0x0002eb30 movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < 1) {
0x0002eb34 addge r4, r0, 0x220 | r4 = r0 + 0x220;
| }
0x0002eb38 asrge r3, r2, 0x1f | __asm ("asrge r3, r2, 0x1f");
0x0002eb3c strdge r2, r3, [r4] | __asm ("strdge r2, r3, [r4]");
| if (r2 < 1) {
0x0002eb40 movge r5, 0 | r5 = 0;
| }
0x0002eb44 b 0x2d7e0 | goto label_2;
| label_273:
0x0002eb48 add r3, r5, 7 | r3 = r5 + 7;
0x0002eb4c bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0002eb50 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0002eb54 mvn r0, 0 | r0 = ~0;
0x0002eb58 mvn r1, 0 | r1 = ~0;
0x0002eb5c cmp r2, r0 |
0x0002eb60 sbcs r1, r3, r1 | __asm ("sbcs r1, r3, r1");
| if (r2 >= r0) {
0x0002eb64 movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < r0) {
0x0002eb68 addge r4, r4, 0x220 | r4 += 0x220;
| }
0x0002eb6c strdge r2, r3, [r4] | __asm ("strdge r2, r3, [r4]");
| if (r2 < r0) {
0x0002eb70 movge r5, 0 | r5 = 0;
| }
0x0002eb74 b 0x2d7e0 | goto label_2;
| label_173:
0x0002eb78 ldr r3, [r2] | r3 = *(r2);
0x0002eb7c mov r5, 0 | r5 = 0;
0x0002eb80 str r3, [r0, 0x134] | *((r0 + 0x134)) = r3;
0x0002eb84 b 0x2d7e0 | goto label_2;
| label_157:
0x0002eb88 ldr r5, [r2] | r5 = *(r2);
0x0002eb8c cmp r5, 0 |
0x0002eb90 str r5, [r0, 0x130] | *((r0 + 0x130)) = r5;
| if (r5 != 0) {
0x0002eb94 beq 0x2eba0 |
| label_12:
0x0002eb98 mov r5, 0 | r5 = 0;
0x0002eb9c b 0x2d7e0 | goto label_2;
| }
0x0002eba0 ldr r3, [pc, -0xd0c] |
0x0002eba4 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002eba8 ldr r3, [r3] | r3 = *(0x2de98);
0x0002ebac str r3, [r0, 0x130] | *((r0 + 0x130)) = r3;
0x0002ebb0 b 0x2d7e0 | goto label_2;
| label_245:
0x0002ebb4 ldr r3, [r2] | r3 = *(r2);
0x0002ebb8 mov r5, 0 | r5 = 0;
0x0002ebbc str r3, [r0, 0x18c] | *((r0 + 0x18c)) = r3;
0x0002ebc0 b 0x2d7e0 | goto label_2;
| label_251:
0x0002ebc4 ldr r5, [r2] | r5 = *(r2);
0x0002ebc8 cmp r5, 0 |
| if (r5 == 0) {
0x0002ebcc movne r3, 1 | r3 = 1;
| }
0x0002ebd0 str r5, [r0, 0x194] | *((r0 + 0x194)) = r5;
| if (r5 == 0) {
0x0002ebd4 strne r3, [r0, 0x198] | *((r0 + 0x198)) = r3;
| }
| if (r5 == 0) {
0x0002ebd8 movne r5, 0 | r5 = 0;
| }
| if (r5 != 0) {
0x0002ebdc ldreq r3, [pc, -0xd44] | r3 = *((pc - 0xd44));
| }
| if (r5 != 0) {
0x0002ebe0 streq r5, [r0, 0x198] | *((r0 + 0x198)) = r5;
| }
| if (r5 != 0) {
0x0002ebe4 ldreq r3, [r7, r3] | r3 = *((r7 + r3));
| }
| if (r5 != 0) {
0x0002ebe8 streq r3, [r0, 0x194] | *((r0 + 0x194)) = r3;
| }
0x0002ebec b 0x2d7e0 | goto label_2;
| label_176:
0x0002ebf0 ldr r3, [r2] | r3 = *(r2);
0x0002ebf4 mov r5, 0 | r5 = 0;
0x0002ebf8 str r3, [r0, 0x1dc] | *((r0 + 0x1dc)) = r3;
0x0002ebfc b 0x2d7e0 | goto label_2;
| label_145:
0x0002ec00 ldr r1, [r2] | r1 = *(r2);
0x0002ec04 add r0, r0, 0x500 | r0 += 0x500;
0x0002ec08 b 0x2d6d8 | goto label_1;
| label_169:
0x0002ec0c ldr r1, [r2] | r1 = *(r2);
0x0002ec10 add r0, r0, 0x510 | r0 += 0x510;
0x0002ec14 b 0x2dc70 | goto label_5;
| label_232:
0x0002ec18 ldr r1, [r2] | r1 = *(r2);
0x0002ec1c add r0, r0, 0x510 | r0 += 0x510;
0x0002ec20 b 0x2e070 | goto label_10;
| label_170:
0x0002ec24 ldr r1, [r2] | r1 = *(r2);
0x0002ec28 add r0, r0, 0x530 | r0 += 0x530;
0x0002ec2c b 0x2da00 | goto label_4;
| label_233:
0x0002ec30 ldr r1, [r2] | r1 = *(r2);
0x0002ec34 add r0, r0, 0x540 | r0 += 0x540;
0x0002ec38 b 0x2dc70 | goto label_5;
| label_167:
0x0002ec3c ldr r1, [r2] | r1 = *(r2);
0x0002ec40 add r0, r0, 0x540 | r0 += 0x540;
0x0002ec44 b 0x2da00 | goto label_4;
| label_226:
0x0002ec48 ldr r1, [r2] | r1 = *(r2);
0x0002ec4c add r0, r0, 0x550 | r0 += 0x550;
0x0002ec50 b 0x2dc70 | goto label_5;
| label_238:
0x0002ec54 ldr r1, [r2] | r1 = *(r2);
0x0002ec58 add r0, r0, 0x540 | r0 += 0x540;
0x0002ec5c b 0x2d6d8 | goto label_1;
| label_62:
0x0002ec60 add sp, sp, 0x10 |
0x0002ec64 pop {r4, r5, r6, r7, r8, lr} |
0x0002ec68 b 0x375dc | void (*0x375dc)() ();
| label_23:
0x0002ec6c ldr r3, [r2] | r3 = *(r2);
0x0002ec70 mov r5, 0 | r5 = 0;
0x0002ec74 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ec78 movne r3, 1 | r3 = 1;
| }
0x0002ec7c strb r3, [r0, 0x3a2] | *((r0 + 0x3a2)) = r3;
0x0002ec80 b 0x2d7e0 | goto label_2;
| label_163:
0x0002ec84 ldr r1, [r2] | r1 = *(r2);
0x0002ec88 add r0, r0, 0x520 | r0 += 0x520;
0x0002ec8c b 0x2d6d8 | goto label_1;
| label_81:
0x0002ec90 cmp r0, 0x10000 |
| if (r0 >= 0x10000) {
0x0002ec94 movhs r5, 0x2b | r5 = 0x2b;
| goto label_292;
| }
| if (r0 >= 0x10000) {
| label_292:
0x0002ec98 bhs 0x2d7e0 | goto label_2;
| }
0x0002ec9c bl 0x25350 | curlx_sltous ();
0x0002eca0 add r4, r4, 0x180 | r4 += 0x180;
0x0002eca4 mov r5, 0 | r5 = 0;
0x0002eca8 strh r0, [r4] | *(r4) = r0;
0x0002ecac b 0x2d7e0 | goto label_2;
| label_17:
0x0002ecb0 ldr r0, [r2] | r0 = *(r2);
0x0002ecb4 cmp r0, 0x10000 |
| if (r0 >= 0x10000) {
0x0002ecb8 movhs r5, 0x2b | r5 = 0x2b;
| goto label_293;
| }
| if (r0 >= 0x10000) {
| label_293:
0x0002ecbc bhs 0x2d7e0 | goto label_2;
| }
0x0002ecc0 bl 0x25344 | curlx_sltosi ();
0x0002ecc4 mov r5, 0 | r5 = 0;
0x0002ecc8 str r0, [r4, 0x184] | *((r4 + 0x184)) = r0;
0x0002eccc b 0x2d7e0 | goto label_2;
| label_49:
0x0002ecd0 ldr r3, [r2] | r3 = *(r2);
0x0002ecd4 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002ecd8 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ecdc movne r3, 1 | r3 = 1;
| }
0x0002ece0 cmp r2, 0 |
0x0002ece4 strb r3, [r0, 0x3e4] | *((r0 + 0x3e4)) = r3;
| if (r2 == 0) {
0x0002ece8 movne r5, 0 | r5 = 0;
| }
| if (r2 != 0) {
0x0002ecec strbne r3, [r2, 0x208] | *((r2 + 0x208)) = r3;
| goto label_294;
| }
| if (r2 != 0) {
| label_294:
0x0002ecf0 bne 0x2d7e0 | goto label_2;
| }
0x0002ecf4 b 0x2eb98 | goto label_12;
| label_59:
0x0002ecf8 ldr r3, [r2] | r3 = *(r2);
0x0002ecfc cmp r3, 1 |
| if (r3 == 1) {
0x0002ed00 bne 0x2ed1c |
| label_13:
0x0002ed04 ldr r1, [pc, -0xe68] | r1 = *(0x2dea0);
0x0002ed08 mov r0, r4 | r0 = r4;
0x0002ed0c add r1, pc, r1 | r1 = pc + r1;
0x0002ed10 bl 0x10544 | Curl_failf ();
0x0002ed14 mov r5, 0x2b | r5 = 0x2b;
0x0002ed18 b 0x2d7e0 | goto label_2;
| }
0x0002ed1c ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002ed20 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ed24 movne r3, 1 | r3 = 1;
| }
0x0002ed28 cmp r2, 0 |
0x0002ed2c strb r3, [r0, 0x3e5] | *((r0 + 0x3e5)) = r3;
| if (r2 == 0) {
0x0002ed30 movne r5, 0 | r5 = 0;
| }
| if (r2 != 0) {
0x0002ed34 strbne r3, [r2, 0x209] | *((r2 + 0x209)) = r3;
| goto label_295;
| }
| if (r2 != 0) {
| label_295:
0x0002ed38 bne 0x2d7e0 | goto label_2;
| }
0x0002ed3c b 0x2eb98 | goto label_12;
| label_123:
0x0002ed40 ldr r3, [r2] | r3 = *(r2);
0x0002ed44 cmp r3, 1 |
| if (r3 == 1) {
0x0002ed48 beq 0x2ed04 | goto label_13;
| }
0x0002ed4c ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002ed50 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ed54 movne r3, 1 | r3 = 1;
| }
0x0002ed58 cmp r2, 0 |
0x0002ed5c strb r3, [r0, 0x43d] | *((r0 + 0x43d)) = r3;
| if (r2 == 0) {
0x0002ed60 movne r5, 0 | r5 = 0;
| }
| if (r2 != 0) {
0x0002ed64 strbne r3, [r2, 0x231] | *((r2 + 0x231)) = r3;
| goto label_296;
| }
| if (r2 != 0) {
| label_296:
0x0002ed68 bne 0x2d7e0 | goto label_2;
| }
0x0002ed6c b 0x2eb98 | goto label_12;
| label_118:
0x0002ed70 ldr r3, [r5] | r3 = *(r5);
0x0002ed74 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0002ed78 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ed7c movne r3, 1 | r3 = 1;
| }
0x0002ed80 cmp r2, 0 |
0x0002ed84 strb r3, [r4, 0x3e6] | *((r4 + 0x3e6)) = r3;
| if (r2 == 0) {
0x0002ed88 movne r5, 0 | r5 = 0;
| }
| if (r2 != 0) {
0x0002ed8c strbne r3, [r2, 0x20a] | *((r2 + 0x20a)) = r3;
| goto label_297;
| }
| if (r2 != 0) {
| label_297:
0x0002ed90 bne 0x2d7e0 | goto label_2;
| }
0x0002ed94 b 0x2eb98 | goto label_12;
| label_255:
0x0002ed98 ldr r3, [pc, -0xef8] |
0x0002ed9c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002eda0 ldr r3, [r3] |
0x0002eda4 ldr r3, [r3, 8] | r3 = $a;
0x0002eda8 tst r3, 8 |
| if ((r3 & 8) == 0) {
0x0002edac ldrne r3, [r5] | r3 = *(r5);
| }
| if ((r3 & 8) == 0) {
0x0002edb0 movne r5, 0 | r5 = 0;
| }
| if ((r3 & 8) != 0) {
0x0002edb4 strne r3, [r0, 0x414] | *((r0 + 0x414)) = r3;
| goto label_298;
| }
| if ((r3 & 8) != 0) {
| label_298:
0x0002edb8 bne 0x2d7e0 | goto label_2;
| }
0x0002edbc b 0x2d474 | goto label_14;
| label_183:
0x0002edc0 ldr r3, [pc, -0xf20] |
0x0002edc4 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002edc8 ldr r3, [r3] |
0x0002edcc ldr r3, [r3, 8] | r3 = $a;
0x0002edd0 tst r3, 8 |
| if ((r3 & 8) == 0) {
0x0002edd4 ldrne r3, [r2] | r3 = *(r2);
| }
| if ((r3 & 8) == 0) {
0x0002edd8 movne r5, 0 | r5 = 0;
| }
| if ((r3 & 8) != 0) {
0x0002eddc strne r3, [r0, 0x418] | *((r0 + 0x418)) = r3;
| goto label_299;
| }
| if ((r3 & 8) != 0) {
| label_299:
0x0002ede0 bne 0x2d7e0 | goto label_2;
| }
0x0002ede4 b 0x2d474 | goto label_14;
| label_116:
0x0002ede8 bl 0x37d50 | r0 = Curl_ssl_false_start ();
0x0002edec cmp r0, 0 |
| if (r0 == 0) {
0x0002edf0 beq 0x2d474 | goto label_14;
| }
0x0002edf4 ldr r3, [r5] | r3 = *(r5);
0x0002edf8 mov r5, 0 | r5 = 0;
0x0002edfc adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ee00 movne r3, 1 | r3 = 1;
| }
0x0002ee04 strb r3, [r4, 0x41d] | *((r4 + 0x41d)) = r3;
0x0002ee08 b 0x2d7e0 | goto label_2;
| label_96:
0x0002ee0c ldr r3, [pc, 0x630] |
0x0002ee10 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002ee14 ldr r3, [r3] |
0x0002ee18 ldr r3, [r3, 8] | r3 = *(0x2f448);
0x0002ee1c tst r3, 2 |
| if ((r3 & 2) == 0) {
0x0002ee20 beq 0x2d474 | goto label_14;
| }
0x0002ee24 ldr r3, [r5] | r3 = *(r5);
0x0002ee28 mov r5, 0 | r5 = 0;
0x0002ee2c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ee30 movne r3, 1 | r3 = 1;
| }
0x0002ee34 strb r3, [r0, 0x41c] | *((r0 + 0x41c)) = r3;
0x0002ee38 b 0x2d7e0 | goto label_2;
| label_224:
0x0002ee3c ldr r3, [pc, 0x600] |
0x0002ee40 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002ee44 ldr r3, [r3] |
0x0002ee48 ldr r3, [r3, 8] | r3 = *(0x2f448);
0x0002ee4c tst r3, 4 |
| if ((r3 & 4) == 0) {
0x0002ee50 ldrne r1, [r2] | r1 = *(r2);
| }
| if ((r3 & 4) != 0) {
0x0002ee54 addne r0, r0, 0x580 | r0 += 0x580;
| goto label_300;
| }
| if ((r3 & 4) != 0) {
| label_300:
0x0002ee58 bne 0x2dc70 | goto label_5;
| }
0x0002ee5c b 0x2d474 | goto label_14;
| label_241:
0x0002ee60 ldr r3, [pc, 0x5dc] |
0x0002ee64 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002ee68 ldr r3, [r3] |
0x0002ee6c ldr r3, [r3, 8] | r3 = *(0x2f448);
0x0002ee70 tst r3, 4 |
| if ((r3 & 4) == 0) {
0x0002ee74 ldrne r1, [r2] | r1 = *(r2);
| }
| if ((r3 & 4) != 0) {
0x0002ee78 addne r0, r0, 0x580 | r0 += 0x580;
| goto label_301;
| }
| if ((r3 & 4) != 0) {
| label_301:
0x0002ee7c bne 0x2e070 | goto label_10;
| }
0x0002ee80 b 0x2d474 | goto label_14;
| label_161:
0x0002ee84 ldr r1, [r2] | r1 = *(r2);
0x0002ee88 add r0, r0, 0x570 | r0 += 0x570;
0x0002ee8c b 0x2d6d8 | goto label_1;
| label_141:
0x0002ee90 ldr r3, [pc, 0x5ac] |
0x0002ee94 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002ee98 ldr r3, [r3] |
0x0002ee9c ldr r3, [r3, 8] | r3 = *(0x2f448);
0x0002eea0 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0002eea4 ldrne r1, [r2] | r1 = *(r2);
| }
| if ((r3 & 1) != 0) {
0x0002eea8 addne r0, r0, 0x570 | r0 += 0x570;
| goto label_302;
| }
| if ((r3 & 1) != 0) {
| label_302:
0x0002eeac bne 0x2dc70 | goto label_5;
| }
0x0002eeb0 b 0x2d474 | goto label_14;
| label_228:
0x0002eeb4 ldr r3, [pc, 0x588] |
0x0002eeb8 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002eebc ldr r3, [r3] |
0x0002eec0 ldr r3, [r3, 8] | r3 = *(0x2f448);
0x0002eec4 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0002eec8 ldrne r1, [r2] | r1 = *(r2);
| }
| if ((r3 & 1) != 0) {
0x0002eecc addne r0, r0, 0x570 | r0 += 0x570;
| goto label_303;
| }
| if ((r3 & 1) != 0) {
| label_303:
0x0002eed0 bne 0x2e070 | goto label_10;
| }
0x0002eed4 b 0x2d474 | goto label_14;
| label_174:
0x0002eed8 ldr r1, [r2] | r1 = *(r2);
0x0002eedc add r0, r0, 0x5a0 | r0 += 0x5a0;
0x0002eee0 b 0x2e070 | goto label_10;
| label_64:
0x0002eee4 ldr r6, [r2] | r6 = *(r2);
0x0002eee8 cmp r6, 0x80000 |
| if (r6 <= 0x80000) {
0x0002eeec movgt r6, 0x80000 | r6 = 0x80000;
| }
| if (r6 <= 0x80000) {
0x0002eef0 bgt 0x2ef08 |
0x0002eef4 cmp r6, 0 |
| if (r6 > 0) {
0x0002eef8 movle r6, 0x4000 | r6 = 0x4000;
| }
| if (r6 <= 0) {
0x0002eefc ble 0x2ef08 | goto label_304;
| }
0x0002ef00 cmp r6, 0x400 |
| if (r6 < 0x400) {
0x0002ef04 movlt r6, 0x400 | r6 = 0x400;
| goto label_304;
| }
| }
| label_304:
0x0002ef08 ldr r3, [r4, 0x498] | r3 = *((r4 + 0x498));
0x0002ef0c cmp r3, r6 |
| if (r3 != r6) {
0x0002ef10 beq 0x2ef3c |
0x0002ef14 ldr r3, [pc, 0x52c] |
0x0002ef18 add r1, r6, 1 | r1 = r6 + 1;
0x0002ef1c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002ef20 ldr r0, [r4, 0x7cc] | r0 = *((r4 + 0x7cc));
0x0002ef24 ldr r3, [r3] | r3 = $d;
0x0002ef28 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0002ef2c cmp r0, 0 |
| if (r0 != 0) {
0x0002ef30 moveq r5, 0x1b | r5 = 0x1b;
| }
| if (r0 == 0) {
0x0002ef34 beq 0x2ef40 | goto label_305;
| }
0x0002ef38 str r0, [r4, 0x7cc] | *((r4 + 0x7cc)) = r0;
| }
0x0002ef3c mov r5, 0 | r5 = 0;
| label_305:
0x0002ef40 str r6, [r4, 0x498] | *((r4 + 0x498)) = r6;
0x0002ef44 b 0x2d7e0 | goto label_2;
| label_65:
0x0002ef48 ldr r3, [r2] | r3 = *(r2);
0x0002ef4c mov r5, 0 | r5 = 0;
0x0002ef50 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002ef54 movne r3, 1 | r3 = 1;
| }
0x0002ef58 strb r3, [r0, 0x4ec] | *((r0 + 0x4ec)) = r3;
0x0002ef5c b 0x2d7e0 | goto label_2;
| label_180:
0x0002ef60 ldr r3, [r0, 0x6c] | r3 = *((r0 + 0x6c));
0x0002ef64 ldr r5, [r2] | r5 = *(r2);
0x0002ef68 cmp r3, 0 |
| if (r3 != 0) {
0x0002ef6c beq 0x2efd8 |
0x0002ef70 mov r2, 2 | r2 = 2;
0x0002ef74 mov r1, 1 | r1 = 1;
0x0002ef78 bl 0x21464 | Curl_share_lock ();
0x0002ef7c ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
0x0002ef80 ldr r2, [r4, 0x690] | r2 = *((r4 + 0x690));
0x0002ef84 cmp r3, 3 |
| if (r3 != 3) {
0x0002ef88 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 3) {
0x0002ef8c streq r3, [r4, 0x5c] | *((r4 + 0x5c)) = r3;
| }
| if (r3 != 3) {
0x0002ef90 streq r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
| }
0x0002ef94 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x0002ef98 ldr r1, [r3, 0x58] | r1 = *((r3 + 0x58));
0x0002ef9c ldr r0, [r3, 0x5c] | r0 = *((r3 + 0x5c));
0x0002efa0 cmp r1, r2 |
| if (r1 != r2) {
0x0002efa4 moveq r2, 0 | r2 = 0;
| }
| if (r1 != r2) {
0x0002efa8 streq r2, [r4, 0x690] | *((r4 + 0x690)) = r2;
| }
0x0002efac add r2, r4, 0x4000 | r2 = r4 + 0x4000;
0x0002efb0 ldr r1, [r2, 0x7ec] | r1 = *((r2 + 0x7ec));
0x0002efb4 cmp r0, r1 |
| if (r0 != r1) {
0x0002efb8 moveq r1, 0 | r1 = 0;
| }
| if (r0 != r1) {
0x0002efbc streq r1, [r2, 0x7ec] | *((r2 + 0x7ec)) = r1;
| }
0x0002efc0 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0002efc4 mov r1, 1 | r1 = 1;
0x0002efc8 sub r2, r2, 1 | r2--;
0x0002efcc str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0002efd0 mov r0, r4 | r0 = r4;
0x0002efd4 bl 0x214ac | Curl_share_unlock ();
| }
0x0002efd8 cmp r5, 0 |
0x0002efdc str r5, [r4, 0x6c] | *((r4 + 0x6c)) = r5;
| if (r5 == 0) {
0x0002efe0 beq 0x2eb98 | goto label_12;
| }
0x0002efe4 mov r2, 2 | r2 = 2;
0x0002efe8 mov r1, 1 | r1 = 1;
0x0002efec mov r0, r4 | r0 = r4;
0x0002eff0 bl 0x21464 | Curl_share_lock ();
0x0002eff4 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x0002eff8 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0002effc add r2, r2, 1 | r2++;
0x0002f000 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0002f004 ldr r2, [r3] | r2 = *(r3);
0x0002f008 tst r2, 8 |
| if ((r2 & 8) == 0) {
0x0002f00c addne r2, r3, 0x40 | r2 = r3 + 0x40;
| }
0x0002f010 ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
| if ((r2 & 8) == 0) {
0x0002f014 strne r2, [r4, 0x5c] | *((r4 + 0x5c)) = r2;
| }
| if ((r2 & 8) == 0) {
0x0002f018 movne r2, 3 | r2 = 3;
| }
| if ((r2 & 8) == 0) {
0x0002f01c strne r2, [r4, 0x60] | *((r4 + 0x60)) = r2;
| }
0x0002f020 cmp r3, 0 |
| if (r3 != 0) {
0x0002f024 beq 0x2f03c |
0x0002f028 ldr r0, [r4, 0x690] | r0 = *((r4 + 0x690));
0x0002f02c bl 0xb210 | Curl_cookie_cleanup ();
0x0002f030 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x0002f034 ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x0002f038 str r3, [r4, 0x690] | *((r4 + 0x690)) = r3;
| }
0x0002f03c ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x0002f040 mov r1, 1 | r1 = 1;
0x0002f044 ldr r3, [r2, 0x5c] | r3 = *((r2 + 0x5c));
0x0002f048 mov r0, r4 | r0 = r4;
0x0002f04c cmp r3, 0 |
| if (r3 == 0) {
0x0002f050 ldrne r2, [r2, 0x60] | r2 = *((r2 + 0x60));
| }
0x0002f054 mov r5, 0 | r5 = 0;
| if (r3 == 0) {
0x0002f058 strne r2, [r4, 0x48c] | *((r4 + 0x48c)) = r2;
| }
| if (r3 == 0) {
0x0002f05c addne r2, r4, 0x4000 | r2 = r4 + 0x4000;
| }
| if (r3 == 0) {
0x0002f060 strne r3, [r2, 0x7ec] | *((r2 + 0x7ec)) = r3;
| }
0x0002f064 bl 0x214ac | Curl_share_unlock ();
0x0002f068 b 0x2d7e0 | goto label_2;
| label_178:
0x0002f06c ldr r3, [r2] | r3 = *(r2);
0x0002f070 mov r5, 0 | r5 = 0;
0x0002f074 str r3, [r0, 0x49c] | *((r0 + 0x49c)) = r3;
0x0002f078 b 0x2d7e0 | goto label_2;
| label_66:
0x0002f07c ldr r2, [r2] | r2 = *(r2);
0x0002f080 cmp r2, 0 |
| if (r2 >= 0) {
0x0002f084 movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < 0) {
0x0002f088 addge r4, r0, 0x4b0 | r4 = r0 + 0x4b0;
| }
0x0002f08c asrge r3, r2, 0x1f | __asm ("asrge r3, r2, 0x1f");
0x0002f090 strdge r2, r3, [r4, -8] | __asm ("strdge r2, r3, [r4, -8]");
| if (r2 < 0) {
0x0002f094 movge r5, 0 | r5 = 0;
| }
0x0002f098 b 0x2d7e0 | goto label_2;
| label_107:
0x0002f09c ldr r3, [r5] | r3 = *(r5);
0x0002f0a0 mov r5, 0 | r5 = 0;
0x0002f0a4 and r2, r3, 1 | r2 = r3 & 1;
0x0002f0a8 lsr r3, r3, 1 | r3 >>= 1;
0x0002f0ac and r3, r3, 1 | r3 &= 1;
0x0002f0b0 strb r2, [r0, 0x404] | *((r0 + 0x404)) = r2;
0x0002f0b4 strb r3, [r0, 0x405] | *((r0 + 0x405)) = r3;
0x0002f0b8 b 0x2d7e0 | goto label_2;
| label_109:
0x0002f0bc ldr r3, [r2] | r3 = *(r2);
0x0002f0c0 mov r5, 0 | r5 = 0;
0x0002f0c4 and r2, r3, 1 | r2 = r3 & 1;
0x0002f0c8 lsr r3, r3, 1 | r3 >>= 1;
0x0002f0cc and r3, r3, 1 | r3 &= 1;
0x0002f0d0 strb r2, [r0, 0x45c] | *((r0 + 0x45c)) = r2;
0x0002f0d4 strb r3, [r0, 0x45d] | *((r0 + 0x45d)) = r3;
0x0002f0d8 b 0x2d7e0 | goto label_2;
| label_79:
0x0002f0dc ldr r3, [r2] | r3 = *(r2);
0x0002f0e0 cmp r3, 2 |
| if (r3 > 2) {
0x0002f0e4 strls r3, [r0, 0x4e4] | *((r0 + 0x4e4)) = r3;
| }
| if (r3 > 2) {
0x0002f0e8 movls r5, 0 | r5 = 0;
| }
| if (r3 <= 2) {
0x0002f0ec movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002f0f0 b 0x2d7e0 | goto label_2;
| label_73:
0x0002f0f4 ldr r3, [r2] | r3 = *(r2);
0x0002f0f8 cmp r3, 2 |
| if (r3 > 2) {
0x0002f0fc strls r3, [r0, 0x4a4] | *((r0 + 0x4a4)) = r3;
| }
| if (r3 > 2) {
0x0002f100 movls r5, 0 | r5 = 0;
| }
| if (r3 <= 2) {
0x0002f104 movhi r5, 0x2b | r5 = 0x2b;
| }
0x0002f108 b 0x2d7e0 | goto label_2;
| label_274:
0x0002f10c add r3, r5, 7 | r3 = r5 + 7;
0x0002f110 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0002f114 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0002f118 cmp r2, 0 |
0x0002f11c sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 >= 0) {
0x0002f120 movlt r5, 0x2b | r5 = 0x2b;
| }
| if (r2 < 0) {
0x0002f124 addge r4, r0, 0x4b0 | r4 = r0 + 0x4b0;
| }
0x0002f128 strdge r2, r3, [r4, -8] | __asm ("strdge r2, r3, [r4, -8]");
| if (r2 < 0) {
0x0002f12c movge r5, 0 | r5 = 0;
| }
0x0002f130 b 0x2d7e0 | goto label_2;
| label_78:
0x0002f134 ldr r3, [r2] | r3 = *(r2);
0x0002f138 mov r5, 0 | r5 = 0;
0x0002f13c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f140 movne r3, 1 | r3 = 1;
| }
0x0002f144 strb r3, [r0, 0x4ee] | *((r0 + 0x4ee)) = r3;
0x0002f148 b 0x2d7e0 | goto label_2;
| label_76:
0x0002f14c ldr r3, [r2] | r3 = *(r2);
0x0002f150 mov r5, 0 | r5 = 0;
0x0002f154 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f158 movne r3, 1 | r3 = 1;
| }
0x0002f15c strb r3, [r0, 0x4ef] | *((r0 + 0x4ef)) = r3;
0x0002f160 b 0x2d7e0 | goto label_2;
| label_89:
0x0002f164 ldr r3, [r5] | r3 = *(r5);
0x0002f168 mov r5, 0 | r5 = 0;
0x0002f16c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f170 movne r3, 1 | r3 = 1;
| }
0x0002f174 strb r3, [r0, 0x4f1] | *((r0 + 0x4f1)) = r3;
0x0002f178 b 0x2d7e0 | goto label_2;
| label_189:
0x0002f17c ldr r1, [r2] | r1 = *(r2);
0x0002f180 add r0, r0, 0x530 | r0 += 0x530;
0x0002f184 b 0x2e070 | goto label_10;
| label_186:
0x0002f188 ldr r3, [r2] | r3 = *(r2);
0x0002f18c mov r5, 0 | r5 = 0;
0x0002f190 str r3, [r0, 0x1b4] | *((r0 + 0x1b4)) = r3;
0x0002f194 b 0x2d7e0 | goto label_2;
| label_243:
0x0002f198 ldr r3, [r2] | r3 = *(r2);
0x0002f19c mov r5, 0 | r5 = 0;
0x0002f1a0 str r3, [r0, 0x1b8] | *((r0 + 0x1b8)) = r3;
0x0002f1a4 b 0x2d7e0 | goto label_2;
| label_249:
0x0002f1a8 ldr r3, [r2] | r3 = *(r2);
0x0002f1ac mov r5, 0 | r5 = 0;
0x0002f1b0 str r3, [r0, 0x66c] | *((r0 + 0x66c)) = r3;
0x0002f1b4 b 0x2d7e0 | goto label_2;
| label_217:
0x0002f1b8 ldr r3, [r2] | r3 = *(r2);
0x0002f1bc mov r5, 0 | r5 = 0;
0x0002f1c0 str r3, [r0, 0x1c4] | *((r0 + 0x1c4)) = r3;
0x0002f1c4 b 0x2d7e0 | goto label_2;
| label_91:
0x0002f1c8 clz r3, r3 | r3 &= r3;
0x0002f1cc lsr r3, r3, 5 | r3 >>= 5;
0x0002f1d0 strb r3, [r0, 0x4f8] | *((r0 + 0x4f8)) = r3;
0x0002f1d4 mov r5, 0 | r5 = 0;
0x0002f1d8 b 0x2d7e0 | goto label_2;
| label_85:
0x0002f1dc ldr r3, [r5] | r3 = *(r5);
0x0002f1e0 mov r5, 0 | r5 = 0;
0x0002f1e4 clz r3, r3 | r3 &= r3;
0x0002f1e8 lsr r3, r3, 5 | r3 >>= 5;
0x0002f1ec strb r3, [r0, 0x4f9] | *((r0 + 0x4f9)) = r3;
0x0002f1f0 b 0x2d7e0 | goto label_2;
| label_95:
0x0002f1f4 ldr r3, [r5] | r3 = *(r5);
0x0002f1f8 cmp r3, 0x200 |
| if (r3 >= 0x200) {
0x0002f1fc strlo r3, [r0, 0x4fc] | *((r0 + 0x4fc)) = r3;
| }
| if (r3 >= 0x200) {
0x0002f200 movlo r5, 0 | r5 = 0;
| }
| if (r3 < 0x200) {
0x0002f204 movhs r5, 0x2b | r5 = 0x2b;
| }
0x0002f208 b 0x2d7e0 | goto label_2;
| label_94:
0x0002f20c ldr r3, [r5] | r3 = *(r5);
0x0002f210 cmp r3, 0x200 |
| if (r3 >= 0x200) {
0x0002f214 strlo r3, [r0, 0x500] | *((r0 + 0x500)) = r3;
| }
| if (r3 >= 0x200) {
0x0002f218 movlo r5, 0 | r5 = 0;
| }
| if (r3 < 0x200) {
0x0002f21c movhs r5, 0x2b | r5 = 0x2b;
| }
0x0002f220 b 0x2d7e0 | goto label_2;
| label_193:
0x0002f224 ldr r1, [r2] | r1 = *(r2);
0x0002f228 add r0, r0, 0x5e0 | r0 += 0x5e0;
0x0002f22c b 0x2dc70 | goto label_5;
| label_215:
0x0002f230 ldr r1, [r2] | r1 = *(r2);
0x0002f234 add r0, r0, 0x5e0 | r0 += 0x5e0;
0x0002f238 b 0x2e070 | goto label_10;
| label_100:
0x0002f23c ldr r3, [r5] | r3 = *(r5);
0x0002f240 sub r3, r3, 1 | r3--;
0x0002f244 cmp r3, 0xa |
| if (r3 <= 0xa) {
0x0002f248 movhi r3, 0 | r3 = 0;
| }
| if (r3 > 0xa) {
0x0002f24c ldrls r2, [pc, 0x1f8] | r2 = *((pc + 0x1f8));
| }
| if (r3 > 0xa) {
0x0002f250 addls r2, pc, r2 | r2 = pc + r2;
| }
| if (r3 > 0xa) {
0x0002f254 ldrbls r3, [r2, r3] | r3 = *((r2 + r3));
| }
0x0002f258 str r3, [r4, 0x610] | *((r4 + 0x610)) = r3;
0x0002f25c mov r5, 0 | r5 = 0;
0x0002f260 b 0x2d7e0 | goto label_2;
| label_204:
0x0002f264 ldr r1, [r2] | r1 = *(r2);
0x0002f268 add r0, r0, 0x5c0 | r0 += 0x5c0;
0x0002f26c b 0x2da00 | goto label_4;
| label_205:
0x0002f270 ldr r1, [r2] | r1 = *(r2);
0x0002f274 add r0, r0, 0x5d0 | r0 += 0x5d0;
0x0002f278 b 0x2dc70 | goto label_5;
| label_202:
0x0002f27c ldr r1, [r2] | r1 = *(r2);
0x0002f280 add r0, r0, 0x5d0 | r0 += 0x5d0;
0x0002f284 b 0x2e070 | goto label_10;
| label_102:
0x0002f288 ldr r3, [r5] | r3 = *(r5);
0x0002f28c add r4, r0, 0x4000 | r4 = r0 + 0x4000;
0x0002f290 str r3, [r4, 0xa00] | *((r4 + 0xa00)) = r3;
0x0002f294 mov r5, 0 | r5 = 0;
0x0002f298 b 0x2d7e0 | goto label_2;
| label_207:
0x0002f29c ldr r3, [r2] | r3 = *(r2);
0x0002f2a0 add r4, r0, 0x4000 | r4 = r0 + 0x4000;
0x0002f2a4 str r3, [r4, 0xa5c] | *((r4 + 0xa5c)) = r3;
0x0002f2a8 mov r5, 0 | r5 = 0;
0x0002f2ac b 0x2d7e0 | goto label_2;
| label_218:
0x0002f2b0 ldr r1, [r2] | r1 = *(r2);
0x0002f2b4 add sp, sp, 0x10 |
0x0002f2b8 pop {r4, r5, r6, r7, r8, lr} |
0x0002f2bc b 0x26b5c | void (*0x26b5c)() ();
| label_219:
0x0002f2c0 ldr r1, [r2] | r1 = *(r2);
0x0002f2c4 add sp, sp, 0x10 |
0x0002f2c8 pop {r4, r5, r6, r7, r8, lr} |
0x0002f2cc b 0x26b64 | void (*0x26b64)() ();
| label_213:
0x0002f2d0 ldr r1, [r2] | r1 = *(r2);
0x0002f2d4 add sp, sp, 0x10 |
0x0002f2d8 pop {r4, r5, r6, r7, r8, lr} |
0x0002f2dc b 0x26b6c | void (*0x26b6c)() ();
| label_106:
0x0002f2e0 ldr r3, [r5] | r3 = *(r5);
0x0002f2e4 mov r5, 0 | r5 = 0;
0x0002f2e8 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f2ec movne r3, 1 | r3 = 1;
| }
0x0002f2f0 strb r3, [r0, 0x630] | *((r0 + 0x630)) = r3;
0x0002f2f4 b 0x2d7e0 | goto label_2;
| label_103:
0x0002f2f8 ldr r3, [r5] | r3 = *(r5);
0x0002f2fc cmp r3, 0 |
| if (r3 < 0) {
0x0002f300 strge r3, [r0, 0x634] | *((r0 + 0x634)) = r3;
| }
| if (r3 < 0) {
0x0002f304 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002f308 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002f30c b 0x2d7e0 | goto label_2;
| label_108:
0x0002f310 ldr r3, [r5] | r3 = *(r5);
0x0002f314 cmp r3, 0 |
| if (r3 < 0) {
0x0002f318 strge r3, [r0, 0x638] | *((r0 + 0x638)) = r3;
| }
| if (r3 < 0) {
0x0002f31c movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002f320 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002f324 b 0x2d7e0 | goto label_2;
| label_122:
0x0002f328 ldr r3, [r2] | r3 = *(r2);
0x0002f32c mov r5, 0 | r5 = 0;
0x0002f330 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f334 movne r3, 1 | r3 = 1;
| }
0x0002f338 strb r3, [r0, 0x63c] | *((r0 + 0x63c)) = r3;
0x0002f33c b 0x2d7e0 | goto label_2;
| label_82:
0x0002f340 ldr r3, [r2] | r3 = *(r2);
0x0002f344 mov r5, 0 | r5 = 0;
0x0002f348 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f34c movne r3, 1 | r3 = 1;
| }
0x0002f350 strb r3, [r0, 0x644] | *((r0 + 0x644)) = r3;
0x0002f354 b 0x2d7e0 | goto label_2;
| label_115:
0x0002f358 ldr r3, [r2] | r3 = *(r2);
0x0002f35c mov r5, 0 | r5 = 0;
0x0002f360 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f364 movne r3, 1 | r3 = 1;
| }
0x0002f368 strb r3, [r0, 0x645] | *((r0 + 0x645)) = r3;
0x0002f36c b 0x2d7e0 | goto label_2;
| label_221:
0x0002f370 mov r3, 0 | r3 = 0;
| do {
0x0002f374 strb r3, [r4, 0x664] | *((r4 + 0x664)) = r3;
0x0002f378 ldr r1, [r5] | r1 = *(r5);
0x0002f37c add r0, r4, 0x5e0 | r0 = r4 + 0x5e0;
0x0002f380 b 0x2da00 | goto label_4;
| label_240:
0x0002f384 mov r3, 1 | r3 = 1;
0x0002f388 b 0x2f374 |
| } while (1);
| label_117:
0x0002f38c ldr r3, [r2] | r3 = *(r2);
0x0002f390 mov r5, 0 | r5 = 0;
0x0002f394 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f398 movne r3, 1 | r3 = 1;
| }
0x0002f39c strb r3, [r0, 0x646] | *((r0 + 0x646)) = r3;
0x0002f3a0 b 0x2d7e0 | goto label_2;
| label_111:
0x0002f3a4 ldr r3, [r2] | r3 = *(r2);
0x0002f3a8 mov r5, 0 | r5 = 0;
0x0002f3ac adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f3b0 movne r3, 1 | r3 = 1;
| }
0x0002f3b4 strb r3, [r0, 0x647] | *((r0 + 0x647)) = r3;
0x0002f3b8 b 0x2d7e0 | goto label_2;
| label_230:
0x0002f3bc ldr r3, [r2] | r3 = *(r2);
0x0002f3c0 mov r5, 0 | r5 = 0;
0x0002f3c4 str r3, [r0, 0x3c4] | *((r0 + 0x3c4)) = r3;
0x0002f3c8 b 0x2d7e0 | goto label_2;
| label_130:
0x0002f3cc ldr r3, [r2] | r3 = *(r2);
0x0002f3d0 mov r5, 0 | r5 = 0;
0x0002f3d4 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f3d8 movne r3, 1 | r3 = 1;
| }
0x0002f3dc strb r3, [r0, 0x4c0] | *((r0 + 0x4c0)) = r3;
0x0002f3e0 b 0x2d7e0 | goto label_2;
| label_127:
0x0002f3e4 ldr r3, [r2] | r3 = *(r2);
0x0002f3e8 cmp r3, 0 |
| if (r3 < 0) {
0x0002f3ec strge r3, [r0, 0x1ec] | *((r0 + 0x1ec)) = r3;
| }
| if (r3 < 0) {
0x0002f3f0 movge r5, 0 | r5 = 0;
| }
| if (r3 >= 0) {
0x0002f3f4 movlt r5, 0x2b | r5 = 0x2b;
| }
0x0002f3f8 b 0x2d7e0 | goto label_2;
| label_131:
0x0002f3fc ldr r3, [r2] | r3 = *(r2);
0x0002f400 mov r5, 0 | r5 = 0;
0x0002f404 adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f408 movne r3, 1 | r3 = 1;
| }
0x0002f40c strb r3, [r0, 0x64d] | *((r0 + 0x64d)) = r3;
0x0002f410 b 0x2d7e0 | goto label_2;
| label_132:
0x0002f414 ldr r3, [r2] | r3 = *(r2);
0x0002f418 mov r5, 0 | r5 = 0;
0x0002f41c adds r3, r3, 0 | r3 += 0;
| if (r3 == r3) {
0x0002f420 movne r3, 1 | r3 = 1;
| }
0x0002f424 strb r3, [r0, 0x670] | *((r0 + 0x670)) = r3;
0x0002f428 b 0x2d7e0 | goto label_2;
| label_290:
0x0002f42c str r5, [r4, 0x154] | *((r4 + 0x154)) = r5;
0x0002f430 mov r5, 0 | r5 = 0;
0x0002f434 b 0x2d7e0 | goto label_2;
| label_74:
0x0002f438 str r5, [r4, 0x158] | *((r4 + 0x158)) = r5;
0x0002f43c mov r5, 0 | r5 = 0;
0x0002f440 b 0x2d7e0 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x22dac */
| #include <stdint.h>
|
; (fcn) sym.Curl_wait_ms () | void Curl_wait_ms (int32_t arg1) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_18h;
| int32_t var_24h;
| r0 = arg1;
0x00022dac push {r4, r5, r6, r7, r8, sb, lr} |
0x00022db0 subs r5, r0, 0 | r5 = r0 - 0;
0x00022db4 sub sp, sp, 0x24 |
| if (r5 != r0) {
0x00022db8 beq 0x22dd0 |
| if (r5 >= r0) {
0x00022dbc bge 0x22ddc | goto label_1;
| }
0x00022dc0 bl 0x4eb4 | errno_location ();
0x00022dc4 mvn r5, 0 | r5 = ~0;
0x00022dc8 mov r3, 0x16 | r3 = 0x16;
0x00022dcc str r3, [r0] | *(r0) = r3;
| }
| label_0:
0x00022dd0 mov r0, r5 | r0 = r5;
0x00022dd4 add sp, sp, 0x24 |
0x00022dd8 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x00022ddc add r6, sp, 0x10 | r6 += var_10h;
0x00022de0 mov r0, r6 | r0 = r6;
0x00022de4 bl 0x69f0 | Curl_now ();
0x00022de8 ldr sb, [pc, 0xb4] | sb = *(0x22ea0);
0x00022dec mov r4, r5 | r4 = r5;
0x00022df0 mov r8, 0x3e8 | r8 = 0x3e8;
0x00022df4 add r7, sp, 8 | r7 += var_8h;
0x00022df8 add sb, pc, sb | sb = pc + sb;
| do {
0x00022dfc mov r1, 0x3e8 | r1 = 0x3e8;
0x00022e00 mov r0, r4 | r0 = r4;
0x00022e04 bl 0x37f24 | divsi3 ();
0x00022e08 mov r1, 0x3e8 | r1 = 0x3e8;
0x00022e0c str r0, [sp, 8] | var_8h = r0;
0x00022e10 mov r0, r4 | r0 = r4;
0x00022e14 bl 0x38000 | aeabi_idivmod ();
0x00022e18 str r7, [sp] | *(sp) = r7;
0x00022e1c mul r3, r8, r1 | r3 = r8 * r1;
0x00022e20 str r3, [sp, 0xc] | var_ch = r3;
0x00022e24 mov r3, 0 | r3 = 0;
0x00022e28 mov r2, r3 | r2 = r3;
0x00022e2c mov r1, r3 | r1 = r3;
0x00022e30 mov r0, r3 | r0 = r3;
0x00022e34 bl 0x5364 | r0 = select ();
0x00022e38 cmn r0, 1 |
0x00022e3c mov r4, r0 | r4 = r0;
| if (r0 != 1) {
0x00022e40 bne 0x22e90 | goto label_2;
| }
0x00022e44 bl 0x4eb4 | r0 = errno_location ();
0x00022e48 ldr r3, [r0] | r3 = *(r0);
0x00022e4c cmp r3, 0 |
| if (r3 != 0) {
0x00022e50 beq 0x22e64 |
0x00022e54 ldr r2, [sb] | r2 = *(sb);
0x00022e58 cmp r3, 4 |
0x00022e5c cmpeq r2, 0 | __asm ("cmpeq r2, 0");
| if (r3 != 4) {
0x00022e60 bne 0x22e9c | goto label_3;
| }
| }
0x00022e64 add r4, sp, 0x18 | r4 += var_18h;
0x00022e68 mov r0, r4 | r0 = r4;
0x00022e6c bl 0x69f0 | r0 = Curl_now ();
0x00022e70 ldm r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x00022e74 ldm r6, {r2, r3} | r2 = *(r6);
| r3 = *((r6 + 4));
0x00022e78 bl 0x6a20 | r0 = Curl_timediff ();
0x00022e7c sub r4, r5, r0 | r4 = r5 - r0;
0x00022e80 cmp r4, 0 |
0x00022e84 bgt 0x22dfc |
| } while (r4 > 0);
0x00022e88 mov r4, 0 | r4 = 0;
0x00022e8c b 0x22e9c | goto label_3;
| label_2:
0x00022e90 adds r4, r0, 0 | r4 = r0 + 0;
| if (r4 == r0) {
0x00022e94 movne r4, 1 | r4 = 1;
| }
0x00022e98 rsb r4, r4, 0 | r4 -= ;
| label_3:
0x00022e9c mov r5, r4 | r5 = r4;
0x00022ea0 b 0x22dd0 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2ff80 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym._Curl_auth_create_digest_http_message () | void Curl_auth_create_digest_http_message (int32_t arg_180h, int32_t arg_184h, int32_t arg_188h, int32_t arg_18ch, int32_t arg_190h, int32_t arg_194h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| size_t nmeb;
| size_t var_48h;
| size_t size;
| int32_t var_d0h;
| char * s;
| int32_t var_15ch;
| r0 = arg1;
| r1 = arg2;
0x0002ff80 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002ff84 ldr sl, [pc, 0x4e8] | sl = *(0x30470);
0x0002ff88 sub sp, sp, 0x15c |
0x0002ff8c ldr r4, [sp, 0x184] | r4 = *(arg_184h);
0x0002ff90 str r3, [sp, 0x1c] | var_1ch = r3;
0x0002ff94 mov r3, 0 | r3 = 0;
0x0002ff98 str r3, [sp, 0x20] | var_20h = r3;
0x0002ff9c str r3, [sp, 0x24] | var_24h = r3;
0x0002ffa0 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0002ffa4 add sl, pc, sl | sl = pc + sl;
0x0002ffa8 cmp r3, 0 |
| if (r3 != 0) {
0x0002ffac moveq r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x0002ffb0 streq r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| }
0x0002ffb4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0002ffb8 mov sb, r0 | sb = r0;
0x0002ffbc cmp r3, 0 |
0x0002ffc0 mov r7, r1 | r7 = r1;
0x0002ffc4 mov r6, r2 | r6 = r2;
0x0002ffc8 ldr r8, [sp, 0x194] | r8 = *(arg_194h);
| if (r3 == 0) {
0x0002ffcc bne 0x3001c |
0x0002ffd0 add r5, sp, 0x114 | r5 += s;
0x0002ffd4 mov r2, 0x21 | r2 = 0x21;
0x0002ffd8 mov r1, r5 | r1 = r5;
0x0002ffdc bl 0x28260 | r0 = Curl_rand_hex ();
0x0002ffe0 cmp r0, 0 |
| if (r0 != 0) {
0x0002ffe4 bne 0x30048 | goto label_1;
| }
0x0002ffe8 mov r0, r5 | r0 = r5;
0x0002ffec bl 0x5250 | strlen (r0);
0x0002fff0 add r3, sp, 0x24 | r3 += var_24h;
0x0002fff4 str r3, [sp] | *(sp) = r3;
0x0002fff8 mov r1, r5 | r1 = r5;
0x0002fffc add r3, sp, 0x20 | r3 += var_20h;
0x00030000 mov r2, r0 | r2 = r0;
0x00030004 mov r0, sb | r0 = sb;
0x00030008 bl 0x6e88 | r0 = Curl_base64_encode ();
0x0003000c cmp r0, 0 |
| if (r0 != 0) {
0x00030010 bne 0x30048 | goto label_1;
| }
0x00030014 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00030018 str r3, [r4, 4] | *((r4 + 4)) = r3;
| }
0x0003001c ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00030020 cmp r3, 0 |
| if (r3 == 0) {
0x00030024 beq 0x30084 | goto label_6;
| }
0x00030028 ldr r0, [pc, 0x448] | r0 = *(0x30474);
0x0003002c ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00030030 mov r1, r7 | r1 = r7;
0x00030034 add r0, pc, r0 | r0 = pc + r0;
0x00030038 bl 0x5b80 | r0 = fcn_00005b80 ();
0x0003003c subs sb, r0, 0 | sb = r0 - 0;
0x00030040 bne 0x30050 |
| while (sb == r0) {
| label_0:
0x00030044 mov r0, 0x1b | r0 = 0x1b;
| label_1:
0x00030048 add sp, sp, 0x15c |
0x0003004c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00030050 add r5, sp, 0x28 | r5 += nmeb;
0x00030054 mov r1, sb | r1 = sb;
0x00030058 mov r0, r5 | r0 = r5;
0x0003005c blx r8 | uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
0x00030060 ldr r3, [pc, 0x414] |
0x00030064 mov r0, sb | r0 = sb;
0x00030068 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0003006c ldr r3, [r3] | r3 = "me_field";
0x00030070 blx r3 | uint32_t (*r3)(uint32_t, char*) (r0, "me_field");
0x00030074 add r1, sp, 0xd0 | r1 += var_d0h;
0x00030078 mov r0, r5 | r0 = r5;
0x0003007c ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x00030080 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_6:
0x00030084 ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00030088 ldr fp, [pc, 0x3f0] | fp = *(0x3047c);
0x0003008c cmp r3, 0 |
0x00030090 add fp, pc, fp |
| if (r3 == 0) {
0x00030094 addne r1, sp, 0xd0 | r1 += var_d0h;
| }
| if (r3 != 0) {
0x00030098 moveq r1, r7 | r1 = r7;
| }
0x0003009c mov r3, r6 | r3 = r6;
0x000300a0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000300a4 mov r0, fp | r0 = fp;
0x000300a8 bl 0x5b80 | r0 = fcn_00005b80 ();
0x000300ac subs sb, r0, 0 | sb = r0 - 0;
0x000300b0 beq 0x30044 |
| }
0x000300b4 add r5, sp, 0x28 | r5 += nmeb;
0x000300b8 mov r1, sb | r1 = sb;
0x000300bc mov r0, r5 | r0 = r5;
0x000300c0 blx r8 | uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
0x000300c4 ldr r3, [pc, 0x3b0] | r3 = "me_field";
0x000300c8 mov r0, sb | r0 = sb;
0x000300cc ldr r6, [sl, r3] | r6 = *((sl + r3));
0x000300d0 add sb, sp, 0x8c | sb += size;
0x000300d4 ldr r3, [r6] | r3 = *(r6);
0x000300d8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000300dc ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x000300e0 mov r1, sb | r1 = sb;
0x000300e4 mov r0, r5 | r0 = r5;
0x000300e8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000300ec ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000300f0 bic r2, r3, 2 | r2 = BIT_MASK (r3, 2);
0x000300f4 cmp r3, 5 |
0x000300f8 cmpne r2, 1 | __asm ("cmpne r2, 1");
| if (r3 != 5) {
0x000300fc bne 0x30140 | goto label_7;
| }
0x00030100 mov r0, fp | r0 = fp;
0x00030104 ldm r4, {r2, r3} | r2 = *(r4);
| r3 = *((r4 + 4));
0x00030108 mov r1, sb | r1 = sb;
0x0003010c bl 0x5b80 | r0 = fcn_00005b80 ();
0x00030110 subs fp, r0, 0 |
| if (fp == r0) {
0x00030114 beq 0x30044 | goto label_0;
| }
0x00030118 mov r1, fp | r1 = fp;
0x0003011c mov r0, r5 | r0 = r5;
0x00030120 blx r8 | uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
0x00030124 ldr r3, [r6] | r3 = *(r6);
0x00030128 mov r0, fp | r0 = fp;
0x0003012c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00030130 mov r1, sb | r1 = sb;
0x00030134 mov r0, r5 | r0 = r5;
0x00030138 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0003013c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_7:
0x00030140 ldr fp, [pc, 0x33c] | fp = *(0x00030484);
0x00030144 ldr r2, [sp, 0x180] | r2 = *(arg_180h);
0x00030148 add fp, pc, fp |
0x0003014c ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00030150 mov r0, fp | r0 = fp;
0x00030154 bl 0x5b80 | r0 = fcn_00005b80 ();
0x00030158 mov sb, r0 | sb = r0;
0x0003015c ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00030160 cmp r0, 0 |
| if (r0 != 0) {
0x00030164 beq 0x301c8 |
0x00030168 ldr r1, [pc, 0x318] | r1 = *(0x30484);
0x0003016c add r1, pc, r1 | r1 = pc + r1;
0x00030170 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00030174 cmp r0, 0 |
| if (r0 == 0) {
0x00030178 beq 0x301c8 | goto label_8;
| }
0x0003017c ldr r1, [pc, 0x308] | r1 = *(0x30488);
0x00030180 mov r0, r5 | r0 = r5;
0x00030184 add r1, pc, r1 | r1 = pc + r1;
0x00030188 blx r8 | uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
0x0003018c add r2, sp, 0x114 | r2 += s;
0x00030190 mov r1, r2 | r1 = r2;
0x00030194 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x00030198 mov r0, r5 | r0 = r5;
0x0003019c str r2, [sp, 0x1c] | var_1ch = r2;
0x000301a0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000301a4 mov r1, sb | r1 = sb;
0x000301a8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000301ac mov r0, fp | r0 = fp;
0x000301b0 bl 0x5b80 | fcn_00005b80 ();
0x000301b4 ldr r3, [r6] | r3 = *(r6);
0x000301b8 mov fp, r0 |
0x000301bc mov r0, sb | r0 = sb;
0x000301c0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000301c4 mov sb, fp | sb = fp;
| }
| label_8:
0x000301c8 cmp sb, 0 |
| if (sb == 0) {
0x000301cc beq 0x30044 | goto label_0;
| }
0x000301d0 mov r1, sb | r1 = sb;
0x000301d4 mov r0, r5 | r0 = r5;
0x000301d8 blx r8 | uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
0x000301dc mov r0, sb | r0 = sb;
0x000301e0 ldr r3, [r6] | r3 = *(r6);
0x000301e4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000301e8 add sb, sp, 0x114 | sb += s;
0x000301ec mov r1, sb | r1 = sb;
0x000301f0 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x000301f4 mov r0, r5 | r0 = r5;
0x000301f8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000301fc ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00030200 add r1, sp, 0x8c | r1 += size;
0x00030204 cmp r3, 0 |
| if (r3 == 0) {
0x00030208 beq 0x303fc | goto label_9;
| }
0x0003020c stmib sp, {r3, sb} | __asm ("stmib sp, {r3, sb}");
0x00030210 ldr r0, [pc, 0x278] | r0 = *(0x3048c);
0x00030214 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00030218 add r0, pc, r0 | r0 = pc + r0;
0x0003021c str r3, [sp] | *(sp) = r3;
0x00030220 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00030224 ldr r2, [r4] | r2 = *(r4);
0x00030228 bl 0x5b80 | r0 = fcn_00005b80 ();
| label_2:
0x0003022c cmp r0, 0 |
0x00030230 mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x00030234 beq 0x30044 | goto label_0;
| }
0x00030238 mov r1, r0 | r1 = r0;
0x0003023c mov r0, r5 | r0 = r5;
0x00030240 blx r8 | uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
0x00030244 ldr r3, [r6] | r3 = *(r6);
0x00030248 mov r0, sb | r0 = sb;
0x0003024c add r8, sp, 0x48 | r8 += var_48h;
0x00030250 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00030254 mov r0, r5 | r0 = r5;
0x00030258 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0003025c mov r1, r8 | r1 = r8;
0x00030260 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00030264 ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00030268 mov r0, 1 | r0 = 1;
0x0003026c cmp r3, 0 |
| if (r3 == 0) {
0x00030270 addne r7, sp, 0xd0 | r7 += var_d0h;
| }
0x00030274 sub r7, r7, 1 | r7--;
0x00030278 mov r2, r7 | r2 = r7;
| label_3:
0x0003027c ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00030280 cmp r3, 0 |
| if (r3 != 0) {
0x00030284 bne 0x30414 | goto label_10;
| }
0x00030288 ldr r3, [pc, 0x204] |
0x0003028c ldr r3, [sl, r3] | r3 = *((sl + r3));
0x00030290 ldr r3, [r3] | r3 = *(0x30490);
0x00030294 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00030298 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x0003029c movne r3, sb | r3 = sb;
| }
| if (sb != r0) {
0x000302a0 movne r1, 0x5c | r1 = 0x5c;
| goto label_11;
| }
| if (sb == r0) {
| label_11:
0x000302a4 beq 0x30044 | goto label_0;
| }
| label_4:
0x000302a8 ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x000302ac cmp r2, 0 |
| if (r2 != 0) {
0x000302b0 bne 0x30428 | goto label_12;
| }
0x000302b4 strb r2, [r3] | *(r3) = r2;
0x000302b8 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000302bc cmp r3, 0 |
| if (r3 == 0) {
0x000302c0 beq 0x30448 | goto label_13;
| }
0x000302c4 str r8, [sp, 0x10] | var_10h = r8;
0x000302c8 str r3, [sp, 0xc] | var_ch = r3;
0x000302cc ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000302d0 ldr r0, [pc, 0x1c0] | r0 = *(0x30494);
0x000302d4 str r3, [sp, 8] | var_8h = r3;
0x000302d8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000302dc mov r1, sb | r1 = sb;
0x000302e0 str r3, [sp, 4] | var_4h = r3;
0x000302e4 ldr r3, [sp, 0x180] | r3 = *(arg_180h);
0x000302e8 add r0, pc, r0 | r0 = pc + r0;
0x000302ec str r3, [sp] | *(sp) = r3;
0x000302f0 ldr r3, [r4] | r3 = *(r4);
0x000302f4 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000302f8 bl 0x5b80 | fcn_00005b80 ();
0x000302fc ldr r1, [pc, 0x198] | r1 = *(0x30498);
0x00030300 add r1, pc, r1 | r1 = pc + r1;
0x00030304 mov r5, r0 | r5 = r0;
0x00030308 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0003030c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00030310 cmp r0, 0 |
| if (r0 == 0) {
0x00030314 ldrne r3, [r4, 0x20] | r3 = *((r4 + 0x20));
| }
| if (r0 == 0) {
0x00030318 addne r3, r3, 1 | r3++;
| }
| if (r0 == 0) {
0x0003031c strne r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| }
| label_5:
0x00030320 ldr r3, [r6] | r3 = *(r6);
0x00030324 mov r0, sb | r0 = sb;
0x00030328 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0003032c cmp r5, 0 |
| if (r5 == 0) {
0x00030330 beq 0x30044 | goto label_0;
| }
0x00030334 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00030338 cmp r2, 0 |
| if (r2 == 0) {
0x0003033c beq 0x3036c | goto label_14;
| }
0x00030340 ldr r0, [pc, 0x158] | r0 = *(0x3049c);
0x00030344 mov r1, r5 | r1 = r5;
0x00030348 add r0, pc, r0 | r0 = pc + r0;
0x0003034c bl 0x5b80 | fcn_00005b80 ();
0x00030350 ldr r3, [r6] | r3 = *(r6);
0x00030354 mov r7, r0 | r7 = r0;
0x00030358 mov r0, r5 | r0 = r5;
0x0003035c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00030360 cmp r7, 0 |
| if (r7 == 0) {
0x00030364 beq 0x30044 | goto label_0;
| }
0x00030368 mov r5, r7 | r5 = r7;
| label_14:
0x0003036c ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x00030370 cmp r2, 0 |
| if (r2 == 0) {
0x00030374 beq 0x303a4 | goto label_15;
| }
0x00030378 ldr r0, [pc, 0x124] | r0 = *(0x304a0);
0x0003037c mov r1, r5 | r1 = r5;
0x00030380 add r0, pc, r0 | r0 = pc + r0;
0x00030384 bl 0x5b80 | fcn_00005b80 ();
0x00030388 ldr r3, [r6] | r3 = *(r6);
0x0003038c mov r7, r0 | r7 = r0;
0x00030390 mov r0, r5 | r0 = r5;
0x00030394 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00030398 cmp r7, 0 |
| if (r7 == 0) {
0x0003039c beq 0x30044 | goto label_0;
| }
0x000303a0 mov r5, r7 | r5 = r7;
| label_15:
0x000303a4 ldrb r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000303a8 cmp r3, 0 |
| if (r3 == 0) {
0x000303ac beq 0x303dc | goto label_16;
| }
0x000303b0 ldr r0, [pc, 0xf0] | r0 = *(0x304a4);
0x000303b4 mov r1, r5 | r1 = r5;
0x000303b8 add r0, pc, r0 | r0 = pc + r0;
0x000303bc bl 0x5b80 | fcn_00005b80 ();
0x000303c0 ldr r3, [r6] | r3 = *(r6);
0x000303c4 mov r4, r0 | r4 = r0;
0x000303c8 mov r0, r5 | r0 = r5;
0x000303cc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000303d0 cmp r4, 0 |
| if (r4 == 0) {
0x000303d4 beq 0x30044 | goto label_0;
| }
0x000303d8 mov r5, r4 | r5 = r4;
| label_16:
0x000303dc ldr r3, [sp, 0x188] | r3 = *(arg_188h);
0x000303e0 mov r0, r5 | r0 = r5;
0x000303e4 str r5, [r3] | *(r3) = r5;
0x000303e8 bl 0x5250 | strlen (r0);
0x000303ec ldr r3, [sp, 0x18c] | r3 = *(arg_18ch);
0x000303f0 str r0, [r3] | *(r3) = r0;
0x000303f4 mov r0, 0 | r0 = 0;
0x000303f8 b 0x30048 | goto label_1;
| label_9:
0x000303fc ldr r0, [pc, 0xa8] | r0 = *(0x304a8);
0x00030400 mov r3, sb | r3 = sb;
0x00030404 ldr r2, [r4] | r2 = *(r4);
0x00030408 add r0, pc, r0 | r0 = pc + r0;
0x0003040c bl 0x5b80 | fcn_00005b80 ();
0x00030410 b 0x3022c | goto label_2;
| label_10:
0x00030414 cmp r3, 0x5c |
0x00030418 cmpne r3, 0x22 | __asm ("cmpne r3, 0x22");
| if (r3 == 0x5c) {
0x0003041c addne r0, r0, 1 | r0++;
| }
| if (r3 != 0x5c) {
0x00030420 addeq r0, r0, 2 | r0 += 2;
| }
0x00030424 b 0x3027c | goto label_3;
| label_12:
0x00030428 cmp r2, 0x5c |
0x0003042c cmpne r2, 0x22 | __asm ("cmpne r2, 0x22");
| if (r2 != 0x5c) {
0x00030430 strbeq r1, [r3] | *(r3) = r1;
| }
0x00030434 ldrb r2, [r7] | r2 = *(r7);
| if (r2 != 0x5c) {
0x00030438 addeq r3, r3, 1 | r3++;
| }
0x0003043c strb r2, [r3] | *(r3) = r2;
0x00030440 add r3, r3, 1 | r3++;
0x00030444 b 0x302a8 | goto label_4;
| label_13:
0x00030448 ldr r3, [sp, 0x180] | r3 = *(arg_180h);
0x0003044c ldr r0, [pc, 0x5c] | r0 = *(0x304ac);
0x00030450 str r8, [sp, 4] | var_4h = r8;
0x00030454 str r3, [sp] | *(sp) = r3;
0x00030458 mov r1, sb | r1 = sb;
0x0003045c ldr r3, [r4] | r3 = *(r4);
0x00030460 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00030464 add r0, pc, r0 | r0 = pc + r0;
0x00030468 bl 0x5b80 | r0 = fcn_00005b80 ();
0x0003046c mov r5, r0 | r5 = r0;
0x00030470 b 0x30320 | goto label_5;
| }
r2dec has crashed (info: /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x3802c).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x3864c */
| #include <stdint.h>
|
; (fcn) sym.__divdf3 () | void divdf3 (int32_t arg2) {
| r1 = arg2;
0x0003864c push {r4, r5, r6, lr} |
0x00038650 mov ip, 0xff |
0x00038654 orr ip, ip, 0x700 |
0x00038658 ands r4, ip, r1, lsr 20 | r4 = ip & (r1 >> 20);
0x0003865c andsne r5, ip, r3, lsr 20 | __asm ("andsne r5, ip, r3, lsr 20");
0x00038660 teqne r4, ip | __asm ("teqne r4, ip");
0x00038664 teqne r5, ip | __asm ("teqne r5, ip");
0x00038668 bleq 0x387e0 | __asm ("bleq fcn.000387e0");
0x0003866c sub r4, r4, r5 | r4 -= r5;
0x00038670 eor lr, r1, r3 | lr = r1 ^ r3;
0x00038674 orrs r5, r2, r3, lsl 12 | r5 = r2 | (r3 << 12);
0x00038678 lsl r1, r1, 0xc | r1 <<= 0xc;
| if (r5 == r2) {
0x0003867c beq 0x387b0 | goto label_1;
| }
0x00038680 lsl r3, r3, 0xc | r3 <<= 0xc;
0x00038684 mov r5, 0x10000000 | r5 = 0x10000000;
0x00038688 orr r3, r5, r3, lsr 4 | r3 = r5 | (r3 >> 4);
0x0003868c orr r3, r3, r2, lsr 24 | r3 |= (r2 >> 24);
0x00038690 lsl r2, r2, 8 | r2 <<= 8;
0x00038694 orr r5, r5, r1, lsr 4 | r5 |= (r1 >> 4);
0x00038698 orr r5, r5, r0, lsr 24 | r5 |= (r0 >> 24);
0x0003869c lsl r6, r0, 8 | r6 = r0 << 8;
0x000386a0 and r1, lr, 0x80000000 | r1 = lr & 0x80000000;
0x000386a4 cmp r5, r3 |
0x000386a8 cmpeq r6, r2 | __asm ("cmpeq r6, r2");
0x000386ac adc r4, r4, 0xfd | __asm ("adc r4, r4, 0xfd");
0x000386b0 add r4, r4, 0x300 | r4 += 0x300;
| if (r5 < r3) {
0x000386b4 bhs 0x386c0 |
0x000386b8 lsrs r3, r3, 1 | r3 >>= 1;
0x000386bc rrx r2, r2 | __asm ("rrx r2, r2");
| }
0x000386c0 subs r6, r6, r2 | r6 -= r2;
0x000386c4 sbc r5, r5, r3 | __asm ("sbc r5, r5, r3");
0x000386c8 lsrs r3, r3, 1 | r3 >>= 1;
0x000386cc rrx r2, r2 | __asm ("rrx r2, r2");
0x000386d0 mov r0, 0x100000 | r0 = 0x100000;
0x000386d4 mov ip, 0x80000 |
| do {
| label_0:
0x000386d8 subs lr, r6, r2 | lr = r6 - r2;
0x000386dc sbcs lr, r5, r3 | __asm ("sbcs lr, r5, r3");
| if (lr < r6) {
0x000386e0 subhs r6, r6, r2 | r6 -= r2;
| }
| if (lr < r6) {
0x000386e4 movhs r5, lr | r5 = lr;
| }
| if (lr < r6) {
0x000386e8 orrhs r0, r0, ip | r0 |= ip;
| }
0x000386ec lsrs r3, r3, 1 | r3 >>= 1;
0x000386f0 rrx r2, r2 | __asm ("rrx r2, r2");
0x000386f4 subs lr, r6, r2 | lr = r6 - r2;
0x000386f8 sbcs lr, r5, r3 | __asm ("sbcs lr, r5, r3");
| if (lr < r6) {
0x000386fc subhs r6, r6, r2 | r6 -= r2;
| }
| if (lr < r6) {
0x00038700 movhs r5, lr | r5 = lr;
| }
| if (lr < r6) {
0x00038704 orrhs r0, r0, ip, lsr 1 | r0 |= (ip >> 1);
| }
0x00038708 lsrs r3, r3, 1 | r3 >>= 1;
0x0003870c rrx r2, r2 | __asm ("rrx r2, r2");
0x00038710 subs lr, r6, r2 | lr = r6 - r2;
0x00038714 sbcs lr, r5, r3 | __asm ("sbcs lr, r5, r3");
| if (lr < r6) {
0x00038718 subhs r6, r6, r2 | r6 -= r2;
| }
| if (lr < r6) {
0x0003871c movhs r5, lr | r5 = lr;
| }
| if (lr < r6) {
0x00038720 orrhs r0, r0, ip, lsr 2 | r0 |= (ip >> 2);
| }
0x00038724 lsrs r3, r3, 1 | r3 >>= 1;
0x00038728 rrx r2, r2 | __asm ("rrx r2, r2");
0x0003872c subs lr, r6, r2 | lr = r6 - r2;
0x00038730 sbcs lr, r5, r3 | __asm ("sbcs lr, r5, r3");
| if (lr < r6) {
0x00038734 subhs r6, r6, r2 | r6 -= r2;
| }
| if (lr < r6) {
0x00038738 movhs r5, lr | r5 = lr;
| }
| if (lr < r6) {
0x0003873c orrhs r0, r0, ip, lsr 3 | r0 |= (ip >> 3);
| }
0x00038740 orrs lr, r5, r6 | lr = r5 | r6;
| if (lr == r5) {
0x00038744 beq 0x38780 | goto label_2;
| }
0x00038748 lsl r5, r5, 4 | r5 <<= 4;
0x0003874c orr r5, r5, r6, lsr 28 | r5 |= (r6 >> 28);
0x00038750 lsl r6, r6, 4 | r6 <<= 4;
0x00038754 lsl r3, r3, 3 | r3 <<= 3;
0x00038758 orr r3, r3, r2, lsr 29 | r3 |= (r2 >> 29);
0x0003875c lsl r2, r2, 3 | r2 <<= 3;
0x00038760 lsrs ip, ip, 4 |
0x00038764 bne 0x386d8 |
| } while (ip != ip);
0x00038768 tst r1, 0x100000 |
| if ((r1 & 0x100000) == 0) {
0x0003876c bne 0x3878c |
0x00038770 orr r1, r1, r0 | r1 |= r0;
0x00038774 mov r0, 0 | r0 = 0;
0x00038778 mov ip, 0x80000000 |
0x0003877c b 0x386d8 | goto label_0;
| label_2:
0x00038780 tst r1, 0x100000 |
| if ((r1 & 0x100000) != 0) {
0x00038784 orreq r1, r1, r0 | r1 |= r0;
| }
| if ((r1 & 0x100000) == 0) {
0x00038788 moveq r0, 0 | r0 = 0;
| goto label_3;
| }
| }
| label_3:
0x0003878c subs ip, r4, 0xfd |
0x00038790 cmphi ip, 0x700 | __asm ("cmphi ip, 0x700");
| if (ip > r4) {
0x00038794 bhi 0x384c4 | void (*0x384c4)() ();
| }
0x00038798 subs ip, r5, r3 |
0x0003879c subseq ip, r6, r2 | __asm ("subseq ip, r6, r2");
0x000387a0 lsrseq ip, r0, 1 | __asm ("lsrseq ip, r0, 1");
0x000387a4 adcs r0, r0, 0 | __asm ("adcs r0, r0, 0");
0x000387a8 adc r1, r1, r4, lsl 20 | __asm ("adc r1, r1, r4, lsl 20");
0x000387ac pop {r4, r5, r6, pc} |
| label_1:
0x000387b0 and lr, lr, 0x80000000 | lr &= 0x80000000;
0x000387b4 orr r1, lr, r1, lsr 12 | r1 = lr | (r1 >> 12);
0x000387b8 adds r4, r4, ip, lsr 1 | r4 += (ip >> 1);
0x000387bc rsbsgt r5, r4, ip | __asm ("rsbsgt r5, r4, ip");
| if (r4 <= r4) {
0x000387c0 orrgt r1, r1, r4, lsl 20 | r1 |= (r4 << 20);
| }
| if (r4 <= r4) {
0x000387c4 popgt {r4, r5, r6, pc} |
| }
0x000387c8 orr r1, r1, 0x100000 | r1 |= 0x100000;
0x000387cc mov lr, 0 | lr = 0;
0x000387d0 subs r4, r4, 1 | r4--;
0x000387d4 b 0x384c4 | return void (*0x384c4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x3836c */
| #include <stdint.h>
|
; (fcn) sym.__floatundidf () | void floatundidf (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0003836c orrs r2, r0, r1 | r2 = r0 | r1;
| if (r2 != r0) {
0x00038370 bxeq lr | return;
| }
0x00038374 push {r4, r5, lr} |
0x00038378 mov r5, 0 | r5 = 0;
0x0003837c b 0x3839c |
0x0003839c mov r4, 0x400 | r4 = 0x400;
0x000383a0 add r4, r4, 0x32 | r4 += 0x32;
0x000383a4 lsrs ip, r1, 0x16 |
| if (ip == r1) {
0x000383a8 beq 0x38118 | void (*0x38118)() ();
| }
0x000383ac mov r2, 3 | r2 = 3;
0x000383b0 lsrs ip, ip, 3 |
| if (ip == ip) {
0x000383b4 addne r2, r2, 3 | r2 += 3;
| }
0x000383b8 lsrs ip, ip, 3 |
| if (ip == ip) {
0x000383bc addne r2, r2, 3 | r2 += 3;
| }
0x000383c0 add r2, r2, ip, lsr 3 | r2 += (ip >> 3);
0x000383c4 rsb r3, r2, 0x20 | r3 = 0x20 - r2;
0x000383c8 lsl ip, r0, r3 |
0x000383cc lsr r0, r0, r2 | r0 >>= r2;
0x000383d0 orr r0, r0, r1, lsl r3 | r0 |= (r1 << r3);
0x000383d4 lsr r1, r1, r2 | r1 >>= r2;
0x000383d8 add r4, r4, r2 | r4 += r2;
0x000383dc b 0x38118 | return void (*0x38118)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x383e0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.__muldf3 () | void muldf3 (int32_t arg2) {
| r1 = arg2;
0x000383e0 push {r4, r5, r6, lr} |
0x000383e4 mov ip, 0xff |
0x000383e8 orr ip, ip, 0x700 |
0x000383ec ands r4, ip, r1, lsr 20 | r4 = ip & (r1 >> 20);
0x000383f0 andsne r5, ip, r3, lsr 20 | __asm ("andsne r5, ip, r3, lsr 20");
0x000383f4 teqne r4, ip | __asm ("teqne r4, ip");
0x000383f8 teqne r5, ip | __asm ("teqne r5, ip");
0x000383fc bleq 0x385c0 | __asm ("bleq fcn.000385c0");
0x00038400 add r4, r4, r5 | r4 += r5;
0x00038404 eor r6, r1, r3 | r6 = r1 ^ r3;
0x00038408 bic r1, r1, ip, lsl 21 | r1 = BIT_MASK (r1, ip);
0x0003840c bic r3, r3, ip, lsl 21 | r3 = BIT_MASK (r3, ip);
0x00038410 orrs r5, r0, r1, lsl 12 | r5 = r0 | (r1 << 12);
0x00038414 orrsne r5, r2, r3, lsl 12 | __asm ("orrsne r5, r2, r3, lsl 12");
0x00038418 orr r1, r1, 0x100000 | r1 |= 0x100000;
0x0003841c orr r3, r3, 0x100000 | r3 |= 0x100000;
| if (r5 != r0) {
0x00038420 beq 0x38498 |
0x00038424 umull ip, lr, r0, r2 | ip:lr = r0 * r2;
0x00038428 mov r5, 0 | r5 = 0;
0x0003842c umlal lr, r5, r1, r2 | __asm ("umlal lr, r5, r1, r2");
0x00038430 and r2, r6, 0x80000000 | r2 = r6 & 0x80000000;
0x00038434 umlal lr, r5, r0, r3 | __asm ("umlal lr, r5, r0, r3");
0x00038438 mov r6, 0 | r6 = 0;
0x0003843c umlal r5, r6, r1, r3 | __asm ("umlal r5, r6, r1, r3");
0x00038440 teq ip, 0 | __asm ("teq ip, 0");
| if (r5 == r0) {
0x00038444 orrne lr, lr, 1 | lr |= 1;
| }
0x00038448 sub r4, r4, 0xff | r4 -= 0xff;
0x0003844c cmp r6, 0x200 |
0x00038450 sbc r4, r4, 0x300 | __asm ("sbc r4, r4, aav.0x000000ff");
| if (r6 < 0x200) {
0x00038454 bhs 0x38464 |
0x00038458 lsls lr, lr, 1 | lr <<= 1;
0x0003845c adcs r5, r5, r5 | __asm ("adcs r5, r5, r5");
0x00038460 adc r6, r6, r6 | __asm ("adc r6, r6, r6");
| }
0x00038464 orr r1, r2, r6, lsl 11 | r1 = r2 | (r6 << 11);
0x00038468 orr r1, r1, r5, lsr 21 | r1 |= (r5 >> 21);
0x0003846c lsl r0, r5, 0xb | r0 = r5 << 0xb;
0x00038470 orr r0, r0, lr, lsr 21 | r0 |= (lr >> 21);
0x00038474 lsl lr, lr, 0xb | lr <<= 0xb;
0x00038478 subs ip, r4, 0xfd |
0x0003847c cmphi ip, 0x700 | __asm ("cmphi ip, 0x700");
| if (ip > r4) {
0x00038480 bhi 0x384c4 | goto label_0;
| }
0x00038484 cmp lr, 0x80000000 |
0x00038488 lsrseq lr, r0, 1 | __asm ("lsrseq lr, r0, 1");
0x0003848c adcs r0, r0, 0 | __asm ("adcs r0, r0, 0");
0x00038490 adc r1, r1, r4, lsl 20 | __asm ("adc r1, r1, r4, lsl 20");
0x00038494 pop {r4, r5, r6, pc} |
| }
0x00038498 and r6, r6, 0x80000000 | r6 &= 0x80000000;
0x0003849c orr r1, r6, r1 | r1 = r6 | r1;
0x000384a0 orr r0, r0, r2 | r0 |= r2;
0x000384a4 eor r1, r1, r3 | r1 ^= r3;
0x000384a8 subs r4, r4, ip, lsr 1 | r4 -= (ip >> 1);
0x000384ac rsbsgt r5, r4, ip | __asm ("rsbsgt r5, r4, ip");
| if (r4 <= r4) {
0x000384b0 orrgt r1, r1, r4, lsl 20 | r1 |= (r4 << 20);
| }
| if (r4 <= r4) {
0x000384b4 popgt {r4, r5, r6, pc} |
| }
0x000384b8 orr r1, r1, 0x100000 | r1 |= 0x100000;
0x000384bc mov lr, 0 | lr = 0;
0x000384c0 subs r4, r4, 1 | r4--;
| if (r4 <= r4) {
| label_0:
0x000384c4 bgt 0x3862c |
0x000384c8 cmn r4, 0x36 |
| if (r4 > 0x36) {
0x000384cc movle r0, 0 | r0 = 0;
| }
| if (r4 > 0x36) {
0x000384d0 andle r1, r1, 0x80000000 | r1 &= 0x80000000;
| }
| if (r4 > 0x36) {
0x000384d4 pople {r4, r5, r6, pc} |
| }
0x000384d8 rsb r4, r4, 0 | r4 -= ;
0x000384dc subs r4, r4, 0x20 | r4 -= 0x20;
| if (r4 < r4) {
0x000384e0 bge 0x38548 |
0x000384e4 adds r4, r4, 0xc | r4 += 0xc;
| if (r4 <= r4) {
0x000384e8 bgt 0x3851c |
0x000384ec add r4, r4, 0x14 | r4 += 0x14;
0x000384f0 rsb r5, r4, 0x20 | r5 = 0x20 - r4;
0x000384f4 lsl r3, r0, r5 | r3 = r0 << r5;
0x000384f8 lsr r0, r0, r4 | r0 >>= r4;
0x000384fc orr r0, r0, r1, lsl r5 | r0 |= (r1 << r5);
0x00038500 and r2, r1, 0x80000000 | r2 = r1 & 0x80000000;
0x00038504 bic r1, r1, 0x80000000 | r1 = BIT_MASK (r1, 0x80000000);
0x00038508 adds r0, r0, r3, lsr 31 | r0 += (r3 >> 31);
0x0003850c adc r1, r2, r1, lsr r4 | __asm ("adc r1, r2, r1, lsr r4");
0x00038510 orrs lr, lr, r3, lsl 1 | lr |= (r3 << 1);
0x00038514 biceq r0, r0, r3, lsr 31 | __asm ("biceq r0, r0, r3, lsr 31");
0x00038518 pop {r4, r5, r6, pc} |
| }
0x0003851c rsb r4, r4, 0xc | r4 = 0xc - r4;
0x00038520 rsb r5, r4, 0x20 | r5 = 0x20 - r4;
0x00038524 lsl r3, r0, r4 | r3 = r0 << r4;
0x00038528 lsr r0, r0, r5 | r0 >>= r5;
0x0003852c orr r0, r0, r1, lsl r4 | r0 |= (r1 << r4);
0x00038530 and r1, r1, 0x80000000 | r1 &= 0x80000000;
0x00038534 adds r0, r0, r3, lsr 31 | r0 += (r3 >> 31);
0x00038538 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x0003853c orrs lr, lr, r3, lsl 1 | lr |= (r3 << 1);
0x00038540 biceq r0, r0, r3, lsr 31 | __asm ("biceq r0, r0, r3, lsr 31");
0x00038544 pop {r4, r5, r6, pc} |
| }
0x00038548 rsb r5, r4, 0x20 | r5 = 0x20 - r4;
0x0003854c orr lr, lr, r0, lsl r5 | lr |= (r0 << r5);
0x00038550 lsr r3, r0, r4 | r3 = r0 >> r4;
0x00038554 orr r3, r3, r1, lsl r5 | r3 |= (r1 << r5);
0x00038558 lsr r0, r1, r4 | r0 = r1 >> r4;
0x0003855c and r1, r1, 0x80000000 | r1 &= 0x80000000;
0x00038560 bic r0, r0, r1, lsr r4 | r0 = BIT_MASK (r0, r1);
0x00038564 add r0, r0, r3, lsr 31 | r0 += (r3 >> 31);
0x00038568 orrs lr, lr, r3, lsl 1 | lr |= (r3 << 1);
0x0003856c biceq r0, r0, r3, lsr 31 | __asm ("biceq r0, r0, r3, lsr 31");
0x00038570 pop {r4, r5, r6, pc} |
| }
0x0003862c and r1, r1, 0x80000000 | r1 &= 0x80000000;
0x00038630 orr r1, r1, 0x7f000000 | r1 |= 0x7f000000;
0x00038634 orr r1, r1, 0xf00000 | r1 |= 0xf00000;
0x00038638 mov r0, 0 | r0 = 0;
0x0003863c pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2ff0c */
| #include <stdint.h>
|
; (fcn) sym.auth_digest_get_key_value () | void auth_digest_get_key_value (int32_t arg_18h, int32_t arg2, const char * s1) {
| r1 = arg2;
| r0 = s1;
0x0002ff0c push {r4, r5, r6, r7, r8, lr} |
0x0002ff10 ldrb r7, [sp, 0x18] | r7 = *(arg_18h);
0x0002ff14 mov r8, r1 | r8 = r1;
0x0002ff18 mov r5, r2 | r5 = r2;
0x0002ff1c mov r6, r3 | r6 = r3;
0x0002ff20 bl 0x5a18 | r0 = strstr (r0, r1);
0x0002ff24 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0002ff28 beq 0x2ff78 | goto label_0;
| }
0x0002ff2c mov r0, r8 | r0 = r8;
0x0002ff30 bl 0x5250 | strlen (r0);
0x0002ff34 sub r6, r6, 1 | r6--;
0x0002ff38 mov r2, r5 | r2 = r5;
0x0002ff3c add r0, r4, r0 | r0 = r4 + r0;
0x0002ff40 sub r3, r0, 1 | r3 = r0 - 1;
| do {
0x0002ff44 ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x0002ff48 cmp r1, r7 |
0x0002ff4c cmpne r1, 0 | __asm ("cmpne r1, 0");
| if (r1 != r7) {
0x0002ff50 beq 0x2ff60 |
0x0002ff54 sub ip, r3, r0 |
0x0002ff58 cmp r6, ip |
| if (r6 > ip) {
0x0002ff5c bhi 0x2ff70 | goto label_1;
| }
| }
0x0002ff60 mov r3, 0 | r3 = 0;
0x0002ff64 strb r3, [r2] | *(r2) = r3;
0x0002ff68 mov r0, 1 | r0 = 1;
0x0002ff6c pop {r4, r5, r6, r7, r8, pc} |
| label_1:
0x0002ff70 strb r1, [r2], 1 | *(r2) = r1;
| r2++;
0x0002ff74 b 0x2ff44 |
| } while (1);
| label_0:
0x0002ff78 mov r0, r4 | r0 = r4;
0x0002ff7c pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1aa04 */
| #include <stdint.h>
|
; (fcn) sym.charclass () | void charclass (int32_t arg1) {
| r0 = arg1;
0x0001aa04 push {r4, lr} |
0x0001aa08 mov r4, r0 | r4 = r0;
0x0001aa0c bl 0x2f9c4 | r0 = Curl_isupper ();
0x0001aa10 cmp r0, 0 |
| if (r0 == 0) {
0x0001aa14 bne 0x1aa3c |
0x0001aa18 mov r0, r4 | r0 = r4;
0x0001aa1c bl 0x2f9ec | r0 = Curl_islower ();
0x0001aa20 cmp r0, 0 |
| if (r0 != 0) {
0x0001aa24 bne 0x1aa44 | goto label_0;
| }
0x0001aa28 mov r0, r4 | r0 = r4;
0x0001aa2c bl 0x2f8c0 | r0 = Curl_isdigit ();
0x0001aa30 adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x0001aa34 movne r0, 1 | r0 = 1;
| }
0x0001aa38 pop {r4, pc} |
| }
0x0001aa3c mov r0, 2 | r0 = 2;
0x0001aa40 pop {r4, pc} |
| label_0:
0x0001aa44 mov r0, 3 | r0 = 3;
0x0001aa48 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x9edc */
| #include <stdint.h>
|
; (fcn) sym.cookiehash () | void cookiehash (int32_t arg1) {
| r0 = arg1;
0x00009edc push {r4, r5, r6, lr} |
0x00009ee0 subs r4, r0, 0 | r4 = r0 - 0;
0x00009ee4 bne 0x9ef0 |
| while (r0 != 0) {
0x00009ee8 mov r0, 0 | r0 = 0;
0x00009eec pop {r4, r5, r6, pc} |
0x00009ef0 bl 0x9e94 | r0 = isip ();
0x00009ef4 cmp r0, 0 |
0x00009ef8 bne 0x9ee8 |
| }
0x00009efc mov r0, r4 | r0 = r4;
0x00009f00 bl 0x5250 | strlen (r0);
0x00009f04 mov r1, 0x2e | r1 = 0x2e;
0x00009f08 mov r2, r0 | r2 = r0;
0x00009f0c mov r6, r0 | r6 = r0;
0x00009f10 mov r0, r4 | r0 = r4;
0x00009f14 bl 0x2514c | r0 = Curl_memrchr ();
0x00009f18 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 != r0) {
0x00009f1c beq 0x9f4c |
0x00009f20 sub r2, r2, r4 | r2 -= r4;
0x00009f24 mov r1, 0x2e | r1 = 0x2e;
0x00009f28 mov r0, r4 | r0 = r4;
0x00009f2c bl 0x2514c | r0 = Curl_memrchr ();
0x00009f30 cmp r0, 0 |
| if (r0 == 0) {
0x00009f34 beq 0x9f4c | goto label_0;
| }
0x00009f38 add r0, r0, 1 | r0++;
0x00009f3c sub r3, r0, r4 | r3 = r0 - r4;
0x00009f40 cmp r0, 0 |
0x00009f44 sub r6, r6, r3 | r6 -= r3;
| if (r0 != 0) {
0x00009f48 movne r4, r0 | r4 = r0;
| goto label_0;
| }
| }
| label_0:
0x00009f4c ldr r5, [pc, 0x24] | r5 = *(0x9f74);
0x00009f50 add r6, r4, r6 | r6 = r4 + r6;
| do {
0x00009f54 cmp r6, r4 |
| if (r6 <= r4) {
0x00009f58 bhi 0x9f64 |
0x00009f5c and r0, r5, 0xff | r0 = r5 & 0xff;
0x00009f60 pop {r4, r5, r6, pc} |
| }
0x00009f64 ldrb r0, [r4], 1 | r0 = *(r4);
| r4++;
0x00009f68 bl 0x19dac | Curl_raw_toupper ();
0x00009f6c add r5, r5, r5, lsl 5 | r5 += (r5 << 5);
0x00009f70 eor r5, r5, r0 | r5 ^= r0;
0x00009f74 b 0x9f54 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x156a0 */
| #include <stdint.h>
|
; (fcn) sym.curl_easy_escape () | void curl_easy_escape (char * s) {
| r1 = s;
0x000156a0 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000156a4 ldr r5, [pc, 0x10c] | r5 = *(0x157b4);
0x000156a8 cmp r2, 0 |
0x000156ac add r5, pc, r5 | r5 = pc + r5;
0x000156b0 bge 0x156c0 |
| while (r6 == r0) {
| label_3:
0x000156b4 mov r6, 0 | r6 = 0;
| label_0:
0x000156b8 mov r0, r6 | r0 = r6;
0x000156bc pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000156c0 mov r8, r1 | r8 = r1;
| if (r2 == 0) {
0x000156c4 addne r4, r2, 1 | r4 = r2 + 1;
| }
| if (r2 == 0) {
0x000156c8 bne 0x156d8 |
0x000156cc mov r0, r1 | r0 = r1;
0x000156d0 bl 0x5250 | r0 = strlen (r0);
0x000156d4 add r4, r0, 1 | r4 = r0 + 1;
| }
0x000156d8 ldr r3, [pc, 0xdc] |
0x000156dc mov r0, r4 | r0 = r4;
0x000156e0 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000156e4 ldr r3, [r3] | r3 = "is_not_new_enough";
0x000156e8 blx r3 | r0 = uint32_t (*r3)(uint32_t, char*) (r0, "is_not_new_enough");
0x000156ec subs r6, r0, 0 | r6 = r0 - 0;
0x000156f0 beq 0x156b4 |
| }
0x000156f4 ldr fp, [pc, 0xc4] | fp = *(0x000157c0);
0x000156f8 sub sl, r4, 1 | sl = r4 - 1;
0x000156fc sub r8, r8, 1 | r8--;
0x00015700 mov sb, r4 | sb = r4;
0x00015704 mov r7, 0 | r7 = 0;
0x00015708 add fp, pc, fp |
| label_1:
0x0001570c subs sl, sl, 1 | sl--;
| if (sl >= sl) {
0x00015710 movlo r3, 0 | r3 = 0;
| }
| if (sl < sl) {
0x00015714 strblo r3, [r6, r7] | *((r6 + r7)) = r3;
| goto label_5;
| }
| if (sl <= sl) {
| label_5:
0x00015718 blo 0x156b8 | goto label_0;
| }
0x0001571c ldrb r5, [r8, 1]! | r5 = *((r8 += 1));
0x00015720 cmp r5, 0x5a |
| if (r5 > 0x5a) {
0x00015724 bhi 0x15758 | goto label_6;
| }
0x00015728 cmp r5, 0x41 |
| if (r5 >= 0x41) {
0x0001572c bhs 0x1574c | goto label_2;
| }
0x00015730 cmp r5, 0x2d |
| if (r5 <= 0x2d) {
0x00015734 blo 0x15770 | goto label_7;
| }
0x00015738 cmp r5, 0x2e |
| if (r5 < 0x2e) {
0x0001573c bls 0x1574c | goto label_2;
| }
0x00015740 sub r3, r5, 0x30 | r3 = r5 - 0x30;
0x00015744 cmp r3, 9 |
| if (r3 > 9) {
0x00015748 bhi 0x15770 | goto label_7;
| }
| do {
| label_2:
0x0001574c strb r5, [r6, r7] | *((r6 + r7)) = r5;
0x00015750 add r7, r7, 1 | r7++;
0x00015754 b 0x1570c | goto label_1;
| label_6:
0x00015758 cmp r5, 0x7a |
| if (r5 > 0x7a) {
0x0001575c bhi 0x157b0 | goto label_8;
| }
0x00015760 cmp r5, 0x61 |
0x00015764 bhs 0x1574c |
| } while (r5 >= 0x61);
0x00015768 cmp r5, 0x5f |
| if (r5 == 0x5f) {
| label_4:
0x0001576c beq 0x1574c | goto label_2;
| }
| label_7:
0x00015770 add r4, r4, 2 | r4 += 2;
0x00015774 cmp sb, r4 |
| if (sb >= r4) {
0x00015778 bhs 0x15794 | goto label_9;
| }
0x0001577c lsl sb, sb, 1 | sb <<= 1;
0x00015780 mov r0, r6 | r0 = r6;
0x00015784 mov r1, sb | r1 = sb;
0x00015788 bl 0x23998 | r0 = Curl_saferealloc ();
0x0001578c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00015790 beq 0x156b4 | goto label_3;
| }
| label_9:
0x00015794 add r0, r6, r7 | r0 = r6 + r7;
0x00015798 mov r3, r5 | r3 = r5;
0x0001579c mov r2, fp | r2 = fp;
0x000157a0 mov r1, 4 | r1 = 4;
0x000157a4 bl 0x579c | fcn_0000579c ();
0x000157a8 add r7, r7, 3 | r7 += 3;
0x000157ac b 0x1570c | goto label_1;
| label_8:
0x000157b0 cmp r5, 0x7e |
0x000157b4 b 0x1576c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x8be0 */
| #include <stdint.h>
|
; (fcn) sym.curl_formadd () | void curl_formadd (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_64h;
| int32_t var_68h;
| int32_t var_4h_2;
| r0 = arg1;
0x00008be0 push {r1, r2, r3} |
0x00008be4 ldr r3, [pc, 0x980] | r3 = *(0x9568);
0x00008be8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00008bec ldr r8, [pc, 0x97c] | r8 = *(0x956c);
0x00008bf0 sub sp, sp, 0x40 |
0x00008bf4 add r8, pc, r8 | r8 = pc + r8;
0x00008bf8 add r5, sp, 0x68 | r5 += var_68h;
0x00008bfc str r0, [sp, 0x2c] | var_2ch = r0;
0x00008c00 str r5, [sp, 0x3c] | var_3ch = r5;
0x00008c04 ldr r3, [r8, r3] |
0x00008c08 mov r1, 0x48 | r1 = 0x48;
0x00008c0c str r3, [sp] | *(sp) = r3;
0x00008c10 mov r0, 1 | r0 = 1;
0x00008c14 ldr r3, [r3] | r3 = *(0x956c);
0x00008c18 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00008c1c subs sl, r0, 0 | sl = r0 - 0;
| if (sl != r0) {
0x00008c20 moveq r5, 1 | r5 = 1;
| }
| if (sl == r0) {
0x00008c24 beq 0x92b4 | goto label_31;
| }
0x00008c28 mov r6, 0 | r6 = 0;
0x00008c2c mov r4, sl | r4 = sl;
0x00008c30 mov r7, r6 | r7 = r6;
0x00008c34 mov fp, r6 |
0x00008c38 mov sb, 1 | sb = 1;
| do {
| label_0:
0x00008c3c cmp fp, 0 |
| if (fp == 0) {
0x00008c40 movne r1, r7 | r1 = r7;
| }
| if (fp != 0) {
0x00008c44 moveq r1, 0 | r1 = 0;
| }
0x00008c48 cmp r1, 0 |
| if (r1 == 0) {
0x00008c4c beq 0x8c6c | goto label_32;
| }
0x00008c50 ldm fp, {r2, r6} | r2 = *(fp);
| r6 = *((fp + 4));
0x00008c54 add fp, fp, 8 |
0x00008c58 cmp r2, 0x11 |
| if (r2 == 0x11) {
0x00008c5c movne r3, r5 | r3 = r5;
| }
| if (r2 != 0x11) {
0x00008c60 bne 0x94fc | goto label_33;
| }
0x00008c64 mov r7, 0 | r7 = 0;
0x00008c68 b 0x8c3c |
| } while (1);
| label_32:
0x00008c6c ldr r2, [r5] | r2 = *(r5);
0x00008c70 add r3, r5, 4 | r3 += var_4h_2;
0x00008c74 cmp r2, 0x11 |
| if (r2 != 0x11) {
0x00008c78 bne 0x94fc | goto label_33;
| }
0x00008c7c ldr r3, [pc, 0x8f0] | r3 = *(0x9570);
0x00008c80 mov r4, sl | r4 = sl;
0x00008c84 add r3, pc, r3 | r3 = pc + r3;
0x00008c88 mov r5, r1 | r5 = r1;
0x00008c8c mov r7, r1 | r7 = r1;
0x00008c90 mov sb, 1 | sb = 1;
0x00008c94 str r3, [sp, 0x30] | var_30h = r3;
| label_9:
0x00008c98 ldr r3, [r4] | r3 = *(r4);
0x00008c9c cmp r3, 0 |
| if (r3 != 0) {
0x00008ca0 beq 0x8cb0 |
0x00008ca4 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00008ca8 cmp r3, 0 |
| if (r3 != 0) {
0x00008cac bne 0x8cb8 | goto label_34;
| }
| }
0x00008cb0 cmp r7, 0 |
| if (r7 == 0) {
0x00008cb4 beq 0x94e4 | goto label_35;
| }
| label_34:
0x00008cb8 ldrd r2, r3, [r4, 0x18] | __asm ("ldrd r2, r3, [r4, 0x18]");
0x00008cbc ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00008cc0 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x00008cc4 beq 0x8cd0 |
0x00008cc8 tst r1, 1 |
| if ((r1 & 1) != 0) {
0x00008ccc bne 0x94e4 | goto label_35;
| }
| }
0x00008cd0 and r3, r1, 9 | r3 = r1 & 9;
0x00008cd4 cmp r3, 9 |
| if (r3 == 9) {
0x00008cd8 beq 0x94e4 | goto label_35;
| }
0x00008cdc ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00008ce0 cmp r3, 0 |
| if (r3 == 0) {
0x00008ce4 bne 0x8cf4 |
0x00008ce8 and r3, r1, 0x30 | r3 = r1 & 0x30;
0x00008cec cmp r3, 0x30 |
| if (r3 == 0x30) {
0x00008cf0 beq 0x94e4 | goto label_35;
| }
| }
0x00008cf4 and r3, r1, 0xa | r3 = r1 & 0xa;
0x00008cf8 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00008cfc beq 0x94e4 | goto label_35;
| }
0x00008d00 tst r1, 0x11 |
| if ((r1 & 0x11) == 0) {
0x00008d04 beq 0x92cc | goto label_36;
| }
0x00008d08 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00008d0c cmp r3, 0 |
| if (r3 != 0) {
0x00008d10 bne 0x92cc | goto label_36;
| }
0x00008d14 tst r1, 0x10 |
| if ((r1 & 0x10) == 0) {
0x00008d18 ldrne r0, [r4, 0x34] | r0 = *((r4 + 0x34));
| }
| if ((r1 & 0x10) != 0) {
0x00008d1c ldreq r0, [r4, 0xc] | r0 = *((r4 + 0xc));
| }
0x00008d20 bl 0x2c6c0 | r0 = Curl_mime_contenttype ();
0x00008d24 cmp r0, 0 |
| if (r0 == 0) {
0x00008d28 bne 0x8d3c |
0x00008d2c ldr r3, [sp, 0x30] | r3 = var_30h;
0x00008d30 cmp r5, 0 |
| if (r5 != 0) {
0x00008d34 moveq r0, r3 | r0 = r3;
| }
| if (r5 != 0) {
0x00008d38 movne r0, r5 | r0 = r5;
| goto label_37;
| }
| }
| label_37:
0x00008d3c ldr r3, [pc, 0x834] |
0x00008d40 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00008d44 ldr r3, [r3] | r3 = *(0x9574);
0x00008d48 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00008d4c cmp r0, 0 |
0x00008d50 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| if (r0 != 0) {
0x00008d54 bne 0x92c8 | goto label_38;
| }
| label_8:
0x00008d58 mov r5, 1 | r5 = 1;
| label_12:
0x00008d5c ldr r3, [pc, 0x818] | r3 = *(0x9578);
0x00008d60 mov r6, 0 | r6 = 0;
0x00008d64 ldr r7, [r8, r3] | r7 = *((r8 + r3));
| do {
0x00008d68 ldrb r3, [r4, 4] | r3 = *((r4 + 4));
0x00008d6c cmp r3, 0 |
| if (r3 != 0) {
0x00008d70 beq 0x8d88 |
0x00008d74 ldr r3, [r7] | r3 = *(r7);
0x00008d78 ldr r0, [r4] | r0 = *(r4);
0x00008d7c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00008d80 str r6, [r4] | *(r4) = r6;
0x00008d84 strb r6, [r4, 4] | *((r4 + 4)) = r6;
| }
0x00008d88 ldrb r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00008d8c ldr r3, [r7] | r3 = *(r7);
0x00008d90 cmp r2, 0 |
| if (r2 != 0) {
0x00008d94 beq 0x8da8 |
0x00008d98 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00008d9c blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00008da0 str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x00008da4 strb r6, [r4, 0x10] | *((r4 + 0x10)) = r6;
| }
0x00008da8 ldrb r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x00008dac ldr r3, [r7] | r3 = *(r7);
0x00008db0 cmp r2, 0 |
| if (r2 != 0) {
0x00008db4 beq 0x8dc8 |
0x00008db8 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00008dbc blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00008dc0 str r6, [r4, 0x20] | *((r4 + 0x20)) = r6;
0x00008dc4 strb r6, [r4, 0x24] | *((r4 + 0x24)) = r6;
| }
0x00008dc8 ldrb r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x00008dcc ldr r3, [r7] | r3 = *(r7);
0x00008dd0 cmp r2, 0 |
| if (r2 != 0) {
0x00008dd4 beq 0x8de8 |
0x00008dd8 ldr r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x00008ddc blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00008de0 str r6, [r4, 0x34] | *((r4 + 0x34)) = r6;
0x00008de4 strb r6, [r4, 0x38] | *((r4 + 0x38)) = r6;
| }
0x00008de8 ldr r4, [r4, 0x44] | r4 = *((r4 + 0x44));
0x00008dec cmp r4, 0 |
0x00008df0 bne 0x8d68 |
| } while (r4 != 0);
0x00008df4 b 0x9294 | goto label_10;
| label_21:
0x00008df8 cmp r7, 0 |
| if (r7 != 0) {
0x00008dfc bne 0x955c | goto label_39;
| }
0x00008e00 ldr fp, [r3] | fp = *(r3);
0x00008e04 add r5, r3, 4 | r5 = r3 + 4;
0x00008e08 cmp fp, 0 |
| if (fp != 0) {
0x00008e0c bne 0x94f4 | goto label_40;
| }
| do {
| label_1:
0x00008e10 mov r5, 3 | r5 = 3;
0x00008e14 strdeq r0, r1, [r0], -r7 | __asm ("strdeq r0, r1, [r0], -r7");
| if (fp != 0) {
| label_15:
0x00008e18 andeq r0, r0, r0 | r0 &= r0;
| }
0x00008e1c orr r0, r2, 0 | r0 = r2;
0x00008e20 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
| label_14:
0x00008e24 ldr r2, [r4] | r2 = *(r4);
0x00008e28 cmp r2, 0 |
| if (r2 != 0) {
0x00008e2c bne 0x9564 | goto label_41;
| }
0x00008e30 cmp r7, 0 |
| if (r7 != 0) {
0x00008e34 ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x00008e38 movne r2, r6 | r2 = r6;
| }
| if (r7 != 0) {
0x00008e3c addeq r3, r3, 4 | r3 += 4;
| }
0x00008e40 cmp r2, 0 |
0x00008e44 beq 0x8e10 |
| } while (r2 == 0);
0x00008e48 str r2, [r4] | *(r4) = r2;
| do {
| label_2:
0x00008e4c mov r5, r3 | r5 = r3;
0x00008e50 b 0x8c3c | goto label_0;
| label_16:
0x00008e54 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00008e58 cmp r2, 0 |
| if (r2 != 0) {
0x00008e5c bne 0x9564 | goto label_41;
| }
0x00008e60 cmp r7, 0 |
| if (r7 != 0) {
0x00008e64 ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x00008e68 movne r2, r6 | r2 = r6;
| }
| if (r7 != 0) {
0x00008e6c addeq r3, r3, 4 | r3 += 4;
| }
0x00008e70 str r2, [r4, 8] | *((r4 + 8)) = r2;
0x00008e74 b 0x8e4c |
| } while (1);
| label_18:
0x00008e78 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00008e7c orr r2, r2, 8 | r2 |= 8;
0x00008e80 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
| label_17:
0x00008e84 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00008e88 cmp r2, 0 |
| if (r2 != 0) {
0x00008e8c bne 0x9564 | goto label_41;
| }
0x00008e90 cmp r7, 0 |
| if (r7 != 0) {
0x00008e94 ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x00008e98 movne r2, r6 | r2 = r6;
| }
| if (r7 != 0) {
0x00008e9c addeq r3, r3, 4 | r3 += 4;
| }
0x00008ea0 cmp r2, 0 |
| if (r2 == 0) {
0x00008ea4 beq 0x8e10 | goto label_1;
| }
| label_4:
0x00008ea8 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x00008eac b 0x8e4c | goto label_2;
| label_19:
0x00008eb0 cmp r7, 0 |
| if (r7 != 0) {
0x00008eb4 ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x00008eb8 movne r2, r6 | r2 = r6;
| }
0x00008ebc str r2, [r4, 0x18] | *((r4 + 0x18)) = r2;
| if (r7 != 0) {
0x00008ec0 addeq r3, r3, 4 | r3 += 4;
| }
0x00008ec4 mov r2, 0 | r2 = 0;
| do {
0x00008ec8 str r2, [r4, 0x1c] | *((r4 + 0x1c)) = r2;
0x00008ecc b 0x8e4c | goto label_2;
| label_29:
0x00008ed0 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00008ed4 cmp r7, 0 |
0x00008ed8 orr r2, r2, 0x80 | r2 |= 0x80;
| if (r7 != 0) {
0x00008edc addeq r3, r3, 7 | r3 += 7;
| }
0x00008ee0 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x00008ee4 biceq r2, r3, 7 | __asm ("biceq r2, r3, 7");
| if (r7 != 0) {
0x00008ee8 addeq r3, r2, 8 | r3 = r2 + 8;
| }
| if (r7 != 0) {
0x00008eec ldmeq r2, {r1, r2} | r1 = *(r2);
| r2 = *((r2 + 4));
| }
| if (r7 == 0) {
0x00008ef0 movne r1, r6 | r1 = r6;
| }
| if (r7 == 0) {
0x00008ef4 movne r2, 0 | r2 = 0;
| }
0x00008ef8 str r1, [r4, 0x18] | *((r4 + 0x18)) = r1;
0x00008efc b 0x8ec8 |
| } while (1);
| label_20:
0x00008f00 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00008f04 tst r2, 0xa |
| if ((r2 & 0xa) != 0) {
0x00008f08 bne 0x9564 | goto label_41;
| }
0x00008f0c cmp r7, 0 |
| if (r7 != 0) {
0x00008f10 ldreq r0, [r3] | r0 = *(r3);
| }
| if (r7 == 0) {
0x00008f14 movne r0, r6 | r0 = r6;
| }
| if (r7 != 0) {
0x00008f18 addeq r3, r3, 4 | r3 += 4;
| }
0x00008f1c cmp r0, 0 |
0x00008f20 str r3, [sp, 4] | var_4h = r3;
| if (r0 == 0) {
0x00008f24 beq 0x8e10 | goto label_1;
| }
0x00008f28 ldr r2, [pc, 0x648] |
0x00008f2c ldr r2, [r8, r2] | r2 = *((r8 + r2));
0x00008f30 ldr r2, [r2] | r2 = *(0x9574);
0x00008f34 blx r2 | r0 = uint32_t (*r2)(uint32_t) (r2);
0x00008f38 cmp r0, 0 |
0x00008f3c str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
| if (r0 == 0) {
0x00008f40 beq 0x8fe0 | goto label_3;
| }
0x00008f44 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00008f48 strb sb, [r4, 0x10] | *((r4 + 0x10)) = sb;
0x00008f4c orr r2, r2, 2 | r2 |= 2;
0x00008f50 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
| label_7:
0x00008f54 ldr r3, [sp, 4] | r3 = var_4h;
0x00008f58 b 0x8e4c | goto label_2;
| label_22:
0x00008f5c cmp r7, 0 |
| if (r7 != 0) {
0x00008f60 addeq r5, r3, 4 | r5 = r3 + 4;
| }
| if (r7 != 0) {
0x00008f64 ldreq r0, [r3] | r0 = *(r3);
| }
| if (r7 == 0) {
0x00008f68 movne r5, r3 | r5 = r3;
| }
0x00008f6c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
| if (r7 == 0) {
0x00008f70 movne r0, r6 | r0 = r6;
| }
0x00008f74 cmp r3, 0 |
| if (r3 == 0) {
0x00008f78 beq 0x9008 | goto label_42;
| }
0x00008f7c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00008f80 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x00008f84 beq 0x9564 | goto label_41;
| }
0x00008f88 cmp r0, 0 |
| if (r0 == 0) {
0x00008f8c beq 0x8e10 | goto label_1;
| }
0x00008f90 ldr r3, [pc, 0x5e0] |
0x00008f94 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00008f98 ldr r3, [r3] | r3 = *(0x9574);
0x00008f9c blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00008fa0 subs r3, r0, 0 | r3 = r0 - 0;
0x00008fa4 str r3, [sp, 4] | var_4h = r3;
| if (r3 != r0) {
0x00008fa8 beq 0x8fe0 |
0x00008fac ldr r3, [sp] | r3 = *(sp);
0x00008fb0 mov r1, 0x48 | r1 = 0x48;
0x00008fb4 ldr r2, [r3] | r2 = *(r3);
0x00008fb8 mov r0, 1 | r0 = 1;
0x00008fbc blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00008fc0 ldr r3, [sp, 4] | r3 = var_4h;
0x00008fc4 cmp r0, 0 |
| if (r0 != 0) {
0x00008fc8 bne 0x8fe8 | goto label_43;
| }
| label_5:
0x00008fcc ldr r2, [pc, 0x5a8] |
0x00008fd0 mov r0, r3 | r0 = r3;
0x00008fd4 ldr r2, [r8, r2] | r2 = *((r8 + r2));
0x00008fd8 ldr r2, [r2] | r2 = *(0x9578);
0x00008fdc blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
| }
| label_3:
0x00008fe0 mov r5, 1 | r5 = 1;
0x00008fe4 b 0x91f8 | goto label_30;
| label_43:
0x00008fe8 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00008fec ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x00008ff0 str sb, [r0, 0x28] | *((r0 + 0x28)) = sb;
0x00008ff4 str r3, [r0, 0x44] | *((r0 + 0x44)) = r3;
0x00008ff8 str r0, [r4, 0x44] | *((r4 + 0x44)) = r0;
0x00008ffc strb sb, [r0, 0x10] | *((r0 + 0x10)) = sb;
| label_6:
0x00009000 mov r4, r0 | r4 = r0;
0x00009004 b 0x8c3c | goto label_0;
| label_42:
0x00009008 cmp r0, 0 |
| if (r0 == 0) {
0x0000900c beq 0x8e10 | goto label_1;
| }
0x00009010 ldr r3, [pc, 0x560] |
0x00009014 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00009018 ldr r3, [r3] | r3 = *(0x9574);
0x0000901c blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
| if (r0 != 0) {
0x00009020 andeq r0, r1, r0 | r0 = r1 & r0;
| }
0x00009024 str r0, [r4] | *(r4) = r0;
| if (r0 == 0) {
0x00009028 beq 0x8fe0 | goto label_3;
| }
0x0000902c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00009030 strb sb, [r4, 0x10] | *((r4 + 0x10)) = sb;
0x00009034 orr r3, r3, 1 | r3 |= 1;
0x00009038 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0000903c b 0x48c3c | void (*0x48c3c)() ();
| label_24:
0x00009040 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00009044 orr r2, r2, 0x30 | r2 |= 0x30;
0x00009048 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0000904c ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x00009050 cmp r2, 0 |
| if (r2 != 0) {
0x00009054 bne 0x9564 | goto label_41;
| }
0x00009058 cmp r7, 0 |
| if (r7 != 0) {
0x0000905c ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x00009060 movne r2, r6 | r2 = r6;
| }
| if (r7 != 0) {
0x00009064 addeq r3, r3, 4 | r3 += 4;
| }
0x00009068 cmp r2, 0 |
| if (r2 == 0) {
0x0000906c beq 0x8e10 | goto label_1;
| }
0x00009070 str r2, [r4, 0x2c] | *((r4 + 0x2c)) = r2;
0x00009074 b 0x8ea8 | goto label_4;
| label_25:
0x00009078 ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x0000907c cmp r2, 0 |
| if (r2 != 0) {
0x00009080 bne 0x9564 | goto label_41;
| }
0x00009084 cmp r7, 0 |
| if (r7 != 0) {
0x00009088 ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x0000908c movne r2, r6 | r2 = r6;
| }
| if (r7 != 0) {
0x00009090 addeq r3, r3, 4 | r3 += 4;
| }
0x00009094 str r2, [r4, 0x30] | *((r4 + 0x30)) = r2;
0x00009098 b 0x8e4c | goto label_2;
| label_28:
0x0000909c ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x000090a0 orr r2, r2, 0x40 | r2 |= 0x40;
0x000090a4 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x000090a8 ldr r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
0x000090ac cmp r2, 0 |
| if (r2 != 0) {
0x000090b0 bne 0x9564 | goto label_41;
| }
0x000090b4 cmp r7, 0 |
| if (r7 != 0) {
0x000090b8 ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x000090bc movne r2, r6 | r2 = r6;
| }
| if (r7 != 0) {
0x000090c0 addeq r3, r3, 4 | r3 += 4;
| }
0x000090c4 cmp r2, 0 |
| if (r2 == 0) {
0x000090c8 beq 0x8e10 | goto label_1;
| }
0x000090cc str r2, [r4, 0x3c] | *((r4 + 0x3c)) = r2;
0x000090d0 b 0x8ea8 | goto label_4;
| label_26:
0x000090d4 cmp r7, 0 |
| if (r7 != 0) {
0x000090d8 addeq r5, r3, 4 | r5 = r3 + 4;
| }
| if (r7 != 0) {
0x000090dc ldreq r0, [r3] | r0 = *(r3);
| }
| if (r7 == 0) {
0x000090e0 movne r5, r3 | r5 = r3;
| }
0x000090e4 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
| if (r7 == 0) {
0x000090e8 movne r0, r6 | r0 = r6;
| }
0x000090ec cmp r3, 0 |
| if (r3 == 0) {
0x000090f0 beq 0x9160 | goto label_44;
| }
0x000090f4 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000090f8 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x000090fc beq 0x9564 | goto label_41;
| }
0x00009100 cmp r0, 0 |
| if (r0 == 0) {
0x00009104 beq 0x8e10 | goto label_1;
| }
0x00009108 ldr r3, [pc, 0x468] |
0x0000910c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00009110 ldr r3, [r3] | r3 = *(0x9574);
0x00009114 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00009118 subs r3, r0, 0 | r3 = r0 - 0;
0x0000911c str r3, [sp, 4] | var_4h = r3;
| if (r3 == r0) {
0x00009120 beq 0x8fe0 | goto label_3;
| }
0x00009124 ldr r3, [sp] | r3 = *(sp);
0x00009128 mov r1, 0x48 | r1 = 0x48;
| if (r3 != r0) {
0x0000912c andeq r0, r0, r0 | r0 &= r0;
| }
0x00009130 mov r0, 1 | r0 = 1;
0x00009134 blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00009138 ldr r3, [sp, 4] | r3 = var_4h;
0x0000913c cmp r0, 0 |
| if (r0 == 0) {
0x00009140 beq 0x8fcc | goto label_5;
| }
0x00009144 str r3, [r0, 0x20] | *((r0 + 0x20)) = r3;
0x00009148 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0000914c str sb, [r0, 0x28] | *((r0 + 0x28)) = sb;
0x00009150 str r3, [r0, 0x44] | *((r0 + 0x44)) = r3;
0x00009154 str r0, [r4, 0x44] | *((r4 + 0x44)) = r0;
0x00009158 strb sb, [r0, 0x24] | *((r0 + 0x24)) = sb;
0x0000915c b 0x9000 | goto label_6;
| label_44:
0x00009160 cmp r0, 0 |
| if (r0 == 0) {
0x00009164 beq 0x8e10 | goto label_1;
| }
0x00009168 ldr r3, [pc, 0x408] |
0x0000916c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00009170 ldr r3, [r3] | r3 = *(0x9574);
0x00009174 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00009178 cmp r0, 0 |
0x0000917c str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| if (r0 == 0) {
0x00009180 beq 0x8fe0 | goto label_3;
| }
0x00009184 strb sb, [r4, 0x24] | *((r4 + 0x24)) = sb;
0x00009188 b 0x8c3c | goto label_0;
| label_27:
0x0000918c ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
0x00009190 cmp r7, 0 |
| if (r7 != 0) {
0x00009194 ldreq r2, [r3] | r2 = *(r3);
| }
| if (r7 == 0) {
0x00009198 movne r2, r6 | r2 = r6;
| }
| if (r7 != 0) {
0x0000919c addeq r3, r3, 4 | r3 += 4;
| }
0x000091a0 cmp r1, 0 |
| if (r1 != 0) {
0x000091a4 bne 0x9564 | goto label_41;
| }
0x000091a8 str r2, [r4, 0x40] | *((r4 + 0x40)) = r2;
0x000091ac b 0x8e4c | goto label_2;
| label_23:
0x000091b0 ldr r2, [r4, 0x34] | r2 = *((r4 + 0x34));
0x000091b4 cmp r7, 0 |
| if (r7 != 0) {
0x000091b8 ldreq r0, [r3] | r0 = *(r3);
| }
| if (r7 == 0) {
0x000091bc movne r0, r6 | r0 = r6;
| }
| if (r7 != 0) {
0x000091c0 addeq r3, r3, 4 | r3 += 4;
| }
0x000091c4 cmp r2, 0 |
0x000091c8 str r3, [sp, 4] | var_4h = r3;
| if (r2 != 0) {
0x000091cc bne 0x9564 | goto label_41;
| }
0x000091d0 ldr r2, [pc, 0x3a0] |
0x000091d4 ldr r2, [r8, r2] | r2 = *((r8 + r2));
0x000091d8 ldr r2, [r2] | r2 = *(0x9574);
0x000091dc blx r2 | r0 = uint32_t (*r2)(uint32_t) (r2);
0x000091e0 cmp r0, 0 |
0x000091e4 str r0, [r4, 0x34] | *((r4 + 0x34)) = r0;
| if (r0 == 0) {
0x000091e8 beq 0x8fe0 | goto label_3;
| }
0x000091ec strb sb, [r4, 0x38] | *((r4 + 0x38)) = sb;
0x000091f0 b 0x8f54 | goto label_7;
| label_13:
0x000091f4 mov r5, 4 | r5 = 4;
| label_30:
0x000091f8 ldr r3, [pc, 0x37c] | r3 = *(0x9578);
0x000091fc mov r4, sl | r4 = sl;
0x00009200 ldr r7, [r8, r3] | r7 = *((r8 + r3));
0x00009204 mov r6, 0 | r6 = 0;
| do {
0x00009208 ldrb r2, [r4, 4] | r2 = *((r4 + 4));
0x0000920c ldr r3, [r7] | r3 = *(r7);
0x00009210 cmp r2, 0 |
| if (r2 != 0) {
0x00009214 beq 0x9228 |
0x00009218 ldr r0, [r4] | r0 = *(r4);
0x0000921c blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00009220 str r6, [r4] | *(r4) = r6;
0x00009224 strb r6, [r4, 4] | *((r4 + 4)) = r6;
| }
0x00009228 ldrb r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0000922c ldr r3, [r7] | r3 = *(r7);
0x00009230 cmp r2, 0 |
| if (r2 != 0) {
0x00009234 beq 0x9248 |
0x00009238 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000923c blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00009240 str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x00009244 strb r6, [r4, 0x10] | *((r4 + 0x10)) = r6;
| }
0x00009248 ldrb r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0000924c ldr r3, [r7] | r3 = *(r7);
0x00009250 cmp r2, 0 |
| if (r2 != 0) {
0x00009254 beq 0x9268 |
0x00009258 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x0000925c blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00009260 str r6, [r4, 0x20] | *((r4 + 0x20)) = r6;
0x00009264 strb r6, [r4, 0x24] | *((r4 + 0x24)) = r6;
| }
0x00009268 ldrb r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x0000926c ldr r3, [r7] | r3 = *(r7);
0x00009270 cmp r2, 0 |
| if (r2 != 0) {
0x00009274 beq 0x9288 |
0x00009278 ldr r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x0000927c blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00009280 str r6, [r4, 0x34] | *((r4 + 0x34)) = r6;
0x00009284 strb r6, [r4, 0x38] | *((r4 + 0x38)) = r6;
| }
0x00009288 ldr r4, [r4, 0x44] | r4 = *((r4 + 0x44));
0x0000928c cmp r4, 0 |
0x00009290 bne 0x9208 |
| } while (r4 != 0);
| label_10:
0x00009294 ldr r3, [pc, 0x2e0] | r3 = *(0x9578);
0x00009298 ldr r6, [r8, r3] | r6 = *((r8 + r3));
| do {
0x0000929c ldr r4, [sl, 0x44] | r4 = *((sl + 0x44));
0x000092a0 mov r0, sl | r0 = sl;
0x000092a4 ldr r3, [r6] | r3 = *(r6);
0x000092a8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000092ac subs sl, r4, 0 | sl = r4 - 0;
0x000092b0 bne 0x929c |
| } while (sl != r4);
| label_31:
0x000092b4 mov r0, r5 | r0 = r5;
0x000092b8 add sp, sp, 0x40 |
0x000092bc pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000092c0 add sp, sp, 0xc |
0x000092c4 bx lr | return;
| label_38:
0x000092c8 strb sb, [r4, 0x24] | *((r4 + 0x24)) = sb;
| label_36:
0x000092cc ldr r6, [r4] | r6 = *(r4);
0x000092d0 cmp r6, 0 |
| if (r6 != 0) {
0x000092d4 beq 0x92ec |
0x000092d8 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000092dc cmp r3, 0 |
| if (r3 == 0) {
0x000092e0 movne r2, r6 | r2 = r6;
| }
| if (r3 == 0) {
0x000092e4 addne r3, r6, r3 | r3 = r6 + r3;
| }
| if (r3 != 0) {
0x000092e8 bne 0x94d8 | goto label_45;
| }
| }
| label_11:
0x000092ec ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000092f0 lsr r3, r3, 2 | r3 >>= 2;
0x000092f4 eor r3, r3, 1 | r3 ^= 1;
0x000092f8 cmp sl, r4 |
| if (sl == r4) {
0x000092fc movne r3, 0 | r3 = 0;
| }
| if (sl != r4) {
0x00009300 andeq r3, r3, 1 | r3 &= 1;
| }
0x00009304 cmp r3, 0 |
| if (r3 == 0) {
0x00009308 beq 0x9348 | goto label_46;
| }
0x0000930c cmp r6, 0 |
| if (r6 != 0) {
0x00009310 beq 0x9338 |
0x00009314 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00009318 cmp r1, 0 |
| if (r1 == 0) {
0x0000931c bne 0x932c |
0x00009320 mov r0, r6 | r0 = r6;
0x00009324 bl 0x5250 | r0 = strlen (r0);
0x00009328 add r1, r0, 1 | r1 = r0 + 1;
| }
0x0000932c mov r0, r6 | r0 = r6;
0x00009330 bl 0x2394c | Curl_memdup ();
0x00009334 str r0, [r4] | *(r4) = r0;
| }
0x00009338 ldr r3, [r4] | r3 = *(r4);
0x0000933c cmp r3, 0 |
| if (r3 == 0) {
0x00009340 beq 0x8d58 | goto label_8;
| }
0x00009344 strb sb, [r4, 4] | *((r4 + 4)) = sb;
| label_46:
0x00009348 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0000934c tst r3, 0x6b |
| if ((r3 & 0x6b) != 0) {
0x00009350 bne 0x9390 | goto label_47;
| }
0x00009354 ldr r6, [r4, 0xc] | r6 = *((r4 + 0xc));
0x00009358 cmp r6, 0 |
| if (r6 == 0) {
0x0000935c beq 0x9390 | goto label_47;
| }
0x00009360 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x00009364 cmp r1, 0 |
| if (r1 == 0) {
0x00009368 bne 0x9378 |
0x0000936c mov r0, r6 | r0 = r6;
0x00009370 bl 0x5250 | r0 = strlen (r0);
0x00009374 add r1, r0, 1 | r1 = r0 + 1;
| }
0x00009378 mov r0, r6 | r0 = r6;
0x0000937c bl 0x2394c | r0 = Curl_memdup ();
0x00009380 cmp r0, 0 |
0x00009384 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
| if (r0 == 0) {
0x00009388 beq 0x8d58 | goto label_8;
| }
0x0000938c strb sb, [r4, 0x10] | *((r4 + 0x10)) = sb;
| label_47:
0x00009390 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00009394 mov r1, 0x40 | r1 = 0x40;
0x00009398 str r3, [sp, 4] | var_4h = r3;
0x0000939c ldrd r2, r3, [r4, 0x18] | __asm ("ldrd r2, r3, [r4, 0x18]");
0x000093a0 ldr r6, [r4] | r6 = *(r4);
0x000093a4 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x000093a8 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x000093ac mov r0, 1 | r0 = 1;
0x000093b0 str r3, [sp, 0x10] | var_10h = r3;
0x000093b4 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x000093b8 ldr fp, [r4, 8] | fp = *((r4 + 8));
0x000093bc str r3, [sp, 0x14] | var_14h = r3;
0x000093c0 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000093c4 str r3, [sp, 0x18] | var_18h = r3;
0x000093c8 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000093cc str r3, [sp, 0x1c] | var_1ch = r3;
0x000093d0 ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x000093d4 str r3, [sp, 0x20] | var_20h = r3;
0x000093d8 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x000093dc str r3, [sp, 0x24] | var_24h = r3;
0x000093e0 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x000093e4 str r3, [sp, 0x28] | var_28h = r3;
0x000093e8 ldr r3, [sp] | r3 = *(sp);
0x000093ec ldr r3, [r3] | r3 = *(r3);
0x000093f0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000093f4 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x000093f8 beq 0x8d58 | goto label_8;
| }
0x000093fc cmp r6, 0 |
0x00009400 str r6, [r3, 4] | *((r3 + 4)) = r6;
| if (r6 != 0) {
0x00009404 moveq r0, r6 | r0 = r6;
| }
| if (r6 != 0) {
0x00009408 beq 0x9428 |
0x0000940c cmp fp, 0 |
| if (fp == 0) {
0x00009410 movne r0, fp | r0 = fp;
| }
| if (fp != 0) {
0x00009414 bne 0x9428 | goto label_48;
| }
0x00009418 mov r0, r6 | r0 = r6;
0x0000941c str r3, [sp, 0x34] | var_34h = r3;
0x00009420 bl 0x5250 | strlen (r0);
0x00009424 ldr r3, [sp, 0x34] | r3 = var_34h;
| }
| label_48:
0x00009428 ldr r2, [sp, 4] | r2 = var_4h;
0x0000942c cmp r7, 0 |
0x00009430 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00009434 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00009438 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x0000943c str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x00009440 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00009444 ldrd r0, r1, [sp, 8] | __asm ("ldrd r0, r1, [var_8h]");
0x00009448 str r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
0x0000944c ldr r2, [sp, 0x18] | r2 = var_18h;
0x00009450 strd r0, r1, [r3, 0x38] | __asm ("strd r0, r1, [r3, 0x38]");
0x00009454 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x00009458 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000945c str r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x00009460 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00009464 str r2, [r3, 0x2c] | *((r3 + 0x2c)) = r2;
0x00009468 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000946c str r2, [r3, 0x30] | *((r3 + 0x30)) = r2;
0x00009470 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00009474 orr r2, r2, 0x80 | r2 |= 0x80;
0x00009478 str r2, [r3, 0x28] | *((r3 + 0x28)) = r2;
| if (r7 == 0) {
0x0000947c ldrne r2, [r7, 0x24] | r2 = *((r7 + 0x24));
| }
| if (r7 == 0) {
0x00009480 strne r2, [r3, 0x24] | *((r3 + 0x24)) = r2;
| }
| if (r7 == 0) {
0x00009484 strne r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
| }
| if (r7 == 0) {
0x00009488 bne 0x94a8 |
0x0000948c ldr r2, [sp, 0x64] | r2 = var_64h;
0x00009490 ldr r2, [r2] | r2 = *(r2);
0x00009494 cmp r2, 0 |
| if (r2 != 0) {
0x00009498 ldreq r2, [sp, 0x2c] | r2 = var_2ch;
| }
0x0000949c str r3, [r2] | *(r2) = r3;
0x000094a0 ldr r2, [sp, 0x64] | r2 = var_64h;
0x000094a4 str r3, [r2] | *(r2) = r3;
| }
0x000094a8 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x000094ac ldr r4, [r4, 0x44] | r4 = *((r4 + 0x44));
0x000094b0 cmp r2, 0 |
| if (r2 == 0) {
0x000094b4 movne r5, r2 | r5 = r2;
| }
0x000094b8 cmp r4, 0 |
0x000094bc mov r7, r3 | r7 = r3;
| if (r4 != 0) {
0x000094c0 bne 0x8c98 | goto label_9;
| }
0x000094c4 mov r5, r4 | r5 = r4;
0x000094c8 b 0x9294 | goto label_10;
| do {
0x000094cc ldrb r1, [r2], 1 | r1 = *(r2);
| r2++;
0x000094d0 cmp r1, 0 |
| if (r1 == 0) {
0x000094d4 beq 0x94ec | goto label_49;
| }
| label_45:
0x000094d8 cmp r2, r3 |
0x000094dc bne 0x94cc |
| } while (r2 != r3);
0x000094e0 b 0x92ec | goto label_11;
| label_35:
0x000094e4 mov r5, 5 | r5 = 5;
0x000094e8 b 0x8d5c | goto label_12;
| label_49:
0x000094ec mov r5, 3 | r5 = 3;
0x000094f0 b 0x8d5c | goto label_12;
| label_40:
0x000094f4 mov r7, 1 | r7 = 1;
0x000094f8 b 0x8c3c | goto label_0;
| label_33:
0x000094fc sub r2, r2, 1 | r2--;
0x00009500 cmp r2, 0x13 |
| if (r2 > 0x13) {
| /* switch table (20 cases) at 0x950c */
0x00009504 addls pc, pc, r2, lsl 2 | pc += (r2 << 2);
| }
0x00009508 b 0x91f4 | goto label_13;
0x0000950c b 0x8e24 | goto label_14;
0x00009510 b 0x8e18 | goto label_15;
0x00009514 b 0x8e54 | goto label_16;
0x00009518 b 0x8e84 | goto label_17;
0x0000951c b 0x8e78 | goto label_18;
0x00009520 b 0x8eb0 | goto label_19;
0x00009524 b 0x8f00 | goto label_20;
0x00009528 b 0x8df8 | goto label_21;
0x0000952c b 0x91f4 | goto label_13;
0x00009530 b 0x8f5c | goto label_22;
0x00009534 b 0x91b0 | goto label_23;
0x00009538 b 0x9040 | goto label_24;
0x0000953c b 0x9078 | goto label_25;
0x00009540 b 0x90d4 | goto label_26;
0x00009544 b 0x918c | goto label_27;
0x00009548 b 0x91b0 | goto label_23;
0x0000954c b 0x91f4 | goto label_13;
0x00009550 b 0x91f4 | goto label_13;
0x00009554 b 0x909c | goto label_28;
0x00009558 b 0x8ed0 | goto label_29;
| label_39:
0x0000955c mov r5, 6 | r5 = 6;
0x00009560 b 0x91f8 | goto label_30;
| label_41:
0x00009564 mov r5, 2 | r5 = 2;
0x00009568 b 0x91f8 | goto label_30;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x226f4 */
| #include <stdint.h>
|
; (fcn) sym.curl_getdate () | void curl_getdate (int32_t arg_33ch, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| char * var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| char * * endptr;
| int32_t var_38h;
| void * s;
| int32_t var_5ch;
| r0 = arg1;
| r1 = arg2;
0x000226f4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000226f8 mov r2, 0 | r2 = 0;
0x000226fc sub sp, sp, 0x5c |
0x00022700 str r2, [sp, 0x10] | var_10h = r2;
0x00022704 str r2, [sp, 0xc] | var_ch = r2;
0x00022708 ldr r2, [pc, 0x644] |
0x0002270c mvn r4, 0 | r4 = ~0;
0x00022710 add r2, pc, r2 | r2 = pc + r2;
0x00022714 add r2, r2, 0x38 | r2 = 0x22d88;
0x00022718 mov r3, r0 | r3 = r0;
0x0002271c mov r5, r4 | r5 = r4;
0x00022720 mov sl, r4 | sl = r4;
0x00022724 mov r6, r4 | r6 = r4;
0x00022728 mov fp, r4 |
0x0002272c str r0, [sp, 0x18] | var_18h = r0;
0x00022730 str r4, [sp, 0x28] | var_28h = r4;
0x00022734 str r4, [sp, 0x2c] | var_2ch = r4;
0x00022738 str r4, [sp, 0x30] | var_30h = r4;
0x0002273c str r2, [sp, 0x1c] | var_1ch = r2;
| label_2:
0x00022740 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00022744 ldrb r0, [r3] | r0 = *(r3);
0x00022748 subs sb, r2, 6 | sb = r2 - 6;
| if (sb == r2) {
0x0002274c movne sb, 1 | sb = 1;
| }
0x00022750 cmp r0, 0 |
| if (r0 != 0) {
0x00022754 moveq sb, 0 | sb = 0;
| }
0x00022758 cmp sb, 0 |
| if (sb == 0) {
0x0002275c beq 0x22bcc | goto label_8;
| }
0x00022760 mov r8, r3 | r8 = r3;
0x00022764 b 0x22780 |
| while (r0 != 0) {
0x00022768 str r8, [sp, 0x14] | var_14h = r8;
0x0002276c bl 0x2f8e8 | Curl_isalnum ();
0x00022770 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00022774 cmp r0, 0 |
| if (r0 != 0) {
0x00022778 bne 0x22794 | goto label_9;
| }
0x0002277c mov r8, r7 | r8 = r7;
0x00022780 mov r7, r8 | r7 = r8;
0x00022784 ldrb r0, [r7], 1 | r0 = *(r7);
| r7++;
0x00022788 mov r3, r8 | r3 = r8;
0x0002278c cmp r0, 0 |
0x00022790 bne 0x22768 |
| }
| label_9:
0x00022794 ldrb r0, [r8] | r0 = *(r8);
0x00022798 str r3, [sp, 0x14] | var_14h = r3;
0x0002279c bl 0x2f99c | r0 = Curl_isalpha ();
0x000227a0 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x000227a4 bne 0x22804 |
0x000227a8 ldrb r0, [r8] | r0 = *(r8);
0x000227ac bl 0x2f8c0 | Curl_isdigit ();
0x000227b0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000227b4 cmp r0, 0 |
| if (r0 == 0) {
0x000227b8 beq 0x22984 | goto label_4;
| }
0x000227bc ldr r3, [sp, 0x30] | r3 = var_30h;
0x000227c0 str r7, [sp, 0x38] | var_38h = r7;
0x000227c4 cmn r3, 1 |
| if (r3 != 1) {
0x000227c8 bne 0x22994 | goto label_10;
| }
0x000227cc ldr r1, [pc, 0x584] | r1 = *(0x22d54);
0x000227d0 add r3, sp, 0x38 | r3 += var_38h;
0x000227d4 str r3, [sp, 4] | var_4h = r3;
0x000227d8 add r3, sp, 0x30 | r3 += var_30h;
0x000227dc str r3, [sp] | *(sp) = r3;
0x000227e0 add r2, sp, 0x28 | r2 += var_28h;
0x000227e4 add r3, sp, 0x2c | r3 += var_2ch;
0x000227e8 add r1, pc, r1 | r1 = pc + r1;
0x000227ec mov r0, r8 | r0 = r8;
0x000227f0 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x000227f4 cmp r0, 3 |
| if (r0 != 3) {
0x000227f8 bne 0x22994 | goto label_10;
| }
0x000227fc ldr r7, [sp, 0x38] | r7 = var_38h;
0x00022800 b 0x22980 | goto label_7;
| }
0x00022804 mov r3, 0 | r3 = 0;
0x00022808 mov r1, r3 | r1 = r3;
0x0002280c mov r2, 0x1c | r2 = 0x1c;
0x00022810 add r0, sp, 0x3c | r0 += s;
0x00022814 str r3, [sp, 0x38] | var_38h = r3;
0x00022818 str r3, [sp, 0x20] | var_20h = r3;
0x0002281c bl 0x576c | memset (r0, r1, r2);
0x00022820 ldr r1, [pc, 0x534] | r1 = *(0x22d58);
0x00022824 add r3, sp, 0x38 | r3 += var_38h;
0x00022828 mov r2, r3 | r2 = r3;
0x0002282c add r1, pc, r1 | r1 = pc + r1;
0x00022830 mov r0, r8 | r0 = r8;
0x00022834 str r3, [sp, 0x14] | var_14h = r3;
0x00022838 bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x0002283c subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x00022840 beq 0x22d24 | goto label_11;
| }
0x00022844 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00022848 bl 0x5250 | strlen (r0);
0x0002284c ldr r3, [sp, 0x20] | r3 = var_20h;
0x00022850 cmn fp, 1 |
| if (fp == 1) {
0x00022854 movne sb, r3 | sb = r3;
| }
0x00022858 mov r7, r0 | r7 = r0;
| if (fp != 1) {
0x0002285c bne 0x228b4 | goto label_6;
| }
0x00022860 cmp r0, 3 |
| if (r0 < 3) {
0x00022864 bls 0x22964 | goto label_12;
| }
0x00022868 ldr r3, [pc, 0x4f0] |
0x0002286c add r3, pc, r3 | r3 = pc + r3;
0x00022870 add r3, r3, 0x1c | r3 = 0x22d78;
| label_0:
0x00022874 mov fp, 0 |
0x00022878 add r2, sp, 0x38 | r2 += var_38h;
| do {
0x0002287c ldr r1, [r3, fp, lsl 2] | offset_0 = fp << 2;
| r1 = *((r3 + offset_0));
0x00022880 mov r0, r2 | r0 = r2;
0x00022884 str r3, [sp, 0x24] | var_24h = r3;
0x00022888 str r2, [sp, 0x20] | var_20h = r2;
0x0002288c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00022890 cmp r0, 0 |
| if (r0 != 0) {
0x00022894 bne 0x228b4 | goto label_6;
| }
0x00022898 add fp, fp, 1 |
0x0002289c cmp fp, 7 |
0x000228a0 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000228a4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000228a8 bne 0x2287c |
| } while (fp != 7);
0x000228ac mov sb, r0 | sb = r0;
0x000228b0 mvn fp, 0 |
| label_6:
0x000228b4 cmn r6, 1 |
0x000228b8 eor r3, sb, 1 | r3 = sb ^ 1;
| if (r6 == 1) {
0x000228bc movne r2, 0 | r2 = 0;
| }
| if (r6 != 1) {
0x000228c0 moveq r2, 1 | r2 = 1;
| }
0x000228c4 ands r3, r2, r3 | r3 = r2 & r3;
| if (r3 == r2) {
0x000228c8 beq 0x22908 | goto label_1;
| }
0x000228cc mov r6, 0 | r6 = 0;
0x000228d0 add sb, sp, 0x38 | sb += var_38h;
| do {
0x000228d4 str r3, [sp, 0x20] | var_20h = r3;
0x000228d8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000228dc mov r0, sb | r0 = sb;
0x000228e0 ldr r1, [r3, r6, lsl 2] | offset_1 = r6 << 2;
| r1 = *((r3 + offset_1));
0x000228e4 bl 0x19dc0 | Curl_strcasecompare ();
0x000228e8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000228ec cmp r0, 0 |
| if (r0 != 0) {
0x000228f0 bne 0x22970 | goto label_13;
| }
0x000228f4 add r6, r6, 1 | r6++;
0x000228f8 cmp r6, 0xc |
0x000228fc bne 0x228d4 |
| } while (r6 != 0xc);
0x00022900 mov sb, r0 | sb = r0;
0x00022904 mvn r6, 0 | r6 = ~0;
| label_1:
0x00022908 cmn r4, 1 |
0x0002290c mov r2, r4 | r2 = r4;
0x00022910 eor r3, sb, 1 | r3 = sb ^ 1;
| if (r4 == 1) {
0x00022914 movne r2, 0 | r2 = 0;
| }
| if (r4 != 1) {
0x00022918 moveq r2, 1 | r2 = 1;
| }
0x0002291c tst r2, r3 |
| if ((r2 & r3) == 0) {
0x00022920 beq 0x22978 | goto label_14;
| }
0x00022924 ldr r3, [pc, 0x438] | r3 = *(0x22d60);
0x00022928 mov r4, 0 | r4 = 0;
0x0002292c add r3, pc, r3 | r3 = pc + r3;
| do {
0x00022930 add sb, r3, r4 | sb = r3 + r4;
0x00022934 mov r1, sb | r1 = sb;
0x00022938 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0002293c str r3, [sp, 0x20] | var_20h = r3;
0x00022940 bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00022944 cmp r0, 0 |
| if (r0 != 0) {
0x00022948 bne 0x22d40 | goto label_15;
| }
0x0002294c add r4, r4, 0xc | r4 += 0xc;
0x00022950 cmp r4, 0x33c |
0x00022954 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00022958 bne 0x22930 |
| } while (r4 != 0x33c);
| do {
| label_3:
0x0002295c mvn r0, 0 | r0 = ~0;
0x00022960 b 0x22d10 | goto label_16;
| label_12:
0x00022964 ldr r3, [pc, 0x3fc] | r3 = *(0x22d64);
0x00022968 add r3, pc, r3 | r3 = pc + r3;
0x0002296c b 0x22874 | goto label_0;
| label_13:
0x00022970 mov sb, r3 | sb = r3;
0x00022974 b 0x22908 | goto label_1;
| label_14:
0x00022978 cmp sb, 0 |
0x0002297c beq 0x2295c |
| } while (sb == 0);
| label_7:
0x00022980 add r3, r8, r7 | r3 = r8 + r7;
| do {
| label_4:
0x00022984 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00022988 add r2, r2, 1 | r2++;
0x0002298c str r2, [sp, 0x10] | var_10h = r2;
0x00022990 b 0x22740 | goto label_2;
| label_10:
0x00022994 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00022998 cmn r3, 1 |
| if (r3 != 1) {
0x0002299c bne 0x229d8 | goto label_17;
| }
0x000229a0 ldr r1, [pc, 0x3c4] | r1 = *(0x22d68);
0x000229a4 add r3, sp, 0x38 | r3 += var_38h;
0x000229a8 str r3, [sp] | *(sp) = r3;
0x000229ac add r2, sp, 0x28 | r2 += var_28h;
0x000229b0 add r3, sp, 0x2c | r3 += var_2ch;
0x000229b4 add r1, pc, r1 | r1 = pc + r1;
0x000229b8 mov r0, r8 | r0 = r8;
0x000229bc bl 0x5658 | r0 = sscanf (r0, r1, r2);
0x000229c0 cmp r0, 2 |
| if (r0 != 2) {
0x000229c4 ldreq r7, [sp, 0x38] | r7 = var_38h;
| }
| if (r0 != 2) {
0x000229c8 moveq r2, 0 | r2 = 0;
| }
| if (r0 != 2) {
0x000229cc addeq r3, r8, r7 | r3 = r8 + r7;
| }
| if (r0 != 2) {
0x000229d0 streq r2, [sp, 0x30] | var_30h = r2;
| }
0x000229d4 beq 0x22984 |
| } while (r0 == 2);
| label_17:
0x000229d8 bl 0x4eb4 | errno_location ();
0x000229dc mov r3, 0 | r3 = 0;
0x000229e0 mov r2, 0xa | r2 = 0xa;
0x000229e4 add r1, sp, 0x34 | r1 += endptr;
0x000229e8 ldr sb, [r0] | sb = *(r0);
0x000229ec mov r7, r0 | r7 = r0;
0x000229f0 str r3, [r0] | *(r0) = r3;
0x000229f4 mov r0, r8 | r0 = r8;
0x000229f8 bl 0x5274 | strtol (r0, r1, r2);
0x000229fc ldr r2, [r7] | r2 = *(r7);
0x00022a00 cmp sb, r2 |
| if (sb == r2) {
0x00022a04 strne sb, [r7] | *(r7) = sb;
| }
0x00022a08 cmp r2, 0 |
0x00022a0c str r2, [sp, 0x14] | var_14h = r2;
| if (r2 != 0) {
0x00022a10 bne 0x2295c | goto label_3;
| }
0x00022a14 bl 0x25344 | curlx_sltosi ();
0x00022a18 cmn r4, 1 |
0x00022a1c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00022a20 mov r7, r0 | r7 = r0;
| if (r4 != 1) {
0x00022a24 bne 0x22bb8 | goto label_18;
| }
0x00022a28 ldr sb, [sp, 0x34] | sb = endptr;
0x00022a2c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00022a30 sub r1, sb, r8 | r1 = sb - r8;
0x00022a34 cmp r3, r8 |
0x00022a38 ldr r3, [pc, 0x330] | r3 = *(0x22d6c);
0x00022a3c sub sb, r1, 4 | sb = r1 - 4;
0x00022a40 clz sb, sb | sb &= sb;
0x00022a44 lsr sb, sb, 5 | sb >>= 5;
| if (r3 < r8) {
0x00022a48 movhs sb, 0 | sb = 0;
| }
0x00022a4c cmp r0, r3 |
| if (r0 <= r3) {
0x00022a50 movgt sb, 0 | sb = 0;
| }
| if (r0 > r3) {
0x00022a54 andle sb, sb, 1 | sb &= 1;
| }
0x00022a58 cmp sb, 0 |
| if (sb != 0) {
0x00022a5c beq 0x22ab8 |
0x00022a60 ldrb r3, [r8, -1] | r3 = *((r8 - 1));
0x00022a64 sub r1, r3, 0x2b | r1 = r3 - 0x2b;
0x00022a68 tst r1, 0xfd |
0x00022a6c str r3, [sp, 0x20] | var_20h = r3;
| if ((r1 & 0xfd) != 0) {
0x00022a70 bne 0x22bb8 | goto label_18;
| }
0x00022a74 mov r1, 0x64 | r1 = 0x64;
0x00022a78 bl 0x37f24 | divsi3 ();
0x00022a7c mov r2, 0x3c | r2 = 0x3c;
0x00022a80 mov r1, 0x64 | r1 = 0x64;
0x00022a84 str r2, [sp, 0x14] | var_14h = r2;
0x00022a88 mul r4, r2, r0 | r4 = r2 * r0;
0x00022a8c mov r0, r7 | r0 = r7;
0x00022a90 bl 0x38000 | aeabi_idivmod ();
0x00022a94 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00022a98 add r4, r4, r1 | r4 += r1;
0x00022a9c mul r3, r2, r4 | r3 = r2 * r4;
0x00022aa0 mov r4, r3 | r4 = r3;
0x00022aa4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00022aa8 cmp r3, 0x2b |
| if (r3 != 0x2b) {
0x00022aac moveq r3, r4 | r3 = r4;
| }
0x00022ab0 rsbeq r3, r3, 0 | __asm ("rsbeq r3, r3, 0");
| if (r3 == 0x2b) {
0x00022ab4 moveq r4, r3 | r4 = r3;
| goto label_5;
| }
| }
| label_5:
0x00022ab8 ldr r3, [sp, 0x34] | r3 = endptr;
0x00022abc sub r8, r3, r8 | r8 = r3 - r8;
0x00022ac0 cmp r8, 8 |
| if (r8 == 8) {
0x00022ac4 bne 0x22b34 |
0x00022ac8 cmn r6, 1 |
0x00022acc cmneq r5, 1 | __asm ("cmneq r5, 1");
| if (r6 != 1) {
0x00022ad0 moveq r8, 1 | r8 = 1;
| }
| if (r6 == 1) {
0x00022ad4 movne r8, 0 | r8 = 0;
| }
| if (r6 != 1) {
0x00022ad8 bne 0x22b34 | goto label_19;
| }
0x00022adc cmn sl, 1 |
| if (sl == 1) {
0x00022ae0 mvnne r5, 0 | r5 = ~0;
| }
| if (sl == 1) {
0x00022ae4 movne r6, r5 | r6 = r5;
| }
| if (sl != 1) {
0x00022ae8 bne 0x22b34 | goto label_19;
| }
0x00022aec ldr r1, [pc, 0x280] | r1 = *(0x22d70);
0x00022af0 mov r0, r7 | r0 = r7;
0x00022af4 str r3, [sp, 0x14] | var_14h = r3;
0x00022af8 bl 0x37f24 | divsi3 ();
0x00022afc ldr r1, [pc, 0x270] | r1 = *(0x22d70);
0x00022b00 mov sb, r8 | sb = r8;
0x00022b04 mov r5, r0 | r5 = r0;
0x00022b08 mov r0, r7 | r0 = r7;
0x00022b0c bl 0x38000 | aeabi_idivmod ();
0x00022b10 mov r0, r1 | r0 = r1;
0x00022b14 mov r1, 0x64 | r1 = 0x64;
0x00022b18 bl 0x37f24 | divsi3 ();
0x00022b1c mov r1, 0x64 | r1 = 0x64;
0x00022b20 sub r6, r0, 1 | r6 = r0 - 1;
0x00022b24 mov r0, r7 | r0 = r7;
0x00022b28 bl 0x38000 | aeabi_idivmod ();
0x00022b2c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00022b30 mov sl, r1 | sl = r1;
| }
| label_19:
0x00022b34 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00022b38 eor r2, sb, 1 | r2 = sb ^ 1;
0x00022b3c eor r1, r1, 1 | r1 ^= 1;
0x00022b40 ands r2, r2, r1 | r2 &= r1;
| if (r2 != r2) {
0x00022b44 beq 0x22b74 |
0x00022b48 cmn sl, 1 |
| if (sl == 1) {
0x00022b4c movne sb, 0 | sb = 0;
| }
| if (sl == 1) {
0x00022b50 strne sb, [sp, 0xc] | var_ch = sb;
| }
| if (sl != 1) {
0x00022b54 bne 0x22b74 | goto label_20;
| }
0x00022b58 sub r1, r7, 1 | r1 = r7 - 1;
0x00022b5c cmp r1, 0x1f |
| if (r1 >= 0x1f) {
0x00022b60 movlo sb, r2 | sb = r2;
| }
| if (r1 < 0x1f) {
0x00022b64 movhs sb, 0 | sb = 0;
| }
0x00022b68 mov r2, 1 | r2 = 1;
| if (r1 >= 0x1f) {
0x00022b6c movlo sl, r7 | sl = r7;
| }
0x00022b70 str r2, [sp, 0xc] | var_ch = r2;
| }
| label_20:
0x00022b74 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00022b78 eor r2, sb, 1 | r2 = sb ^ 1;
0x00022b7c tst r2, r1 |
| if ((r2 & r1) == 0) {
0x00022b80 beq 0x22bc0 | goto label_21;
| }
0x00022b84 cmn r5, 1 |
| if (r5 != 1) {
0x00022b88 bne 0x2295c | goto label_3;
| }
0x00022b8c cmp r7, 0x63 |
| if (r7 <= 0x63) {
0x00022b90 bgt 0x22ba4 |
0x00022b94 cmp r7, 0x46 |
| if (r7 <= 0x46) {
0x00022b98 addgt r7, r7, 0x760 | r7 += 0x760;
| }
| if (r7 <= 0x46) {
0x00022b9c addgt r7, r7, 0xc | r7 += 0xc;
| }
| if (r7 <= 0x46) {
0x00022ba0 addle r7, r7, 0x7d0 | r7 += 0x7d0;
| goto label_22;
| }
| }
| label_22:
0x00022ba4 adds r2, sl, 1 | r2 = sl + 1;
| if (r2 == sl) {
0x00022ba8 movne r2, 1 | r2 = 1;
| }
0x00022bac str r2, [sp, 0xc] | var_ch = r2;
0x00022bb0 mov r5, r7 | r5 = r7;
0x00022bb4 b 0x22984 | goto label_4;
| label_18:
0x00022bb8 mov sb, r2 | sb = r2;
0x00022bbc b 0x22ab8 | goto label_5;
| label_21:
0x00022bc0 cmp sb, 0 |
| if (sb != 0) {
0x00022bc4 bne 0x22984 | goto label_4;
| }
0x00022bc8 b 0x2295c | goto label_3;
| label_8:
0x00022bcc ldr r3, [sp, 0x30] | r3 = var_30h;
0x00022bd0 cmn r3, 1 |
| if (r3 != 1) {
0x00022bd4 streq sb, [sp, 0x28] | var_28h = sb;
| }
| if (r3 != 1) {
0x00022bd8 streq sb, [sp, 0x2c] | var_2ch = sb;
| }
| if (r3 != 1) {
0x00022bdc streq sb, [sp, 0x30] | var_30h = sb;
| }
0x00022be0 cmn sl, 1 |
0x00022be4 cmnne r6, 1 | __asm ("cmnne r6, 1");
| if (sl == 1) {
0x00022be8 beq 0x2295c | goto label_3;
| }
0x00022bec sub r3, r5, 0x760 | r3 = r5 - 0x760;
0x00022bf0 sub r3, r3, 0xf | r3 -= 0xf;
0x00022bf4 cmp r3, 0x86 |
| if (r3 > 0x86) {
0x00022bf8 bhi 0x2295c | goto label_3;
| }
0x00022bfc cmp r6, 0xb |
0x00022c00 cmple sl, 0x1f | __asm ("cmple sl, 0x1f");
| if (r6 > 0xb) {
0x00022c04 bgt 0x2295c | goto label_3;
| }
0x00022c08 ldr sb, [sp, 0x28] | sb = var_28h;
0x00022c0c cmp sb, 0x17 |
| if (sb > 0x17) {
0x00022c10 bgt 0x2295c | goto label_3;
| }
0x00022c14 ldr r8, [sp, 0x2c] | r8 = var_2ch;
0x00022c18 cmp r8, 0x3b |
| if (r8 > 0x3b) {
0x00022c1c bgt 0x2295c | goto label_3;
| }
0x00022c20 ldr r7, [sp, 0x30] | r7 = var_30h;
0x00022c24 cmp r7, 0x3c |
| if (r7 > 0x3c) {
0x00022c28 bgt 0x2295c | goto label_3;
| }
0x00022c2c cmp r6, 0 |
| if (r6 < 0) {
0x00022c30 movge fp, r6 |
| }
| if (r6 < 0) {
0x00022c34 bge 0x22c5c |
0x00022c38 rsb fp, r6, 0xb |
0x00022c3c mov r1, 0xc | r1 = 0xc;
0x00022c40 mov r0, fp | r0 = fp;
0x00022c44 bl 0x37f24 | divsi3 ();
0x00022c48 mov r1, 0xc | r1 = 0xc;
0x00022c4c add r5, r5, r0 | r5 += r0;
0x00022c50 mov r0, fp | r0 = fp;
0x00022c54 bl 0x38000 | aeabi_idivmod ();
0x00022c58 rsb fp, r1, 0xb |
| }
0x00022c5c cmp r6, 1 |
| if (r6 <= 1) {
0x00022c60 movgt r3, r5 | r3 = r5;
| }
| if (r6 > 1) {
0x00022c64 suble r3, r5, 1 | r3 = r5 - 1;
| }
0x00022c68 mvn r1, 0x63 | r1 = ~0x63;
0x00022c6c mov r0, r3 | r0 = r3;
0x00022c70 asr r6, r3, 2 | r6 = r3 >> 2;
0x00022c74 str r3, [sp, 0xc] | var_ch = r3;
0x00022c78 bl 0x37f24 | divsi3 ();
0x00022c7c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00022c80 mov r1, 0x190 | r1 = 0x190;
0x00022c84 add r6, r6, r0 | r6 += r0;
0x00022c88 mov r0, r3 | r0 = r3;
0x00022c8c bl 0x37f24 | divsi3 ();
0x00022c90 ldr r3, [pc, 0xe0] | r3 = "trpbrk";
0x00022c94 sub r2, r5, 0x7b0 | r2 = r5 - 0x7b0;
0x00022c98 sub r2, r2, 2 | r2 -= 2;
0x00022c9c mov r1, 0x3c | r1 = 0x3c;
0x00022ca0 cmn r4, 1 |
0x00022ca4 add r0, r6, r0 | r0 = r6 + r0;
0x00022ca8 sub r0, r0, 0x1dc | r0 -= 0x1dc;
0x00022cac sub r0, r0, 1 | r0--;
0x00022cb0 mla r5, r3, r2, r0 | __asm ("mla r5, r3, r2, r0");
0x00022cb4 ldr r3, [pc, 0xc0] | r3 = *(0x22d78);
0x00022cb8 add r3, pc, r3 | r3 = pc + r3;
0x00022cbc add fp, r3, fp, lsl 2 |
0x00022cc0 ldr r0, [fp, 0x33c] | r0 = *(arg_33ch);
0x00022cc4 add r0, r5, r0 | r0 = r5 + r0;
0x00022cc8 add r0, r0, sl | r0 += sl;
0x00022ccc sub r0, r0, 1 | r0--;
0x00022cd0 mov sl, 0x18 | sl = 0x18;
0x00022cd4 mla r3, sl, r0, sb | __asm ("mla r3, sl, r0, sb");
0x00022cd8 mla r0, r1, r3, r8 | __asm ("mla r0, r1, r3, r8");
0x00022cdc mla r2, r1, r0, r7 | __asm ("mla r2, r1, r0, r7");
| if (r4 == 1) {
0x00022ce0 beq 0x22d18 | goto label_23;
| }
0x00022ce4 cmp r4, 0 |
| if (r4 <= 0) {
0x00022ce8 ble 0x22d04 | goto label_24;
| }
0x00022cec rsb r3, r4, 0x7f000000 | r3 = 0x7f000000 - r4;
0x00022cf0 add r3, r3, 0xff0000 | r3 += 0xff0000;
0x00022cf4 add r3, r3, 0xff00 | r3 += 0xff00;
0x00022cf8 add r3, r3, 0xff | r3 += 0xff;
0x00022cfc cmp r3, r2 |
| if (r3 < r2) {
0x00022d00 blt 0x2295c | goto label_3;
| }
| do {
| label_24:
0x00022d04 add r0, r4, r2 | r0 = r4 + r2;
0x00022d08 cmn r0, 1 |
| if (r0 != 1) {
0x00022d0c moveq r0, 0 | r0 = 0;
| }
| label_16:
0x00022d10 add sp, sp, 0x5c |
0x00022d14 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_23:
0x00022d18 mov r3, 0 | r3 = 0;
0x00022d1c mov r4, r3 | r4 = r3;
0x00022d20 b 0x22d04 |
| } while (1);
| label_11:
0x00022d24 cmn fp, 1 |
| if (fp == 1) {
0x00022d28 movne sb, r7 | sb = r7;
| }
| if (fp != 1) {
0x00022d2c movne r7, sb | r7 = sb;
| goto label_25;
| }
| if (fp != 1) {
| label_25:
0x00022d30 bne 0x228b4 | goto label_6;
| }
0x00022d34 ldr r3, [pc, 0x44] | r3 = *(0x22d7c);
0x00022d38 add r3, pc, r3 | r3 = pc + r3;
0x00022d3c b 0x22874 | goto label_0;
| label_15:
0x00022d40 ldr r4, [sb, 8] | r4 = *((sb + 8));
0x00022d44 mov r1, 0x3c | r1 = 0x3c;
0x00022d48 mul r3, r1, r4 | r3 = r1 * r4;
0x00022d4c mov r4, r3 | r4 = r3;
0x00022d50 b 0x22980 | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x37d90 */
| #include <stdint.h>
|
; (fcn) sym.curl_global_sslset () | uint32_t curl_global_sslset (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00037d90 cmp r2, 0 |
| if (r2 == 0) {
0x00037d94 ldrne r3, [pc, 0xb0] | r3 = *((pc + 0xb0));
| }
| if (r2 == 0) {
0x00037d98 addne r3, pc, r3 | r3 = pc + r3;
| }
| if (r2 == 0) {
0x00037d9c addne r3, r3, 4 | r3 += 4;
| }
| if (r2 == 0) {
0x00037da0 strne r3, [r2] | *(r2) = r3;
| }
0x00037da4 ldr r3, [pc, 0xa4] | r3 = *(0x37e4c);
0x00037da8 ldr ip, [pc, 0xa4] | ip = *(0x37e50);
0x00037dac add r3, pc, r3 | r3 = pc + r3;
0x00037db0 ldr r2, [r3] | r2 = *(0x37e4c);
0x00037db4 add ip, pc, ip |
0x00037db8 cmp r2, ip |
| if (r2 == ip) {
0x00037dbc beq 0x37e34 | goto label_2;
| }
0x00037dc0 ldr r3, [r2] | r3 = *(r2);
0x00037dc4 cmp r3, r0 |
| if (r3 == r0) {
0x00037dc8 movne r0, 2 | r0 = 2;
| }
| if (r3 != r0) {
0x00037dcc moveq r0, 0 | r0 = 0;
| }
0x00037dd0 bx lr | return r0;
| label_0:
0x00037dd4 ldr r2, [r3] | r2 = *(r3);
0x00037dd8 cmp r2, r6 |
0x00037ddc bne 0x37dfc |
| while (r0 != 0) {
0x00037de0 ldr r3, [pc, 0x70] | r3 = *(0x37e54);
0x00037de4 add r3, pc, r3 | r3 = pc + r3;
0x00037de8 add r3, r3, r8 | r3 += r8;
0x00037dec ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00037df0 bl 0x367c8 | multissl_init ();
0x00037df4 mov r0, 0 | r0 = 0;
0x00037df8 pop {r4, r5, r6, r7, r8, pc} |
0x00037dfc cmp r7, 0 |
| if (r7 == 0) {
0x00037e00 beq 0x37e18 | goto label_3;
| }
0x00037e04 mov r1, r7 | r1 = r7;
0x00037e08 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00037e0c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00037e10 cmp r0, 0 |
0x00037e14 bne 0x37de0 |
| }
| label_3:
0x00037e18 add r5, r5, 1 | r5++;
| label_1:
0x00037e1c ldr r3, [r4, r5, lsl 2] | offset_0 = r5 << 2;
| r3 = *((r4 + offset_0));
0x00037e20 lsl r8, r5, 2 | r8 = r5 << 2;
0x00037e24 cmp r3, 0 |
| if (r3 != 0) {
0x00037e28 bne 0x37dd4 | goto label_0;
| }
0x00037e2c mov r0, 1 | r0 = 1;
0x00037e30 pop {r4, r5, r6, r7, r8, pc} |
| label_2:
0x00037e34 push {r4, r5, r6, r7, r8, lr} |
0x00037e38 mov r7, r1 | r7 = r1;
0x00037e3c mov r6, r0 | r6 = r0;
0x00037e40 mov r5, 0 | r5 = 0;
0x00037e44 add r4, r3, 4 | r4 = r3 + 4;
0x00037e48 b 0x37e1c | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2c0dc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.curl_mime_headers () | void curl_mime_headers (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002c0dc push {r4, r5, r6, lr} |
0x0002c0e0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0002c0e4 beq 0x2c144 |
0x0002c0e8 ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x0002c0ec mov r4, r2 | r4 = r2;
0x0002c0f0 tst r3, 1 |
0x0002c0f4 mov r6, r1 | r6 = r1;
| if ((r3 & 1) != 0) {
0x0002c0f8 beq 0x2c118 |
0x0002c0fc ldr r0, [r5, 0x2c] | r0 = *((r5 + 0x2c));
0x0002c100 cmp r0, r1 |
| if (r0 != r1) {
0x0002c104 beq 0x2c10c |
0x0002c108 bl 0x54fc | fcn_000054fc ();
| }
0x0002c10c ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x0002c110 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x0002c114 str r3, [r5, 0x48] | *((r5 + 0x48)) = r3;
| }
0x0002c118 adds r0, r4, 0 | r0 = r4 + 0;
| if (r0 == r4) {
0x0002c11c movne r0, 1 | r0 = 1;
| }
0x0002c120 cmp r6, 0 |
| if (r6 != 0) {
0x0002c124 moveq r0, 0 | r0 = 0;
| }
0x0002c128 cmp r0, 0 |
| if (r0 == 0) {
0x0002c12c ldrne r3, [r5, 0x48] | r3 = *((r5 + 0x48));
| }
0x0002c130 str r6, [r5, 0x2c] | *((r5 + 0x2c)) = r6;
| if (r0 == 0) {
0x0002c134 orrne r3, r3, 1 | r3 |= 1;
| }
| if (r0 == 0) {
0x0002c138 strne r3, [r5, 0x48] | *((r5 + 0x48)) = r3;
| }
| if (r0 == 0) {
0x0002c13c movne r0, 0 | r0 = 0;
| }
0x0002c140 pop {r4, r5, r6, pc} |
| }
0x0002c144 mov r0, 0x2b | r0 = 0x2b;
0x0002c148 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1e510 */
| #include <stdint.h>
|
; (fcn) sym.curl_multi_add_handle () | void curl_multi_add_handle (int32_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001e510 push {r4, r5, r6, lr} |
0x0001e514 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0001e518 beq 0x1e694 | goto label_1;
| }
0x0001e51c ldr r2, [r5] | r2 = *(r5);
0x0001e520 ldr r3, [pc, 0x18c] | r3 = *(0x1e6b0);
0x0001e524 cmp r2, r3 |
| if (r2 != r3) {
0x0001e528 bne 0x1e694 | goto label_1;
| }
0x0001e52c cmp r1, 0 |
| if (r1 == 0) {
0x0001e530 beq 0x1e69c | goto label_2;
| }
0x0001e534 add r3, r1, 0x4000 | r3 = r1 + 0x4000;
0x0001e538 ldr r2, [r3, 0xb10] | r2 = *((r3 + 0xb10));
0x0001e53c ldr r3, [pc, 0x174] | r3 = *(0x1e6b4);
0x0001e540 cmp r2, r3 |
| if (r2 != r3) {
0x0001e544 bne 0x1e69c | goto label_2;
| }
0x0001e548 ldr r3, [r1, 0x64] | r3 = *((r1 + 0x64));
0x0001e54c cmp r3, 0 |
| if (r3 != 0) {
0x0001e550 bne 0x1e6a4 | goto label_3;
| }
0x0001e554 ldrb r6, [r5, 0xf4] | r6 = *((r5 + 0xf4));
0x0001e558 cmp r6, 0 |
| if (r6 != 0) {
0x0001e55c bne 0x1e6ac | goto label_4;
| }
0x0001e560 mov r4, r1 | r4 = r1;
0x0001e564 add r0, r4, 0x4800 | r0 = r4 + 0x4800;
0x0001e568 mov r1, r6 | r1 = r6;
0x0001e56c add r0, r0, 0xd0 | r0 += 0xd0;
0x0001e570 bl 0x1cbe4 | Curl_llist_init ();
0x0001e574 ldr r3, [r4, 0x138] | r3 = *((r4 + 0x138));
0x0001e578 mov r1, 0 | r1 = 0;
0x0001e57c cmp r3, 0 |
| if (r3 == 0) {
0x0001e580 strbne r6, [r3] | *(r3) = r6;
| }
0x0001e584 mov r0, r4 | r0 = r4;
0x0001e588 bl 0x1d3c0 | mstate ();
0x0001e58c ldrb r3, [r4, 0x4ed] | r3 = *((r4 + 0x4ed));
0x0001e590 cmp r3, 0 |
| if (r3 == 0) {
0x0001e594 beq 0x1e668 | goto label_5;
| }
0x0001e598 ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
0x0001e59c cmp r3, 1 |
| if (r3 == 1) {
0x0001e5a0 beq 0x1e668 | goto label_5;
| }
0x0001e5a4 bl 0x703c | r0 = Curl_global_host_cache_init ();
0x0001e5a8 cmp r0, 0 |
| if (r0 == 0) {
0x0001e5ac strne r0, [r4, 0x5c] | *((r4 + 0x5c)) = r0;
| }
| if (r0 == 0) {
0x0001e5b0 movne r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001e5b4 bne 0x1e68c | goto label_6;
| }
| do {
| label_0:
0x0001e5b8 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x0001e5bc cmp r3, 0 |
| if (r3 != 0) {
0x0001e5c0 beq 0x1e5d4 |
0x0001e5c4 ldr r2, [r3] | r2 = *(r3);
0x0001e5c8 tst r2, 0x20 |
| if ((r2 & 0x20) == 0) {
0x0001e5cc addne r3, r3, 0x14 | r3 += 0x14;
| }
| if ((r2 & 0x20) != 0) {
0x0001e5d0 bne 0x1e5d8 | goto label_7;
| }
| }
0x0001e5d4 add r3, r5, 0x80 | r3 = r5 + 0x80;
| label_7:
0x0001e5d8 str r3, [r4, 0x7b0] | *((r4 + 0x7b0)) = r3;
0x0001e5dc mov r3, 0 | r3 = 0;
0x0001e5e0 str r3, [r4] | *(r4) = r3;
0x0001e5e4 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0001e5e8 mov r0, r4 | r0 = r4;
0x0001e5ec cmp r3, 0 |
| if (r3 == 0) {
0x0001e5f0 ldrne r3, [r5, 8] | r3 = *((r5 + 8));
| }
| if (r3 != 0) {
0x0001e5f4 streq r3, [r4, 4] | *((r4 + 4)) = r3;
| }
| if (r3 == 0) {
0x0001e5f8 strne r4, [r3] | *(r3) = r4;
| }
| if (r3 != 0) {
0x0001e5fc streq r4, [r5, 4] | *((r5 + 4)) = r4;
| }
| if (r3 == 0) {
0x0001e600 strne r3, [r4, 4] | *((r4 + 4)) = r3;
| }
0x0001e604 mov r2, 6 | r2 = 6;
0x0001e608 str r4, [r5, 8] | *((r5 + 8)) = r4;
0x0001e60c mov r1, 0 | r1 = 0;
0x0001e610 str r5, [r4, 0x64] | *((r4 + 0x64)) = r5;
0x0001e614 bl 0x1e348 | Curl_expire ();
0x0001e618 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0001e61c mov r1, 0 | r1 = 0;
0x0001e620 add r3, r3, 1 | r3++;
0x0001e624 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x0001e628 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0001e62c mov r2, 8 | r2 = 8;
0x0001e630 add r3, r3, 1 | r3++;
0x0001e634 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0001e638 add r0, r5, 0xec | r0 = r5 + 0xec;
0x0001e63c bl 0x576c | memset (r0, r1, r2);
0x0001e640 ldr r3, [r4, 0x7b0] | r3 = *((r4 + 0x7b0));
0x0001e644 ldr r2, [r4, 0x1e0] | r2 = *((r4 + 0x1e0));
0x0001e648 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0001e64c mov r0, r5 | r0 = r5;
0x0001e650 str r2, [r3, 0x1e0] | *((r3 + 0x1e0)) = r2;
0x0001e654 ldr r2, [r4, 0x1f0] | r2 = *((r4 + 0x1f0));
0x0001e658 str r2, [r3, 0x1f0] | *((r3 + 0x1f0)) = r2;
0x0001e65c bl 0x1d9bc | update_timer ();
0x0001e660 mov r0, 0 | r0 = 0;
0x0001e664 pop {r4, r5, r6, pc} |
| label_5:
0x0001e668 ldr r3, [r4, 0x5c] | r3 = *((r4 + 0x5c));
0x0001e66c cmp r3, 0 |
| if (r3 == 0) {
0x0001e670 beq 0x1e680 | goto label_8;
| }
0x0001e674 ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
0x0001e678 cmp r3, 0 |
0x0001e67c bne 0x1e5b8 |
| } while (r3 != 0);
| label_8:
0x0001e680 add r3, r5, 0x44 | r3 = r5 + 0x44;
0x0001e684 str r3, [r4, 0x5c] | *((r4 + 0x5c)) = r3;
0x0001e688 mov r3, 2 | r3 = 2;
| label_6:
0x0001e68c str r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
0x0001e690 b 0x1e5b8 | goto label_0;
| label_1:
0x0001e694 mov r0, 1 | r0 = 1;
0x0001e698 pop {r4, r5, r6, pc} |
| label_2:
0x0001e69c mov r0, 2 | r0 = 2;
0x0001e6a0 pop {r4, r5, r6, pc} |
| label_3:
0x0001e6a4 mov r0, 7 | r0 = 7;
0x0001e6a8 pop {r4, r5, r6, pc} |
| label_4:
0x0001e6ac mov r0, 8 | r0 = 8;
0x0001e6b0 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1dd28 */
| #include <stdint.h>
|
; (fcn) sym.curl_multi_wait () | void curl_multi_wait (int32_t arg_98h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_20h;
| int32_t var_74h;
| r0 = arg1;
| r1 = arg2;
0x0001dd28 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001dd2c ldr sb, [pc, 0x2cc] | sb = *(0x1dffc);
0x0001dd30 subs r5, r0, 0 | r5 -= arg_98h;
0x0001dd34 add sb, pc, sb | sb = pc + sb;
0x0001dd38 sub sp, sp, 0x74 |
| if (r5 == arg_98h) {
0x0001dd3c beq 0x1dff4 | goto label_4;
| }
0x0001dd40 ldr ip, [r5] | ip = *(r5);
0x0001dd44 ldr r0, [pc, 0x2b8] | r0 = *(0x1e000);
0x0001dd48 cmp ip, r0 |
| if (ip != r0) {
0x0001dd4c bne 0x1dff4 | goto label_4;
| }
0x0001dd50 ldrb sl, [r5, 0xf4] | sl = *((r5 + 0xf4));
0x0001dd54 cmp sl, 0 |
| if (sl == 0) {
0x0001dd58 movne r0, 8 | r0 = 8;
| }
| if (sl != 0) {
0x0001dd5c bne 0x1dff8 | goto label_5;
| }
0x0001dd60 mov r4, r3 | r4 = r3;
0x0001dd64 ldr r3, [r5, 0x5c] | r3 = *((r5 + 0x5c));
0x0001dd68 str r2, [sp] | *(sp) = r2;
0x0001dd6c cmp r3, 0 |
| if (r3 != 0) {
0x0001dd70 mvneq r3, 0 | r3 = ~0;
| }
0x0001dd74 mov r7, r1 | r7 = r1;
| if (r3 != 0) {
0x0001dd78 streq r3, [sp, 8] | var_8h = r3;
| }
| if (r3 != 0) {
0x0001dd7c beq 0x1dd8c |
0x0001dd80 add r1, sp, 8 | r1 += var_8h;
0x0001dd84 add r0, r5, 0x5c | r0 = r5 + 0x5c;
0x0001dd88 bl 0x1d400 | multi_timeout_isra_2_part_3 ();
| }
0x0001dd8c ldr r8, [sp, 8] | r8 = var_8h;
0x0001dd90 mov r6, 0 | r6 = 0;
0x0001dd94 cmp r8, r4 |
0x0001dd98 mvn r3, r8 | r3 = ~r8;
0x0001dd9c lsr r3, r3, 0x1f | r3 >>= 0x1f;
| if (r8 < r4) {
0x0001dda0 movge r3, 0 | r3 = 0;
| }
0x0001dda4 cmp r3, 0 |
| if (r3 != 0) {
0x0001dda8 moveq r8, r4 | r8 = r4;
| }
0x0001ddac ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x0001ddb0 add fp, sp, 0xc |
| label_0:
0x0001ddb4 cmp r4, 0 |
| if (r4 == 0) {
0x0001ddb8 bne 0x1ddf8 |
0x0001ddbc ldr r3, [sp] | r3 = *(sp);
0x0001ddc0 adds r0, r6, r3 | r0 = r6 + r3;
| if (r0 == r6) {
0x0001ddc4 beq 0x1de50 | goto label_6;
| }
0x0001ddc8 cmp r0, 0xa |
| if (r0 < 0xa) {
0x0001ddcc bls 0x1de4c | goto label_7;
| }
0x0001ddd0 ldr r3, [pc, 0x230] |
0x0001ddd4 lsl r0, r0, 3 | r0 <<= 3;
0x0001ddd8 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x0001dddc ldr r3, [r3] | r3 = *(0x1e004);
0x0001dde0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001dde4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0001dde8 movne sl, 1 | sl = 1;
| }
| if (r4 != r0) {
0x0001ddec bne 0x1de50 | goto label_6;
| }
0x0001ddf0 mov r0, 3 | r0 = 3;
0x0001ddf4 b 0x1dff8 | goto label_5;
| }
0x0001ddf8 mov r1, fp | r1 = fp;
0x0001ddfc mov r0, r4 | r0 = r4;
0x0001de00 bl 0x1d5b0 | multi_getsock_constprop_11 ();
0x0001de04 mov r3, 0 | r3 = 0;
| do {
0x0001de08 asr r2, r0, r3 | r2 = r0 >> r3;
0x0001de0c add r1, r3, 0x10 | r1 = r3 + 0x10;
0x0001de10 asr r1, r0, r1 | r1 = r0 >> r1;
0x0001de14 tst r2, 1 |
| if ((r2 & 1) == 0) {
0x0001de18 ldrne r2, [fp, r3, lsl 2] | offset_0 = r3 << 2;
| r2 = *((fp + offset_0));
| }
| if ((r2 & 1) == 0) {
0x0001de1c addne r6, r6, 1 | r6++;
| }
| if ((r2 & 1) != 0) {
0x0001de20 mvneq r2, 0 | r2 = ~0;
| }
0x0001de24 tst r1, 1 |
| if ((r1 & 1) == 0) {
0x0001de28 ldrne r2, [fp, r3, lsl 2] | offset_1 = r3 << 2;
| r2 = *((fp + offset_1));
| }
| if ((r1 & 1) == 0) {
0x0001de2c addne r6, r6, 1 | r6++;
| }
0x0001de30 cmn r2, 1 |
| if (r2 == 1) {
0x0001de34 beq 0x1de44 | goto label_8;
| }
0x0001de38 add r3, r3, 1 | r3++;
0x0001de3c cmp r3, 5 |
0x0001de40 bne 0x1de08 |
| } while (r3 != 5);
| label_8:
0x0001de44 ldr r4, [r4] | r4 = *(r4);
0x0001de48 b 0x1ddb4 | goto label_0;
| label_7:
0x0001de4c add r4, sp, 0x20 | r4 += var_20h;
| label_6:
0x0001de50 cmp r6, 0 |
| if (r6 == 0) {
0x0001de54 ldrne r2, [r5, 4] | r2 = *((r5 + 4));
| }
| if (r6 == 0) {
0x0001de58 addne fp, sp, 0xc |
| }
| if (r6 == 0) {
0x0001de5c movne r5, 0 | r5 = 0;
| }
| if (r6 != 0) {
0x0001de60 bne 0x1deec | goto label_9;
| }
0x0001de64 mov r5, r6 | r5 = r6;
0x0001de68 b 0x1def4 | goto label_10;
| label_1:
0x0001de6c mov r0, r2 | r0 = r2;
0x0001de70 mov r1, fp | r1 = fp;
0x0001de74 str r2, [sp, 4] | var_4h = r2;
0x0001de78 bl 0x1d5b0 | multi_getsock_constprop_11 ();
0x0001de7c ldr r2, [sp, 4] | r2 = var_4h;
0x0001de80 mov r3, 0 | r3 = 0;
0x0001de84 mov lr, 4 | lr = 4;
| do {
0x0001de88 asr r1, r0, r3 | r1 = r0 >> r3;
0x0001de8c tst r1, 1 |
| if ((r1 & 1) == 0) {
0x0001de90 ldrne ip, [fp, r3, lsl 2] | offset_2 = r3 << 2;
| ip = *((fp + offset_2));
| }
| if ((r1 & 1) == 0) {
0x0001de94 addne r1, r4, r5, lsl 3 | r1 = r4 + (r5 << 3);
| }
| if ((r1 & 1) == 0) {
0x0001de98 strne ip, [r4, r5, lsl 3] | offset_3 = r5 << 3;
| *((r4 + offset_3)) = ip;
| }
| if ((r1 & 1) == 0) {
0x0001de9c movne ip, 1 |
| }
0x0001dea0 strhne ip, [r1, 4] | __asm ("strhne ip, [r1, 4]");
0x0001dea4 add ip, r3, 0x10 |
0x0001dea8 asr ip, r0, ip |
| if ((r1 & 1) == 0) {
0x0001deac ldrne r1, [fp, r3, lsl 2] | offset_4 = r3 << 2;
| r1 = *((fp + offset_4));
| }
| if ((r1 & 1) == 0) {
0x0001deb0 addne r5, r5, 1 | r5++;
| }
| if ((r1 & 1) != 0) {
0x0001deb4 mvneq r1, 0 | r1 = ~0;
| }
0x0001deb8 tst ip, 1 |
| if ((ip & 1) == 0) {
0x0001debc ldrne ip, [fp, r3, lsl 2] | offset_5 = r3 << 2;
| ip = *((fp + offset_5));
| }
| if ((ip & 1) == 0) {
0x0001dec0 addne r1, r4, r5, lsl 3 | r1 = r4 + (r5 << 3);
| }
| if ((ip & 1) == 0) {
0x0001dec4 strne ip, [r4, r5, lsl 3] | offset_6 = r5 << 3;
| *((r4 + offset_6)) = ip;
| }
0x0001dec8 strhne lr, [r1, 4] | __asm ("strhne lr, [r1, 4]");
| if ((ip & 1) == 0) {
0x0001decc ldrne r1, [fp, r3, lsl 2] | offset_7 = r3 << 2;
| r1 = *((fp + offset_7));
| }
| if ((ip & 1) == 0) {
0x0001ded0 addne r5, r5, 1 | r5++;
| }
0x0001ded4 cmn r1, 1 |
| if (r1 == 1) {
0x0001ded8 beq 0x1dee8 | goto label_11;
| }
0x0001dedc add r3, r3, 1 | r3++;
0x0001dee0 cmp r3, 5 |
0x0001dee4 bne 0x1de88 |
| } while (r3 != 5);
| label_11:
0x0001dee8 ldr r2, [r2] | r2 = *(r2);
| label_9:
0x0001deec cmp r2, 0 |
| if (r2 != 0) {
0x0001def0 bne 0x1de6c | goto label_1;
| }
| label_10:
0x0001def4 add r0, r4, r5, lsl 3 | r0 = r4 + (r5 << 3);
0x0001def8 mov fp, 0 |
0x0001defc mov r3, r0 | r3 = r0;
0x0001df00 mov ip, fp |
0x0001df04 mov lr, 1 | lr = 1;
0x0001df08 b 0x1df50 |
| while (fp != r2) {
0x0001df0c ldr r2, [r7, fp, lsl 3] | offset_8 = fp << 3;
| r2 = *((r7 + offset_8));
0x0001df10 add r3, r3, 8 | r3 += 8;
0x0001df14 str r2, [r0, fp, lsl 3] | offset_9 = fp << 3;
| *((r0 + offset_9)) = r2;
0x0001df18 add r2, r7, fp, lsl 3 | r2 = r7 + (fp << 3);
0x0001df1c strh ip, [r3, -4] | *((r3 - 4)) = ip;
0x0001df20 ldrh r2, [r2, 4] | r2 = *((r2 + 4));
0x0001df24 add fp, fp, 1 |
0x0001df28 tst r2, 1 |
0x0001df2c strhne lr, [r3, -4] | __asm ("strhne lr, [r3, -4]");
0x0001df30 tst r2, 2 |
0x0001df34 ldrhne r1, [r3, -4] | __asm ("ldrhne r1, [r3, -4]");
| if ((r2 & 2) == 0) {
0x0001df38 orrne r1, r1, 2 | r1 |= 2;
| }
0x0001df3c strhne r1, [r3, -4] | __asm ("strhne r1, [r3, -4]");
0x0001df40 tst r2, 4 |
0x0001df44 ldrhne r2, [r3, -4] | __asm ("ldrhne r2, [r3, -4]");
| if ((r2 & 4) == 0) {
0x0001df48 orrne r2, r2, 4 | r2 |= 4;
| }
0x0001df4c strhne r2, [r3, -4] | __asm ("strhne r2, [r3, -4]");
0x0001df50 ldr r2, [sp] | r2 = *(sp);
0x0001df54 cmp fp, r2 |
0x0001df58 bne 0x1df0c |
| }
0x0001df5c adds r1, fp, r5 | r1 = fp + r5;
0x0001df60 bne 0x1df9c |
| while (r5 <= r0) {
0x0001df64 mov r5, 0 | r5 = 0;
| label_2:
0x0001df68 cmp sl, 0 |
| if (sl != 0) {
0x0001df6c beq 0x1df84 |
0x0001df70 ldr r3, [pc, 0x94] |
0x0001df74 mov r0, r4 | r0 = r4;
0x0001df78 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x0001df7c ldr r3, [r3] | r3 = *(0x1e008);
0x0001df80 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x0001df84 ldr r3, [sp, 0x98] | r3 = *(arg_98h);
0x0001df88 cmp r3, 0 |
| if (r3 == 0) {
0x0001df8c strne r5, [r3] | *(r3) = r5;
| }
| if (r3 == 0) {
0x0001df90 movne r0, 0 | r0 = 0;
| }
| if (r3 != 0) {
0x0001df94 ldreq r0, [sp, 0x98] | r0 = *(arg_98h);
| }
0x0001df98 b 0x1dff8 | goto label_5;
0x0001df9c mov r2, r8 | r2 = r8;
0x0001dfa0 mov r0, r4 | r0 = r4;
0x0001dfa4 bl 0x2322c | r0 = Curl_poll ();
0x0001dfa8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 <= r0) {
0x0001dfac lslgt r6, r6, 3 | r6 <<= 3;
| }
| if (r5 <= r0) {
0x0001dfb0 movgt r2, 0 | r2 = 0;
| }
0x0001dfb4 ble 0x1df64 |
| }
| label_3:
0x0001dfb8 cmp fp, r2 |
| if (fp == r2) {
0x0001dfbc beq 0x1df68 | goto label_2;
| }
0x0001dfc0 lsl r1, r2, 3 | r1 = r2 << 3;
0x0001dfc4 add r3, r6, r1 | r3 = r6 + r1;
0x0001dfc8 add r3, r4, r3 | r3 = r4 + r3;
0x0001dfcc ldrsh r0, [r3, 6] | r0 = *((r3 + 6));
0x0001dfd0 add r1, r7, r1 | r1 = r7 + r1;
0x0001dfd4 and r3, r0, 1 | r3 = r0 & 1;
0x0001dfd8 tst r0, 4 |
| if ((r0 & 4) == 0) {
0x0001dfdc orrne r3, r3, 4 | r3 |= 4;
| }
0x0001dfe0 tst r0, 2 |
| if ((r0 & 2) == 0) {
0x0001dfe4 orrne r3, r3, 2 | r3 |= 2;
| }
0x0001dfe8 strh r3, [r1, 6] | *((r1 + 6)) = r3;
0x0001dfec add r2, r2, 1 | r2++;
0x0001dff0 b 0x1dfb8 | goto label_3;
| label_4:
0x0001dff4 mov r0, 1 | r0 = 1;
| label_5:
0x0001dff8 add sp, sp, 0x74 |
0x0001dffc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x15b90 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.dprintf_formatf () | void dprintf_formatf (int32_t arg1, int32_t arg2) {
| char * * endptr;
| int32_t var_0h_3;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_18h_3;
| char * format;
| int32_t var_24h;
| int32_t var_2ch;
| char * var_30h;
| int32_t var_31h;
| int8_t var_1h_2;
| void * s;
| int32_t var_38h;
| char * var_50h;
| int32_t var_1h;
| int32_t var_194h;
| int32_t var_0h_4;
| int32_t var_198h;
| int32_t var_0h_2;
| int32_t var_4h;
| int32_t var_8h_2;
| int32_t var_ch_4;
| int32_t var_398h;
| int32_t var_4h_2;
| int32_t var_8h_3;
| int32_t var_ch_3;
| int32_t var_10h_2;
| int32_t var_10h_3;
| int32_t var_18h_2;
| size_t var_f90h;
| size_t nmeb;
| int32_t var_ch_2;
| r0 = arg1;
| r1 = arg2;
0x00015b90 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00015b94 sub sp, sp, 0xf90 |
0x00015b98 sub sp, sp, 0xc |
0x00015b9c mov r4, r3 | r4 = r3;
0x00015ba0 mov r5, 0 | r5 = 0;
0x00015ba4 add r3, sp, 0x198 | r3 += var_198h;
0x00015ba8 str r3, [sp, 0xc] | var_ch = r3;
0x00015bac mov fp, r0 |
0x00015bb0 add r3, sp, 0x50 | r3 += var_50h;
0x00015bb4 mov sl, r5 | sl = r5;
0x00015bb8 str r1, [sp, 8] | var_8h = r1;
0x00015bbc str r2, [sp, 0x10] | var_10h = r2;
0x00015bc0 str r2, [sp, 0x50] | var_50h = r2;
0x00015bc4 str r3, [sp] | *(sp) = r3;
| do {
| label_0:
0x00015bc8 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00015bcc ldrb ip, [r3] | ip = *(r3);
0x00015bd0 cmp ip, 0 |
| if (ip == 0) {
0x00015bd4 bne 0x15c28 |
0x00015bd8 add r2, sp, 0x398 | r2 += var_398h;
0x00015bdc mov lr, 0x18 | lr = 0x18;
0x00015be0 mov r6, 3 | r6 = 3;
| label_12:
0x00015be4 cmp ip, r5 |
| if (ip < r5) {
0x00015be8 blt 0x16034 | goto label_52;
| }
0x00015bec ldr r3, [sp, 0x10] | r3 = var_10h;
0x00015bf0 str r3, [sp, 0x2c] | var_2ch = r3;
0x00015bf4 add r3, sp, 0x198 | r3 += var_198h;
0x00015bf8 str r3, [sp, 0x14] | var_14h = r3;
0x00015bfc mov r3, 0 | r3 = 0;
0x00015c00 str r3, [sp, 0xc] | var_ch = r3;
0x00015c04 mov r4, r3 | r4 = r3;
0x00015c08 ldr r3, [pc, 0xf90] | r3 = *(0x16b9c);
0x00015c0c add r3, pc, r3 | r3 = pc + r3;
0x00015c10 str r3, [sp, 0x10] | var_10h = r3;
0x00015c14 ldr r3, [pc, 0xf88] |
0x00015c18 add r3, pc, r3 | r3 = pc + r3;
0x00015c1c add r3, r3, 0x50 | r3 = 0x16bf0;
0x00015c20 str r3, [sp, 0x24] | var_24h = r3;
0x00015c24 b 0x161b0 | goto label_18;
| }
0x00015c28 add r0, r3, 1 | r0 = r3 + 1;
0x00015c2c str r0, [sp, 0x50] | var_50h = r0;
0x00015c30 ldrb r2, [r3] | r2 = *(r3);
0x00015c34 cmp r2, 0x25 |
0x00015c38 bne 0x15bc8 |
| } while (r2 != 0x25);
0x00015c3c ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x00015c40 cmp r2, 0x25 |
| if (r2 != 0x25) {
0x00015c44 addeq r3, r3, 2 | r3 += 2;
| }
| if (r2 == 0x25) {
0x00015c48 streq r3, [sp, 0x50] | var_50h = r3;
| goto label_53;
| }
| if (r2 == 0x25) {
| label_53:
0x00015c4c beq 0x15bc8 | goto label_0;
| }
0x00015c50 ldr r1, [sp] | r1 = *(sp);
0x00015c54 bl 0x15b08 | dprintf_DollarString ();
0x00015c58 add sl, sl, 1 | sl++;
0x00015c5c mov r6, 0 | r6 = 0;
0x00015c60 mov r8, r6 | r8 = r6;
0x00015c64 mov sb, r6 | sb = r6;
0x00015c68 cmp r0, 0 |
| if (r0 == 0) {
0x00015c6c movne r7, r0 | r7 = r0;
| }
| if (r0 != 0) {
0x00015c70 moveq r7, sl | r7 = sl;
| }
0x00015c74 cmp r5, r7 |
0x00015c78 movlt r5, r7 | r5 = r7;
| while (1) {
| label_1:
0x00015c7c ldr ip, [sp, 0x50] | ip = var_50h;
0x00015c80 ldrb r1, [ip] | r1 = *(ip);
0x00015c84 cmp r1, 0x39 |
| if (r1 > 0x39) {
0x00015c88 bhi 0x15e28 | goto label_54;
| }
0x00015c8c cmp r1, 0x30 |
| if (r1 >= 0x30) {
0x00015c90 bhs 0x15ddc | goto label_5;
| }
0x00015c94 cmp r1, 0x2b |
| if (r1 > 0x2b) {
0x00015c98 bhi 0x15dd0 | goto label_55;
| }
0x00015c9c cmp r1, 0x2a |
| if (r1 >= 0x2a) {
0x00015ca0 bhs 0x15ddc | goto label_5;
| }
0x00015ca4 cmp r1, 0x20 |
| if (r1 == 0x20) {
0x00015ca8 beq 0x15ddc | goto label_5;
| }
0x00015cac cmp r1, 0x23 |
| if (r1 == 0x23) {
| label_6:
0x00015cb0 beq 0x15ddc | goto label_5;
| }
| label_2:
0x00015cb4 sub r7, r7, 1 | r7--;
0x00015cb8 cmp r7, 0x7f |
| if (r7 > 0x7f) {
0x00015cbc bhi 0x16c68 | goto label_56;
| }
0x00015cc0 mov r2, 0x18 | r2 = 0x18;
0x00015cc4 mul r0, r2, r7 | r0 = r2 * r7;
0x00015cc8 add r3, sp, 0x398 | r3 += var_398h;
0x00015ccc cmp r1, 0x66 |
0x00015cd0 add r2, r3, r0 | r2 = r3 + r0;
| if (r1 == 0x66) {
0x00015cd4 beq 0x1602c | goto label_57;
| }
| if (r1 > 0x66) {
0x00015cd8 bhi 0x15f00 | goto label_58;
| }
0x00015cdc cmp r1, 0x58 |
| if (r1 != 0x58) {
0x00015ce0 moveq r1, 3 | r1 = 3;
| }
| if (r1 != 0x58) {
0x00015ce4 streq r1, [r3, r0] | *((r3 + r0)) = r1;
| }
| if (r1 != 0x58) {
0x00015ce8 orreq r6, r6, 0x1a00 | r6 |= 0x1a00;
| }
| if (r1 == 0x58) {
0x00015cec beq 0x15f88 | goto label_59;
| }
| if (r1 > 0x58) {
0x00015cf0 bhi 0x15ecc | goto label_60;
| }
0x00015cf4 cmp r1, 0x47 |
| if (r1 != 0x47) {
0x00015cf8 moveq r1, 7 | r1 = 7;
| }
| if (r1 != 0x47) {
0x00015cfc streq r1, [r3, r0] | *((r3 + r0)) = r1;
| }
| if (r1 != 0x47) {
0x00015d00 orreq r6, r6, 0x81000 | r6 |= 0x81000;
| }
| if (r1 == 0x47) {
0x00015d04 beq 0x15f88 | goto label_59;
| }
0x00015d08 cmp r1, 0x53 |
| if (r1 == 0x53) {
0x00015d0c beq 0x16010 | goto label_61;
| }
0x00015d10 cmp r1, 0x45 |
| if (r1 != 0x45) {
0x00015d14 bne 0x15ef8 | goto label_10;
| }
0x00015d18 mov r1, 7 | r1 = 7;
0x00015d1c str r1, [r3, r0] | *((r3 + r0)) = r1;
0x00015d20 orr r6, r6, 0x41000 | r6 |= 0x41000;
0x00015d24 b 0x15f88 | goto label_59;
| label_7:
0x00015d28 ldrb r3, [ip, 1] | r3 = *((ip + 1));
0x00015d2c cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x00015d30 bne 0x15d64 | goto label_62;
| }
0x00015d34 add r0, ip, 2 | r0 = ip + 2;
0x00015d38 ldr r1, [sp] | r1 = *(sp);
0x00015d3c str r0, [sp, 0x50] | var_50h = r0;
0x00015d40 bl 0x15b08 | dprintf_DollarString ();
0x00015d44 add sl, sl, 1 | sl++;
0x00015d48 orr r6, r6, 0x10000 | r6 |= 0x10000;
0x00015d4c cmp r0, 0 |
| if (r0 == 0) {
0x00015d50 movne r8, r0 | r8 = r0;
| }
| if (r0 != 0) {
0x00015d54 moveq r8, sl | r8 = sl;
| }
0x00015d58 cmp r5, r8 |
| if (r5 >= r8) {
0x00015d5c movlt r5, r8 | r5 = r8;
| }
0x00015d60 b 0x15c7c |
| }
| label_62:
0x00015d64 mov r2, 0xa | r2 = 0xa;
0x00015d68 ldr r1, [sp] | r1 = *(sp);
0x00015d6c bl 0x5274 | strtol (r0, r1, r2);
0x00015d70 orr r6, r6, 0x8000 | r6 |= 0x8000;
0x00015d74 mov r8, r0 | r8 = r0;
0x00015d78 b 0x15c7c | goto label_1;
| label_9:
0x00015d7c orr r6, r6, 0x20 | r6 |= 0x20;
0x00015d80 b 0x15c7c | goto label_1;
| label_8:
0x00015d84 tst r6, 4 |
| if ((r6 & 4) != 0) {
0x00015d88 orreq r6, r6, 0x100 | r6 |= 0x100;
| }
| label_3:
0x00015d8c mov r2, 0xa | r2 = 0xa;
0x00015d90 ldr r1, [sp] | r1 = *(sp);
0x00015d94 mov r0, ip | r0 = ip;
0x00015d98 bl 0x5274 | strtol (r0, r1, r2);
0x00015d9c orr r6, r6, 0x2000 | r6 |= 0x2000;
0x00015da0 mov sb, r0 | sb = r0;
0x00015da4 b 0x15c7c | goto label_1;
| label_4:
0x00015da8 ldr r1, [sp] | r1 = *(sp);
0x00015dac bl 0x15b08 | dprintf_DollarString ();
0x00015db0 add sl, sl, 1 | sl++;
0x00015db4 orr r6, r6, 0x4000 | r6 |= 0x4000;
0x00015db8 cmp r0, 0 |
| if (r0 == 0) {
0x00015dbc movne sb, r0 | sb = r0;
| }
| if (r0 != 0) {
0x00015dc0 moveq sb, sl | sb = sl;
| }
0x00015dc4 cmp r5, sb |
| if (r5 >= sb) {
0x00015dc8 movlt r5, sb | r5 = sb;
| }
0x00015dcc b 0x15c7c | goto label_1;
| label_55:
0x00015dd0 sub r3, r1, 0x2d | r3 = r1 - 0x2d;
0x00015dd4 cmp r3, 1 |
| if (r3 > 1) {
0x00015dd8 bhi 0x15cb4 | goto label_2;
| }
| label_5:
0x00015ddc add r0, ip, 1 | r0 = ip + 1;
0x00015de0 str r0, [sp, 0x50] | var_50h = r0;
0x00015de4 ldrb r3, [ip] | r3 = *(ip);
0x00015de8 cmp r3, 0x39 |
| if (r3 > 0x39) {
0x00015dec bhi 0x15e7c | goto label_63;
| }
0x00015df0 cmp r3, 0x31 |
| if (r3 >= 0x31) {
0x00015df4 bhs 0x15d8c | goto label_3;
| }
0x00015df8 cmp r3, 0x2b |
| if (r3 == 0x2b) {
0x00015dfc orreq r6, r6, 2 | r6 |= 2;
| goto label_64;
| }
| if (r3 == 0x2b) {
| label_64:
0x00015e00 beq 0x15c7c | goto label_1;
| }
| if (r3 > 0x2b) {
0x00015e04 bhi 0x15e5c | goto label_65;
| }
0x00015e08 cmp r3, 0x23 |
| if (r3 == 0x23) {
0x00015e0c orreq r6, r6, 8 | r6 |= 8;
| goto label_66;
| }
| if (r3 == 0x23) {
| label_66:
0x00015e10 beq 0x15c7c | goto label_1;
| }
0x00015e14 cmp r3, 0x2a |
| if (r3 == 0x2a) {
0x00015e18 beq 0x15da8 | goto label_4;
| }
0x00015e1c cmp r3, 0x20 |
| if (r3 != 0x20) {
0x00015e20 orreq r6, r6, 1 | r6 |= 1;
| }
0x00015e24 b 0x15c7c | goto label_1;
| label_54:
0x00015e28 cmp r1, 0x68 |
| if (r1 == 0x68) {
0x00015e2c beq 0x15ddc | goto label_5;
| }
| if (r1 > 0x68) {
0x00015e30 bhi 0x15e44 | goto label_67;
| }
0x00015e34 cmp r1, 0x4c |
| if (r1 == 0x4c) {
0x00015e38 beq 0x15ddc | goto label_5;
| }
0x00015e3c cmp r1, 0x4f |
0x00015e40 b 0x15cb0 | goto label_6;
| label_67:
0x00015e44 cmp r1, 0x71 |
| if (r1 == 0x71) {
0x00015e48 beq 0x15ddc | goto label_5;
| }
0x00015e4c cmp r1, 0x7a |
| if (r1 == 0x7a) {
0x00015e50 beq 0x15ddc | goto label_5;
| }
0x00015e54 cmp r1, 0x6c |
0x00015e58 b 0x15cb0 | goto label_6;
| label_65:
0x00015e5c cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x00015e60 beq 0x15d28 | goto label_7;
| }
0x00015e64 cmp r3, 0x30 |
| if (r3 == 0x30) {
0x00015e68 beq 0x15d84 | goto label_8;
| }
0x00015e6c cmp r3, 0x2d |
0x00015e70 biceq r6, r6, 0x100 | __asm ("biceq r6, r6, aav.0x000000ff");
| if (r3 != 0x2d) {
0x00015e74 orreq r6, r6, 4 | r6 |= 4;
| }
0x00015e78 b 0x15c7c | goto label_1;
| label_63:
0x00015e7c cmp r3, 0x68 |
| if (r3 == 0x68) {
0x00015e80 orreq r6, r6, 0x10 | r6 |= 0x10;
| goto label_68;
| }
| if (r3 == 0x68) {
| label_68:
0x00015e84 beq 0x15c7c | goto label_1;
| }
| if (r3 > 0x68) {
0x00015e88 bhi 0x15ea4 | goto label_69;
| }
0x00015e8c cmp r3, 0x4c |
| if (r3 == 0x4c) {
0x00015e90 orreq r6, r6, 0x80 | r6 |= 0x80;
| goto label_70;
| }
| if (r3 == 0x4c) {
| label_70:
0x00015e94 beq 0x15c7c | goto label_1;
| }
0x00015e98 cmp r3, 0x4f |
| if (r3 == 0x4f) {
0x00015e9c beq 0x15ec4 | goto label_71;
| }
0x00015ea0 b 0x15c7c | goto label_1;
| label_69:
0x00015ea4 cmp r3, 0x71 |
| if (r3 == 0x71) {
0x00015ea8 beq 0x15ec4 | goto label_71;
| }
0x00015eac cmp r3, 0x7a |
| if (r3 == 0x7a) {
0x00015eb0 beq 0x15d7c | goto label_9;
| }
0x00015eb4 cmp r3, 0x6c |
| if (r3 != 0x6c) {
0x00015eb8 bne 0x15c7c | goto label_1;
| }
0x00015ebc tst r6, 0x20 |
| if ((r6 & 0x20) == 0) {
0x00015ec0 beq 0x15d7c | goto label_9;
| }
| label_71:
0x00015ec4 orr r6, r6, 0x40 | r6 |= 0x40;
0x00015ec8 b 0x15c7c | goto label_1;
| label_60:
0x00015ecc cmp r1, 0x64 |
| if (r1 == 0x64) {
0x00015ed0 beq 0x16024 | goto label_72;
| }
| if (r1 <= 0x64) {
0x00015ed4 movhi r1, 7 | r1 = 7;
| }
| if (r1 <= 0x64) {
0x00015ed8 strhi r1, [r3, r0] | *((r3 + r0)) = r1;
| }
| if (r1 <= 0x64) {
0x00015edc orrhi r6, r6, 0x40000 | r6 |= 0x40000;
| }
| if (r1 > 0x64) {
0x00015ee0 bhi 0x15f88 | goto label_59;
| }
0x00015ee4 cmp r1, 0x63 |
| if (r1 != 0x63) {
0x00015ee8 moveq r1, 3 | r1 = 3;
| }
| if (r1 != 0x63) {
0x00015eec streq r1, [r3, r0] | *((r3 + r0)) = r1;
| }
| if (r1 != 0x63) {
0x00015ef0 orreq r6, r6, 0x20000 | r6 |= 0x20000;
| }
| if (r1 == 0x63) {
0x00015ef4 beq 0x15f88 | goto label_59;
| }
| do {
| label_10:
0x00015ef8 mov r1, 0 | r1 = 0;
0x00015efc b 0x15f58 | goto label_11;
| label_58:
0x00015f00 cmp r1, 0x6f |
| if (r1 != 0x6f) {
0x00015f04 moveq r1, 3 | r1 = 3;
| }
| if (r1 != 0x6f) {
0x00015f08 streq r1, [r3, r0] | *((r3 + r0)) = r1;
| }
| if (r1 != 0x6f) {
0x00015f0c orreq r6, r6, 0x400 | r6 |= 0x400;
| }
| if (r1 == 0x6f) {
0x00015f10 beq 0x15f88 | goto label_59;
| }
| if (r1 > 0x6f) {
0x00015f14 bhi 0x15f40 | goto label_73;
| }
0x00015f18 cmp r1, 0x69 |
| if (r1 == 0x69) {
0x00015f1c beq 0x16024 | goto label_72;
| }
0x00015f20 cmp r1, 0x6e |
| if (r1 == 0x6e) {
0x00015f24 beq 0x1601c | goto label_74;
| }
0x00015f28 cmp r1, 0x67 |
0x00015f2c bne 0x15ef8 |
| } while (r1 != 0x67);
0x00015f30 mov r1, 7 | r1 = 7;
0x00015f34 str r1, [r3, r0] | *((r3 + r0)) = r1;
0x00015f38 orr r6, r6, 0x80000 | r6 |= 0x80000;
0x00015f3c b 0x15f88 | goto label_59;
| label_73:
0x00015f40 cmp r1, 0x73 |
| if (r1 == 0x73) {
0x00015f44 beq 0x16014 | goto label_75;
| }
| if (r1 > 0x73) {
0x00015f48 bhi 0x15f60 | goto label_76;
| }
0x00015f4c cmp r1, 0x70 |
| if (r1 == 0x70) {
0x00015f50 moveq r1, 2 | r1 = 2;
| goto label_77;
| }
| if (r1 != 0x70) {
| label_77:
0x00015f54 bne 0x15ef8 | goto label_10;
| }
| label_11:
0x00015f58 str r1, [r3, r0] | *((r3 + r0)) = r1;
0x00015f5c b 0x15f88 | goto label_59;
| label_76:
0x00015f60 cmp r1, 0x75 |
| if (r1 != 0x75) {
0x00015f64 moveq r1, 3 | r1 = 3;
| }
| if (r1 != 0x75) {
0x00015f68 streq r1, [r3, r0] | *((r3 + r0)) = r1;
| }
| if (r1 != 0x75) {
0x00015f6c orreq r6, r6, 0x200 | r6 |= 0x200;
| }
| if (r1 == 0x75) {
0x00015f70 beq 0x15f88 | goto label_59;
| }
0x00015f74 cmp r1, 0x78 |
| if (r1 != 0x78) {
0x00015f78 moveq r1, 3 | r1 = 3;
| }
| if (r1 != 0x78) {
0x00015f7c streq r1, [r3, r0] | *((r3 + r0)) = r1;
| }
| if (r1 == 0x78) {
0x00015f80 orreq r6, r6, 0xa00 | r6 |= 0xa00;
| goto label_78;
| }
| if (r1 != 0x78) {
| label_78:
0x00015f84 bne 0x15ef8 | goto label_10;
| }
| label_59:
0x00015f88 tst r6, 0x4000 |
0x00015f8c stmib r2, {r6, sb} | __asm ("stmib r2, {r6, sb}");
0x00015f90 str r8, [r2, 0xc] | var_ch_3 = r8;
| if ((r6 & 0x4000) != 0) {
0x00015f94 beq 0x15fc4 |
0x00015f98 sub r0, sb, 1 | r0 = sb - 1;
0x00015f9c mov r1, 0x18 | r1 = 0x18;
0x00015fa0 mul sb, r1, r0 | sb = r1 * r0;
0x00015fa4 str r0, [r2, 8] | var_8h_3 = r0;
0x00015fa8 mov r0, 9 | r0 = 9;
0x00015fac str r0, [r3, sb] | *((r3 + sb)) = r0;
0x00015fb0 add r1, r3, sb | r1 = r3 + sb;
0x00015fb4 mov r0, 0 | r0 = 0;
0x00015fb8 str r0, [r1, 4] | var_4h = r0;
0x00015fbc str r0, [r1, 8] | var_8h_2 = r0;
0x00015fc0 str r0, [r1, 0xc] | var_ch_4 = r0;
| }
0x00015fc4 tst r6, 0x10000 |
| if ((r6 & 0x10000) != 0) {
0x00015fc8 beq 0x15ff8 |
0x00015fcc sub r1, r8, 1 | r1 = r8 - 1;
0x00015fd0 str r1, [r2, 0xc] | var_ch_3 = r1;
0x00015fd4 mov r2, 0x18 | r2 = 0x18;
0x00015fd8 mul r8, r2, r1 | r8 = r2 * r1;
0x00015fdc mov r1, 9 | r1 = 9;
0x00015fe0 add r2, r3, r8 | r2 = r3 + r8;
0x00015fe4 str r1, [r3, r8] | *((r3 + r8)) = r1;
0x00015fe8 mov r3, 0 | r3 = 0;
0x00015fec str r3, [r2, 4] | var_4h = r3;
0x00015ff0 str r3, [r2, 8] | var_8h_2 = r3;
0x00015ff4 str r3, [r2, 0xc] | var_ch_4 = r3;
| }
0x00015ff8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00015ffc add ip, ip, 1 |
0x00016000 str ip, [r3] | *(r3) = ip;
0x00016004 add r3, r3, 4 | r3 += 4;
0x00016008 str r3, [sp, 0xc] | var_ch = r3;
0x0001600c b 0x15bc8 | goto label_0;
| label_61:
0x00016010 orr r6, r6, 8 | r6 |= 8;
| label_75:
0x00016014 mov r1, 1 | r1 = 1;
0x00016018 b 0x15f58 | goto label_11;
| label_74:
0x0001601c mov r1, 4 | r1 = 4;
0x00016020 b 0x15f58 | goto label_11;
| label_72:
0x00016024 mov r1, 3 | r1 = 3;
0x00016028 b 0x15f58 | goto label_11;
| label_57:
0x0001602c mov r1, 7 | r1 = 7;
0x00016030 b 0x15f58 | goto label_11;
| label_52:
0x00016034 ldr r3, [r2, 4] | r3 = var_4h_2;
0x00016038 tst r3, 0x4000 |
| if ((r3 & 0x4000) != 0) {
0x0001603c beq 0x16064 |
0x00016040 ldr r7, [r2, 8] | r7 = var_8h_3;
0x00016044 add r1, sp, 0xf90 | r1 += var_f90h;
0x00016048 add r1, r1, 8 | r1 += nmeb;
0x0001604c ldr r0, [r4] | r0 = *(r4);
0x00016050 mla r1, lr, r7, r1 | __asm ("mla r1, lr, r7, r1");
0x00016054 add r4, r4, 4 | r4 += 4;
0x00016058 sub r7, r1, 0xc00 | r7 -= var_398h;
0x0001605c asr r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00016060 strd r0, r1, [r7, 0x10] | __asm ("strd r0, r1, [var_10h_2]");
| }
0x00016064 tst r3, 0x10000 |
| if ((r3 & 0x10000) != 0) {
0x00016068 beq 0x16090 |
0x0001606c ldr r7, [r2, 0xc] | r7 = var_ch_3;
0x00016070 add r1, sp, 0xf90 | r1 += var_f90h;
0x00016074 add r1, r1, 8 | r1 += nmeb;
0x00016078 ldr r0, [r4] | r0 = *(r4);
0x0001607c mla r1, lr, r7, r1 | __asm ("mla r1, lr, r7, r1");
0x00016080 add r4, r4, 4 | r4 += 4;
0x00016084 sub r7, r1, 0xc00 | r7 -= var_398h;
0x00016088 asr r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0001608c strd r0, r1, [r7, 0x10] | __asm ("strd r0, r1, [var_10h_2]");
| }
0x00016090 ldr r1, [r2] | r1 = *(r2);
0x00016094 cmp r1, 9 |
| if (r1 > 9) {
| /* switch table (10 cases) at 0x160a0 */
0x00016098 addls pc, pc, r1, lsl 2 | pc += (r1 << 2);
| }
0x0001609c b 0x16164 | goto label_79;
0x000160a0 b 0x160c8 | goto label_80;
0x000160a4 b 0x160c8 | goto label_80;
0x000160a8 b 0x160c8 | goto label_80;
0x000160ac b 0x160e4 | goto label_81;
0x000160b0 b 0x160c8 | goto label_80;
0x000160b4 b 0x16164 | goto label_79;
0x000160b8 b 0x16164 | goto label_79;
0x000160bc b 0x16148 | goto label_82;
0x000160c0 b 0x16164 | goto label_79;
0x000160c4 b 0x16160 | goto label_83;
| label_80:
0x000160c8 ldr r3, [r4] | r3 = *(r4);
0x000160cc add r7, r4, 4 | r7 = r4 + 4;
0x000160d0 str r3, [r2, 0x10] | var_10h_2 = r3;
| do {
| label_14:
0x000160d4 add ip, ip, 1 |
0x000160d8 add r2, r2, 0x18 | r2 += var_18h_2;
0x000160dc mov r4, r7 | r4 = r7;
0x000160e0 b 0x15be4 | goto label_12;
| label_81:
0x000160e4 and r1, r3, 0x240 | r1 = r3 & 0x240;
0x000160e8 cmp r1, 0x240 |
| if (r1 != 0x240) {
0x000160ec bne 0x16108 | goto label_84;
| }
| label_13:
0x000160f0 add r4, r4, 7 | r4 += 7;
0x000160f4 bic r4, r4, 7 | r4 = BIT_MASK (r4, 7);
0x000160f8 ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
0x000160fc add r7, r4, 8 | r7 = r4 + 8;
| label_15:
0x00016100 strd r0, r1, [r2, 0x10] | __asm ("strd r0, r1, [var_10h_2]");
0x00016104 b 0x160d4 |
| } while (1);
| label_84:
0x00016108 ands r1, r3, 0x40 | r1 = r3 & 0x40;
| if (r1 != r3) {
0x0001610c bne 0x160f0 | goto label_13;
| }
0x00016110 add r7, r4, 4 | r7 = r4 + 4;
0x00016114 ldr r0, [r4] | r0 = *(r4);
0x00016118 and r4, r3, 0x220 | r4 = r3 & 0x220;
0x0001611c cmp r4, 0x220 |
| if (r4 == 0x220) {
0x00016120 bne 0x1612c |
| label_16:
0x00016124 strd r0, r1, [r2, 0x10] | __asm ("strd r0, r1, [var_10h_2]");
0x00016128 b 0x160d4 | goto label_14;
| }
0x0001612c ands r1, r3, 0x20 | r1 = r3 & 0x20;
0x00016130 beq 0x1613c |
| while ((r3 & 0x200) == 0) {
0x00016134 asr r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00016138 b 0x16100 | goto label_15;
0x0001613c tst r3, 0x200 |
0x00016140 beq 0x16134 |
| }
0x00016144 b 0x16124 | goto label_16;
| label_82:
0x00016148 add r4, r4, 7 | r4 += 7;
0x0001614c bic r4, r4, 7 | r4 = BIT_MASK (r4, 7);
0x00016150 ldrd r0, r1, [r4] | __asm ("ldrd r0, r1, [r4]");
0x00016154 add r7, r4, 8 | r7 = r4 + 8;
0x00016158 strd r0, r1, [r2, 0x10] | __asm ("strd r0, r1, [var_10h_2]");
0x0001615c b 0x160d4 | goto label_14;
| label_83:
0x00016160 str r6, [r2] | *(r2) = r6;
| label_79:
0x00016164 mov r7, r4 | r7 = r4;
0x00016168 b 0x160d4 | goto label_14;
| label_17:
0x0001616c cmp r2, 0x25 |
| if (r2 == 0x25) {
0x00016170 beq 0x161c4 | goto label_85;
| }
| do {
0x00016174 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016178 mov r1, fp | r1 = fp;
0x0001617c ldrb r0, [r3] | r0 = *(r3);
0x00016180 ldr r3, [sp, 8] | r3 = var_8h;
0x00016184 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016188 cmn r0, 1 |
| if (r0 == 1) {
0x0001618c beq 0x163cc | goto label_22;
| }
0x00016190 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016194 add r4, r4, 1 | r4++;
0x00016198 add r2, r3, 1 | r2 = r3 + 1;
0x0001619c str r2, [sp, 0x2c] | var_2ch = r2;
0x000161a0 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x000161a4 cmp r3, 0x25 |
0x000161a8 cmpne r3, 0 | __asm ("cmpne r3, 0");
0x000161ac bne 0x16174 |
| } while (r3 != 0x25);
| label_18:
0x000161b0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000161b4 ldrb r2, [r3] | r2 = *(r3);
0x000161b8 cmp r2, 0 |
| if (r2 != 0) {
0x000161bc bne 0x1616c | goto label_17;
| }
0x000161c0 b 0x163cc | goto label_22;
| label_85:
0x000161c4 add r2, r3, 1 | r2 = r3 + 1;
0x000161c8 str r2, [sp, 0x2c] | var_2ch = r2;
0x000161cc ldrb r0, [r3, 1] | r0 = *((r3 + 1));
0x000161d0 cmp r0, 0x25 |
| if (r0 == 0x25) {
0x000161d4 bne 0x161fc |
0x000161d8 add r3, r3, 2 | r3 += 2;
0x000161dc str r3, [sp, 0x2c] | var_2ch = r3;
0x000161e0 mov r1, fp | r1 = fp;
0x000161e4 ldr r3, [sp, 8] | r3 = var_8h;
0x000161e8 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x000161ec cmn r0, 1 |
| if (r0 == 1) {
0x000161f0 beq 0x163cc | goto label_22;
| }
0x000161f4 add r4, r4, 1 | r4++;
0x000161f8 b 0x161b0 | goto label_18;
| }
0x000161fc add r1, sp, 0x2c | r1 += var_2ch;
0x00016200 mov r0, r2 | r0 = r2;
0x00016204 bl 0x15b08 | dprintf_DollarString ();
0x00016208 add r1, sp, 0xf90 | r1 += var_f90h;
0x0001620c add r1, r1, 8 | r1 += nmeb;
0x00016210 mov r2, 0x18 | r2 = 0x18;
0x00016214 cmp r0, 0 |
| if (r0 != 0) {
0x00016218 ldreq r3, [sp, 0xc] | r3 = var_ch;
| }
| if (r0 == 0) {
0x0001621c subne r3, r0, 1 | r3 = r0 - 1;
| }
0x00016220 str r3, [sp] | *(sp) = r3;
0x00016224 ldr r3, [sp] | r3 = *(sp);
0x00016228 mla r3, r2, r3, r1 | __asm ("mla r3, r2, r3, r1");
0x0001622c mov r1, r3 | r1 = r3;
0x00016230 ldr r3, [r3, -0xbfc] | r3 = var_4h_2;
0x00016234 ldr sb, [r1, -0xbf8] | sb = var_8h_3;
0x00016238 tst r3, 0x4000 |
| if ((r3 & 0x4000) != 0) {
0x0001623c bne 0x162e8 | goto label_86;
| }
0x00016240 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00016244 mov r6, sb | r6 = sb;
0x00016248 add r3, r3, 1 | r3++;
0x0001624c str r3, [sp, 0xc] | var_ch = r3;
| do {
0x00016250 ldr r1, [sp] | r1 = *(sp);
0x00016254 add r3, sp, 0xf90 | r3 += var_f90h;
0x00016258 add r3, r3, 8 | r3 += nmeb;
0x0001625c mov r2, 0x18 | r2 = 0x18;
0x00016260 mla r1, r2, r1, r3 | __asm ("mla r1, r2, r1, r3");
0x00016264 ldr r5, [r1, -0xbfc] | r5 = var_4h_2;
0x00016268 mov r3, r1 | r3 = r1;
0x0001626c ands sl, r5, 0x10000 | sl = r5 & 0x10000;
| if (sl == r5) {
0x00016270 beq 0x1631c | goto label_87;
| }
0x00016274 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00016278 ldr r3, [r3, -0xbf4] | r3 = var_ch_3;
0x0001627c add r1, r1, 1 | r1++;
0x00016280 str r1, [sp, 0xc] | var_ch = r1;
0x00016284 add r1, sp, 0xf90 | r1 += var_f90h;
0x00016288 add r1, r1, 8 | r1 += nmeb;
0x0001628c mla r1, r2, r3, r1 | __asm ("mla r1, r2, r3, r1");
0x00016290 ldr r8, [r1, -0xbf0] | r8 = var_10h_2;
0x00016294 orr r8, r8, r8, asr 31 | r8 |= (r8 >> 31);
| label_19:
0x00016298 asr r3, r5, 3 | r3 = r5 >> 3;
0x0001629c and r3, r3, 1 | r3 &= 1;
0x000162a0 ldr r2, [sp] | r2 = *(sp);
0x000162a4 str r3, [sp, 0x18] | var_18h = r3;
0x000162a8 add r3, sp, 0xf90 | r3 += var_f90h;
0x000162ac add r3, r3, 8 | r3 += nmeb;
0x000162b0 mov r0, 0x18 | r0 = 0x18;
0x000162b4 mla r2, r0, r2, r3 | __asm ("mla r2, r0, r2, r3");
0x000162b8 ldr r3, [r2, -0xc00] | r3 = var_398h;
0x000162bc sub r3, r3, 1 | r3--;
0x000162c0 cmp r3, 6 |
| if (r3 > 6) {
| /* switch table (7 cases) at 0x162cc */
0x000162c4 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x000162c8 b 0x16384 | goto label_34;
0x000162cc b 0x166e0 | goto label_88;
0x000162d0 b 0x16884 | goto label_89;
0x000162d4 b 0x1632c | goto label_90;
0x000162d8 b 0x16c08 | goto label_91;
0x000162dc b 0x16384 | goto label_34;
0x000162e0 b 0x16384 | goto label_34;
0x000162e4 b 0x16990 | goto label_92;
| label_86:
0x000162e8 add r0, sp, 0xf90 | r0 += var_f90h;
0x000162ec add r0, r0, 8 | r0 += nmeb;
0x000162f0 mla r0, r2, sb, r0 | __asm ("mla r0, r2, sb, r0");
0x000162f4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000162f8 ldr r6, [r0, -0xbf0] | r6 = var_10h_2;
0x000162fc add r2, r2, 2 | r2 += 2;
0x00016300 cmp r6, 0 |
0x00016304 biclt r3, r3, 0x100 | __asm ("biclt r3, r3, aav.0x000000ff");
| if (r6 >= 0) {
0x00016308 orrlt r3, r3, 4 | r3 |= 4;
| }
0x0001630c str r2, [sp, 0xc] | var_ch = r2;
0x00016310 rsblt r6, r6, 0 | __asm ("rsblt r6, r6, 0");
| if (r6 >= 0) {
0x00016314 strlt r3, [r1, -0xbfc] | *((r1 - 0xbfc)) = r3;
| }
0x00016318 b 0x16250 |
| } while (1);
| label_87:
0x0001631c tst r5, 0x8000 |
| if ((r5 & 0x8000) == 0) {
0x00016320 ldrne r8, [r1, -0xbf4] | r8 = *((r1 - 0xbf4));
| }
| if ((r5 & 0x8000) != 0) {
0x00016324 mvneq r8, 0 | r8 = ~0;
| }
0x00016328 b 0x16298 | goto label_19;
| label_90:
0x0001632c ldr r7, [sp] | r7 = *(sp);
0x00016330 add r3, sp, 0x398 | r3 += var_398h;
0x00016334 mla r7, r0, r7, r3 | __asm ("mla r7, r0, r7, r3");
0x00016338 ands sl, r5, 0x20000 | sl = r5 & 0x20000;
0x0001633c ldrd r2, r3, [r7, 0x10] | __asm ("ldrd r2, r3, [var_10h_2]");
0x00016340 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
| if (sl == r5) {
0x00016344 beq 0x163fc | goto label_93;
| }
0x00016348 ands r5, r5, 4 | r5 &= 4;
0x0001634c beq 0x163a0 |
| while (r6 <= 0) {
0x00016350 ldr r3, [sp] | r3 = *(sp);
0x00016354 mov r1, fp | r1 = fp;
0x00016358 and r0, r3, 0xff | r0 = r3 & 0xff;
0x0001635c ldr r3, [sp, 8] | r3 = var_8h;
0x00016360 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016364 cmn r0, 1 |
| if (r0 == 1) {
0x00016368 beq 0x163cc | goto label_22;
| }
0x0001636c cmp r5, 0 |
0x00016370 add r4, r4, 1 | r4++;
| if (r5 != 0) {
0x00016374 beq 0x16384 |
| label_21:
0x00016378 sub r6, r6, 1 | r6--;
0x0001637c cmp r6, 0 |
| if (r6 > 0) {
0x00016380 bgt 0x163dc | goto label_94;
| }
| }
| label_34:
0x00016384 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00016388 ldr r3, [r3] | r3 = *(r3);
0x0001638c str r3, [sp, 0x2c] | var_2ch = r3;
0x00016390 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00016394 add r3, r3, 4 | r3 += 4;
0x00016398 str r3, [sp, 0x14] | var_14h = r3;
0x0001639c b 0x161b0 | goto label_18;
0x000163a0 add r7, r6, r4 | r7 = r6 + r4;
| label_20:
0x000163a4 sub r4, r7, r6 | r4 = r7 - r6;
0x000163a8 sub r6, r6, 1 | r6--;
0x000163ac cmp r6, 0 |
0x000163b0 ble 0x16350 |
| }
0x000163b4 mov r1, fp | r1 = fp;
0x000163b8 mov r0, 0x20 | r0 = 0x20;
0x000163bc ldr r3, [sp, 8] | r3 = var_8h;
0x000163c0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000163c4 cmn r0, 1 |
| if (r0 != 1) {
0x000163c8 bne 0x163a4 | goto label_20;
| }
| do {
| label_22:
0x000163cc mov r0, r4 | r0 = r4;
0x000163d0 add sp, sp, 0xf90 |
0x000163d4 add sp, sp, 0xc |
0x000163d8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_94:
0x000163dc mov r1, fp | r1 = fp;
0x000163e0 mov r0, 0x20 | r0 = 0x20;
0x000163e4 ldr r3, [sp, 8] | r3 = var_8h;
0x000163e8 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000163ec cmn r0, 1 |
0x000163f0 beq 0x163cc |
| } while (r0 == 1);
0x000163f4 add r4, r4, 1 | r4++;
0x000163f8 b 0x16378 | goto label_21;
| label_93:
0x000163fc ands r2, r5, 0x400 | r2 = r5 & 0x400;
| if (r2 == r5) {
0x00016400 movne sb, 8 | sb = 8;
| }
| if (r2 == r5) {
0x00016404 bne 0x16464 |
0x00016408 ands r3, r5, 0x800 | r3 = r5 & 0x800;
| if (r3 != r5) {
0x0001640c beq 0x16434 |
0x00016410 ands sl, r5, 0x1000 | sl = r5 & 0x1000;
| if (sl == r5) {
0x00016414 beq 0x16590 | goto label_95;
| }
0x00016418 ldr r3, [pc, 0x788] |
0x0001641c mov sl, r2 | sl = r2;
0x00016420 add r3, pc, r3 | r3 = pc + r3;
0x00016424 mov sb, 0x10 | sb = 0x10;
0x00016428 add r3, r3, 0x25 | r3 = 0x16bc9;
| label_23:
0x0001642c str r3, [sp, 0x10] | var_10h = r3;
0x00016430 b 0x16464 |
| } else {
0x00016434 ands sl, r5, 0x200 | sl = r5 & 0x200;
| if (sl != r5) {
0x00016438 bne 0x165a0 | goto label_96;
| }
0x0001643c ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x00016440 cmp r2, 0 |
0x00016444 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 0) {
0x00016448 bge 0x165a4 | goto label_97;
| }
0x0001644c ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x00016450 mov sb, 0xa | sb = 0xa;
0x00016454 rsbs r2, r2, 0 | r2 -= ;
0x00016458 rsc r3, r3, 0 | __asm ("rsc r3, r3, 0");
0x0001645c mov sl, 1 | sl = 1;
0x00016460 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
| }
| }
| label_24:
0x00016464 cmn r8, 1 |
| if (r8 != 1) {
0x00016468 moveq r8, 1 | r8 = 1;
| }
0x0001646c add r7, sp, 0x194 | r7 += var_194h;
| label_25:
0x00016470 ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x00016474 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x00016478 bne 0x165ac | goto label_98;
| }
0x0001647c add r3, sp, 0x194 | r3 += var_194h;
0x00016480 sub r3, r3, r7 | r3 -= r7;
0x00016484 sub r6, r6, r3 | r6 -= r3;
0x00016488 sub r8, r8, r3 | r8 -= r3;
0x0001648c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00016490 and ip, r3, 1 |
0x00016494 cmp sb, 8 |
| if (sb == 8) {
0x00016498 movne r3, 0 | r3 = 0;
| }
| if (sb != 8) {
0x0001649c andeq r3, ip, 1 | r3 = ip & 1;
| }
0x000164a0 cmp r3, 0 |
| if (r3 == 0) {
0x000164a4 beq 0x165d0 | goto label_99;
| }
0x000164a8 cmp r8, 0 |
| if (r8 > 0) {
0x000164ac bgt 0x165d8 | goto label_100;
| }
0x000164b0 mov r3, 0x30 | r3 = 0x30;
0x000164b4 strb r3, [r7] | *(r7) = r3;
0x000164b8 sub r6, r6, 1 | r6--;
0x000164bc sub r7, r7, 1 | r7 -= var_1h;
| label_26:
0x000164c0 cmp sb, 0x10 |
| if (sb == 0x10) {
0x000164c4 movne sb, 0 | sb = 0;
| }
| if (sb != 0x10) {
0x000164c8 andeq sb, ip, 1 | sb = ip & 1;
| }
0x000164cc cmp sb, 0 |
| if (sb == 0) {
0x000164d0 subne r6, r6, 2 | r6 -= 2;
| }
0x000164d4 cmp sl, 0 |
| if (sl == 0) {
0x000164d8 bne 0x164e4 |
0x000164dc tst r5, 3 |
| if ((r5 & 3) == 0) {
0x000164e0 beq 0x164e8 | goto label_101;
| }
| }
0x000164e4 sub r6, r6, 1 | r6--;
| label_101:
0x000164e8 ands r8, r5, 0x104 | r8 = r5 & 0x104;
| if (r8 == r5) {
0x000164ec beq 0x16638 | goto label_102;
| }
| label_29:
0x000164f0 cmp sl, 0 |
| if (sl == 0) {
0x000164f4 movne r1, fp | r1 = fp;
| }
| if (sl == 0) {
0x000164f8 movne r0, 0x2d | r0 = 0x2d;
| }
| if (sl == 0) {
0x000164fc bne 0x16520 |
0x00016500 tst r5, 2 |
| if ((r5 & 2) == 0) {
0x00016504 movne r1, fp | r1 = fp;
| }
| if ((r5 & 2) == 0) {
0x00016508 movne r0, 0x2b | r0 = 0x2b;
| }
| if ((r5 & 2) != 0) {
0x0001650c bne 0x16520 | goto label_103;
| }
0x00016510 tst r5, 1 |
| if ((r5 & 1) == 0) {
0x00016514 beq 0x16640 | goto label_104;
| }
0x00016518 mov r1, fp | r1 = fp;
0x0001651c mov r0, 0x20 | r0 = 0x20;
| }
| label_103:
0x00016520 ldr r3, [sp, 8] | r3 = var_8h;
0x00016524 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016528 cmn r0, 1 |
| if (r0 == 1) {
0x0001652c beq 0x163cc | goto label_22;
| }
0x00016530 add sl, r4, 1 | sl = r4 + 1;
| label_31:
0x00016534 cmp sb, 0 |
| if (sb == 0) {
0x00016538 beq 0x1657c | goto label_105;
| }
0x0001653c mov r1, fp | r1 = fp;
0x00016540 mov r0, 0x30 | r0 = 0x30;
0x00016544 ldr r3, [sp, 8] | r3 = var_8h;
0x00016548 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001654c cmn r0, 1 |
| if (r0 == 1) {
0x00016550 beq 0x16c60 | goto label_106;
| }
0x00016554 tst r5, 0x1000 |
| if ((r5 & 0x1000) == 0) {
0x00016558 movne r0, 0x58 | r0 = 0x58;
| }
| if ((r5 & 0x1000) != 0) {
0x0001655c moveq r0, 0x78 | r0 = 0x78;
| }
0x00016560 mov r1, fp | r1 = fp;
0x00016564 ldr r3, [sp, 8] | r3 = var_8h;
0x00016568 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001656c add r4, sl, 1 | r4 = sl + 1;
0x00016570 cmn r0, 1 |
| if (r0 == 1) {
0x00016574 beq 0x163cc | goto label_22;
| }
0x00016578 add sl, sl, 2 | sl += 2;
| label_105:
0x0001657c cmp r8, 0x100 |
| if (r8 == 0x100) {
0x00016580 movne r4, sl | r4 = sl;
| }
| if (r8 != 0x100) {
0x00016584 bne 0x16674 | goto label_107;
| }
0x00016588 add sl, r6, sl | sl = r6 + sl;
0x0001658c b 0x16660 | goto label_108;
| label_95:
0x00016590 ldr r3, [pc, 0x614] | r3 = *(0x16ba8);
0x00016594 mov sb, 0x10 | sb = 0x10;
0x00016598 add r3, pc, r3 | r3 = pc + r3;
0x0001659c b 0x1642c | goto label_23;
| label_96:
0x000165a0 mov sl, r3 | sl = r3;
| label_97:
0x000165a4 mov sb, 0xa | sb = 0xa;
0x000165a8 b 0x16464 | goto label_24;
| label_98:
0x000165ac ldrd r0, r1, [sp] | __asm ("ldrd r0, r1, [sp]");
0x000165b0 mov r2, sb | r2 = sb;
0x000165b4 mov r3, 0 | r3 = 0;
0x000165b8 bl 0x38a50 | aeabi_uldivmod ();
0x000165bc ldr r3, [sp, 0x10] | r3 = var_10h;
0x000165c0 ldrb r3, [r3, r2] | r3 = *((r3 + r2));
0x000165c4 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000165c8 strb r3, [r7], -1 | *(r7) = r3;
| r7 += -1;
0x000165cc b 0x16470 | goto label_25;
| label_99:
0x000165d0 cmp r8, 0 |
| if (r8 <= 0) {
0x000165d4 ble 0x164c0 | goto label_26;
| }
| label_100:
0x000165d8 sub r6, r6, r8 | r6 -= r8;
0x000165dc mov r3, r7 | r3 = r7;
0x000165e0 sub r1, r8, r7 | r1 = r8 - r7;
0x000165e4 mov r0, 0x30 | r0 = 0x30;
| label_27:
0x000165e8 add r2, r3, r1 | r2 = r3 + r1;
0x000165ec cmp r2, 0 |
| if (r2 <= 0) {
0x000165f0 suble r7, r7, r8 | r7 -= r8;
| goto label_109;
| }
| if (r2 <= 0) {
| label_109:
0x000165f4 ble 0x164c0 | goto label_26;
| }
0x000165f8 strb r0, [r3], -1 | *(r3) = r0;
| r3 += -1;
0x000165fc b 0x165e8 | goto label_27;
| label_28:
0x00016600 mov r1, fp | r1 = fp;
0x00016604 mov r0, 0x20 | r0 = 0x20;
0x00016608 ldr r3, [sp, 8] | r3 = var_8h;
0x0001660c str r2, [sp] | *(sp) = r2;
0x00016610 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00016614 ldr r2, [sp] | r2 = *(sp);
0x00016618 cmn r0, 1 |
| if (r0 == 1) {
0x0001661c beq 0x163cc | goto label_22;
| }
| label_30:
0x00016620 sub r4, r2, r6 | r4 = r2 - r6;
0x00016624 sub r6, r6, 1 | r6--;
0x00016628 add r3, r6, 1 | r3 = r6 + 1;
0x0001662c cmp r3, 0 |
| if (r3 > 0) {
0x00016630 bgt 0x16600 | goto label_28;
| }
0x00016634 b 0x164f0 | goto label_29;
| label_102:
0x00016638 add r2, r4, r6 | r2 = r4 + r6;
0x0001663c b 0x16620 | goto label_30;
| label_104:
0x00016640 mov sl, r4 | sl = r4;
0x00016644 b 0x16534 | goto label_31;
| label_32:
0x00016648 mov r1, fp | r1 = fp;
0x0001664c mov r0, 0x30 | r0 = 0x30;
0x00016650 ldr r3, [sp, 8] | r3 = var_8h;
0x00016654 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016658 cmn r0, 1 |
| if (r0 == 1) {
0x0001665c beq 0x163cc | goto label_22;
| }
| label_108:
0x00016660 sub r4, sl, r6 | r4 = sl - r6;
0x00016664 sub r6, r6, 1 | r6--;
0x00016668 add r3, r6, 1 | r3 = r6 + 1;
0x0001666c cmp r3, 0 |
| if (r3 > 0) {
0x00016670 bgt 0x16648 | goto label_32;
| }
| label_107:
0x00016674 sub r8, r4, r7 | r8 = r4 - r7;
0x00016678 add sb, sp, 0x194 | sb += var_194h;
0x0001667c b 0x16698 | goto label_110;
| label_33:
0x00016680 mov r1, fp | r1 = fp;
0x00016684 ldrb r0, [r7] | r0 = *(r7);
0x00016688 ldr r3, [sp, 8] | r3 = var_8h;
0x0001668c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016690 cmn r0, 1 |
| if (r0 == 1) {
0x00016694 beq 0x163cc | goto label_22;
| }
| label_110:
0x00016698 add r4, r7, r8 | r4 = r7 + r8;
0x0001669c add r7, r7, 1 | r7 += var_0h_4;
0x000166a0 cmp r7, sb |
| if (r7 < sb) {
0x000166a4 bls 0x16680 | goto label_33;
| }
0x000166a8 tst r5, 4 |
| if ((r5 & 4) != 0) {
0x000166ac addne r6, r6, r4 | r6 += r4;
| goto label_111;
| }
| if ((r5 & 4) == 0) {
| label_111:
0x000166b0 beq 0x16384 | goto label_34;
| }
| label_35:
0x000166b4 sub r3, r6, r4 | r3 = r6 - r4;
0x000166b8 cmp r3, 0 |
| if (r3 <= 0) {
0x000166bc ble 0x16384 | goto label_34;
| }
0x000166c0 mov r1, fp | r1 = fp;
0x000166c4 mov r0, 0x20 | r0 = 0x20;
0x000166c8 ldr r3, [sp, 8] | r3 = var_8h;
0x000166cc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000166d0 cmn r0, 1 |
| if (r0 == 1) {
0x000166d4 beq 0x163cc | goto label_22;
| }
0x000166d8 add r4, r4, 1 | r4++;
0x000166dc b 0x166b4 | goto label_35;
| label_88:
0x000166e0 ldr r2, [sp] | r2 = *(sp);
0x000166e4 add r3, sp, 0xf90 | r3 += var_f90h;
0x000166e8 add r3, r3, 8 | r3 += nmeb;
0x000166ec mla r2, r0, r2, r3 | __asm ("mla r2, r0, r2, r3");
0x000166f0 ldr sb, [r2, -0xbf0] | sb = var_10h_2;
0x000166f4 mov r3, r2 | r3 = r2;
0x000166f8 cmp sb, 0 |
| if (sb != 0) {
0x000166fc bne 0x16798 | goto label_112;
| }
0x00016700 cmn r8, 1 |
| if (r8 == 1) {
0x00016704 movne r3, 0 | r3 = 0;
| }
| if (r8 != 1) {
0x00016708 moveq r3, 1 | r3 = 1;
| }
0x0001670c cmp r8, 4 |
| if (r8 > 4) {
0x00016710 movle r8, r3 | r8 = r3;
| }
| if (r8 <= 4) {
0x00016714 orrgt r8, r3, 1 | r8 = r3 | 1;
| }
0x00016718 cmp r8, 0 |
| if (r8 == 0) {
0x0001671c beq 0x167b0 | goto label_113;
| }
0x00016720 ldr sb, [pc, 0x488] |
0x00016724 bic r5, r5, 8 | r5 = BIT_MASK (r5, 8);
0x00016728 add sb, pc, sb | sb = pc + sb;
0x0001672c mov r8, 5 | r8 = 5;
0x00016730 add sb, sb, 0x4a | sb = 0x16bf6;
0x00016734 str r5, [r2, -0xbfc] | var_4h_2 = r5;
| label_36:
0x00016738 cmp r8, 0 |
| if (r8 < 0) {
0x0001673c movge r3, r8 | r3 = r8;
| }
| if (r8 >= 0) {
0x00016740 mvnlt r3, 0x80000000 | r3 = ~0x80000000;
| }
0x00016744 sub r6, r6, r3 | r6 -= r3;
0x00016748 ldr r3, [sp] | r3 = *(sp);
0x0001674c add r7, sp, 0xf90 | r7 += var_f90h;
0x00016750 add r7, r7, 8 | r7 += nmeb;
0x00016754 mov r0, 0x18 | r0 = 0x18;
0x00016758 mla r3, r0, r3, r7 | __asm ("mla r3, r0, r3, r7");
0x0001675c ldr r5, [r3, -0xbfc] | r5 = var_4h_2;
0x00016760 ands r7, r5, 8 | r7 = r5 & 8;
| if (r7 == r5) {
0x00016764 beq 0x16784 | goto label_114;
| }
0x00016768 mov r1, fp | r1 = fp;
0x0001676c mov r0, 0x22 | r0 = 0x22;
0x00016770 ldr r3, [sp, 8] | r3 = var_8h;
0x00016774 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016778 cmn r0, 1 |
| if (r0 == 1) {
0x0001677c beq 0x163cc | goto label_22;
| }
0x00016780 add r4, r4, 1 | r4++;
| label_114:
0x00016784 ands r5, r5, 4 | r5 &= 4;
| if (r5 == r5) {
0x00016788 beq 0x167f0 | goto label_115;
| }
| label_38:
0x0001678c add r8, sb, r8 | r8 = sb + r8;
0x00016790 sub sl, r4, sb | sl = r4 - sb;
0x00016794 b 0x1680c | goto label_116;
| label_112:
0x00016798 cmn r8, 1 |
| if (r8 != 1) {
0x0001679c bne 0x16738 | goto label_36;
| }
0x000167a0 mov r0, sb | r0 = sb;
0x000167a4 bl 0x5250 | r0 = strlen (r0);
0x000167a8 mov r8, r0 | r8 = r0;
0x000167ac b 0x16738 | goto label_36;
| label_113:
0x000167b0 mov r8, sb | r8 = sb;
0x000167b4 ldr sb, [pc, 0x3f8] | sb = *(0x16bb0);
0x000167b8 add sb, pc, sb | sb = pc + sb;
0x000167bc b 0x16738 | goto label_36;
| label_37:
0x000167c0 mov r1, fp | r1 = fp;
0x000167c4 mov r0, 0x20 | r0 = 0x20;
0x000167c8 ldr r3, [sp, 8] | r3 = var_8h;
0x000167cc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000167d0 cmn r0, 1 |
| if (r0 == 1) {
0x000167d4 beq 0x163cc | goto label_22;
| }
| label_39:
0x000167d8 sub r4, sl, r6 | r4 = sl - r6;
0x000167dc sub r6, r6, 1 | r6--;
0x000167e0 add r3, r6, 1 | r3 = r6 + 1;
0x000167e4 cmp r3, 0 |
| if (r3 > 0) {
0x000167e8 bgt 0x167c0 | goto label_37;
| }
0x000167ec b 0x1678c | goto label_38;
| label_115:
0x000167f0 add sl, r4, r6 | sl = r4 + r6;
0x000167f4 b 0x167d8 | goto label_39;
| label_40:
0x000167f8 mov r1, fp | r1 = fp;
0x000167fc ldr r3, [sp, 8] | r3 = var_8h;
0x00016800 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00016804 cmn r0, 1 |
| if (r0 == 1) {
0x00016808 beq 0x163cc | goto label_22;
| }
| label_116:
0x0001680c cmp sb, r8 |
0x00016810 add r4, sl, sb | r4 = sl + sb;
| if (sb == r8) {
0x00016814 beq 0x16824 | goto label_117;
| }
0x00016818 ldrb r0, [sb], 1 | r0 = *(sb);
| sb++;
0x0001681c cmp r0, 0 |
| if (r0 != 0) {
0x00016820 bne 0x167f8 | goto label_40;
| }
| label_117:
0x00016824 cmp r5, 0 |
| if (r5 == 0) {
0x00016828 addne r6, r6, r4 | r6 += r4;
| }
| if (r5 != 0) {
0x0001682c bne 0x16874 | goto label_118;
| }
| label_42:
0x00016830 cmp r7, 0 |
| if (r7 == 0) {
0x00016834 beq 0x16384 | goto label_34;
| }
0x00016838 mov r1, fp | r1 = fp;
0x0001683c mov r0, 0x22 | r0 = 0x22;
0x00016840 ldr r3, [sp, 8] | r3 = var_8h;
0x00016844 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016848 cmn r0, 1 |
| if (r0 == 1) {
0x0001684c beq 0x163cc | goto label_22;
| }
0x00016850 add r4, r4, 1 | r4++;
0x00016854 b 0x16384 | goto label_34;
| label_41:
0x00016858 mov r1, fp | r1 = fp;
0x0001685c mov r0, 0x20 | r0 = 0x20;
0x00016860 ldr r3, [sp, 8] | r3 = var_8h;
0x00016864 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016868 cmn r0, 1 |
| if (r0 == 1) {
0x0001686c beq 0x163cc | goto label_22;
| }
0x00016870 add r4, r4, 1 | r4++;
| label_118:
0x00016874 sub r3, r6, r4 | r3 = r6 - r4;
0x00016878 cmp r3, 0 |
| if (r3 > 0) {
0x0001687c bgt 0x16858 | goto label_41;
| }
0x00016880 b 0x16830 | goto label_42;
| label_89:
0x00016884 ldr r3, [sp] | r3 = *(sp);
0x00016888 add r7, sp, 0xf90 | r7 += var_f90h;
0x0001688c add r7, r7, 8 | r7 += nmeb;
0x00016890 mla r3, r0, r3, r7 | __asm ("mla r3, r0, r3, r7");
0x00016894 ldr r3, [r3, -0xbf0] | r3 = var_10h_2;
0x00016898 cmp r3, 0 |
| if (r3 == 0) {
0x0001689c beq 0x168e4 | goto label_119;
| }
0x000168a0 tst r5, 0x1000 |
| if ((r5 & 0x1000) == 0) {
0x000168a4 beq 0x168d8 | goto label_120;
| }
0x000168a8 ldr r2, [pc, 0x308] |
0x000168ac add r2, pc, r2 | r2 = pc + r2;
0x000168b0 add r2, r2, 0x25 | r2 = 0x16bd9;
| do {
0x000168b4 mov r0, r3 | r0 = r3;
0x000168b8 mov r1, 0 | r1 = 0;
0x000168bc mov r3, 1 | r3 = 1;
0x000168c0 str r2, [sp, 0x10] | var_10h = r2;
0x000168c4 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000168c8 mov sb, 0x10 | sb = 0x10;
0x000168cc mov sl, 0 | sl = 0;
0x000168d0 str r3, [sp, 0x18] | var_18h = r3;
0x000168d4 b 0x16464 | goto label_24;
| label_120:
0x000168d8 ldr r2, [pc, 0x2dc] | r2 = *(0x16bb8);
0x000168dc add r2, pc, r2 | r2 = pc + r2;
0x000168e0 b 0x168b4 |
| } while (1);
| label_119:
0x000168e4 ands r5, r5, 4 | r5 &= 4;
| if (r5 == r5) {
0x000168e8 subne r4, r4, 5 | r4 -= 5;
| }
0x000168ec sub r7, r6, 5 | r7 = r6 - 5;
| if (r5 == r5) {
0x000168f0 addne r6, r4, r6 | r6 = r4 + r6;
| }
| if (r5 != r5) {
0x000168f4 bne 0x1695c | goto label_121;
| }
| label_45:
0x000168f8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000168fc sub r6, r3, r4 | r6 = r3 - r4;
| label_46:
0x00016900 ldrb r0, [r6, r4] | r0 = *((r6 + r4));
0x00016904 cmp r0, 0 |
| if (r0 != 0) {
0x00016908 bne 0x16974 | goto label_122;
| }
0x0001690c cmp r5, 0 |
| if (r5 == 0) {
0x00016910 addeq r7, r7, r4 | r7 += r4;
| goto label_123;
| }
| if (r5 != 0) {
| label_123:
0x00016914 bne 0x16384 | goto label_34;
| }
| label_43:
0x00016918 sub r3, r7, r4 | r3 = r7 - r4;
0x0001691c cmp r3, 0 |
| if (r3 <= 0) {
0x00016920 ble 0x16384 | goto label_34;
| }
0x00016924 mov r1, fp | r1 = fp;
0x00016928 mov r0, 0x20 | r0 = 0x20;
0x0001692c ldr r3, [sp, 8] | r3 = var_8h;
0x00016930 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016934 cmn r0, 1 |
| if (r0 == 1) {
0x00016938 beq 0x163cc | goto label_22;
| }
0x0001693c add r4, r4, 1 | r4++;
0x00016940 b 0x16918 | goto label_43;
| label_44:
0x00016944 mov r1, fp | r1 = fp;
0x00016948 mov r0, 0x20 | r0 = 0x20;
0x0001694c ldr r3, [sp, 8] | r3 = var_8h;
0x00016950 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00016954 cmn r0, 1 |
| if (r0 == 1) {
0x00016958 beq 0x163cc | goto label_22;
| }
| label_121:
0x0001695c sub r4, r6, r7 | r4 = r6 - r7;
0x00016960 sub r7, r7, 1 | r7--;
0x00016964 add r3, r7, 1 | r3 = r7 + 1;
0x00016968 cmp r3, 0 |
| if (r3 > 0) {
0x0001696c bgt 0x16944 | goto label_44;
| }
0x00016970 b 0x168f8 | goto label_45;
| label_122:
0x00016974 mov r1, fp | r1 = fp;
0x00016978 ldr r3, [sp, 8] | r3 = var_8h;
0x0001697c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00016980 cmn r0, 1 |
| if (r0 == 1) {
0x00016984 beq 0x163cc | goto label_22;
| }
0x00016988 add r4, r4, 1 | r4++;
0x0001698c b 0x16900 | goto label_46;
| label_92:
0x00016990 mov r3, 0x25 | r3 = 0x25;
0x00016994 mov r2, 0x1c | r2 = 0x1c;
0x00016998 mov r1, 0 | r1 = 0;
0x0001699c add r6, sp, 0x38 | r6 += var_38h;
0x000169a0 add r0, sp, 0x34 | r0 += s;
0x000169a4 str r3, [sp, 0x30] | var_30h = r3;
0x000169a8 bl 0x576c | memset (r0, r1, r2);
0x000169ac sub r3, r6, 8 | r3 -= var_30h;
0x000169b0 mov r0, r3 | r0 = r3;
0x000169b4 str r3, [sp, 0x20] | format = r3;
0x000169b8 bl 0x5250 | strlen (r0);
0x000169bc add r3, sp, 0x398 | r3 += var_398h;
0x000169c0 tst r5, 0x2000 |
0x000169c4 mov r7, r3 | r7 = r3;
0x000169c8 rsb r8, r0, 0x20 | r8 = 0x20 - r0;
| if ((r5 & 0x2000) == 0) {
0x000169cc bne 0x169ec |
0x000169d0 tst r5, 0x4000 |
| if ((r5 & 0x4000) == 0) {
0x000169d4 movne r2, r7 | r2 = r7;
| }
| if ((r5 & 0x4000) == 0) {
0x000169d8 movne r3, 0x18 | r3 = 0x18;
| }
0x000169dc mlane r2, r3, sb, r2 | __asm ("mlane r2, r3, sb, r2");
| if ((r5 & 0x4000) != 0) {
0x000169e0 mvneq sb, 0 | sb = ~0;
| }
| if ((r5 & 0x4000) == 0) {
0x000169e4 movne sb, r2 | sb = r2;
| }
| if ((r5 & 0x4000) != 0) {
0x000169e8 ldrne sb, [sb, 0x10] | sb = *((sb + 0x10));
| goto label_124;
| }
| }
| label_124:
0x000169ec tst r5, 0x8000 |
0x000169f0 mov r3, 0x18 | r3 = 0x18;
| if ((r5 & 0x8000) == 0) {
0x000169f4 beq 0x16b6c | goto label_125;
| }
0x000169f8 ldr r1, [sp] | r1 = *(sp);
0x000169fc add r2, sp, 0xf90 | r2 += var_f90h;
0x00016a00 add r2, r2, 8 | r2 += nmeb;
0x00016a04 mla r1, r3, r1, r2 | __asm ("mla r1, r3, r1, r2");
0x00016a08 ldr sl, [r1, -0xbf4] | sl = var_ch_3;
0x00016a0c mov r3, r1 | r3 = r1;
| label_48:
0x00016a10 tst r5, 4 |
0x00016a14 add r6, sp, 0x38 | r6 += var_38h;
| if ((r5 & 4) == 0) {
0x00016a18 movne r3, 0x2d | r3 = 0x2d;
| }
| if ((r5 & 4) == 0) {
0x00016a1c strbne r3, [sp, 0x31] | var_31h = r3;
| }
| if ((r5 & 4) == 0) {
0x00016a20 subne r6, r6, 6 | r6 -= 6;
| }
| if ((r5 & 4) != 0) {
0x00016a24 subeq r6, r6, 7 | r6 -= var_31h;
| }
0x00016a28 tst r5, 2 |
| if ((r5 & 2) == 0) {
0x00016a2c movne r3, 0x2b | r3 = 0x2b;
| }
| if ((r5 & 2) == 0) {
0x00016a30 strbne r3, [r6] | *(r6) = r3;
| }
| if ((r5 & 2) == 0) {
0x00016a34 addne r6, r6, 1 | r6++;
| }
0x00016a38 tst r5, 1 |
| if ((r5 & 1) == 0) {
0x00016a3c movne r3, 0x20 | r3 = 0x20;
| }
| if ((r5 & 1) == 0) {
0x00016a40 strbne r3, [r6] | *(r6) = r3;
| }
| if ((r5 & 1) == 0) {
0x00016a44 addne r6, r6, 1 | r6++;
| }
0x00016a48 tst r5, 8 |
| if ((r5 & 8) == 0) {
0x00016a4c movne r3, 0x23 | r3 = 0x23;
| }
| if ((r5 & 8) == 0) {
0x00016a50 strbne r3, [r6] | *(r6) = r3;
| }
0x00016a54 mov r3, 0 | r3 = 0;
| if ((r5 & 8) == 0) {
0x00016a58 addne r6, r6, 1 | r6++;
| }
0x00016a5c cmp sb, r3 |
0x00016a60 strb r3, [r6] | *(r6) = r3;
| if (sb >= r3) {
0x00016a64 blt 0x16a90 |
0x00016a68 ldr r3, [pc, 0x150] | r3 = *(0x16bbc);
0x00016a6c ldr r2, [pc, 0x150] | r2 = *(0x16bc0);
0x00016a70 cmp sb, r3 |
0x00016a74 mov r1, r8 | r1 = r8;
0x00016a78 mov r0, r6 | r0 = r6;
| if (sb >= r3) {
0x00016a7c movlt r3, sb | r3 = sb;
| }
0x00016a80 add r2, pc, r2 | r2 = pc + r2;
0x00016a84 bl 0x579c | r0 = fcn_0000579c ();
0x00016a88 add r6, r6, r0 | r6 += r0;
0x00016a8c sub r8, r8, r0 | r8 -= r0;
| }
0x00016a90 cmp sl, 0 |
| if (sl >= 0) {
0x00016a94 blt 0x16af0 |
0x00016a98 ldr r3, [sp] | r3 = *(sp);
0x00016a9c add r2, sp, 0x398 | r2 += var_398h;
0x00016aa0 mov r1, 0x18 | r1 = 0x18;
0x00016aa4 mla r3, r1, r3, r2 | __asm ("mla r3, r1, r3, r2");
0x00016aa8 mov sb, 0x144 | sb = 0x144;
0x00016aac ldrd r2, r3, [r3, 0x10] | __asm ("ldrd r2, r3, [var_10h_2]");
0x00016ab0 strd r2, r3, [sp, 0x18] | __asm ("strd r2, r3, [var_18h]");
| label_49:
0x00016ab4 ldr r3, [pc, 0x110] | r3 = *(0x16bc8);
0x00016ab8 mov r2, 0 | r2 = 0;
0x00016abc ldrd r0, r1, [sp, 0x18] | __asm ("ldrd r0, r1, [var_18h]");
0x00016ac0 bl 0x38954 | r0 = aeabi_dcmpge ();
0x00016ac4 cmp r0, 0 |
| if (r0 != 0) {
0x00016ac8 bne 0x16bd0 | goto label_126;
| }
0x00016acc ldr r2, [pc, 0xf4] | r2 = *(0x16bc4);
0x00016ad0 cmp sb, sl |
| if (sb >= sl) {
0x00016ad4 sublt sl, sb, 1 | sl = sb - 1;
| }
0x00016ad8 mov r0, r6 | r0 = r6;
0x00016adc mov r3, sl | r3 = sl;
0x00016ae0 add r2, pc, r2 | r2 = pc + r2;
0x00016ae4 mov r1, r8 | r1 = r8;
0x00016ae8 bl 0x579c | r0 = fcn_0000579c ();
0x00016aec add r6, r6, r0 | r6 += r0;
| }
0x00016af0 tst r5, 0x20 |
| if ((r5 & 0x20) == 0) {
0x00016af4 movne r3, 0x6c | r3 = 0x6c;
| }
| if ((r5 & 0x20) == 0) {
0x00016af8 strbne r3, [r6] | *(r6) = r3;
| }
| if ((r5 & 0x20) == 0) {
0x00016afc addne r6, r6, 1 | r6++;
| }
0x00016b00 tst r5, 0x40000 |
| if ((r5 & 0x40000) == 0) {
0x00016b04 beq 0x16bec | goto label_127;
| }
0x00016b08 tst r5, 0x1000 |
| if ((r5 & 0x1000) != 0) {
0x00016b0c moveq r3, 0x65 | r3 = 0x65;
| }
| if ((r5 & 0x1000) == 0) {
0x00016b10 movne r3, 0x45 | r3 = 0x45;
| }
| label_50:
0x00016b14 strb r3, [r6] | *(r6) = r3;
0x00016b18 mov r3, 0 | r3 = 0;
0x00016b1c strb r3, [r6, 1] | var_1h_2 = r3;
0x00016b20 ldr r3, [sp] | r3 = *(sp);
0x00016b24 mov r0, 0x18 | r0 = 0x18;
0x00016b28 mla r3, r0, r3, r7 | __asm ("mla r3, r0, r3, r7");
0x00016b2c add r5, sp, 0x50 | r5 += var_50h;
0x00016b30 mov r0, r5 | r0 = r5;
0x00016b34 ldrd r2, r3, [r3, 0x10] | __asm ("ldrd r2, r3, [var_10h_2]");
0x00016b38 ldr r1, [sp, 0x20] | r1 = format;
0x00016b3c bl 0x5844 | sprintf (r0, r1, r2);
0x00016b40 sub r5, r5, r4 | r5 -= r4;
| label_47:
0x00016b44 ldrb r0, [r5, r4] | r0 = *((r5 + r4));
0x00016b48 cmp r0, 0 |
| if (r0 == 0) {
0x00016b4c beq 0x16384 | goto label_34;
| }
0x00016b50 mov r1, fp | r1 = fp;
0x00016b54 ldr r3, [sp, 8] | r3 = var_8h;
0x00016b58 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00016b5c cmn r0, 1 |
| if (r0 == 1) {
0x00016b60 beq 0x163cc | goto label_22;
| }
0x00016b64 add r4, r4, 1 | r4++;
0x00016b68 b 0x16b44 | goto label_47;
| label_125:
0x00016b6c cmp sl, 0 |
| if (sl == 0) {
0x00016b70 ldrne r1, [sp] | r1 = *(sp);
| }
| if (sl == 0) {
0x00016b74 addne r2, sp, 0xf90 | r2 += var_f90h;
| }
| if (sl == 0) {
0x00016b78 addne r2, r2, 8 | r2 += 8;
| }
0x00016b7c mlane r1, r3, r1, r2 | __asm ("mlane r1, r3, r1, r2");
| if (sl != 0) {
0x00016b80 mvneq sl, 0 | sl = ~0;
| }
| if (sl == 0) {
0x00016b84 movne r2, r1 | r2 = r1;
| }
| if (sl == 0) {
0x00016b88 ldrne r2, [r2, -0xbf4] | r2 = *((r2 - 0xbf4));
| }
| if (sl == 0) {
0x00016b8c movne r1, r7 | r1 = r7;
| }
0x00016b90 mlane r1, r3, r2, r1 | __asm ("mlane r1, r3, r2, r1");
| if (sl == 0) {
0x00016b94 movne r3, r1 | r3 = r1;
| }
| if (sl == 0) {
0x00016b98 ldrne sl, [r3, 0x10] | sl = *((r3 + 0x10));
| }
0x00016b9c b 0x16a10 | goto label_48;
| label_126:
0x00016bd0 ldrd r0, r1, [sp, 0x18] | __asm ("ldrd r0, r1, [var_18h]");
0x00016bd4 ldr r3, [pc, -0x10] | r3 = *(0x00016bcc);
0x00016bd8 mov r2, 0 | r2 = 0;
0x00016bdc bl 0x3864c | divdf3 ();
0x00016be0 sub sb, sb, 1 | sb--;
0x00016be4 strd r0, r1, [sp, 0x18] | __asm ("strd r0, r1, [var_18h]");
0x00016be8 b 0x16ab4 | goto label_49;
| label_127:
0x00016bec tst r5, 0x80000 |
| if ((r5 & 0x80000) == 0) {
0x00016bf0 moveq r3, 0x66 | r3 = 0x66;
| goto label_128;
| }
| if ((r5 & 0x80000) == 0) {
| label_128:
0x00016bf4 beq 0x16b14 | goto label_50;
| }
0x00016bf8 tst r5, 0x1000 |
| if ((r5 & 0x1000) != 0) {
0x00016bfc moveq r3, 0x67 | r3 = 0x67;
| }
| if ((r5 & 0x1000) == 0) {
0x00016c00 movne r3, 0x47 | r3 = 0x47;
| }
0x00016c04 b 0x16b14 | goto label_50;
| label_91:
0x00016c08 add r7, sp, 0xf90 | r7 += var_f90h;
0x00016c0c tst r5, 0x40 |
0x00016c10 add r7, r7, 8 | r7 += nmeb;
0x00016c14 ldr r3, [sp] | r3 = *(sp);
| if ((r5 & 0x40) != 0) {
0x00016c18 beq 0x16c34 |
0x00016c1c mla r3, r0, r3, r7 | __asm ("mla r3, r0, r3, r7");
0x00016c20 asr r1, r4, 0x1f | r1 = r4 >> 0x1f;
0x00016c24 ldr r3, [r3, -0xbf0] | r3 = var_10h_2;
0x00016c28 mov r0, r4 | r0 = r4;
0x00016c2c strd r0, r1, [r3] | __asm ("strd r0, r1, [r3]");
0x00016c30 b 0x16384 | goto label_34;
| }
0x00016c34 mov r0, 0x18 | r0 = 0x18;
0x00016c38 mla r3, r0, r3, r7 | __asm ("mla r3, r0, r3, r7");
0x00016c3c tst r5, 0x20 |
0x00016c40 ldr r3, [r3, -0xbf0] | r3 = var_10h_2;
| if ((r5 & 0x20) != 0) {
0x00016c44 beq 0x16c50 |
| label_51:
0x00016c48 str r4, [r3] | *(r3) = r4;
0x00016c4c b 0x16384 | goto label_34;
| }
0x00016c50 tst r5, 0x10 |
0x00016c54 strhne r4, [r3] | __asm ("strhne r4, [r3]");
| if ((r5 & 0x10) != 0) {
0x00016c58 bne 0x16384 | goto label_34;
| }
0x00016c5c b 0x16c48 | goto label_51;
| label_106:
0x00016c60 mov r4, sl | r4 = sl;
0x00016c64 b 0x163cc | goto label_22;
| label_56:
0x00016c68 mvn r4, 0 | r4 = ~0;
0x00016c6c b 0x163cc | goto label_22;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2ab00 */
| #include <stdint.h>
|
; (fcn) sym.encoder_7bit_read () | uint32_t encoder_7bit_read (int32_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002ab00 ldr r2, [r3, 0x64] | r2 = *((r3 + 0x64));
0x0002ab04 ldr ip, [r3, 0x60] | ip = *((r3 + 0x60));
0x0002ab08 sub r2, r2, ip | r2 -= ip;
0x0002ab0c cmp r2, r1 |
| if (r2 >= r1) {
0x0002ab10 movlo r1, r2 | r1 = r2;
| }
0x0002ab14 mov r2, 0 | r2 = 0;
| do {
0x0002ab18 cmp r2, r1 |
| if (r2 != r1) {
0x0002ab1c beq 0x2ab40 |
0x0002ab20 ldr ip, [r3, 0x60] | ip = *((r3 + 0x60));
0x0002ab24 add ip, r3, ip |
0x0002ab28 ldrb ip, [ip, 0x68] | ip = *((ip + 0x68));
0x0002ab2c tst ip, 0x80 |
0x0002ab30 strb ip, [r0, r2] | *((r0 + r2)) = ip;
| if ((ip & 0x80) == 0) {
0x0002ab34 beq 0x2ab48 | goto label_0;
| }
0x0002ab38 cmp r2, 0 |
| if (r2 == 0) {
0x0002ab3c mvneq r2, 0 | r2 = ~0;
| goto label_1;
| }
| }
| label_1:
0x0002ab40 mov r0, r2 | r0 = r2;
0x0002ab44 bx lr | return r0;
| label_0:
0x0002ab48 ldr ip, [r3, 0x60] | ip = *((r3 + 0x60));
0x0002ab4c add r2, r2, 1 | r2++;
0x0002ab50 add ip, ip, 1 |
0x0002ab54 str ip, [r3, 0x60] | *((r3 + 0x60)) = ip;
0x0002ab58 b 0x2ab18 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2ab5c */
| #include <stdint.h>
|
; (fcn) sym.encoder_base64_read () | void encoder_base64_read (int32_t arg1, size_t size) {
| r0 = arg1;
| r1 = size;
0x0002ab5c push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0002ab60 ldr r5, [pc, 0x1a4] | r5 = *(0x2ad08);
0x0002ab64 mov ip, 0 |
0x0002ab68 mov r6, 0xd | r6 = 0xd;
0x0002ab6c mov r7, 0xa | r7 = 0xa;
0x0002ab70 mov r8, ip | r8 = ip;
0x0002ab74 add r5, pc, r5 | r5 = pc + r5;
| label_1:
0x0002ab78 ldr r4, [r3, 0x60] | r4 = *((r3 + 0x60));
0x0002ab7c ldr lr, [r3, 0x64] |
0x0002ab80 cmp r4, lr |
0x0002ab84 blo 0x2abd8 |
| while (r1 < 1) {
| label_0:
0x0002ab88 cmp r1, 3 |
| if (r1 > 3) {
0x0002ab8c movls r1, 0 | r1 = 0;
| }
| if (r1 <= 3) {
0x0002ab90 andhi r1, r2, 1 | r1 = r2 & 1;
| }
0x0002ab94 cmp r1, 0 |
| if (r1 != 0) {
0x0002ab98 beq 0x2abd0 |
0x0002ab9c mov r2, 0x3d | r2 = 0x3d;
0x0002aba0 strb r2, [r0, 3] | *((r0 + 3)) = r2;
0x0002aba4 strb r2, [r0, 2] | *((r0 + 2)) = r2;
0x0002aba8 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x0002abac ldr r2, [r3, 0x64] | r2 = *((r3 + 0x64));
0x0002abb0 sub r2, r2, r1 | r2 -= r1;
0x0002abb4 cmp r2, 1 |
| if (r2 == 1) {
0x0002abb8 beq 0x2ac94 | goto label_3;
| }
0x0002abbc cmp r2, 2 |
| if (r2 != 2) {
0x0002abc0 addeq r2, r3, r1 | r2 = r3 + r1;
| }
| if (r2 != 2) {
0x0002abc4 ldrbeq r2, [r2, 0x69] | r2 = *((r2 + 0x69));
| }
| if (r2 != 2) {
0x0002abc8 lsleq r2, r2, 8 | r2 <<= 8;
| }
| if (r2 == 2) {
0x0002abcc beq 0x2ac98 | goto label_4;
| }
| }
| label_2:
0x0002abd0 mov r0, ip | r0 = ip;
0x0002abd4 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0002abd8 ldr lr, [r3, 0x5c] |
0x0002abdc cmp lr, 0x48 |
| if (lr < 0x48) {
0x0002abe0 bls 0x2ac08 | goto label_5;
| }
0x0002abe4 cmp r1, 1 |
0x0002abe8 bls 0x2ab88 |
| }
0x0002abec mov lr, r0 | lr = r0;
0x0002abf0 strb r6, [lr], 2 | *(lr) = r6;
| lr += 2;
0x0002abf4 add ip, ip, 2 |
0x0002abf8 strb r7, [r0, 1] | *((r0 + 1)) = r7;
0x0002abfc sub r1, r1, 2 | r1 -= 2;
0x0002ac00 mov r0, lr | r0 = lr;
0x0002ac04 str r8, [r3, 0x5c] | *((r3 + 0x5c)) = r8;
| label_5:
0x0002ac08 cmp r1, 3 |
| if (r1 < 3) {
0x0002ac0c bls 0x2ab88 | goto label_0;
| }
0x0002ac10 ldr r4, [r3, 0x60] | r4 = *((r3 + 0x60));
0x0002ac14 ldr lr, [r3, 0x64] |
0x0002ac18 sub lr, lr, r4 | lr -= r4;
0x0002ac1c cmp lr, 2 |
| if (lr < 2) {
0x0002ac20 bls 0x2ab88 | goto label_0;
| }
0x0002ac24 add sb, r3, r4 | sb = r3 + r4;
0x0002ac28 ldrb sl, [sb, 0x68] | sl = *((sb + 0x68));
0x0002ac2c ldrb lr, [sb, 0x69] |
0x0002ac30 add r4, r4, 3 | r4 += 3;
0x0002ac34 str r4, [r3, 0x60] | *((r3 + 0x60)) = r4;
0x0002ac38 ldrb r4, [sb, 0x6a] | r4 = *((sb + 0x6a));
0x0002ac3c orr lr, lr, sl, lsl 8 | lr |= (sl << 8);
0x0002ac40 orr lr, r4, lr, lsl 8 | lr = r4 | (lr << 8);
0x0002ac44 ldrb r4, [r5, lr, asr 18] | offset_0 = lr >> 18;
| r4 = *((r5 + offset_0));
0x0002ac48 add ip, ip, 4 |
0x0002ac4c strb r4, [r0] | *(r0) = r4;
0x0002ac50 asr r4, lr, 0xc | r4 = lr >> 0xc;
0x0002ac54 and r4, r4, 0x3f | r4 &= 0x3f;
0x0002ac58 ldrb r4, [r5, r4] | r4 = *((r5 + r4));
0x0002ac5c sub r1, r1, 4 | r1 -= 4;
0x0002ac60 strb r4, [r0, 1] | *((r0 + 1)) = r4;
0x0002ac64 asr r4, lr, 6 | r4 = lr >> 6;
0x0002ac68 and r4, r4, 0x3f | r4 &= 0x3f;
0x0002ac6c and lr, lr, 0x3f | lr &= 0x3f;
0x0002ac70 ldrb lr, [r5, lr] |
0x0002ac74 ldrb r4, [r5, r4] | r4 = *((r5 + r4));
0x0002ac78 strb lr, [r0, 3] |
0x0002ac7c strb r4, [r0, 2] | *((r0 + 2)) = r4;
0x0002ac80 ldr lr, [r3, 0x5c] |
0x0002ac84 add r0, r0, 4 | r0 += 4;
0x0002ac88 add lr, lr, 4 | lr += 4;
0x0002ac8c str lr, [r3, 0x5c] |
0x0002ac90 b 0x2ab78 | goto label_1;
| label_3:
0x0002ac94 mov r2, 0 | r2 = 0;
| label_4:
0x0002ac98 add r1, r3, r1 | r1 = r3 + r1;
0x0002ac9c ldrb r1, [r1, 0x68] | r1 = *((r1 + 0x68));
0x0002aca0 ldr lr, [pc, 0x68] | lr = *(0x2ad0c);
0x0002aca4 orr r2, r2, r1, lsl 16 | r2 |= (r1 << 16);
0x0002aca8 add lr, pc, lr | lr = pc + lr;
0x0002acac ldrb r1, [lr, r2, asr 18] | offset_1 = r2 >> 18;
| r1 = *((lr + offset_1));
0x0002acb0 strb r1, [r0] | *(r0) = r1;
0x0002acb4 asr r1, r2, 0xc | r1 = r2 >> 0xc;
0x0002acb8 and r1, r1, 0x3f | r1 &= 0x3f;
0x0002acbc ldrb r1, [lr, r1] | r1 = *((lr + r1));
0x0002acc0 strb r1, [r0, 1] | *((r0 + 1)) = r1;
0x0002acc4 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x0002acc8 ldr r4, [r3, 0x64] | r4 = *((r3 + 0x64));
0x0002accc add r1, r1, 1 | r1++;
0x0002acd0 cmp r1, r4 |
0x0002acd4 str r1, [r3, 0x60] | *((r3 + 0x60)) = r1;
| if (r1 != r4) {
0x0002acd8 beq 0x2acf8 |
0x0002acdc asr r2, r2, 6 | r2 >>= 6;
0x0002ace0 and r2, r2, 0x3f | r2 &= 0x3f;
0x0002ace4 ldrb r2, [lr, r2] | r2 = *((lr + r2));
0x0002ace8 strb r2, [r0, 2] | *((r0 + 2)) = r2;
0x0002acec ldr r2, [r3, 0x60] | r2 = *((r3 + 0x60));
0x0002acf0 add r2, r2, 1 | r2++;
0x0002acf4 str r2, [r3, 0x60] | *((r3 + 0x60)) = r2;
| }
0x0002acf8 ldr r2, [r3, 0x5c] | r2 = *((r3 + 0x5c));
0x0002acfc add ip, ip, 4 |
0x0002ad00 add r2, r2, 4 | r2 += 4;
0x0002ad04 str r2, [r3, 0x5c] | *((r3 + 0x5c)) = r2;
0x0002ad08 b 0x2abd0 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2b030 */
| #include <stdint.h>
|
; (fcn) sym.encoder_nop_read () | void encoder_nop_read (uint32_t arg2, void * s1) {
| r1 = arg2;
| r0 = s1;
0x0002b030 push {r4, r5, r6, lr} |
0x0002b034 ldr r4, [r3, 0x64] | r4 = *((r3 + 0x64));
0x0002b038 mov r5, r3 | r5 = r3;
0x0002b03c ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0002b040 sub r4, r4, r3 | r4 -= r3;
0x0002b044 cmp r4, r1 |
| if (r4 < r1) {
0x0002b048 movhs r4, r1 | r4 = r1;
| }
0x0002b04c cmp r4, 0 |
| if (r4 != 0) {
0x0002b050 beq 0x2b060 |
0x0002b054 mov r2, r4 | r2 = r4;
0x0002b058 add r1, r5, 0x68 | r1 = r5 + 0x68;
0x0002b05c bl 0x4f5c | memcpy (r0, r1, r2);
| }
0x0002b060 ldr r3, [r5, 0x60] | r3 = *((r5 + 0x60));
0x0002b064 mov r0, r4 | r0 = r4;
0x0002b068 add r3, r3, r4 | r3 += r4;
0x0002b06c str r3, [r5, 0x60] | *((r5 + 0x60)) = r3;
0x0002b070 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2b0c4 */
| #include <stdint.h>
|
; (fcn) sym.encoder_qp_read () | void encoder_qp_read (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| char * dest;
| int32_t var_dh;
| int32_t var_eh;
| int32_t var_10h;
| int32_t var_0h;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x0002b0c4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002b0c8 ldr fp, [pc, 0x1b4] | fp = *(0x2b280);
0x0002b0cc sub sp, sp, 0x14 |
0x0002b0d0 mov r6, r3 | r6 = r3;
0x0002b0d4 add r7, r3, 0x5c | r7 = r3 + 0x5c;
0x0002b0d8 mov r8, r0 | r8 = r0;
0x0002b0dc mov r3, 0 | r3 = 0;
0x0002b0e0 mov sb, r1 | sb = r1;
0x0002b0e4 mov sl, r2 | sl = r2;
0x0002b0e8 add fp, pc, fp |
0x0002b0ec str r3, [sp, 4] | var_4h = r3;
| label_1:
0x0002b0f0 ldr r2, [r6, 0x60] | r2 = *((r6 + 0x60));
0x0002b0f4 ldr r1, [r6, 0x64] | r1 = *((r6 + 0x64));
0x0002b0f8 cmp r2, r1 |
0x0002b0fc blo 0x2b10c |
| while (r0 == 1) {
| label_0:
0x0002b100 ldr r0, [sp, 4] | r0 = var_4h;
0x0002b104 add sp, sp, 0x14 |
0x0002b108 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0002b10c add r2, r6, r2 | r2 = r6 + r2;
0x0002b110 ldrb r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x0002b114 add r1, fp, r2, lsr 4 | r1 = fp + (r2 >> 4);
0x0002b118 ldrb r1, [r1, 0x141] | r1 = *((r1 + 0x141));
0x0002b11c strb r2, [sp, 0xc] | dest = r2;
0x0002b120 strb r1, [sp, 0xd] | var_dh = r1;
0x0002b124 and r1, r2, 0xf | r1 = r2 & 0xf;
0x0002b128 add r2, fp, r2 | r2 = fp + r2;
0x0002b12c add r1, fp, r1 | r1 = fp + r1;
0x0002b130 ldrb r5, [r2, 0x41] | r5 = *((r2 + 0x41));
0x0002b134 ldrb r1, [r1, 0x141] | r1 = *((r1 + 0x141));
0x0002b138 cmp r5, 2 |
0x0002b13c strb r1, [sp, 0xe] | var_eh = r1;
| if (r5 != 2) {
0x0002b140 beq 0x2b15c |
0x0002b144 cmp r5, 3 |
| if (r5 == 3) {
0x0002b148 beq 0x2b24c | goto label_4;
| }
0x0002b14c cmp r5, 1 |
| if (r5 != 1) {
0x0002b150 bne 0x2b17c | goto label_3;
| }
| label_2:
0x0002b154 mov r4, r5 | r4 = r5;
0x0002b158 b 0x2b18c | goto label_5;
| }
0x0002b15c mov r2, 1 | r2 = 1;
0x0002b160 mov r1, sl | r1 = sl;
0x0002b164 mov r0, r7 | r0 = r7;
0x0002b168 bl 0x2ad80 | r0 = qp_lookahead_eol ();
0x0002b16c cmn r0, 1 |
0x0002b170 beq 0x2b100 |
| }
0x0002b174 cmp r0, 0 |
| if (r0 == 0) {
0x0002b178 beq 0x2b27c | goto label_6;
| }
| label_3:
0x0002b17c mov r2, 0x3d | r2 = 0x3d;
0x0002b180 mov r5, 1 | r5 = 1;
0x0002b184 mov r4, 3 | r4 = 3;
0x0002b188 strb r2, [sp, 0xc] | dest = r2;
| label_5:
0x0002b18c add r3, sp, 0x10 | r3 += var_10h;
0x0002b190 add r2, r3, r4 | r2 = r3 + r4;
0x0002b194 ldrb r2, [r2, -5] | r2 = dest;
0x0002b198 cmp r2, 0xa |
| if (r2 == 0xa) {
0x0002b19c beq 0x2b1ec | goto label_7;
| }
0x0002b1a0 ldr r2, [r6, 0x5c] | r2 = *((r6 + 0x5c));
0x0002b1a4 add r2, r4, r2 | r2 = r4 + r2;
0x0002b1a8 cmp r2, 0x4c |
| if (r2 > 0x4c) {
0x0002b1ac bhi 0x2b1d4 | goto label_8;
| }
| if (r2 != 0x4c) {
0x0002b1b0 bne 0x2b1ec | goto label_7;
| }
0x0002b1b4 mov r2, r5 | r2 = r5;
0x0002b1b8 mov r1, sl | r1 = sl;
0x0002b1bc mov r0, r7 | r0 = r7;
0x0002b1c0 bl 0x2ad80 | r0 = qp_lookahead_eol ();
0x0002b1c4 cmn r0, 1 |
| if (r0 == 1) {
0x0002b1c8 beq 0x2b100 | goto label_0;
| }
0x0002b1cc cmp r0, 0 |
| if (r0 == 0) {
0x0002b1d0 bne 0x2b1ec |
| label_8:
0x0002b1d4 ldr r1, [pc, 0xac] | r1 = *(0x2b284);
0x0002b1d8 add r0, sp, 0xc | r0 += dest;
0x0002b1dc add r1, pc, r1 | r1 = pc + r1;
0x0002b1e0 bl 0x5c28 | strcpy (r0, r1);
0x0002b1e4 mov r5, 0 | r5 = 0;
0x0002b1e8 mov r4, 3 | r4 = 3;
| }
| label_7:
0x0002b1ec cmp sb, r4 |
| if (sb <= r4) {
0x0002b1f0 blo 0x2b100 | goto label_0;
| }
0x0002b1f4 mov r2, r4 | r2 = r4;
0x0002b1f8 mov r0, r8 | r0 = r8;
0x0002b1fc add r1, sp, 0xc | r1 += dest;
0x0002b200 bl 0x4f5c | memcpy (r0, r1, r2);
0x0002b204 ldr r3, [sp, 4] | r3 = var_4h;
0x0002b208 ldr r2, [r6, 0x5c] | r2 = *((r6 + 0x5c));
0x0002b20c add r3, r3, r4 | r3 += r4;
0x0002b210 str r3, [sp, 4] | var_4h = r3;
0x0002b214 add r3, sp, 0x10 | r3 += var_10h;
0x0002b218 add r2, r2, r4 | r2 += r4;
0x0002b21c add r8, r8, r4 | r8 += r4;
0x0002b220 sub sb, sb, r4 | sb -= r4;
0x0002b224 add r4, r3, r4 | r4 = r3 + r4;
0x0002b228 str r2, [r6, 0x5c] | *((r6 + 0x5c)) = r2;
0x0002b22c ldrb r2, [r4, -5] | r2 = dest;
0x0002b230 cmp r2, 0xa |
| if (r2 != 0xa) {
0x0002b234 moveq r2, 0 | r2 = 0;
| }
| if (r2 != 0xa) {
0x0002b238 streq r2, [r6, 0x5c] | *((r6 + 0x5c)) = r2;
| }
0x0002b23c ldr r2, [r6, 0x60] | r2 = *((r6 + 0x60));
0x0002b240 add r5, r2, r5 | r5 = r2 + r5;
0x0002b244 str r5, [r6, 0x60] | *((r6 + 0x60)) = r5;
0x0002b248 b 0x2b0f0 | goto label_1;
| label_4:
0x0002b24c mov r2, 0 | r2 = 0;
0x0002b250 mov r1, sl | r1 = sl;
0x0002b254 mov r0, r7 | r0 = r7;
0x0002b258 bl 0x2ad80 | r0 = qp_lookahead_eol ();
0x0002b25c cmn r0, 1 |
| if (r0 == 1) {
0x0002b260 beq 0x2b100 | goto label_0;
| }
0x0002b264 cmp r0, 1 |
| if (r0 != 1) {
0x0002b268 moveq r2, 0xa | r2 = 0xa;
| }
| if (r0 != 1) {
0x0002b26c strbeq r2, [sp, 0xd] | var_dh = r2;
| }
| if (r0 == 1) {
0x0002b270 moveq r5, 2 | r5 = 2;
| goto label_9;
| }
| if (r0 == 1) {
| label_9:
0x0002b274 beq 0x2b154 | goto label_2;
| }
0x0002b278 b 0x2b17c | goto label_3;
| label_6:
0x0002b27c mov r5, 1 | r5 = 1;
0x0002b280 b 0x2b154 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2aa54 */
| #include <stdint.h>
|
; (fcn) sym.escape_string () | void escape_string (int32_t arg1) {
| r0 = arg1;
0x0002aa54 ldr r2, [pc, 0x94] | r2 = *(0x2aaec);
0x0002aa58 push {r4, r5, r6, lr} |
0x0002aa5c mov r3, r0 | r3 = r0;
0x0002aa60 mov r5, r0 | r5 = r0;
0x0002aa64 mov r0, 0 | r0 = 0;
0x0002aa68 add r2, pc, r2 | r2 = pc + r2;
| do {
0x0002aa6c sub r1, r3, r5 | r1 = r3 - r5;
0x0002aa70 ldrb r4, [r3], 1 | r4 = *(r3);
| r3++;
0x0002aa74 cmp r4, 0 |
| if (r4 == 0) {
0x0002aa78 bne 0x2aac0 |
0x0002aa7c ldr r3, [pc, 0x70] |
0x0002aa80 add r0, r0, r1 | r0 += r1;
0x0002aa84 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002aa88 add r0, r0, 1 | r0++;
0x0002aa8c ldr r3, [r3] | r3 = *(0x2aaf0);
0x0002aa90 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002aa94 cmp r0, 0 |
| if (r0 == 0) {
0x0002aa98 subne r5, r5, 1 | r5--;
| }
| if (r0 == 0) {
0x0002aa9c movne r3, r4 | r3 = r4;
| }
| if (r0 == 0) {
0x0002aaa0 movne ip, 0x5c |
| }
0x0002aaa4 popeq {r4, r5, r6, pc} |
| label_0:
0x0002aaa8 ldrb r2, [r5, 1]! | r2 = *((r5 += 1));
0x0002aaac add r1, r0, r3 | r1 = r0 + r3;
0x0002aab0 cmp r2, 0 |
| if (r2 != 0) {
0x0002aab4 bne 0x2aad0 | goto label_1;
| }
0x0002aab8 strb r2, [r1] | *(r1) = r2;
0x0002aabc pop {r4, r5, r6, pc} |
| }
0x0002aac0 cmp r4, 0x5c |
0x0002aac4 cmpne r4, 0x22 | __asm ("cmpne r4, 0x22");
| if (r4 != 0x5c) {
0x0002aac8 addeq r0, r0, 1 | r0++;
| }
0x0002aacc b 0x2aa6c |
| } while (1);
| label_1:
0x0002aad0 cmp r2, 0x5c |
0x0002aad4 cmpne r2, 0x22 | __asm ("cmpne r2, 0x22");
| if (r2 != 0x5c) {
0x0002aad8 strbeq ip, [r1] | *(r1) = ip;
| }
0x0002aadc ldrb r2, [r5] | r2 = *(r5);
| if (r2 != 0x5c) {
0x0002aae0 addeq r3, r3, 1 | r3++;
| }
0x0002aae4 strb r2, [r0, r3] | *((r0 + r3)) = r2;
0x0002aae8 add r3, r3, 1 | r3++;
0x0002aaec b 0x2aaa8 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x17c54 */
| #include <stdint.h>
|
; (fcn) sym.find_host_sep () | void find_host_sep (int32_t arg1) {
| r0 = arg1;
0x00017c54 ldr r1, [pc, 0x6c] | r1 = *(0x17cc4);
0x00017c58 push {r4, r5, r6, lr} |
0x00017c5c add r1, pc, r1 | r1 = pc + r1;
0x00017c60 mov r4, r0 | r4 = r0;
0x00017c64 bl 0x5a18 | strstr (r0, r1);
0x00017c68 mov r1, 0x3f | r1 = 0x3f;
0x00017c6c cmp r0, 0 |
| if (r0 == 0) {
0x00017c70 addne r5, r0, 2 | r5 = r0 + 2;
| }
| if (r0 != 0) {
0x00017c74 moveq r5, r4 | r5 = r4;
| }
0x00017c78 mov r0, r5 | r0 = r5;
0x00017c7c bl 0x5b38 | strchr (r0, r1);
0x00017c80 mov r1, 0x2f | r1 = 0x2f;
0x00017c84 mov r6, r0 | r6 = r0;
0x00017c88 mov r0, r5 | r0 = r5;
0x00017c8c bl 0x5b38 | r0 = strchr (r0, r1);
0x00017c90 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00017c94 bne 0x17ca4 |
0x00017c98 mov r0, r4 | r0 = r4;
0x00017c9c bl 0x5250 | r0 = strlen (r0);
0x00017ca0 add r5, r4, r0 | r5 = r4 + r0;
| }
0x00017ca4 cmp r6, 0 |
| if (r6 == 0) {
0x00017ca8 bne 0x17cb8 |
0x00017cac mov r0, r4 | r0 = r4;
0x00017cb0 bl 0x5250 | r0 = strlen (r0);
0x00017cb4 add r6, r4, r0 | r6 = r4 + r0;
| }
0x00017cb8 cmp r5, r6 |
| if (r5 >= r6) {
0x00017cbc movlo r0, r5 | r0 = r5;
| }
| if (r5 < r6) {
0x00017cc0 movhs r0, r6 | r0 = r6;
| }
0x00017cc4 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x20ca4 */
| #include <stdint.h>
|
; (fcn) sym.gzip_unencode_write () | void gzip_unencode_write (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x00020ca4 push {r0, r1, r4, r5, r6, r7, r8, sb, sl, lr} |
0x00020ca8 ldr sl, [pc, 0x1fc] | sl = *(0x20ea8);
0x00020cac mov r6, r2 | r6 = r2;
0x00020cb0 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00020cb4 add sl, pc, sl | sl = pc + sl;
0x00020cb8 cmp r2, 6 |
0x00020cbc mov r4, r1 | r4 = r1;
0x00020cc0 mov r5, r3 | r5 = r3;
| if (r2 != 6) {
0x00020cc4 streq r6, [r1, 0x10] | *((r1 + 0x10)) = r6;
| }
| if (r2 != 6) {
0x00020cc8 streq r3, [r1, 0x14] | *((r1 + 0x14)) = r3;
| }
| if (r2 == 6) {
0x00020ccc beq 0x20d98 | goto label_5;
| }
0x00020cd0 add r8, r1, 8 | r8 = r1 + 8;
0x00020cd4 cmp r2, 3 |
0x00020cd8 mov r7, r0 | r7 = r0;
0x00020cdc add sb, r8, 8 | sb = r8 + 8;
| if (r2 == 3) {
0x00020ce0 beq 0x20de8 | goto label_6;
| }
0x00020ce4 cmp r2, 4 |
| if (r2 == 4) {
0x00020ce8 beq 0x20e98 | goto label_7;
| }
0x00020cec cmp r2, 1 |
| if (r2 == 1) {
0x00020cf0 strne r6, [r1, 0x10] | *((r1 + 0x10)) = r6;
| }
| if (r2 == 1) {
0x00020cf4 strne r3, [r1, 0x14] | *((r1 + 0x14)) = r3;
| }
| if (r2 != 1) {
0x00020cf8 bne 0x20d80 | goto label_8;
| }
0x00020cfc cmp r3, 9 |
| if (r3 <= 9) {
0x00020d00 ble 0x20da0 | goto label_9;
| }
0x00020d04 ldrb r3, [r6] | r3 = *(r6);
0x00020d08 cmp r3, 0x1f |
| if (r3 == 0x1f) {
0x00020d0c bne 0x20d3c |
0x00020d10 ldrb r3, [r6, 1] | r3 = *((r6 + 1));
0x00020d14 cmp r3, 0x8b |
| if (r3 != 0x8b) {
0x00020d18 bne 0x20d3c | goto label_3;
| }
0x00020d1c add r2, sp, 4 | r2 += var_4h;
0x00020d20 mov r1, r5 | r1 = r5;
0x00020d24 mov r0, r6 | r0 = r6;
0x00020d28 bl 0x2052c | r0 = check_gzip_header_part_0 ();
0x00020d2c cmp r0, 0 |
| if (r0 == 0) {
0x00020d30 beq 0x20d64 | goto label_10;
| }
0x00020d34 cmp r0, 2 |
| if (r0 == 2) {
0x00020d38 beq 0x20da0 | goto label_9;
| }
| }
| label_3:
0x00020d3c ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00020d40 ldr r0, [r7] | r0 = *(r7);
0x00020d44 bl 0x2060c | r0 = process_zlib_error_isra_1 ();
0x00020d48 mov r3, r0 | r3 = r0;
| label_1:
0x00020d4c mov r2, r8 | r2 = r8;
0x00020d50 mov r1, sb | r1 = sb;
0x00020d54 mov r0, r7 | r0 = r7;
0x00020d58 bl 0x20710 | exit_zlib ();
| do {
| label_0:
0x00020d5c add sp, sp, 8 |
0x00020d60 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_10:
0x00020d64 ldr r3, [sp, 4] | r3 = var_4h;
0x00020d68 add r1, r6, r3 | r1 = r6 + r3;
0x00020d6c sub r3, r5, r3 | r3 = r5 - r3;
0x00020d70 str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
| label_4:
0x00020d74 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00020d78 mov r3, 5 | r3 = 5;
0x00020d7c str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_8:
0x00020d80 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00020d84 cmp r0, 0 |
0x00020d88 beq 0x20d5c |
| } while (r0 == 0);
0x00020d8c mov r2, 5 | r2 = 5;
0x00020d90 mov r1, r4 | r1 = r4;
0x00020d94 mov r0, r7 | r0 = r7;
| label_5:
0x00020d98 bl 0x20a98 | inflate_stream ();
0x00020d9c b 0x20d5c | goto label_0;
| label_9:
0x00020da0 ldr r3, [pc, 0x108] |
0x00020da4 str r5, [r4, 0x14] | *((r4 + 0x14)) = r5;
0x00020da8 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x00020dac mov r0, r5 | r0 = r5;
0x00020db0 ldr r3, [r3] | r3 = *(0x20eac);
0x00020db4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00020db8 cmp r0, 0 |
0x00020dbc str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00020dc0 bne 0x20dcc |
| while (r0 == 0) {
0x00020dc4 mov r3, 0x1b | r3 = 0x1b;
0x00020dc8 b 0x20d4c | goto label_1;
0x00020dcc ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00020dd0 mov r1, r6 | r1 = r6;
0x00020dd4 bl 0x4f5c | memcpy (r0, r1, r2);
0x00020dd8 mov r3, 3 | r3 = 3;
0x00020ddc str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_2:
0x00020de0 mov r0, 0 | r0 = 0;
0x00020de4 b 0x20d5c | goto label_0;
| label_6:
0x00020de8 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x00020dec ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00020df0 add r1, r3, r1 | r1 = r3 + r1;
0x00020df4 str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x00020df8 bl 0x23998 | r0 = Curl_saferealloc ();
0x00020dfc cmp r0, 0 |
0x00020e00 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00020e04 beq 0x20dc4 |
| }
0x00020e08 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00020e0c mov r1, r6 | r1 = r6;
0x00020e10 sub r3, r3, r5 | r3 -= r5;
0x00020e14 mov r2, r5 | r2 = r5;
0x00020e18 add r0, r0, r3 | r0 += r3;
0x00020e1c bl 0x4f5c | memcpy (r0, r1, r2);
0x00020e20 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x00020e24 cmp r1, 9 |
| if (r1 <= 9) {
0x00020e28 ble 0x20de0 | goto label_2;
| }
0x00020e2c ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00020e30 ldrb r3, [r0] | r3 = *(r0);
0x00020e34 cmp r3, 0x1f |
| if (r3 != 0x1f) {
0x00020e38 bne 0x20d3c | goto label_3;
| }
0x00020e3c ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00020e40 cmp r3, 0x8b |
| if (r3 != 0x8b) {
0x00020e44 bne 0x20d3c | goto label_3;
| }
0x00020e48 add r2, sp, 4 | r2 += var_4h;
0x00020e4c bl 0x2052c | r0 = check_gzip_header_part_0 ();
0x00020e50 cmp r0, 0 |
| if (r0 == 0) {
0x00020e54 beq 0x20e64 | goto label_11;
| }
0x00020e58 cmp r0, 2 |
| if (r0 == 2) {
0x00020e5c beq 0x20de0 | goto label_2;
| }
0x00020e60 b 0x20d3c | goto label_3;
| label_11:
0x00020e64 ldr r3, [pc, 0x48] |
0x00020e68 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00020e6c ldr r3, [sl, r3] | r3 = *((sl + r3));
0x00020e70 ldr r3, [r3] | r3 = *(0x20eb0);
0x00020e74 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00020e78 ldr r2, [sp, 4] | r2 = var_4h;
0x00020e7c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00020e80 add r1, r2, r5 | r1 = r2 + r5;
0x00020e84 sub r1, r1, r3 | r1 -= r3;
0x00020e88 add r1, r6, r1 | r1 = r6 + r1;
0x00020e8c str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x00020e90 sub r3, r3, r2 | r3 -= r2;
0x00020e94 b 0x20d74 | goto label_4;
| label_7:
0x00020e98 str r6, [r1, 0x10] | *((r1 + 0x10)) = r6;
0x00020e9c str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00020ea0 mov r1, r8 | r1 = r8;
0x00020ea4 bl 0x207ac | process_trailer ();
0x00020ea8 b 0x20d5c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0xbaf8 */
| #include <stdint.h>
|
; (fcn) sym.header_append () | void header_append (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0000baf8 push {r4, r5, r6, r7, r8, lr} |
0x0000bafc ldr r3, [pc, 0xd4] | r3 = *(0xbbd4);
0x0000bb00 mov r6, r2 | r6 = r2;
0x0000bb04 ldr r2, [r1, 0x58] | r2 = *((r1 + 0x58));
0x0000bb08 add r3, pc, r3 | r3 = pc + r3;
0x0000bb0c add r2, r6, r2 | r2 = r6 + r2;
0x0000bb10 cmp r2, 0x19000 |
| if (r2 < 0x19000) {
0x0000bb14 bls 0xbb30 | goto label_0;
| }
0x0000bb18 ldr r1, [pc, 0xbc] | r1 = *(0xbbd8);
0x0000bb1c mov r3, 0x19000 | r3 = 0x19000;
0x0000bb20 add r1, pc, r1 | r1 = pc + r1;
0x0000bb24 bl 0x10544 | Curl_failf ();
| do {
0x0000bb28 mov r0, 0x1b | r0 = 0x1b;
0x0000bb2c pop {r4, r5, r6, r7, r8, pc} |
| label_0:
0x0000bb30 ldr r5, [r0, 0x7c8] | r5 = *((r0 + 0x7c8));
0x0000bb34 mov r7, r0 | r7 = r0;
0x0000bb38 cmp r5, r2 |
0x0000bb3c mov r4, r1 | r4 = r1;
0x0000bb40 ldr r8, [r1, 0x54] | r8 = *((r1 + 0x54));
| if (r5 > r2) {
0x0000bb44 bhi 0xbba4 | goto label_1;
| }
0x0000bb48 add r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x0000bb4c lsr r2, r2, 1 | r2 >>= 1;
0x0000bb50 lsl r5, r5, 1 | r5 <<= 1;
0x0000bb54 cmp r5, r2 |
| if (r5 >= r2) {
0x0000bb58 movlo r5, r2 | r5 = r2;
| }
0x0000bb5c ldr r2, [pc, 0x7c] | r2 = *(0xbbdc);
0x0000bb60 ldr r0, [r0, 0x7c4] | r0 = *((r0 + 0x7c4));
0x0000bb64 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x0000bb68 mov r1, r5 | r1 = r5;
0x0000bb6c ldr r3, [r3] | r3 = *(r3);
0x0000bb70 sub r8, r8, r0 | r8 -= r0;
0x0000bb74 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000bb78 cmp r0, 0 |
| if (r0 != 0) {
0x0000bb7c bne 0xbb94 | goto label_2;
| }
0x0000bb80 ldr r1, [pc, 0x5c] | r1 = *(0xbbe0);
0x0000bb84 mov r0, r7 | r0 = r7;
0x0000bb88 add r1, pc, r1 | r1 = pc + r1;
0x0000bb8c bl 0x10544 | Curl_failf ();
0x0000bb90 b 0xbb28 |
| } while (1);
| label_2:
0x0000bb94 str r0, [r7, 0x7c4] | *((r7 + 0x7c4)) = r0;
0x0000bb98 add r0, r0, r8 | r0 += r8;
0x0000bb9c str r5, [r7, 0x7c8] | *((r7 + 0x7c8)) = r5;
0x0000bba0 str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
| label_1:
0x0000bba4 mov r2, r6 | r2 = r6;
0x0000bba8 ldr r1, [r4, 0x60] | r1 = *((r4 + 0x60));
0x0000bbac ldr r0, [r4, 0x54] | r0 = *((r4 + 0x54));
0x0000bbb0 bl 0x4f5c | memcpy (r0, r1, r2);
0x0000bbb4 ldr r2, [r4, 0x54] | r2 = *((r4 + 0x54));
0x0000bbb8 mov r0, 0 | r0 = 0;
0x0000bbbc add r3, r2, r6 | r3 = r2 + r6;
0x0000bbc0 str r3, [r4, 0x54] | *((r4 + 0x54)) = r3;
0x0000bbc4 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x0000bbc8 add r3, r3, r6 | r3 += r6;
0x0000bbcc str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x0000bbd0 strb r0, [r2, r6] | *((r2 + r6)) = r0;
0x0000bbd4 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1ab00 */
| #include <stdint.h>
|
; (fcn) sym.loop () | void loop (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| char * s1;
| int32_t var_4h_2;
| int16_t var_8h_2;
| void * s;
| int32_t var_73h;
| int32_t var_74h;
| int32_t var_75h;
| int8_t var_110h;
| size_t nmeb;
| int32_t var_119h;
| int32_t var_11ah;
| int32_t var_11bh;
| int32_t var_11ch;
| int32_t var_11dh;
| int32_t var_11eh;
| int32_t var_11fh;
| int32_t var_120h;
| int32_t var_121h;
| int32_t var_122h;
| int32_t var_128h;
| int32_t var_12ch;
| r0 = arg1;
| r1 = arg2;
0x0001ab00 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001ab04 sub sp, sp, 0x12c |
0x0001ab08 add r7, sp, 0x18 | r7 += s;
0x0001ab0c mov r4, r0 | r4 = r0;
0x0001ab10 mov r5, r1 | r5 = r1;
0x0001ab14 mov r6, r2 | r6 = r2;
0x0001ab18 mov r1, 0 | r1 = 0;
0x0001ab1c ldr r2, [pc, 0x584] | r2 = *(0x1b0a4);
0x0001ab20 mov r0, r7 | r0 = r7;
0x0001ab24 bl 0x576c | memset (r0, r1, r2);
0x0001ab28 mov r8, 0 | r8 = 0;
| label_4:
0x0001ab2c ldrb r2, [r4] | r2 = *(r4);
0x0001ab30 mov r3, r5 | r3 = r5;
0x0001ab34 cmp r2, 0x3f |
| if (r2 == 0x3f) {
0x0001ab38 beq 0x1ac18 | goto label_15;
| }
| if (r2 > 0x3f) {
0x0001ab3c bhi 0x1ab5c | goto label_16;
| }
0x0001ab40 cmp r2, 0 |
| if (r2 == 0) {
0x0001ab44 beq 0x1ac34 | goto label_17;
| }
0x0001ab48 cmp r2, 0x2a |
| if (r2 == 0x2a) {
0x0001ab4c beq 0x1ab94 | goto label_18;
| }
| do {
0x0001ab50 add r3, r4, 1 | r3 = r4 + 1;
0x0001ab54 ldrb r1, [r5] | r1 = *(r5);
0x0001ab58 b 0x1ab88 | goto label_19;
| label_16:
0x0001ab5c cmp r2, 0x5b |
0x0001ab60 add r3, r4, 1 | r3 = r4 + 1;
| if (r2 == 0x5b) {
0x0001ab64 beq 0x1ac44 | goto label_20;
| }
0x0001ab68 cmp r2, 0x5c |
0x0001ab6c bne 0x1ab50 |
| } while (r2 != 0x5c);
0x0001ab70 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0001ab74 ldrb r1, [r5] | r1 = *(r5);
0x0001ab78 cmp r2, 0 |
| if (r2 == 0) {
0x0001ab7c movne r4, r3 | r4 = r3;
| }
0x0001ab80 ldrb r2, [r4] | r2 = *(r4);
0x0001ab84 add r3, r4, 1 | r3 = r4 + 1;
| label_19:
0x0001ab88 cmp r1, r2 |
| if (r1 == r2) {
0x0001ab8c beq 0x1ac28 | goto label_14;
| }
0x0001ab90 b 0x1abf8 | goto label_3;
| label_18:
0x0001ab94 cmp r6, 0 |
| if (r6 == 0) {
0x0001ab98 beq 0x1abf8 | goto label_3;
| }
| do {
| label_0:
0x0001ab9c ldrb r2, [r4, 1]! | r2 = *((r4 += 1));
0x0001aba0 cmp r2, 0 |
| if (r2 == 0) {
0x0001aba4 bne 0x1abb4 |
| label_2:
0x0001aba8 mov r0, 0 | r0 = 0;
| label_1:
0x0001abac add sp, sp, 0x12c |
0x0001abb0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0001abb4 cmp r2, 0x3f |
| if (r2 != 0x3f) {
0x0001abb8 bne 0x1abd4 | goto label_21;
| }
0x0001abbc add r2, r3, 1 | r2 = r3 + 1;
0x0001abc0 ldrb r3, [r3] | r3 = *(r3);
0x0001abc4 cmp r3, 0 |
| if (r3 == 0) {
0x0001abc8 beq 0x1abf8 | goto label_3;
| }
0x0001abcc mov r3, r2 | r3 = r2;
0x0001abd0 b 0x1ab9c |
| } while (1);
| label_21:
0x0001abd4 cmp r2, 0x2a |
| if (r2 == 0x2a) {
0x0001abd8 beq 0x1ab9c | goto label_0;
| }
0x0001abdc sub r6, r6, 1 | r6--;
0x0001abe0 mov r5, r3 | r5 = r3;
| do {
0x0001abe4 mov r1, r5 | r1 = r5;
0x0001abe8 ldrb r3, [r1] | r3 = *(r1);
0x0001abec add r5, r5, 1 | r5++;
0x0001abf0 cmp r3, 0 |
| if (r3 == 0) {
0x0001abf4 bne 0x1ac00 |
| label_3:
0x0001abf8 mov r0, 1 | r0 = 1;
0x0001abfc b 0x1abac | goto label_1;
| }
0x0001ac00 mov r2, r6 | r2 = r6;
0x0001ac04 mov r0, r4 | r0 = r4;
0x0001ac08 bl 0x1ab00 | r0 = loop ();
0x0001ac0c cmp r0, 0 |
0x0001ac10 bne 0x1abe4 |
| } while (r0 != 0);
0x0001ac14 b 0x1aba8 | goto label_2;
| label_15:
0x0001ac18 ldrb r3, [r5] | r3 = *(r5);
0x0001ac1c cmp r3, 0 |
| if (r3 == 0) {
0x0001ac20 beq 0x1abf8 | goto label_3;
| }
0x0001ac24 add r3, r4, 1 | r3 = r4 + 1;
| label_14:
0x0001ac28 add r5, r5, 1 | r5++;
0x0001ac2c mov r4, r3 | r4 = r3;
0x0001ac30 b 0x1ab2c | goto label_4;
| label_17:
0x0001ac34 ldrb r0, [r5] | r0 = *(r5);
0x0001ac38 adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x0001ac3c movne r0, 1 | r0 = 1;
| }
0x0001ac40 b 0x1abac | goto label_1;
| label_20:
0x0001ac44 ldr r2, [pc, 0x45c] | r2 = *(0x1b0a4);
0x0001ac48 mov r1, 0 | r1 = 0;
0x0001ac4c mov r0, r7 | r0 = r7;
0x0001ac50 str r3, [sp, 8] | var_8h = r3;
0x0001ac54 bl 0x576c | memset (r0, r1, r2);
0x0001ac58 mov sl, 0 | sl = 0;
| label_6:
0x0001ac5c mov sb, sl | sb = sl;
| label_7:
0x0001ac60 ldr r3, [sp, 8] | r3 = var_8h;
0x0001ac64 ldrb r4, [r3] | r4 = *(r3);
| label_5:
0x0001ac68 cmp r4, 0 |
| if (r4 == 0) {
0x0001ac6c beq 0x1abf8 | goto label_3;
| }
0x0001ac70 cmp sb, 1 |
| if (sb == 1) {
0x0001ac74 beq 0x1af3c | goto label_22;
| }
| if (sb <= 1) {
0x0001ac78 blo 0x1aca4 | goto label_23;
| }
0x0001ac7c cmp sb, 2 |
| if (sb != 2) {
0x0001ac80 bne 0x1ac68 | goto label_5;
| }
0x0001ac84 cmp r4, 0x5d |
| if (r4 == 0x5d) {
0x0001ac88 beq 0x1b050 | goto label_24;
| }
0x0001ac8c add r2, sp, 0x128 | r2 += var_128h;
0x0001ac90 add r4, r2, r4 | r4 = r2 + r4;
0x0001ac94 mov r2, 1 | r2 = 1;
0x0001ac98 strb r2, [r4, -0x110] | var_110h = r2;
0x0001ac9c add r3, r3, r2 | r3 += r2;
0x0001aca0 b 0x1af80 | goto label_25;
| label_23:
0x0001aca4 cmp r4, 0x5d |
| if (r4 == 0x5d) {
0x0001aca8 bne 0x1acc8 |
0x0001acac cmp sl, 0 |
| if (sl != 0) {
0x0001acb0 bne 0x1b050 | goto label_24;
| }
0x0001acb4 mov sl, 1 | sl = 1;
0x0001acb8 add r3, r3, sl | r3 += sl;
0x0001acbc strb sl, [sp, 0x75] | var_75h = sl;
0x0001acc0 str r3, [sp, 8] | var_8h = r3;
0x0001acc4 b 0x1ac5c | goto label_6;
| }
0x0001acc8 cmp r4, 0x5b |
| if (r4 != 0x5b) {
0x0001accc bne 0x1aeb8 | goto label_26;
| }
0x0001acd0 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0001acd4 cmp r2, 0x3a |
| if (r2 != 0x3a) {
0x0001acd8 bne 0x1ad34 | goto label_9;
| }
0x0001acdc add r4, r3, 2 | r4 = r3 + 2;
0x0001ace0 mov r3, 0 | r3 = 0;
0x0001ace4 add sl, sp, 0xc | sl += s1;
0x0001ace8 mov fp, r3 |
0x0001acec str r8, [sp, 0xc] | s1 = r8;
0x0001acf0 str r8, [sl, 4] | var_4h_2 = r8;
0x0001acf4 strh r8, [sl, 8] | var_8h_2 = r8;
| label_8:
0x0001acf8 cmp fp, 0xa |
0x0001acfc ldrb r2, [r4], 1 | r2 = *(r4);
| r4++;
| if (fp == 0xa) {
0x0001ad00 beq 0x1ad34 | goto label_9;
| }
0x0001ad04 cmp r3, 1 |
| if (r3 == 1) {
0x0001ad08 beq 0x1ad4c | goto label_27;
| }
0x0001ad0c mov r0, r2 | r0 = r2;
0x0001ad10 str r2, [sp, 4] | var_4h = r2;
0x0001ad14 bl 0x2f9ec | Curl_islower ();
0x0001ad18 ldr r2, [sp, 4] | r2 = var_4h;
0x0001ad1c cmp r0, 0 |
| if (r0 == 0) {
0x0001ad20 strbne r2, [sl, fp] | *((sl + fp)) = r2;
| }
| if (r0 == 0) {
0x0001ad24 movne r3, 0 | r3 = 0;
| }
| if (r0 != 0) {
0x0001ad28 bne 0x1ad54 | goto label_28;
| }
0x0001ad2c cmp r2, 0x3a |
| if (r2 == 0x3a) {
0x0001ad30 beq 0x1aeb0 | goto label_29;
| }
| do {
| label_9:
0x0001ad34 ldr r3, [sp, 8] | r3 = var_8h;
0x0001ad38 mov sl, 1 | sl = 1;
0x0001ad3c add r3, r3, sl | r3 += sl;
0x0001ad40 strb sl, [sp, 0x73] | var_73h = sl;
| label_11:
0x0001ad44 str r3, [sp, 8] | var_8h = r3;
0x0001ad48 b 0x1ac60 | goto label_7;
| label_27:
0x0001ad4c cmp r2, 0x5d |
0x0001ad50 bne 0x1ad34 |
| } while (r2 != 0x5d);
| label_28:
0x0001ad54 mov r0, r3 | r0 = r3;
| label_10:
0x0001ad58 cmp r0, 0 |
0x0001ad5c add fp, fp, 1 |
| if (r0 == 0) {
0x0001ad60 beq 0x1acf8 | goto label_8;
| }
0x0001ad64 ldr r1, [pc, 0x340] | r1 = *(0x1b0a8);
0x0001ad68 mov r0, sl | r0 = sl;
0x0001ad6c add r1, pc, r1 | r1 = pc + r1;
0x0001ad70 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001ad74 cmp r0, 0 |
| if (r0 != 0) {
0x0001ad78 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001ad7c strbeq r3, [sp, 0x11a] | var_11ah = r3;
| }
| if (r0 == 0) {
0x0001ad80 beq 0x1aea4 | goto label_30;
| }
0x0001ad84 ldr r1, [pc, 0x324] | r1 = *(0x1b0ac);
0x0001ad88 mov r0, sl | r0 = sl;
0x0001ad8c add r1, pc, r1 | r1 = pc + r1;
0x0001ad90 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001ad94 cmp r0, 0 |
| if (r0 != 0) {
0x0001ad98 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001ad9c strbeq r3, [sp, 0x119] | var_119h = r3;
| }
| if (r0 == 0) {
0x0001ada0 beq 0x1aea4 | goto label_30;
| }
0x0001ada4 ldr r1, [pc, 0x308] | r1 = *(0x1b0b0);
0x0001ada8 mov r0, sl | r0 = sl;
0x0001adac add r1, pc, r1 | r1 = pc + r1;
0x0001adb0 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001adb4 cmp r0, 0 |
| if (r0 != 0) {
0x0001adb8 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001adbc strbeq r3, [sp, 0x11c] | var_11ch = r3;
| }
| if (r0 == 0) {
0x0001adc0 beq 0x1aea4 | goto label_30;
| }
0x0001adc4 ldr r1, [pc, 0x2ec] | r1 = *(0x1b0b4);
0x0001adc8 mov r0, sl | r0 = sl;
0x0001adcc add r1, pc, r1 | r1 = pc + r1;
0x0001add0 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001add4 cmp r0, 0 |
| if (r0 != 0) {
0x0001add8 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001addc strbeq r3, [sp, 0x11b] | var_11bh = r3;
| }
| if (r0 == 0) {
0x0001ade0 beq 0x1aea4 | goto label_30;
| }
0x0001ade4 ldr r1, [pc, 0x2d0] | r1 = *(0x1b0b8);
0x0001ade8 mov r0, sl | r0 = sl;
0x0001adec add r1, pc, r1 | r1 = pc + r1;
0x0001adf0 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001adf4 cmp r0, 0 |
| if (r0 != 0) {
0x0001adf8 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001adfc strbeq r3, [sp, 0x11d] | var_11dh = r3;
| }
| if (r0 == 0) {
0x0001ae00 beq 0x1aea4 | goto label_30;
| }
0x0001ae04 ldr r1, [pc, 0x2b4] | r1 = *(0x1b0bc);
0x0001ae08 mov r0, sl | r0 = sl;
0x0001ae0c add r1, pc, r1 | r1 = pc + r1;
0x0001ae10 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001ae14 cmp r0, 0 |
| if (r0 != 0) {
0x0001ae18 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001ae1c strbeq r3, [sp, 0x120] | var_120h = r3;
| }
| if (r0 == 0) {
0x0001ae20 beq 0x1aea4 | goto label_30;
| }
0x0001ae24 ldr r1, [pc, 0x298] | r1 = *(0x1b0c0);
0x0001ae28 mov r0, sl | r0 = sl;
0x0001ae2c add r1, pc, r1 | r1 = pc + r1;
0x0001ae30 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001ae34 cmp r0, 0 |
| if (r0 != 0) {
0x0001ae38 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001ae3c strbeq r3, [sp, 0x121] | var_121h = r3;
| }
| if (r0 == 0) {
0x0001ae40 beq 0x1aea4 | goto label_30;
| }
0x0001ae44 ldr r1, [pc, 0x27c] | r1 = *(0x1b0c4);
0x0001ae48 mov r0, sl | r0 = sl;
0x0001ae4c add r1, pc, r1 | r1 = pc + r1;
0x0001ae50 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001ae54 cmp r0, 0 |
| if (r0 != 0) {
0x0001ae58 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001ae5c strbeq r3, [sp, 0x11e] | var_11eh = r3;
| }
| if (r0 == 0) {
0x0001ae60 beq 0x1aea4 | goto label_30;
| }
0x0001ae64 ldr r1, [pc, 0x260] | r1 = *(0x1b0c8);
0x0001ae68 mov r0, sl | r0 = sl;
0x0001ae6c add r1, pc, r1 | r1 = pc + r1;
0x0001ae70 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001ae74 cmp r0, 0 |
| if (r0 != 0) {
0x0001ae78 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001ae7c strbeq r3, [sp, 0x122] | var_122h = r3;
| }
| if (r0 == 0) {
0x0001ae80 beq 0x1aea4 | goto label_30;
| }
0x0001ae84 ldr r1, [pc, 0x244] | r1 = *(0x1b0cc);
0x0001ae88 mov r0, sl | r0 = sl;
0x0001ae8c add r1, pc, r1 | r1 = pc + r1;
0x0001ae90 bl 0x5a30 | r0 = strcmp (r0, r1);
0x0001ae94 cmp r0, 0 |
| if (r0 != 0) {
0x0001ae98 bne 0x1ad34 | goto label_9;
| }
0x0001ae9c mov r3, 1 | r3 = 1;
0x0001aea0 strb r3, [sp, 0x11f] | var_11fh = r3;
| label_30:
0x0001aea4 str r4, [sp, 8] | var_8h = r4;
| label_12:
0x0001aea8 mov sl, 1 | sl = 1;
0x0001aeac b 0x1ac60 | goto label_7;
| label_29:
0x0001aeb0 mov r3, 1 | r3 = 1;
0x0001aeb4 b 0x1ad58 | goto label_10;
| label_26:
0x0001aeb8 cmp r4, 0x21 |
0x0001aebc cmpne r4, 0x5e | __asm ("cmpne r4, 0x5e");
| if (r4 != 0x21) {
0x0001aec0 moveq r1, 1 | r1 = 1;
| }
| if (r4 == 0x21) {
0x0001aec4 movne r1, 0 | r1 = 0;
| }
| if (r4 == 0x21) {
0x0001aec8 bne 0x1af08 |
0x0001aecc cmp sl, 0 |
| if (sl == 0) {
0x0001aed0 addne r1, sp, 0x128 | r1 += var_128h;
| }
0x0001aed4 mov r2, 1 | r2 = 1;
| if (sl == 0) {
0x0001aed8 addne r4, r1, r4 | r4 = r1 + r4;
| }
| if (sl == 0) {
0x0001aedc strbne r2, [r4, -0x110] | *((r4 - 0x110)) = r2;
| }
| if (sl == 0) {
0x0001aee0 bne 0x1af00 |
0x0001aee4 ldrb r0, [sp, 0x118] | r0 = nmeb;
0x0001aee8 cmp r0, 0 |
| if (r0 == 0) {
0x0001aeec addne r0, sp, 0x128 | r0 += var_128h;
| }
| if (r0 == 0) {
0x0001aef0 addne r4, r0, r4 | r4 = r0 + r4;
| }
| if (r0 == 0) {
0x0001aef4 movne sl, r1 | sl = r1;
| }
| if (r0 == 0) {
0x0001aef8 strbne r2, [r4, -0x110] | *((r4 - 0x110)) = r2;
| }
| if (r0 == 0) {
0x0001aefc strbeq r2, [sp, 0x118] | nmeb = r2;
| goto label_31;
| }
| }
| label_31:
0x0001af00 add r3, r3, 1 | r3++;
0x0001af04 b 0x1ad44 | goto label_11;
| }
0x0001af08 cmp r4, 0x5c |
| if (r4 != 0x5c) {
0x0001af0c bne 0x1af2c | goto label_32;
| }
0x0001af10 add r2, r3, 1 | r2 = r3 + 1;
0x0001af14 str r2, [sp, 8] | var_8h = r2;
0x0001af18 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0001af1c cmp r3, 0 |
| if (r3 != 0) {
0x0001af20 moveq sl, 1 | sl = 1;
| }
| if (r3 == 0) {
0x0001af24 strbeq sl, [sp, 0x74] | var_74h = sl;
| goto label_33;
| }
| if (r3 == 0) {
| label_33:
0x0001af28 beq 0x1ac60 | goto label_7;
| }
| label_32:
0x0001af2c mov r1, r7 | r1 = r7;
0x0001af30 add r0, sp, 8 | r0 += var_8h;
0x0001af34 bl 0x1aa4c | setcharorrange ();
0x0001af38 b 0x1aea8 | goto label_12;
| label_22:
0x0001af3c cmp r4, 0x5b |
| if (r4 != 0x5b) {
0x0001af40 addeq r3, r3, 1 | r3++;
| }
| if (r4 != 0x5b) {
0x0001af44 strbeq sb, [sp, 0x73] | var_73h = sb;
| }
| if (r4 != 0x5b) {
0x0001af48 streq r3, [sp, 8] | var_8h = r3;
| }
| if (r4 == 0x5b) {
0x0001af4c moveq sb, 2 | sb = 2;
| goto label_34;
| }
| if (r4 == 0x5b) {
| label_34:
0x0001af50 beq 0x1ac60 | goto label_7;
| }
0x0001af54 cmp r4, 0x5d |
| if (r4 == 0x5d) {
0x0001af58 beq 0x1b050 | goto label_24;
| }
0x0001af5c mov r0, r4 | r0 = r4;
0x0001af60 bl 0x2f974 | r0 = Curl_isprint ();
0x0001af64 cmp r0, 0 |
| if (r0 == 0) {
0x0001af68 beq 0x1abf8 | goto label_3;
| }
0x0001af6c add r3, sp, 0x128 | r3 += var_128h;
0x0001af70 add r4, r3, r4 | r4 = r3 + r4;
0x0001af74 ldr r3, [sp, 8] | r3 = var_8h;
0x0001af78 strb sb, [r4, -0x110] | var_110h = sb;
0x0001af7c add r3, r3, 1 | r3++;
| label_25:
0x0001af80 str r3, [sp, 8] | var_8h = r3;
0x0001af84 mov sb, 0 | sb = 0;
0x0001af88 b 0x1ac60 | goto label_7;
| label_13:
0x0001af8c ldrb r3, [sp, 0x11c] | r3 = var_11ch;
0x0001af90 cmp r3, 0 |
| if (r3 != 0) {
0x0001af94 beq 0x1afa0 |
0x0001af98 bl 0x2f99c | Curl_isalpha ();
0x0001af9c b 0x1b084 | goto label_35;
| }
0x0001afa0 ldrb r3, [sp, 0x11a] | r3 = var_11ah;
0x0001afa4 cmp r3, 0 |
| if (r3 != 0) {
0x0001afa8 beq 0x1afb4 |
0x0001afac bl 0x2f8c0 | Curl_isdigit ();
0x0001afb0 b 0x1b084 | goto label_35;
| }
0x0001afb4 ldrb r3, [sp, 0x11b] | r3 = var_11bh;
0x0001afb8 cmp r3, 0 |
| if (r3 != 0) {
0x0001afbc beq 0x1afc8 |
0x0001afc0 bl 0x2f910 | Curl_isxdigit ();
0x0001afc4 b 0x1b084 | goto label_35;
| }
0x0001afc8 ldrb r3, [sp, 0x11d] | r3 = var_11dh;
0x0001afcc cmp r3, 0 |
| if (r3 != 0) {
0x0001afd0 beq 0x1afdc |
0x0001afd4 bl 0x2f974 | Curl_isprint ();
0x0001afd8 b 0x1b084 | goto label_35;
| }
0x0001afdc ldrb r3, [sp, 0x121] | r3 = var_121h;
0x0001afe0 cmp r3, 0 |
| if (r3 != 0) {
0x0001afe4 beq 0x1aff0 |
0x0001afe8 bl 0x2f898 | Curl_isspace ();
0x0001afec b 0x1b084 | goto label_35;
| }
0x0001aff0 ldrb r3, [sp, 0x122] | r3 = var_122h;
0x0001aff4 cmp r3, 0 |
| if (r3 != 0) {
0x0001aff8 beq 0x1b004 |
0x0001affc bl 0x2f9c4 | Curl_isupper ();
0x0001b000 b 0x1b084 | goto label_35;
| }
0x0001b004 ldrb r3, [sp, 0x11f] | r3 = var_11fh;
0x0001b008 cmp r3, 0 |
| if (r3 != 0) {
0x0001b00c beq 0x1b018 |
0x0001b010 bl 0x2f9ec | Curl_islower ();
0x0001b014 b 0x1b084 | goto label_35;
| }
0x0001b018 ldrb r3, [sp, 0x11e] | r3 = var_11eh;
0x0001b01c cmp r3, 0 |
| if (r3 != 0) {
0x0001b020 beq 0x1b038 |
0x0001b024 cmp r0, 9 |
0x0001b028 cmpne r0, 0x20 | __asm ("cmpne r0, 0x20");
| if (r0 != 9) {
0x0001b02c moveq r0, 1 | r0 = 1;
| }
| if (r0 == 9) {
0x0001b030 movne r0, 0 | r0 = 0;
| }
0x0001b034 b 0x1b084 | goto label_35;
| }
0x0001b038 ldrb r3, [sp, 0x120] | r3 = var_120h;
0x0001b03c cmp r3, 0 |
| if (r3 != 0) {
0x0001b040 moveq r0, r3 | r0 = r3;
| }
| if (r3 == 0) {
0x0001b044 beq 0x1b084 | goto label_35;
| }
0x0001b048 bl 0x2f938 | Curl_isgraph ();
0x0001b04c b 0x1b084 | goto label_35;
| label_24:
0x0001b050 ldrb r0, [r5] | r0 = *(r5);
0x0001b054 cmp r0, 0 |
| if (r0 == 0) {
0x0001b058 beq 0x1abf8 | goto label_3;
| }
0x0001b05c add r3, sp, 0x128 | r3 += var_128h;
0x0001b060 add r3, r3, r0 | r3 += r0;
0x0001b064 ldrb r3, [r3, -0x110] | r3 = var_110h;
0x0001b068 cmp r3, 0 |
| if (r3 == 0) {
0x0001b06c movne r0, 1 | r0 = 1;
| }
| if (r3 != 0) {
0x0001b070 bne 0x1b084 | goto label_35;
| }
0x0001b074 ldrb r3, [sp, 0x119] | r3 = var_119h;
0x0001b078 cmp r3, 0 |
| if (r3 == 0) {
0x0001b07c beq 0x1af8c | goto label_13;
| }
0x0001b080 bl 0x2f8e8 | Curl_isalnum ();
| label_35:
0x0001b084 ldrb r3, [sp, 0x118] | r3 = nmeb;
0x0001b088 cmp r3, 0 |
0x0001b08c clzne r0, r0 | __asm ("clzne r0, r0");
| if (r3 == 0) {
0x0001b090 lsrne r0, r0, 5 | r0 >>= 5;
| }
0x0001b094 cmp r0, 0 |
| if (r0 == 0) {
0x0001b098 beq 0x1abf8 | goto label_3;
| }
0x0001b09c ldr r3, [sp, 8] | r3 = var_8h;
0x0001b0a0 add r3, r3, 1 | r3++;
0x0001b0a4 b 0x1ac28 | goto label_14;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2ae28 */
| #include <stdint.h>
|
; (fcn) sym.mime_mem_seek () | void mime_mem_seek (int32_t arg_ch, int32_t arg1) {
| r0 = arg1;
0x0002ae28 push {r4, r5, lr} |
0x0002ae2c ldr r1, [sp, 0xc] | r1 = *(arg_ch);
0x0002ae30 cmp r1, 1 |
| if (r1 == 1) {
0x0002ae34 beq 0x2ae68 | goto label_1;
| }
0x0002ae38 cmp r1, 2 |
| if (r1 == 2) {
0x0002ae3c beq 0x2ae78 | goto label_2;
| }
| do {
| label_0:
0x0002ae40 cmp r2, 0 |
0x0002ae44 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 < 0) {
0x0002ae48 blt 0x2ae88 | goto label_3;
| }
0x0002ae4c ldrd r4, r5, [r0, 0x40] | __asm ("ldrd r4, r5, [arg_chx40]");
0x0002ae50 cmp r4, r2 |
0x0002ae54 sbcs r1, r5, r3 | __asm ("sbcs r1, r5, r3");
| if (r4 < r2) {
0x0002ae58 blt 0x2ae88 | goto label_3;
| }
0x0002ae5c str r2, [r0, 0x54] | *(arg_chx54) = r2;
0x0002ae60 mov r0, 0 | r0 = 0;
0x0002ae64 pop {r4, r5, pc} |
| label_1:
0x0002ae68 ldr r1, [r0, 0x54] | r1 = *(arg_chx54);
0x0002ae6c adds r2, r2, r1 | r2 += r1;
0x0002ae70 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0002ae74 b 0x2ae40 |
| } while (1);
| label_2:
0x0002ae78 ldrd r4, r5, [r0, 0x40] | __asm ("ldrd r4, r5, [arg_chx40]");
0x0002ae7c adds r2, r2, r4 | r2 += r4;
0x0002ae80 adc r3, r3, r5 | __asm ("adc r3, r3, r5");
0x0002ae84 b 0x2ae40 | goto label_0;
| label_3:
0x0002ae88 mov r0, 1 | r0 = 1;
0x0002ae8c pop {r4, r5, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2b8ac */
| #include <stdint.h>
|
; (fcn) sym.mime_subparts_read () | void mime_subparts_read (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
0x0002b8ac push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002b8b0 ldr sb, [pc, 0x188] | sb = *(0x2ba3c);
0x0002b8b4 ldr sl, [pc, 0x188] | sl = *(0x2ba40);
0x0002b8b8 ldr fp, [pc, 0x188] | fp = *(0x2ba44);
0x0002b8bc sub sp, sp, 0x14 |
0x0002b8c0 mov r8, r0 | r8 = r0;
0x0002b8c4 mov r7, r2 | r7 = r2;
0x0002b8c8 mov r4, r3 | r4 = r3;
0x0002b8cc mov r6, 0 | r6 = 0;
0x0002b8d0 add sb, pc, sb | sb = pc + sb;
0x0002b8d4 add sl, pc, sl | sl = pc + sl;
0x0002b8d8 add fp, pc, fp |
| do {
0x0002b8dc cmp r7, 0 |
| if (r7 == 0) {
0x0002b8e0 beq 0x2ba34 | goto label_3;
| }
0x0002b8e4 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0002b8e8 ldr r5, [r4, 0x18] | r5 = *((r4 + 0x18));
0x0002b8ec cmp r3, 8 |
| if (r3 > 8) {
| /* switch table (9 cases) at 0x2b8f8 */
0x0002b8f0 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0002b8f4 b 0x2b934 | goto label_1;
0x0002b8f8 b 0x2b91c | goto label_4;
0x0002b8fc b 0x2b934 | goto label_1;
0x0002b900 b 0x2b934 | goto label_1;
0x0002b904 b 0x2b934 | goto label_1;
0x0002b908 b 0x2b91c | goto label_4;
0x0002b90c b 0x2b93c | goto label_5;
0x0002b910 b 0x2b980 | goto label_6;
0x0002b914 b 0x2b9d0 | goto label_7;
0x0002b918 b 0x2ba34 | goto label_3;
| label_4:
0x0002b91c ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0002b920 mov r2, 5 | r2 = 5;
0x0002b924 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0002b928 mov r3, 2 | r3 = 2;
0x0002b92c str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x0002b930 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_1:
0x0002b934 mov r0, 0 | r0 = 0;
0x0002b938 b 0x2b970 | goto label_0;
| label_5:
0x0002b93c ldr r3, [pc, 0x108] | r3 = *(0x2ba48);
0x0002b940 mov r2, r7 | r2 = r7;
0x0002b944 add r3, pc, r3 | r3 = pc + r3;
0x0002b948 str r3, [sp, 4] | var_4h = r3;
0x0002b94c mov r3, 4 | r3 = 4;
0x0002b950 str r3, [sp] | *(sp) = r3;
0x0002b954 mov r1, r8 | r1 = r8;
0x0002b958 mov r3, fp | r3 = fp;
0x0002b95c add r0, r4, 0x1c | r0 = r4 + 0x1c;
0x0002b960 bl 0x2b308 | r0 = readback_bytes_isra_1 ();
0x0002b964 cmp r0, 0 |
| if (r0 != 0) {
0x0002b968 moveq r3, 6 | r3 = 6;
| }
| if (r0 == 0) {
0x0002b96c beq 0x2b9c0 | goto label_8;
| }
| label_0:
0x0002b970 add r6, r6, r0 | r6 += r0;
0x0002b974 add r8, r8, r0 | r8 += r0;
0x0002b978 sub r7, r7, r0 | r7 -= r0;
0x0002b97c b 0x2b8dc |
| } while (1);
| label_6:
0x0002b980 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0002b984 mov r0, r3 | r0 = r3;
0x0002b988 str r3, [sp, 0xc] | var_ch = r3;
0x0002b98c bl 0x5250 | strlen (r0);
0x0002b990 cmp r5, 0 |
| if (r5 == 0) {
0x0002b994 movne r2, sb | r2 = sb;
| }
| if (r5 != 0) {
0x0002b998 moveq r2, sl | r2 = sl;
| }
0x0002b99c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002b9a0 mov r1, r8 | r1 = r8;
0x0002b9a4 stm sp, {r0, r2} | *(sp) = r0;
| *((sp + 4)) = r2;
0x0002b9a8 mov r2, r7 | r2 = r7;
0x0002b9ac add r0, r4, 0x1c | r0 = r4 + 0x1c;
0x0002b9b0 bl 0x2b308 | r0 = readback_bytes_isra_1 ();
0x0002b9b4 cmp r0, 0 |
| if (r0 != 0) {
0x0002b9b8 bne 0x2b970 | goto label_0;
| }
0x0002b9bc mov r3, 7 | r3 = 7;
| label_8:
0x0002b9c0 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x0002b9c4 str r5, [r4, 0x18] | *((r4 + 0x18)) = r5;
| label_2:
0x0002b9c8 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x0002b9cc b 0x2b970 | goto label_0;
| label_7:
0x0002b9d0 cmp r5, 0 |
| if (r5 != 0) {
0x0002b9d4 moveq r3, 8 | r3 = 8;
| }
| if (r5 != 0) {
0x0002b9d8 streq r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| }
| if (r5 != 0) {
0x0002b9dc streq r5, [r4, 0x18] | *((r4 + 0x18)) = r5;
| }
| if (r5 == 0) {
0x0002b9e0 streq r5, [r4, 0x1c] | *((r4 + 0x1c)) = r5;
| goto label_9;
| }
| if (r5 == 0) {
| label_9:
0x0002b9e4 beq 0x2b934 | goto label_1;
| }
0x0002b9e8 mov r2, r7 | r2 = r7;
0x0002b9ec mov r1, r8 | r1 = r8;
0x0002b9f0 mov r0, r5 | r0 = r5;
0x0002b9f4 bl 0x2b50c | r0 = readback_part ();
0x0002b9f8 cmp r0, 0x10000001 |
| if (r0 > 0x10000001) {
0x0002b9fc bhi 0x2ba24 | goto label_10;
| }
0x0002ba00 cmp r0, 0x10000000 |
| if (r0 >= 0x10000000) {
0x0002ba04 bhs 0x2ba2c | goto label_11;
| }
0x0002ba08 cmp r0, 0 |
| if (r0 != 0) {
0x0002ba0c bne 0x2b970 | goto label_0;
| }
0x0002ba10 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002ba14 mov r2, 5 | r2 = 5;
0x0002ba18 str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x0002ba1c str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0002ba20 b 0x2b9c8 | goto label_2;
| label_10:
0x0002ba24 cmn r0, 1 |
| if (r0 != 1) {
0x0002ba28 bne 0x2b970 | goto label_0;
| }
| label_11:
0x0002ba2c cmp r6, 0 |
| if (r6 != 0) {
0x0002ba30 moveq r6, r0 | r6 = r0;
| }
| label_3:
0x0002ba34 mov r0, r6 | r0 = r6;
0x0002ba38 add sp, sp, 0x14 |
0x0002ba3c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1edc0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.multi_runsingle () | void multi_runsingle (int32_t arg_0h, int32_t arg_252h, int32_t arg_284h, int32_t arg1) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_20h_2;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_39h;
| int32_t var_3ah;
| int32_t var_3bh;
| int32_t var_3ch;
| int32_t var_3dh;
| int32_t var_3eh;
| int32_t var_3fh;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| r0 = arg1;
0x0001edc0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001edc4 sub sp, sp, 0x4c |
0x0001edc8 add sl, sp, 0x30 | sl += var_30h;
0x0001edcc stm sl, {r1, r2} | *(sl) = r1;
| *((sl + 4)) = r2;
0x0001edd0 ldr r2, [pc, 0xf28] | r2 = *(0x1fcfc);
0x0001edd4 mov r6, 0 | r6 = 0;
0x0001edd8 add r2, pc, r2 | r2 = pc + r2;
0x0001eddc subs r4, r3, 0 | r4 = r3 - 0;
0x0001ede0 str r2, [sp, 0x28] | var_28h = r2;
0x0001ede4 strb r6, [sp, 0x3b] | var_3bh = r6;
0x0001ede8 strb r6, [sp, 0x3c] | var_3ch = r6;
0x0001edec strb r6, [sp, 0x3d] | var_3dh = r6;
| if (r4 == r3) {
0x0001edf0 beq 0x1fed0 | goto label_27;
| }
0x0001edf4 add r2, r4, 0x4000 | r2 = r4 + 0x4000;
0x0001edf8 ldr r1, [r2, 0xb10] | r1 = *((r2 + 0xb10));
0x0001edfc ldr r3, [pc, 0xf00] | r3 = *(0x1fd00);
0x0001ee00 cmp r1, r3 |
| if (r1 != r3) {
0x0001ee04 bne 0x1fed0 | goto label_27;
| }
0x0001ee08 ldr r3, [pc, 0xef8] | r3 = *(0x1fd04);
0x0001ee0c mov r7, r0 | r7 = r0;
0x0001ee10 add r3, pc, r3 | r3 = pc + r3;
0x0001ee14 str r2, [sp, 0x1c] | var_1ch = r2;
0x0001ee18 str r3, [sp, 0x2c] | var_2ch = r3;
| do {
| label_4:
0x0001ee1c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001ee20 ldrb sb, [r3, 0x9dd] | sb = *((r3 + 0x9dd));
0x0001ee24 cmp sb, 0 |
| if (sb == 0) {
0x0001ee28 beq 0x1ee84 | goto label_28;
| }
0x0001ee2c ldr r1, [pc, 0xed8] | r1 = *(0x1fd08);
0x0001ee30 ldr r3, [r3, 0x9ec] | r3 = *((r3 + 0x9ec));
0x0001ee34 mov r2, r4 | r2 = r4;
0x0001ee38 add r1, pc, r1 | r1 = pc + r1;
0x0001ee3c mov r0, r4 | r0 = r4;
0x0001ee40 bl 0x104cc | Curl_infof ();
0x0001ee44 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001ee48 cmp r3, 0x10 |
| if (r3 <= 0x10) {
0x0001ee4c movhi r5, 0 | r5 = 0;
| }
| if (r3 <= 0x10) {
0x0001ee50 bhi 0x1ee68 |
0x0001ee54 mov r1, 2 | r1 = 2;
0x0001ee58 mov r0, r4 | r0 = r4;
0x0001ee5c bl 0x1d3c0 | mstate ();
0x0001ee60 mov r6, 0 | r6 = 0;
0x0001ee64 mvn r5, 0 | r5 = ~0;
| }
0x0001ee68 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0001ee6c mov r3, 0 | r3 = 0;
0x0001ee70 strb r3, [r2, 0x9dd] | *((r2 + 0x9dd)) = r3;
0x0001ee74 str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_3:
0x0001ee78 cmn r5, 1 |
| if (r5 != 1) {
0x0001ee7c bne 0x1f16c | goto label_29;
| }
0x0001ee80 b 0x1ee1c |
| } while (1);
| label_28:
0x0001ee84 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001ee88 cmp r3, 0 |
| if (r3 == 0) {
0x0001ee8c bne 0x1eeb8 |
0x0001ee90 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0001ee94 sub r3, r2, 3 | r3 = r2 - 3;
0x0001ee98 cmp r3, 0xc |
| if (r3 > 0xc) {
0x0001ee9c bhi 0x1eeb8 | goto label_30;
| }
0x0001eea0 ldr r1, [pc, 0xe68] | r1 = *(0x1fd0c);
0x0001eea4 mov r0, r4 | r0 = r4;
0x0001eea8 add r1, pc, r1 | r1 = pc + r1;
0x0001eeac bl 0x10544 | Curl_failf ();
| label_1:
0x0001eeb0 mov r0, 4 | r0 = 4;
0x0001eeb4 b 0x1fe60 | goto label_24;
| }
| label_30:
0x0001eeb8 ldrb r3, [r7, 0x7c] | r3 = *((r7 + 0x7c));
0x0001eebc mov r2, 0 | r2 = 0;
0x0001eec0 cmp r3, r2 |
0x0001eec4 strb r2, [r7, 0x7c] | *((r7 + 0x7c)) = r2;
| if (r3 != r2) {
0x0001eec8 beq 0x1eed4 |
0x0001eecc mov r0, r7 | r0 = r7;
0x0001eed0 bl 0x1e714 | process_pending_handles ();
| }
0x0001eed4 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001eed8 cmp r3, 0 |
| if (r3 == 0) {
0x0001eedc beq 0x1f01c | goto label_31;
| }
0x0001eee0 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0001eee4 sub r1, r2, 3 | r1 = r2 - 3;
0x0001eee8 cmp r1, 0xd |
| if (r1 > 0xd) {
0x0001eeec strls r4, [r3] | *(r3) = r4;
| }
0x0001eef0 sub r3, r2, 2 | r3 = r2 - 2;
0x0001eef4 cmp r3, 0xe |
| if (r3 > 0xe) {
0x0001eef8 bhi 0x1f01c | goto label_31;
| }
0x0001eefc cmp r2, 8 |
| if (r2 <= 8) {
0x0001ef00 movhi r2, 0 | r2 = 0;
| }
| if (r2 > 8) {
0x0001ef04 movls r2, 1 | r2 = 1;
| }
0x0001ef08 mov r1, sl | r1 = sl;
0x0001ef0c mov r0, r4 | r0 = r4;
0x0001ef10 bl 0x1b738 | r0 = Curl_timeleft ();
0x0001ef14 cmp r0, 0 |
| if (r0 >= 0) {
0x0001ef18 bge 0x1f01c | goto label_31;
| }
0x0001ef1c ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001ef20 add ip, r4, 0x700 |
0x0001ef24 cmp r3, 3 |
0x0001ef28 add ip, ip, 8 |
| if (r3 != 3) {
0x0001ef2c bne 0x1ef88 | goto label_32;
| }
0x0001ef30 ldm ip, {r2, r3} | r2 = *(ip);
| r3 = *((ip + 4));
0x0001ef34 ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x0001ef38 bl 0x6a20 | Curl_timediff ();
0x0001ef3c ldr r1, [pc, 0xdd0] | r1 = *(0x1fd10);
0x0001ef40 add r1, pc, r1 | r1 = pc + r1;
0x0001ef44 mov r2, r0 | r2 = r0;
| do {
0x0001ef48 mov r0, r4 | r0 = r4;
0x0001ef4c bl 0x10544 | Curl_failf ();
| label_0:
0x0001ef50 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001ef54 cmp r3, 9 |
| if (r3 >= 9) {
0x0001ef58 bls 0x1ef6c |
0x0001ef5c mov r1, 2 | r1 = 2;
0x0001ef60 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001ef64 bl 0x1cb34 | Curl_conncontrol ();
0x0001ef68 mov sb, 1 | sb = 1;
| }
0x0001ef6c mov r2, 1 | r2 = 1;
0x0001ef70 mov r1, 0x1c | r1 = 0x1c;
0x0001ef74 add r0, r4, 8 | r0 = r4 + 8;
0x0001ef78 bl 0x1e75c | multi_done ();
0x0001ef7c mov r6, 0x1c | r6 = 0x1c;
| label_2:
0x0001ef80 mov r5, 0 | r5 = 0;
0x0001ef84 b 0x1f0a4 | goto label_6;
| label_32:
0x0001ef88 cmp r3, 4 |
| if (r3 != 4) {
0x0001ef8c bne 0x1efac | goto label_33;
| }
0x0001ef90 ldm ip, {r2, r3} | r2 = *(ip);
| r3 = *((ip + 4));
0x0001ef94 ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x0001ef98 bl 0x6a20 | Curl_timediff ();
0x0001ef9c ldr r1, [pc, 0xd74] | r1 = *(0x1fd14);
0x0001efa0 add r1, pc, r1 | r1 = pc + r1;
0x0001efa4 mov r2, r0 | r2 = r0;
0x0001efa8 b 0x1ef48 |
| } while (1);
| label_33:
0x0001efac ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0001efb0 mvn r1, 0 | r1 = ~0;
0x0001efb4 cmp r3, r1 |
0x0001efb8 mvn r0, 0 | r0 = ~0;
0x0001efbc cmpeq r2, r0 | __asm ("cmpeq r2, r0");
0x0001efc0 ldm ip, {r2, r3} | r2 = *(ip);
| r3 = *((ip + 4));
0x0001efc4 ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
| if (r3 != r1) {
0x0001efc8 beq 0x1eff8 |
0x0001efcc bl 0x6a20 | Curl_timediff ();
0x0001efd0 ldrd r2, r3, [r4, 0x70] | __asm ("ldrd r2, r3, [r4, 0x70]");
0x0001efd4 ldr r1, [pc, 0xd40] | r1 = *(0x1fd18);
0x0001efd8 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x0001efdc ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x0001efe0 add r1, pc, r1 | r1 = pc + r1;
0x0001efe4 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001efe8 mov r2, r0 | r2 = r0;
0x0001efec mov r0, r4 | r0 = r4;
0x0001eff0 bl 0x10544 | Curl_failf ();
0x0001eff4 b 0x1ef50 | goto label_0;
| }
0x0001eff8 bl 0x6a20 | Curl_timediff ();
0x0001effc ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x0001f000 ldr r1, [pc, 0xd18] | r1 = *(0x1fd1c);
0x0001f004 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001f008 add r1, pc, r1 | r1 = pc + r1;
0x0001f00c mov r2, r0 | r2 = r0;
0x0001f010 mov r0, r4 | r0 = r4;
0x0001f014 bl 0x10544 | Curl_failf ();
0x0001f018 b 0x1ef50 | goto label_0;
| label_31:
0x0001f01c ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001f020 cmp r3, 0x12 |
| if (r3 > 0x12) {
| /* switch table (19 cases) at 0x1f02c */
0x0001f024 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0001f028 b 0x1eeb0 | goto label_1;
0x0001f02c b 0x1f078 | goto label_34;
0x0001f030 b 0x1ef80 | goto label_2;
0x0001f034 b 0x1f180 | goto label_35;
0x0001f038 b 0x1f258 | goto label_36;
0x0001f03c b 0x1f3f0 | goto label_37;
0x0001f040 b 0x1f37c | goto label_38;
0x0001f044 b 0x1f474 | goto label_39;
0x0001f048 b 0x1f4e8 | goto label_40;
0x0001f04c b 0x1f528 | goto label_41;
0x0001f050 b 0x1f548 | goto label_42;
0x0001f054 b 0x1f80c | goto label_43;
0x0001f058 b 0x1f854 | goto label_44;
0x0001f05c b 0x1f8d0 | goto label_45;
0x0001f060 b 0x1f954 | goto label_46;
0x0001f064 b 0x1fa7c | goto label_47;
0x0001f068 b 0x1f970 | goto label_48;
0x0001f06c b 0x1fdb4 | goto label_49;
0x0001f070 b 0x1fe44 | goto label_50;
0x0001f074 b 0x1fe58 | goto label_51;
| label_34:
0x0001f078 mov r0, r4 | r0 = r4;
0x0001f07c bl 0x193b0 | r0 = Curl_pretransfer ();
0x0001f080 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0001f084 bne 0x1ef80 | goto label_2;
| }
0x0001f088 mov r1, 2 | r1 = 2;
0x0001f08c mov r0, r4 | r0 = r4;
0x0001f090 bl 0x1d3c0 | mstate ();
0x0001f094 mov r1, 1 | r1 = 1;
0x0001f098 mov r0, r4 | r0 = r4;
0x0001f09c bl 0x7f7c | Curl_pgrsTime ();
| label_5:
0x0001f0a0 mvn r5, 0 | r5 = ~0;
| label_6:
0x0001f0a4 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001f0a8 cmp r3, 0x10 |
| if (r3 <= 0x10) {
0x0001f0ac bhi 0x1f130 |
0x0001f0b0 cmp r6, 0 |
| if (r6 == 0) {
0x0001f0b4 beq 0x1fe88 | goto label_52;
| }
0x0001f0b8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001f0bc mov r8, 0 | r8 = 0;
0x0001f0c0 mov r0, r7 | r0 = r7;
0x0001f0c4 strb r8, [r3, 0x9dd] | *((r3 + 0x9dd)) = r8;
0x0001f0c8 bl 0x1e714 | process_pending_handles ();
0x0001f0cc ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f0d0 cmp r0, r8 |
| if (r0 == r8) {
0x0001f0d4 beq 0x1fe70 | goto label_53;
| }
0x0001f0d8 bl 0x29400 | Curl_pipeline_leave_write ();
0x0001f0dc ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f0e0 bl 0x2940c | Curl_pipeline_leave_read ();
0x0001f0e4 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001f0e8 mov r0, r4 | r0 = r4;
0x0001f0ec add r1, r1, 0x2c4 | r1 += 0x2c4;
0x0001f0f0 bl 0x11498 | Curl_removeHandleFromPipeline ();
0x0001f0f4 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001f0f8 mov r0, r4 | r0 = r4;
0x0001f0fc add r1, r1, 0x2d4 | r1 += 0x2d4;
0x0001f100 bl 0x11498 | Curl_removeHandleFromPipeline ();
0x0001f104 cmp sb, r8 |
| if (sb != r8) {
0x0001f108 beq 0x1f124 |
0x0001f10c sub r1, r6, 0x1c | r1 = r6 - 0x1c;
0x0001f110 clz r1, r1 | r1 &= r1;
0x0001f114 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f118 lsr r1, r1, 5 | r1 >>= 5;
0x0001f11c bl 0x113b4 | Curl_disconnect ();
0x0001f120 str r8, [r4, 8] | *((r4 + 8)) = r8;
| }
| label_22:
0x0001f124 mov r1, 0x11 | r1 = 0x11;
0x0001f128 mov r0, r4 | r0 = r4;
0x0001f12c bl 0x1d3c0 | mstate ();
| }
| label_23:
0x0001f130 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001f134 cmp r3, 0x11 |
| if (r3 != 0x11) {
0x0001f138 bne 0x1ee78 | goto label_3;
| }
0x0001f13c add r3, r4, 0x2c | r3 = r4 + 0x2c;
0x0001f140 mov r2, 1 | r2 = 1;
0x0001f144 str r2, [r4, 0x38] | *((r4 + 0x38)) = r2;
0x0001f148 ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
0x0001f14c add r0, r7, 0x14 | r0 = r7 + 0x14;
0x0001f150 str r4, [r4, 0x3c] | *((r4 + 0x3c)) = r4;
0x0001f154 str r6, [r4, 0x40] | *((r4 + 0x40)) = r6;
0x0001f158 mov r2, r3 | r2 = r3;
0x0001f15c bl 0x1cbfc | Curl_llist_insert_next ();
0x0001f160 mov r1, 0x12 | r1 = 0x12;
0x0001f164 mov r0, r4 | r0 = r4;
0x0001f168 bl 0x1d3c0 | mstate ();
| label_29:
0x0001f16c ldrb r0, [r7, 0x7c] | r0 = *((r7 + 0x7c));
0x0001f170 cmp r0, 0 |
| if (r0 != 0) {
0x0001f174 bne 0x1ee1c | goto label_4;
| }
0x0001f178 str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x0001f17c b 0x1fe60 | goto label_24;
| label_35:
0x0001f180 mov r1, 2 | r1 = 2;
0x0001f184 mov r0, r4 | r0 = r4;
0x0001f188 bl 0x7f7c | Curl_pgrsTime ();
0x0001f18c add r3, sp, 0x3b | r3 += var_3bh;
0x0001f190 add r2, sp, 0x3a | r2 += var_3ah;
0x0001f194 add r1, r4, 8 | r1 = r4 + 8;
0x0001f198 mov r0, r4 | r0 = r4;
0x0001f19c bl 0x125f4 | r0 = Curl_connect ();
0x0001f1a0 cmp r0, 0x59 |
0x0001f1a4 mov r6, r0 | r6 = r0;
| if (r0 == 0x59) {
0x0001f1a8 bne 0x1f1d4 |
0x0001f1ac mov r1, 1 | r1 = 1;
0x0001f1b0 mov r0, r4 | r0 = r4;
0x0001f1b4 bl 0x1d3c0 | mstate ();
0x0001f1b8 add r3, r4, 0xc | r3 = r4 + 0xc;
0x0001f1bc mov r2, r4 | r2 = r4;
0x0001f1c0 ldr r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x0001f1c4 add r0, r7, 0x24 | r0 = r7 + 0x24;
0x0001f1c8 bl 0x1cbfc | Curl_llist_insert_next ();
| label_8:
0x0001f1cc mov r6, 0 | r6 = 0;
0x0001f1d0 b 0x1ef80 | goto label_2;
| }
0x0001f1d4 cmp r0, 0 |
| if (r0 != 0) {
0x0001f1d8 bne 0x1ef80 | goto label_2;
| }
0x0001f1dc ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001f1e0 mov r0, r4 | r0 = r4;
0x0001f1e4 bl 0x28ff0 | r0 = Curl_add_handle_to_pipeline ();
0x0001f1e8 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0001f1ec bne 0x1f36c | goto label_12;
| }
0x0001f1f0 ldrb r3, [sp, 0x3a] | r3 = var_3ah;
0x0001f1f4 cmp r3, 0 |
| if (r3 == 0) {
0x0001f1f8 movne r1, 3 | r1 = 3;
| }
| if (r3 != 0) {
0x0001f1fc bne 0x1f438 | goto label_54;
| }
0x0001f200 ldrb r3, [sp, 0x3b] | r3 = var_3bh;
0x0001f204 cmp r3, 0 |
| if (r3 == 0) {
0x0001f208 beq 0x1f234 | goto label_55;
| }
0x0001f20c mov r1, 1 | r1 = 1;
0x0001f210 mov r0, r7 | r0 = r7;
0x0001f214 bl 0x1dbe4 | r0 = Curl_pipeline_wanted ();
0x0001f218 cmp r0, 0 |
| if (r0 != 0) {
0x0001f21c moveq r1, 9 | r1 = 9;
| }
0x0001f220 movne r1, 8 | r1 = 8;
| while (sb != r0) {
| label_9:
0x0001f224 mov r0, r4 | r0 = r4;
0x0001f228 bl 0x1d3c0 | mstate ();
0x0001f22c mov sb, 0 | sb = 0;
0x0001f230 b 0x1f0a0 | goto label_5;
| label_55:
0x0001f234 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f238 bl 0x255fc | r0 = Curl_connect_ongoing ();
0x0001f23c subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x0001f240 movne r1, 5 | r1 = 5;
| }
0x0001f244 bne 0x1f224 |
| }
0x0001f248 mov r1, 4 | r1 = 4;
| label_10:
0x0001f24c mov r0, r4 | r0 = r4;
0x0001f250 bl 0x1d3c0 | mstate ();
0x0001f254 b 0x1f0a0 | goto label_5;
| label_36:
0x0001f258 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x0001f25c mov r3, 0 | r3 = 0;
0x0001f260 str r3, [sp, 0x44] | var_44h = r3;
0x0001f264 ldrb r3, [r5, 0x256] | r3 = *((r5 + 0x256));
0x0001f268 cmp r3, 0 |
| if (r3 == 0) {
0x0001f26c ldrne r8, [r5, 0xe4] | r8 = *((r5 + 0xe4));
| }
| if (r3 == 0) {
0x0001f270 bne 0x1f284 |
0x0001f274 ldrb r3, [r5, 0x253] | r3 = *((r5 + 0x253));
0x0001f278 cmp r3, 0 |
| if (r3 == 0) {
0x0001f27c ldrne r8, [r5, 0xb4] | r8 = *((r5 + 0xb4));
| }
| if (r3 == 0) {
0x0001f280 ldreq r8, [r5, 0xa0] | r8 = *((r5 + 0xa0));
| goto label_56;
| }
| }
| label_56:
0x0001f284 ldr r2, [r5, 0xfc] | r2 = *((r5 + 0xfc));
0x0001f288 mov r1, r8 | r1 = r8;
0x0001f28c mov r0, r5 | r0 = r5;
0x0001f290 bl 0x71e8 | r0 = Curl_fetch_addr ();
0x0001f294 cmp r0, 0 |
0x0001f298 str r0, [sp, 0x44] | var_44h = r0;
| if (r0 != 0) {
0x0001f29c beq 0x1f2c4 |
0x0001f2a0 ldr r1, [pc, 0xa7c] | r1 = *(0x1fd20);
0x0001f2a4 mov r3, 1 | r3 = 1;
0x0001f2a8 str r0, [r5, 0x430] | *((r5 + 0x430)) = r0;
0x0001f2ac strb r3, [r5, 0x434] | *((r5 + 0x434)) = r3;
0x0001f2b0 mov r2, r8 | r2 = r8;
0x0001f2b4 add r1, pc, r1 | r1 = pc + r1;
0x0001f2b8 mov r0, r4 | r0 = r4;
0x0001f2bc bl 0x104cc | Curl_infof ();
0x0001f2c0 mov r6, 0 | r6 = 0;
| }
0x0001f2c4 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001f2c8 cmp r3, 0 |
| if (r3 == 0) {
0x0001f2cc bne 0x1f2e0 |
0x0001f2d0 add r1, sp, 0x44 | r1 += var_44h;
0x0001f2d4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f2d8 bl 0x266f0 | r0 = Curl_resolver_is_resolved ();
0x0001f2dc mov r6, r0 | r6 = r0;
| }
0x0001f2e0 mov r1, r4 | r1 = r4;
0x0001f2e4 mov r0, r7 | r0 = r7;
0x0001f2e8 bl 0x1d6d8 | singlesocket ();
0x0001f2ec ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001f2f0 cmp r3, 0 |
| if (r3 == 0) {
0x0001f2f4 beq 0x1f364 | goto label_57;
| }
0x0001f2f8 add r1, sp, 0x3b | r1 += var_3bh;
0x0001f2fc ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f300 bl 0x2230c | r0 = Curl_async_resolved ();
0x0001f304 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0001f308 movne r3, 0 | r3 = 0;
| }
| if (r6 == r0) {
0x0001f30c strne r3, [r4, 8] | *((r4 + 8)) = r3;
| }
| if (r6 != r0) {
0x0001f310 bne 0x1f36c | goto label_12;
| }
0x0001f314 ldrb r3, [sp, 0x3b] | r3 = var_3bh;
0x0001f318 cmp r3, 0 |
| if (r3 == 0) {
0x0001f31c beq 0x1f34c | goto label_58;
| }
0x0001f320 mov r1, 1 | r1 = 1;
0x0001f324 mov r0, r7 | r0 = r7;
0x0001f328 bl 0x1dbe4 | r0 = Curl_pipeline_wanted ();
0x0001f32c cmp r0, 0 |
| if (r0 != 0) {
0x0001f330 moveq r1, 9 | r1 = 9;
| }
0x0001f334 movne r1, 8 | r1 = 8;
| while (1) {
0x0001f338 mov r0, r4 | r0 = r4;
0x0001f33c bl 0x1d3c0 | mstate ();
0x0001f340 mvn r5, 0 | r5 = ~0;
| label_7:
0x0001f344 mov r6, 0 | r6 = 0;
0x0001f348 b 0x1f0a4 | goto label_6;
| label_58:
0x0001f34c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f350 bl 0x255fc | r0 = Curl_connect_ongoing ();
0x0001f354 cmp r0, 0 |
| if (r0 != 0) {
0x0001f358 moveq r1, 4 | r1 = 4;
| }
| if (r0 == 0) {
0x0001f35c movne r1, 5 | r1 = 5;
| }
0x0001f360 b 0x1f338 |
| }
| label_57:
0x0001f364 cmp r6, 0 |
| if (r6 != 0) {
0x0001f368 beq 0x1f374 |
| label_12:
0x0001f36c mov sb, 1 | sb = 1;
0x0001f370 b 0x1ef80 | goto label_2;
| }
0x0001f374 mov r5, r6 | r5 = r6;
0x0001f378 b 0x1f344 | goto label_7;
| label_38:
0x0001f37c add r1, sp, 0x3b | r1 += var_3bh;
0x0001f380 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f384 bl 0xcdac | r0 = Curl_http_connect ();
0x0001f388 mov r6, r0 | r6 = r0;
0x0001f38c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f390 ldrb r3, [r0, 0x26a] | r3 = *((r0 + 0x26a));
0x0001f394 cmp r3, 0 |
| if (r3 != 0) {
0x0001f398 beq 0x1f3bc |
0x0001f39c mov r2, 0 | r2 = 0;
0x0001f3a0 mov r1, r2 | r1 = r2;
0x0001f3a4 add r0, r4, 8 | r0 = r4 + 8;
0x0001f3a8 bl 0x1e75c | multi_done ();
0x0001f3ac mov r1, 2 | r1 = 2;
| label_13:
0x0001f3b0 mov r0, r4 | r0 = r4;
0x0001f3b4 bl 0x1d3c0 | mstate ();
0x0001f3b8 b 0x1f7d4 | goto label_59;
| }
0x0001f3bc cmp r6, 0 |
| if (r6 != 0) {
0x0001f3c0 bne 0x1fe68 | goto label_60;
| }
0x0001f3c4 ldr r3, [r0, 0xf0] | r3 = *((r0 + 0xf0));
0x0001f3c8 cmp r3, 2 |
| if (r3 != 2) {
0x0001f3cc bne 0x1f3dc | goto label_61;
| }
0x0001f3d0 ldrb r3, [r0, 0x271] | r3 = *((r0 + 0x271));
0x0001f3d4 cmp r3, 0 |
| if (r3 == 0) {
0x0001f3d8 beq 0x1f1cc | goto label_8;
| }
| label_61:
0x0001f3dc bl 0x255d8 | r0 = Curl_connect_complete ();
0x0001f3e0 cmp r0, 0 |
| if (r0 == 0) {
0x0001f3e4 beq 0x1f1cc | goto label_8;
| }
0x0001f3e8 mov r1, 6 | r1 = 6;
0x0001f3ec b 0x1f224 | goto label_9;
| label_37:
0x0001f3f0 add r2, sp, 0x39 | r2 += var_39h;
0x0001f3f4 mov r1, 0 | r1 = 0;
0x0001f3f8 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f3fc bl 0x1c660 | Curl_is_connected ();
0x0001f400 ldrb r5, [sp, 0x39] | r5 = var_39h;
0x0001f404 cmp r5, 0 |
0x0001f408 mov r6, r0 | r6 = r0;
| if (r5 == 0) {
0x0001f40c beq 0x1f468 | goto label_62;
| }
0x0001f410 cmp r0, 0 |
| if (r0 != 0) {
0x0001f414 bne 0x1f4e0 | goto label_63;
| }
0x0001f418 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f41c ldr r3, [r0, 0xf0] | r3 = *((r0 + 0xf0));
0x0001f420 cmp r3, 2 |
| if (r3 != 2) {
0x0001f424 bne 0x1f444 | goto label_64;
| }
0x0001f428 ldrb r3, [r0, 0x271] | r3 = *((r0 + 0x271));
0x0001f42c cmp r3, 0 |
0x0001f430 bne 0x1f444 |
| while (r5 != r0) {
0x0001f434 mov r1, 5 | r1 = 5;
| label_54:
0x0001f438 mov r0, r4 | r0 = r4;
0x0001f43c bl 0x1d3c0 | mstate ();
0x0001f440 b 0x1ef80 | goto label_2;
| label_64:
0x0001f444 bl 0x255fc | r0 = Curl_connect_ongoing ();
0x0001f448 subs r5, r0, 0 | r5 = r0 - 0;
0x0001f44c bne 0x1f434 |
| }
0x0001f450 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001f454 ldrb r3, [r3, 0x261] | r3 = *((r3 + 0x261));
0x0001f458 cmp r3, 0 |
| if (r3 != 0) {
0x0001f45c moveq r1, 6 | r1 = 6;
| }
| if (r3 == 0) {
0x0001f460 movne r1, 5 | r1 = 5;
| }
0x0001f464 b 0x1f224 | goto label_9;
| label_62:
0x0001f468 adds sb, r0, 0 | sb = r0 + 0;
| if (sb == r0) {
0x0001f46c movne sb, 1 | sb = 1;
| }
0x0001f470 b 0x1f0a4 | goto label_6;
| label_39:
0x0001f474 add r1, sp, 0x3b | r1 += var_3bh;
0x0001f478 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f47c bl 0x117a4 | Curl_protocol_connect ();
0x0001f480 ldrb r5, [sp, 0x3b] | r5 = var_3bh;
0x0001f484 cmp r5, 0 |
0x0001f488 mov r6, r0 | r6 = r0;
| if (r5 == 0) {
0x0001f48c bne 0x1f4a4 |
0x0001f490 mov r1, 7 | r1 = 7;
0x0001f494 mov r0, r4 | r0 = r4;
0x0001f498 bl 0x1d3c0 | mstate ();
0x0001f49c mov sb, r5 | sb = r5;
0x0001f4a0 b 0x1f0a4 | goto label_6;
| }
0x0001f4a4 cmp r0, 0 |
| if (r0 == 0) {
0x0001f4a8 bne 0x1f4c8 |
| label_11:
0x0001f4ac mov r1, 1 | r1 = 1;
0x0001f4b0 mov r0, r7 | r0 = r7;
0x0001f4b4 bl 0x1dbe4 | r0 = Curl_pipeline_wanted ();
0x0001f4b8 cmp r0, 0 |
| if (r0 != 0) {
0x0001f4bc moveq r1, 9 | r1 = 9;
| }
| if (r0 == 0) {
0x0001f4c0 movne r1, 8 | r1 = 8;
| }
0x0001f4c4 b 0x1f24c | goto label_10;
| }
0x0001f4c8 mov r0, r4 | r0 = r4;
0x0001f4cc bl 0x195b4 | Curl_posttransfer ();
0x0001f4d0 mov r2, 1 | r2 = 1;
0x0001f4d4 mov r1, r6 | r1 = r6;
0x0001f4d8 add r0, r4, 8 | r0 = r4 + 8;
0x0001f4dc bl 0x1e75c | multi_done ();
| label_63:
0x0001f4e0 mov sb, r5 | sb = r5;
0x0001f4e4 b 0x1ef80 | goto label_2;
| label_40:
0x0001f4e8 add r1, sp, 0x3b | r1 += var_3bh;
0x0001f4ec ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f4f0 bl 0x11734 | r0 = Curl_protocol_connecting ();
0x0001f4f4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0001f4f8 bne 0x1f50c | goto label_65;
| }
0x0001f4fc ldrb r3, [sp, 0x3b] | r3 = var_3bh;
0x0001f500 cmp r3, 0 |
| if (r3 == 0) {
0x0001f504 beq 0x1f1cc | goto label_8;
| }
0x0001f508 b 0x1f4ac | goto label_11;
| label_65:
0x0001f50c mov r0, r4 | r0 = r4;
0x0001f510 bl 0x195b4 | Curl_posttransfer ();
0x0001f514 mov r2, 1 | r2 = 1;
| label_16:
0x0001f518 mov r1, r6 | r1 = r6;
0x0001f51c add r0, r4, 8 | r0 = r4 + 8;
| label_26:
0x0001f520 bl 0x1e75c | multi_done ();
0x0001f524 b 0x1f36c | goto label_12;
| label_41:
0x0001f528 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001f52c mov r0, r4 | r0 = r4;
0x0001f530 bl 0x29378 | r0 = Curl_pipeline_checkget_write ();
0x0001f534 cmp r0, 0 |
| if (r0 != 0) {
0x0001f538 movne r1, 9 | r1 = 9;
| goto label_66;
| }
| if (r0 != 0) {
| label_66:
0x0001f53c bne 0x1f24c | goto label_10;
| }
| label_18:
0x0001f540 mov sb, r0 | sb = r0;
0x0001f544 b 0x1ef80 | goto label_2;
| label_42:
0x0001f548 ldrb r5, [r4, 0x4f1] | r5 = *((r4 + 0x4f1));
0x0001f54c ldr fp, [r4, 8] | fp = *((r4 + 8));
0x0001f550 cmp r5, 0 |
| if (r5 != 0) {
0x0001f554 beq 0x1f56c |
0x0001f558 mov r1, 0 | r1 = 0;
0x0001f55c mov r0, fp | r0 = fp;
0x0001f560 bl 0x1cb34 | Curl_conncontrol ();
0x0001f564 mov r1, 0x10 | r1 = 0x10;
0x0001f568 b 0x1f3b0 | goto label_13;
| }
0x0001f56c ldr r3, [fp, 0x284] | r3 = *(arg_284h);
0x0001f570 add r8, r4, 8 | r8 = r4 + 8;
0x0001f574 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0001f578 ldr sb, [fp] | sb = *(fp);
0x0001f57c cmp r3, 0 |
| if (r3 == 0) {
0x0001f580 beq 0x1f784 | goto label_67;
| }
0x0001f584 add r2, sp, 0x3c | r2 += var_3ch;
0x0001f588 mov r1, r2 | r1 = r2;
0x0001f58c mov r0, fp | r0 = fp;
0x0001f590 str r2, [sp, 0x20] | var_20h = r2;
0x0001f594 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0001f598 cmp r0, 0x37 |
0x0001f59c mov r6, r0 | r6 = r0;
| if (r0 != 0x37) {
0x0001f5a0 bne 0x1fed8 | goto label_68;
| }
0x0001f5a4 ldrb r3, [fp, 0x252] | r3 = *(arg_252h);
0x0001f5a8 cmp r3, 0 |
| if (r3 == 0) {
0x0001f5ac beq 0x1f670 | goto label_69;
| }
0x0001f5b0 ldr r3, [sb, 0x64] | r3 = *((sb + 0x64));
0x0001f5b4 cmp r3, 0 |
| if (r3 != 0) {
0x0001f5b8 bne 0x1f670 | goto label_69;
| }
0x0001f5bc ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001f5c0 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0001f5c4 ldr fp, [r3] | fp = *(r3);
0x0001f5c8 add sb, sp, 0x48 | sb += var_48h;
0x0001f5cc mov r0, fp | r0 = fp;
0x0001f5d0 str r3, [sp, 0x44] | var_44h = r3;
0x0001f5d4 bl 0x104cc | Curl_infof ();
0x0001f5d8 ldr r0, [sb, -4]! | r0 = var_44h;
0x0001f5dc mov r1, 1 | r1 = 1;
0x0001f5e0 bl 0x1cb34 | Curl_conncontrol ();
0x0001f5e4 mov r1, r5 | r1 = r5;
0x0001f5e8 mov r2, r5 | r2 = r5;
0x0001f5ec mov r0, sb | r0 = sb;
0x0001f5f0 bl 0x1e75c | multi_done ();
0x0001f5f4 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x0001f5f8 cmp r0, 0x37 |
0x0001f5fc cmpne r0, 0 | __asm ("cmpne r0, 0");
0x0001f600 mov r1, r0 | r1 = r0;
| if (r0 != 0x37) {
0x0001f604 bne 0x1f664 | goto label_14;
| }
0x0001f608 add sb, sp, 0x48 | sb += var_48h;
0x0001f60c mov r3, 1 | r3 = 1;
0x0001f610 strb r3, [sb, -9]! | *((sb -= 9)) = r3;
0x0001f614 mov r1, r8 | r1 = r8;
0x0001f618 mov r3, sb | r3 = sb;
0x0001f61c add r2, sp, 0x3e | r2 += var_3eh;
0x0001f620 mov r0, fp | r0 = fp;
0x0001f624 bl 0x125f4 | r0 = Curl_connect ();
0x0001f628 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 != r0) {
0x0001f62c bne 0x1f664 | goto label_14;
| }
0x0001f630 ldrb r3, [sp, 0x3e] | r3 = var_3eh;
0x0001f634 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f638 cmp r3, 0 |
0x0001f63c str r0, [sp, 0x44] | var_44h = r0;
| if (r3 != 0) {
0x0001f640 bne 0x1f74c | goto label_70;
| }
| label_15:
0x0001f644 ldr fp, [r4, 8] | fp = *((r4 + 8));
0x0001f648 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0001f64c ldr r3, [fp, 0x284] | r3 = *(arg_284h);
0x0001f650 mov r0, fp | r0 = fp;
0x0001f654 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0001f658 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001f65c subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x0001f660 beq 0x1f770 | goto label_25;
| }
| do {
| label_14:
0x0001f664 cmp r1, 0x37 |
| if (r1 == 0x37) {
0x0001f668 movne r6, r1 | r6 = r1;
| }
| if (r1 != 0x37) {
0x0001f66c bne 0x1fee0 | goto label_71;
| }
| label_69:
0x0001f670 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f674 ldrb fp, [r0, 0x252] | fp = *((r0 + 0x252));
0x0001f678 cmp fp, 0 |
| if (fp == 0) {
0x0001f67c beq 0x1fee0 | goto label_71;
| }
0x0001f680 mov r3, 0 | r3 = 0;
0x0001f684 add r1, sp, 0x48 | r1 += var_48h;
0x0001f688 str r3, [r1, -4]! | *((r1 -= 4)) = r3;
0x0001f68c bl 0x19ad8 | r0 = Curl_retry_request ();
0x0001f690 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0001f694 movne sb, fp | sb = fp;
| }
| if (r3 == r0) {
0x0001f698 bne 0x1f6b0 |
0x0001f69c ldr r5, [sp, 0x44] | r5 = var_44h;
0x0001f6a0 mov sb, r3 | sb = r3;
0x0001f6a4 adds r5, r5, 0 | r5 += 0;
| if (r5 == r5) {
0x0001f6a8 movne r5, 1 | r5 = 1;
| }
0x0001f6ac mov r3, 0x37 | r3 = 0x37;
| }
0x0001f6b0 mov r0, r4 | r0 = r4;
0x0001f6b4 str r3, [sp, 0x20] | var_20h = r3;
0x0001f6b8 bl 0x195b4 | Curl_posttransfer ();
0x0001f6bc ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001f6c0 mov r2, 0 | r2 = 0;
0x0001f6c4 mov r1, r3 | r1 = r3;
0x0001f6c8 mov r0, r8 | r0 = r8;
0x0001f6cc bl 0x1e75c | multi_done ();
0x0001f6d0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001f6d4 cmp r5, 0 |
| if (r5 != 0) {
0x0001f6d8 moveq sb, fp | sb = fp;
| }
0x0001f6dc mov r6, r0 | r6 = r0;
| if (r5 != 0) {
0x0001f6e0 moveq r6, r3 | r6 = r3;
| }
| if (r5 != 0) {
0x0001f6e4 beq 0x1f730 |
0x0001f6e8 cmp r6, 0 |
0x0001f6ec sub r5, r6, 0x37 | r5 = r6 - 0x37;
0x0001f6f0 clz r5, r5 | r5 &= r5;
0x0001f6f4 lsr r5, r5, 5 | r5 >>= 5;
| if (r6 != 0) {
0x0001f6f8 moveq r5, 1 | r5 = 1;
| }
0x0001f6fc cmp r5, 0 |
| if (r5 == 0) {
0x0001f700 beq 0x1f730 | goto label_72;
| }
0x0001f704 mov r2, 2 | r2 = 2;
0x0001f708 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0001f70c mov r0, r4 | r0 = r4;
0x0001f710 bl 0x195bc | r0 = Curl_follow ();
0x0001f714 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0001f718 movne r5, 0 | r5 = 0;
| }
| if (r6 != r0) {
0x0001f71c bne 0x1f730 | goto label_72;
| }
0x0001f720 mov r1, 2 | r1 = 2;
0x0001f724 mov r0, r4 | r0 = r4;
0x0001f728 bl 0x1d3c0 | mstate ();
0x0001f72c mvn r5, 0 | r5 = ~0;
| }
| label_72:
0x0001f730 ldr r3, [pc, 0x5f0] |
0x0001f734 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0001f738 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001f73c ldr r3, [r3] | r3 = *(0x1fd24);
| label_20:
0x0001f740 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0001f744 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0001f748 b 0x1f0a4 | goto label_6;
| label_70:
0x0001f74c bl 0x26624 | r0 = Curl_resolver_wait_resolv ();
0x0001f750 subs r1, r0, 0 | r1 = r0 - 0;
0x0001f754 bne 0x1f664 |
| } while (r1 != r0);
0x0001f758 mov r1, sb | r1 = sb;
0x0001f75c ldr r0, [sp, 0x44] | r0 = var_44h;
0x0001f760 bl 0x2230c | r0 = Curl_async_resolved ();
0x0001f764 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 != r0) {
0x0001f768 bne 0x1f664 | goto label_14;
| }
0x0001f76c b 0x1f644 | goto label_15;
| label_25:
0x0001f770 ldrb r3, [sp, 0x3c] | r3 = var_3ch;
0x0001f774 cmp r3, 0 |
| if (r3 != 0) {
0x0001f778 beq 0x1f790 |
0x0001f77c mov r0, fp | r0 = fp;
0x0001f780 bl 0x1d390 | do_complete ();
| label_67:
0x0001f784 ldrb r3, [sp, 0x3c] | r3 = var_3ch;
0x0001f788 cmp r3, 0 |
| if (r3 != 0) {
0x0001f78c bne 0x1f7f0 | goto label_73;
| }
| }
0x0001f790 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001f794 ldrb r3, [r3, 0x9d5] | r3 = *((r3 + 0x9d5));
0x0001f798 cmp r3, 0 |
| if (r3 != 0) {
0x0001f79c beq 0x1f7dc |
0x0001f7a0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001f7a4 ldr r3, [r3, 0xa38] | r3 = *((r3 + 0xa38));
0x0001f7a8 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0001f7ac cmp r3, 5 |
| if (r3 != 5) {
0x0001f7b0 bne 0x1f7dc | goto label_74;
| }
0x0001f7b4 mov r2, 0 | r2 = 0;
0x0001f7b8 mov r1, r2 | r1 = r2;
0x0001f7bc mov r0, r8 | r0 = r8;
0x0001f7c0 bl 0x1e75c | multi_done ();
0x0001f7c4 mov r1, 0x10 | r1 = 0x10;
0x0001f7c8 mov r0, r4 | r0 = r4;
0x0001f7cc bl 0x1d3c0 | mstate ();
0x0001f7d0 mov sb, 0 | sb = 0;
| label_59:
0x0001f7d4 mov r6, 0 | r6 = 0;
0x0001f7d8 b 0x1f0a0 | goto label_5;
| }
| label_74:
0x0001f7dc mov r1, 0xa | r1 = 0xa;
| do {
0x0001f7e0 mov r0, r4 | r0 = r4;
0x0001f7e4 bl 0x1d3c0 | mstate ();
0x0001f7e8 mov sb, 0 | sb = 0;
0x0001f7ec b 0x1f1cc | goto label_8;
| label_73:
0x0001f7f0 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001f7f4 ldrb sb, [r3, 0x25c] | sb = *((r3 + 0x25c));
0x0001f7f8 cmp sb, 0 |
| if (sb == 0) {
0x0001f7fc movne r1, 0xb | r1 = 0xb;
| }
0x0001f800 bne 0x1f7e0 |
| } while (sb != 0);
0x0001f804 mov r1, 0xc | r1 = 0xc;
0x0001f808 b 0x1f3b0 | goto label_13;
| label_43:
0x0001f80c add r1, sp, 0x3c | r1 += var_3ch;
0x0001f810 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f814 bl 0x1176c | r0 = Curl_protocol_doing ();
0x0001f818 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0001f81c bne 0x1f844 | goto label_75;
| }
0x0001f820 ldrb r3, [sp, 0x3c] | r3 = var_3ch;
0x0001f824 cmp r3, 0 |
| if (r3 == 0) {
0x0001f828 beq 0x1f1cc | goto label_8;
| }
0x0001f82c ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001f830 ldrb r3, [r3, 0x25c] | r3 = *((r3 + 0x25c));
0x0001f834 cmp r3, 0 |
| if (r3 != 0) {
0x0001f838 moveq r1, 0xc | r1 = 0xc;
| }
| if (r3 == 0) {
0x0001f83c movne r1, 0xb | r1 = 0xb;
| }
0x0001f840 b 0x1f24c | goto label_10;
| label_75:
0x0001f844 mov r0, r4 | r0 = r4;
0x0001f848 bl 0x195b4 | Curl_posttransfer ();
0x0001f84c mov r2, 0 | r2 = 0;
0x0001f850 b 0x1f518 | goto label_16;
| label_44:
0x0001f854 ldr r8, [r4, 8] | r8 = *((r4 + 8));
0x0001f858 mov r5, 0 | r5 = 0;
0x0001f85c ldr r3, [r8, 0x284] | r3 = *((r8 + 0x284));
0x0001f860 str r5, [sp, 0x40] | var_40h = r5;
0x0001f864 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0001f868 cmp r3, r5 |
| if (r3 != r5) {
0x0001f86c bne 0x1f8a0 | goto label_76;
| }
| label_17:
0x0001f870 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001f874 cmp r3, 1 |
| if (r3 == 1) {
0x0001f878 bne 0x1f884 |
0x0001f87c mov r0, r8 | r0 = r8;
0x0001f880 bl 0x1d390 | do_complete ();
| }
0x0001f884 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001f888 cmp r3, 0 |
| if (r3 == 0) {
0x0001f88c beq 0x1f1cc | goto label_8;
| }
0x0001f890 cmp r3, 1 |
| if (r3 == 1) {
0x0001f894 movne r1, 0xa | r1 = 0xa;
| }
| if (r3 != 1) {
0x0001f898 moveq r1, 0xc | r1 = 0xc;
| }
0x0001f89c b 0x1f3b0 | goto label_13;
| label_76:
0x0001f8a0 add r1, sp, 0x40 | r1 += var_40h;
0x0001f8a4 mov r0, r8 | r0 = r8;
0x0001f8a8 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
0x0001f8ac subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0001f8b0 beq 0x1f870 | goto label_17;
| }
0x0001f8b4 mov r0, r4 | r0 = r4;
0x0001f8b8 bl 0x195b4 | Curl_posttransfer ();
0x0001f8bc mov r2, r5 | r2 = r5;
0x0001f8c0 mov r1, r6 | r1 = r6;
0x0001f8c4 add r0, r4, 8 | r0 = r4 + 8;
0x0001f8c8 bl 0x1e75c | multi_done ();
0x0001f8cc b 0x1ff00 | goto label_77;
| label_45:
0x0001f8d0 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001f8d4 mov r0, r4 | r0 = r4;
0x0001f8d8 bl 0x29038 | Curl_move_handle_from_send_to_recv_pipe ();
0x0001f8dc ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001f8e0 ldrb r2, [r3, 0x26d] | r2 = *((r3 + 0x26d));
0x0001f8e4 cmp r2, 0 |
| if (r2 == 0) {
0x0001f8e8 bne 0x1f8f8 |
0x0001f8ec ldr r3, [r3, 0x2d0] | r3 = *((r3 + 0x2d0));
0x0001f8f0 cmp r3, 0 |
| if (r3 == 0) {
0x0001f8f4 beq 0x1f900 | goto label_78;
| }
| }
0x0001f8f8 mov r0, r7 | r0 = r7;
0x0001f8fc bl 0x1e714 | process_pending_handles ();
| label_78:
0x0001f900 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001f904 ldr r2, [r3, 0x290] | r2 = *((r3 + 0x290));
0x0001f908 cmn r2, 1 |
| if (r2 == 1) {
0x0001f90c bne 0x1f91c |
0x0001f910 ldr r2, [r3, 0x294] | r2 = *((r3 + 0x294));
0x0001f914 cmn r2, 1 |
| if (r2 == 1) {
0x0001f918 beq 0x1f924 | goto label_79;
| }
| }
0x0001f91c mov r1, 0xd | r1 = 0xd;
0x0001f920 b 0x1f24c | goto label_10;
| label_79:
0x0001f924 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0001f928 ldrb r2, [r2, 0x9d5] | r2 = *((r2 + 0x9d5));
0x0001f92c cmp r2, 0 |
| if (r2 != 0) {
0x0001f930 beq 0x1f94c |
0x0001f934 ldr r3, [r3, 0x284] | r3 = *((r3 + 0x284));
0x0001f938 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0001f93c tst r3, 0x1000 |
| if ((r3 & 0x1000) != 0) {
0x0001f940 ldreq r2, [sp, 0x1c] | r2 = var_1ch;
| }
| if ((r3 & 0x1000) != 0) {
0x0001f944 moveq r3, 7 | r3 = 7;
| }
| if ((r3 & 0x1000) == 0) {
0x0001f948 streq r3, [r2, 0xa38] | *((r2 + 0xa38)) = r3;
| goto label_80;
| }
| }
| label_80:
0x0001f94c mov r1, 0x10 | r1 = 0x10;
0x0001f950 b 0x1f24c | goto label_10;
| label_46:
0x0001f954 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001f958 mov r0, r4 | r0 = r4;
0x0001f95c bl 0x293bc | r0 = Curl_pipeline_checkget_read ();
0x0001f960 cmp r0, 0 |
| if (r0 != 0) {
0x0001f964 movne r1, 0xe | r1 = 0xe;
| goto label_81;
| }
| if (r0 == 0) {
| label_81:
0x0001f968 beq 0x1f540 | goto label_18;
| }
0x0001f96c b 0x1f24c | goto label_10;
| label_48:
0x0001f970 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001f974 bl 0x831c | r0 = Curl_pgrsUpdate ();
0x0001f978 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0001f97c movne r6, 0x2a | r6 = 0x2a;
| goto label_82;
| }
| if (r5 != r0) {
| label_82:
0x0001f980 bne 0x1ef80 | goto label_2;
| }
0x0001f984 ldm sl, {r1, r2} | r1 = *(sl);
| r2 = *((sl + 4));
0x0001f988 mov r0, r4 | r0 = r4;
0x0001f98c bl 0x15410 | r0 = Curl_speedcheck ();
0x0001f990 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0001f994 bne 0x1f0a4 | goto label_6;
| }
0x0001f998 add r3, r4, 0x210 | r3 = r4 + 0x210;
0x0001f99c ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0001f9a0 cmp r2, 1 |
0x0001f9a4 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 >= 1) {
0x0001f9a8 blt 0x1f9f0 |
0x0001f9ac add r1, r4, 0x6c0 | r1 = r4 + 0x6c0;
0x0001f9b0 ldrd r0, r1, [r1, -8] | __asm ("ldrd r0, r1, [r1, -8]");
0x0001f9b4 add lr, sp, 0x10 | lr += var_10h;
0x0001f9b8 strd r0, r1, [sp, 0x20] | __asm ("strd r0, r1, [var_20h]");
0x0001f9bc ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x0001f9c0 add ip, r4, 0x730 |
0x0001f9c4 stm lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
0x0001f9c8 add r1, r4, 0x720 | r1 = r4 + 0x720;
0x0001f9cc add r1, r1, 4 | r1 += 4;
0x0001f9d0 ldm r1, {r0, r1} | r0 = *(r1);
| r1 = *((r1 + 4));
0x0001f9d4 add lr, sp, 8 | lr += var_8h;
0x0001f9d8 stm lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
0x0001f9dc strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001f9e0 ldrd r0, r1, [sp, 0x20] | __asm ("ldrd r0, r1, [var_20h]");
0x0001f9e4 ldrd r2, r3, [ip] | __asm ("ldrd r2, r3, [ip]");
0x0001f9e8 bl 0x809c | r0 = Curl_pgrsLimitWaitTime ();
0x0001f9ec mov r5, r0 | r5 = r0;
| }
0x0001f9f0 add r3, r4, 0x220 | r3 = r4 + 0x220;
0x0001f9f4 ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x0001f9f8 cmp r2, 1 |
0x0001f9fc sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 >= 1) {
0x0001fa00 movlt r1, 0 | r1 = 0;
| }
| if (r2 >= 1) {
0x0001fa04 blt 0x1fa44 |
0x0001fa08 ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x0001fa0c add r8, sp, 0x10 | r8 += var_10h;
0x0001fa10 stm r8, {r0, r1} | *(r8) = r0;
| *((r8 + 4)) = r1;
0x0001fa14 add r1, r4, 0x730 | r1 = r4 + 0x730;
0x0001fa18 add r1, r1, 8 | r1 += 8;
0x0001fa1c ldm r1, {r0, r1} | r0 = *(r1);
| r1 = *((r1 + 4));
0x0001fa20 add lr, r4, 0x740 | lr = r4 + 0x740;
0x0001fa24 add ip, r4, 0x6b0 |
0x0001fa28 add r8, sp, 8 | r8 += var_8h;
0x0001fa2c stm r8, {r0, r1} | *(r8) = r0;
| *((r8 + 4)) = r1;
0x0001fa30 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001fa34 ldrd r0, r1, [ip] | __asm ("ldrd r0, r1, [ip]");
0x0001fa38 ldrd r2, r3, [lr] | __asm ("ldrd r2, r3, [lr]");
0x0001fa3c bl 0x809c | r0 = Curl_pgrsLimitWaitTime ();
0x0001fa40 mov r1, r0 | r1 = r0;
| }
0x0001fa44 orrs r8, r1, r5 | r8 = r1 | r5;
| if (r8 == r1) {
0x0001fa48 bne 0x1fa68 |
0x0001fa4c mov r0, r4 | r0 = r4;
0x0001fa50 mov r1, 0xe | r1 = 0xe;
0x0001fa54 bl 0x1d3c0 | mstate ();
0x0001fa58 ldm sl, {r1, r2} | r1 = *(sl);
| r2 = *((sl + 4));
0x0001fa5c mov r0, r4 | r0 = r4;
0x0001fa60 bl 0x8178 | Curl_ratelimit ();
0x0001fa64 b 0x1ef80 | goto label_2;
| }
0x0001fa68 cmp r1, r5 |
0x0001fa6c mov r2, 9 | r2 = 9;
| if (r1 > r5) {
0x0001fa70 bgt 0x1fb64 | goto label_83;
| }
| do {
0x0001fa74 mov r1, r5 | r1 = r5;
0x0001fa78 b 0x1fb64 | goto label_83;
| label_47:
0x0001fa7c add r3, r4, 0x210 | r3 = r4 + 0x210;
0x0001fa80 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0001fa84 mov r5, 0 | r5 = 0;
0x0001fa88 cmp r2, 1 |
0x0001fa8c sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x0001fa90 str r5, [sp, 0x44] | var_44h = r5;
0x0001fa94 strb r5, [sp, 0x3f] | var_3fh = r5;
| if (r2 >= 1) {
0x0001fa98 blt 0x1fae0 |
0x0001fa9c add r1, r4, 0x6c0 | r1 = r4 + 0x6c0;
0x0001faa0 ldrd r0, r1, [r1, -8] | __asm ("ldrd r0, r1, [r1, -8]");
0x0001faa4 add lr, sp, 0x10 | lr += var_10h;
0x0001faa8 strd r0, r1, [sp, 0x20] | __asm ("strd r0, r1, [var_20h]");
0x0001faac ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x0001fab0 add ip, r4, 0x730 |
0x0001fab4 stm lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
0x0001fab8 add r1, r4, 0x720 | r1 = r4 + 0x720;
0x0001fabc add r1, r1, 4 | r1 += 4;
0x0001fac0 ldm r1, {r0, r1} | r0 = *(r1);
| r1 = *((r1 + 4));
0x0001fac4 add lr, sp, 8 | lr += var_8h;
0x0001fac8 stm lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
0x0001facc strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001fad0 ldrd r0, r1, [sp, 0x20] | __asm ("ldrd r0, r1, [var_20h]");
0x0001fad4 ldrd r2, r3, [ip] | __asm ("ldrd r2, r3, [ip]");
0x0001fad8 bl 0x809c | r0 = Curl_pgrsLimitWaitTime ();
0x0001fadc mov r5, r0 | r5 = r0;
| }
0x0001fae0 add r3, r4, 0x220 | r3 = r4 + 0x220;
0x0001fae4 ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x0001fae8 cmp r2, 1 |
0x0001faec sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 >= 1) {
0x0001faf0 movlt r8, 0 | r8 = 0;
| }
| if (r2 >= 1) {
0x0001faf4 blt 0x1fb34 |
0x0001faf8 ldm sl, {r0, r1} | r0 = *(sl);
| r1 = *((sl + 4));
0x0001fafc add r8, sp, 0x10 | r8 += var_10h;
0x0001fb00 stm r8, {r0, r1} | *(r8) = r0;
| *((r8 + 4)) = r1;
0x0001fb04 add r1, r4, 0x730 | r1 = r4 + 0x730;
0x0001fb08 add r1, r1, 8 | r1 += 8;
0x0001fb0c ldm r1, {r0, r1} | r0 = *(r1);
| r1 = *((r1 + 4));
0x0001fb10 add lr, r4, 0x740 | lr = r4 + 0x740;
0x0001fb14 add ip, r4, 0x6b0 |
0x0001fb18 add r8, sp, 8 | r8 += var_8h;
0x0001fb1c stm r8, {r0, r1} | *(r8) = r0;
| *((r8 + 4)) = r1;
0x0001fb20 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001fb24 ldrd r2, r3, [lr] | __asm ("ldrd r2, r3, [lr]");
0x0001fb28 ldrd r0, r1, [ip] | __asm ("ldrd r0, r1, [ip]");
0x0001fb2c bl 0x809c | r0 = Curl_pgrsLimitWaitTime ();
0x0001fb30 mov r8, r0 | r8 = r0;
| }
0x0001fb34 orrs r3, r8, r5 | r3 = r8 | r5;
| if (r3 == r8) {
0x0001fb38 beq 0x1fb70 | goto label_84;
| }
0x0001fb3c ldm sl, {r1, r2} | r1 = *(sl);
| r2 = *((sl + 4));
0x0001fb40 mov r0, r4 | r0 = r4;
0x0001fb44 bl 0x8178 | Curl_ratelimit ();
0x0001fb48 mov r1, 0xf | r1 = 0xf;
0x0001fb4c mov r0, r4 | r0 = r4;
0x0001fb50 bl 0x1d3c0 | mstate ();
0x0001fb54 cmp r8, r5 |
0x0001fb58 mov r2, 9 | r2 = 9;
| if (r8 <= r5) {
0x0001fb5c movgt r1, r8 | r1 = r8;
| }
0x0001fb60 ble 0x1fa74 |
| } while (r8 <= r5);
| label_83:
0x0001fb64 mov r0, r4 | r0 = r4;
0x0001fb68 bl 0x1e348 | Curl_expire ();
0x0001fb6c b 0x1ef80 | goto label_2;
| label_84:
0x0001fb70 add r3, sp, 0x3f | r3 += var_3fh;
0x0001fb74 add r2, sp, 0x3d | r2 += var_3dh;
0x0001fb78 mov r1, r4 | r1 = r4;
0x0001fb7c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001fb80 bl 0x182f4 | Curl_readwrite ();
0x0001fb84 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0001fb88 tst r3, 1 |
0x0001fb8c mov r6, r0 | r6 = r0;
| if ((r3 & 1) == 0) {
0x0001fb90 bne 0x1fb9c |
0x0001fb94 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001fb98 bl 0x2940c | Curl_pipeline_leave_read ();
| }
0x0001fb9c ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x0001fba0 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x0001fba4 bne 0x1fbb0 |
0x0001fba8 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001fbac bl 0x29400 | Curl_pipeline_leave_write ();
| }
0x0001fbb0 ldrb r5, [sp, 0x3d] | r5 = var_3dh;
0x0001fbb4 ldr r3, [pc, 0x16c] | r3 = *(0x1fd24);
0x0001fbb8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0001fbbc cmp r6, 0x38 |
| if (r6 != 0x38) {
0x0001fbc0 orreq r5, r5, 1 | r5 |= 1;
| }
0x0001fbc4 cmp r5, 0 |
0x0001fbc8 ldr r8, [r2, r3] | r8 = *((r2 + r3));
| if (r5 != 0) {
0x0001fbcc beq 0x1fbf8 |
0x0001fbd0 add r1, sp, 0x44 | r1 += var_44h;
0x0001fbd4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001fbd8 bl 0x19ad8 | r0 = Curl_retry_request ();
0x0001fbdc cmp r0, 0 |
| if (r0 != 0) {
0x0001fbe0 bne 0x1fbf8 | goto label_85;
| }
0x0001fbe4 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001fbe8 cmp r3, 0 |
| if (r3 == 0) {
0x0001fbec movne r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x0001fbf0 strbne r3, [sp, 0x3d] | var_3dh = r3;
| }
| if (r3 != 0) {
0x0001fbf4 bne 0x1fc54 | goto label_86;
| }
| }
| label_85:
0x0001fbf8 cmp r6, 0 |
| if (r6 == 0) {
0x0001fbfc beq 0x1fc50 | goto label_87;
| }
0x0001fc00 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001fc04 ldr r3, [r0, 0x284] | r3 = *((r0 + 0x284));
0x0001fc08 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0001fc0c lsr r3, r3, 1 | r3 >>= 1;
0x0001fc10 eor r3, r3, 1 | r3 ^= 1;
0x0001fc14 cmp r6, 0x5c |
| if (r6 != 0x5c) {
0x0001fc18 moveq r3, 0 | r3 = 0;
| }
| if (r6 == 0x5c) {
0x0001fc1c andne r3, r3, 1 | r3 &= 1;
| }
0x0001fc20 cmp r3, 0 |
| if (r3 != 0) {
0x0001fc24 beq 0x1fc30 |
0x0001fc28 mov r1, 2 | r1 = 2;
0x0001fc2c bl 0x1cb34 | Curl_conncontrol ();
| }
0x0001fc30 mov r0, r4 | r0 = r4;
0x0001fc34 bl 0x195b4 | Curl_posttransfer ();
0x0001fc38 mov r2, 1 | r2 = 1;
0x0001fc3c mov r1, r6 | r1 = r6;
0x0001fc40 add r0, r4, 8 | r0 = r4 + 8;
0x0001fc44 bl 0x1e75c | multi_done ();
| do {
| label_19:
0x0001fc48 mov r5, 0 | r5 = 0;
0x0001fc4c b 0x1fd90 | goto label_88;
| label_87:
0x0001fc50 mov r5, r6 | r5 = r6;
| label_86:
0x0001fc54 ldrb r3, [sp, 0x3d] | r3 = var_3dh;
0x0001fc58 cmp r3, 0 |
| if (r3 == 0) {
0x0001fc5c beq 0x1fda0 | goto label_89;
| }
0x0001fc60 mov r0, r4 | r0 = r4;
0x0001fc64 bl 0x195b4 | Curl_posttransfer ();
0x0001fc68 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001fc6c mov r0, r4 | r0 = r4;
0x0001fc70 add r1, r1, 0x2d4 | r1 += 0x2d4;
0x0001fc74 bl 0x11498 | Curl_removeHandleFromPipeline ();
0x0001fc78 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001fc7c ldr r3, [r3, 0x2d4] | r3 = *((r3 + 0x2d4));
0x0001fc80 cmp r3, 0 |
| if (r3 != 0) {
0x0001fc84 beq 0x1fc98 |
0x0001fc88 mov r2, 6 | r2 = 6;
0x0001fc8c mov r1, 0 | r1 = 0;
0x0001fc90 ldr r0, [r3] | r0 = *(r3);
0x0001fc94 bl 0x1e348 | Curl_expire ();
| }
0x0001fc98 ldr r3, [r4, 0x11c] | r3 = *((r4 + 0x11c));
0x0001fc9c cmp r3, 0 |
| if (r3 == 0) {
0x0001fca0 bne 0x1fd2c |
0x0001fca4 cmp r5, 0 |
| if (r5 != 0) {
0x0001fca8 bne 0x1fd98 | goto label_90;
| }
0x0001fcac ldr r3, [r4, 0x118] | r3 = *((r4 + 0x118));
0x0001fcb0 cmp r3, 0 |
| if (r3 != 0) {
0x0001fcb4 moveq r6, r5 | r6 = r5;
| }
| if (r3 != 0) {
0x0001fcb8 beq 0x1fcec |
0x0001fcbc ldr r3, [r8] | r3 = *(r8);
0x0001fcc0 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0001fcc4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001fcc8 ldr r1, [r4, 0x118] | r1 = *((r4 + 0x118));
0x0001fccc mov r2, 1 | r2 = 1;
0x0001fcd0 str r5, [r4, 0x118] | *((r4 + 0x118)) = r5;
0x0001fcd4 mov r0, r4 | r0 = r4;
0x0001fcd8 str r1, [sp, 0x44] | var_44h = r1;
0x0001fcdc bl 0x195bc | r0 = Curl_follow ();
0x0001fce0 adds r5, r0, 0 | r5 = r0 + 0;
0x0001fce4 mov r6, r0 | r6 = r0;
| if (r5 != r0) {
0x0001fce8 movne r5, 1 | r5 = 1;
| goto label_91;
| }
| }
| label_91:
0x0001fcec mov r1, 0x10 | r1 = 0x10;
0x0001fcf0 mov r0, r4 | r0 = r4;
0x0001fcf4 bl 0x1d3c0 | mstate ();
0x0001fcf8 mov sb, r5 | sb = r5;
0x0001fcfc b 0x1fd8c | goto label_92;
| }
0x0001fd2c cmp r5, 0 |
| if (r5 != 0) {
0x0001fd30 bne 0x1fd98 | goto label_90;
| }
0x0001fd34 ldr r3, [r8] | r3 = *(r8);
0x0001fd38 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0001fd3c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001fd40 ldr r3, [r4, 0x11c] | r3 = *((r4 + 0x11c));
0x0001fd44 str r5, [r4, 0x11c] | *((r4 + 0x11c)) = r5;
0x0001fd48 mov r5, 3 | r5 = 3;
0x0001fd4c str r3, [sp, 0x44] | var_44h = r3;
| label_21:
0x0001fd50 mov r2, 0 | r2 = 0;
0x0001fd54 mov r1, r2 | r1 = r2;
0x0001fd58 add r0, r4, 8 | r0 = r4 + 8;
0x0001fd5c bl 0x1e75c | r0 = multi_done ();
0x0001fd60 subs r6, r0, 0 | r6 = r0 - 0;
0x0001fd64 bne 0x1fc48 |
| } while (r6 != r0);
0x0001fd68 mov r2, r5 | r2 = r5;
0x0001fd6c ldr r1, [sp, 0x44] | r1 = var_44h;
0x0001fd70 mov r0, r4 | r0 = r4;
0x0001fd74 bl 0x195bc | r0 = Curl_follow ();
0x0001fd78 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0001fd7c bne 0x1fc48 | goto label_19;
| }
0x0001fd80 mov r1, 2 | r1 = 2;
0x0001fd84 mov r0, r4 | r0 = r4;
0x0001fd88 bl 0x1d3c0 | mstate ();
| label_92:
0x0001fd8c mvn r5, 0 | r5 = ~0;
| do {
| label_88:
0x0001fd90 ldr r3, [r8] | r3 = *(r8);
0x0001fd94 b 0x1f740 | goto label_20;
| label_90:
0x0001fd98 mov r5, 2 | r5 = 2;
0x0001fd9c b 0x1fd50 | goto label_21;
| label_89:
0x0001fda0 ldrb r5, [sp, 0x3f] | r5 = var_3fh;
0x0001fda4 mov sb, r3 | sb = r3;
0x0001fda8 rsb r5, r5, 0 | r5 -= ;
0x0001fdac mov r6, r3 | r6 = r3;
0x0001fdb0 b 0x1fd90 |
| } while (1);
| label_49:
0x0001fdb4 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001fdb8 cmp r1, 0 |
| if (r1 != 0) {
0x0001fdbc beq 0x1fe18 |
0x0001fdc0 add r1, r1, 0x2d4 | r1 += 0x2d4;
0x0001fdc4 mov r0, r4 | r0 = r4;
0x0001fdc8 bl 0x11498 | Curl_removeHandleFromPipeline ();
0x0001fdcc ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001fdd0 ldrb r2, [r3, 0x26d] | r2 = *((r3 + 0x26d));
0x0001fdd4 cmp r2, 0 |
| if (r2 == 0) {
0x0001fdd8 bne 0x1fde8 |
0x0001fddc ldr r3, [r3, 0x2d0] | r3 = *((r3 + 0x2d0));
0x0001fde0 cmp r3, 0 |
| if (r3 == 0) {
0x0001fde4 beq 0x1fdf0 | goto label_93;
| }
| }
0x0001fde8 mov r0, r7 | r0 = r7;
0x0001fdec bl 0x1e714 | process_pending_handles ();
| label_93:
0x0001fdf0 mov r1, r6 | r1 = r6;
0x0001fdf4 mov r2, 0 | r2 = 0;
0x0001fdf8 add r0, r4, 8 | r0 = r4 + 8;
0x0001fdfc bl 0x1e75c | multi_done ();
0x0001fe00 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001fe04 cmp r6, 0 |
| if (r6 != 0) {
0x0001fe08 moveq r6, r0 | r6 = r0;
| }
0x0001fe0c cmp r3, 0 |
| if (r3 == 0) {
0x0001fe10 movne r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x0001fe14 strne r3, [r4, 8] | *((r4 + 8)) = r3;
| goto label_94;
| }
| }
| label_94:
0x0001fe18 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001fe1c ldrb r3, [r3, 0x9d5] | r3 = *((r3 + 0x9d5));
0x0001fe20 cmp r3, 0 |
| if (r3 == 0) {
0x0001fe24 beq 0x1fe3c | goto label_95;
| }
0x0001fe28 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001fe2c ldr r3, [r3, 0xa38] | r3 = *((r3 + 0xa38));
0x0001fe30 cmp r3, 7 |
| if (r3 != 7) {
0x0001fe34 movne r1, 0 | r1 = 0;
| goto label_96;
| }
| if (r3 != 7) {
| label_96:
0x0001fe38 bne 0x1f24c | goto label_10;
| }
| label_95:
0x0001fe3c mov r1, 0x11 | r1 = 0x11;
0x0001fe40 b 0x1f24c | goto label_10;
| label_50:
0x0001fe44 mov r5, 0 | r5 = 0;
0x0001fe48 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x0001fe4c mov r0, r4 | r0 = r4;
0x0001fe50 bl 0x1eb30 | Curl_expire_clear ();
0x0001fe54 b 0x1f0a4 | goto label_6;
| label_51:
0x0001fe58 mov r0, 0 | r0 = 0;
0x0001fe5c str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
| label_24:
0x0001fe60 add sp, sp, 0x4c |
0x0001fe64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_60:
0x0001fe68 mov sb, r3 | sb = r3;
0x0001fe6c b 0x1ef80 | goto label_2;
| label_53:
0x0001fe70 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001fe74 cmp r3, 2 |
| if (r3 != 2) {
0x0001fe78 bne 0x1f124 | goto label_22;
| }
0x0001fe7c mov r0, r4 | r0 = r4;
0x0001fe80 bl 0x195b4 | Curl_posttransfer ();
0x0001fe84 b 0x1f124 | goto label_22;
| label_52:
0x0001fe88 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001fe8c cmp r0, 0 |
| if (r0 == 0) {
0x0001fe90 beq 0x1f130 | goto label_23;
| }
0x0001fe94 bl 0x831c | r0 = Curl_pgrsUpdate ();
0x0001fe98 cmp r0, 0 |
| if (r0 == 0) {
0x0001fe9c beq 0x1f130 | goto label_23;
| }
0x0001fea0 mov r1, 2 | r1 = 2;
0x0001fea4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001fea8 bl 0x1cb34 | Curl_conncontrol ();
0x0001feac ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0001feb0 mov r0, r4 | r0 = r4;
0x0001feb4 cmp r3, 0xf |
| if (r3 <= 0xf) {
0x0001feb8 movhi r1, 0x11 | r1 = 0x11;
| }
| if (r3 > 0xf) {
0x0001febc movls r1, 0x10 | r1 = 0x10;
| }
0x0001fec0 bl 0x1d3c0 | mstate ();
0x0001fec4 mov r6, 0x2a | r6 = 0x2a;
0x0001fec8 mvn r5, 0 | r5 = ~0;
0x0001fecc b 0x1f130 | goto label_23;
| label_27:
0x0001fed0 mov r0, 2 | r0 = 2;
0x0001fed4 b 0x1fe60 | goto label_24;
| label_68:
0x0001fed8 cmp r0, 0 |
| if (r0 == 0) {
0x0001fedc beq 0x1f770 | goto label_25;
| }
| label_71:
0x0001fee0 mov r0, r4 | r0 = r4;
0x0001fee4 bl 0x195b4 | Curl_posttransfer ();
0x0001fee8 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x0001feec cmp r5, 0 |
| if (r5 == 0) {
0x0001fef0 movne r2, 0 | r2 = 0;
| }
| if (r5 == 0) {
0x0001fef4 movne r1, r6 | r1 = r6;
| }
| if (r5 != 0) {
0x0001fef8 movne r0, r8 | r0 = r8;
| goto label_97;
| }
| if (r5 != 0) {
| label_97:
0x0001fefc bne 0x1f520 | goto label_26;
| }
| label_77:
0x0001ff00 mov sb, 1 | sb = 1;
0x0001ff04 b 0x1f0a4 | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x3614c */
| #include <stdint.h>
|
; (fcn) sym.ossl_connect_common () | void ossl_connect_common (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0003614c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00036150 lsl sl, r1, 4 | sl = r1 << 4;
0x00036154 add r5, r0, sl | r5 = r0 + sl;
0x00036158 ldr ip, [r5, 0x1c0] | ip = *((r5 + 0x1c0));
0x0003615c sub sp, sp, 0x1c |
0x00036160 cmp ip, 2 |
| if (ip != 2) {
0x00036164 moveq r2, 1 | r2 = 1;
| }
| if (ip != 2) {
0x00036168 strbeq r2, [r3] | *(r3) = r2;
| }
| if (ip != 2) {
0x0003616c moveq r3, 0 | r3 = 0;
| }
| if (ip == 2) {
0x00036170 beq 0x361dc | goto label_0;
| }
0x00036174 add sb, r0, r1, lsl 2 | sb = r0 + (r1 << 2);
0x00036178 mov r6, r1 | r6 = r1;
0x0003617c ldr r1, [r5, 0x1c4] | r1 = *((r5 + 0x1c4));
0x00036180 str r3, [sp] | *(sp) = r3;
0x00036184 cmp r1, 0 |
0x00036188 mov r8, r2 | r8 = r2;
0x0003618c mov r4, r0 | r4 = r0;
0x00036190 ldr r7, [r0] | r7 = *(r0);
0x00036194 ldr fp, [sb, 0x198] | fp = *((sb + 0x198));
| if (r1 != 0) {
0x00036198 bne 0x362b0 | goto label_6;
| }
0x0003619c mov r2, 1 | r2 = 1;
0x000361a0 mov r0, r7 | r0 = r7;
0x000361a4 bl 0x1b738 | r0 = Curl_timeleft ();
0x000361a8 cmp r0, 0 |
| if (r0 >= 0) {
0x000361ac bge 0x361c8 | goto label_7;
| }
0x000361b0 ldr r1, [pc, 0x308] | r1 = *(0x364bc);
0x000361b4 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_1:
0x000361b8 mov r0, r7 | r0 = r7;
0x000361bc bl 0x10544 | Curl_failf ();
0x000361c0 mov r3, 0x1c | r3 = 0x1c;
0x000361c4 b 0x361dc | goto label_0;
| label_7:
0x000361c8 mov r1, r6 | r1 = r6;
0x000361cc mov r0, r4 | r0 = r4;
0x000361d0 bl 0x34e90 | r0 = ossl_connect_step1 ();
0x000361d4 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x000361d8 beq 0x362b0 | goto label_6;
| }
| label_0:
0x000361dc mov r0, r3 | r0 = r3;
0x000361e0 add sp, sp, 0x1c |
0x000361e4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x000361e8 mov r2, 1 | r2 = 1;
0x000361ec mov r1, 0 | r1 = 0;
0x000361f0 mov r0, r7 | r0 = r7;
0x000361f4 bl 0x1b738 | r0 = Curl_timeleft ();
0x000361f8 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 >= r0) {
0x000361fc ldrlt r1, [pc, 0x2c0] | r1 = *(0x000364c4);
| }
| if (r3 >= r0) {
0x00036200 addlt r1, pc, r1 | r1 = pc + r1;
| }
0x00036204 blt 0x361b8 |
| } while (r3 < r0);
0x00036208 ldr r2, [r5, 0x1c4] | r2 = *((r5 + 0x1c4));
0x0003620c sub r1, r2, 2 | r1 = r2 - 2;
0x00036210 cmp r1, 1 |
| if (r1 > 1) {
0x00036214 bhi 0x36284 | goto label_8;
| }
0x00036218 cmp r2, 3 |
| if (r2 != 3) {
0x0003621c moveq r2, fp | r2 = fp;
| }
| if (r2 == 3) {
0x00036220 mvnne r2, 0 | r2 = ~0;
| }
| if (r2 == 3) {
0x00036224 movne r0, fp | r0 = fp;
| }
| if (r2 != 3) {
0x00036228 mvneq r0, 0 | r0 = ~0;
| }
0x0003622c cmp r8, 0 |
| if (r8 == 0) {
0x00036230 movne r3, 0 | r3 = 0;
| }
0x00036234 mvn r1, 0 | r1 = ~0;
0x00036238 bl 0x22ea8 | r0 = Curl_socket_check ();
0x0003623c subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00036240 bge 0x36264 |
0x00036244 bl 0x4eb4 | errno_location ();
0x00036248 ldr r1, [pc, 0x278] | r1 = *(0x364c4);
0x0003624c add r1, pc, r1 | r1 = pc + r1;
0x00036250 ldr r2, [r0] | r2 = *(r0);
0x00036254 mov r0, r7 | r0 = r7;
0x00036258 bl 0x10544 | Curl_failf ();
0x0003625c mov r3, 0x23 | r3 = 0x23;
0x00036260 b 0x361dc | goto label_0;
| }
| if (r3 != r0) {
0x00036264 bne 0x36284 | goto label_8;
| }
0x00036268 cmp r8, 0 |
| if (r8 == 0) {
0x0003626c ldrne r2, [sp] | r2 = *(sp);
| }
| if (r8 != 0) {
0x00036270 strbne r3, [r2] | *(r2) = r3;
| goto label_9;
| }
| if (r8 != 0) {
| label_9:
0x00036274 bne 0x361dc | goto label_0;
| }
0x00036278 ldr r1, [pc, 0x24c] | r1 = *(0x364c8);
0x0003627c add r1, pc, r1 | r1 = pc + r1;
0x00036280 b 0x361b8 | goto label_1;
| label_8:
0x00036284 mov r1, r6 | r1 = r6;
0x00036288 mov r0, r4 | r0 = r4;
0x0003628c bl 0x32880 | r0 = ossl_connect_step2 ();
0x00036290 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x00036294 bne 0x361dc | goto label_0;
| }
0x00036298 cmp r8, 0 |
| if (r8 == 0) {
0x0003629c beq 0x362b0 | goto label_6;
| }
0x000362a0 ldr r2, [r5, 0x1c4] | r2 = *((r5 + 0x1c4));
0x000362a4 sub r2, r2, 1 | r2--;
0x000362a8 cmp r2, 2 |
| if (r2 < 2) {
0x000362ac bls 0x361dc | goto label_0;
| }
| label_6:
0x000362b0 ldr r3, [r5, 0x1c4] | r3 = *((r5 + 0x1c4));
0x000362b4 sub r2, r3, 1 | r2 = r3 - 1;
0x000362b8 cmp r2, 2 |
| if (r2 < 2) {
0x000362bc bls 0x361e8 | goto label_2;
| }
0x000362c0 cmp r3, 4 |
| if (r3 != 4) {
0x000362c4 bne 0x3645c | goto label_10;
| }
0x000362c8 ldr r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x000362cc add fp, sl, 0x1bc |
0x000362d0 cmp r3, 2 |
0x000362d4 ldr r7, [r4] | r7 = *(r4);
0x000362d8 add fp, r4, fp |
| if (r3 != 2) {
0x000362dc bne 0x363b4 | goto label_11;
| }
0x000362e0 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x000362e4 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000362e8 movne r3, 1 | r3 = 1;
| }
0x000362ec add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x000362f0 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000362f4 cmp r3, 2 |
| if (r3 == 2) {
0x000362f8 beq 0x363b4 | goto label_11;
| }
0x000362fc ldrb r3, [r7, 0x43f] | r3 = *((r7 + 0x43f));
0x00036300 cmp r3, 0 |
| if (r3 == 0) {
0x00036304 beq 0x363cc | goto label_12;
| }
| do {
0x00036308 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x0003630c add r1, sp, 0x18 | r1 += var_18h;
0x00036310 mov r2, 0 | r2 = 0;
0x00036314 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00036318 str r2, [r1, -4]! | *((r1 -= 4)) = r2;
0x0003631c stmib sp, {r1, r2} | __asm ("stmib sp, {r1, r2}");
0x00036320 str r1, [sp, 0xc] | var_ch = r1;
0x00036324 bl 0x5208 | r0 = SSL_get1_session ();
0x00036328 mov r8, r0 | r8 = r0;
0x0003632c mov r0, r4 | r0 = r4;
0x00036330 bl 0x36f20 | Curl_ssl_sessionid_lock ();
0x00036334 mov r3, r6 | r3 = r6;
0x00036338 ldmib sp, {r1, r2} | __asm ("ldmib sp, {r1, r2}");
0x0003633c mov r0, r4 | r0 = r4;
0x00036340 bl 0x36f6c | r0 = Curl_ssl_getsessionid ();
0x00036344 cmp r0, 0 |
| if (r0 == 0) {
0x00036348 bne 0x36374 |
0x0003634c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00036350 cmp r8, r3 |
| if (r8 == r3) {
0x00036354 beq 0x36428 | goto label_13;
| }
0x00036358 ldr r1, [pc, 0x170] | r1 = *(0x364cc);
0x0003635c mov r0, r7 | r0 = r7;
0x00036360 add r1, pc, r1 | r1 = pc + r1;
0x00036364 bl 0x104cc | Curl_infof ();
0x00036368 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0003636c mov r0, r4 | r0 = r4;
0x00036370 bl 0x371e0 | Curl_ssl_delsessionid ();
| }
0x00036374 mov r3, r6 | r3 = r6;
0x00036378 mov r2, 0 | r2 = 0;
0x0003637c mov r1, r8 | r1 = r8;
0x00036380 mov r0, r4 | r0 = r4;
0x00036384 bl 0x37228 | r0 = Curl_ssl_addsessionid ();
0x00036388 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0003638c beq 0x36430 | goto label_14;
| }
0x00036390 mov r0, r4 | r0 = r4;
0x00036394 str r3, [sp] | *(sp) = r3;
0x00036398 bl 0x36f48 | Curl_ssl_sessionid_unlock ();
0x0003639c ldr r1, [pc, 0x130] | r1 = *(0x364d0);
0x000363a0 mov r0, r7 | r0 = r7;
0x000363a4 add r1, pc, r1 | r1 = pc + r1;
0x000363a8 bl 0x10544 | Curl_failf ();
0x000363ac ldr r3, [sp] | r3 = *(sp);
0x000363b0 b 0x361dc | goto label_0;
| label_11:
0x000363b4 ldrb r3, [r7, 0x3e7] | r3 = *((r7 + 0x3e7));
0x000363b8 cmp r3, 0 |
0x000363bc bne 0x36308 |
| } while (r3 != 0);
| do {
0x000363c0 ldr r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x000363c4 cmp r3, 2 |
| if (r3 != 2) {
0x000363c8 bne 0x364a8 | goto label_15;
| }
| label_12:
0x000363cc ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x000363d0 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000363d4 movne r3, 1 | r3 = 1;
| }
0x000363d8 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x000363dc ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000363e0 cmp r3, 2 |
| if (r3 == 2) {
0x000363e4 beq 0x364a8 | goto label_15;
| }
0x000363e8 ldrb r3, [r4, 0x230] | r3 = *((r4 + 0x230));
0x000363ec cmp r3, 0 |
| if (r3 != 0) {
0x000363f0 bne 0x3643c | goto label_3;
| }
| label_5:
0x000363f4 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x000363f8 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000363fc movne r3, 1 | r3 = 1;
| }
0x00036400 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00036404 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00036408 cmp r3, 2 |
| if (r3 == 2) {
0x0003640c ldrbne r3, [r4, 0x231] | r3 = *((r4 + 0x231));
| }
| if (r3 == 2) {
0x00036410 bne 0x36418 |
| label_4:
0x00036414 ldrb r3, [r4, 0x209] | r3 = *((r4 + 0x209));
| }
0x00036418 cmp r3, 0 |
| if (r3 != 0) {
0x0003641c bne 0x3643c | goto label_3;
| }
0x00036420 mov r2, 0 | r2 = 0;
0x00036424 b 0x36440 | goto label_16;
| label_13:
0x00036428 mov r0, r8 | r0 = r8;
0x0003642c bl 0x4e3c | SSL_SESSION_free ();
| label_14:
0x00036430 mov r0, r4 | r0 = r4;
0x00036434 bl 0x36f48 | Curl_ssl_sessionid_unlock ();
0x00036438 b 0x363c0 |
| } while (1);
| label_3:
0x0003643c mov r2, 1 | r2 = 1;
| label_16:
0x00036440 mov r1, fp | r1 = fp;
0x00036444 mov r0, r4 | r0 = r4;
0x00036448 bl 0x334b8 | r0 = servercert ();
0x0003644c subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x00036450 bne 0x361dc | goto label_0;
| }
0x00036454 mov r3, 5 | r3 = 5;
0x00036458 str r3, [r5, 0x1c4] | *((r5 + 0x1c4)) = r3;
| label_10:
0x0003645c ldr r3, [r5, 0x1c4] | r3 = *((r5 + 0x1c4));
0x00036460 cmp r3, 5 |
| if (r3 == 5) {
0x00036464 movne r3, 0 | r3 = 0;
| }
| if (r3 == 5) {
0x00036468 bne 0x36494 |
0x0003646c mov r3, 2 | r3 = 2;
0x00036470 add r4, r4, sl | r4 += sl;
0x00036474 str r3, [r4, 0x1c0] | *((r4 + 0x1c0)) = r3;
0x00036478 ldr r3, [pc, 0x58] | r3 = *(0x364d4);
0x0003647c add r3, pc, r3 | r3 = pc + r3;
0x00036480 str r3, [sb, 0x1ac] | *((sb + 0x1ac)) = r3;
0x00036484 ldr r3, [pc, 0x50] | r3 = *(0x364d8);
0x00036488 add r3, pc, r3 | r3 = pc + r3;
0x0003648c str r3, [sb, 0x1b4] | *((sb + 0x1b4)) = r3;
0x00036490 mov r3, 1 | r3 = 1;
| }
0x00036494 ldr r2, [sp] | r2 = *(sp);
0x00036498 strb r3, [r2] | *(r2) = r3;
0x0003649c mov r3, 0 | r3 = 0;
0x000364a0 str r3, [r5, 0x1c4] | *((r5 + 0x1c4)) = r3;
0x000364a4 b 0x361dc | goto label_0;
| label_15:
0x000364a8 ldrb r2, [r4, 0x208] | r2 = *((r4 + 0x208));
0x000364ac cmp r2, 0 |
| if (r2 != 0) {
0x000364b0 bne 0x3643c | goto label_3;
| }
0x000364b4 cmp r3, 2 |
| if (r3 != 2) {
0x000364b8 bne 0x36414 | goto label_4;
| }
0x000364bc b 0x363f4 | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x34e90 */
| #include <stdint.h>
|
; (fcn) sym.ossl_connect_step1 () | void ossl_connect_step1 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| size_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| size_t size;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| size_t var_4ch;
| int32_t var_58h;
| void * s1;
| int32_t var_158h;
| int32_t var_15ch;
| r0 = arg1;
| r1 = arg2;
0x00034e90 ldr r3, [pc, 0xf88] | r3 = *(0x35e1c);
0x00034e94 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00034e98 ldr r5, [r0] | r5 = *(r0);
0x00034e9c sub sp, sp, 0x15c |
0x00034ea0 add r3, pc, r3 | r3 = pc + r3;
0x00034ea4 str r3, [sp, 0x38] | var_38h = r3;
0x00034ea8 add r3, r1, 0x66 | r3 = r1 + 0x66;
0x00034eac ldr r3, [r0, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r0 + offset_0));
0x00034eb0 mov r4, r0 | r4 = r0;
0x00034eb4 str r3, [sp, 0x3c] | var_3ch = r3;
0x00034eb8 ldr r3, [r0, 0xf0] | r3 = *((r0 + 0xf0));
0x00034ebc str r1, [sp, 0x28] | var_28h = r1;
0x00034ec0 cmp r3, 2 |
| if (r3 == 2) {
0x00034ec4 bne 0x34eec |
0x00034ec8 ldr r2, [r0, 0x19c] | r2 = *((r0 + 0x19c));
0x00034ecc adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00034ed0 movne r2, 1 | r2 = 1;
| }
0x00034ed4 add r2, r0, r2, lsl 4 | r2 = r0 + (r2 << 4);
0x00034ed8 ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00034edc cmp r2, 2 |
| if (r2 == 2) {
0x00034ee0 ldrne r2, [r0, 0xe4] | r2 = *((r0 + 0xe4));
| }
| if (r2 == 2) {
0x00034ee4 strne r2, [sp, 0x24] | var_24h = r2;
| }
| if (r2 != 2) {
0x00034ee8 bne 0x34efc | goto label_23;
| }
| }
0x00034eec ldr r2, [r4, 0xa0] | r2 = *((r4 + 0xa0));
0x00034ef0 cmp r3, 2 |
0x00034ef4 str r2, [sp, 0x24] | var_24h = r2;
| if (r3 == 2) {
0x00034ef8 bne 0x34f1c |
| label_23:
0x00034efc ldr r2, [r4, 0x19c] | r2 = *((r4 + 0x19c));
0x00034f00 adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00034f04 movne r2, 1 | r2 = 1;
| }
0x00034f08 add r2, r4, r2, lsl 4 | r2 = r4 + (r2 << 4);
0x00034f0c ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00034f10 cmp r2, 2 |
| if (r2 == 2) {
0x00034f14 addne r6, r5, 0x460 | r6 = r5 + 0x460;
| }
| if (r2 != 2) {
0x00034f18 bne 0x34f2c | goto label_24;
| }
| }
0x00034f1c add r6, r5, 0x400 | r6 = r5 + 0x400;
0x00034f20 cmp r3, 2 |
0x00034f24 add r6, r6, 8 | r6 += 8;
| if (r3 == 2) {
0x00034f28 bne 0x34f4c |
| label_24:
0x00034f2c ldr r2, [r4, 0x19c] | r2 = *((r4 + 0x19c));
0x00034f30 adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00034f34 movne r2, 1 | r2 = 1;
| }
0x00034f38 add r2, r4, r2, lsl 4 | r2 = r4 + (r2 << 4);
0x00034f3c ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00034f40 cmp r2, 2 |
| if (r2 == 2) {
0x00034f44 ldrne r7, [r4, 0x228] | r7 = *((r4 + 0x228));
| }
| if (r2 != 2) {
0x00034f48 bne 0x34f58 | goto label_25;
| }
| }
0x00034f4c cmp r3, 2 |
0x00034f50 ldr r7, [r4, 0x200] | r7 = *((r4 + 0x200));
| if (r3 == 2) {
0x00034f54 bne 0x34f7c |
| label_25:
0x00034f58 ldr r2, [r4, 0x19c] | r2 = *((r4 + 0x19c));
0x00034f5c adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00034f60 movne r2, 1 | r2 = 1;
| }
0x00034f64 add r2, r4, r2, lsl 4 | r2 = r4 + (r2 << 4);
0x00034f68 ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00034f6c cmp r2, 2 |
| if (r2 == 2) {
0x00034f70 ldrne r2, [r5, 0x478] | r2 = *((r5 + 0x478));
| }
| if (r2 == 2) {
0x00034f74 strne r2, [sp, 8] | var_8h = r2;
| }
| if (r2 != 2) {
0x00034f78 bne 0x34f8c | goto label_26;
| }
| }
0x00034f7c ldr r2, [r5, 0x420] | r2 = *((r5 + 0x420));
0x00034f80 cmp r3, 2 |
0x00034f84 str r2, [sp, 8] | var_8h = r2;
| if (r3 == 2) {
0x00034f88 bne 0x34fac |
| label_26:
0x00034f8c ldr r2, [r4, 0x19c] | r2 = *((r4 + 0x19c));
0x00034f90 adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00034f94 movne r2, 1 | r2 = 1;
| }
0x00034f98 add r2, r4, r2, lsl 4 | r2 = r4 + (r2 << 4);
0x00034f9c ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00034fa0 cmp r2, 2 |
| if (r2 == 2) {
0x00034fa4 ldrne r8, [r5, 0x47c] | r8 = *((r5 + 0x47c));
| }
| if (r2 != 2) {
0x00034fa8 bne 0x34fb8 | goto label_27;
| }
| }
0x00034fac cmp r3, 2 |
0x00034fb0 ldr r8, [r5, 0x424] | r8 = *((r5 + 0x424));
| if (r3 == 2) {
0x00034fb4 bne 0x34fdc |
| label_27:
0x00034fb8 ldr r2, [r4, 0x19c] | r2 = *((r4 + 0x19c));
0x00034fbc adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00034fc0 movne r2, 1 | r2 = 1;
| }
0x00034fc4 add r2, r4, r2, lsl 4 | r2 = r4 + (r2 << 4);
0x00034fc8 ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00034fcc cmp r2, 2 |
| if (r2 == 2) {
0x00034fd0 ldrne r2, [r4, 0x238] | r2 = *((r4 + 0x238));
| }
| if (r2 == 2) {
0x00034fd4 strne r2, [sp, 0xc] | var_ch = r2;
| }
| if (r2 != 2) {
0x00034fd8 bne 0x34fec | goto label_28;
| }
| }
0x00034fdc ldr r2, [r4, 0x210] | r2 = *((r4 + 0x210));
0x00034fe0 cmp r3, 2 |
0x00034fe4 str r2, [sp, 0xc] | var_ch = r2;
| if (r3 == 2) {
0x00034fe8 bne 0x35010 |
| label_28:
0x00034fec ldr r2, [r4, 0x19c] | r2 = *((r4 + 0x19c));
0x00034ff0 adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00034ff4 movne r2, 1 | r2 = 1;
| }
0x00034ff8 add r2, r4, r2, lsl 4 | r2 = r4 + (r2 << 4);
0x00034ffc ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00035000 cmp r2, 2 |
| if (r2 == 2) {
0x00035004 ldrne r2, [r4, 0x234] | r2 = *((r4 + 0x234));
| }
| if (r2 == 2) {
0x00035008 strne r2, [sp, 0x10] | var_10h = r2;
| }
| if (r2 != 2) {
0x0003500c bne 0x35020 | goto label_29;
| }
| }
0x00035010 ldr r2, [r4, 0x20c] | r2 = *((r4 + 0x20c));
0x00035014 cmp r3, 2 |
0x00035018 str r2, [sp, 0x10] | var_10h = r2;
| if (r3 == 2) {
0x0003501c bne 0x35044 |
| label_29:
0x00035020 ldr r2, [r4, 0x19c] | r2 = *((r4 + 0x19c));
0x00035024 adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x00035028 movne r2, 1 | r2 = 1;
| }
0x0003502c add r2, r4, r2, lsl 4 | r2 = r4 + (r2 << 4);
0x00035030 ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x00035034 cmp r2, 2 |
| if (r2 == 2) {
0x00035038 ldrbne r3, [r4, 0x230] | r3 = *((r4 + 0x230));
| }
| if (r2 == 2) {
0x0003503c strne r3, [sp, 0x2c] | var_2ch = r3;
| }
| if (r2 != 2) {
0x00035040 bne 0x35054 | goto label_30;
| }
| }
0x00035044 ldrb r2, [r4, 0x208] | r2 = *((r4 + 0x208));
0x00035048 cmp r3, 2 |
0x0003504c str r2, [sp, 0x2c] | var_2ch = r2;
| if (r3 == 2) {
0x00035050 bne 0x35074 |
| label_30:
0x00035054 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035058 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x0003505c movne r3, 1 | r3 = 1;
| }
0x00035060 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00035064 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035068 cmp r3, 2 |
| if (r3 == 2) {
0x0003506c ldrne r3, [r5, 0x464] | r3 = *((r5 + 0x464));
| }
| if (r3 != 2) {
0x00035070 bne 0x35078 | goto label_31;
| }
| }
0x00035074 ldr r3, [r5, 0x40c] | r3 = *((r5 + 0x40c));
| label_31:
0x00035078 mov r0, r5 | r0 = r5;
0x0003507c str r3, [sp, 0x18] | var_18h = r3;
0x00035080 bl 0x34e20 | r0 = Curl_ossl_seed ();
0x00035084 subs fp, r0, 0 |
| if (fp != r0) {
0x00035088 bne 0x350cc | goto label_1;
| }
0x0003508c mov r3, 1 | r3 = 1;
0x00035090 cmp r7, 7 |
0x00035094 str r3, [r6] | *(r6) = r3;
| if (r7 > 7) {
0x00035098 bhi 0x35154 | goto label_32;
| }
0x0003509c lsl r3, r3, r7 | r3 <<= r7;
0x000350a0 tst r3, 0xf3 |
| if ((r3 & 0xf3) != 0) {
0x000350a4 bne 0x350d8 | goto label_33;
| }
0x000350a8 tst r3, 8 |
| if ((r3 & 8) != 0) {
0x000350ac bne 0x35148 | goto label_34;
| }
0x000350b0 tst r3, 4 |
| if ((r3 & 4) == 0) {
0x000350b4 beq 0x35154 | goto label_32;
| }
0x000350b8 ldr r1, [pc, 0xd64] | r1 = *(0x35e20);
0x000350bc add r1, pc, r1 | r1 = pc + r1;
| label_0:
0x000350c0 mov r0, r5 | r0 = r5;
0x000350c4 bl 0x10544 | Curl_failf ();
0x000350c8 mov fp, 4 |
| do {
| label_1:
0x000350cc mov r0, fp | r0 = fp;
0x000350d0 add sp, sp, 0x15c |
0x000350d4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_33:
0x000350d8 bl 0x4e84 | TLS_client_method ();
0x000350dc ldr r3, [sp, 0x28] | r3 = var_28h;
0x000350e0 add r6, r4, r3, lsl 4 | r6 = r4 + (r3 << 4);
0x000350e4 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000350e8 mov sb, r0 | sb = r0;
0x000350ec ldr r0, [r3] | r0 = *(r3);
0x000350f0 cmp r0, 0 |
| if (r0 != 0) {
0x000350f4 bne 0x3516c | goto label_35;
| }
| label_2:
0x000350f8 mov r0, sb | r0 = sb;
0x000350fc ldr r7, [r6, 0x1c8] | r7 = *((r6 + 0x1c8));
0x00035100 bl 0x5a3c | SSL_CTX_new ();
0x00035104 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035108 str r0, [r7] | *(r7) = r0;
0x0003510c ldr r0, [r3] | r0 = *(r3);
0x00035110 cmp r0, 0 |
| if (r0 != 0) {
0x00035114 bne 0x35174 | goto label_36;
| }
0x00035118 add r4, sp, 0x58 | r4 += var_58h;
0x0003511c bl 0x5754 | ERR_peek_error ();
0x00035120 mov r2, 0x100 | r2 = 0x100;
0x00035124 mov r1, r4 | r1 = r4;
0x00035128 bl 0x5064 | ERR_error_string_n ();
0x0003512c ldr r1, [pc, 0xcf4] | r1 = *(0x35e24);
0x00035130 mov r2, r4 | r2 = r4;
0x00035134 add r1, pc, r1 | r1 = pc + r1;
0x00035138 mov r0, r5 | r0 = r5;
0x0003513c bl 0x10544 | Curl_failf ();
| label_20:
0x00035140 mov fp, 0x1b |
0x00035144 b 0x350cc |
| } while (1);
| label_34:
0x00035148 ldr r1, [pc, 0xcdc] | r1 = *(0x35e28);
0x0003514c add r1, pc, r1 | r1 = pc + r1;
0x00035150 b 0x350c0 | goto label_0;
| label_32:
0x00035154 ldr r1, [pc, 0xcd4] | r1 = *(0x35e2c);
0x00035158 mov r0, r5 | r0 = r5;
0x0003515c add r1, pc, r1 | r1 = pc + r1;
0x00035160 bl 0x10544 | Curl_failf ();
| label_21:
0x00035164 mov fp, 0x23 |
0x00035168 b 0x350cc | goto label_1;
| label_35:
0x0003516c bl 0x4ed8 | SSL_CTX_free ();
0x00035170 b 0x350f8 | goto label_2;
| label_36:
0x00035174 mov r3, 0 | r3 = 0;
0x00035178 mov r2, 0x10 | r2 = 0x10;
0x0003517c mov r1, 0x21 | r1 = 0x21;
0x00035180 bl 0x522c | SSL_CTX_ctrl ();
0x00035184 ldr r3, [r5, 0x1a8] | r3 = *((r5 + 0x1a8));
0x00035188 cmp r3, 0 |
| if (r3 != 0) {
0x0003518c beq 0x351c8 |
0x00035190 ldrb r3, [r5, 0x4d8] | r3 = *((r5 + 0x4d8));
0x00035194 cmp r3, 0 |
| if (r3 == 0) {
0x00035198 beq 0x351c8 | goto label_37;
| }
0x0003519c ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000351a0 ldr r1, [pc, 0xc8c] | r1 = *(0x35e30);
0x000351a4 ldr r0, [r3] | r0 = *(r3);
0x000351a8 add r1, pc, r1 | r1 = pc + r1;
0x000351ac bl 0x59b8 | SSL_CTX_set_msg_callback ();
0x000351b0 ldr r0, [r6, 0x1c8] | r0 = *((r6 + 0x1c8));
0x000351b4 mov r3, r4 | r3 = r4;
0x000351b8 mov r2, 0 | r2 = 0;
0x000351bc mov r1, 0x10 | r1 = 0x10;
0x000351c0 ldr r0, [r0] | r0 = *(r0);
0x000351c4 bl 0x522c | SSL_CTX_ctrl ();
| }
| label_37:
0x000351c8 ldr r2, [r4, 0xf0] | r2 = *((r4 + 0xf0));
0x000351cc cmp r2, 2 |
| if (r2 != 2) {
0x000351d0 bne 0x3543c | goto label_38;
| }
0x000351d4 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x000351d8 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000351dc movne r3, 1 | r3 = 1;
| }
0x000351e0 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x000351e4 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000351e8 cmp r3, 2 |
| if (r3 == 2) {
0x000351ec beq 0x3543c | goto label_38;
| }
0x000351f0 ldrb r3, [r5, 0x45c] | r3 = *((r5 + 0x45c));
0x000351f4 cmp r3, 0 |
| if (r3 != 0) {
0x000351f8 bne 0x35470 | goto label_39;
| }
0x000351fc ldr r1, [pc, 0xc34] | r1 = *(0x35e34);
0x00035200 ldr r7, [pc, 0xc34] | r7 = *(0x35e38);
| do {
0x00035204 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035208 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x0003520c movne r3, 1 | r3 = 1;
| }
0x00035210 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00035214 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035218 cmp r3, 2 |
| if (r3 == 2) {
0x0003521c ldrne r0, [r4, 0x228] | r0 = *((r4 + 0x228));
| }
| if (r3 == 2) {
0x00035220 beq 0x3545c | goto label_40;
| }
| label_3:
0x00035224 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035228 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x0003522c movne r3, 1 | r3 = 1;
| }
0x00035230 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00035234 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035238 cmp r3, 2 |
| if (r3 == 2) {
0x0003523c ldrne sb, [r4, 0x22c] | sb = *((r4 + 0x22c));
| }
| if (r3 == 2) {
0x00035240 beq 0x35468 | goto label_41;
| }
| label_4:
0x00035244 cmp r0, 6 |
| if (r0 == 6) {
0x00035248 beq 0x35494 | goto label_42;
| }
0x0003524c cmp r0, 7 |
| if (r0 == 7) {
0x00035250 beq 0x35478 | goto label_43;
| }
0x00035254 cmp r0, 5 |
| if (r0 == 5) {
0x00035258 bne 0x35260 |
| label_6:
0x0003525c orr r1, r1, 0x4000000 | r1 |= 0x4000000;
| }
0x00035260 cmp sb, 0x50000 |
| if (sb != 0x50000) {
0x00035264 beq 0x3527c |
0x00035268 cmp sb, 0x60000 |
| if (sb == 0x60000) {
0x0003526c beq 0x35280 | goto label_44;
| }
0x00035270 cmp sb, 0x40000 |
| if (sb != 0x40000) {
0x00035274 bne 0x35284 | goto label_45;
| }
0x00035278 orr r1, r1, 0x10000000 | r1 |= 0x10000000;
| }
0x0003527c orr r1, r1, 0x8000000 | r1 |= 0x8000000;
| label_44:
0x00035280 orr r1, r1, 0x20000000 | r1 |= 0x20000000;
| label_45:
0x00035284 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035288 ldr r0, [r3] | r0 = *(r3);
0x0003528c bl 0x55e0 | SSL_CTX_set_options ();
0x00035290 ldrb r3, [r4, 0x26f] | r3 = *((r4 + 0x26f));
0x00035294 cmp r3, 0 |
| if (r3 != 0) {
0x00035298 beq 0x352b4 |
0x0003529c ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000352a0 ldr r1, [pc, 0xb98] | r1 = *(0x35e3c);
0x000352a4 mov r2, r4 | r2 = r4;
0x000352a8 add r1, pc, r1 | r1 = pc + r1;
0x000352ac ldr r0, [r3] | r0 = *(r3);
0x000352b0 bl 0x5694 | SSL_CTX_set_next_proto_select_cb ();
| }
0x000352b4 ldrb r3, [r4, 0x270] | r3 = *((r4 + 0x270));
0x000352b8 cmp r3, 0 |
| if (r3 != 0) {
0x000352bc beq 0x35308 |
0x000352c0 ldr r7, [pc, 0xb7c] | r7 = *(0x35e40);
0x000352c4 mov r2, 8 | r2 = 8;
0x000352c8 add r7, pc, r7 | r7 = pc + r7;
0x000352cc add sb, sp, 0x158 | sb += var_158h;
0x000352d0 mov r1, r7 | r1 = r7;
0x000352d4 add r0, sp, 0x59 | r0 += s1;
0x000352d8 strb r2, [sb, -0x100]! | *((sb -= 0x100)) = r2;
0x000352dc bl 0x4f5c | memcpy (r0, r1, r2);
0x000352e0 ldr r1, [pc, 0xb60] | r1 = *(0x35e44);
0x000352e4 mov r2, r7 | r2 = r7;
0x000352e8 add r1, pc, r1 | r1 = pc + r1;
0x000352ec mov r0, r5 | r0 = r5;
0x000352f0 bl 0x104cc | Curl_infof ();
0x000352f4 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000352f8 mov r2, 9 | r2 = 9;
0x000352fc mov r1, sb | r1 = sb;
0x00035300 ldr r0, [r3] | r0 = *(r3);
0x00035304 bl 0x597c | SSL_CTX_set_alpn_protos ();
| }
0x00035308 ldr r3, [sp, 8] | r3 = var_8h;
0x0003530c adds r1, r3, 0 | r1 = r3 + 0;
| if (r1 == r3) {
0x00035310 movne r1, 1 | r1 = 1;
| }
0x00035314 cmp r3, 0 |
0x00035318 cmpeq r8, 0 | __asm ("cmpeq r8, 0");
| if (r3 == 0) {
0x0003531c beq 0x35ad8 | goto label_46;
| }
0x00035320 ldr r2, [r4, 0xf0] | r2 = *((r4 + 0xf0));
0x00035324 cmp r2, 2 |
| if (r2 == 2) {
0x00035328 bne 0x35350 |
0x0003532c ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035330 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00035334 movne r3, 1 | r3 = 1;
| }
0x00035338 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x0003533c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035340 cmp r3, 2 |
| if (r3 == 2) {
0x00035344 ldrne r3, [r5, 0x480] | r3 = *((r5 + 0x480));
| }
| if (r3 == 2) {
0x00035348 strne r3, [sp, 0x14] | var_14h = r3;
| }
| if (r3 != 2) {
0x0003534c bne 0x35360 | goto label_47;
| }
| }
0x00035350 ldr r3, [r5, 0x428] | r3 = *((r5 + 0x428));
0x00035354 cmp r2, 2 |
0x00035358 str r3, [sp, 0x14] | var_14h = r3;
| if (r2 == 2) {
0x0003535c bne 0x35384 |
| label_47:
0x00035360 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035364 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00035368 movne r3, 1 | r3 = 1;
| }
0x0003536c add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00035370 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035374 cmp r3, 2 |
| if (r3 == 2) {
0x00035378 ldrne r3, [r5, 0x484] | r3 = *((r5 + 0x484));
| }
| if (r3 == 2) {
0x0003537c strne r3, [sp, 0x20] | var_20h = r3;
| }
| if (r3 != 2) {
0x00035380 bne 0x35394 | goto label_48;
| }
| }
0x00035384 ldr r3, [r5, 0x42c] | r3 = *((r5 + 0x42c));
0x00035388 cmp r2, 2 |
0x0003538c str r3, [sp, 0x20] | var_20h = r3;
| if (r2 == 2) {
0x00035390 bne 0x353b4 |
| label_48:
0x00035394 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035398 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x0003539c movne r3, 1 | r3 = 1;
| }
0x000353a0 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x000353a4 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000353a8 cmp r3, 2 |
| if (r3 == 2) {
0x000353ac ldrne r3, [r5, 0x488] | r3 = *((r5 + 0x488));
| }
| if (r3 != 2) {
0x000353b0 bne 0x353b8 | goto label_49;
| }
| }
0x000353b4 ldr r3, [r5, 0x430] | r3 = *((r5 + 0x430));
| label_49:
0x000353b8 str r3, [sp, 0x1c] | var_1ch = r3;
0x000353bc ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000353c0 mov r0, r8 | r0 = r8;
0x000353c4 str r1, [sp, 0x30] | size = r1;
0x000353c8 ldr sb, [r3] | sb = *(r3);
0x000353cc ldr r7, [r4] | r7 = *(r4);
0x000353d0 bl 0x33204 | do_file_type ();
0x000353d4 ldr r1, [sp, 0x30] | r1 = size;
0x000353d8 cmp r0, 0x2a |
| if (r0 != 0x2a) {
0x000353dc orreq r1, r1, 1 | r1 |= 1;
| }
0x000353e0 cmp r1, 0 |
0x000353e4 mov sl, r0 | sl = r0;
0x000353e8 str r1, [sp, 0x30] | size = r1;
| if (r1 == 0) {
0x000353ec beq 0x35ad8 | goto label_46;
| }
0x000353f0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000353f4 cmp r3, 0 |
| if (r3 != 0) {
0x000353f8 beq 0x35418 |
0x000353fc mov r1, r3 | r1 = r3;
0x00035400 mov r0, sb | r0 = sb;
0x00035404 bl 0x4ea8 | SSL_CTX_set_default_passwd_cb_userdata ();
0x00035408 ldr r1, [pc, 0xa3c] | r1 = *(0x35e48);
0x0003540c mov r0, sb | r0 = sb;
0x00035410 add r1, pc, r1 | r1 = pc + r1;
0x00035414 bl 0x50b8 | SSL_CTX_set_default_passwd_cb ();
| }
0x00035418 cmp sl, 2 |
| if (sl == 2) {
0x0003541c beq 0x3552c | goto label_50;
| }
| if (sl > 2) {
0x00035420 bgt 0x3549c | goto label_51;
| }
0x00035424 cmp sl, 1 |
| if (sl == 1) {
0x00035428 beq 0x354ec | goto label_52;
| }
| label_7:
0x0003542c ldr r1, [pc, 0xa1c] | r1 = *(0x35e4c);
0x00035430 mov r2, r8 | r2 = r8;
0x00035434 add r1, pc, r1 | r1 = pc + r1;
0x00035438 b 0x35520 | goto label_9;
| label_38:
0x0003543c ldrb r1, [r5, 0x404] | r1 = *((r5 + 0x404));
0x00035440 ldr r3, [pc, 0x9f4] | r3 = *(0x35e38);
0x00035444 cmp r1, 0 |
0x00035448 ldr r7, [pc, 0xa04] | r7 = *(0x35e50);
| if (r1 != 0) {
0x0003544c moveq r7, r3 | r7 = r3;
| }
| label_5:
0x00035450 cmp r2, 2 |
0x00035454 orr r1, r7, 0x2000000 | r1 = r7 | 0x2000000;
0x00035458 beq 0x35204 |
| } while (r2 == 2);
| label_40:
0x0003545c cmp r2, 2 |
0x00035460 ldr r0, [r4, 0x200] | r0 = *((r4 + 0x200));
| if (r2 == 2) {
0x00035464 beq 0x35224 | goto label_3;
| }
| label_41:
0x00035468 ldr sb, [r4, 0x204] | sb = *((r4 + 0x204));
0x0003546c b 0x35244 | goto label_4;
| label_39:
0x00035470 ldr r7, [pc, 0x9dc] | r7 = *(0x35e50);
0x00035474 b 0x35450 | goto label_5;
| label_43:
0x00035478 ldr r0, [r6, 0x1c8] | r0 = *((r6 + 0x1c8));
0x0003547c mov r1, 0x7c | r1 = 0x7c;
0x00035480 mov r3, 0 | r3 = 0;
0x00035484 mov r2, 0x304 | r2 = 0x304;
0x00035488 ldr r0, [r0] | r0 = *(r0);
0x0003548c bl 0x522c | SSL_CTX_ctrl ();
0x00035490 orr r1, r7, 0xa000000 | r1 = r7 | 0xa000000;
| label_42:
0x00035494 orr r1, r1, 0x10000000 | r1 |= 0x10000000;
0x00035498 b 0x3525c | goto label_6;
| label_51:
0x0003549c cmp sl, 0x2a |
| if (sl == 0x2a) {
0x000354a0 beq 0x35568 | goto label_53;
| }
0x000354a4 cmp sl, 0x2b |
| if (sl != 0x2b) {
0x000354a8 bne 0x3542c | goto label_7;
| }
0x000354ac mov r8, 0 | r8 = 0;
0x000354b0 str r8, [sp, 0x48] | var_48h = r8;
0x000354b4 bl 0x531c | BIO_s_file ();
0x000354b8 bl 0x540c | r0 = BIO_new ();
0x000354bc subs r3, r0, 0 | r3 = r0 - 0;
0x000354c0 str r3, [sp, 0x34] | var_34h = r3;
| if (r3 != r0) {
0x000354c4 bne 0x3569c | goto label_54;
| }
0x000354c8 add r4, sp, 0x58 | r4 += var_58h;
0x000354cc bl 0x4e9c | ERR_get_error ();
0x000354d0 mov r2, 0x100 | r2 = 0x100;
0x000354d4 mov r1, r4 | r1 = r4;
0x000354d8 bl 0x5064 | ERR_error_string_n ();
0x000354dc ldr r1, [pc, 0x974] | r1 = *(0x35e54);
0x000354e0 mov r2, r4 | r2 = r4;
0x000354e4 add r1, pc, r1 | r1 = pc + r1;
0x000354e8 b 0x35520 | goto label_9;
| label_52:
0x000354ec ldr r1, [sp, 8] | r1 = var_8h;
0x000354f0 mov r0, sb | r0 = sb;
0x000354f4 bl 0x558c | r0 = SSL_CTX_use_certificate_chain_file ();
0x000354f8 cmp r0, 1 |
| if (r0 == 1) {
0x000354fc beq 0x358b4 | goto label_55;
| }
0x00035500 add r4, sp, 0x58 | r4 += var_58h;
0x00035504 bl 0x4e9c | ERR_get_error ();
0x00035508 mov r2, 0x100 | r2 = 0x100;
0x0003550c mov r1, r4 | r1 = r4;
0x00035510 bl 0x5064 | ERR_error_string_n ();
0x00035514 ldr r1, [pc, 0x940] | r1 = *(0x35e58);
0x00035518 mov r2, r4 | r2 = r4;
0x0003551c add r1, pc, r1 | r1 = pc + r1;
| do {
| label_9:
0x00035520 mov r0, r7 | r0 = r7;
0x00035524 bl 0x10544 | Curl_failf ();
0x00035528 b 0x35654 | goto label_10;
| label_50:
0x0003552c mov r2, sl | r2 = sl;
0x00035530 ldr r1, [sp, 8] | r1 = var_8h;
0x00035534 mov r0, sb | r0 = sb;
0x00035538 bl 0x5130 | r0 = SSL_CTX_use_certificate_file ();
0x0003553c cmp r0, 1 |
| if (r0 == 1) {
0x00035540 beq 0x358b4 | goto label_55;
| }
0x00035544 add r4, sp, 0x58 | r4 += var_58h;
0x00035548 bl 0x4e9c | ERR_get_error ();
0x0003554c mov r2, 0x100 | r2 = 0x100;
0x00035550 mov r1, r4 | r1 = r4;
0x00035554 bl 0x5064 | ERR_error_string_n ();
0x00035558 ldr r1, [pc, 0x900] | r1 = *(0x35e5c);
0x0003555c mov r2, r4 | r2 = r4;
0x00035560 add r1, pc, r1 | r1 = pc + r1;
0x00035564 b 0x35520 |
| } while (1);
| label_53:
0x00035568 add sl, r7, 0x4000 | sl = r7 + 0x4000;
0x0003556c ldr r0, [sl, 0x8a8] | r0 = *((sl + 0x8a8));
0x00035570 cmp r0, 0 |
| if (r0 == 0) {
0x00035574 beq 0x35690 | goto label_56;
| }
0x00035578 ldr r3, [sp, 8] | r3 = var_8h;
0x0003557c mov r8, 0 | r8 = 0;
0x00035580 str r3, [sp, 0x48] | var_48h = r3;
0x00035584 ldr r3, [pc, 0x8d8] | r3 = *(0x35e60);
0x00035588 str r8, [sp] | *(sp) = r8;
0x0003558c add r3, pc, r3 | r3 = pc + r3;
0x00035590 mov r2, r8 | r2 = r8;
0x00035594 mov r1, 0xd | r1 = 0xd;
0x00035598 str r8, [sp, 0x4c] | var_4ch = r8;
0x0003559c str r3, [sp, 0x34] | var_34h = r3;
0x000355a0 bl 0x54b4 | r0 = ENGINE_ctrl ();
0x000355a4 cmp r0, r8 |
| if (r0 != r8) {
0x000355a8 bne 0x355c0 | goto label_57;
| }
0x000355ac ldr r1, [pc, 0x8b4] | r1 = *(0x35e64);
0x000355b0 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_8:
0x000355b4 mov r0, r7 | r0 = r7;
0x000355b8 bl 0x10544 | Curl_failf ();
0x000355bc b 0x35654 | goto label_10;
| label_57:
0x000355c0 mov r3, 1 | r3 = 1;
0x000355c4 str r3, [sp, 4] | var_4h = r3;
0x000355c8 str r8, [sp] | *(sp) = r8;
0x000355cc add r3, sp, 0x48 | r3 += var_48h;
0x000355d0 mov r2, r8 | r2 = r8;
0x000355d4 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000355d8 ldr r0, [sl, 0x8a8] | r0 = *((sl + 0x8a8));
0x000355dc bl 0x51a8 | r0 = ENGINE_ctrl_cmd ();
0x000355e0 cmp r0, 0 |
| if (r0 == 0) {
0x000355e4 bne 0x35618 |
0x000355e8 add r4, sp, 0x58 | r4 += var_58h;
0x000355ec bl 0x4e9c | ERR_get_error ();
0x000355f0 mov r2, 0x100 | r2 = 0x100;
0x000355f4 mov r1, r4 | r1 = r4;
0x000355f8 bl 0x5064 | ERR_error_string_n ();
0x000355fc ldr r1, [pc, 0x868] | r1 = *(0x35e68);
0x00035600 ldr r2, [sp, 8] | r2 = var_8h;
0x00035604 mov r3, r4 | r3 = r4;
0x00035608 add r1, pc, r1 | r1 = pc + r1;
| label_16:
0x0003560c mov r0, r7 | r0 = r7;
0x00035610 bl 0x10544 | Curl_failf ();
0x00035614 b 0x35654 | goto label_10;
| }
0x00035618 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0003561c cmp r1, 0 |
| if (r1 != 0) {
0x00035620 ldreq r1, [pc, 0x848] | r1 = *((pc + 0x848));
| }
| if (r1 != 0) {
0x00035624 addeq r1, pc, r1 | r1 = pc + r1;
| }
0x00035628 beq 0x355b4 |
| } while (r1 == 0);
0x0003562c mov r0, sb | r0 = sb;
0x00035630 bl 0x4f68 | r0 = SSL_CTX_use_certificate ();
0x00035634 cmp r0, 1 |
| if (r0 == 1) {
0x00035638 beq 0x3565c | goto label_58;
| }
0x0003563c ldr r1, [pc, 0x830] | r1 = *(0x35e70);
0x00035640 mov r0, r7 | r0 = r7;
0x00035644 add r1, pc, r1 | r1 = pc + r1;
0x00035648 bl 0x10544 | Curl_failf ();
0x0003564c ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00035650 bl 0x5b74 | X509_free ();
| do {
| label_10:
0x00035654 mov fp, 0x3a |
0x00035658 b 0x350cc | goto label_1;
| label_58:
0x0003565c ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00035660 bl 0x5b74 | X509_free ();
| label_11:
0x00035664 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00035668 bl 0x33204 | r0 = do_file_type ();
0x0003566c cmp r0, 2 |
0x00035670 mov r2, r0 | r2 = r0;
| if (r0 == 2) {
0x00035674 beq 0x358fc | goto label_59;
| }
| if (r0 > 2) {
0x00035678 bgt 0x358bc | goto label_60;
| }
0x0003567c cmp r0, 1 |
| if (r0 == 1) {
0x00035680 beq 0x358e0 | goto label_61;
| }
| label_15:
0x00035684 ldr r1, [pc, 0x7ec] | r1 = *(0x35e74);
0x00035688 add r1, pc, r1 | r1 = pc + r1;
0x0003568c b 0x355b4 | goto label_8;
| label_56:
0x00035690 ldr r1, [pc, 0x7e4] | r1 = *(0x35e78);
0x00035694 add r1, pc, r1 | r1 = pc + r1;
0x00035698 b 0x355b4 | goto label_8;
| label_54:
0x0003569c ldr r3, [sp, 8] | r3 = var_8h;
0x000356a0 mov r2, 3 | r2 = 3;
0x000356a4 mov r1, 0x6c | r1 = 0x6c;
0x000356a8 bl 0x5aa8 | r0 = BIO_ctrl ();
0x000356ac cmp r0, 0 |
| if (r0 > 0) {
0x000356b0 bgt 0x356d4 | goto label_62;
| }
0x000356b4 ldr r1, [pc, 0x7c4] | r1 = *(0x35e7c);
0x000356b8 mov r0, r7 | r0 = r7;
0x000356bc ldr r2, [sp, 8] | r2 = var_8h;
0x000356c0 add r1, pc, r1 | r1 = pc + r1;
0x000356c4 bl 0x10544 | Curl_failf ();
0x000356c8 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000356cc bl 0x5ad8 | BIO_free ();
0x000356d0 b 0x35654 |
| } while (1);
| label_62:
0x000356d4 mov r1, r8 | r1 = r8;
0x000356d8 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000356dc bl 0x5bc8 | r0 = d2i_PKCS12_bio ();
0x000356e0 mov sl, r0 | sl = r0;
0x000356e4 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000356e8 bl 0x5ad8 | BIO_free ();
0x000356ec cmp sl, 0 |
| if (sl != 0) {
0x000356f0 ldreq r1, [pc, 0x78c] | r1 = *((pc + 0x78c));
| }
| if (sl != 0) {
0x000356f4 ldreq r2, [sp, 8] | r2 = var_8h;
| }
| if (sl == 0) {
0x000356f8 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_63;
| }
| if (sl == 0) {
| label_63:
0x000356fc beq 0x35520 | goto label_9;
| }
0x00035700 bl 0x567c | PKCS12_PBE_add ();
0x00035704 add r3, sp, 0x48 | r3 += var_48h;
0x00035708 str r3, [sp] | *(sp) = r3;
0x0003570c add r2, sp, 0x44 | r2 += var_44h;
0x00035710 add r3, sp, 0x40 | r3 += var_40h;
0x00035714 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00035718 mov r0, sl | r0 = sl;
0x0003571c bl 0x5bb0 | r0 = PKCS12_parse ();
0x00035720 cmp r0, 0 |
| if (r0 == 0) {
0x00035724 bne 0x3575c |
0x00035728 add r4, sp, 0x58 | r4 += var_58h;
0x0003572c bl 0x4e9c | ERR_get_error ();
0x00035730 mov r1, r4 | r1 = r4;
0x00035734 mov r2, 0x100 | r2 = 0x100;
0x00035738 bl 0x5064 | ERR_error_string_n ();
0x0003573c ldr r1, [pc, 0x744] | r1 = *(0x35e84);
0x00035740 mov r0, r7 | r0 = r7;
0x00035744 mov r2, r4 | r2 = r4;
0x00035748 add r1, pc, r1 | r1 = pc + r1;
0x0003574c bl 0x10544 | Curl_failf ();
0x00035750 mov r0, sl | r0 = sl;
0x00035754 bl 0x5c10 | PKCS12_free ();
0x00035758 b 0x35654 | goto label_10;
| }
0x0003575c mov r0, sl | r0 = sl;
0x00035760 bl 0x5c10 | PKCS12_free ();
0x00035764 ldr r1, [sp, 0x40] | r1 = var_40h;
0x00035768 mov r0, sb | r0 = sb;
0x0003576c bl 0x4f68 | r0 = SSL_CTX_use_certificate ();
0x00035770 cmp r0, 1 |
| if (r0 != 1) {
0x00035774 beq 0x357a4 |
0x00035778 add sl, sp, 0x58 | sl += var_58h;
0x0003577c bl 0x4e9c | ERR_get_error ();
0x00035780 mov r2, 0x100 | r2 = 0x100;
0x00035784 mov r1, sl | r1 = sl;
0x00035788 bl 0x5064 | ERR_error_string_n ();
0x0003578c ldr r1, [pc, 0x6f8] | r1 = *(0x35e88);
0x00035790 mov r2, sl | r2 = sl;
0x00035794 add r1, pc, r1 | r1 = pc + r1;
| label_12:
0x00035798 mov r0, r7 | r0 = r7;
0x0003579c bl 0x10544 | Curl_failf ();
0x000357a0 b 0x357d0 |
| } else {
0x000357a4 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000357a8 mov r0, sb | r0 = sb;
0x000357ac bl 0x5484 | r0 = SSL_CTX_use_PrivateKey ();
0x000357b0 cmp r0, 1 |
| if (r0 == 1) {
0x000357b4 beq 0x35808 | goto label_64;
| }
0x000357b8 ldr r1, [pc, 0x6d0] | r1 = *(0x35e8c);
0x000357bc ldr r2, [sp, 8] | r2 = var_8h;
0x000357c0 add r1, pc, r1 | r1 = pc + r1;
0x000357c4 mov r0, r7 | r0 = r7;
0x000357c8 bl 0x10544 | Curl_failf ();
0x000357cc mov r8, 0 | r8 = 0;
| }
| label_13:
0x000357d0 ldr r0, [sp, 0x44] | r0 = var_44h;
0x000357d4 bl 0x59c4 | EVP_PKEY_free ();
0x000357d8 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000357dc bl 0x5b74 | X509_free ();
0x000357e0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000357e4 ldr r3, [pc, 0x6a8] | r3 = *(0x35e90);
0x000357e8 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000357ec ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000357f0 mov r1, r3 | r1 = r3;
0x000357f4 str r3, [sp, 0x34] | var_34h = r3;
0x000357f8 bl 0x5a78 | OPENSSL_sk_pop_free ();
0x000357fc cmp r8, 0 |
| if (r8 != 0) {
0x00035800 bne 0x35664 | goto label_11;
| }
0x00035804 b 0x35654 | goto label_10;
| label_64:
0x00035808 mov r0, sb | r0 = sb;
0x0003580c bl 0x57cc | r0 = SSL_CTX_check_private_key ();
0x00035810 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x00035814 ldreq r1, [pc, 0x67c] | r1 = *((pc + 0x67c));
| }
| if (r8 != r0) {
0x00035818 ldreq r2, [sp, 8] | r2 = var_8h;
| }
| if (r8 == r0) {
0x0003581c addeq r1, pc, r1 | r1 = pc + r1;
| goto label_65;
| }
| if (r8 == r0) {
| label_65:
0x00035820 beq 0x35798 | goto label_12;
| }
0x00035824 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00035828 cmp r3, 0 |
0x0003582c bne 0x35868 |
| while (r0 == 0) {
0x00035830 mov r8, 1 | r8 = 1;
0x00035834 b 0x357d0 | goto label_13;
| label_14:
0x00035838 mov r3, sl | r3 = sl;
0x0003583c mov r2, 0 | r2 = 0;
0x00035840 mov r1, 0xe | r1 = 0xe;
0x00035844 mov r0, sb | r0 = sb;
0x00035848 bl 0x522c | r0 = SSL_CTX_ctrl ();
0x0003584c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x00035850 bne 0x35868 |
0x00035854 mov r0, sl | r0 = sl;
0x00035858 bl 0x5b74 | X509_free ();
0x0003585c ldr r1, [pc, 0x638] | r1 = *(0x35e98);
0x00035860 add r1, pc, r1 | r1 = pc + r1;
0x00035864 b 0x358a8 | goto label_66;
| }
0x00035868 ldr r0, [sp, 0x48] | r0 = var_48h;
0x0003586c bl 0x5afc | r0 = OPENSSL_sk_num ();
0x00035870 cmp r0, 0 |
0x00035874 beq 0x35830 |
| }
0x00035878 ldr r0, [sp, 0x48] | r0 = var_48h;
0x0003587c bl 0x5094 | r0 = OPENSSL_sk_pop ();
0x00035880 mov r1, r0 | r1 = r0;
0x00035884 mov sl, r0 | sl = r0;
0x00035888 mov r0, sb | r0 = sb;
0x0003588c bl 0x5040 | r0 = SSL_CTX_add_client_CA ();
0x00035890 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x00035894 bne 0x35838 | goto label_14;
| }
0x00035898 mov r0, sl | r0 = sl;
0x0003589c bl 0x5b74 | X509_free ();
0x000358a0 ldr r1, [pc, 0x5f8] | r1 = *(0x35e9c);
0x000358a4 add r1, pc, r1 | r1 = pc + r1;
| label_66:
0x000358a8 mov r0, r7 | r0 = r7;
0x000358ac bl 0x10544 | Curl_failf ();
0x000358b0 b 0x357d0 | goto label_13;
| label_55:
0x000358b4 mov r8, 0 | r8 = 0;
0x000358b8 b 0x35664 | goto label_11;
| label_60:
0x000358bc cmp r0, 0x2a |
| if (r0 == 0x2a) {
0x000358c0 beq 0x35938 | goto label_67;
| }
0x000358c4 cmp r0, 0x2b |
| if (r0 != 0x2b) {
0x000358c8 bne 0x35684 | goto label_15;
| }
0x000358cc cmp r8, 0 |
| if (r8 != 0) {
0x000358d0 bne 0x35a14 | goto label_68;
| }
0x000358d4 ldr r1, [pc, 0x5c8] | r1 = *(0x35ea0);
0x000358d8 add r1, pc, r1 | r1 = pc + r1;
0x000358dc b 0x355b4 | goto label_8;
| label_61:
0x000358e0 cmp r8, 0 |
| if (r8 != 0) {
0x000358e4 bne 0x35a14 | goto label_68;
| }
0x000358e8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000358ec ldr r1, [sp, 8] | r1 = var_8h;
0x000358f0 cmp r3, 0 |
| if (r3 != 0) {
0x000358f4 moveq r3, r1 | r3 = r1;
| }
0x000358f8 str r3, [sp, 0x14] | var_14h = r3;
| label_59:
0x000358fc ldr r1, [sp, 0x14] | r1 = var_14h;
0x00035900 mov r0, sb | r0 = sb;
0x00035904 bl 0x56ac | r0 = SSL_CTX_use_PrivateKey_file ();
0x00035908 cmp r0, 1 |
| if (r0 == 1) {
0x0003590c beq 0x35a14 | goto label_68;
| }
0x00035910 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00035914 cmp r3, 0 |
| if (r3 != 0) {
0x00035918 ldreq r3, [pc, 0x588] | r3 = *((pc + 0x588));
| }
| if (r3 != 0) {
0x0003591c addeq r3, pc, r3 | r3 = pc + r3;
| }
| if (r3 != 0) {
0x00035920 streq r3, [sp, 0x20] | var_20h = r3;
| }
0x00035924 ldr r1, [pc, 0x580] | r1 = *(0x35ea8);
0x00035928 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0003592c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00035930 add r1, pc, r1 | r1 = pc + r1;
0x00035934 b 0x3560c | goto label_16;
| label_67:
0x00035938 add sl, r7, 0x4000 | sl = r7 + 0x4000;
0x0003593c ldr r3, [sl, 0x8a8] | r3 = *((sl + 0x8a8));
0x00035940 cmp r3, 0 |
| if (r3 == 0) {
0x00035944 beq 0x35a30 | goto label_69;
| }
0x00035948 ldr r0, [pc, 0x560] | r0 = *(0x35eac);
0x0003594c add r0, pc, r0 | r0 = pc + r0;
0x00035950 bl 0x4f50 | r0 = UI_create_method ();
0x00035954 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x00035958 ldreq r1, [pc, 0x554] | r1 = *((pc + 0x554));
| }
| if (r8 == r0) {
0x0003595c addeq r1, pc, r1 | r1 = pc + r1;
| goto label_70;
| }
| if (r8 == r0) {
| label_70:
0x00035960 beq 0x355b4 | goto label_8;
| }
0x00035964 bl 0x5a54 | UI_OpenSSL ();
0x00035968 bl 0x5148 | r0 = UI_method_get_opener ();
0x0003596c mov r1, r0 | r1 = r0;
0x00035970 mov r0, r8 | r0 = r8;
0x00035974 bl 0x5538 | UI_method_set_opener ();
0x00035978 bl 0x5a54 | UI_OpenSSL ();
0x0003597c bl 0x52f8 | r0 = UI_method_get_closer ();
0x00035980 mov r1, r0 | r1 = r0;
0x00035984 mov r0, r8 | r0 = r8;
0x00035988 bl 0x50a0 | UI_method_set_closer ();
0x0003598c ldr r1, [pc, 0x524] | r1 = *(0x35eb4);
0x00035990 mov r0, r8 | r0 = r8;
0x00035994 add r1, pc, r1 | r1 = pc + r1;
0x00035998 bl 0x4ee4 | UI_method_set_reader ();
0x0003599c ldr r1, [pc, 0x518] | r1 = *(0x35eb8);
0x000359a0 mov r0, r8 | r0 = r8;
0x000359a4 add r1, pc, r1 | r1 = pc + r1;
0x000359a8 bl 0x57b4 | UI_method_set_writer ();
0x000359ac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000359b0 mov r2, r8 | r2 = r8;
0x000359b4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000359b8 ldr r0, [sl, 0x8a8] | r0 = *((sl + 0x8a8));
0x000359bc bl 0x52e0 | r0 = ENGINE_load_private_key ();
0x000359c0 mov sl, r0 | sl = r0;
0x000359c4 mov r0, r8 | r0 = r8;
0x000359c8 bl 0x5238 | UI_destroy_method ();
0x000359cc cmp sl, 0 |
| if (sl != 0) {
0x000359d0 ldreq r1, [pc, 0x4e8] | r1 = *((pc + 0x4e8));
| }
| if (sl == 0) {
0x000359d4 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_71;
| }
| if (sl == 0) {
| label_71:
0x000359d8 beq 0x355b4 | goto label_8;
| }
0x000359dc mov r1, sl | r1 = sl;
0x000359e0 mov r0, sb | r0 = sb;
0x000359e4 bl 0x5484 | r0 = SSL_CTX_use_PrivateKey ();
0x000359e8 cmp r0, 1 |
| if (r0 != 1) {
0x000359ec beq 0x35a0c |
0x000359f0 ldr r1, [pc, 0x4cc] | r1 = *(0x35ec0);
0x000359f4 mov r0, r7 | r0 = r7;
0x000359f8 add r1, pc, r1 | r1 = pc + r1;
0x000359fc bl 0x10544 | Curl_failf ();
0x00035a00 mov r0, sl | r0 = sl;
0x00035a04 bl 0x59c4 | EVP_PKEY_free ();
0x00035a08 b 0x35654 | goto label_10;
| }
0x00035a0c mov r0, sl | r0 = sl;
0x00035a10 bl 0x59c4 | EVP_PKEY_free ();
| label_68:
0x00035a14 mov r0, sb | r0 = sb;
0x00035a18 bl 0x5370 | r0 = SSL_new ();
0x00035a1c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x00035a20 bne 0x35a3c |
0x00035a24 ldr r1, [pc, 0x49c] | r1 = *(0x35ec4);
0x00035a28 add r1, pc, r1 | r1 = pc + r1;
0x00035a2c b 0x355b4 | goto label_8;
| label_69:
0x00035a30 ldr r1, [pc, 0x494] | r1 = *(0x35ec8);
0x00035a34 add r1, pc, r1 | r1 = pc + r1;
0x00035a38 b 0x355b4 | goto label_8;
| }
0x00035a3c bl 0x59a0 | r0 = SSL_get_certificate ();
0x00035a40 cmp r0, 0 |
0x00035a44 str r0, [sp, 0x40] | var_40h = r0;
| if (r0 != 0) {
0x00035a48 beq 0x35a70 |
0x00035a4c bl 0x507c | r0 = X509_get_pubkey ();
0x00035a50 mov sl, r0 | sl = r0;
0x00035a54 mov r0, r8 | r0 = r8;
0x00035a58 bl 0x5010 | r0 = SSL_get_privatekey ();
0x00035a5c mov r1, r0 | r1 = r0;
0x00035a60 mov r0, sl | r0 = sl;
0x00035a64 bl 0x5be0 | EVP_PKEY_copy_parameters ();
0x00035a68 mov r0, sl | r0 = sl;
0x00035a6c bl 0x59c4 | EVP_PKEY_free ();
| }
0x00035a70 mov r0, r8 | r0 = r8;
0x00035a74 bl 0x5010 | r0 = SSL_get_privatekey ();
0x00035a78 mov sl, r0 | sl = r0;
0x00035a7c bl 0x5178 | r0 = EVP_PKEY_id ();
0x00035a80 cmp r0, 6 |
| if (r0 == 6) {
0x00035a84 bne 0x35aac |
0x00035a88 mov r0, sl | r0 = sl;
0x00035a8c bl 0x5b44 | r0 = EVP_PKEY_get1_RSA ();
0x00035a90 mov sl, r0 | sl = r0;
0x00035a94 bl 0x5ab4 | r0 = RSA_flags ();
0x00035a98 mvn r0, r0 | r0 = ~r0;
0x00035a9c and r3, r0, 1 | r3 = r0 & 1;
0x00035aa0 mov r0, sl | r0 = sl;
0x00035aa4 str r3, [sp, 0x30] | size = r3;
0x00035aa8 bl 0x5a6c | RSA_free ();
| }
0x00035aac mov r0, r8 | r0 = r8;
0x00035ab0 bl 0x56e8 | SSL_free ();
0x00035ab4 ldr r3, [sp, 0x30] | r3 = size;
0x00035ab8 cmp r3, 0 |
| if (r3 == 0) {
0x00035abc beq 0x35ad8 | goto label_46;
| }
0x00035ac0 mov r0, sb | r0 = sb;
0x00035ac4 bl 0x57cc | r0 = SSL_CTX_check_private_key ();
0x00035ac8 cmp r0, 0 |
| if (r0 != 0) {
0x00035acc ldreq r1, [pc, 0x3fc] | r1 = *((pc + 0x3fc));
| }
| if (r0 == 0) {
0x00035ad0 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_72;
| }
| if (r0 == 0) {
| label_72:
0x00035ad4 beq 0x355b4 | goto label_8;
| }
| label_46:
0x00035ad8 ldr r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x00035adc cmp r3, 2 |
| if (r3 != 2) {
0x00035ae0 bne 0x35b5c | goto label_73;
| }
0x00035ae4 ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035ae8 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00035aec movne r3, 1 | r3 = 1;
| }
0x00035af0 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00035af4 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035af8 cmp r3, 2 |
| if (r3 == 2) {
0x00035afc beq 0x35b5c | goto label_73;
| }
0x00035b00 ldr r7, [r4, 0x248] | r7 = *((r4 + 0x248));
0x00035b04 cmp r7, 0 |
0x00035b08 bne 0x35b68 |
| while (r3 == 2) {
0x00035b0c ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035b10 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00035b14 movne r3, 1 | r3 = 1;
| }
0x00035b18 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00035b1c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035b20 cmp r3, 2 |
| if (r3 == 2) {
0x00035b24 ldrne r8, [r4, 0x24c] | r8 = *((r4 + 0x24c));
| }
| if (r3 == 2) {
0x00035b28 beq 0x35bb8 | goto label_74;
| }
| label_17:
0x00035b2c cmp r8, 0 |
| if (r8 == 0) {
0x00035b30 beq 0x35bd4 | goto label_75;
| }
0x00035b34 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035b38 mov r1, r8 | r1 = r8;
0x00035b3c ldr r0, [r3] | r0 = *(r3);
0x00035b40 bl 0x504c | r0 = SSL_CTX_set_ciphersuites ();
0x00035b44 cmp r0, 0 |
| if (r0 != 0) {
0x00035b48 bne 0x35bc0 | goto label_76;
| }
0x00035b4c ldr r1, [pc, 0x380] | r1 = *(0x35ed0);
0x00035b50 mov r2, r7 | r2 = r7;
0x00035b54 add r1, pc, r1 | r1 = pc + r1;
0x00035b58 b 0x35b8c | goto label_77;
| label_73:
0x00035b5c ldr r7, [r4, 0x220] | r7 = *((r4 + 0x220));
0x00035b60 cmp r7, 0 |
| if (r7 != 0) {
0x00035b64 beq 0x35bac |
0x00035b68 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035b6c mov r1, r7 | r1 = r7;
0x00035b70 ldr r0, [r3] | r0 = *(r3);
0x00035b74 bl 0x4e90 | SSL_CTX_set_cipher_list ();
0x00035b78 mov r2, r7 | r2 = r7;
0x00035b7c cmp r0, 0 |
| if (r0 == 0) {
0x00035b80 bne 0x35b9c |
0x00035b84 ldr r1, [pc, 0x34c] | r1 = *(0x35ed4);
0x00035b88 add r1, pc, r1 | r1 = pc + r1;
| label_77:
0x00035b8c mov r0, r5 | r0 = r5;
0x00035b90 bl 0x10544 | Curl_failf ();
0x00035b94 mov fp, 0x3b |
0x00035b98 b 0x350cc | goto label_1;
| }
0x00035b9c ldr r1, [pc, 0x338] | r1 = *(0x35ed8);
0x00035ba0 mov r0, r5 | r0 = r5;
0x00035ba4 add r1, pc, r1 | r1 = pc + r1;
0x00035ba8 bl 0x104cc | Curl_infof ();
| }
0x00035bac ldr r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x00035bb0 cmp r3, 2 |
0x00035bb4 beq 0x35b0c |
| }
| label_74:
0x00035bb8 ldr r8, [r4, 0x224] | r8 = *((r4 + 0x224));
0x00035bbc b 0x35b2c | goto label_17;
| label_76:
0x00035bc0 ldr r1, [pc, 0x318] | r1 = *(0x35edc);
0x00035bc4 mov r2, r8 | r2 = r8;
0x00035bc8 add r1, pc, r1 | r1 = pc + r1;
0x00035bcc mov r0, r5 | r0 = r5;
0x00035bd0 bl 0x104cc | Curl_infof ();
| label_75:
0x00035bd4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00035bd8 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00035bdc cmp r2, 0 |
0x00035be0 cmpeq r3, 0 | __asm ("cmpeq r3, 0");
| if (r2 == 0) {
0x00035be4 beq 0x35ca4 | goto label_78;
| }
0x00035be8 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035bec ldr r1, [sp, 0xc] | r1 = var_ch;
0x00035bf0 ldr r0, [r3] | r0 = *(r3);
0x00035bf4 bl 0x5430 | r0 = SSL_CTX_load_verify_locations ();
0x00035bf8 cmp r0, 0 |
| if (r0 != 0) {
0x00035bfc bne 0x35cf4 | goto label_79;
| }
0x00035c00 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00035c04 cmp r3, 0 |
| if (r3 == 0) {
0x00035c08 beq 0x35c5c | goto label_80;
| }
0x00035c0c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00035c10 cmp r3, 0 |
| if (r3 == 0) {
0x00035c14 beq 0x35c4c | goto label_81;
| }
0x00035c18 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00035c1c cmp r3, 0 |
| if (r3 != 0) {
0x00035c20 ldreq r3, [pc, 0x2bc] | r3 = "ethod_get_closer";
| }
| if (r3 != 0) {
0x00035c24 addeq r3, pc, r3 | r3 = pc + r3;
| }
0x00035c28 streq r3, [sp, 0x10] | var_10h = r3;
| while (1) {
0x00035c2c ldr r1, [pc, 0x2b4] | r1 = "ethod_get_closer";
0x00035c30 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00035c34 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00035c38 add r1, pc, r1 | r1 = pc + r1;
0x00035c3c mov r0, r5 | r0 = r5;
0x00035c40 bl 0x10544 | Curl_failf ();
0x00035c44 mov fp, 0x4d |
0x00035c48 b 0x350cc | goto label_1;
| label_81:
0x00035c4c ldr r3, [pc, 0x298] | r3 = *(0x35ee8);
0x00035c50 add r3, pc, r3 | r3 = pc + r3;
0x00035c54 str r3, [sp, 0xc] | var_ch = r3;
0x00035c58 b 0x35c2c |
| }
| label_80:
0x00035c5c ldr r1, [pc, 0x28c] | r1 = "_";
0x00035c60 add r1, pc, r1 | r1 = pc + r1;
| do {
0x00035c64 mov r0, r5 | r0 = r5;
0x00035c68 bl 0x104cc | Curl_infof ();
0x00035c6c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00035c70 cmp r3, 0 |
| if (r3 == 0) {
0x00035c74 beq 0x35d00 | goto label_82;
| }
0x00035c78 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00035c7c cmp r3, 0 |
| if (r3 != 0) {
0x00035c80 ldreq r3, [pc, 0x26c] | r3 = "der_byname";
| }
| if (r3 != 0) {
0x00035c84 addeq r3, pc, r3 | r3 = pc + r3;
| }
| if (r3 != 0) {
0x00035c88 streq r3, [sp, 0x10] | var_10h = r3;
| }
| label_18:
0x00035c8c ldr r1, [pc, 0x264] | r1 = "der_byname";
0x00035c90 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00035c94 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00035c98 add r1, pc, r1 | r1 = pc + r1;
0x00035c9c mov r0, r5 | r0 = r5;
0x00035ca0 bl 0x104cc | Curl_infof ();
| label_78:
0x00035ca4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00035ca8 cmp r3, 0 |
| if (r3 == 0) {
0x00035cac beq 0x35d5c | goto label_83;
| }
0x00035cb0 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035cb4 ldr r0, [r3] | r0 = *(r3);
0x00035cb8 bl 0x54c0 | r0 = SSL_CTX_get_cert_store ();
0x00035cbc mov r7, r0 | r7 = r0;
0x00035cc0 bl 0x5328 | r0 = X509_LOOKUP_file ();
0x00035cc4 mov r1, r0 | r1 = r0;
0x00035cc8 mov r0, r7 | r0 = r7;
0x00035ccc bl 0x56dc | r0 = X509_STORE_add_lookup ();
0x00035cd0 cmp r0, 0 |
| if (r0 != 0) {
0x00035cd4 bne 0x35d10 | goto label_84;
| }
| label_19:
0x00035cd8 ldr r1, [pc, 0x21c] | r1 = *(0x35ef8);
0x00035cdc ldr r2, [sp, 0x18] | r2 = var_18h;
0x00035ce0 add r1, pc, r1 | r1 = pc + r1;
0x00035ce4 mov r0, r5 | r0 = r5;
0x00035ce8 bl 0x10544 | Curl_failf ();
0x00035cec mov fp, 0x52 |
0x00035cf0 b 0x350cc | goto label_1;
| label_79:
0x00035cf4 ldr r1, [pc, 0x204] | r1 = *(0x35efc);
0x00035cf8 add r1, pc, r1 | r1 = pc + r1;
0x00035cfc b 0x35c64 |
| } while (1);
| label_82:
0x00035d00 ldr r3, [pc, 0x1fc] | r3 = *(0x35f00);
0x00035d04 add r3, pc, r3 | r3 = pc + r3;
0x00035d08 str r3, [sp, 0xc] | var_ch = r3;
0x00035d0c b 0x35c8c | goto label_18;
| label_84:
0x00035d10 mov r2, 1 | r2 = 1;
0x00035d14 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00035d18 bl 0x4f38 | r0 = X509_load_crl_file ();
0x00035d1c cmp r0, 0 |
| if (r0 == 0) {
0x00035d20 beq 0x35cd8 | goto label_19;
| }
0x00035d24 ldr r1, [pc, 0x1dc] | r1 = *(0x35f04);
0x00035d28 mov r0, r5 | r0 = r5;
0x00035d2c add r1, pc, r1 | r1 = pc + r1;
0x00035d30 bl 0x104cc | Curl_infof ();
0x00035d34 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035d38 ldr r0, [r3] | r0 = *(r3);
0x00035d3c bl 0x54c0 | SSL_CTX_get_cert_store ();
0x00035d40 mov r1, 0xc | r1 = 0xc;
0x00035d44 bl 0x56d0 | X509_STORE_set_flags ();
0x00035d48 ldr r1, [pc, 0x1bc] | r1 = *(0x35f08);
0x00035d4c ldr r2, [sp, 0x18] | r2 = var_18h;
0x00035d50 add r1, pc, r1 | r1 = pc + r1;
0x00035d54 mov r0, r5 | r0 = r5;
0x00035d58 bl 0x104cc | Curl_infof ();
| label_83:
0x00035d5c ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035d60 mov r2, 0 | r2 = 0;
0x00035d64 ldr r0, [r3] | r0 = *(r3);
0x00035d68 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00035d6c bl 0x5c1c | SSL_CTX_set_verify ();
0x00035d70 ldr r3, [pc, 0x198] |
0x00035d74 add r3, pc, r3 | r3 = pc + r3;
0x00035d78 ldr r3, [r3] | r3 = *(0x35f0c);
0x00035d7c cmp r3, 0 |
| if (r3 != 0) {
0x00035d80 beq 0x35d98 |
0x00035d84 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035d88 ldr r1, [pc, 0x184] | r1 = *(0x35f10);
0x00035d8c ldr r0, [r3] | r0 = *(r3);
0x00035d90 add r1, pc, r1 | r1 = pc + r1;
0x00035d94 bl 0x5664 | SSL_CTX_set_keylog_callback ();
| }
0x00035d98 ldr r3, [r5, 0x414] | r3 = *((r5 + 0x414));
0x00035d9c ldr r1, [r6, 0x1c8] | r1 = *((r6 + 0x1c8));
0x00035da0 cmp r3, 0 |
| if (r3 != 0) {
0x00035da4 beq 0x35dd8 |
0x00035da8 ldr r2, [r5, 0x418] | r2 = *((r5 + 0x418));
0x00035dac ldr r1, [r1] | r1 = *(r1);
0x00035db0 mov r0, r5 | r0 = r5;
0x00035db4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00035db8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x00035dbc beq 0x35dd8 | goto label_85;
| }
0x00035dc0 ldr r1, [pc, 0x150] | r1 = *(0x35f14);
0x00035dc4 mov r0, r5 | r0 = r5;
0x00035dc8 add r1, pc, r1 | r1 = pc + r1;
0x00035dcc bl 0x10544 | Curl_failf ();
0x00035dd0 mov fp, r7 |
0x00035dd4 b 0x350cc | goto label_1;
| }
| label_85:
0x00035dd8 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035ddc ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00035de0 cmp r0, 0 |
| if (r0 != 0) {
0x00035de4 beq 0x35dec |
0x00035de8 bl 0x56e8 | SSL_free ();
| }
0x00035dec ldr r7, [r6, 0x1c8] | r7 = *((r6 + 0x1c8));
0x00035df0 ldr r0, [r7] | r0 = *(r7);
0x00035df4 bl 0x5370 | SSL_new ();
0x00035df8 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035dfc str r0, [r7, 4] | *((r7 + 4)) = r0;
0x00035e00 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00035e04 cmp r0, 0 |
| if (r0 == 0) {
0x00035e08 bne 0x35f30 |
0x00035e0c ldr r1, [pc, 0x108] | r1 = *(0x35f18);
0x00035e10 mov r0, r5 | r0 = r5;
0x00035e14 add r1, pc, r1 | r1 = pc + r1;
0x00035e18 bl 0x10544 | Curl_failf ();
0x00035e1c b 0x35140 | goto label_20;
| }
0x00035f30 ldr r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x00035f34 cmp r3, 2 |
| if (r3 == 2) {
0x00035f38 bne 0x35f5c |
0x00035f3c ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00035f40 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00035f44 movne r3, 1 | r3 = 1;
| }
0x00035f48 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x00035f4c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00035f50 cmp r3, 2 |
| if (r3 == 2) {
0x00035f54 ldrbne r3, [r4, 0x232] | r3 = *((r4 + 0x232));
| }
| if (r3 != 2) {
0x00035f58 bne 0x35f60 | goto label_86;
| }
| }
0x00035f5c ldrb r3, [r4, 0x20a] | r3 = *((r4 + 0x20a));
| label_86:
0x00035f60 cmp r3, 0 |
| if (r3 != 0) {
0x00035f64 beq 0x35f78 |
0x00035f68 mov r3, 0 | r3 = 0;
0x00035f6c mov r2, 1 | r2 = 1;
0x00035f70 mov r1, 0x41 | r1 = 0x41;
0x00035f74 bl 0x5a0c | SSL_ctrl ();
| }
0x00035f78 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035f7c add r7, sp, 0x48 | r7 += var_48h;
0x00035f80 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00035f84 bl 0x5a48 | SSL_set_connect_state ();
0x00035f88 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00035f8c mov r2, 0 | r2 = 0;
0x00035f90 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00035f94 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00035f98 mov r2, r7 | r2 = r7;
0x00035f9c mov r0, 2 | r0 = 2;
0x00035fa0 bl 0x5190 | r0 = inet_pton ();
0x00035fa4 cmp r0, 0 |
| if (r0 == 0) {
0x00035fa8 bne 0x35ff0 |
0x00035fac mov r2, r7 | r2 = r7;
0x00035fb0 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00035fb4 mov r0, 0xa | r0 = 0xa;
0x00035fb8 bl 0x5190 | r0 = inet_pton ();
0x00035fbc subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 != r0) {
0x00035fc0 bne 0x35ff0 | goto label_87;
| }
0x00035fc4 ldr ip, [r6, 0x1c8] | ip = *((r6 + 0x1c8));
0x00035fc8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00035fcc mov r1, 0x37 | r1 = 0x37;
0x00035fd0 ldr r0, [ip, 4] | r0 = *((ip + 4));
0x00035fd4 bl 0x5a0c | r0 = SSL_ctrl ();
0x00035fd8 cmp r0, 0 |
| if (r0 != 0) {
0x00035fdc bne 0x35ff0 | goto label_87;
| }
0x00035fe0 ldr r1, [pc, -0xc8] | r1 = *(0x35f1c);
0x00035fe4 mov r0, r5 | r0 = r5;
0x00035fe8 add r1, pc, r1 | r1 = pc + r1;
0x00035fec bl 0x104cc | Curl_infof ();
| }
| label_87:
0x00035ff0 ldr r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x00035ff4 cmp r3, 2 |
| if (r3 == 2) {
0x00035ff8 bne 0x3601c |
0x00035ffc ldr r3, [r4, 0x19c] | r3 = *((r4 + 0x19c));
0x00036000 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00036004 movne r3, 1 | r3 = 1;
| }
0x00036008 add r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x0003600c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00036010 cmp r3, 2 |
| if (r3 == 2) {
0x00036014 ldrbne r3, [r5, 0x43f] | r3 = *((r5 + 0x43f));
| }
| if (r3 != 2) {
0x00036018 bne 0x36020 | goto label_88;
| }
| }
0x0003601c ldrb r3, [r5, 0x3e7] | r3 = *((r5 + 0x3e7));
| label_88:
0x00036020 cmp r3, 0 |
| if (r3 != 0) {
0x00036024 beq 0x360bc |
0x00036028 mov r8, 0 | r8 = 0;
0x0003602c add r7, sp, 0x158 | r7 += var_158h;
0x00036030 mov r0, r4 | r0 = r4;
0x00036034 str r8, [r7, -0x114]! | *((r7 -= 0x114)) = r8;
0x00036038 bl 0x36f20 | Curl_ssl_sessionid_lock ();
0x0003603c ldr r3, [sp, 0x28] | r3 = var_28h;
0x00036040 mov r2, r8 | r2 = r8;
0x00036044 mov r1, r7 | r1 = r7;
0x00036048 mov r0, r4 | r0 = r4;
0x0003604c bl 0x36f6c | r0 = Curl_ssl_getsessionid ();
0x00036050 cmp r0, r8 |
| if (r0 == r8) {
0x00036054 bne 0x360b4 |
0x00036058 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x0003605c ldr r1, [sp, 0x44] | r1 = var_44h;
0x00036060 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00036064 bl 0x552c | r0 = SSL_set_session ();
0x00036068 cmp r0, r8 |
| if (r0 == r8) {
0x0003606c bne 0x360a4 |
0x00036070 mov r0, r4 | r0 = r4;
0x00036074 add r4, sp, 0x58 | r4 += var_58h;
0x00036078 bl 0x36f48 | Curl_ssl_sessionid_unlock ();
0x0003607c bl 0x4e9c | ERR_get_error ();
0x00036080 mov r2, 0x100 | r2 = 0x100;
0x00036084 mov r1, r4 | r1 = r4;
0x00036088 bl 0x5064 | ERR_error_string_n ();
0x0003608c ldr r1, [pc, -0x170] | r1 = *(0x00035f24);
0x00036090 mov r2, r4 | r2 = r4;
0x00036094 add r1, pc, r1 | r1 = pc + r1;
| label_22:
0x00036098 mov r0, r5 | r0 = r5;
0x0003609c bl 0x10544 | Curl_failf ();
0x000360a0 b 0x35164 | goto label_21;
| }
0x000360a4 ldr r1, [pc, -0x184] | r1 = *(0x00035f28);
0x000360a8 mov r0, r5 | r0 = r5;
0x000360ac add r1, pc, r1 | r1 = pc + r1;
0x000360b0 bl 0x104cc | Curl_infof ();
| }
0x000360b4 mov r0, r4 | r0 = r4;
0x000360b8 bl 0x36f48 | Curl_ssl_sessionid_unlock ();
| }
0x000360bc ldr r3, [sp, 0x28] | r3 = var_28h;
0x000360c0 add r4, r4, r3, lsl 4 | r4 += (r3 << 4);
0x000360c4 ldrb r3, [r4, 0x1dc] | r3 = *((r4 + 0x1dc));
0x000360c8 cmp r3, 0 |
| if (r3 == 0) {
0x000360cc beq 0x36110 | goto label_89;
| }
0x000360d0 bl 0x56a0 | BIO_f_ssl ();
0x000360d4 bl 0x540c | BIO_new ();
0x000360d8 ldr r3, [r6, 0x1e8] | r3 = *((r6 + 0x1e8));
0x000360dc mov r2, 0 | r2 = 0;
0x000360e0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000360e4 mov r1, 0x6d | r1 = 0x6d;
0x000360e8 mov r4, r0 | r4 = r0;
0x000360ec bl 0x5aa8 | BIO_ctrl ();
0x000360f0 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000360f4 mov r2, r4 | r2 = r4;
0x000360f8 mov r1, r4 | r1 = r4;
0x000360fc ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00036100 bl 0x58d4 | SSL_set_bio ();
| do {
0x00036104 mov r3, 1 | r3 = 1;
0x00036108 str r3, [r6, 0x1c4] | *((r6 + 0x1c4)) = r3;
0x0003610c b 0x350cc | goto label_1;
| label_89:
0x00036110 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00036114 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00036118 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0003611c bl 0x5214 | r0 = SSL_set_fd ();
0x00036120 cmp r0, 0 |
0x00036124 bne 0x36104 |
| } while (r0 != 0);
0x00036128 add r4, sp, 0x58 | r4 += var_58h;
0x0003612c bl 0x4e9c | ERR_get_error ();
0x00036130 mov r2, 0x100 | r2 = 0x100;
0x00036134 mov r1, r4 | r1 = r4;
0x00036138 bl 0x5064 | ERR_error_string_n ();
0x0003613c ldr r1, [pc, -0x218] | r1 = *(0x35f28);
0x00036140 mov r2, r4 | r2 = r4;
0x00036144 add r1, pc, r1 | r1 = pc + r1;
0x00036148 b 0x36098 | goto label_22;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x32880 */
| #include <stdint.h>
|
; (fcn) sym.ossl_connect_step2 () | void ossl_connect_step2 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| void * s2;
| char * dest;
| void * s;
| int32_t var_114h;
| r0 = arg1;
| r1 = arg2;
0x00032880 ldr r3, [r0, 0xf0] | r3 = *((r0 + 0xf0));
0x00032884 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00032888 ldr r7, [r0] | r7 = *(r0);
0x0003288c cmp r3, 2 |
0x00032890 sub sp, sp, 0x114 |
0x00032894 mov r5, r0 | r5 = r0;
0x00032898 mov r6, r1 | r6 = r1;
| if (r3 == 2) {
0x0003289c bne 0x328c0 |
0x000328a0 ldr r3, [r0, 0x19c] | r3 = *((r0 + 0x19c));
0x000328a4 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000328a8 movne r3, 1 | r3 = 1;
| }
0x000328ac add r3, r0, r3, lsl 4 | r3 = r0 + (r3 << 4);
0x000328b0 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000328b4 cmp r3, 2 |
| if (r3 == 2) {
0x000328b8 addne sl, r7, 0x460 | sl = r7 + 0x460;
| }
| if (r3 != 2) {
0x000328bc bne 0x328c8 | goto label_4;
| }
| }
0x000328c0 add sl, r7, 0x400 | sl = r7 + 0x400;
0x000328c4 add sl, sl, 8 | sl += 8;
| label_4:
0x000328c8 add r6, r5, r6, lsl 4 | r6 = r5 + (r6 << 4);
0x000328cc bl 0x5028 | ERR_clear_error ();
0x000328d0 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000328d4 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000328d8 bl 0x5628 | SSL_connect ();
0x000328dc ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x000328e0 cmp r0, 1 |
0x000328e4 mov r1, r0 | r1 = r0;
| if (r0 == 1) {
0x000328e8 beq 0x32a60 | goto label_5;
| }
0x000328ec ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000328f0 bl 0x5ba4 | SSL_get_error ();
0x000328f4 mov r1, 0 | r1 = 0;
0x000328f8 cmp r0, 2 |
0x000328fc mov r8, r0 | r8 = r0;
0x00032900 bne 0x32910 |
| while (r0 == 3) {
0x00032904 str r8, [r6, 0x1c4] | *((r6 + 0x1c4)) = r8;
| label_2:
0x00032908 mov r4, 0 | r4 = 0;
0x0003290c b 0x32a14 | goto label_1;
0x00032910 cmp r0, 3 |
0x00032914 beq 0x32904 |
| }
0x00032918 mov r2, 0xfc | r2 = 0xfc;
0x0003291c add r0, sp, 0x14 | r0 += s;
0x00032920 str r1, [sp, 0x10] | dest = r1;
0x00032924 bl 0x576c | memset (r0, r1, r2);
0x00032928 mov r3, 1 | r3 = 1;
0x0003292c str r3, [r6, 0x1c4] | *((r6 + 0x1c4)) = r3;
0x00032930 bl 0x4e9c | ERR_get_error ();
0x00032934 add sb, sp, 0x10 | sb += dest;
0x00032938 lsl r3, r0, 0x14 | r3 = r0 << 0x14;
0x0003293c lsr r2, r0, 0x18 | r2 = r0 >> 0x18;
0x00032940 lsr r3, r3, 0x14 | r3 >>= 0x14;
0x00032944 cmp r2, 0x14 |
0x00032948 cmpeq r3, 0x86 | __asm ("cmpeq r3, 0x86");
0x0003294c mov fp, r0 |
| if (r2 != 0x14) {
0x00032950 bne 0x32a34 | goto label_6;
| }
0x00032954 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00032958 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0003295c bl 0x57f0 | r0 = SSL_get_verify_result ();
0x00032960 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x00032964 beq 0x32a20 | goto label_7;
| }
0x00032968 str r3, [sl] | *(sl) = r3;
0x0003296c bl 0x5910 | X509_verify_cert_error_string ();
0x00032970 ldr r2, [pc, 0x23c] | r2 = *(0x32bb0);
0x00032974 mov r1, 0x100 | r1 = 0x100;
0x00032978 add r2, pc, r2 | r2 = pc + r2;
0x0003297c mov r3, r0 | r3 = r0;
0x00032980 mov r0, sb | r0 = sb;
0x00032984 bl 0x579c | fcn_0000579c ();
| do {
0x00032988 mov r4, 0x3c | r4 = 0x3c;
| label_0:
0x0003298c cmp r4, 0x23 |
0x00032990 cmpeq fp, 0 | __asm ("cmpeq fp, 0");
| if (r4 != 0x23) {
0x00032994 bne 0x32a48 | goto label_8;
| }
0x00032998 ldr r2, [r5, 0xf0] | r2 = *((r5 + 0xf0));
0x0003299c cmp r2, 2 |
| if (r2 == 2) {
0x000329a0 bne 0x329c4 |
0x000329a4 ldr r3, [r5, 0x19c] | r3 = *((r5 + 0x19c));
0x000329a8 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000329ac movne r3, 1 | r3 = 1;
| }
0x000329b0 add r3, r5, r3, lsl 4 | r3 = r5 + (r3 << 4);
0x000329b4 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000329b8 cmp r3, 2 |
| if (r3 == 2) {
0x000329bc ldrne r3, [r5, 0xe4] | r3 = *((r5 + 0xe4));
| }
| if (r3 != 2) {
0x000329c0 bne 0x329d0 | goto label_9;
| }
| }
0x000329c4 cmp r2, 2 |
0x000329c8 ldr r3, [r5, 0xa0] | r3 = *((r5 + 0xa0));
| if (r2 == 2) {
0x000329cc bne 0x329f0 |
| label_9:
0x000329d0 ldr r2, [r5, 0x19c] | r2 = *((r5 + 0x19c));
0x000329d4 adds r2, r2, 1 | r2++;
| if (r2 == r2) {
0x000329d8 movne r2, 1 | r2 = 1;
| }
0x000329dc add r2, r5, r2, lsl 4 | r2 = r5 + (r2 << 4);
0x000329e0 ldr r2, [r2, 0x1e0] | r2 = *((r2 + 0x1e0));
0x000329e4 cmp r2, 2 |
| if (r2 == 2) {
0x000329e8 ldrne r2, [r5, 0xfc] | r2 = *((r5 + 0xfc));
| }
| if (r2 != 2) {
0x000329ec bne 0x329f4 | goto label_10;
| }
| }
0x000329f0 ldr r2, [r5, 0x100] | r2 = *((r5 + 0x100));
| label_10:
0x000329f4 mov r0, r8 | r0 = r8;
0x000329f8 bl 0x31d0c | SSL_ERROR_to_str ();
0x000329fc ldr r1, [pc, 0x1b4] | r1 = "OW";
0x00032a00 add r1, pc, r1 | r1 = pc + r1;
0x00032a04 str r2, [sp] | *(sp) = r2;
0x00032a08 mov r2, r0 | r2 = r0;
0x00032a0c mov r0, r7 | r0 = r7;
0x00032a10 bl 0x10544 | Curl_failf ();
| label_1:
0x00032a14 mov r0, r4 | r0 = r4;
0x00032a18 add sp, sp, 0x114 |
0x00032a1c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00032a20 ldr r1, [pc, 0x194] | r1 = *(0x32bb8);
0x00032a24 mov r0, sb | r0 = sb;
0x00032a28 add r1, pc, r1 | r1 = pc + r1;
0x00032a2c bl 0x5c28 | strcpy (r0, r1);
0x00032a30 b 0x32988 |
| } while (1);
| label_6:
0x00032a34 mov r2, 0x100 | r2 = 0x100;
0x00032a38 mov r1, sb | r1 = sb;
0x00032a3c bl 0x5064 | ERR_error_string_n ();
0x00032a40 mov r4, 0x23 | r4 = 0x23;
0x00032a44 b 0x3298c | goto label_0;
| label_8:
0x00032a48 ldr r1, [pc, 0x170] | r1 = *(0x32bbc);
0x00032a4c mov r2, sb | r2 = sb;
0x00032a50 add r1, pc, r1 | r1 = pc + r1;
0x00032a54 mov r0, r7 | r0 = r7;
0x00032a58 bl 0x10544 | Curl_failf ();
0x00032a5c b 0x32a14 | goto label_1;
| label_5:
0x00032a60 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032a64 mov r2, 4 | r2 = 4;
0x00032a68 cmp r0, 0 |
0x00032a6c str r2, [r6, 0x1c4] | *((r6 + 0x1c4)) = r2;
| if (r0 == 0) {
0x00032a70 beq 0x32b94 | goto label_11;
| }
0x00032a74 bl 0x4fd4 | SSL_version ();
0x00032a78 ldr r3, [pc, 0x144] | r3 = *(0x32bc0);
0x00032a7c cmp r0, r3 |
| if (r0 == r3) {
0x00032a80 beq 0x32b70 | goto label_12;
| }
| if (r0 > r3) {
0x00032a84 bgt 0x32aa4 | goto label_13;
| }
0x00032a88 cmp r0, 2 |
| if (r0 == 2) {
0x00032a8c beq 0x32b88 | goto label_14;
| }
0x00032a90 cmp r0, 0x300 |
| if (r0 == 0x300) {
0x00032a94 beq 0x32b7c | goto label_15;
| }
| do {
0x00032a98 ldr r4, [pc, 0x128] | r4 = *(0x32bc4);
0x00032a9c add r4, pc, r4 | r4 = pc + r4;
0x00032aa0 b 0x32ad0 | goto label_3;
| label_13:
0x00032aa4 ldr r3, [pc, 0x120] | r3 = *(0x32bc8);
0x00032aa8 cmp r0, r3 |
| if (r0 == r3) {
0x00032aac beq 0x32ac8 | goto label_16;
| }
| if (r0 < r3) {
0x00032ab0 blt 0x32b64 | goto label_17;
| }
0x00032ab4 cmp r0, 0x304 |
0x00032ab8 bne 0x32a98 |
| } while (r0 != 0x304);
0x00032abc ldr r4, [pc, 0x10c] | r4 = *(0x32bcc);
0x00032ac0 add r4, pc, r4 | r4 = pc + r4;
0x00032ac4 b 0x32ad0 | goto label_3;
| label_16:
0x00032ac8 ldr r4, [pc, 0x104] | r4 = *(0x32bd0);
0x00032acc add r4, pc, r4 | r4 = pc + r4;
| label_3:
0x00032ad0 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00032ad4 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032ad8 bl 0x4f98 | SSL_get_current_cipher ();
0x00032adc bl 0x52bc | SSL_CIPHER_get_name ();
0x00032ae0 ldr r1, [pc, 0xf0] | r1 = *(0x32bd4);
0x00032ae4 mov r2, r4 | r2 = r4;
0x00032ae8 add r1, pc, r1 | r1 = pc + r1;
0x00032aec mov r3, r0 | r3 = r0;
0x00032af0 mov r0, r7 | r0 = r7;
0x00032af4 bl 0x104cc | Curl_infof ();
0x00032af8 ldrb r4, [r5, 0x270] | r4 = *((r5 + 0x270));
0x00032afc cmp r4, 0 |
| if (r4 == 0) {
0x00032b00 beq 0x32a14 | goto label_1;
| }
0x00032b04 ldr r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
0x00032b08 add r2, sp, 0x10 | r2 += dest;
0x00032b0c add r1, sp, 0xc | r1 += s2;
0x00032b10 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032b14 bl 0x51c0 | SSL_get0_alpn_selected ();
0x00032b18 ldr r2, [sp, 0x10] | r2 = dest;
0x00032b1c cmp r2, 0 |
| if (r2 == 0) {
0x00032b20 beq 0x32ba0 | goto label_18;
| }
0x00032b24 ldr r1, [pc, 0xb0] | r1 = *(0x32bd8);
0x00032b28 ldr r3, [sp, 0xc] | r3 = s2;
0x00032b2c add r1, pc, r1 | r1 = pc + r1;
0x00032b30 mov r0, r7 | r0 = r7;
0x00032b34 bl 0x104cc | Curl_infof ();
0x00032b38 ldr r2, [sp, 0x10] | r2 = dest;
0x00032b3c cmp r2, 8 |
| if (r2 != 8) {
0x00032b40 bne 0x32908 | goto label_2;
| }
0x00032b44 ldr r0, [pc, 0x94] | r0 = *(0x32bdc);
0x00032b48 ldr r1, [sp, 0xc] | r1 = s2;
0x00032b4c add r0, pc, r0 | r0 = pc + r0;
0x00032b50 bl 0x5820 | r0 = memcmp (r0, r1, r2);
0x00032b54 cmp r0, 0 |
| if (r0 != 0) {
0x00032b58 moveq r3, 2 | r3 = 2;
| }
| if (r0 != 0) {
0x00032b5c streq r3, [r5, 0x504] | *((r5 + 0x504)) = r3;
| }
0x00032b60 b 0x32908 | goto label_2;
| label_17:
0x00032b64 ldr r4, [pc, 0x78] | r4 = *(0x32be0);
0x00032b68 add r4, pc, r4 | r4 = pc + r4;
0x00032b6c b 0x32ad0 | goto label_3;
| label_12:
0x00032b70 ldr r4, [pc, 0x70] | r4 = *(0x32be4);
0x00032b74 add r4, pc, r4 | r4 = pc + r4;
0x00032b78 b 0x32ad0 | goto label_3;
| label_15:
0x00032b7c ldr r4, [pc, 0x68] | r4 = *(0x32be8);
0x00032b80 add r4, pc, r4 | r4 = pc + r4;
0x00032b84 b 0x32ad0 | goto label_3;
| label_14:
0x00032b88 ldr r4, [pc, 0x60] | r4 = *(0x32bec);
0x00032b8c add r4, pc, r4 | r4 = pc + r4;
0x00032b90 b 0x32ad0 | goto label_3;
| label_11:
0x00032b94 ldr r4, [pc, 0x58] | r4 = *(0x32bf0);
0x00032b98 add r4, pc, r4 | r4 = pc + r4;
0x00032b9c b 0x32ad0 | goto label_3;
| label_18:
0x00032ba0 ldr r1, [pc, 0x50] | r1 = *(0x32bf4);
0x00032ba4 mov r0, r7 | r0 = r7;
0x00032ba8 add r1, pc, r1 | r1 = pc + r1;
0x00032bac bl 0x104cc | Curl_infof ();
0x00032bb0 b 0x32908 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x32050 */
| #include <stdint.h>
|
; (fcn) sym.ossl_recv () | void ossl_recv (int32_t arg_118h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_100h;
| r0 = arg1;
| r1 = arg2;
0x00032050 push {r4, r5, r6, r7, r8, lr} |
0x00032054 mov r7, r0 | r7 = r0;
0x00032058 mov r5, r1 | r5 = r1;
0x0003205c sub sp, sp, 0x100 |
0x00032060 add r5, r7, r5, lsl 4 | r5 = r7 + (r5 << 4);
0x00032064 mov r8, r2 | r8 = r2;
0x00032068 mov r4, r3 | r4 = r3;
0x0003206c ldr r6, [sp, 0x118] | r6 = *(arg_118h);
0x00032070 bl 0x5028 | ERR_clear_error ();
0x00032074 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x00032078 cmp r4, 0 |
| if (r4 < 0) {
0x0003207c movge r2, r4 | r2 = r4;
| }
| if (r4 >= 0) {
0x00032080 mvnlt r2, 0x80000000 | r2 = ~0x80000000;
| }
0x00032084 mov r1, r8 | r1 = r8;
0x00032088 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0003208c bl 0x53f4 | r0 = SSL_read ();
0x00032090 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 > r0) {
0x00032094 bgt 0x320e0 | goto label_1;
| }
0x00032098 ldr r3, [r5, 0x1c8] | r3 = *((r5 + 0x1c8));
0x0003209c mov r1, r4 | r1 = r4;
0x000320a0 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000320a4 bl 0x5ba4 | r0 = SSL_get_error ();
0x000320a8 mov r5, r0 | r5 = r0;
0x000320ac cmp r0, 6 |
| if (r0 > 6) {
| /* switch table (7 cases) at 0x320b8 */
0x000320b0 addls pc, pc, r0, lsl 2 | pc += (r0 << 2);
| }
0x000320b4 b 0x320ec | goto label_2;
0x000320b8 b 0x320e0 | goto label_1;
0x000320bc b 0x320ec | goto label_2;
0x000320c0 b 0x320d4 | goto label_3;
0x000320c4 b 0x320d4 | goto label_3;
0x000320c8 b 0x320ec | goto label_2;
0x000320cc b 0x320ec | goto label_2;
0x000320d0 b 0x320e0 | goto label_1;
| label_3:
0x000320d4 mov r3, 0x51 | r3 = 0x51;
| label_0:
0x000320d8 mvn r4, 0 | r4 = ~0;
0x000320dc str r3, [r6] | *(r6) = r3;
| do {
| label_1:
0x000320e0 mov r0, r4 | r0 = r4;
0x000320e4 add sp, sp, 0x100 |
0x000320e8 pop {r4, r5, r6, r7, r8, pc} |
| label_2:
0x000320ec bl 0x4e9c | r0 = ERR_get_error ();
0x000320f0 adds r3, r0, 0 | r3 = r0 + 0;
| if (r3 == r0) {
0x000320f4 movne r3, 1 | r3 = 1;
| }
0x000320f8 orrs r4, r3, r4, lsr 31 | r4 = r3 | (r4 >> 31);
0x000320fc beq 0x320e0 |
| } while (r4 == r3);
0x00032100 cmp r0, 0 |
0x00032104 ldr r7, [r7] | r7 = *(r7);
| if (r0 == 0) {
0x00032108 beq 0x32140 | goto label_4;
| }
0x0003210c mov r4, sp | r4 = sp;
0x00032110 mov r2, 0x100 | r2 = 0x100;
0x00032114 mov r1, r4 | r1 = r4;
0x00032118 bl 0x5064 | ERR_error_string_n ();
| do {
0x0003211c bl 0x4eb4 | errno_location ();
0x00032120 ldr r1, [pc, 0x28] | r1 = *(0x3214c);
0x00032124 mov r2, r4 | r2 = r4;
0x00032128 add r1, pc, r1 | r1 = pc + r1;
0x0003212c ldr r3, [r0] | r3 = *(r0);
0x00032130 mov r0, r7 | r0 = r7;
0x00032134 bl 0x10544 | Curl_failf ();
0x00032138 mov r3, 0x38 | r3 = 0x38;
0x0003213c b 0x320d8 | goto label_0;
| label_4:
0x00032140 mov r0, r5 | r0 = r5;
0x00032144 bl 0x31d0c | r0 = SSL_ERROR_to_str ();
0x00032148 mov r4, r0 | r4 = r0;
0x0003214c b 0x3211c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x32e2c */
| #include <stdint.h>
|
; (fcn) sym.ossl_send () | void ossl_send (int32_t arg_120h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_104h;
| r0 = arg1;
| r1 = arg2;
0x00032e2c push {r4, r5, r6, r7, r8, sb, lr} |
0x00032e30 mov r4, r1 | r4 = r1;
0x00032e34 mov r5, r0 | r5 = r0;
0x00032e38 lsl r4, r4, 4 | r4 <<= 4;
0x00032e3c sub sp, sp, 0x104 |
0x00032e40 add r7, r5, r4 | r7 = r5 + r4;
0x00032e44 mov sb, r2 | sb = r2;
0x00032e48 mov r8, r3 | r8 = r3;
0x00032e4c ldr r6, [sp, 0x120] | r6 = *(arg_120h);
0x00032e50 bl 0x5028 | ERR_clear_error ();
0x00032e54 ldr r3, [r7, 0x1c8] | r3 = *((r7 + 0x1c8));
0x00032e58 cmp r8, 0 |
| if (r8 < 0) {
0x00032e5c movge r2, r8 | r2 = r8;
| }
| if (r8 >= 0) {
0x00032e60 mvnlt r2, 0x80000000 | r2 = ~0x80000000;
| }
0x00032e64 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032e68 mov r1, sb | r1 = sb;
0x00032e6c bl 0x50d0 | r0 = SSL_write ();
0x00032e70 cmp r0, 0 |
| if (r0 <= 0) {
0x00032e74 movgt r3, 0 | r3 = 0;
| }
| if (r0 <= 0) {
0x00032e78 strgt r3, [r6] | *(r6) = r3;
| }
| if (r0 > 0) {
0x00032e7c bgt 0x32ec0 | goto label_3;
| }
0x00032e80 ldr r3, [r7, 0x1c8] | r3 = *((r7 + 0x1c8));
0x00032e84 mov r1, r0 | r1 = r0;
0x00032e88 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032e8c bl 0x5ba4 | r0 = SSL_get_error ();
0x00032e90 sub r3, r0, 1 | r3 = r0 - 1;
0x00032e94 cmp r3, 4 |
| if (r3 > 4) {
| /* switch table (5 cases) at 0x32ea0 */
0x00032e98 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x00032e9c b 0x32f68 | goto label_4;
0x00032ea0 b 0x32ee8 | goto label_5;
0x00032ea4 b 0x32eb4 | goto label_6;
0x00032ea8 b 0x32eb4 | goto label_6;
0x00032eac b 0x32f68 | goto label_4;
0x00032eb0 b 0x32ec8 | goto label_7;
| label_6:
0x00032eb4 mov r3, 0x51 | r3 = 0x51;
| do {
0x00032eb8 mvn r0, 0 | r0 = ~0;
0x00032ebc str r3, [r6] | *(r6) = r3;
| label_3:
0x00032ec0 add sp, sp, 0x104 |
0x00032ec4 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_7:
0x00032ec8 bl 0x4eb4 | errno_location ();
0x00032ecc ldr r1, [pc, 0xbc] | r1 = *(0x32f8c);
0x00032ed0 add r1, pc, r1 | r1 = pc + r1;
0x00032ed4 ldr r2, [r0] | r2 = *(r0);
| label_0:
0x00032ed8 ldr r0, [r5] | r0 = *(r5);
| label_1:
0x00032edc bl 0x10544 | Curl_failf ();
| label_2:
0x00032ee0 mov r3, 0x37 | r3 = 0x37;
0x00032ee4 b 0x32eb8 |
| } while (1);
| label_5:
0x00032ee8 bl 0x4e9c | ERR_get_error ();
0x00032eec mov r7, sp | r7 = sp;
0x00032ef0 lsr r3, r0, 0x18 | r3 = r0 >> 0x18;
0x00032ef4 cmp r3, 0x14 |
| if (r3 == 0x14) {
0x00032ef8 bne 0x32f44 |
0x00032efc lsl r3, r0, 0x14 | r3 = r0 << 0x14;
0x00032f00 lsr r3, r3, 0x14 | r3 >>= 0x14;
0x00032f04 cmp r3, 0x80 |
| if (r3 != 0x80) {
0x00032f08 bne 0x32f44 | goto label_8;
| }
0x00032f0c add r4, r5, r4 | r4 = r5 + r4;
0x00032f10 ldr r3, [r4, 0x1c0] | r3 = *((r4 + 0x1c0));
0x00032f14 cmp r3, 2 |
| if (r3 != 2) {
0x00032f18 bne 0x32f44 | goto label_8;
| }
0x00032f1c ldr r3, [r4, 0x1e0] | r3 = *((r4 + 0x1e0));
0x00032f20 cmp r3, 2 |
| if (r3 != 2) {
0x00032f24 bne 0x32f44 | goto label_8;
| }
0x00032f28 mov r1, 0x78 | r1 = 0x78;
0x00032f2c mov r0, r7 | r0 = r7;
0x00032f30 bl 0x32d5c | Curl_ossl_version ();
0x00032f34 ldr r1, [pc, 0x58] | r1 = *(0x32f90);
0x00032f38 mov r2, r7 | r2 = r7;
0x00032f3c add r1, pc, r1 | r1 = pc + r1;
0x00032f40 b 0x32ed8 | goto label_0;
| }
| label_8:
0x00032f44 mov r2, 0x100 | r2 = 0x100;
0x00032f48 mov r1, r7 | r1 = r7;
0x00032f4c ldr r4, [r5] | r4 = *(r5);
0x00032f50 bl 0x5064 | ERR_error_string_n ();
0x00032f54 ldr r1, [pc, 0x3c] | r1 = *(0x32f94);
0x00032f58 mov r2, r7 | r2 = r7;
0x00032f5c add r1, pc, r1 | r1 = pc + r1;
0x00032f60 mov r0, r4 | r0 = r4;
0x00032f64 b 0x32edc | goto label_1;
| label_4:
0x00032f68 bl 0x31d0c | r0 = SSL_ERROR_to_str ();
0x00032f6c mov r4, r0 | r4 = r0;
0x00032f70 bl 0x4eb4 | errno_location ();
0x00032f74 ldr r1, [pc, 0x20] | r1 = *(0x32f98);
0x00032f78 mov r2, r4 | r2 = r4;
0x00032f7c add r1, pc, r1 | r1 = pc + r1;
0x00032f80 ldr r3, [r0] | r3 = *(r0);
0x00032f84 ldr r0, [r5] | r0 = *(r5);
0x00032f88 bl 0x10544 | Curl_failf ();
0x00032f8c b 0x32ee0 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x10bc4 */
| #include <stdint.h>
|
; (fcn) sym.parse_proxy_auth () | void parse_proxy_auth (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| char * dest;
| void * s;
| int32_t var_107h;
| char * var_108h;
| void * var_10ch;
| int32_t var_207h;
| int32_t var_20ch;
| r0 = arg1;
| r1 = arg2;
0x00010bc4 push {r4, r5, r6, r7, lr} |
0x00010bc8 mov r4, 0 | r4 = 0;
0x00010bcc sub sp, sp, 0x20c |
0x00010bd0 mov r5, r0 | r5 = r0;
0x00010bd4 mov r2, 0xfc | r2 = 0xfc;
0x00010bd8 mov r6, r1 | r6 = r1;
0x00010bdc add r0, sp, 0xc | r0 += s;
0x00010be0 mov r1, r4 | r1 = r4;
0x00010be4 str r4, [sp, 8] | dest = r4;
0x00010be8 bl 0x576c | memset (r0, r1, r2);
0x00010bec mov r1, r4 | r1 = r4;
0x00010bf0 mov r2, 0xfc | r2 = 0xfc;
0x00010bf4 add r0, sp, 0x10c | r0 += var_10ch;
0x00010bf8 str r4, [sp, 0x108] | var_108h = r4;
0x00010bfc bl 0x576c | memset (r0, r1, r2);
0x00010c00 ldr r1, [r5, 0x5c0] | r1 = *((r5 + 0x5c0));
0x00010c04 add r7, sp, 8 | r7 += dest;
0x00010c08 cmp r1, r4 |
| if (r1 != r4) {
0x00010c0c beq 0x10c20 |
0x00010c10 mov r2, 0x100 | r2 = 0x100;
0x00010c14 mov r0, r7 | r0 = r7;
0x00010c18 bl 0x5670 | strncpy (r0, r1, r2);
0x00010c1c strb r4, [sp, 0x107] | var_107h = r4;
| }
0x00010c20 ldr r1, [r5, 0x5c4] | r1 = *((r5 + 0x5c4));
0x00010c24 cmp r1, 0 |
| if (r1 != 0) {
0x00010c28 beq 0x10c40 |
0x00010c2c mov r2, 0x100 | r2 = 0x100;
0x00010c30 add r0, sp, 0x108 | r0 += var_108h;
0x00010c34 bl 0x5670 | strncpy (r0, r1, r2);
0x00010c38 mov r3, 0 | r3 = 0;
0x00010c3c strb r3, [sp, 0x207] | var_207h = r3;
| }
0x00010c40 mov r2, 0 | r2 = 0;
0x00010c44 str r2, [sp, 4] | var_4h = r2;
0x00010c48 str r2, [sp] | *(sp) = r2;
0x00010c4c add r3, r6, 0xf4 | r3 = r6 + 0xf4;
0x00010c50 mov r1, r7 | r1 = r7;
0x00010c54 mov r0, r5 | r0 = r5;
0x00010c58 bl 0x157d4 | r0 = Curl_urldecode ();
0x00010c5c cmp r0, 0 |
| if (r0 == 0) {
0x00010c60 bne 0x10c80 |
0x00010c64 str r0, [sp, 4] | var_4h = r0;
0x00010c68 str r0, [sp] | *(sp) = r0;
0x00010c6c mov r2, r0 | r2 = r0;
0x00010c70 add r3, r6, 0xf8 | r3 = r6 + 0xf8;
0x00010c74 add r1, sp, 0x108 | r1 += var_108h;
0x00010c78 mov r0, r5 | r0 = r5;
0x00010c7c bl 0x157d4 | Curl_urldecode ();
| }
0x00010c80 add sp, sp, 0x20c |
0x00010c84 pop {r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x11e10 */
| #include <stdint.h>
|
; (fcn) sym.parse_proxy () | void parse_proxy (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| size_t nmeb;
| char * * endptr;
| char * * var_20h;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x00011e10 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00011e14 ldr fp, [pc, 0x54c] | fp = "did_not_agree_to_a_protocol";
0x00011e18 mov sl, r1 | sl = r1;
0x00011e1c ldr r1, [pc, 0x548] | r1 = "did_not_agree_to_a_protocol";
0x00011e20 sub sp, sp, 0x24 |
0x00011e24 mov sb, r0 | sb = r0;
0x00011e28 mov r8, r3 | r8 = r3;
0x00011e2c add r1, pc, r1 | r1 = pc + r1;
0x00011e30 mov r3, 0 | r3 = 0;
0x00011e34 mov r0, r2 | r0 = r2;
0x00011e38 mov r4, r2 | r4 = r2;
0x00011e3c str r3, [sp, 0x14] | var_14h = r3;
0x00011e40 str r3, [sp, 0x18] | nmeb = r3;
0x00011e44 bl 0x5a18 | strstr (r0, r1);
0x00011e48 add fp, pc, fp |
0x00011e4c cmp r0, 0 |
| if (r0 == 0) {
0x00011e50 beq 0x11f4c | goto label_9;
| }
0x00011e54 add r5, r0, 3 | r5 = r0 + 3;
0x00011e58 ldr r0, [pc, 0x510] | r0 = *(0x1236c);
0x00011e5c mov r2, 5 | r2 = 5;
0x00011e60 mov r1, r4 | r1 = r4;
0x00011e64 add r0, pc, r0 | r0 = pc + r0;
0x00011e68 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00011e6c cmp r0, 0 |
| if (r0 == 0) {
0x00011e70 movne r8, 2 | r8 = 2;
| }
| if (r0 != 0) {
0x00011e74 bne 0x11f50 | goto label_0;
| }
0x00011e78 ldr r0, [pc, 0x4f4] | r0 = *(0x12370);
0x00011e7c mov r2, 7 | r2 = 7;
0x00011e80 mov r1, r4 | r1 = r4;
0x00011e84 add r0, pc, r0 | r0 = pc + r0;
0x00011e88 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00011e8c cmp r0, 0 |
| if (r0 == 0) {
0x00011e90 movne r8, 7 | r8 = 7;
| }
| if (r0 != 0) {
0x00011e94 bne 0x11f50 | goto label_0;
| }
0x00011e98 ldr r0, [pc, 0x4d8] | r0 = *(0x12374);
0x00011e9c mov r2, 6 | r2 = 6;
0x00011ea0 mov r1, r4 | r1 = r4;
0x00011ea4 add r0, pc, r0 | r0 = pc + r0;
0x00011ea8 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00011eac cmp r0, 0 |
| if (r0 == 0) {
0x00011eb0 movne r8, 5 | r8 = 5;
| }
| if (r0 != 0) {
0x00011eb4 bne 0x11f50 | goto label_0;
| }
0x00011eb8 ldr r0, [pc, 0x4bc] | r0 = *(0x12378);
0x00011ebc mov r2, 7 | r2 = 7;
0x00011ec0 mov r1, r4 | r1 = r4;
0x00011ec4 add r0, pc, r0 | r0 = pc + r0;
0x00011ec8 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00011ecc cmp r0, 0 |
| if (r0 == 0) {
0x00011ed0 movne r8, 6 | r8 = 6;
| }
| if (r0 != 0) {
0x00011ed4 bne 0x11f50 | goto label_0;
| }
0x00011ed8 ldr r0, [pc, 0x4a0] | r0 = *(0x1237c);
0x00011edc mov r2, 6 | r2 = 6;
0x00011ee0 mov r1, r4 | r1 = r4;
0x00011ee4 add r0, pc, r0 | r0 = pc + r0;
0x00011ee8 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00011eec cmp r0, 0 |
| if (r0 != 0) {
0x00011ef0 bne 0x11f98 | goto label_10;
| }
0x00011ef4 ldr r0, [pc, 0x488] | r0 = *(0x12380);
0x00011ef8 mov r2, 5 | r2 = 5;
0x00011efc mov r1, r4 | r1 = r4;
0x00011f00 add r0, pc, r0 | r0 = pc + r0;
0x00011f04 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00011f08 cmp r0, 0 |
| if (r0 != 0) {
0x00011f0c bne 0x11f98 | goto label_10;
| }
0x00011f10 ldr r0, [pc, 0x470] | r0 = *(0x12384);
0x00011f14 mov r2, 5 | r2 = 5;
0x00011f18 mov r1, r4 | r1 = r4;
0x00011f1c add r0, pc, r0 | r0 = pc + r0;
0x00011f20 bl 0x5bd4 | r0 = fcn_00005bd4 ();
0x00011f24 cmp r0, 0 |
| if (r0 != 0) {
0x00011f28 bne 0x11f50 | goto label_0;
| }
0x00011f2c ldr r1, [pc, 0x458] | r1 = *(0x12388);
0x00011f30 mov r0, sb | r0 = sb;
0x00011f34 mov r2, r4 | r2 = r4;
0x00011f38 add r1, pc, r1 | r1 = pc + r1;
0x00011f3c bl 0x10544 | Curl_failf ();
0x00011f40 mov r0, 7 | r0 = 7;
| do {
| label_1:
0x00011f44 add sp, sp, 0x24 |
0x00011f48 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x00011f4c mov r5, r4 | r5 = r4;
| label_0:
0x00011f50 ldr r3, [pc, 0x438] |
0x00011f54 ldr r3, [fp, r3] | r3 = *((fp + r3));
0x00011f58 ldr r3, [r3] | r3 = *(0x1238c);
0x00011f5c ldr r6, [r3, 8] | r6 = *(0x12394);
0x00011f60 lsr r6, r6, 4 | r6 >>= 4;
0x00011f64 eor r6, r6, 1 | r6 ^= 1;
0x00011f68 cmp r8, 2 |
| if (r8 == 2) {
0x00011f6c movne r6, 0 | r6 = 0;
| }
| if (r8 != 2) {
0x00011f70 andeq r6, r6, 1 | r6 &= 1;
| }
0x00011f74 cmp r6, 0 |
| if (r6 == 0) {
0x00011f78 beq 0x11fa0 | goto label_11;
| }
0x00011f7c ldr r1, [pc, 0x410] | r1 = *(0x12390);
0x00011f80 mov r0, sb | r0 = sb;
0x00011f84 mov r2, r4 | r2 = r4;
0x00011f88 add r1, pc, r1 | r1 = pc + r1;
0x00011f8c bl 0x10544 | Curl_failf ();
0x00011f90 mov r0, 4 | r0 = 4;
0x00011f94 b 0x11f44 |
| } while (1);
| label_10:
0x00011f98 mov r8, 4 | r8 = 4;
0x00011f9c b 0x11f50 | goto label_0;
| label_11:
0x00011fa0 mov r1, 0x40 | r1 = 0x40;
0x00011fa4 mov r0, r5 | r0 = r5;
0x00011fa8 bl 0x5b38 | r0 = strchr (r0, r1);
0x00011fac subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00011fb0 beq 0x11fd8 | goto label_12;
| }
0x00011fb4 str r6, [sp] | *(sp) = r6;
0x00011fb8 add r3, sp, 0x18 | r3 += nmeb;
0x00011fbc add r2, sp, 0x14 | r2 += var_14h;
0x00011fc0 sub r1, r4, r5 | r1 = r4 - r5;
0x00011fc4 mov r0, r5 | r0 = r5;
0x00011fc8 bl 0x11ab8 | r0 = Curl_parse_login_details ();
0x00011fcc cmp r0, 0 |
| if (r0 != 0) {
0x00011fd0 bne 0x11f44 | goto label_1;
| }
0x00011fd4 add r5, r4, 1 | r5 = r4 + 1;
| label_12:
0x00011fd8 ldrb r3, [r5] | r3 = *(r5);
0x00011fdc cmp r3, 0x5b |
| if (r3 == 0x5b) {
0x00011fe0 movne r4, r5 | r4 = r5;
| }
| if (r3 != 0x5b) {
0x00011fe4 bne 0x120bc | goto label_13;
| }
0x00011fe8 add r5, r5, 1 | r5++;
0x00011fec mov r6, r5 | r6 = r5;
| label_3:
0x00011ff0 mov r4, r6 | r4 = r6;
0x00011ff4 ldrb r0, [r6], 1 | r0 = *(r6);
| r6++;
0x00011ff8 cmp r0, 0 |
| if (r0 != 0) {
0x00011ffc bne 0x1216c | goto label_14;
| }
| label_4:
0x00012000 ldrb r3, [r4] | r3 = *(r4);
0x00012004 cmp r3, 0x25 |
| if (r3 != 0x25) {
0x00012008 bne 0x12094 | goto label_15;
| }
0x0001200c ldr r0, [pc, 0x384] | r0 = *(0x12394);
0x00012010 mov r2, 3 | r2 = 3;
0x00012014 mov r1, r4 | r1 = r4;
0x00012018 add r0, pc, r0 | r0 = pc + r0;
0x0001201c bl 0x516c | r0 = strncmp (r0, r1, r2);
0x00012020 cmp r0, 0 |
| if (r0 != 0) {
0x00012024 beq 0x12038 |
0x00012028 ldr r1, [pc, 0x36c] | r1 = *(0x12398);
0x0001202c mov r0, sb | r0 = sb;
0x00012030 add r1, pc, r1 | r1 = pc + r1;
0x00012034 bl 0x104cc | Curl_infof ();
| }
0x00012038 add r6, r4, 1 | r6 = r4 + 1;
| do {
| label_2:
0x0001203c mov r4, r6 | r4 = r6;
0x00012040 ldrb r0, [r6], 1 | r0 = *(r6);
| r6++;
0x00012044 cmp r0, 0 |
| if (r0 == 0) {
0x00012048 beq 0x12094 | goto label_15;
| }
0x0001204c bl 0x2f99c | r0 = Curl_isalpha ();
0x00012050 cmp r0, 0 |
0x00012054 bne 0x1203c |
| } while (r0 != 0);
0x00012058 ldrb r0, [r6, -1] | r0 = *((r6 - 1));
0x0001205c bl 0x2f910 | r0 = Curl_isxdigit ();
0x00012060 cmp r0, 0 |
| if (r0 != 0) {
0x00012064 bne 0x1203c | goto label_2;
| }
0x00012068 ldrb r3, [r6, -1] | r3 = *((r6 - 1));
0x0001206c cmp r3, 0x5f |
0x00012070 cmpne r3, 0x7e | __asm ("cmpne r3, 0x7e");
| if (r3 != 0x5f) {
0x00012074 moveq r2, 1 | r2 = 1;
| }
| if (r3 == 0x5f) {
0x00012078 movne r2, 0 | r2 = 0;
| }
0x0001207c sub r3, r3, 0x2d | r3 -= 0x2d;
0x00012080 cmp r3, 1 |
| if (r3 <= 1) {
0x00012084 movhi r3, r2 | r3 = r2;
| }
| if (r3 > 1) {
0x00012088 orrls r3, r2, 1 | r3 = r2 | 1;
| }
0x0001208c cmp r3, 0 |
| if (r3 != 0) {
0x00012090 bne 0x1203c | goto label_2;
| }
| label_15:
0x00012094 ldrb r3, [r4] | r3 = *(r4);
0x00012098 cmp r3, 0x5d |
| if (r3 != 0x5d) {
0x0001209c moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0x5d) {
0x000120a0 strbeq r3, [r4] | *(r4) = r3;
| }
| if (r3 != 0x5d) {
0x000120a4 addeq r4, r4, 1 | r4++;
| }
| if (r3 != 0x5d) {
0x000120a8 beq 0x120bc |
0x000120ac ldr r1, [pc, 0x2ec] | r1 = *(0x1239c);
0x000120b0 mov r0, sb | r0 = sb;
0x000120b4 add r1, pc, r1 | r1 = pc + r1;
0x000120b8 bl 0x104cc | Curl_infof ();
| }
| label_13:
0x000120bc mov r0, r4 | r0 = r4;
0x000120c0 mov r1, 0x3a | r1 = 0x3a;
0x000120c4 bl 0x5b38 | strchr (r0, r1);
0x000120c8 ldr r3, [pc, 0x2d4] | r3 = *(0x123a0);
0x000120cc ldr r6, [fp, r3] | r6 = *((fp + r3));
0x000120d0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000120d4 beq 0x1218c | goto label_16;
| }
0x000120d8 mov r3, 0 | r3 = 0;
0x000120dc add r1, sp, 0x20 | r1 += var_20h;
0x000120e0 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x000120e4 str r3, [r1, -4]! | *((r1 -= 4)) = r3;
0x000120e8 mov r2, 0xa | r2 = 0xa;
0x000120ec mov r0, r4 | r0 = r4;
0x000120f0 bl 0x5274 | strtol (r0, r1, r2);
0x000120f4 ldr r3, [sp, 0x1c] | r3 = endptr;
0x000120f8 cmp r3, 0 |
0x000120fc mov r7, r0 | r7 = r0;
| if (r3 != 0) {
0x00012100 beq 0x12118 |
0x00012104 ldrb r3, [r3] | r3 = *(r3);
0x00012108 and r2, r3, 0xdf | r2 = r3 & 0xdf;
0x0001210c cmp r3, 0x2f |
0x00012110 cmpne r2, 0 | __asm ("cmpne r2, 0");
| if (r3 != 0x2f) {
0x00012114 bne 0x12124 | goto label_17;
| }
| }
0x00012118 cmp r7, 0x10000 |
| if (r7 >= 0x10000) {
0x0001211c strlo r7, [sl, 0xfc] | *((sl + 0xfc)) = r7;
| }
| if (r7 > 0x10000) {
0x00012120 blo 0x12138 |
| label_17:
0x00012124 ldr r1, [pc, 0x27c] | r1 = *(0x123a4);
0x00012128 mov r2, r4 | r2 = r4;
0x0001212c add r1, pc, r1 | r1 = pc + r1;
0x00012130 mov r0, sb | r0 = sb;
0x00012134 bl 0x104cc | Curl_infof ();
| }
| label_5:
0x00012138 ldrb r3, [r5] | r3 = *(r5);
0x0001213c cmp r3, 0 |
| if (r3 != 0) {
0x00012140 bne 0x121f0 | goto label_18;
| }
| label_6:
0x00012144 ldr r3, [r6] | r3 = *(r6);
0x00012148 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0001214c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012150 mov r4, 0 | r4 = 0;
0x00012154 ldr r0, [sp, 0x18] | r0 = nmeb;
0x00012158 str r4, [sp, 0x14] | var_14h = r4;
0x0001215c ldr r3, [r6] | r3 = *(r6);
0x00012160 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012164 mov r0, r4 | r0 = r4;
0x00012168 b 0x11f44 | goto label_1;
| label_14:
0x0001216c bl 0x2f910 | r0 = Curl_isxdigit ();
0x00012170 cmp r0, 0 |
| if (r0 != 0) {
0x00012174 bne 0x11ff0 | goto label_3;
| }
0x00012178 ldrb r3, [r6, -1] | r3 = *((r6 - 1));
0x0001217c cmp r3, 0x2e |
0x00012180 cmpne r3, 0x3a | __asm ("cmpne r3, 0x3a");
| if (r3 == 0x2e) {
0x00012184 beq 0x11ff0 | goto label_3;
| }
0x00012188 b 0x12000 | goto label_4;
| label_16:
0x0001218c ldrb r3, [r5] | r3 = *(r5);
0x00012190 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00012194 bne 0x121bc |
0x00012198 ldr r3, [r6] | r3 = *(r6);
0x0001219c ldr r0, [sp, 0x14] | r0 = var_14h;
0x000121a0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000121a4 ldr r0, [sp, 0x18] | r0 = nmeb;
0x000121a8 str r4, [sp, 0x14] | var_14h = r4;
0x000121ac ldr r3, [r6] | r3 = *(r6);
0x000121b0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000121b4 mov r0, 5 | r0 = 5;
0x000121b8 b 0x11f44 | goto label_1;
| }
0x000121bc mov r1, 0x2f | r1 = 0x2f;
0x000121c0 mov r0, r5 | r0 = r5;
0x000121c4 bl 0x5b38 | r0 = strchr (r0, r1);
0x000121c8 cmp r0, 0 |
| if (r0 == 0) {
0x000121cc strbne r4, [r0] | *(r0) = r4;
| }
0x000121d0 ldr r7, [sb, 0x13c] | r7 = *((sb + 0x13c));
0x000121d4 cmp r7, 0 |
| if (r7 != 0) {
0x000121d8 bne 0x12138 | goto label_5;
| }
0x000121dc ldr r3, [pc, 0x1c8] | r3 = *(0x123a8);
0x000121e0 cmp r8, 2 |
0x000121e4 ldr r7, [pc, 0x1c4] | r7 = *(0x123ac);
| if (r8 == 2) {
0x000121e8 movne r7, r3 | r7 = r3;
| }
0x000121ec b 0x12138 | goto label_5;
| label_18:
0x000121f0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000121f4 sub r3, r8, 4 | r3 = r8 - 4;
0x000121f8 cmp r3, 3 |
| if (r3 > 3) {
0x000121fc movls r3, 1 | r3 = 1;
| }
| if (r3 <= 3) {
0x00012200 movhi r3, 0 | r3 = 0;
| }
| if (r3 > 3) {
0x00012204 addls r4, sl, 0xbc | r4 = sl + 0xbc;
| }
| if (r3 <= 3) {
0x00012208 addhi r4, sl, 0xdc | r4 = sl + 0xdc;
| }
0x0001220c cmp r2, 0 |
0x00012210 str r3, [sp, 8] | var_8h = r3;
0x00012214 str r8, [r4, 0x14] | *((r4 + 0x14)) = r8;
0x00012218 ldr r3, [r6] | r3 = *(r6);
| if (r2 == 0) {
0x0001221c beq 0x122e4 | goto label_19;
| }
0x00012220 mov r8, 0 | r8 = 0;
0x00012224 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00012228 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x0001222c mov r3, r8 | r3 = r8;
0x00012230 mov r2, r8 | r2 = r8;
0x00012234 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00012238 str r8, [r4, 0x18] | *((r4 + 0x18)) = r8;
0x0001223c mov r0, sb | r0 = sb;
0x00012240 bl 0x54f0 | fcn_000054f0 ();
0x00012244 ldr r3, [r6] | r3 = *(r6);
0x00012248 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0001224c ldr r0, [sp, 0x14] | r0 = var_14h;
0x00012250 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012254 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00012258 str r8, [sp, 0x14] | var_14h = r8;
0x0001225c cmp r3, r8 |
0x00012260 ldr r3, [r6] | r3 = *(r6);
| if (r3 != r8) {
0x00012264 bne 0x12278 | goto label_20;
| }
0x00012268 ldr r0, [sp, 0x18] | r0 = nmeb;
0x0001226c blx r3 | uint32_t (*r3)(uint32_t) (r0);
| do {
| label_7:
0x00012270 mov r0, 0x1b | r0 = 0x1b;
0x00012274 b 0x11f44 | goto label_1;
| label_20:
0x00012278 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0001227c blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00012280 ldr r1, [sp, 0x18] | r1 = nmeb;
0x00012284 str r8, [r4, 0x1c] | *((r4 + 0x1c)) = r8;
0x00012288 cmp r1, 0 |
| if (r1 == 0) {
0x0001228c beq 0x1234c | goto label_21;
| }
0x00012290 mov r0, r1 | r0 = r1;
0x00012294 str r1, [sp, 0xc] | var_ch = r1;
0x00012298 bl 0x5250 | strlen (r0);
0x0001229c ldr r1, [sp, 0xc] | r1 = var_ch;
0x000122a0 cmp r0, 0xff |
| if (r0 > 0xff) {
0x000122a4 bhi 0x1234c | goto label_21;
| }
0x000122a8 mov r3, r8 | r3 = r8;
0x000122ac mov r2, r8 | r2 = r8;
0x000122b0 mov r0, sb | r0 = sb;
0x000122b4 bl 0x54f0 | fcn_000054f0 ();
| label_8:
0x000122b8 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x000122bc ldr r3, [r6] | r3 = *(r6);
0x000122c0 ldr r0, [sp, 0x18] | r0 = nmeb;
0x000122c4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000122c8 mov r3, 0 | r3 = 0;
0x000122cc str r3, [sp, 0x18] | nmeb = r3;
0x000122d0 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000122d4 cmp r3, 0 |
| if (r3 == 0) {
0x000122d8 movne r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x000122dc strbne r3, [sl, 0x259] | *((sl + 0x259)) = r3;
| }
0x000122e0 beq 0x12270 |
| } while (r3 == 0);
| label_19:
0x000122e4 cmp r7, 0 |
| if (r7 >= 0) {
0x000122e8 blt 0x12310 |
0x000122ec ldr r3, [sl, 0xfc] | r3 = *((sl + 0xfc));
0x000122f0 ldr r2, [sp, 8] | r2 = var_8h;
0x000122f4 str r7, [r4, 0x10] | *((r4 + 0x10)) = r7;
0x000122f8 orrs r3, r2, r3, lsr 31 | r3 = r2 | (r3 >> 31);
| if (r3 == r2) {
0x000122fc bne 0x1230c |
0x00012300 ldr r3, [sl, 0xbc] | r3 = *((sl + 0xbc));
0x00012304 cmp r3, 0 |
| if (r3 != 0) {
0x00012308 bne 0x12310 | goto label_22;
| }
| }
0x0001230c str r7, [sl, 0xfc] | *((sl + 0xfc)) = r7;
| }
| label_22:
0x00012310 ldr r3, [r6] | r3 = *(r6);
0x00012314 ldr r0, [r4] | r0 = *(r4);
0x00012318 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001231c mov r3, 0 | r3 = 0;
0x00012320 str r3, [r4] | *(r4) = r3;
0x00012324 ldr r3, [pc, 0x88] |
0x00012328 mov r0, r5 | r0 = r5;
0x0001232c ldr r3, [fp, r3] | r3 = *((fp + r3));
0x00012330 ldr r3, [r3] | r3 = *(0x123b0);
0x00012334 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012338 cmp r0, 0 |
0x0001233c str r0, [r4] | *(r4) = r0;
0x00012340 str r0, [r4, 8] | *((r4 + 8)) = r0;
| if (r0 != 0) {
0x00012344 bne 0x12144 | goto label_6;
| }
0x00012348 b 0x12270 | goto label_7;
| label_21:
0x0001234c ldr r3, [pc, 0x60] |
0x00012350 ldr r0, [pc, 0x60] | r0 = *(0x123b4);
0x00012354 ldr r3, [fp, r3] | r3 = *((fp + r3));
0x00012358 add r0, pc, r0 | r0 = pc + r0;
0x0001235c ldr r3, [r3] | r3 = *(0x123b0);
0x00012360 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00012364 b 0x122b8 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x10130 */
| #include <stdint.h>
|
; (fcn) sym.pausewrite () | void pausewrite (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00010130 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00010134 add sb, r0, 0x4000 | sb = r0 + 0x4000;
0x00010138 mov r7, r3 | r7 = r3;
0x0001013c ldr r3, [sb, 0x7f4] | r3 = *((sb + 0x7f4));
0x00010140 mov r8, r2 | r8 = r2;
0x00010144 ldr r2, [pc, 0xe8] | r2 = *(0x10230);
0x00010148 cmp r3, 0 |
0x0001014c add r2, pc, r2 | r2 = pc + r2;
0x00010150 mov r5, r0 | r5 = r0;
0x00010154 mov r6, r1 | r6 = r1;
| if (r3 == 0) {
0x00010158 beq 0x101a0 | goto label_1;
| }
0x0001015c mov sl, 0 | sl = 0;
0x00010160 mov r0, 0xc | r0 = 0xc;
| do {
0x00010164 mul r1, r0, sl | r1 = r0 * sl;
0x00010168 add ip, r1, 0x4800 |
0x0001016c ldr ip, [r5, ip] | ip = *((r5 + ip));
0x00010170 cmp ip, r6 |
| if (ip == r6) {
0x00010174 beq 0x101d4 | goto label_2;
| }
0x00010178 add sl, sl, 1 | sl++;
0x0001017c cmp r3, sl |
0x00010180 bne 0x10164 |
| } while (r3 != sl);
| do {
0x00010184 mov r1, r7 | r1 = r7;
0x00010188 mov r0, r8 | r0 = r8;
0x0001018c bl 0x2394c | r0 = Curl_memdup ();
0x00010190 cmp r0, 0 |
| if (r0 != 0) {
0x00010194 bne 0x101a8 | goto label_3;
| }
| label_0:
0x00010198 mov r0, 0x1b | r0 = 0x1b;
0x0001019c pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_1:
0x000101a0 mov sl, r3 | sl = r3;
0x000101a4 b 0x10184 |
| } while (1);
| label_3:
0x000101a8 mov r3, 0xc | r3 = 0xc;
0x000101ac mla r4, r3, sl, r5 | __asm ("mla r4, r3, sl, r5");
0x000101b0 add r3, r4, 0x4700 | r3 = r4 + 0x4700;
0x000101b4 str r0, [r3, 0xf8] | *((r3 + 0xf8)) = r0;
0x000101b8 str r7, [r3, 0xfc] | *((r3 + 0xfc)) = r7;
0x000101bc ldr r3, [sb, 0x7f4] | r3 = *((sb + 0x7f4));
0x000101c0 add r4, r4, 0x4800 | r4 += 0x4800;
0x000101c4 add r3, r3, 1 | r3++;
0x000101c8 str r6, [r4] | *(r4) = r6;
0x000101cc str r3, [sb, 0x7f4] | *((sb + 0x7f4)) = r3;
0x000101d0 b 0x10220 | goto label_4;
| label_2:
0x000101d4 add r4, r5, r1 | r4 = r5 + r1;
0x000101d8 ldr r3, [pc, 0x58] |
0x000101dc add r4, r4, 0x4700 | r4 += 0x4700;
0x000101e0 ldr r6, [r4, 0xfc] | r6 = *((r4 + 0xfc));
0x000101e4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000101e8 add r6, r7, r6 | r6 = r7 + r6;
0x000101ec ldr r3, [r3] | r3 = *(0x10234);
0x000101f0 mov r1, r6 | r1 = r6;
0x000101f4 ldr r0, [r4, 0xf8] | r0 = *((r4 + 0xf8));
0x000101f8 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000101fc subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00010200 beq 0x10198 | goto label_0;
| }
0x00010204 ldr r0, [r4, 0xfc] | r0 = *((r4 + 0xfc));
0x00010208 mov r2, r7 | r2 = r7;
0x0001020c mov r1, r8 | r1 = r8;
0x00010210 add r0, sb, r0 | r0 = sb + r0;
0x00010214 bl 0x4f5c | memcpy (r0, r1, r2);
0x00010218 str sb, [r4, 0xf8] | *((r4 + 0xf8)) = sb;
0x0001021c str r6, [r4, 0xfc] | *((r4 + 0xfc)) = r6;
| label_4:
0x00010220 ldr r3, [r5, 0x110] | r3 = *((r5 + 0x110));
0x00010224 mov r0, 0 | r0 = 0;
0x00010228 orr r3, r3, 0x10 | r3 |= 0x10;
0x0001022c str r3, [r5, 0x110] | *((r5 + 0x110)) = r3;
0x00010230 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x207ac */
| #include <stdint.h>
|
; (fcn) sym.process_trailer () | void process_trailer (int32_t arg1, size_t size) {
| r0 = arg1;
| r1 = size;
0x000207ac ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000207b0 mov r2, r1 | r2 = r1;
0x000207b4 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x000207b8 ldr ip, [r2, 8] | ip = *((r2 + 8));
0x000207bc cmp r3, r1 |
0x000207c0 str lr, [sp, -4]! |
| if (r3 >= r1) {
0x000207c4 movlo lr, r3 | lr = r3;
| }
| if (r3 < r1) {
0x000207c8 movhs lr, r1 | lr = r1;
| }
0x000207cc sub r1, r1, lr | r1 -= lr;
0x000207d0 sub r3, r3, lr | r3 -= lr;
0x000207d4 add ip, ip, lr |
0x000207d8 cmp r1, 0 |
0x000207dc str r3, [r2, 4] | *((r2 + 4)) = r3;
0x000207e0 str r1, [r2, 0xc] | *((r2 + 0xc)) = r1;
0x000207e4 str ip, [r2, 8] | *((r2 + 8)) = ip;
| if (r1 != 0) {
0x000207e8 bne 0x20800 | goto label_0;
| }
0x000207ec cmp r3, 0 |
| if (r3 != 0) {
0x000207f0 bne 0x20808 | goto label_1;
| }
| do {
0x000207f4 add r1, r2, 8 | r1 = r2 + 8;
0x000207f8 pop {lr} |
0x000207fc b 0x20710 | void (*0x20710)() ();
| label_0:
0x00020800 mov r3, 0x17 | r3 = 0x17;
0x00020804 b 0x207f4 |
| } while (1);
| label_1:
0x00020808 mov r3, 4 | r3 = 4;
0x0002080c str r3, [r2] | *(r2) = r3;
0x00020810 mov r0, r1 | r0 = r1;
0x00020814 pop {pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2b308 */
| #include <stdint.h>
|
; (fcn) sym.readback_bytes.isra.1 () | void readback_bytes_isra_1 (int32_t arg_20h, int32_t arg_24h, int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002b308 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0002b30c ldr r4, [sp, 0x20] | r4 = *(arg_20h);
0x0002b310 ldr r5, [r0] | r5 = *(r0);
0x0002b314 mov r8, r1 | r8 = r1;
0x0002b318 cmp r5, r4 |
0x0002b31c mov r7, r0 | r7 = r0;
0x0002b320 mov sb, r2 | sb = r2;
0x0002b324 ldr r6, [sp, 0x24] | r6 = *(arg_24h);
| if (r5 >= r4) {
0x0002b328 sublo r4, r4, r5 | r4 -= r5;
| }
| if (r5 >= r4) {
0x0002b32c addlo r1, r3, r5 | r1 = r3 + r5;
| }
| if (r5 > r4) {
0x0002b330 blo 0x2b354 |
0x0002b334 mov r0, r6 | r0 = r6;
0x0002b338 bl 0x5250 | strlen (r0);
0x0002b33c sub r4, r5, r4 | r4 = r5 - r4;
0x0002b340 cmp r0, r4 |
| if (r0 > r4) {
0x0002b344 movls r4, 0 | r4 = 0;
| }
| if (r0 < r4) {
0x0002b348 bls 0x2b374 | goto label_0;
| }
0x0002b34c add r1, r6, r4 | r1 = r6 + r4;
0x0002b350 sub r4, r0, r4 | r4 = r0 - r4;
| }
0x0002b354 cmp r4, sb |
| if (r4 < sb) {
0x0002b358 movhs r4, sb | r4 = sb;
| }
0x0002b35c mov r2, r4 | r2 = r4;
0x0002b360 mov r0, r8 | r0 = r8;
0x0002b364 bl 0x4f5c | memcpy (r0, r1, r2);
0x0002b368 ldr r3, [r7] | r3 = *(r7);
0x0002b36c add r3, r3, r4 | r3 += r4;
0x0002b370 str r3, [r7] | *(r7) = r3;
| label_0:
0x0002b374 mov r0, r4 | r0 = r4;
0x0002b378 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2b50c */
| #include <stdint.h>
|
; (fcn) sym.readback_part () | void readback_part (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| void * s1;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0002b50c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002b510 add r3, r0, 0x68 | r3 = r0 + 0x68;
0x0002b514 sub sp, sp, 0x14 |
0x0002b518 str r3, [sp, 8] | s1 = r3;
0x0002b51c ldr r3, [pc, 0x378] | r3 = *(0x2b898);
0x0002b520 mov r4, r0 | r4 = r0;
0x0002b524 add r3, pc, r3 | r3 = pc + r3;
0x0002b528 mov sb, r1 | sb = r1;
0x0002b52c mov r6, r2 | r6 = r2;
0x0002b530 mov r7, 0 | r7 = 0;
0x0002b534 str r3, [sp, 0xc] | var_ch = r3;
| label_1:
0x0002b538 cmp r6, 0 |
| if (r6 == 0) {
0x0002b53c beq 0x2b7f4 | goto label_10;
| }
0x0002b540 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x0002b544 ldr r8, [r4, 0x50] | r8 = *((r4 + 0x50));
0x0002b548 cmp r3, 8 |
| if (r3 > 8) {
| /* switch table (9 cases) at 0x2b554 */
0x0002b54c addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0002b550 b 0x2b5f8 | goto label_11;
0x0002b554 b 0x2b578 | goto label_12;
0x0002b558 b 0x2b5dc | goto label_13;
0x0002b55c b 0x2b5a0 | goto label_14;
0x0002b560 b 0x2b64c | goto label_15;
0x0002b564 b 0x2b68c | goto label_16;
0x0002b568 b 0x2b5f8 | goto label_11;
0x0002b56c b 0x2b5f8 | goto label_11;
0x0002b570 b 0x2b6a4 | goto label_17;
0x0002b574 b 0x2b7f4 | goto label_10;
| label_12:
0x0002b578 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x0002b57c tst r3, 2 |
0x0002b580 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
| if ((r3 & 2) != 0) {
0x0002b584 moveq r2, 1 | r2 = 1;
| }
0x0002b588 movne r2, 4 | r2 = 4;
| while (1) {
0x0002b58c mov r5, 0 | r5 = 0;
0x0002b590 str r2, [r4, 0x4c] | *((r4 + 0x4c)) = r2;
0x0002b594 str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
| label_0:
0x0002b598 str r5, [r4, 0x54] | *((r4 + 0x54)) = r5;
0x0002b59c b 0x2b63c | goto label_3;
| label_14:
0x0002b5a0 cmp r8, 0 |
| if (r8 != 0) {
0x0002b5a4 moveq r3, 3 | r3 = 3;
| }
| if (r8 != 0) {
0x0002b5a8 streq r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
| }
| if (r8 != 0) {
0x0002b5ac streq r8, [r4, 0x50] | *((r4 + 0x50)) = r8;
| }
| if (r8 == 0) {
0x0002b5b0 beq 0x2b5f4 | goto label_18;
| }
0x0002b5b4 ldr r1, [pc, 0x2e4] | r1 = *(0x2b89c);
0x0002b5b8 mov r2, 0xc | r2 = 0xc;
0x0002b5bc add r1, pc, r1 | r1 = pc + r1;
0x0002b5c0 mov r0, r8 | r0 = r8;
0x0002b5c4 bl 0x2b40c | r0 = match_header_isra_5 ();
0x0002b5c8 cmp r0, 0 |
| if (r0 == 0) {
0x0002b5cc beq 0x2b600 | goto label_19;
| }
0x0002b5d0 ldr r3, [r8, 4] | r3 = *((r8 + 4));
0x0002b5d4 mov r2, 2 | r2 = 2;
0x0002b5d8 b 0x2b58c |
| }
| label_13:
0x0002b5dc cmp r8, 0 |
| if (r8 == 0) {
0x0002b5e0 bne 0x2b600 |
0x0002b5e4 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0002b5e8 mov r2, 2 | r2 = 2;
0x0002b5ec str r2, [r4, 0x4c] | *((r4 + 0x4c)) = r2;
0x0002b5f0 str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
| label_18:
0x0002b5f4 str r8, [r4, 0x54] | *((r4 + 0x54)) = r8;
| label_11:
0x0002b5f8 mov r5, 0 | r5 = 0;
0x0002b5fc b 0x2b63c | goto label_3;
| }
| label_19:
0x0002b600 ldr r5, [r8] | r5 = *(r8);
0x0002b604 mov r0, r5 | r0 = r5;
0x0002b608 bl 0x5250 | strlen (r0);
0x0002b60c ldr r3, [pc, 0x290] | r3 = *(0x2b8a0);
0x0002b610 mov r2, r6 | r2 = r6;
0x0002b614 add r3, pc, r3 | r3 = pc + r3;
0x0002b618 mov r1, sb | r1 = sb;
0x0002b61c stm sp, {r0, r3} | *(sp) = r0;
| *((sp + 4)) = r3;
0x0002b620 mov r3, r5 | r3 = r5;
0x0002b624 add r0, r4, 0x54 | r0 = r4 + 0x54;
0x0002b628 bl 0x2b308 | r0 = readback_bytes_isra_1 ();
0x0002b62c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0002b630 ldreq r3, [r8, 4] | r3 = *((r8 + 4));
| }
| if (r5 == r0) {
0x0002b634 streq r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
| goto label_20;
| }
| if (r5 == r0) {
| label_20:
0x0002b638 beq 0x2b598 | goto label_0;
| }
| do {
| label_3:
0x0002b63c add r7, r7, r5 | r7 += r5;
0x0002b640 add sb, sb, r5 | sb += r5;
0x0002b644 sub r6, r6, r5 | r6 -= r5;
0x0002b648 b 0x2b538 | goto label_1;
| label_15:
0x0002b64c ldr r3, [pc, 0x254] | r3 = *(0x2b8a4);
0x0002b650 mov r2, r6 | r2 = r6;
0x0002b654 add r3, pc, r3 | r3 = pc + r3;
0x0002b658 str r3, [sp, 4] | var_4h = r3;
0x0002b65c mov r3, 2 | r3 = 2;
0x0002b660 str r3, [sp] | *(sp) = r3;
0x0002b664 mov r1, sb | r1 = sb;
0x0002b668 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002b66c add r0, r4, 0x54 | r0 = r4 + 0x54;
0x0002b670 bl 0x2b308 | r0 = readback_bytes_isra_1 ();
0x0002b674 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0002b678 moveq r3, 4 | r3 = 4;
| }
0x0002b67c bne 0x2b63c |
| } while (r5 != r0);
| do {
0x0002b680 str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x0002b684 str r5, [r4, 0x50] | *((r4 + 0x50)) = r5;
0x0002b688 b 0x2b598 | goto label_0;
| label_16:
0x0002b68c mov r5, 0 | r5 = 0;
0x0002b690 str r5, [r4, 0x5c] | *((r4 + 0x5c)) = r5;
0x0002b694 str r5, [r4, 0x60] | *((r4 + 0x60)) = r5;
0x0002b698 str r5, [r4, 0x64] | *((r4 + 0x64)) = r5;
0x0002b69c mov r3, 7 | r3 = 7;
0x0002b6a0 b 0x2b680 |
| } while (1);
| label_17:
0x0002b6a4 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x0002b6a8 cmp r3, 0 |
| if (r3 == 0) {
0x0002b6ac beq 0x2b860 | goto label_21;
| }
0x0002b6b0 mov r5, 0 | r5 = 0;
0x0002b6b4 mov sl, r6 | sl = r6;
0x0002b6b8 mov fp, sb |
0x0002b6bc mov r8, r5 | r8 = r5;
| do {
| label_7:
0x0002b6c0 ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
0x0002b6c4 ldr r2, [r4, 0x64] | r2 = *((r4 + 0x64));
0x0002b6c8 cmp r3, r2 |
| if (r3 < r2) {
0x0002b6cc movhs r3, r8 | r3 = r8;
| }
| if (r3 >= r2) {
0x0002b6d0 orrlo r3, r8, 1 | r3 = r8 | 1;
| }
0x0002b6d4 cmp r3, 0 |
| if (r3 == 0) {
0x0002b6d8 beq 0x2b79c | goto label_22;
| }
0x0002b6dc ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x0002b6e0 mov r2, r8 | r2 = r8;
0x0002b6e4 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0002b6e8 mov r1, sl | r1 = sl;
0x0002b6ec mov ip, r3 |
0x0002b6f0 mov r0, fp | r0 = fp;
0x0002b6f4 mov r3, r4 | r3 = r4;
0x0002b6f8 blx ip | r0 = ip (r0, r1, r2, r3);
0x0002b6fc cmp r0, 0x10000001 |
| if (r0 > 0x10000001) {
0x0002b700 bhi 0x2b72c | goto label_23;
| }
0x0002b704 cmp r0, 0x10000000 |
| if (r0 >= 0x10000000) {
0x0002b708 bhs 0x2b734 | goto label_5;
| }
0x0002b70c cmp r0, 0 |
| if (r0 == 0) {
0x0002b710 beq 0x2b740 | goto label_24;
| }
| label_2:
0x0002b714 add r5, r5, r0 | r5 += r0;
0x0002b718 add fp, fp, r0 |
0x0002b71c sub sl, sl, r0 | sl -= r0;
| label_6:
0x0002b720 cmp sl, 0 |
0x0002b724 bne 0x2b6c0 |
| } while (sl != 0);
0x0002b728 b 0x2b748 | goto label_4;
| label_23:
0x0002b72c cmn r0, 1 |
| if (r0 != 1) {
0x0002b730 bne 0x2b714 | goto label_2;
| }
| label_5:
0x0002b734 cmp r5, 0 |
| if (r5 != 0) {
0x0002b738 moveq r5, r0 | r5 = r0;
| }
0x0002b73c b 0x2b748 | goto label_4;
| label_24:
0x0002b740 cmp r8, 0 |
| if (r8 == 0) {
0x0002b744 beq 0x2b79c | goto label_22;
| }
| label_4:
0x0002b748 cmp r5, 0x10000001 |
| if (r5 > 0x10000001) {
0x0002b74c bhi 0x2b888 | goto label_25;
| }
0x0002b750 cmp r5, 0x10000000 |
| if (r5 >= 0x10000000) {
0x0002b754 bhs 0x2b7ec | goto label_9;
| }
0x0002b758 cmp r5, 0 |
| if (r5 != 0) {
0x0002b75c bne 0x2b63c | goto label_3;
| }
| label_8:
0x0002b760 mov r3, 8 | r3 = 8;
0x0002b764 str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x0002b768 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0002b76c mov r5, 0 | r5 = 0;
0x0002b770 cmp r3, 2 |
0x0002b774 str r5, [r4, 0x50] | *((r4 + 0x50)) = r5;
0x0002b778 str r5, [r4, 0x54] | *((r4 + 0x54)) = r5;
| if (r3 != 2) {
0x0002b77c bne 0x2b7ec | goto label_9;
| }
0x0002b780 ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x0002b784 cmp r0, r5 |
| if (r0 != r5) {
0x0002b788 moveq r5, r0 | r5 = r0;
| }
| if (r0 == r5) {
0x0002b78c beq 0x2b7ec | goto label_9;
| }
0x0002b790 bl 0x5454 | fclose (r0);
0x0002b794 str r5, [r4, 0x24] | *((r4 + 0x24)) = r5;
0x0002b798 b 0x2b7ec | goto label_9;
| label_22:
0x0002b79c ldr r1, [r4, 0x60] | r1 = *((r4 + 0x60));
0x0002b7a0 cmp r1, 0 |
| if (r1 != 0) {
0x0002b7a4 beq 0x2b7d4 |
0x0002b7a8 ldr r8, [r4, 0x64] | r8 = *((r4 + 0x64));
0x0002b7ac subs r8, r8, r1 | r8 -= r1;
| if (r8 != r8) {
0x0002b7b0 beq 0x2b7c8 |
0x0002b7b4 ldr r3, [sp, 8] | r3 = s1;
0x0002b7b8 mov r2, r8 | r2 = r8;
0x0002b7bc add r1, r3, r1 | r1 = r3 + r1;
0x0002b7c0 mov r0, r3 | r0 = r3;
0x0002b7c4 bl 0x5448 | memmove (r0, r1, r2);
| }
0x0002b7c8 mov r3, 0 | r3 = 0;
0x0002b7cc str r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
0x0002b7d0 str r8, [r4, 0x64] | *((r4 + 0x64)) = r8;
| }
0x0002b7d4 ldr r2, [r4, 0x64] | r2 = *((r4 + 0x64));
0x0002b7d8 cmp r2, 0xff |
| if (r2 < 0xff) {
0x0002b7dc bls 0x2b800 | goto label_26;
| }
0x0002b7e0 cmp r5, 0 |
| if (r5 != 0) {
0x0002b7e4 bne 0x2b748 | goto label_4;
| }
0x0002b7e8 mvn r5, 0 | r5 = ~0;
| label_9:
0x0002b7ec cmp r7, 0 |
| if (r7 != 0) {
0x0002b7f0 moveq r7, r5 | r7 = r5;
| }
| label_10:
0x0002b7f4 mov r0, r7 | r0 = r7;
0x0002b7f8 add sp, sp, 0x14 |
0x0002b7fc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_26:
0x0002b800 ldr r8, [r4, 0x14] | r8 = *((r4 + 0x14));
0x0002b804 ldr r3, [sp, 8] | r3 = s1;
0x0002b808 cmp r8, 0 |
0x0002b80c add r0, r3, r2 | r0 = r3 + r2;
0x0002b810 rsb r2, r2, 0x100 | r2 = 0x100 - r2;
| if (r8 == 0) {
0x0002b814 beq 0x2b894 | goto label_27;
| }
0x0002b818 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0002b81c mov r1, 1 | r1 = 1;
0x0002b820 blx r8 | r0 = uint32_t (*r8)(uint32_t, uint32_t) (r1, r3);
0x0002b824 cmp r0, 0x10000001 |
| if (r0 > 0x10000001) {
0x0002b828 bhi 0x2b854 | goto label_28;
| }
0x0002b82c cmp r0, 0x10000000 |
| if (r0 >= 0x10000000) {
0x0002b830 bhs 0x2b734 | goto label_5;
| }
0x0002b834 cmp r0, 0 |
| if (r0 == 0) {
0x0002b838 moveq r8, 1 | r8 = 1;
| goto label_29;
| }
| if (r0 == 0) {
| label_29:
0x0002b83c beq 0x2b720 | goto label_6;
| }
| do {
0x0002b840 ldr r3, [r4, 0x64] | r3 = *((r4 + 0x64));
0x0002b844 mov r8, 0 | r8 = 0;
0x0002b848 add r0, r3, r0 | r0 = r3 + r0;
0x0002b84c str r0, [r4, 0x64] | *((r4 + 0x64)) = r0;
0x0002b850 b 0x2b6c0 | goto label_7;
| label_28:
0x0002b854 cmn r0, 1 |
0x0002b858 bne 0x2b840 |
| } while (r0 != 1);
0x0002b85c b 0x2b734 | goto label_5;
| label_21:
0x0002b860 ldr r5, [r4, 0x14] | r5 = *((r4 + 0x14));
0x0002b864 cmp r5, 0 |
| if (r5 == 0) {
0x0002b868 beq 0x2b760 | goto label_8;
| }
0x0002b86c ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0002b870 mov r2, r6 | r2 = r6;
0x0002b874 mov r1, 1 | r1 = 1;
0x0002b878 mov r0, sb | r0 = sb;
0x0002b87c blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0002b880 mov r5, r0 | r5 = r0;
0x0002b884 b 0x2b748 | goto label_4;
| label_25:
0x0002b888 cmn r5, 1 |
| if (r5 != 1) {
0x0002b88c bne 0x2b63c | goto label_3;
| }
0x0002b890 b 0x2b7ec | goto label_9;
| label_27:
0x0002b894 mov r8, 1 | r8 = 1;
0x0002b898 b 0x2b6c0 | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2b460 */
| #include <stdint.h>
|
; (fcn) sym.search_header () | void search_header (int32_t arg1, char * s) {
| r0 = arg1;
| r1 = s;
0x0002b460 push {r4, r5, r6, lr} |
0x0002b464 mov r4, r0 | r4 = r0;
0x0002b468 mov r0, r1 | r0 = r1;
0x0002b46c mov r5, r1 | r5 = r1;
0x0002b470 bl 0x5250 | r0 = strlen (r0);
0x0002b474 mov r6, r0 | r6 = r0;
0x0002b478 mov r0, 0 | r0 = 0;
| do {
0x0002b47c adds r3, r4, 0 | r3 = r4 + 0;
| if (r3 == r4) {
0x0002b480 movne r3, 1 | r3 = 1;
| }
0x0002b484 cmp r0, 0 |
| if (r0 == 0) {
0x0002b488 movne r3, 0 | r3 = 0;
| }
0x0002b48c cmp r3, 0 |
0x0002b490 popeq {r4, r5, r6, pc} |
0x0002b494 mov r0, r4 | r0 = r4;
0x0002b498 mov r2, r6 | r2 = r6;
0x0002b49c mov r1, r5 | r1 = r5;
0x0002b4a0 bl 0x2b40c | match_header_isra_5 ();
0x0002b4a4 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0002b4a8 b 0x2b47c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x33360 */
| #include <stdint.h>
|
; (fcn) sym.select_next_proto_cb () | void select_next_proto_cb (int32_t arg_28h, int32_t arg_2ch, int32_t arg2) {
| r1 = arg2;
0x00033360 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00033364 ldr fp, [pc, 0xac] | fp = *(0x00033418);
0x00033368 ldr sl, [sp, 0x28] | sl = *(arg_28h);
0x0003336c ldr r5, [sp, 0x2c] | r5 = *(arg_2ch);
0x00033370 mov sb, r1 | sb = r1;
0x00033374 mov r8, r2 | r8 = r2;
0x00033378 mov r7, r3 | r7 = r3;
0x0003337c mov r4, 0 | r4 = 0;
0x00033380 add fp, pc, fp |
| do {
0x00033384 add r3, r4, 8 | r3 = r4 + 8;
0x00033388 cmp sl, r3 |
| if (sl < r3) {
0x0003338c bhs 0x333b8 |
0x00033390 ldr r1, [pc, 0x84] | r1 = *(0x33418);
0x00033394 ldr r0, [r5] | r0 = *(r5);
0x00033398 add r1, pc, r1 | r1 = pc + r1;
0x0003339c bl 0x104cc | Curl_infof ();
0x000333a0 ldr r3, [pc, 0x78] | r3 = *(0x3341c);
0x000333a4 add r3, pc, r3 | r3 = pc + r3;
0x000333a8 str r3, [sb] | *(sb) = r3;
0x000333ac mov r3, 8 | r3 = 8;
0x000333b0 strb r3, [r8] | *(r8) = r3;
0x000333b4 b 0x333f8 |
| } else {
0x000333b8 add r6, r4, 1 | r6 = r4 + 1;
0x000333bc add r6, r7, r6 | r6 = r7 + r6;
0x000333c0 mov r2, 8 | r2 = 8;
0x000333c4 mov r1, fp | r1 = fp;
0x000333c8 mov r0, r6 | r0 = r6;
0x000333cc bl 0x5820 | memcmp (r0, r1, r2);
0x000333d0 add r3, r7, r4 | r3 = r7 + r4;
0x000333d4 cmp r0, 0 |
| if (r0 != 0) {
0x000333d8 bne 0x33408 | goto label_0;
| }
0x000333dc str r6, [sb] | *(sb) = r6;
0x000333e0 ldr r1, [pc, 0x3c] | r1 = *(0x33420);
0x000333e4 ldrb r3, [r3] | r3 = *(r3);
0x000333e8 add r1, pc, r1 | r1 = pc + r1;
0x000333ec strb r3, [r8] | *(r8) = r3;
0x000333f0 ldr r0, [r5] | r0 = *(r5);
0x000333f4 bl 0x104cc | Curl_infof ();
| }
0x000333f8 mov r3, 2 | r3 = 2;
0x000333fc str r3, [r5, 0x504] | *((r5 + 0x504)) = r3;
0x00033400 mov r0, 0 | r0 = 0;
0x00033404 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x00033408 ldrb r3, [r7, r4] | r3 = *((r7 + r4));
0x0003340c add r3, r3, 1 | r3++;
0x00033410 add r4, r4, r3 | r4 += r3;
0x00033414 b 0x33384 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x334b8 */
| #include <stdint.h>
|
; (fcn) sym.servercert () | void servercert (int32_t arg_8h, int32_t arg_ch, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| char * var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| size_t nmeb;
| void * s2;
| int32_t var_e0h;
| void * s;
| int32_t var_1e0h;
| int32_t var_600h;
| int32_t var_9e0h;
| int32_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x000334b8 ldr r3, [pc, 0xfd8] | r3 = *(0x34494);
0x000334bc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000334c0 ldr sb, [r0] | sb = *(r0);
0x000334c4 sub sp, sp, 0x9e0 |
0x000334c8 sub sp, sp, 4 |
0x000334cc add r3, pc, r3 | r3 = pc + r3;
0x000334d0 mov r8, r0 | r8 = r0;
0x000334d4 str r2, [sp, 0x10] | var_10h = r2;
0x000334d8 mov fp, r1 |
0x000334dc mov r2, 0xfc | r2 = 0xfc;
0x000334e0 mov r1, 0 | r1 = 0;
0x000334e4 add r0, sp, 0xe4 | r0 += s;
0x000334e8 str r3, [sp, 0x30] | var_30h = r3;
0x000334ec str r1, [sp, 0xe0] | var_e0h = r1;
0x000334f0 bl 0x576c | memset (r0, r1, r2);
0x000334f4 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x000334f8 cmp r3, 2 |
| if (r3 == 2) {
0x000334fc bne 0x33520 |
0x00033500 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00033504 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00033508 movne r3, 1 | r3 = 1;
| }
0x0003350c add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x00033510 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00033514 cmp r3, 2 |
| if (r3 == 2) {
0x00033518 addne r3, sb, 0x460 | r3 = sb + 0x460;
| }
| if (r3 != 2) {
0x0003351c bne 0x33528 | goto label_36;
| }
| }
0x00033520 add r3, sb, 0x400 | r3 = sb + 0x400;
0x00033524 add r3, r3, 8 | r3 += 8;
| label_36:
0x00033528 str r3, [sp, 0x34] | var_34h = r3;
0x0003352c bl 0x55b0 | BIO_s_mem ();
0x00033530 bl 0x540c | BIO_new ();
0x00033534 ldrb r3, [sb, 0x41c] | r3 = *((sb + 0x41c));
0x00033538 cmp r3, 0 |
0x0003353c str r0, [sp, 8] | var_8h = r0;
| if (r3 == 0) {
0x00033540 beq 0x335a8 | goto label_37;
| }
0x00033544 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00033548 ldr r7, [r8] | r7 = *(r8);
0x0003354c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00033550 bl 0x5748 | r0 = SSL_get_peer_cert_chain ();
0x00033554 subs r3, r0, 0 | r3 = r0 - 0;
0x00033558 str r3, [sp, 0x24] | var_24h = r3;
| if (r3 == r0) {
0x0003355c beq 0x335a8 | goto label_37;
| }
0x00033560 bl 0x5afc | OPENSSL_sk_num ();
0x00033564 str r0, [sp, 0x1c] | var_1ch = r0;
0x00033568 mov r1, r0 | r1 = r0;
0x0003356c mov r0, r7 | r0 = r7;
0x00033570 bl 0x37734 | r0 = Curl_ssl_init_certinfo ();
0x00033574 subs sl, r0, 0 | sl = r0 - 0;
| if (sl != r0) {
0x00033578 bne 0x335a8 | goto label_37;
| }
0x0003357c bl 0x55b0 | BIO_s_mem ();
0x00033580 bl 0x540c | BIO_new ();
0x00033584 ldr r3, [pc, 0xf10] | r3 = *(0x34498);
0x00033588 add r3, pc, r3 | r3 = pc + r3;
0x0003358c str r3, [sp, 0x38] | var_38h = r3;
0x00033590 mov r4, r0 | r4 = r0;
| do {
0x00033594 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00033598 cmp r3, sl |
| if (r3 <= sl) {
0x0003359c bgt 0x335fc |
0x000335a0 mov r0, r4 | r0 = r4;
0x000335a4 bl 0x5ad8 | BIO_free ();
| label_37:
0x000335a8 bl 0x531c | BIO_s_file ();
0x000335ac bl 0x540c | BIO_new ();
0x000335b0 subs sl, r0, 0 | sl -= s;
| if (sl != s) {
0x000335b4 bne 0x33e10 | goto label_38;
| }
0x000335b8 add r4, sp, 0xe0 | r4 += var_e0h;
0x000335bc bl 0x4e9c | ERR_get_error ();
0x000335c0 mov r1, r4 | r1 = r4;
0x000335c4 mov r2, 0x100 | r2 = 0x100;
0x000335c8 bl 0x5064 | ERR_error_string_n ();
0x000335cc ldr r1, [pc, 0xecc] | r1 = *(0x3449c);
0x000335d0 mov r2, r4 | r2 = r4;
0x000335d4 add r1, pc, r1 | r1 = pc + r1;
0x000335d8 mov r0, sb | r0 = sb;
0x000335dc bl 0x10544 | Curl_failf ();
0x000335e0 ldr r0, [sp, 8] | r0 = var_8h;
0x000335e4 bl 0x5ad8 | BIO_free ();
0x000335e8 mov r4, sl | r4 = sl;
| label_10:
0x000335ec mov r0, r4 | r0 = r4;
0x000335f0 add sp, sp, 0x9e0 |
0x000335f4 add sp, sp, 4 |
0x000335f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000335fc mov r1, sl | r1 = sl;
0x00033600 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00033604 bl 0x4de8 | OPENSSL_sk_value ();
0x00033608 mov r5, 0 | r5 = 0;
0x0003360c str r5, [sp, 0x54] | var_54h = r5;
0x00033610 add r6, sp, 0x50 | r6 += var_50h;
0x00033614 str r0, [sp, 0xc] | var_ch = r0;
0x00033618 bl 0x5928 | X509_get_subject_name ();
0x0003361c ldr r3, [pc, 0xe80] | r3 = *(0x344a0);
0x00033620 mov r2, r5 | r2 = r5;
0x00033624 mov r1, r0 | r1 = r0;
0x00033628 mov r0, r4 | r0 = r4;
0x0003362c bl 0x5b50 | X509_NAME_print_ex ();
0x00033630 mov r3, r6 | r3 = r6;
0x00033634 mov r2, r5 | r2 = r5;
0x00033638 mov r1, 3 | r1 = 3;
0x0003363c mov r0, r4 | r0 = r4;
0x00033640 bl 0x5aa8 | BIO_ctrl ();
0x00033644 ldr r2, [pc, 0xe5c] | r2 = *(0x344a4);
0x00033648 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0003364c add r2, pc, r2 | r2 = pc + r2;
0x00033650 mov r1, sl | r1 = sl;
0x00033654 str r0, [sp] | *(sp) = r0;
0x00033658 mov r0, r7 | r0 = r7;
0x0003365c bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x00033660 mov r3, r5 | r3 = r5;
0x00033664 mov r2, r5 | r2 = r5;
0x00033668 mov r1, 1 | r1 = 1;
0x0003366c mov r0, r4 | r0 = r4;
0x00033670 bl 0x5aa8 | BIO_ctrl ();
0x00033674 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00033678 bl 0x4f44 | X509_get_issuer_name ();
0x0003367c ldr r3, [pc, 0xe20] | r3 = *(0x344a0);
0x00033680 mov r2, r5 | r2 = r5;
0x00033684 mov r1, r0 | r1 = r0;
0x00033688 mov r0, r4 | r0 = r4;
0x0003368c bl 0x5b50 | X509_NAME_print_ex ();
0x00033690 mov r3, r6 | r3 = r6;
0x00033694 mov r2, r5 | r2 = r5;
0x00033698 mov r1, 3 | r1 = 3;
0x0003369c mov r0, r4 | r0 = r4;
0x000336a0 bl 0x5aa8 | BIO_ctrl ();
0x000336a4 ldr r2, [pc, 0xe00] | r2 = *(0x344a8);
0x000336a8 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000336ac add r2, pc, r2 | r2 = pc + r2;
0x000336b0 mov r1, sl | r1 = sl;
0x000336b4 str r0, [sp] | *(sp) = r0;
0x000336b8 mov r0, r7 | r0 = r7;
0x000336bc bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x000336c0 mov r3, r5 | r3 = r5;
0x000336c4 mov r2, r5 | r2 = r5;
0x000336c8 mov r1, 1 | r1 = 1;
0x000336cc mov r0, r4 | r0 = r4;
0x000336d0 bl 0x5aa8 | BIO_ctrl ();
0x000336d4 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000336d8 bl 0x534c | X509_get_version ();
0x000336dc ldr r1, [pc, 0xdcc] | r1 = *(0x344ac);
0x000336e0 add r1, pc, r1 | r1 = pc + r1;
0x000336e4 mov r2, r0 | r2 = r0;
0x000336e8 mov r0, r4 | r0 = r4;
0x000336ec bl 0x4e18 | BIO_printf ();
0x000336f0 mov r3, r6 | r3 = r6;
0x000336f4 mov r2, r5 | r2 = r5;
0x000336f8 mov r1, 3 | r1 = 3;
0x000336fc mov r0, r4 | r0 = r4;
0x00033700 bl 0x5aa8 | BIO_ctrl ();
0x00033704 ldr r2, [pc, 0xda8] | r2 = *(0x344b0);
0x00033708 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0003370c add r2, pc, r2 | r2 = pc + r2;
0x00033710 mov r1, sl | r1 = sl;
0x00033714 str r0, [sp] | *(sp) = r0;
0x00033718 mov r0, r7 | r0 = r7;
0x0003371c bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x00033720 mov r3, r5 | r3 = r5;
0x00033724 mov r2, r5 | r2 = r5;
0x00033728 mov r1, 1 | r1 = 1;
0x0003372c mov r0, r4 | r0 = r4;
0x00033730 bl 0x5aa8 | BIO_ctrl ();
0x00033734 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00033738 bl 0x5688 | X509_get_serialNumber ();
0x0003373c ldr r3, [pc, 0xd74] | r3 = *(0x344b4);
0x00033740 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x00033744 mov r6, r0 | r6 = r0;
0x00033748 cmp r2, r3 |
| if (r2 == r3) {
0x0003374c bne 0x33760 |
0x00033750 ldr r1, [pc, 0xd64] | r1 = *(0x344b8);
0x00033754 mov r0, r4 | r0 = r4;
0x00033758 add r1, pc, r1 | r1 = pc + r1;
0x0003375c bl 0x5124 | BIO_puts ();
| }
0x00033760 ldr r3, [pc, 0xd58] | r3 = *(0x344bc);
0x00033764 mov r5, 0 | r5 = 0;
0x00033768 add r3, pc, r3 | r3 = pc + r3;
0x0003376c str r3, [sp, 0x14] | var_14h = r3;
| label_0:
0x00033770 ldr r3, [r6] | r3 = *(r6);
0x00033774 cmp r5, r3 |
| if (r5 < r3) {
0x00033778 blt 0x339b0 | goto label_39;
| }
0x0003377c add r6, sp, 0x50 | r6 += var_50h;
0x00033780 mov r3, r6 | r3 = r6;
0x00033784 mov r2, 0 | r2 = 0;
0x00033788 mov r1, 3 | r1 = 3;
0x0003378c mov r0, r4 | r0 = r4;
0x00033790 bl 0x5aa8 | BIO_ctrl ();
0x00033794 ldr r2, [pc, 0xd28] | r2 = *(0x344c0);
0x00033798 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0003379c add r2, pc, r2 | r2 = pc + r2;
0x000337a0 mov r1, sl | r1 = sl;
0x000337a4 mov r5, 0 | r5 = 0;
0x000337a8 str r0, [sp] | *(sp) = r0;
0x000337ac mov r0, r7 | r0 = r7;
0x000337b0 bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x000337b4 mov r3, 0 | r3 = 0;
0x000337b8 mov r2, r3 | r2 = r3;
0x000337bc mov r1, 1 | r1 = 1;
0x000337c0 mov r0, r4 | r0 = r4;
0x000337c4 bl 0x5aa8 | BIO_ctrl ();
0x000337c8 str r5, [sp, 0x58] | var_58h = r5;
0x000337cc bl 0x4ecc | r0 = ASN1_STRING_new ();
0x000337d0 subs r3, r0, 0 | r3 = r0 - 0;
0x000337d4 str r3, [sp, 0x14] | var_14h = r3;
| if (r3 != r0) {
0x000337d8 beq 0x33860 |
0x000337dc ldr r2, [sp, 0xc] | r2 = var_ch;
0x000337e0 add r1, sp, 0x58 | r1 += var_58h;
0x000337e4 add r0, sp, 0x54 | r0 += var_54h;
0x000337e8 bl 0x54a8 | X509_get0_signature ();
0x000337ec ldr r2, [sp, 0x14] | r2 = var_14h;
0x000337f0 ldr r1, [sp, 0x58] | r1 = var_58h;
0x000337f4 mov r0, r4 | r0 = r4;
0x000337f8 bl 0x501c | X509_signature_print ();
0x000337fc ldr r0, [sp, 0x14] | r0 = var_14h;
0x00033800 bl 0x59ac | ASN1_STRING_free ();
0x00033804 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00033808 cmp r3, r5 |
| if (r3 == r5) {
0x0003380c beq 0x33860 | goto label_40;
| }
0x00033810 ldr r1, [r3] | r1 = *(r3);
0x00033814 mov r0, r4 | r0 = r4;
0x00033818 bl 0x5100 | i2a_ASN1_OBJECT ();
0x0003381c mov r3, r6 | r3 = r6;
0x00033820 mov r2, r5 | r2 = r5;
0x00033824 mov r1, 3 | r1 = 3;
0x00033828 mov r0, r4 | r0 = r4;
0x0003382c bl 0x5aa8 | BIO_ctrl ();
0x00033830 ldr r2, [pc, 0xc90] | r2 = *(0x344c4);
0x00033834 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00033838 add r2, pc, r2 | r2 = pc + r2;
0x0003383c mov r1, sl | r1 = sl;
0x00033840 str r0, [sp] | *(sp) = r0;
0x00033844 mov r0, r7 | r0 = r7;
0x00033848 bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x0003384c mov r3, r5 | r3 = r5;
0x00033850 mov r2, r5 | r2 = r5;
0x00033854 mov r1, 1 | r1 = 1;
0x00033858 mov r0, r4 | r0 = r4;
0x0003385c bl 0x5aa8 | BIO_ctrl ();
| }
| label_40:
0x00033860 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00033864 bl 0x54e4 | X509_get0_extensions ();
0x00033868 str r0, [sp, 0x20] | var_20h = r0;
0x0003386c bl 0x5afc | r0 = OPENSSL_sk_num ();
0x00033870 cmp r0, 0 |
| if (r0 > 0) {
0x00033874 bgt 0x33b14 | goto label_41;
| }
| label_1:
0x00033878 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0003387c bl 0x570c | X509_get0_notBefore ();
0x00033880 add r5, sp, 0x50 | r5 += var_50h;
0x00033884 mov r1, r0 | r1 = r0;
0x00033888 mov r0, r4 | r0 = r4;
0x0003388c bl 0x4fbc | ASN1_TIME_print ();
0x00033890 mov r3, r5 | r3 = r5;
0x00033894 mov r2, 0 | r2 = 0;
0x00033898 mov r1, 3 | r1 = 3;
0x0003389c mov r0, r4 | r0 = r4;
0x000338a0 bl 0x5aa8 | BIO_ctrl ();
0x000338a4 ldr r2, [pc, 0xc20] | r2 = *(0x344c8);
0x000338a8 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000338ac add r2, pc, r2 | r2 = pc + r2;
0x000338b0 mov r1, sl | r1 = sl;
0x000338b4 str r0, [sp] | *(sp) = r0;
0x000338b8 mov r0, r7 | r0 = r7;
0x000338bc bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x000338c0 mov r3, 0 | r3 = 0;
0x000338c4 mov r2, r3 | r2 = r3;
0x000338c8 mov r1, 1 | r1 = 1;
0x000338cc mov r0, r4 | r0 = r4;
0x000338d0 bl 0x5aa8 | BIO_ctrl ();
0x000338d4 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000338d8 bl 0x58e0 | r0 = X509_get0_notAfter ();
0x000338dc mov r1, r0 | r1 = r0;
0x000338e0 mov r0, r4 | r0 = r4;
0x000338e4 bl 0x4fbc | ASN1_TIME_print ();
0x000338e8 mov r3, r5 | r3 = r5;
0x000338ec mov r2, 0 | r2 = 0;
0x000338f0 mov r1, 3 | r1 = 3;
0x000338f4 mov r0, r4 | r0 = r4;
0x000338f8 bl 0x5aa8 | BIO_ctrl ();
0x000338fc ldr r2, [pc, 0xbcc] | r2 = *(0x344cc);
0x00033900 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00033904 add r2, pc, r2 | r2 = pc + r2;
0x00033908 mov r1, sl | r1 = sl;
0x0003390c str r0, [sp] | *(sp) = r0;
0x00033910 mov r0, r7 | r0 = r7;
0x00033914 bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x00033918 mov r3, 0 | r3 = 0;
0x0003391c mov r2, r3 | r2 = r3;
0x00033920 mov r1, 1 | r1 = 1;
0x00033924 mov r0, r4 | r0 = r4;
0x00033928 bl 0x5aa8 | BIO_ctrl ();
0x0003392c ldr r0, [sp, 0xc] | r0 = var_ch;
0x00033930 bl 0x507c | r0 = X509_get_pubkey ();
0x00033934 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00033938 bne 0x33b28 | goto label_42;
| }
0x0003393c ldr r1, [pc, 0xb90] | r1 = *(0x344d0);
0x00033940 mov r0, r7 | r0 = r7;
0x00033944 add r1, pc, r1 | r1 = pc + r1;
0x00033948 bl 0x104cc | Curl_infof ();
| label_6:
0x0003394c ldr r3, [sp, 0x54] | r3 = var_54h;
0x00033950 cmp r3, 0 |
| if (r3 != 0) {
0x00033954 bne 0x33e00 | goto label_43;
| }
| label_8:
0x00033958 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0003395c mov r0, r4 | r0 = r4;
0x00033960 bl 0x519c | PEM_write_bio_X509 ();
0x00033964 add r3, sp, 0x50 | r3 += var_50h;
0x00033968 mov r2, 0 | r2 = 0;
0x0003396c mov r1, 3 | r1 = 3;
0x00033970 mov r0, r4 | r0 = r4;
0x00033974 bl 0x5aa8 | BIO_ctrl ();
0x00033978 ldr r2, [pc, 0xb58] | r2 = *(0x344d4);
0x0003397c mov r1, sl | r1 = sl;
0x00033980 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00033984 add r2, pc, r2 | r2 = pc + r2;
0x00033988 add sl, sl, 1 | sl++;
0x0003398c str r0, [sp] | *(sp) = r0;
0x00033990 mov r0, r7 | r0 = r7;
0x00033994 bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x00033998 mov r3, 0 | r3 = 0;
0x0003399c mov r2, r3 | r2 = r3;
0x000339a0 mov r1, 1 | r1 = 1;
0x000339a4 mov r0, r4 | r0 = r4;
0x000339a8 bl 0x5aa8 | BIO_ctrl ();
0x000339ac b 0x33594 |
| } while (1);
| label_39:
0x000339b0 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x000339b4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000339b8 ldrb r2, [r3, r5] | r2 = *((r3 + r5));
0x000339bc mov r0, r4 | r0 = r4;
0x000339c0 bl 0x4e18 | BIO_printf ();
0x000339c4 add r5, r5, 1 | r5++;
0x000339c8 b 0x33770 | goto label_0;
| label_2:
0x000339cc mov r1, r6 | r1 = r6;
0x000339d0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000339d4 bl 0x4de8 | r0 = OPENSSL_sk_value ();
0x000339d8 mov r5, r0 | r5 = r0;
0x000339dc bl 0x55b0 | BIO_s_mem ();
0x000339e0 bl 0x540c | r0 = BIO_new ();
0x000339e4 subs r3, r0, 0 | r3 = r0 - 0;
0x000339e8 str r3, [sp, 0x14] | var_14h = r3;
| if (r3 == r0) {
0x000339ec beq 0x33878 | goto label_1;
| }
0x000339f0 mov r0, r5 | r0 = r5;
0x000339f4 bl 0x5118 | X509_EXTENSION_get_object ();
0x000339f8 mov r1, 0x80 | r1 = 0x80;
0x000339fc mov r2, r0 | r2 = r0;
0x00033a00 add r0, sp, 0x60 | r0 += s2;
0x00033a04 bl 0x5598 | i2t_ASN1_OBJECT ();
0x00033a08 mov r3, 0 | r3 = 0;
0x00033a0c mov r2, r3 | r2 = r3;
0x00033a10 mov r1, r5 | r1 = r5;
0x00033a14 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00033a18 bl 0x513c | r0 = X509V3_EXT_print ();
0x00033a1c cmp r0, 0 |
| if (r0 == 0) {
0x00033a20 bne 0x33a38 |
0x00033a24 mov r0, r5 | r0 = r5;
0x00033a28 bl 0x4f80 | r0 = X509_EXTENSION_get_data ();
0x00033a2c mov r1, r0 | r1 = r0;
0x00033a30 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00033a34 bl 0x53b8 | ASN1_STRING_print ();
| }
0x00033a38 add r3, sp, 0x5c | r3 += nmeb;
0x00033a3c mov r2, 0 | r2 = 0;
0x00033a40 mov r1, 0x73 | r1 = 0x73;
0x00033a44 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00033a48 bl 0x5aa8 | BIO_ctrl ();
0x00033a4c add r3, sp, 0x1e0 | r3 += var_1e0h;
0x00033a50 str r3, [sp, 0x18] | var_18h = r3;
0x00033a54 ldr r3, [pc, 0xa80] | r3 = *(0x344d8);
0x00033a58 mov r5, 0 | r5 = 0;
0x00033a5c add r3, pc, r3 | r3 = pc + r3;
0x00033a60 str r3, [sp, 0x28] | var_28h = r3;
| label_3:
0x00033a64 ldr r3, [sp, 0x5c] | r3 = nmeb;
0x00033a68 ldr r2, [r3] | r2 = *(r3);
0x00033a6c cmp r5, r2 |
| if (r5 <= r2) {
0x00033a70 blo 0x33aa8 | goto label_44;
| }
0x00033a74 add r3, sp, 0x1e0 | r3 += var_1e0h;
0x00033a78 add r2, sp, 0x60 | r2 += s2;
0x00033a7c mov r1, sl | r1 = sl;
0x00033a80 mov r0, r7 | r0 = r7;
0x00033a84 bl 0x37878 | Curl_ssl_push_certinfo ();
0x00033a88 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00033a8c bl 0x5ad8 | BIO_free ();
0x00033a90 add r6, r6, 1 | r6++;
| label_5:
0x00033a94 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00033a98 bl 0x5afc | r0 = OPENSSL_sk_num ();
0x00033a9c cmp r6, r0 |
| if (r6 < r0) {
0x00033aa0 blt 0x339cc | goto label_2;
| }
0x00033aa4 b 0x33878 | goto label_1;
| label_44:
0x00033aa8 ldr ip, [r3, 4] | ip = *((r3 + 4));
0x00033aac ldrb r3, [ip, r5] | r3 = *((ip + r5));
0x00033ab0 cmp r3, 0xa |
| if (r3 != 0xa) {
0x00033ab4 ldreq r3, [sp, 0x28] | r3 = var_28h;
| }
| if (r3 == 0xa) {
0x00033ab8 ldrne r3, [sp, 0x2c] | r3 = var_2ch;
| }
| if (r3 != 0xa) {
0x00033abc addeq r5, r5, 1 | r5++;
| }
0x00033ac0 mov r1, r5 | r1 = r5;
| label_4:
0x00033ac4 cmp r2, r1 |
0x00033ac8 add r5, r5, 1 | r5++;
| if (r2 < r1) {
0x00033acc bls 0x33a64 | goto label_3;
| }
0x00033ad0 add r1, ip, r5 | r1 = ip + r5;
0x00033ad4 ldrb r0, [r1, -1] | r0 = *((r1 - 1));
0x00033ad8 mov r1, r5 | r1 = r5;
0x00033adc cmp r0, 0x20 |
| if (r0 == 0x20) {
0x00033ae0 beq 0x33ac4 | goto label_4;
| }
0x00033ae4 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00033ae8 add r2, sp, 0x9e0 | r2 += var_9e0h;
0x00033aec sub r1, r2, r1 | r1 = r2 - r1;
0x00033af0 str r0, [sp] | *(sp) = r0;
0x00033af4 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00033af8 sub r1, r1, 0x600 | r1 -= var_600h;
0x00033afc ldr r0, [sp, 0x18] | r0 = var_18h;
0x00033b00 bl 0x579c | fcn_0000579c ();
0x00033b04 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00033b08 add r3, r3, r0 | r3 += r0;
0x00033b0c str r3, [sp, 0x18] | var_18h = r3;
0x00033b10 b 0x33a64 | goto label_3;
| label_41:
0x00033b14 ldr r3, [pc, 0x9c4] | r3 = *(0x344dc);
0x00033b18 mov r6, 0 | r6 = 0;
0x00033b1c add r3, pc, r3 | r3 = pc + r3;
0x00033b20 str r3, [sp, 0x2c] | var_2ch = r3;
0x00033b24 b 0x33a94 | goto label_5;
| label_42:
0x00033b28 bl 0x5178 | r0 = EVP_PKEY_id ();
0x00033b2c cmp r0, 0x1c |
| if (r0 == 0x1c) {
0x00033b30 beq 0x33cd0 | goto label_45;
| }
0x00033b34 cmp r0, 0x74 |
| if (r0 == 0x74) {
0x00033b38 beq 0x33c10 | goto label_46;
| }
0x00033b3c cmp r0, 6 |
| if (r0 != 6) {
0x00033b40 bne 0x33c04 | goto label_47;
| }
0x00033b44 mov r0, r6 | r0 = r6;
0x00033b48 bl 0x4e6c | EVP_PKEY_get0_RSA ();
0x00033b4c mov r3, 0 | r3 = 0;
0x00033b50 add r2, sp, 0x1e0 | r2 += var_1e0h;
0x00033b54 add r1, sp, 0x60 | r1 += s2;
0x00033b58 bl 0x5bf8 | RSA_get0_key ();
0x00033b5c ldr r1, [sp, 0x60] | r1 = s2;
0x00033b60 mov r0, r4 | r0 = r4;
0x00033b64 bl 0x585c | BN_print ();
0x00033b68 mov r3, r5 | r3 = r5;
0x00033b6c mov r2, 0 | r2 = 0;
0x00033b70 mov r1, 3 | r1 = 3;
0x00033b74 mov r0, r4 | r0 = r4;
0x00033b78 bl 0x5aa8 | BIO_ctrl ();
0x00033b7c ldr r2, [pc, 0x960] | r2 = *(0x344e0);
0x00033b80 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00033b84 add r2, pc, r2 | r2 = pc + r2;
0x00033b88 mov r1, sl | r1 = sl;
0x00033b8c ldr r5, [pc, 0x954] | r5 = *(0x344e4);
0x00033b90 add r5, pc, r5 | r5 = pc + r5;
0x00033b94 str r0, [sp] | *(sp) = r0;
0x00033b98 mov r0, r7 | r0 = r7;
0x00033b9c bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x00033ba0 mov r3, 0 | r3 = 0;
0x00033ba4 mov r2, r3 | r2 = r3;
0x00033ba8 mov r1, 1 | r1 = 1;
0x00033bac mov r0, r4 | r0 = r4;
0x00033bb0 bl 0x5aa8 | BIO_ctrl ();
0x00033bb4 ldr r3, [sp, 0x60] | r3 = s2;
0x00033bb8 mov r2, sl | r2 = sl;
0x00033bbc str r3, [sp, 4] | var_4h = r3;
0x00033bc0 ldr r3, [pc, 0x924] | r3 = *(0x344e8);
0x00033bc4 mov r1, r4 | r1 = r4;
0x00033bc8 add r3, pc, r3 | r3 = pc + r3;
0x00033bcc str r3, [sp] | *(sp) = r3;
0x00033bd0 mov r0, r7 | r0 = r7;
0x00033bd4 mov r3, r5 | r3 = r5;
0x00033bd8 bl 0x32bfc | pubkey_show ();
0x00033bdc ldr r3, [sp, 0x1e0] | r3 = var_1e0h;
0x00033be0 str r3, [sp, 4] | var_4h = r3;
0x00033be4 ldr r3, [pc, 0x904] | r3 = *(0x344ec);
0x00033be8 add r3, pc, r3 | r3 = pc + r3;
| do {
| label_7:
0x00033bec str r3, [sp] | *(sp) = r3;
0x00033bf0 mov r2, sl | r2 = sl;
0x00033bf4 mov r3, r5 | r3 = r5;
0x00033bf8 mov r1, r4 | r1 = r4;
0x00033bfc mov r0, r7 | r0 = r7;
0x00033c00 bl 0x32bfc | pubkey_show ();
| label_47:
0x00033c04 mov r0, r6 | r0 = r6;
0x00033c08 bl 0x59c4 | EVP_PKEY_free ();
0x00033c0c b 0x3394c | goto label_6;
| label_46:
0x00033c10 mov r0, r6 | r0 = r6;
0x00033c14 bl 0x54cc | EVP_PKEY_get0_DSA ();
0x00033c18 add r3, sp, 0x60 | r3 += s2;
0x00033c1c sub r2, r3, 4 | r2 -= nmeb;
0x00033c20 sub r1, r3, 8 | r1 -= var_58h;
0x00033c24 mov r5, r0 | r5 = r0;
0x00033c28 bl 0x5904 | DSA_get0_pqg ();
0x00033c2c mov r0, r5 | r0 = r5;
0x00033c30 mov r2, 0 | r2 = 0;
0x00033c34 add r1, sp, 0x1e0 | r1 += var_1e0h;
0x00033c38 bl 0x5310 | DSA_get0_key ();
0x00033c3c ldr r3, [sp, 0x58] | r3 = var_58h;
0x00033c40 ldr r5, [pc, 0x8ac] | r5 = *(0x344f0);
0x00033c44 str r3, [sp, 4] | var_4h = r3;
0x00033c48 ldr r3, [pc, 0x8a8] | r3 = *(0x344f4);
0x00033c4c add r5, pc, r5 | r5 = pc + r5;
0x00033c50 add r3, pc, r3 | r3 = pc + r3;
0x00033c54 str r3, [sp] | *(sp) = r3;
0x00033c58 mov r2, sl | r2 = sl;
0x00033c5c mov r3, r5 | r3 = r5;
0x00033c60 mov r1, r4 | r1 = r4;
0x00033c64 mov r0, r7 | r0 = r7;
0x00033c68 bl 0x32bfc | pubkey_show ();
0x00033c6c ldr r3, [sp, 0x5c] | r3 = nmeb;
0x00033c70 mov r2, sl | r2 = sl;
0x00033c74 str r3, [sp, 4] | var_4h = r3;
0x00033c78 ldr r3, [pc, 0x87c] | r3 = *(0x344f8);
0x00033c7c mov r1, r4 | r1 = r4;
0x00033c80 add r3, pc, r3 | r3 = pc + r3;
0x00033c84 str r3, [sp] | *(sp) = r3;
0x00033c88 mov r0, r7 | r0 = r7;
0x00033c8c mov r3, r5 | r3 = r5;
0x00033c90 bl 0x32bfc | pubkey_show ();
0x00033c94 ldr r3, [sp, 0x60] | r3 = s2;
0x00033c98 mov r2, sl | r2 = sl;
0x00033c9c str r3, [sp, 4] | var_4h = r3;
0x00033ca0 ldr r3, [pc, 0x858] | r3 = *(0x344fc);
0x00033ca4 mov r1, r4 | r1 = r4;
0x00033ca8 add r3, pc, r3 | r3 = pc + r3;
0x00033cac str r3, [sp] | *(sp) = r3;
0x00033cb0 mov r0, r7 | r0 = r7;
0x00033cb4 mov r3, r5 | r3 = r5;
0x00033cb8 bl 0x32bfc | pubkey_show ();
0x00033cbc ldr r3, [sp, 0x1e0] | r3 = var_1e0h;
0x00033cc0 str r3, [sp, 4] | var_4h = r3;
0x00033cc4 ldr r3, [pc, 0x838] | r3 = *(0x34500);
0x00033cc8 add r3, pc, r3 | r3 = pc + r3;
0x00033ccc b 0x33bec |
| } while (1);
| label_45:
0x00033cd0 mov r0, r6 | r0 = r6;
0x00033cd4 bl 0x5898 | EVP_PKEY_get0_DH ();
0x00033cd8 add r3, sp, 0x60 | r3 += s2;
0x00033cdc sub r2, r3, 4 | r2 -= nmeb;
0x00033ce0 sub r1, r3, 8 | r1 -= var_58h;
0x00033ce4 mov r5, r0 | r5 = r0;
0x00033ce8 bl 0x5c34 | DH_get0_pqg ();
0x00033cec mov r0, r5 | r0 = r5;
0x00033cf0 mov r2, 0 | r2 = 0;
0x00033cf4 add r1, sp, 0x1e0 | r1 += var_1e0h;
0x00033cf8 bl 0x4fb0 | DH_get0_key ();
0x00033cfc ldr r3, [sp, 0x58] | r3 = var_58h;
0x00033d00 ldr r5, [pc, 0x800] | r5 = *(0x34504);
0x00033d04 str r3, [sp, 4] | var_4h = r3;
0x00033d08 ldr r3, [pc, 0x7fc] | r3 = *(0x34508);
0x00033d0c add r5, pc, r5 | r5 = pc + r5;
0x00033d10 add r3, pc, r3 | r3 = pc + r3;
0x00033d14 str r3, [sp] | *(sp) = r3;
0x00033d18 mov r2, sl | r2 = sl;
0x00033d1c mov r3, r5 | r3 = r5;
0x00033d20 mov r1, r4 | r1 = r4;
0x00033d24 mov r0, r7 | r0 = r7;
0x00033d28 bl 0x32bfc | pubkey_show ();
0x00033d2c ldr r3, [sp, 0x5c] | r3 = nmeb;
0x00033d30 mov r2, sl | r2 = sl;
0x00033d34 str r3, [sp, 4] | var_4h = r3;
0x00033d38 ldr r3, [pc, 0x7d0] | r3 = *(0x3450c);
0x00033d3c mov r1, r4 | r1 = r4;
0x00033d40 add r3, pc, r3 | r3 = pc + r3;
0x00033d44 str r3, [sp] | *(sp) = r3;
0x00033d48 mov r0, r7 | r0 = r7;
0x00033d4c mov r3, r5 | r3 = r5;
0x00033d50 bl 0x32bfc | pubkey_show ();
0x00033d54 ldr r3, [sp, 0x60] | r3 = s2;
0x00033d58 mov r2, sl | r2 = sl;
0x00033d5c str r3, [sp, 4] | var_4h = r3;
0x00033d60 ldr r3, [pc, 0x7ac] | r3 = Curl_pgrsSetDownloadSize;
0x00033d64 mov r1, r4 | r1 = r4;
0x00033d68 add r3, pc, r3 | r3 = pc + r3;
0x00033d6c str r3, [sp] | *(sp) = r3;
0x00033d70 mov r0, r7 | r0 = r7;
0x00033d74 mov r3, r5 | r3 = r5;
0x00033d78 bl 0x32bfc | pubkey_show ();
0x00033d7c ldr r3, [sp, 0x1e0] | r3 = var_1e0h;
0x00033d80 str r3, [sp, 4] | var_4h = r3;
0x00033d84 ldr r3, [pc, 0x78c] | r3 = *(0x34514);
0x00033d88 add r3, pc, r3 | r3 = pc + r3;
0x00033d8c b 0x33bec | goto label_7;
| do {
0x00033d90 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00033d94 mov r1, r6 | r1 = r6;
0x00033d98 ldrb r2, [r3, r5] | r2 = *((r3 + r5));
0x00033d9c mov r0, r4 | r0 = r4;
0x00033da0 bl 0x4e18 | BIO_printf ();
0x00033da4 add r5, r5, 1 | r5++;
| label_9:
0x00033da8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00033dac ldr r2, [r3] | r2 = *(r3);
0x00033db0 cmp r5, r2 |
0x00033db4 blt 0x33d90 |
| } while (r5 < r2);
0x00033db8 add r3, sp, 0x50 | r3 += var_50h;
0x00033dbc mov r2, 0 | r2 = 0;
0x00033dc0 mov r1, 3 | r1 = 3;
0x00033dc4 mov r0, r4 | r0 = r4;
0x00033dc8 bl 0x5aa8 | BIO_ctrl ();
0x00033dcc ldr r2, [pc, 0x748] | r2 = *(0x34518);
0x00033dd0 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00033dd4 mov r1, sl | r1 = sl;
0x00033dd8 add r2, pc, r2 | r2 = pc + r2;
0x00033ddc str r0, [sp] | *(sp) = r0;
0x00033de0 mov r0, r7 | r0 = r7;
0x00033de4 bl 0x37788 | Curl_ssl_push_certinfo_len ();
0x00033de8 mov r3, 0 | r3 = 0;
0x00033dec mov r2, r3 | r2 = r3;
0x00033df0 mov r1, 1 | r1 = 1;
0x00033df4 mov r0, r4 | r0 = r4;
0x00033df8 bl 0x5aa8 | BIO_ctrl ();
0x00033dfc b 0x33958 | goto label_8;
| label_43:
0x00033e00 ldr r6, [pc, 0x718] | r6 = *(0x3451c);
0x00033e04 mov r5, 0 | r5 = 0;
0x00033e08 add r6, pc, r6 | r6 = pc + r6;
0x00033e0c b 0x33da8 | goto label_9;
| label_38:
0x00033e10 ldr r4, [fp, 0xc] | r4 = *(arg_ch);
0x00033e14 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00033e18 bl 0x57d8 | SSL_get_peer_certificate ();
0x00033e1c ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00033e20 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00033e24 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00033e28 cmp r3, 0 |
| if (r3 != 0) {
0x00033e2c bne 0x33e68 | goto label_48;
| }
0x00033e30 mov r0, sl | r0 = sl;
0x00033e34 bl 0x5ad8 | BIO_free ();
0x00033e38 ldr r0, [sp, 8] | r0 = var_8h;
0x00033e3c bl 0x5ad8 | BIO_free ();
0x00033e40 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00033e44 cmp r3, 0 |
| if (r3 == 0) {
0x00033e48 ldreq r4, [sp, 0x10] | r4 = var_10h;
| goto label_49;
| }
| if (r3 == 0) {
| label_49:
0x00033e4c beq 0x335ec | goto label_10;
| }
0x00033e50 ldr r1, [pc, 0x6cc] | r1 = *(0x34520);
0x00033e54 mov r0, sb | r0 = sb;
0x00033e58 add r1, pc, r1 | r1 = pc + r1;
0x00033e5c bl 0x10544 | Curl_failf ();
0x00033e60 mov r4, 0x33 | r4 = 0x33;
0x00033e64 b 0x335ec | goto label_10;
| label_48:
0x00033e68 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x00033e6c cmp r3, 2 |
| if (r3 != 2) {
0x00033e70 bne 0x34024 | goto label_50;
| }
0x00033e74 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00033e78 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00033e7c movne r3, 1 | r3 = 1;
| }
0x00033e80 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x00033e84 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00033e88 cmp r3, 2 |
| if (r3 == 2) {
0x00033e8c beq 0x34030 | goto label_51;
| }
0x00033e90 ldr r2, [pc, 0x690] | r2 = *(0x34524);
0x00033e94 add r2, pc, r2 | r2 = pc + r2;
| do {
| label_11:
0x00033e98 ldr r1, [pc, 0x68c] | r1 = *(0x34528);
0x00033e9c mov r0, sb | r0 = sb;
0x00033ea0 add r1, pc, r1 | r1 = pc + r1;
0x00033ea4 bl 0x104cc | Curl_infof ();
0x00033ea8 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00033eac add r4, sp, 0x1e0 | r4 += var_1e0h;
0x00033eb0 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00033eb4 bl 0x5928 | X509_get_subject_name ();
0x00033eb8 mov r1, r4 | r1 = r4;
0x00033ebc bl 0x33428 | r0 = x509_name_oneline_constprop_13 ();
0x00033ec0 cmp r0, 0 |
| if (r0 != 0) {
0x00033ec4 moveq r2, r4 | r2 = r4;
| }
| if (r0 == 0) {
0x00033ec8 ldrne r2, [pc, 0x660] | r2 = *((pc + 0x660));
| }
| if (r0 == 0) {
0x00033ecc addne r2, pc, r2 | r2 = pc + r2;
| }
0x00033ed0 ldr r1, [pc, 0x65c] | r1 = *(0x34530);
0x00033ed4 mov r0, sb | r0 = sb;
0x00033ed8 add r1, pc, r1 | r1 = pc + r1;
0x00033edc bl 0x104cc | Curl_infof ();
0x00033ee0 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00033ee4 add r4, sp, 0x4c | r4 += var_4ch;
0x00033ee8 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00033eec bl 0x570c | r0 = X509_get0_notBefore ();
0x00033ef0 mov r1, r0 | r1 = r0;
0x00033ef4 ldr r0, [sp, 8] | r0 = var_8h;
0x00033ef8 bl 0x4fbc | ASN1_TIME_print ();
0x00033efc mov r3, r4 | r3 = r4;
0x00033f00 mov r2, 0 | r2 = 0;
0x00033f04 mov r1, 3 | r1 = 3;
0x00033f08 ldr r0, [sp, 8] | r0 = var_8h;
0x00033f0c bl 0x5aa8 | BIO_ctrl ();
0x00033f10 ldr r1, [pc, 0x620] | r1 = *(0x34534);
0x00033f14 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00033f18 add r1, pc, r1 | r1 = pc + r1;
0x00033f1c mov r2, r0 | r2 = r0;
0x00033f20 mov r0, sb | r0 = sb;
0x00033f24 bl 0x104cc | Curl_infof ();
0x00033f28 mov r3, 0 | r3 = 0;
0x00033f2c mov r2, r3 | r2 = r3;
0x00033f30 mov r1, 1 | r1 = 1;
0x00033f34 ldr r0, [sp, 8] | r0 = var_8h;
0x00033f38 bl 0x5aa8 | BIO_ctrl ();
0x00033f3c ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00033f40 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00033f44 bl 0x58e0 | r0 = X509_get0_notAfter ();
0x00033f48 mov r1, r0 | r1 = r0;
0x00033f4c ldr r0, [sp, 8] | r0 = var_8h;
0x00033f50 bl 0x4fbc | ASN1_TIME_print ();
0x00033f54 mov r3, r4 | r3 = r4;
0x00033f58 mov r2, 0 | r2 = 0;
0x00033f5c mov r1, 3 | r1 = 3;
0x00033f60 ldr r0, [sp, 8] | r0 = var_8h;
0x00033f64 bl 0x5aa8 | BIO_ctrl ();
0x00033f68 ldr r1, [pc, 0x5cc] | r1 = *(0x34538);
0x00033f6c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00033f70 add r1, pc, r1 | r1 = pc + r1;
0x00033f74 mov r2, r0 | r2 = r0;
0x00033f78 mov r0, sb | r0 = sb;
0x00033f7c bl 0x104cc | Curl_infof ();
0x00033f80 mov r3, 0 | r3 = 0;
0x00033f84 mov r2, r3 | r2 = r3;
0x00033f88 mov r1, 1 | r1 = 1;
0x00033f8c ldr r0, [sp, 8] | r0 = var_8h;
0x00033f90 bl 0x5aa8 | BIO_ctrl ();
0x00033f94 ldr r0, [sp, 8] | r0 = var_8h;
0x00033f98 bl 0x5ad8 | BIO_free ();
0x00033f9c ldr r2, [r8, 0xf0] | r2 = *((r8 + 0xf0));
0x00033fa0 ldr r1, [fp, 0xc] | r1 = *(arg_ch);
0x00033fa4 cmp r2, 2 |
| if (r2 != 2) {
0x00033fa8 bne 0x3403c | goto label_52;
| }
0x00033fac ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00033fb0 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00033fb4 movne r3, 1 | r3 = 1;
| }
0x00033fb8 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x00033fbc ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00033fc0 cmp r3, 2 |
| if (r3 == 2) {
0x00033fc4 beq 0x3403c | goto label_52;
| }
0x00033fc8 ldrb r3, [r8, 0x231] | r3 = *((r8 + 0x231));
0x00033fcc cmp r3, 0 |
| if (r3 == 0) {
0x00033fd0 ldrne r3, [r1, 8] | r3 = *((r1 + 8));
| }
| if (r3 == 0) {
0x00033fd4 ldrne r6, [r8] | r6 = *(r8);
| }
| if (r3 == 0) {
0x00033fd8 strne r3, [sp, 0x2c] | var_2ch = r3;
| }
| if (r3 != 0) {
0x00033fdc bne 0x3405c | goto label_53;
| }
| label_12:
0x00033fe0 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00033fe4 add r4, sp, 0x1e0 | r4 += var_1e0h;
0x00033fe8 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00033fec bl 0x4f44 | X509_get_issuer_name ();
0x00033ff0 mov r1, r4 | r1 = r4;
0x00033ff4 bl 0x33428 | r0 = x509_name_oneline_constprop_13 ();
0x00033ff8 cmp r0, 0 |
| if (r0 == 0) {
0x00033ffc beq 0x345d0 | goto label_54;
| }
0x00034000 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00034004 cmp r3, 0 |
| if (r3 != 0) {
0x00034008 beq 0x3401c |
0x0003400c ldr r1, [pc, 0x52c] | r1 = *(0x3453c);
0x00034010 mov r0, sb | r0 = sb;
0x00034014 add r1, pc, r1 | r1 = pc + r1;
0x00034018 bl 0x10544 | Curl_failf ();
| }
0x0003401c mov r4, 0x23 | r4 = 0x23;
0x00034020 b 0x348c4 | goto label_24;
| label_50:
0x00034024 ldr r2, [pc, 0x518] | r2 = *(0x34540);
0x00034028 add r2, pc, r2 | r2 = pc + r2;
0x0003402c b 0x33e98 |
| } while (1);
| label_51:
0x00034030 ldr r2, [pc, 0x510] | r2 = *(0x34544);
0x00034034 add r2, pc, r2 | r2 = pc + r2;
0x00034038 b 0x33e98 | goto label_11;
| label_52:
0x0003403c ldrb r3, [r8, 0x209] | r3 = *((r8 + 0x209));
0x00034040 cmp r3, 0 |
| if (r3 == 0) {
0x00034044 beq 0x33fe0 | goto label_12;
| }
0x00034048 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x0003404c cmp r2, 2 |
0x00034050 str r3, [sp, 0x2c] | var_2ch = r3;
0x00034054 ldr r6, [r8] | r6 = *(r8);
| if (r2 == 2) {
0x00034058 bne 0x34080 |
| label_53:
0x0003405c ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00034060 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00034064 movne r3, 1 | r3 = 1;
| }
0x00034068 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x0003406c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00034070 cmp r3, 2 |
| if (r3 == 2) {
0x00034074 ldrne r3, [r8, 0xe4] | r3 = *((r8 + 0xe4));
| }
| if (r3 == 2) {
0x00034078 strne r3, [sp, 0xc] | var_ch = r3;
| }
| if (r3 != 2) {
0x0003407c bne 0x34090 | goto label_55;
| }
| }
0x00034080 ldr r3, [r8, 0xa0] | r3 = *((r8 + 0xa0));
0x00034084 cmp r2, 2 |
0x00034088 str r3, [sp, 0xc] | var_ch = r3;
| if (r2 == 2) {
0x0003408c bne 0x340b0 |
| label_55:
0x00034090 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00034094 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00034098 movne r3, 1 | r3 = 1;
| }
0x0003409c add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x000340a0 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000340a4 cmp r3, 2 |
| if (r3 == 2) {
0x000340a8 ldrne r3, [r8, 0xe8] | r3 = *((r8 + 0xe8));
| }
| if (r3 != 2) {
0x000340ac bne 0x340b4 | goto label_56;
| }
| }
0x000340b0 ldr r3, [r8, 0xa4] | r3 = *((r8 + 0xa4));
| label_56:
0x000340b4 str r3, [sp, 8] | var_8h = r3;
0x000340b8 ldrb r3, [r8, 0x25a] | r3 = *((r8 + 0x25a));
0x000340bc cmp r3, 0 |
| if (r3 != 0) {
0x000340c0 bne 0x341e0 | goto label_57;
| }
| label_13:
0x000340c4 add r2, sp, 0x60 | r2 += s2;
0x000340c8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000340cc mov r0, 2 | r0 = 2;
0x000340d0 bl 0x5190 | r0 = inet_pton ();
0x000340d4 cmp r0, 0 |
| if (r0 == 0) {
0x000340d8 movne r3, 4 | r3 = 4;
| }
| if (r0 != 0) {
0x000340dc moveq r3, 0 | r3 = 0;
| }
0x000340e0 str r3, [sp, 0x28] | var_28h = r3;
| if (r0 == 0) {
0x000340e4 movne r3, 7 | r3 = 7;
| }
| if (r0 != 0) {
0x000340e8 moveq r3, 2 | r3 = 2;
| }
| label_14:
0x000340ec str r3, [sp, 0x14] | var_14h = r3;
0x000340f0 mov r3, 0 | r3 = 0;
0x000340f4 mov r2, r3 | r2 = r3;
0x000340f8 mov r1, 0x55 | r1 = 0x55;
0x000340fc ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00034100 bl 0x5a90 | r0 = X509_get_ext_d2i ();
0x00034104 subs r3, r0, 0 | r3 = r0 - 0;
0x00034108 str r3, [sp, 0x24] | var_24h = r3;
| if (r3 == r0) {
0x0003410c beq 0x34c60 | goto label_58;
| }
0x00034110 bl 0x5afc | OPENSSL_sk_num ();
0x00034114 mov r3, 0 | r3 = 0;
0x00034118 str r3, [sp, 0x38] | var_38h = r3;
0x0003411c mov r7, r3 | r7 = r3;
0x00034120 str r3, [sp, 0x18] | var_18h = r3;
0x00034124 mov r5, r3 | r5 = r3;
0x00034128 str r3, [sp, 0x20] | var_20h = r3;
0x0003412c ldr r3, [pc, 0x418] | r3 = *(0x34548);
0x00034130 add r3, pc, r3 | r3 = pc + r3;
0x00034134 str r3, [sp, 0x40] | var_40h = r3;
0x00034138 ldr r3, [pc, 0x410] | r3 = *(0x3454c);
0x0003413c add r3, pc, r3 | r3 = pc + r3;
0x00034140 str r3, [sp, 0x44] | var_44h = r3;
0x00034144 str r0, [sp, 0x3c] | var_3ch = r0;
| label_15:
0x00034148 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0003414c ldr r2, [sp, 0x18] | r2 = var_18h;
0x00034150 eor r4, r7, 1 | r4 = r7 ^ 1;
0x00034154 cmp r3, r2 |
| if (r3 > r2) {
0x00034158 movle r4, 0 | r4 = 0;
| }
| if (r3 <= r2) {
0x0003415c andgt r4, r4, 1 | r4 &= 1;
| }
0x00034160 cmp r4, 0 |
| if (r4 != 0) {
0x00034164 bne 0x34208 | goto label_59;
| }
0x00034168 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0003416c bl 0x4fa4 | GENERAL_NAMES_free ();
0x00034170 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00034174 orr r3, r7, r3 | r3 = r7 | r3;
0x00034178 tst r3, 0xff |
| if ((r3 & 0xff) != 0) {
0x0003417c bne 0x33fe0 | goto label_12;
| }
| label_31:
0x00034180 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00034184 orr r5, r3, r5 | r5 = r3 | r5;
0x00034188 tst r5, 0xff |
| if ((r5 & 0xff) == 0) {
0x0003418c beq 0x342e0 | goto label_60;
| }
0x00034190 ldr r1, [pc, 0x3bc] | r1 = *(0x34550);
0x00034194 ldr r2, [sp, 8] | r2 = var_8h;
0x00034198 add r1, pc, r1 | r1 = pc + r1;
0x0003419c mov r0, r6 | r0 = r6;
0x000341a0 bl 0x104cc | Curl_infof ();
0x000341a4 ldr r1, [pc, 0x3ac] | r1 = *(0x34554);
0x000341a8 ldr r2, [sp, 8] | r2 = var_8h;
0x000341ac add r1, pc, r1 | r1 = pc + r1;
0x000341b0 mov r0, r6 | r0 = r6;
0x000341b4 bl 0x10544 | Curl_failf ();
0x000341b8 mov r4, 0x33 | r4 = 0x33;
| label_16:
0x000341bc mov r0, sl | r0 = sl;
0x000341c0 bl 0x5ad8 | BIO_free ();
0x000341c4 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x000341c8 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x000341cc bl 0x5b74 | X509_free ();
0x000341d0 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x000341d4 mov r2, 0 | r2 = 0;
0x000341d8 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000341dc b 0x335ec | goto label_10;
| label_57:
0x000341e0 add r2, sp, 0x60 | r2 += s2;
0x000341e4 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000341e8 mov r0, 0xa | r0 = 0xa;
0x000341ec bl 0x5190 | r0 = inet_pton ();
0x000341f0 cmp r0, 0 |
| if (r0 == 0) {
0x000341f4 beq 0x340c4 | goto label_13;
| }
0x000341f8 mov r3, 0x10 | r3 = 0x10;
0x000341fc str r3, [sp, 0x28] | var_28h = r3;
0x00034200 mov r3, 7 | r3 = 7;
0x00034204 b 0x340ec | goto label_14;
| label_59:
0x00034208 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0003420c ldr r0, [sp, 0x24] | r0 = var_24h;
0x00034210 bl 0x4de8 | OPENSSL_sk_value ();
0x00034214 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00034218 ldr r2, [r0] | r2 = *(r0);
0x0003421c mov r7, r0 | r7 = r0;
0x00034220 cmp r2, 2 |
| if (r2 == 2) {
0x00034224 beq 0x34ca4 | goto label_61;
| }
0x00034228 cmp r2, 7 |
| if (r2 == 7) {
0x0003422c beq 0x34c74 | goto label_62;
| }
0x00034230 cmp r2, r3 |
| if (r2 != r3) {
0x00034234 bne 0x342d8 | goto label_34;
| }
0x00034238 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x0003423c bl 0x5298 | ASN1_STRING_get0_data ();
0x00034240 str r0, [sp, 0x1c] | var_1ch = r0;
0x00034244 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00034248 bl 0x5c58 | ASN1_STRING_length ();
0x0003424c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00034250 cmp r3, 2 |
0x00034254 mov r7, r0 | r7 = r0;
| if (r3 != 2) {
0x00034258 bne 0x342d8 | goto label_34;
| }
| label_35:
0x0003425c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00034260 bl 0x5250 | r0 = strlen (r0);
0x00034264 cmp r0, r7 |
| if (r0 != r7) {
0x00034268 bne 0x342d8 | goto label_34;
| }
0x0003426c ldr r1, [sp, 0xc] | r1 = var_ch;
0x00034270 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00034274 bl 0x282ec | r0 = Curl_cert_hostcheck ();
0x00034278 cmp r0, 0 |
| if (r0 == 0) {
0x0003427c beq 0x342d8 | goto label_34;
| }
0x00034280 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00034284 ldr r2, [sp, 8] | r2 = var_8h;
0x00034288 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0003428c mov r0, r6 | r0 = r6;
0x00034290 bl 0x104cc | Curl_infof ();
| do {
0x00034294 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00034298 mov r7, r4 | r7 = r4;
0x0003429c add r3, r3, 1 | r3++;
0x000342a0 str r3, [sp, 0x18] | var_18h = r3;
0x000342a4 b 0x34148 | goto label_15;
| label_33:
0x000342a8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000342ac add r1, sp, 0x60 | r1 += s2;
0x000342b0 mov r0, r5 | r0 = r5;
0x000342b4 bl 0x5820 | r0 = memcmp (r0, r1, r2);
0x000342b8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x000342bc bne 0x34c9c | goto label_63;
| }
0x000342c0 ldr r2, [sp, 8] | r2 = var_8h;
0x000342c4 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000342c8 mov r0, r6 | r0 = r6;
0x000342cc mov r5, r4 | r5 = r4;
0x000342d0 bl 0x104cc | Curl_infof ();
0x000342d4 str r4, [sp, 0x38] | var_38h = r4;
| label_34:
0x000342d8 mov r4, 0 | r4 = 0;
0x000342dc b 0x34294 |
| } while (1);
| label_60:
0x000342e0 ldr r3, [pc, 0x274] | r3 = *(0x34558);
0x000342e4 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000342e8 add r3, pc, r3 | r3 = pc + r3;
0x000342ec str r3, [sp, 0x5c] | nmeb = r3;
0x000342f0 bl 0x5928 | r0 = X509_get_subject_name ();
0x000342f4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000342f8 mvnne r4, 0 | r4 = ~0;
| }
| if (r5 != r0) {
0x000342fc bne 0x34370 | goto label_64;
| }
| label_17:
0x00034300 mov r4, 0 | r4 = 0;
| label_18:
0x00034304 ldr r3, [pc, 0x254] | r3 = *(0x3455c);
0x00034308 ldr r2, [sp, 0x5c] | r2 = nmeb;
0x0003430c add r3, pc, r3 | r3 = pc + r3;
0x00034310 cmp r2, r3 |
| if (r2 != r3) {
0x00034314 moveq r3, 0 | r3 = 0;
| }
| if (r2 != r3) {
0x00034318 streq r3, [sp, 0x5c] | nmeb = r3;
| }
0x0003431c cmp r4, 0 |
| if (r4 == 0) {
0x00034320 bne 0x34344 |
0x00034324 ldr r0, [sp, 0x5c] | r0 = nmeb;
0x00034328 cmp r0, 0 |
| if (r0 != 0) {
0x0003432c bne 0x34454 | goto label_65;
| }
0x00034330 ldr r1, [pc, 0x22c] | r1 = *(0x34560);
0x00034334 mov r0, r6 | r0 = r6;
0x00034338 add r1, pc, r1 | r1 = pc + r1;
0x0003433c bl 0x10544 | Curl_failf ();
| label_20:
0x00034340 mov r4, 0x33 | r4 = 0x33;
| }
| label_21:
0x00034344 ldr r0, [sp, 0x5c] | r0 = nmeb;
0x00034348 cmp r0, 0 |
| if (r0 != 0) {
0x0003434c beq 0x34360 |
0x00034350 ldr r1, [pc, 0x210] | r1 = *(0x34564);
0x00034354 ldr r2, [pc, 0x210] | r2 = *(0x34568);
0x00034358 add r1, pc, r1 | r1 = pc + r1;
0x0003435c bl 0x5340 | CRYPTO_free ();
| }
0x00034360 cmp r4, 0 |
| if (r4 == 0) {
0x00034364 beq 0x33fe0 | goto label_12;
| }
0x00034368 b 0x341bc | goto label_16;
| do {
0x0003436c mov r4, r0 | r4 = r0;
| label_64:
0x00034370 mov r2, r4 | r2 = r4;
0x00034374 mov r1, 0xd | r1 = 0xd;
0x00034378 mov r0, r5 | r0 = r5;
0x0003437c bl 0x57a8 | r0 = X509_NAME_get_index_by_NID ();
0x00034380 cmp r0, 0 |
0x00034384 bge 0x3436c |
| } while (r0 >= 0);
0x00034388 cmn r4, 1 |
| if (r4 == 1) {
0x0003438c beq 0x34300 | goto label_17;
| }
0x00034390 mov r1, r4 | r1 = r4;
0x00034394 mov r0, r5 | r0 = r5;
0x00034398 bl 0x51d8 | X509_NAME_get_entry ();
0x0003439c bl 0x5220 | r0 = X509_NAME_ENTRY_get_data ();
0x000343a0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000343a4 beq 0x34300 | goto label_17;
| }
0x000343a8 bl 0x5a9c | r0 = ASN1_STRING_type ();
0x000343ac cmp r0, 0xc |
| if (r0 != 0xc) {
0x000343b0 bne 0x34440 | goto label_66;
| }
0x000343b4 mov r0, r5 | r0 = r5;
0x000343b8 bl 0x5c58 | r0 = ASN1_STRING_length ();
0x000343bc subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x000343c0 blt 0x3440c |
0x000343c4 ldr r1, [pc, 0x1a4] | r1 = *(0x3456c);
0x000343c8 ldr r2, [pc, 0x1a4] | r2 = *(0x34570);
0x000343cc add r1, pc, r1 | r1 = pc + r1;
0x000343d0 add r0, r4, 1 | r0 = r4 + 1;
0x000343d4 bl 0x528c | r0 = CRYPTO_malloc ();
0x000343d8 cmp r0, 0 |
0x000343dc mov r7, r0 | r7 = r0;
0x000343e0 str r0, [sp, 0x5c] | nmeb = r0;
| if (r0 == 0) {
0x000343e4 beq 0x3440c | goto label_19;
| }
0x000343e8 mov r0, r5 | r0 = r5;
0x000343ec bl 0x5298 | ASN1_STRING_get0_data ();
0x000343f0 mov r2, r4 | r2 = r4;
0x000343f4 mov r1, r0 | r1 = r0;
0x000343f8 mov r0, r7 | r0 = r7;
0x000343fc bl 0x4f5c | memcpy (r0, r1, r2);
0x00034400 ldr r3, [sp, 0x5c] | r3 = nmeb;
0x00034404 mov r2, 0 | r2 = 0;
0x00034408 strb r2, [r3, r4] | *((r3 + r4)) = r2;
| }
| label_19:
0x0003440c ldr r0, [sp, 0x5c] | r0 = nmeb;
0x00034410 cmp r0, 0 |
| if (r0 == 0) {
0x00034414 beq 0x34300 | goto label_17;
| }
0x00034418 bl 0x5250 | r0 = strlen (r0);
0x0003441c bl 0x25334 | r0 = curlx_uztosi ();
0x00034420 cmp r0, r4 |
| if (r0 == r4) {
0x00034424 beq 0x34300 | goto label_17;
| }
0x00034428 ldr r1, [pc, 0x148] | r1 = *(0x34574);
0x0003442c mov r0, r6 | r0 = r6;
0x00034430 add r1, pc, r1 | r1 = pc + r1;
0x00034434 bl 0x10544 | Curl_failf ();
0x00034438 mov r4, 0x33 | r4 = 0x33;
0x0003443c b 0x34304 | goto label_18;
| label_66:
0x00034440 mov r1, r5 | r1 = r5;
0x00034444 add r0, sp, 0x5c | r0 += nmeb;
0x00034448 bl 0x5580 | r0 = ASN1_STRING_to_UTF8 ();
0x0003444c mov r4, r0 | r4 = r0;
0x00034450 b 0x3440c | goto label_19;
| label_65:
0x00034454 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00034458 bl 0x282ec | r0 = Curl_cert_hostcheck ();
0x0003445c cmp r0, 0 |
| if (r0 == 0) {
0x00034460 bne 0x34480 |
0x00034464 ldr r1, [pc, 0x110] | r1 = *(0x34578);
0x00034468 ldr r3, [sp, 8] | r3 = var_8h;
0x0003446c ldr r2, [sp, 0x5c] | r2 = nmeb;
0x00034470 add r1, pc, r1 | r1 = pc + r1;
0x00034474 mov r0, r6 | r0 = r6;
0x00034478 bl 0x10544 | Curl_failf ();
0x0003447c b 0x34340 | goto label_20;
| }
0x00034480 ldr r1, [pc, 0xf8] | r1 = *(0x3457c);
0x00034484 ldr r2, [sp, 0x5c] | r2 = nmeb;
0x00034488 add r1, pc, r1 | r1 = pc + r1;
0x0003448c mov r0, r6 | r0 = r6;
0x00034490 bl 0x104cc | Curl_infof ();
0x00034494 b 0x34344 | goto label_21;
| label_54:
0x000345d0 ldr r1, [pc, -0x54] | r1 = *(0x34580);
0x000345d4 mov r2, r4 | r2 = r4;
0x000345d8 add r1, pc, r1 | r1 = pc + r1;
0x000345dc mov r0, sb | r0 = sb;
0x000345e0 bl 0x104cc | Curl_infof ();
0x000345e4 ldr r2, [r8, 0xf0] | r2 = *((r8 + 0xf0));
0x000345e8 cmp r2, 2 |
| if (r2 != 2) {
0x000345ec bne 0x346a4 | goto label_67;
| }
0x000345f0 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x000345f4 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000345f8 movne r3, 1 | r3 = 1;
| }
0x000345fc add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x00034600 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00034604 cmp r3, 2 |
| if (r3 == 2) {
0x00034608 beq 0x346a4 | goto label_67;
| }
0x0003460c ldr r3, [sb, 0x468] | r3 = *((sb + 0x468));
0x00034610 cmp r3, 0 |
| if (r3 != 0) {
0x00034614 bne 0x346b8 | goto label_68;
| }
| do {
| label_23:
0x00034618 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x0003461c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00034620 bl 0x57f0 | SSL_get_verify_result ();
0x00034624 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00034628 cmp r0, 0 |
0x0003462c mov r4, r0 | r4 = r0;
0x00034630 str r0, [r3] | *(r3) = r0;
| if (r0 == 0) {
0x00034634 beq 0x349fc | goto label_69;
| }
0x00034638 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x0003463c cmp r3, 2 |
| if (r3 == 2) {
0x00034640 bne 0x34664 |
0x00034644 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00034648 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x0003464c movne r3, 1 | r3 = 1;
| }
0x00034650 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x00034654 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00034658 cmp r3, 2 |
| if (r3 == 2) {
0x0003465c ldrbne r5, [r8, 0x230] | r5 = *((r8 + 0x230));
| }
| if (r3 != 2) {
0x00034660 bne 0x34668 | goto label_70;
| }
| }
0x00034664 ldrb r5, [r8, 0x208] | r5 = *((r8 + 0x208));
| label_70:
0x00034668 cmp r5, 0 |
| if (r5 == 0) {
0x0003466c beq 0x348a0 | goto label_71;
| }
0x00034670 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00034674 cmp r3, 0 |
| if (r3 != 0) {
0x00034678 beq 0x3469c |
0x0003467c mov r0, r4 | r0 = r4;
0x00034680 bl 0x5910 | X509_verify_cert_error_string ();
0x00034684 ldr r1, [pc, -0x104] | r1 = *(0x34584);
0x00034688 mov r3, r4 | r3 = r4;
0x0003468c add r1, pc, r1 | r1 = pc + r1;
0x00034690 mov r2, r0 | r2 = r0;
0x00034694 mov r0, sb | r0 = sb;
0x00034698 bl 0x10544 | Curl_failf ();
| }
0x0003469c mov r4, 0x33 | r4 = 0x33;
0x000346a0 b 0x348c4 | goto label_24;
| label_67:
0x000346a4 ldr r3, [sb, 0x410] | r3 = *((sb + 0x410));
0x000346a8 cmp r3, 0 |
0x000346ac beq 0x34618 |
| } while (r3 == 0);
0x000346b0 cmp r2, 2 |
| if (r2 == 2) {
0x000346b4 bne 0x346d8 |
| label_68:
0x000346b8 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x000346bc adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000346c0 movne r3, 1 | r3 = 1;
| }
0x000346c4 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x000346c8 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000346cc cmp r3, 2 |
| if (r3 == 2) {
0x000346d0 ldrne r3, [sb, 0x468] | r3 = *((sb + 0x468));
| }
| if (r3 != 2) {
0x000346d4 bne 0x346dc | goto label_72;
| }
| }
0x000346d8 ldr r3, [sb, 0x410] | r3 = *((sb + 0x410));
| label_72:
0x000346dc mov r2, 3 | r2 = 3;
0x000346e0 mov r1, 0x6c | r1 = 0x6c;
0x000346e4 mov r0, sl | r0 = sl;
0x000346e8 bl 0x5aa8 | r0 = BIO_ctrl ();
0x000346ec cmp r0, 0 |
| if (r0 > 0) {
0x000346f0 bgt 0x34768 | goto label_73;
| }
0x000346f4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000346f8 cmp r3, 0 |
| if (r3 != 0) {
0x000346fc beq 0x34740 |
0x00034700 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x00034704 cmp r3, 2 |
| if (r3 == 2) {
0x00034708 bne 0x3472c |
0x0003470c ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00034710 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00034714 movne r3, 1 | r3 = 1;
| }
0x00034718 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x0003471c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00034720 cmp r3, 2 |
| if (r3 == 2) {
0x00034724 ldrne r2, [sb, 0x468] | r2 = *((sb + 0x468));
| }
| if (r3 != 2) {
0x00034728 bne 0x34730 | goto label_74;
| }
| }
0x0003472c ldr r2, [sb, 0x410] | r2 = *((sb + 0x410));
| label_74:
0x00034730 ldr r1, [pc, -0x1ac] | r1 = *(0x34588);
0x00034734 mov r0, sb | r0 = sb;
0x00034738 add r1, pc, r1 | r1 = pc + r1;
0x0003473c bl 0x10544 | Curl_failf ();
| }
0x00034740 mov r0, sl | r0 = sl;
0x00034744 bl 0x5ad8 | BIO_free ();
| do {
0x00034748 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x0003474c mov r4, 0x53 | r4 = 0x53;
0x00034750 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00034754 bl 0x5b74 | X509_free ();
0x00034758 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x0003475c mov r2, 0 | r2 = 0;
0x00034760 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00034764 b 0x335ec | goto label_10;
| label_73:
0x00034768 mov r3, 0 | r3 = 0;
0x0003476c mov r2, r3 | r2 = r3;
0x00034770 mov r1, r3 | r1 = r3;
0x00034774 mov r0, sl | r0 = sl;
0x00034778 bl 0x5a00 | PEM_read_bio_X509 ();
0x0003477c subs r4, r0, 0 | r4 -= s;
| if (r4 != s) {
0x00034780 bne 0x347e4 | goto label_75;
| }
0x00034784 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00034788 cmp r3, 0 |
| if (r3 != 0) {
0x0003478c beq 0x347d0 |
0x00034790 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x00034794 cmp r3, 2 |
| if (r3 == 2) {
0x00034798 bne 0x347bc |
0x0003479c ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x000347a0 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000347a4 movne r3, 1 | r3 = 1;
| }
0x000347a8 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x000347ac ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000347b0 cmp r3, 2 |
| if (r3 == 2) {
0x000347b4 ldrne r2, [sb, 0x468] | r2 = *((sb + 0x468));
| }
| if (r3 != 2) {
0x000347b8 bne 0x347c0 | goto label_76;
| }
| }
0x000347bc ldr r2, [sb, 0x410] | r2 = *((sb + 0x410));
| label_76:
0x000347c0 ldr r1, [pc, -0x238] | r1 = *(0x3458c);
0x000347c4 mov r0, sb | r0 = sb;
0x000347c8 add r1, pc, r1 | r1 = pc + r1;
0x000347cc bl 0x10544 | Curl_failf ();
| }
0x000347d0 mov r0, sl | r0 = sl;
0x000347d4 bl 0x5ad8 | BIO_free ();
0x000347d8 mov r0, 0 | r0 = 0;
| label_22:
0x000347dc bl 0x5b74 | X509_free ();
0x000347e0 b 0x34748 |
| } while (1);
| label_75:
0x000347e4 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x000347e8 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x000347ec bl 0x57c0 | r0 = X509_check_issued ();
0x000347f0 cmp r0, 0 |
| if (r0 != 0) {
0x000347f4 beq 0x34854 |
0x000347f8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000347fc cmp r3, 0 |
| if (r3 != 0) {
0x00034800 beq 0x34844 |
0x00034804 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x00034808 cmp r3, 2 |
| if (r3 == 2) {
0x0003480c bne 0x34830 |
0x00034810 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00034814 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00034818 movne r3, 1 | r3 = 1;
| }
0x0003481c add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x00034820 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00034824 cmp r3, 2 |
| if (r3 == 2) {
0x00034828 ldrne r2, [sb, 0x468] | r2 = *((sb + 0x468));
| }
| if (r3 != 2) {
0x0003482c bne 0x34834 | goto label_77;
| }
| }
0x00034830 ldr r2, [sb, 0x410] | r2 = *((sb + 0x410));
| label_77:
0x00034834 ldr r1, [pc, -0x2a8] | r1 = *(0x00034594);
0x00034838 mov r0, sb | r0 = sb;
0x0003483c add r1, pc, r1 | r1 = pc + r1;
0x00034840 bl 0x10544 | Curl_failf ();
| }
0x00034844 mov r0, sl | r0 = sl;
0x00034848 bl 0x5ad8 | BIO_free ();
0x0003484c mov r0, r4 | r0 = r4;
0x00034850 b 0x347dc | goto label_22;
| }
0x00034854 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x00034858 cmp r3, 2 |
| if (r3 == 2) {
0x0003485c bne 0x34880 |
0x00034860 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00034864 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00034868 movne r3, 1 | r3 = 1;
| }
0x0003486c add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x00034870 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00034874 cmp r3, 2 |
| if (r3 == 2) {
0x00034878 ldrne r2, [sb, 0x468] | r2 = *((sb + 0x468));
| }
| if (r3 != 2) {
0x0003487c bne 0x34884 | goto label_78;
| }
| }
0x00034880 ldr r2, [sb, 0x410] | r2 = *((sb + 0x410));
| label_78:
0x00034884 ldr r1, [pc, -0x2f4] | r1 = *(0x34594);
0x00034888 mov r0, sb | r0 = sb;
0x0003488c add r1, pc, r1 | r1 = pc + r1;
0x00034890 bl 0x104cc | Curl_infof ();
0x00034894 mov r0, r4 | r0 = r4;
0x00034898 bl 0x5b74 | X509_free ();
0x0003489c b 0x34618 | goto label_23;
| label_71:
0x000348a0 mov r0, r4 | r0 = r4;
0x000348a4 bl 0x5910 | X509_verify_cert_error_string ();
0x000348a8 ldr r1, [pc, -0x314] | r1 = *(0x34598);
0x000348ac mov r3, r4 | r3 = r4;
0x000348b0 add r1, pc, r1 | r1 = pc + r1;
0x000348b4 mov r4, r5 | r4 = r5;
0x000348b8 mov r2, r0 | r2 = r0;
0x000348bc mov r0, sb | r0 = sb;
0x000348c0 bl 0x104cc | Curl_infof ();
| label_24:
0x000348c4 ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
0x000348c8 cmp r3, 2 |
| if (r3 == 2) {
0x000348cc bne 0x348f0 |
0x000348d0 ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x000348d4 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x000348d8 movne r3, 1 | r3 = 1;
| }
0x000348dc add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x000348e0 ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x000348e4 cmp r3, 2 |
| if (r3 == 2) {
0x000348e8 ldrbne r3, [r8, 0x232] | r3 = *((r8 + 0x232));
| }
| if (r3 != 2) {
0x000348ec bne 0x348f4 | goto label_79;
| }
| }
0x000348f0 ldrb r3, [r8, 0x20a] | r3 = *((r8 + 0x20a));
| label_79:
0x000348f4 cmp r3, 0 |
| if (r3 == 0) {
0x000348f8 beq 0x34954 | goto label_80;
| }
0x000348fc ldr r0, [fp, 0xc] | r0 = *(arg_ch);
0x00034900 add r6, sp, 0x50 | r6 += var_50h;
0x00034904 mov r2, 0 | r2 = 0;
0x00034908 mov r3, r6 | r3 = r6;
0x0003490c mov r1, 0x46 | r1 = 0x46;
0x00034910 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00034914 ldr r4, [r8] | r4 = *(r8);
0x00034918 bl 0x5a0c | SSL_ctrl ();
0x0003491c ldr r5, [sp, 0x50] | r5 = var_50h;
0x00034920 cmp r5, 0 |
0x00034924 mov r2, r0 | r2 = r0;
| if (r5 != 0) {
0x00034928 bne 0x34a10 | goto label_81;
| }
0x0003492c ldr r1, [pc, -0x394] | r1 = *(0x000345a0);
0x00034930 mov r0, r4 | r0 = r4;
0x00034934 add r1, pc, r1 | r1 = pc + r1;
0x00034938 mov r4, 0x5b | r4 = 0x5b;
0x0003493c bl 0x10544 | Curl_failf ();
0x00034940 str r5, [sp, 0xc] | var_ch = r5;
| label_25:
0x00034944 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00034948 bl 0x57e4 | OCSP_RESPONSE_free ();
0x0003494c cmp r4, 0 |
| if (r4 != 0) {
0x00034950 bne 0x341bc | goto label_16;
| }
| label_80:
0x00034954 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00034958 cmp r3, 0 |
0x0003495c ldr r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
| if (r3 != 0) {
0x00034960 moveq r4, 0 | r4 = 0;
| }
0x00034964 cmp r3, 2 |
| if (r3 == 2) {
0x00034968 bne 0x3498c |
0x0003496c ldr r3, [r8, 0x19c] | r3 = *((r8 + 0x19c));
0x00034970 adds r3, r3, 1 | r3++;
| if (r3 == r3) {
0x00034974 movne r3, 1 | r3 = 1;
| }
0x00034978 add r3, r8, r3, lsl 4 | r3 = r8 + (r3 << 4);
0x0003497c ldr r3, [r3, 0x1e0] | r3 = *((r3 + 0x1e0));
0x00034980 cmp r3, 2 |
| if (r3 == 2) {
0x00034984 ldrne r5, [sb, 0x584] | r5 = *((sb + 0x584));
| }
| if (r3 != 2) {
0x00034988 bne 0x34990 | goto label_82;
| }
| }
0x0003498c ldr r5, [sb, 0x580] | r5 = *((sb + 0x580));
| label_82:
0x00034990 cmp r4, 0 |
0x00034994 str r5, [sp, 0x4c] | var_4ch = r5;
| if (r4 == 0) {
0x00034998 bne 0x349d0 |
0x0003499c cmp r5, 0 |
| if (r5 == 0) {
0x000349a0 beq 0x349d0 | goto label_29;
| }
0x000349a4 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x000349a8 ldr r8, [r3, 8] | r8 = *((r3 + 8));
0x000349ac str r4, [sp, 0x60] | s2 = r4;
0x000349b0 cmp r8, 0 |
| if (r8 != 0) {
0x000349b4 bne 0x34bb8 | goto label_83;
| }
| label_28:
0x000349b8 mov r5, 0x5a | r5 = 0x5a;
| label_30:
0x000349bc ldr r1, [pc, -0x420] | r1 = *(0x345a0);
0x000349c0 mov r0, sb | r0 = sb;
0x000349c4 add r1, pc, r1 | r1 = pc + r1;
0x000349c8 bl 0x10544 | Curl_failf ();
0x000349cc mov r4, r5 | r4 = r5;
| }
| label_29:
0x000349d0 mov r0, sl | r0 = sl;
0x000349d4 bl 0x5ad8 | BIO_free ();
0x000349d8 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x000349dc ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x000349e0 bl 0x5b74 | X509_free ();
0x000349e4 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x000349e8 mov r2, 0 | r2 = 0;
0x000349ec str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000349f0 mov r3, 5 | r3 = 5;
0x000349f4 str r3, [fp, 8] | *(arg_8h) = r3;
0x000349f8 b 0x335ec | goto label_10;
| label_69:
0x000349fc ldr r1, [pc, -0x45c] | r1 = *(0x345a4);
0x00034a00 mov r0, sb | r0 = sb;
0x00034a04 add r1, pc, r1 | r1 = pc + r1;
0x00034a08 bl 0x104cc | Curl_infof ();
0x00034a0c b 0x348c4 | goto label_24;
| label_81:
0x00034a10 mov r1, r6 | r1 = r6;
0x00034a14 mov r0, 0 | r0 = 0;
0x00034a18 bl 0x5550 | r0 = d2i_OCSP_RESPONSE ();
0x00034a1c subs r3, r0, 0 | r3 = r0 - 0;
0x00034a20 str r3, [sp, 0xc] | var_ch = r3;
| if (r3 != r0) {
0x00034a24 bne 0x34a3c | goto label_84;
| }
0x00034a28 ldr r1, [pc, -0x484] | r1 = *(0x345a8);
0x00034a2c add r1, pc, r1 | r1 = pc + r1;
| do {
0x00034a30 mov r0, r4 | r0 = r4;
0x00034a34 bl 0x10544 | Curl_failf ();
0x00034a38 b 0x34a64 | goto label_85;
| label_84:
0x00034a3c bl 0x4e60 | r0 = OCSP_response_status ();
0x00034a40 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00034a44 beq 0x34a6c |
0x00034a48 bl 0x58bc | OCSP_response_status_str ();
0x00034a4c ldr r1, [pc, -0x4a4] | r1 = *(0x000345b0);
0x00034a50 mov r3, r6 | r3 = r6;
0x00034a54 add r1, pc, r1 | r1 = pc + r1;
0x00034a58 mov r2, r0 | r2 = r0;
0x00034a5c mov r0, r4 | r0 = r4;
0x00034a60 bl 0x10544 | Curl_failf ();
| label_85:
0x00034a64 mov r4, 0x5b | r4 = 0x5b;
0x00034a68 b 0x34944 | goto label_25;
| }
0x00034a6c ldr r0, [sp, 0xc] | r0 = var_ch;
0x00034a70 bl 0x4ddc | r0 = OCSP_response_get1_basic ();
0x00034a74 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x00034a78 ldreq r1, [pc, -0x4cc] | r1 = *((pc - 0x4cc));
| }
| if (r7 != r0) {
0x00034a7c addeq r1, pc, r1 | r1 = pc + r1;
| }
0x00034a80 beq 0x34a30 |
| } while (r7 == r0);
0x00034a84 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00034a88 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00034a8c bl 0x5748 | SSL_get_peer_cert_chain ();
0x00034a90 ldr r3, [fp, 0xc] | r3 = *(arg_ch);
0x00034a94 mov r5, r0 | r5 = r0;
0x00034a98 ldr r0, [r3] | r0 = *(r3);
0x00034a9c bl 0x54c0 | SSL_CTX_get_cert_store ();
0x00034aa0 mov r3, r6 | r3 = r6;
0x00034aa4 mov r1, r5 | r1 = r5;
0x00034aa8 mov r2, r0 | r2 = r0;
0x00034aac mov r0, r7 | r0 = r7;
0x00034ab0 bl 0x5994 | r0 = OCSP_basic_verify ();
0x00034ab4 cmp r0, 0 |
| if (r0 > 0) {
0x00034ab8 ble 0x34aec |
0x00034abc add r5, sp, 0x60 | r5 += s2;
0x00034ac0 sub r3, r5, 4 | r3 -= nmeb;
0x00034ac4 str r3, [sp, 0x14] | var_14h = r3;
0x00034ac8 ldr r3, [pc, -0x518] | r3 = *(0x345b4);
0x00034acc add r3, pc, r3 | r3 = pc + r3;
0x00034ad0 str r3, [sp, 0x18] | var_18h = r3;
| label_27:
0x00034ad4 mov r0, r7 | r0 = r7;
0x00034ad8 bl 0x5970 | r0 = OCSP_resp_count ();
0x00034adc cmp r6, r0 |
| if (r6 < r0) {
0x00034ae0 blt 0x34b0c | goto label_86;
| }
0x00034ae4 mov r4, 0 | r4 = 0;
0x00034ae8 b 0x34b00 | goto label_87;
| }
0x00034aec ldr r1, [pc, -0x538] | r1 = *(0x345b8);
0x00034af0 add r1, pc, r1 | r1 = pc + r1;
| do {
0x00034af4 mov r0, r4 | r0 = r4;
0x00034af8 bl 0x10544 | Curl_failf ();
| label_26:
0x00034afc mov r4, 0x5b | r4 = 0x5b;
| label_87:
0x00034b00 mov r0, r7 | r0 = r7;
0x00034b04 bl 0x561c | OCSP_BASICRESP_free ();
0x00034b08 b 0x34944 | goto label_25;
| label_86:
0x00034b0c mov r1, r6 | r1 = r6;
0x00034b10 mov r0, r7 | r0 = r7;
0x00034b14 bl 0x5508 | r0 = OCSP_resp_get0 ();
0x00034b18 cmp r0, 0 |
| if (r0 == 0) {
0x00034b1c beq 0x34b8c | goto label_88;
| }
0x00034b20 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00034b24 sub r2, r5, 8 | r2 -= var_58h;
0x00034b28 sub r1, r5, 0xc | r1 -= var_54h;
0x00034b2c str r5, [sp] | *(sp) = r5;
0x00034b30 bl 0x5958 | OCSP_single_get0_status ();
0x00034b34 mvn r3, 0 | r3 = ~0;
0x00034b38 mov r2, 0x12c | r2 = 0x12c;
0x00034b3c ldr r1, [sp, 0x60] | r1 = s2;
0x00034b40 str r0, [sp, 8] | var_8h = r0;
0x00034b44 ldr r0, [sp, 0x5c] | r0 = nmeb;
0x00034b48 bl 0x5778 | r0 = OCSP_check_validity ();
0x00034b4c cmp r0, 0 |
| if (r0 != 0) {
0x00034b50 ldreq r1, [pc, -0x598] | r1 = *(0x000345c0);
| }
| if (r0 != 0) {
0x00034b54 addeq r1, pc, r1 | r1 = pc + r1;
| }
0x00034b58 beq 0x34af4 |
| } while (r0 == 0);
0x00034b5c ldr r0, [sp, 8] | r0 = var_8h;
0x00034b60 bl 0x5604 | OCSP_cert_status_str ();
0x00034b64 ldr r3, [sp, 8] | r3 = var_8h;
0x00034b68 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00034b6c mov r2, r0 | r2 = r0;
0x00034b70 mov r0, r4 | r0 = r4;
0x00034b74 bl 0x104cc | Curl_infof ();
0x00034b78 ldr r3, [sp, 8] | r3 = var_8h;
0x00034b7c cmp r3, 1 |
| if (r3 == 1) {
0x00034b80 beq 0x34b94 | goto label_89;
| }
0x00034b84 cmp r3, 2 |
| if (r3 == 2) {
0x00034b88 beq 0x34afc | goto label_26;
| }
| label_88:
0x00034b8c add r6, r6, 1 | r6++;
0x00034b90 b 0x34ad4 | goto label_27;
| label_89:
0x00034b94 ldr r0, [sp, 0x54] | r0 = var_54h;
0x00034b98 bl 0x5610 | OCSP_crl_reason_str ();
0x00034b9c ldr r1, [pc, -0x5e0] | r1 = *(0x345c0);
0x00034ba0 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00034ba4 add r1, pc, r1 | r1 = pc + r1;
0x00034ba8 mov r2, r0 | r2 = r0;
0x00034bac mov r0, r4 | r0 = r4;
0x00034bb0 bl 0x10544 | Curl_failf ();
0x00034bb4 b 0x34afc | goto label_26;
| label_83:
0x00034bb8 mov r0, r8 | r0 = r8;
0x00034bbc bl 0x4fec | X509_get_X509_PUBKEY ();
0x00034bc0 mov r1, r4 | r1 = r4;
0x00034bc4 bl 0x5358 | r0 = i2d_X509_PUBKEY ();
0x00034bc8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 <= r0) {
0x00034bcc ble 0x349b8 | goto label_28;
| }
0x00034bd0 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00034bd4 ldr r3, [pc, -0x614] |
0x00034bd8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00034bdc ldr r3, [r3] | r3 = *(0x345c4);
0x00034be0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r2, r3);
0x00034be4 cmp r0, 0 |
0x00034be8 mov r6, r0 | r6 = r0;
0x00034bec str r0, [sp, 0x60] | s2 = r0;
| if (r0 == 0) {
0x00034bf0 beq 0x349b8 | goto label_28;
| }
0x00034bf4 mov r0, r8 | r0 = r8;
0x00034bf8 bl 0x4fec | X509_get_X509_PUBKEY ();
0x00034bfc add r1, sp, 0x60 | r1 += s2;
0x00034c00 bl 0x5358 | r0 = i2d_X509_PUBKEY ();
0x00034c04 cmp r7, r0 |
| if (r7 != r0) {
0x00034c08 bne 0x34c6c | goto label_90;
| }
0x00034c0c ldr r2, [sp, 0x60] | r2 = s2;
0x00034c10 cmp r2, 0 |
| if (r2 == 0) {
0x00034c14 beq 0x34c6c | goto label_90;
| }
0x00034c18 sub r2, r2, r6 | r2 -= r6;
0x00034c1c cmp r7, r2 |
| if (r7 != r2) {
0x00034c20 bne 0x34c6c | goto label_90;
| }
0x00034c24 mov r1, r5 | r1 = r5;
0x00034c28 mov r3, r7 | r3 = r7;
0x00034c2c mov r2, r6 | r2 = r6;
0x00034c30 mov r0, sb | r0 = sb;
0x00034c34 bl 0x378cc | r0 = Curl_pin_peer_pubkey ();
0x00034c38 mov r5, r0 | r5 = r0;
| label_32:
0x00034c3c ldr r2, [sp, 0x30] | r2 = var_30h;
0x00034c40 ldr r3, [pc, -0x67c] |
0x00034c44 mov r0, r6 | r0 = r6;
0x00034c48 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00034c4c ldr r3, [r3] | r3 = *(0x345c8);
0x00034c50 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00034c54 cmp r5, 0 |
| if (r5 == 0) {
0x00034c58 beq 0x349d0 | goto label_29;
| }
0x00034c5c b 0x349bc | goto label_30;
| label_58:
0x00034c60 ldr r5, [sp, 0x24] | r5 = var_24h;
0x00034c64 str r5, [sp, 0x20] | var_20h = r5;
0x00034c68 b 0x34180 | goto label_31;
| label_90:
0x00034c6c mov r5, 0x5a | r5 = 0x5a;
0x00034c70 b 0x34c3c | goto label_32;
| label_62:
0x00034c74 cmp r3, 7 |
| if (r3 != 7) {
0x00034c78 bne 0x34c9c | goto label_63;
| }
0x00034c7c ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00034c80 bl 0x5298 | r0 = ASN1_STRING_get0_data ();
0x00034c84 mov r5, r0 | r5 = r0;
0x00034c88 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00034c8c bl 0x5c58 | ASN1_STRING_length ();
0x00034c90 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00034c94 cmp r3, r0 |
| if (r3 == r0) {
0x00034c98 beq 0x342a8 | goto label_33;
| }
| label_63:
0x00034c9c mov r5, r4 | r5 = r4;
0x00034ca0 b 0x342d8 | goto label_34;
| label_61:
0x00034ca4 cmp r3, 2 |
| if (r3 != 2) {
0x00034ca8 strne r4, [sp, 0x20] | var_20h = r4;
| goto label_91;
| }
| if (r3 != 2) {
| label_91:
0x00034cac bne 0x342d8 | goto label_34;
| }
0x00034cb0 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00034cb4 bl 0x5298 | ASN1_STRING_get0_data ();
0x00034cb8 str r0, [sp, 0x1c] | var_1ch = r0;
0x00034cbc ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00034cc0 bl 0x5c58 | ASN1_STRING_length ();
0x00034cc4 str r4, [sp, 0x20] | var_20h = r4;
0x00034cc8 mov r7, r0 | r7 = r0;
0x00034ccc b 0x3425c | goto label_35;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x2cc98 */
| #include <stdint.h>
|
; (fcn) sym.setstropt_userpwd () | void setstropt_userpwd (int32_t arg1, int32_t arg2) {
| int32_t var_0h_2;
| int32_t var_8h_2;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0002cc98 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} |
0x0002cc9c ldr r7, [pc, 0x104] | r7 = *(0x2cda4);
0x0002cca0 mov r3, 0 | r3 = 0;
0x0002cca4 subs r8, r0, 0 | r8 = r0 - 0;
0x0002cca8 add r7, pc, r7 | r7 = pc + r7;
0x0002ccac mov r4, r1 | r4 = r1;
0x0002ccb0 mov r5, r2 | r5 = r2;
0x0002ccb4 str r3, [sp, 8] | var_8h_2 = r3;
0x0002ccb8 str r3, [sp, 0xc] | var_ch = r3;
| if (r8 == r0) {
0x0002ccbc beq 0x2cd9c | goto label_3;
| }
0x0002ccc0 bl 0x5250 | strlen (r0);
0x0002ccc4 cmp r4, 0 |
| if (r4 == 0) {
0x0002ccc8 addne r2, sp, 8 | r2 += var_8h_2;
| }
| if (r4 != 0) {
0x0002cccc moveq r2, r4 | r2 = r4;
| }
0x0002ccd0 cmp r5, 0 |
| if (r5 == 0) {
0x0002ccd4 addne r3, sp, 0xc | r3 += var_ch;
| }
| if (r5 != 0) {
0x0002ccd8 moveq r3, r5 | r3 = r5;
| }
0x0002ccdc mov r1, r0 | r1 = r0;
0x0002cce0 mov r0, 0 | r0 = 0;
0x0002cce4 str r0, [sp] | *(sp) = r0;
0x0002cce8 mov r0, r8 | r0 = r8;
0x0002ccec bl 0x11ab8 | r0 = Curl_parse_login_details ();
0x0002ccf0 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0002ccf4 bne 0x2cd28 | goto label_4;
| }
0x0002ccf8 cmp r4, 0 |
| if (r4 != 0) {
0x0002ccfc bne 0x2cd34 | goto label_5;
| }
| label_2:
0x0002cd00 mov r6, 0 | r6 = 0;
| do {
0x0002cd04 cmp r5, 0 |
| if (r5 != 0) {
0x0002cd08 beq 0x2cd28 |
0x0002cd0c ldr r3, [pc, 0x98] |
0x0002cd10 ldr r0, [r5] | r0 = *(r5);
0x0002cd14 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002cd18 ldr r3, [r3] | r3 = *(0x2cda8);
0x0002cd1c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002cd20 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002cd24 str r3, [r5] | *(r5) = r3;
| }
| label_4:
0x0002cd28 mov r0, r6 | r0 = r6;
0x0002cd2c add sp, sp, 0x10 |
0x0002cd30 pop {r4, r5, r6, r7, r8, pc} |
| label_5:
0x0002cd34 ldr r3, [sp, 8] | r3 = var_8h_2;
0x0002cd38 cmp r3, 0 |
| if (r3 == 0) {
0x0002cd3c beq 0x2cd64 | goto label_6;
| }
| label_0:
0x0002cd40 mov r6, 0 | r6 = 0;
| label_1:
0x0002cd44 ldr r3, [pc, 0x60] |
0x0002cd48 ldr r0, [r4] | r0 = *(r4);
0x0002cd4c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002cd50 ldr r3, [r3] | r3 = *(0x2cda8);
0x0002cd54 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002cd58 ldr r3, [sp, 8] | r3 = var_8h_2;
0x0002cd5c str r3, [r4] | *(r4) = r3;
0x0002cd60 b 0x2cd04 |
| } while (1);
| label_6:
0x0002cd64 ldrb r3, [r8] | r3 = *(r8);
0x0002cd68 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0002cd6c bne 0x2cd40 | goto label_0;
| }
0x0002cd70 ldr r3, [pc, 0x38] |
0x0002cd74 ldr r0, [pc, 0x38] | r0 = *(0x2cdb0);
0x0002cd78 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002cd7c add r0, pc, r0 | r0 = pc + r0;
0x0002cd80 ldr r3, [r3] | r3 = *(0x2cdac);
0x0002cd84 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0002cd88 cmp r0, 0 |
0x0002cd8c str r0, [sp, 8] | var_8h_2 = r0;
| if (r0 != 0) {
0x0002cd90 bne 0x2cd40 | goto label_0;
| }
0x0002cd94 mov r6, 0x1b | r6 = 0x1b;
0x0002cd98 b 0x2cd44 | goto label_1;
| label_3:
0x0002cd9c cmp r1, 0 |
| if (r1 != 0) {
0x0002cda0 bne 0x2cd40 | goto label_0;
| }
0x0002cda4 b 0x2cd00 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1bdac */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.singleipconnect () | void singleipconnect (int32_t arg1, int32_t arg2) {
| int32_t var_2h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t socket;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| size_t nmeb;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| struct sockaddr* address;
| int32_t var_74h;
| int32_t var_78h;
| int32_t var_88h;
| int32_t var_f0h;
| int32_t var_f4h;
| int32_t var_fch;
| void * addr;
| char * s;
| char * str;
| void * var_184h;
| int32_t var_280h;
| int32_t var_284h;
| r0 = arg1;
| r1 = arg2;
0x0001bdac push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001bdb0 ldr r5, [r0] | r5 = *(r0);
0x0001bdb4 sub sp, sp, 0x284 |
0x0001bdb8 mvn r3, 0 | r3 = ~0;
0x0001bdbc str r3, [r2] | *(r2) = r3;
0x0001bdc0 str r2, [sp, 0x14] | var_14h = r2;
0x0001bdc4 add r3, sp, 0x30 | r3 += nmeb;
0x0001bdc8 add r2, sp, 0xf0 | r2 += var_f0h;
0x0001bdcc mov r4, r0 | r4 = r0;
0x0001bdd0 bl 0x1bcc8 | r0 = Curl_socket ();
0x0001bdd4 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x0001bdd8 movne sb, 0 | sb = 0;
| }
| if (sb != r0) {
0x0001bddc bne 0x1be3c | goto label_4;
| }
0x0001bde0 add r6, sp, 0x40 | r6 += var_40h;
0x0001bde4 add r7, sp, 0x100 | r7 += addr;
0x0001bde8 add r2, sp, 0x34 | r2 += var_34h;
0x0001bdec mov r1, r6 | r1 = r6;
0x0001bdf0 mov r0, r7 | r0 = r7;
0x0001bdf4 bl 0x1b874 | Curl_getaddressinfo ();
0x0001bdf8 subs r3, r0, 0 | r3 -= addr;
0x0001bdfc str r3, [sp, 0x18] | var_18h = r3;
| if (r3 != addr) {
0x0001be00 bne 0x1be48 | goto label_9;
| }
0x0001be04 bl 0x4eb4 | r0 = errno_location ();
0x0001be08 ldr r6, [r0] | r6 = *(r0);
0x0001be0c mov r0, r4 | r0 = r4;
0x0001be10 mov r1, r6 | r1 = r6;
0x0001be14 bl 0x221a0 | Curl_strerror ();
0x0001be18 ldr r1, [pc, 0x724] | r1 = *(0x1c540);
0x0001be1c mov r2, r6 | r2 = r6;
0x0001be20 add r1, pc, r1 | r1 = pc + r1;
0x0001be24 mov r3, r0 | r3 = r0;
0x0001be28 mov r0, r5 | r0 = r5;
0x0001be2c bl 0x10544 | Curl_failf ();
0x0001be30 ldr r1, [sp, 0x30] | r1 = nmeb;
0x0001be34 mov r0, r4 | r0 = r4;
0x0001be38 bl 0x1bc30 | Curl_closesocket ();
| do {
| label_4:
0x0001be3c mov r0, sb | r0 = sb;
0x0001be40 add sp, sp, 0x284 |
0x0001be44 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x0001be48 ldr r1, [pc, 0x6f8] | r1 = *(0x1c544);
0x0001be4c mov r2, r6 | r2 = r6;
0x0001be50 add r1, pc, r1 | r1 = pc + r1;
0x0001be54 mov r0, r5 | r0 = r5;
0x0001be58 bl 0x104cc | Curl_infof ();
0x0001be5c ldr r3, [sp, 0xf0] | r3 = var_f0h;
0x0001be60 bic r3, r3, 8 | r3 = BIT_MASK (r3, 8);
0x0001be64 cmp r3, 2 |
| if (r3 == 2) {
0x0001be68 bne 0x1bee0 |
0x0001be6c ldr r3, [sp, 0xf4] | r3 = var_f4h;
0x0001be70 cmp r3, 1 |
| if (r3 != 1) {
0x0001be74 bne 0x1bee0 | goto label_0;
| }
0x0001be78 ldrb r3, [r5, 0x4ee] | r3 = *((r5 + 0x4ee));
0x0001be7c cmp r3, 0 |
| if (r3 != 0) {
0x0001be80 beq 0x1be90 |
0x0001be84 ldr r1, [sp, 0x30] | r1 = nmeb;
0x0001be88 mov r0, r4 | r0 = r4;
0x0001be8c bl 0x1bad0 | Curl_tcpnodelay ();
| }
0x0001be90 ldrb r3, [r5, 0x630] | r3 = *((r5 + 0x630));
0x0001be94 cmp r3, 0 |
| if (r3 == 0) {
0x0001be98 beq 0x1bee0 | goto label_0;
| }
0x0001be9c ldr r6, [sp, 0x30] | r6 = nmeb;
0x0001bea0 mov r1, 1 | r1 = 1;
0x0001bea4 add r8, sp, 0x280 | r8 += var_280h;
0x0001bea8 mov sl, 4 | sl = 4;
0x0001beac str r1, [r8, -0x100]! | *((r8 -= 0x100)) = r1;
0x0001beb0 mov r2, 9 | r2 = 9;
0x0001beb4 str sl, [sp] | *(sp) = sl;
0x0001beb8 mov r3, r8 | r3 = r8;
0x0001bebc mov r0, r6 | r0 = r6;
0x0001bec0 bl 0x546c | r0 = setsockopt ();
0x0001bec4 cmp r0, 0 |
| if (r0 >= 0) {
0x0001bec8 bge 0x1bf40 | goto label_10;
| }
0x0001becc ldr r1, [pc, 0x678] | r1 = *(0x1c548);
0x0001bed0 mov r2, r6 | r2 = r6;
0x0001bed4 add r1, pc, r1 | r1 = pc + r1;
| label_1:
0x0001bed8 mov r0, r5 | r0 = r5;
0x0001bedc bl 0x104cc | Curl_infof ();
| }
| label_0:
0x0001bee0 ldr r3, [r5, 0x1b0] | r3 = *((r5 + 0x1b0));
0x0001bee4 cmp r3, 0 |
| if (r3 == 0) {
0x0001bee8 beq 0x1bfc0 | goto label_11;
| }
0x0001beec mov r1, 1 | r1 = 1;
0x0001bef0 mov r0, r5 | r0 = r5;
0x0001bef4 bl 0x203dc | Curl_set_in_callback ();
0x0001bef8 ldr r3, [r5, 0x1b0] | r3 = *((r5 + 0x1b0));
0x0001befc mov r2, 0 | r2 = 0;
0x0001bf00 ldr r1, [sp, 0x30] | r1 = nmeb;
0x0001bf04 ldr r0, [r5, 0x1b4] | r0 = *((r5 + 0x1b4));
0x0001bf08 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0001bf0c mov r1, 0 | r1 = 0;
0x0001bf10 mov r6, r0 | r6 = r0;
0x0001bf14 mov r0, r5 | r0 = r5;
0x0001bf18 bl 0x203dc | Curl_set_in_callback ();
0x0001bf1c cmp r6, 2 |
| if (r6 == 2) {
0x0001bf20 beq 0x1c1cc | goto label_12;
| }
0x0001bf24 cmp r6, 0 |
| if (r6 == 0) {
0x0001bf28 beq 0x1bfc0 | goto label_11;
| }
0x0001bf2c ldr r1, [sp, 0x30] | r1 = nmeb;
0x0001bf30 mov r0, r4 | r0 = r4;
0x0001bf34 bl 0x1bc30 | Curl_closesocket ();
0x0001bf38 mov sb, 0x2a | sb = 0x2a;
0x0001bf3c b 0x1be3c |
| } while (1);
| label_10:
0x0001bf40 ldr r0, [r5, 0x634] | r0 = *((r5 + 0x634));
0x0001bf44 bl 0x25344 | curlx_sltosi ();
0x0001bf48 str sl, [sp] | *(sp) = sl;
0x0001bf4c mov r3, r8 | r3 = r8;
0x0001bf50 mov r2, sl | r2 = sl;
0x0001bf54 mov r1, 6 | r1 = 6;
0x0001bf58 str r0, [sp, 0x180] | s = r0;
0x0001bf5c mov r0, r6 | r0 = r6;
0x0001bf60 bl 0x546c | r0 = setsockopt ();
0x0001bf64 cmp r0, 0 |
| if (r0 < 0) {
0x0001bf68 bge 0x1bf80 |
0x0001bf6c ldr r1, [pc, 0x5dc] | r1 = *(0x1c54c);
0x0001bf70 mov r2, r6 | r2 = r6;
0x0001bf74 add r1, pc, r1 | r1 = pc + r1;
0x0001bf78 mov r0, r5 | r0 = r5;
0x0001bf7c bl 0x104cc | Curl_infof ();
| }
0x0001bf80 ldr r0, [r5, 0x638] | r0 = *((r5 + 0x638));
0x0001bf84 bl 0x25344 | curlx_sltosi ();
0x0001bf88 mov r3, 4 | r3 = 4;
0x0001bf8c str r3, [sp] | *(sp) = r3;
0x0001bf90 mov r2, 5 | r2 = 5;
0x0001bf94 mov r3, r8 | r3 = r8;
0x0001bf98 mov r1, 6 | r1 = 6;
0x0001bf9c str r0, [sp, 0x180] | s = r0;
0x0001bfa0 mov r0, r6 | r0 = r6;
0x0001bfa4 bl 0x546c | r0 = setsockopt ();
0x0001bfa8 cmp r0, 0 |
| if (r0 >= 0) {
0x0001bfac bge 0x1bee0 | goto label_0;
| }
0x0001bfb0 ldr r1, [pc, 0x59c] | r1 = *(0x1c550);
0x0001bfb4 mov r2, r6 | r2 = r6;
0x0001bfb8 add r1, pc, r1 | r1 = pc + r1;
0x0001bfbc b 0x1bed8 | goto label_1;
| label_11:
0x0001bfc0 mov r3, 0 | r3 = 0;
| do {
0x0001bfc4 ldr fp, [sp, 0xf0] | fp = var_f0h;
0x0001bfc8 str r3, [sp, 0x1c] | var_1ch = r3;
0x0001bfcc bic r3, fp, 8 | r3 = BIT_MASK (fp, 8);
0x0001bfd0 cmp r3, 2 |
| if (r3 != 2) {
0x0001bfd4 bne 0x1c3cc | goto label_13;
| }
0x0001bfd8 ldr r3, [sp, 0x30] | r3 = nmeb;
0x0001bfdc mov r0, r7 | r0 = r7;
0x0001bfe0 str r3, [sp, 0x10] | socket = r3;
0x0001bfe4 bl 0x151f0 | Curl_ipv6_scope ();
0x0001bfe8 ldr r8, [r4] | r8 = *(r4);
0x0001bfec mov r3, 0 | r3 = 0;
0x0001bff0 str r3, [sp, 0x38] | var_38h = r3;
0x0001bff4 ldr r7, [r8, 0x528] | r7 = *((r8 + 0x528));
0x0001bff8 add r3, r8, 0x180 | r3 = r8 + 0x180;
0x0001bffc ldrh r6, [r3] | r6 = *(r3);
0x0001c000 cmp r7, 0 |
0x0001c004 clz sl, r6 | sl &= r6;
0x0001c008 lsr sl, sl, 5 | sl >>= 5;
| if (r7 == 0) {
0x0001c00c movne sl, 0 | sl = 0;
| }
0x0001c010 cmp sl, 0 |
0x0001c014 str r0, [sp, 0x20] | var_20h = r0;
| if (sl != 0) {
0x0001c018 bne 0x1c3cc | goto label_13;
| }
0x0001c01c ldr r3, [r8, 0x184] | r3 = *((r8 + 0x184));
0x0001c020 mov r2, 0x80 | r2 = 0x80;
0x0001c024 str r3, [sp, 0xc] | var_ch = r3;
0x0001c028 add r3, sp, 0x70 | r3 += address;
0x0001c02c mov r0, r3 | r0 = r3;
0x0001c030 mov r1, sl | r1 = sl;
0x0001c034 bl 0x576c | memset (r0, r1, r2);
0x0001c038 cmp r7, 0 |
0x0001c03c mov r3, r0 | r3 = r0;
| if (r7 == 0) {
0x0001c040 beq 0x1c380 | goto label_14;
| }
0x0001c044 str r0, [sp, 0x24] | var_24h = r0;
0x0001c048 mov r0, r7 | r0 = r7;
0x0001c04c bl 0x5250 | strlen (r0);
0x0001c050 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001c054 cmp r0, 0xfe |
| if (r0 > 0xfe) {
0x0001c058 bhi 0x1c380 | goto label_14;
| }
0x0001c05c mov r1, sl | r1 = sl;
0x0001c060 mov r2, 0xfc | r2 = 0xfc;
0x0001c064 add r0, sp, 0x184 | r0 += var_184h;
0x0001c068 str sl, [sp, 0x180] | s = sl;
0x0001c06c bl 0x576c | memset (r0, r1, r2);
0x0001c070 ldr r0, [pc, 0x4e0] | r0 = *(0x1c554);
0x0001c074 mov r1, r7 | r1 = r7;
0x0001c078 mov r2, 3 | r2 = 3;
0x0001c07c add r0, pc, r0 | r0 = pc + r0;
0x0001c080 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x0001c084 cmp r0, 0 |
| if (r0 != 0) {
0x0001c088 addeq r7, r7, 3 | r7 += 3;
| }
| if (r0 != 0) {
0x0001c08c ldreq sl, [sp, 0x18] | sl = var_18h;
| }
| if (r0 != 0) {
0x0001c090 beq 0x1c0b4 |
0x0001c094 ldr r0, [pc, 0x4c0] | r0 = *(0x1c558);
0x0001c098 mov r1, r7 | r1 = r7;
0x0001c09c mov r2, 5 | r2 = 5;
0x0001c0a0 add r0, pc, r0 | r0 = pc + r0;
0x0001c0a4 bl 0x516c | r0 = strncmp (r0, r1, r2);
0x0001c0a8 cmp r0, 0 |
| if (r0 != 0) {
0x0001c0ac addeq r7, r7, 5 | r7 += 5;
| }
| if (r0 == 0) {
0x0001c0b0 beq 0x1c124 | goto label_2;
| }
| }
0x0001c0b4 mov r0, r7 | r0 = r7;
0x0001c0b8 bl 0x5250 | strlen (r0);
0x0001c0bc mov r3, r7 | r3 = r7;
0x0001c0c0 mov r2, 0x19 | r2 = 0x19;
0x0001c0c4 mov r1, 1 | r1 = 1;
0x0001c0c8 add r0, r0, 1 | r0++;
0x0001c0cc str r0, [sp] | *(sp) = r0;
0x0001c0d0 ldr r0, [sp, 0x10] | r0 = socket;
0x0001c0d4 bl 0x546c | r0 = setsockopt ();
0x0001c0d8 cmp r0, 0 |
| if (r0 == 0) {
0x0001c0dc beq 0x1c3cc | goto label_13;
| }
0x0001c0e0 mov r3, 0x100 | r3 = 0x100;
0x0001c0e4 str r3, [sp, 4] | var_4h = r3;
0x0001c0e8 add r3, sp, 0x180 | r3 += s;
0x0001c0ec str r3, [sp, 0x18] | var_18h = r3;
0x0001c0f0 str r3, [sp] | *(sp) = r3;
0x0001c0f4 ldr r2, [r4, 0x90] | r2 = *((r4 + 0x90));
0x0001c0f8 mov r3, r7 | r3 = r7;
0x0001c0fc ldr r1, [sp, 0x20] | r1 = var_20h;
0x0001c100 mov r0, fp | r0 = fp;
0x0001c104 bl 0x152dc | r0 = Curl_if2ip ();
0x0001c108 cmp r0, 1 |
| if (r0 == 1) {
0x0001c10c beq 0x1c364 | goto label_15;
| }
| if (r0 <= 1) {
0x0001c110 blo 0x1c1d4 | goto label_16;
| }
0x0001c114 cmp r0, 2 |
| if (r0 == 2) {
0x0001c118 beq 0x1c1f8 | goto label_17;
| }
0x0001c11c cmp sl, 0 |
| if (sl != 0) {
0x0001c120 bne 0x1c348 | goto label_18;
| }
| label_2:
0x0001c124 ldr r3, [r4, 0x28c] | r3 = *((r4 + 0x28c));
0x0001c128 cmp fp, 2 |
0x0001c12c str r3, [sp, 0x18] | var_18h = r3;
0x0001c130 add sl, sp, 0x38 | sl += var_38h;
| if (fp != 2) {
0x0001c134 moveq r3, 1 | r3 = 1;
| }
| if (fp == 2) {
0x0001c138 movne r3, 2 | r3 = 2;
| }
0x0001c13c str r3, [r4, 0x28c] | *((r4 + 0x28c)) = r3;
0x0001c140 mov r2, 0 | r2 = 0;
0x0001c144 mov r3, sl | r3 = sl;
0x0001c148 mov r1, r7 | r1 = r7;
0x0001c14c mov r0, r4 | r0 = r4;
0x0001c150 bl 0x74ec | r0 = Curl_resolv ();
0x0001c154 cmp r0, 1 |
| if (r0 == 1) {
0x0001c158 bne 0x1c168 |
0x0001c15c mov r1, sl | r1 = sl;
0x0001c160 mov r0, r4 | r0 = r4;
0x0001c164 bl 0x26624 | Curl_resolver_wait_resolv ();
| }
0x0001c168 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001c16c str r3, [r4, 0x28c] | *((r4 + 0x28c)) = r3;
0x0001c170 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001c174 cmp r3, 0 |
| if (r3 == 0) {
0x0001c178 beq 0x1c348 | goto label_18;
| }
0x0001c17c add sl, sp, 0x180 | sl += s;
0x0001c180 mov r1, sl | r1 = sl;
0x0001c184 mov r2, 0x100 | r2 = 0x100;
0x0001c188 ldr r0, [r3] | r0 = *(r3);
0x0001c18c bl 0x711c | Curl_printable_address ();
0x0001c190 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001c194 ldr r1, [pc, 0x3c4] | r1 = *(0x1c55c);
0x0001c198 ldr r3, [r3] | r3 = *(r3);
0x0001c19c mov r0, r8 | r0 = r8;
0x0001c1a0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0001c1a4 mov r2, r7 | r2 = r7;
0x0001c1a8 str r3, [sp, 4] | var_4h = r3;
0x0001c1ac str sl, [sp] | *(sp) = sl;
0x0001c1b0 mov r3, fp | r3 = fp;
0x0001c1b4 add r1, pc, r1 | r1 = pc + r1;
0x0001c1b8 bl 0x104cc | Curl_infof ();
0x0001c1bc ldr r1, [sp, 0x38] | r1 = var_38h;
0x0001c1c0 mov r0, r8 | r0 = r8;
0x0001c1c4 bl 0x76e8 | Curl_resolv_unlock ();
0x0001c1c8 b 0x1c214 | goto label_19;
| label_12:
0x0001c1cc ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001c1d0 b 0x1bfc4 |
| } while (1);
| label_16:
0x0001c1d4 cmp sl, 0 |
| if (sl == 0) {
0x0001c1d8 beq 0x1c124 | goto label_2;
| }
0x0001c1dc ldr r1, [pc, 0x380] | r1 = *(0x1c560);
0x0001c1e0 mov r2, r7 | r2 = r7;
0x0001c1e4 add r1, pc, r1 | r1 = pc + r1;
| label_3:
0x0001c1e8 mov r0, r8 | r0 = r8;
0x0001c1ec bl 0x10544 | Curl_failf ();
| do {
0x0001c1f0 mov sb, 0x2d | sb = 0x2d;
0x0001c1f4 b 0x1c368 | goto label_20;
| label_17:
0x0001c1f8 ldr r1, [pc, 0x368] | r1 = *(0x1c564);
0x0001c1fc str fp, [sp] | *(sp) = fp;
0x0001c200 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001c204 mov r2, r7 | r2 = r7;
0x0001c208 add r1, pc, r1 | r1 = pc + r1;
0x0001c20c mov r0, r8 | r0 = r8;
0x0001c210 bl 0x104cc | Curl_infof ();
| label_19:
0x0001c214 cmp fp, 0xa |
0x0001c218 add sl, sp, 0x70 | sl += address;
0x0001c21c add fp, sp, 0x180 |
| if (fp == 0xa) {
0x0001c220 bne 0x1c288 |
0x0001c224 mov r1, 0x25 | r1 = 0x25;
0x0001c228 mov r0, fp | r0 = fp;
0x0001c22c bl 0x5b38 | strchr (r0, r1);
0x0001c230 add r2, sp, 0x78 | r2 += var_78h;
0x0001c234 mov r1, fp | r1 = fp;
0x0001c238 subs r7, r0, 0 | r7 -= s;
| if (r7 == s) {
0x0001c23c movne r3, 0 | r3 = 0;
| }
| if (r7 == s) {
0x0001c240 strbne r3, [r7] | *(r7) = r3;
| }
0x0001c244 mov r0, 0xa | r0 = 0xa;
| if (r7 == s) {
0x0001c248 addne r7, r7, 1 | r7 += str;
| }
0x0001c24c bl 0x5190 | r0 = inet_pton ();
0x0001c250 cmp r0, 0 |
| if (r0 > 0) {
0x0001c254 ble 0x1c280 |
0x0001c258 mov r3, 0xa | r3 = 0xa;
0x0001c25c strh r3, [sl] | *(sl) = r3;
0x0001c260 lsr r3, r6, 8 | r3 = r6 >> 8;
0x0001c264 orr r3, r3, r6, lsl 8 | r3 |= (r6 << 8);
0x0001c268 cmp r7, 0 |
0x0001c26c strh r3, [sl, 2] | var_2h = r3;
| if (r7 == 0) {
0x0001c270 beq 0x1c280 | goto label_5;
| }
0x0001c274 mov r0, r7 | r0 = r7;
0x0001c278 bl 0x5b08 | atoi (r0);
0x0001c27c str r0, [sp, 0x88] | var_88h = r0;
| }
| label_5:
0x0001c280 mov r7, 0x1c | r7 = 0x1c;
0x0001c284 b 0x1c2bc |
| } else {
0x0001c288 add r2, sp, 0x74 | r2 += var_74h;
0x0001c28c mov r1, fp | r1 = fp;
0x0001c290 mov r0, 2 | r0 = 2;
0x0001c294 bl 0x5190 | r0 = inet_pton ();
0x0001c298 cmp r0, 0 |
| if (r0 > 0) {
0x0001c29c movle r7, 0 | r7 = 0;
| }
| if (r0 <= 0) {
0x0001c2a0 ble 0x1c2bc | goto label_21;
| }
0x0001c2a4 mov r3, 2 | r3 = 2;
0x0001c2a8 strh r3, [sl] | *(sl) = r3;
0x0001c2ac lsr r3, r6, 8 | r3 = r6 >> 8;
0x0001c2b0 orr r3, r3, r6, lsl 8 | r3 |= (r6 << 8);
0x0001c2b4 strh r3, [sl, 2] | var_2h = r3;
| label_6:
0x0001c2b8 mov r7, 0x10 | r7 = 0x10;
| }
| label_21:
0x0001c2bc ldr sl, [pc, 0x2a8] | sl = *(0x1c568);
0x0001c2c0 add fp, sp, 0x70 |
0x0001c2c4 add sl, pc, sl | sl = pc + sl;
| label_7:
0x0001c2c8 mov r2, r7 | r2 = r7;
0x0001c2cc mov r1, fp | r1 = fp;
0x0001c2d0 ldr r0, [sp, 0x10] | r0 = socket;
0x0001c2d4 bl 0x4e24 | r0 = bind (r0, r1, r2);
0x0001c2d8 cmp r0, 0 |
| if (r0 < 0) {
0x0001c2dc blt 0x1c4b0 | goto label_22;
| }
0x0001c2e0 add r3, sp, 0x180 | r3 += s;
0x0001c2e4 mov r2, 0x80 | r2 = 0x80;
0x0001c2e8 mov r1, 0 | r1 = 0;
0x0001c2ec mov r0, r3 | r0 = r3;
0x0001c2f0 str r2, [sp, 0x3c] | var_3ch = r2;
0x0001c2f4 bl 0x576c | memset (r0, r1, r2);
0x0001c2f8 add r2, sp, 0x3c | r2 += var_3ch;
0x0001c2fc mov r1, r0 | r1 = r0;
0x0001c300 ldr r0, [sp, 0x10] | r0 = socket;
0x0001c304 bl 0x5058 | r0 = getsockname (r0, r1, r2);
0x0001c308 cmp r0, 0 |
| if (r0 >= 0) {
0x0001c30c bge 0x1c3b0 | goto label_23;
| }
0x0001c310 bl 0x4eb4 | errno_location ();
0x0001c314 add r3, r8, 0x4000 | r3 = r8 + 0x4000;
0x0001c318 ldr r5, [r0] | r5 = *(r0);
0x0001c31c mov r0, r4 | r0 = r4;
0x0001c320 str r5, [r3, 0x824] | *((r3 + 0x824)) = r5;
0x0001c324 mov r1, r5 | r1 = r5;
0x0001c328 bl 0x221a0 | Curl_strerror ();
0x0001c32c ldr r1, [pc, 0x23c] | r1 = *(0x1c56c);
0x0001c330 mov r2, r5 | r2 = r5;
0x0001c334 add r1, pc, r1 | r1 = pc + r1;
0x0001c338 mov r3, r0 | r3 = r0;
| label_8:
0x0001c33c mov r0, r8 | r0 = r8;
0x0001c340 bl 0x10544 | Curl_failf ();
0x0001c344 b 0x1c1f0 |
| } while (1);
| label_18:
0x0001c348 ldr r1, [pc, 0x224] | r1 = *(0x1c570);
0x0001c34c mov r2, 0 | r2 = 0;
0x0001c350 add r3, r8, 0x4000 | r3 = r8 + 0x4000;
0x0001c354 strb r2, [r3, 0x820] | *((r3 + 0x820)) = r2;
0x0001c358 add r1, pc, r1 | r1 = pc + r1;
0x0001c35c mov r2, r7 | r2 = r7;
0x0001c360 b 0x1c1e8 | goto label_3;
| label_15:
0x0001c364 mov sb, r0 | sb = r0;
| label_20:
0x0001c368 ldr r1, [sp, 0x30] | r1 = nmeb;
0x0001c36c mov r0, r4 | r0 = r4;
0x0001c370 bl 0x1bc30 | Curl_closesocket ();
0x0001c374 cmp sb, 1 |
| if (sb != 1) {
0x0001c378 moveq sb, 7 | sb = 7;
| }
0x0001c37c b 0x1be3c | goto label_4;
| label_14:
0x0001c380 lsr r2, r6, 8 | r2 = r6 >> 8;
0x0001c384 orr r2, r2, r6, lsl 8 | r2 |= (r6 << 8);
0x0001c388 lsl r2, r2, 0x10 | r2 <<= 0x10;
0x0001c38c cmp fp, 0xa |
0x0001c390 lsr r2, r2, 0x10 | r2 >>= 0x10;
0x0001c394 strheq fp, [r3] | __asm ("strheq fp, [r3]");
0x0001c398 strheq r2, [r3, 2] | __asm ("strheq r2, [r3, 2]");
| if (fp == 0xa) {
0x0001c39c beq 0x1c280 | goto label_5;
| }
0x0001c3a0 mov r1, 2 | r1 = 2;
0x0001c3a4 strh r1, [r3] | *(r3) = r1;
0x0001c3a8 strh r2, [r3, 2] | var_2h = r2;
0x0001c3ac b 0x1c2b8 | goto label_6;
| label_23:
0x0001c3b0 ldr r1, [pc, 0x1c0] | r1 = *(0x1c574);
0x0001c3b4 mov r2, r6 | r2 = r6;
0x0001c3b8 add r1, pc, r1 | r1 = pc + r1;
0x0001c3bc mov r0, r8 | r0 = r8;
0x0001c3c0 bl 0x104cc | Curl_infof ();
0x0001c3c4 mov r3, 1 | r3 = 1;
0x0001c3c8 strb r3, [r4, 0x26b] | *((r4 + 0x26b)) = r3;
| label_13:
0x0001c3cc mov r1, 1 | r1 = 1;
0x0001c3d0 add r6, sp, 0x28 | r6 += var_28h;
0x0001c3d4 ldr r0, [sp, 0x30] | r0 = nmeb;
0x0001c3d8 bl 0x25118 | curlx_nonblock ();
0x0001c3dc mov r0, r6 | r0 = r6;
0x0001c3e0 bl 0x69f0 | r0 = Curl_now ();
0x0001c3e4 ldm r6, {r0, r1} | r0 = *(r6);
| r1 = *((r6 + 4));
0x0001c3e8 add r3, r4, 0x274 | r3 = r4 + 0x274;
0x0001c3ec stm r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x0001c3f0 ldr r3, [r4, 0x27c] | r3 = *((r4 + 0x27c));
0x0001c3f4 cmp r3, 1 |
| if (r3 > 1) {
0x0001c3f8 ble 0x1c40c |
0x0001c3fc mov r2, 3 | r2 = 3;
0x0001c400 ldr r1, [r4, 0x280] | r1 = *((r4 + 0x280));
0x0001c404 mov r0, r5 | r0 = r5;
0x0001c408 bl 0x1e348 | Curl_expire ();
| }
0x0001c40c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001c410 ldr r0, [sp, 0x30] | r0 = nmeb;
0x0001c414 cmp r3, 0 |
| if (r3 == 0) {
0x0001c418 bne 0x1c528 |
0x0001c41c ldr r3, [r4, 0x94] | r3 = *((r4 + 0x94));
0x0001c420 cmp r3, 1 |
| if (r3 != 1) {
0x0001c424 bne 0x1c528 | goto label_24;
| }
0x0001c428 ldrb r3, [r4, 0x26e] | r3 = *((r4 + 0x26e));
0x0001c42c cmp r3, 0 |
| if (r3 != 0) {
0x0001c430 beq 0x1c444 |
0x0001c434 ldr r3, [r4, 0x288] | r3 = *((r4 + 0x288));
0x0001c438 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0001c43c tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0001c440 beq 0x1c534 | goto label_25;
| }
| }
0x0001c444 ldr r2, [sp, 0xfc] | r2 = var_fch;
0x0001c448 add r1, sp, 0x100 | r1 += addr;
0x0001c44c bl 0x4f74 | r0 = connect (r0, r1, r2);
0x0001c450 cmn r0, 1 |
| if (r0 != 1) {
0x0001c454 bne 0x1c534 | goto label_25;
| }
0x0001c458 bl 0x4eb4 | r0 = errno_location ();
0x0001c45c ldr r6, [r0] | r6 = *(r0);
0x0001c460 cmp r6, 0xb |
| if (r6 == 0xb) {
0x0001c464 beq 0x1c534 | goto label_25;
| }
0x0001c468 cmp r6, 0x73 |
| if (r6 == 0x73) {
0x0001c46c beq 0x1c534 | goto label_25;
| }
0x0001c470 mov r1, r6 | r1 = r6;
0x0001c474 mov r0, r4 | r0 = r4;
0x0001c478 bl 0x221a0 | Curl_strerror ();
0x0001c47c ldr r1, [pc, 0xf8] | r1 = *(0x1c578);
0x0001c480 add r2, sp, 0x40 | r2 += var_40h;
0x0001c484 add r1, pc, r1 | r1 = pc + r1;
0x0001c488 mov sb, 7 | sb = 7;
0x0001c48c mov r3, r0 | r3 = r0;
0x0001c490 mov r0, r5 | r0 = r5;
0x0001c494 add r5, r5, 0x4000 | r5 += 0x4000;
0x0001c498 bl 0x104cc | Curl_infof ();
0x0001c49c str r6, [r5, 0x824] | *((r5 + 0x824)) = r6;
0x0001c4a0 ldr r1, [sp, 0x30] | r1 = nmeb;
0x0001c4a4 mov r0, r4 | r0 = r4;
0x0001c4a8 bl 0x1bc30 | Curl_closesocket ();
0x0001c4ac b 0x1be3c | goto label_4;
| label_22:
0x0001c4b0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001c4b4 sub r3, r3, 1 | r3--;
0x0001c4b8 cmp r3, 0 |
0x0001c4bc str r3, [sp, 0xc] | var_ch = r3;
| if (r3 > 0) {
0x0001c4c0 ble 0x1c4f8 |
0x0001c4c4 mov r2, r6 | r2 = r6;
0x0001c4c8 add r6, r6, 1 | r6++;
0x0001c4cc lsl r6, r6, 0x10 | r6 <<= 0x10;
0x0001c4d0 lsr r6, r6, 0x10 | r6 >>= 0x10;
0x0001c4d4 mov r1, sl | r1 = sl;
0x0001c4d8 mov r0, r8 | r0 = r8;
0x0001c4dc bl 0x104cc | Curl_infof ();
0x0001c4e0 lsr r3, r6, 8 | r3 = r6 >> 8;
0x0001c4e4 orr r3, r3, r6, lsl 8 | r3 |= (r6 << 8);
0x0001c4e8 lsl r3, r3, 0x10 | r3 <<= 0x10;
0x0001c4ec lsr r3, r3, 0x10 | r3 >>= 0x10;
0x0001c4f0 strh r3, [fp, 2] | var_2h = r3;
0x0001c4f4 b 0x1c2c8 | goto label_7;
| }
0x0001c4f8 bl 0x4eb4 | errno_location ();
0x0001c4fc add r3, r8, 0x4000 | r3 = r8 + 0x4000;
0x0001c500 ldr r5, [r0] | r5 = *(r0);
0x0001c504 mov r0, r4 | r0 = r4;
0x0001c508 str r5, [r3, 0x824] | *((r3 + 0x824)) = r5;
0x0001c50c mov r1, r5 | r1 = r5;
0x0001c510 bl 0x221a0 | Curl_strerror ();
0x0001c514 ldr r1, [pc, 0x64] | r1 = *(0x1c57c);
0x0001c518 mov r2, r5 | r2 = r5;
0x0001c51c add r1, pc, r1 | r1 = pc + r1;
0x0001c520 mov r3, r0 | r3 = r0;
0x0001c524 b 0x1c33c | goto label_8;
| }
| label_24:
0x0001c528 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001c52c str r0, [r3] | *(r3) = r0;
0x0001c530 b 0x1be3c | goto label_4;
| label_25:
0x0001c534 ldr r3, [sp, 0x30] | r3 = nmeb;
0x0001c538 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0001c53c str r3, [r2] | *(r2) = r3;
0x0001c540 b 0x1be3c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x29884 */
| #include <stdint.h>
|
; (fcn) sym.smb_send_and_recv () | void smb_send_and_recv (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| r0 = arg1;
| r1 = arg2;
0x00029884 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} |
0x00029888 ldr r3, [r0, 0x474] | r3 = *((r0 + 0x474));
0x0002988c mov r4, r0 | r4 = r0;
0x00029890 cmp r3, 0 |
0x00029894 mov r6, r1 | r6 = r1;
| if (r3 == 0) {
0x00029898 bne 0x29904 |
0x0002989c ldr r1, [r0, 0x470] | r1 = *((r0 + 0x470));
0x000298a0 cmp r1, 0 |
| if (r1 == 0) {
0x000298a4 beq 0x29904 | goto label_2;
| }
0x000298a8 ldr r3, [r0] | r3 = *(r0);
0x000298ac cmp r1, 0x4000 |
| if (r1 < 0x4000) {
0x000298b0 movhs r1, 0x4000 | r1 = 0x4000;
| }
0x000298b4 add ip, r3, 0x7d0 |
0x000298b8 add r2, sp, 0x10 | r2 += var_10h;
0x000298bc str r1, [r2, -4]! | *((r2 -= 4)) = r1;
0x000298c0 str ip, [r3, 0x124] | *((r3 + 0x124)) = ip;
0x000298c4 bl 0x17eb4 | r0 = Curl_fillreadbuffer ();
0x000298c8 subs r3, r0, 0x51 | r3 = r0 - 0x51;
| if (r3 == r0) {
0x000298cc movne r3, 1 | r3 = 1;
| }
0x000298d0 cmp r0, 0 |
| if (r0 != 0) {
0x000298d4 moveq r3, 0 | r3 = 0;
| }
0x000298d8 cmp r3, 0 |
0x000298dc mov r5, r0 | r5 = r0;
| if (r3 != 0) {
0x000298e0 bne 0x299e0 | goto label_1;
| }
0x000298e4 ldr r5, [sp, 0xc] | r5 = var_ch;
0x000298e8 cmp r5, 0 |
| if (r5 == 0) {
0x000298ec beq 0x299e0 | goto label_1;
| }
0x000298f0 ldr r2, [r4, 0x470] | r2 = *((r4 + 0x470));
0x000298f4 str r5, [r4, 0x474] | *((r4 + 0x474)) = r5;
0x000298f8 sub r2, r2, r5 | r2 -= r5;
0x000298fc str r2, [r4, 0x470] | *((r4 + 0x470)) = r2;
0x00029900 str r3, [r4, 0x478] | *((r4 + 0x478)) = r3;
| }
| label_2:
0x00029904 ldr r7, [r4, 0x474] | r7 = *((r4 + 0x474));
0x00029908 cmp r7, 0 |
| if (r7 != 0) {
0x0002990c beq 0x2995c |
0x00029910 ldr r1, [r4, 0x478] | r1 = *((r4 + 0x478));
0x00029914 ldr r2, [r4] | r2 = *(r4);
0x00029918 sub r7, r7, r1 | r7 -= r1;
0x0002991c add r3, sp, 0xc | r3 += var_ch;
0x00029920 add r2, r2, 0x7d0 | r2 += 0x7d0;
0x00029924 str r3, [sp] | *(sp) = r3;
0x00029928 add r2, r2, r1 | r2 += r1;
0x0002992c mov r3, r7 | r3 = r7;
0x00029930 mov r1, 0 | r1 = 0;
0x00029934 mov r0, r4 | r0 = r4;
0x00029938 bl 0x10244 | r0 = Curl_write ();
0x0002993c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00029940 bne 0x299e0 | goto label_1;
| }
0x00029944 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00029948 cmp r7, r2 |
| if (r7 == r2) {
0x0002994c ldrne r3, [r4, 0x478] | r3 = *((r4 + 0x478));
| }
| if (r7 != r2) {
0x00029950 streq r5, [r4, 0x474] | *((r4 + 0x474)) = r5;
| }
| if (r7 == r2) {
0x00029954 addne r3, r3, r2 | r3 += r2;
| }
| if (r7 != r2) {
0x00029958 strne r3, [r4, 0x478] | *((r4 + 0x478)) = r3;
| goto label_3;
| }
| }
| label_3:
0x0002995c ldr r3, [r4, 0x474] | r3 = *((r4 + 0x474));
0x00029960 cmp r3, 0 |
| if (r3 != 0) {
0x00029964 bne 0x29a20 | goto label_4;
| }
0x00029968 ldr r1, [r4, 0x470] | r1 = *((r4 + 0x470));
0x0002996c cmp r1, 0 |
| if (r1 != 0) {
0x00029970 bne 0x29a20 | goto label_4;
| }
0x00029974 ldr r2, [r4, 0x47c] | r2 = *((r4 + 0x47c));
0x00029978 ldr r7, [r4, 0x46c] | r7 = *((r4 + 0x46c));
0x0002997c add r3, sp, 0xc | r3 += var_ch;
0x00029980 str r3, [sp] | *(sp) = r3;
0x00029984 mov r0, r4 | r0 = r4;
0x00029988 rsb r3, r2, 0x9000 | r3 = 0x9000 - r2;
0x0002998c add r2, r7, r2 | r2 = r7 + r2;
0x00029990 bl 0x102f0 | r0 = Curl_read ();
0x00029994 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00029998 bne 0x299e0 | goto label_1;
| }
0x0002999c ldr r3, [sp, 0xc] | r3 = var_ch;
0x000299a0 cmp r3, 0 |
| if (r3 == 0) {
0x000299a4 beq 0x299e0 | goto label_1;
| }
0x000299a8 ldr r2, [r4, 0x47c] | r2 = *((r4 + 0x47c));
0x000299ac add r3, r3, r2 | r3 += r2;
0x000299b0 cmp r3, 3 |
0x000299b4 str r3, [r4, 0x47c] | *((r4 + 0x47c)) = r3;
| if (r3 < 3) {
0x000299b8 bls 0x299e0 | goto label_1;
| }
0x000299bc add r0, r7, 2 | r0 = r7 + 2;
0x000299c0 bl 0x2aa04 | Curl_read16_be ();
0x000299c4 ldr r3, [r4, 0x47c] | r3 = *((r4 + 0x47c));
0x000299c8 add r8, r0, 4 | r8 = r0 + 4;
0x000299cc cmp r8, r3 |
| if (r8 > r3) {
0x000299d0 bhi 0x299e0 | goto label_1;
| }
0x000299d4 cmp r8, 0x24 |
0x000299d8 bhi 0x299ec |
| while (r8 <= r4) {
| label_0:
0x000299dc str r7, [r6] | *(r6) = r7;
| label_1:
0x000299e0 mov r0, r5 | r0 = r5;
0x000299e4 add sp, sp, 0x10 |
0x000299e8 pop {r4, r5, r6, r7, r8, pc} |
0x000299ec ldrb r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x000299f0 lsl r0, r0, 1 | r0 <<= 1;
0x000299f4 add r4, r0, 0x27 | r4 = r0 + 0x27;
0x000299f8 cmp r8, r4 |
0x000299fc blo 0x299dc |
| }
0x00029a00 add r0, r0, 0x25 | r0 += 0x25;
0x00029a04 add r0, r7, r0 | r0 = r7 + r0;
0x00029a08 bl 0x2a9d4 | r0 = Curl_read16_le ();
0x00029a0c add r0, r0, r4 | r0 += r4;
0x00029a10 cmp r8, r0 |
| if (r8 < r0) {
0x00029a14 movlo r5, 0x1a | r5 = 0x1a;
| goto label_5;
| }
| if (r8 >= r0) {
| label_5:
0x00029a18 bhs 0x299dc | goto label_0;
| }
0x00029a1c b 0x299e0 | goto label_1;
| label_4:
0x00029a20 mov r5, 0x51 | r5 = 0x51;
0x00029a24 b 0x299e0 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x369e4 */
| #include <stdint.h>
|
; (fcn) sym.ssl_connect_init_proxy () | void ssl_connect_init_proxy (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000369e4 lsl ip, r1, 4 |
0x000369e8 push {r4, r5, r6, r7, r8, lr} |
0x000369ec add r5, r0, ip | r5 = r0 + ip;
0x000369f0 ldr r3, [r5, 0x1c0] | r3 = *((r5 + 0x1c0));
0x000369f4 cmp r3, 2 |
| if (r3 == 2) {
0x000369f8 bne 0x36a64 |
0x000369fc ldrb r4, [r5, 0x1dc] | r4 = *((r5 + 0x1dc));
0x00036a00 cmp r4, 0 |
| if (r4 != 0) {
0x00036a04 bne 0x36a64 | goto label_0;
| }
0x00036a08 ldr r7, [pc, 0x64] | r7 = *(0x36a70);
0x00036a0c add r7, pc, r7 | r7 = pc + r7;
0x00036a10 ldr r3, [r7] |
0x00036a14 ldr r3, [r3, 8] | r3 = *(0x36a78);
0x00036a18 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x00036a1c beq 0x36a6c | goto label_1;
| }
0x00036a20 add r3, r5, 0x1bc | r3 = r5 + 0x1bc;
0x00036a24 mov lr, r0 | lr = r0;
0x00036a28 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00036a2c ldr r8, [r5, 0x1e8] | r8 = *((r5 + 0x1e8));
0x00036a30 add ip, ip, 0x1bc |
0x00036a34 add r6, r5, 0x1dc | r6 = r5 + 0x1dc;
0x00036a38 stm r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
0x00036a3c mov r2, 0x10 | r2 = 0x10;
0x00036a40 mov r1, r4 | r1 = r4;
0x00036a44 add r0, lr, ip | r0 = lr + ip;
0x00036a48 bl 0x576c | memset (r0, r1, r2);
0x00036a4c ldr r3, [r7] | r3 = *(r7);
0x00036a50 mov r1, r4 | r1 = r4;
0x00036a54 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00036a58 mov r0, r8 | r0 = r8;
0x00036a5c bl 0x576c | memset (r0, r1, r2);
0x00036a60 str r8, [r5, 0x1c8] | *((r5 + 0x1c8)) = r8;
| }
| label_0:
0x00036a64 mov r0, 0 | r0 = 0;
0x00036a68 pop {r4, r5, r6, r7, r8, pc} |
| label_1:
0x00036a6c mov r0, 4 | r0 = 4;
0x00036a70 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x9b3c */
| #include <stdint.h>
|
; (fcn) sym.tailmatch () | void tailmatch (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00009b3c push {r4, r5, r6, r7, r8, lr} |
0x00009b40 mov r4, r1 | r4 = r1;
0x00009b44 mov r7, r0 | r7 = r0;
0x00009b48 bl 0x5250 | r0 = strlen (r0);
0x00009b4c mov r6, r0 | r6 = r0;
0x00009b50 mov r0, r4 | r0 = r4;
0x00009b54 bl 0x5250 | r0 = strlen (r0);
0x00009b58 cmp r6, r0 |
0x00009b5c bls 0x9b68 |
| while (r0 == 0) {
0x00009b60 mov r0, 0 | r0 = 0;
0x00009b64 pop {r4, r5, r6, r7, r8, pc} |
0x00009b68 sub r3, r0, r6 | r3 = r0 - r6;
0x00009b6c add r4, r4, r3 | r4 += r3;
0x00009b70 mov r5, r0 | r5 = r0;
0x00009b74 mov r1, r4 | r1 = r4;
0x00009b78 mov r0, r7 | r0 = r7;
0x00009b7c bl 0x19dc0 | r0 = Curl_strcasecompare ();
0x00009b80 cmp r0, 0 |
0x00009b84 beq 0x9b60 |
| }
0x00009b88 cmp r6, r5 |
| if (r6 == r5) {
0x00009b8c ldrbne r0, [r4, -1] | r0 = *((r4 - 1));
| }
| if (r6 == r5) {
0x00009b90 subne r0, r0, 0x2e | r0 -= 0x2e;
| }
0x00009b94 clzne r0, r0 | __asm ("clzne r0, r0");
| if (r6 == r5) {
0x00009b98 lsrne r0, r0, 5 | r0 >>= 5;
| }
| if (r6 != r5) {
0x00009b9c moveq r0, 1 | r0 = 1;
| }
0x00009ba0 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x7bd8 */
| #include <stdint.h>
|
; (fcn) sym.time2str () | void time2str (int32_t arg1) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_10h_2;
| int32_t var_18h;
| r0 = arg1;
0x00007bd8 cmp r2, 1 |
0x00007bdc sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 < 1) {
0x00007be0 bge 0x7bf0 |
0x00007be4 ldr r1, [pc, 0x140] | r1 = *(0x7d28);
0x00007be8 add r1, pc, r1 | r1 = pc + r1;
0x00007bec b 0x5c28 | void (*0x5c28)() ();
| }
0x00007bf0 push {r4, r5, r6, r7, r8, sl, fp, lr} |
0x00007bf4 mov r4, r2 | r4 = r2;
0x00007bf8 mov r5, r3 | r5 = r3;
0x00007bfc sub sp, sp, 0x18 |
0x00007c00 mov r3, 0 | r3 = 0;
0x00007c04 mov r8, r0 | r8 = r0;
0x00007c08 mov r2, 0xe10 | r2 = 0xe10;
0x00007c0c mov r0, r4 | r0 = r4;
0x00007c10 mov r1, r5 | r1 = r5;
0x00007c14 bl 0x3897c | r0 = aeabi_ldivmod ();
0x00007c18 cmp r0, 0x64 |
0x00007c1c sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
0x00007c20 mov r6, r0 | r6 = r0;
0x00007c24 mov r7, r1 | r7 = r1;
| if (r0 >= 0x64) {
0x00007c28 bge 0x7ca0 | goto label_1;
| }
0x00007c2c ldr r0, [pc, 0xfc] | r0 = *(0x7d2c);
0x00007c30 rsb r3, r6, 0 | r3 = r6 - ;
0x00007c34 mla r1, r0, r7, r3 | __asm ("mla r1, r0, r7, r3");
0x00007c38 umull r2, r3, r6, r0 | r2:r3 = r6 * r0;
0x00007c3c adds sl, r4, r2 | sl = r4 + r2;
0x00007c40 add r3, r1, r3 | r3 = r1 + r3;
0x00007c44 adc fp, r5, r3 | __asm ("adc fp, r5, r3");
0x00007c48 mov r2, 0x3c | r2 = 0x3c;
0x00007c4c mov r3, 0 | r3 = 0;
0x00007c50 mov r0, sl | r0 = sl;
0x00007c54 mov r1, fp | r1 = fp;
0x00007c58 bl 0x3897c | aeabi_ldivmod ();
0x00007c5c mvn lr, 0x3b | lr = ~0x3b;
0x00007c60 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x00007c64 rsb r3, r0, 0 | r3 = r0 - ;
0x00007c68 mla ip, lr, r1, r3 | __asm ("mla ip, lr, r1, r3");
0x00007c6c umull r2, r3, r0, lr | r2:r3 = r0 * lr;
0x00007c70 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h]");
0x00007c74 adds r4, sl, r2 | r4 = sl + r2;
0x00007c78 ldr r2, [pc, 0xb4] | r2 = *(0x7d30);
0x00007c7c add r3, ip, r3 | r3 = ip + r3;
0x00007c80 adc r5, fp, r3 | __asm ("adc r5, fp, r3");
0x00007c84 strd r4, r5, [sp, 0x10] | __asm ("strd r4, r5, [var_10h]");
0x00007c88 add r2, pc, r2 | r2 = pc + r2;
0x00007c8c mov r1, 9 | r1 = 9;
0x00007c90 mov r0, r8 | r0 = r8;
0x00007c94 bl 0x579c | fcn_0000579c ();
| do {
| label_0:
0x00007c98 add sp, sp, 0x18 |
0x00007c9c pop {r4, r5, r6, r7, r8, sl, fp, pc} |
| label_1:
0x00007ca0 mov r3, 0 | r3 = 0;
0x00007ca4 ldr r2, [pc, 0x8c] | r2 = *(0x7d34);
0x00007ca8 mov r0, r4 | r0 = r4;
0x00007cac mov r1, r5 | r1 = r5;
0x00007cb0 bl 0x3897c | r0 = aeabi_ldivmod ();
0x00007cb4 cmp r0, 0x3e8 |
0x00007cb8 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
0x00007cbc mov r6, r0 | r6 = r0;
0x00007cc0 mov r7, r1 | r7 = r1;
| if (r0 >= 0x3e8) {
0x00007cc4 bge 0x7d10 | goto label_2;
| }
0x00007cc8 ldr r2, [pc, 0x6c] | r2 = *(0x7d38);
0x00007ccc rsb r1, r0, 0 | r1 = r0 - ;
0x00007cd0 umull sl, fp, r6, r2 | sl:fp = r6 * r2;
0x00007cd4 mla r3, r2, r7, r1 | __asm ("mla r3, r2, r7, r1");
0x00007cd8 adds r0, sl, r4 | r0 = sl + r4;
0x00007cdc add fp, r3, fp |
0x00007ce0 mov r2, 0xe10 | r2 = 0xe10;
0x00007ce4 mov r3, 0 | r3 = 0;
0x00007ce8 adc r1, fp, r5 | __asm ("adc r1, fp, r5");
0x00007cec bl 0x3897c | aeabi_ldivmod ();
0x00007cf0 ldr r2, [pc, 0x48] | r2 = *(0x7d3c);
0x00007cf4 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x00007cf8 add r2, pc, r2 | r2 = pc + r2;
0x00007cfc strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h]");
0x00007d00 mov r1, 9 | r1 = 9;
0x00007d04 mov r0, r8 | r0 = r8;
0x00007d08 bl 0x579c | fcn_0000579c ();
0x00007d0c b 0x7c98 |
| } while (1);
| label_2:
0x00007d10 ldr r2, [pc, 0x2c] | r2 = *(0x7d40);
0x00007d14 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x00007d18 add r2, pc, r2 | r2 = pc + r2;
0x00007d1c mov r1, 9 | r1 = 9;
0x00007d20 mov r0, r8 | r0 = r8;
0x00007d24 bl 0x579c | fcn_0000579c ();
0x00007d28 b 0x7c98 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x1c584 */
| #include <stdint.h>
|
; (fcn) sym.trynextip () | void trynextip (int32_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001c584 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001c588 cmp r1, 0 |
0x0001c58c add r7, r0, r2, lsl 2 | r7 = r0 + (r2 << 2);
0x0001c590 mvn r3, 0 | r3 = ~0;
0x0001c594 ldr sb, [r7, 0x1a0] | sb = *((r7 + 0x1a0));
0x0001c598 mov r6, r0 | r6 = r0;
0x0001c59c str r3, [r7, 0x1a0] | *((r7 + 0x1a0)) = r3;
0x0001c5a0 beq 0x1c5c4 |
| while (r3 == 0) {
| label_0:
0x0001c5a4 mov fp, 7 |
| label_4:
0x0001c5a8 cmn sb, 1 |
| if (sb != 1) {
0x0001c5ac beq 0x1c5bc |
0x0001c5b0 mov r1, sb | r1 = sb;
0x0001c5b4 mov r0, r6 | r0 = r6;
0x0001c5b8 bl 0x1bc30 | Curl_closesocket ();
| }
0x0001c5bc mov r0, fp | r0 = fp;
0x0001c5c0 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0001c5c4 ldr r3, [r7, 0x58] | r3 = *((r7 + 0x58));
0x0001c5c8 cmp r3, 0 |
| if (r3 == 0) {
0x0001c5cc ldrne sl, [r3, 4] | sl = *((r3 + 4));
| }
| if (r3 != 0) {
0x0001c5d0 bne 0x1c5f0 | goto label_5;
| }
0x0001c5d4 ldr r3, [r0, 0x58] | r3 = *((r0 + 0x58));
0x0001c5d8 cmp r3, 0 |
0x0001c5dc beq 0x1c5a4 |
| }
0x0001c5e0 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0001c5e4 cmp r1, 2 |
| if (r1 != 2) {
0x0001c5e8 moveq sl, 0xa | sl = 0xa;
| }
| if (r1 == 2) {
0x0001c5ec movne sl, 2 | sl = 2;
| }
| label_5:
0x0001c5f0 ldr r4, [r3, 0x1c] | r4 = *((r3 + 0x1c));
0x0001c5f4 add r8, r2, 0x68 | r8 = r2 + 0x68;
0x0001c5f8 eor r2, r2, 1 | r2 ^= 1;
0x0001c5fc add r8, r6, r8, lsl 2 | r8 = r6 + (r8 << 2);
0x0001c600 add r5, r2, 0x16 | r5 = r2 + 0x16;
| label_1:
0x0001c604 cmp r4, 0 |
| if (r4 == 0) {
0x0001c608 beq 0x1c5a4 | goto label_0;
| }
0x0001c60c ldr r3, [r6, r5, lsl 2] | offset_0 = r5 << 2;
| r3 = *((r6 + offset_0));
0x0001c610 cmp r3, 0 |
| if (r3 != 0) {
0x0001c614 bne 0x1c648 | goto label_6;
| }
| label_3:
0x0001c618 mov r2, r8 | r2 = r8;
0x0001c61c mov r1, r4 | r1 = r4;
0x0001c620 mov r0, r6 | r0 = r6;
0x0001c624 bl 0x1bdac | r0 = singleipconnect ();
0x0001c628 cmp r0, 7 |
0x0001c62c mov fp, r0 |
| if (r0 != 7) {
0x0001c630 bne 0x1c658 | goto label_7;
| }
0x0001c634 ldr r4, [r4, 0x1c] | r4 = *((r4 + 0x1c));
0x0001c638 b 0x1c604 | goto label_1;
| label_2:
0x0001c63c ldr r4, [r4, 0x1c] | r4 = *((r4 + 0x1c));
0x0001c640 cmp r4, 0 |
| if (r4 == 0) {
0x0001c644 beq 0x1c5a4 | goto label_0;
| }
| label_6:
0x0001c648 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0001c64c cmp r3, sl |
| if (r3 != sl) {
0x0001c650 bne 0x1c63c | goto label_2;
| }
0x0001c654 b 0x1c618 | goto label_3;
| label_7:
0x0001c658 str r4, [r7, 0x58] | *((r7 + 0x58)) = r4;
0x0001c65c b 0x1c5a8 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libcurl.so @ 0x312d0 */
| #include <stdint.h>
|
; (fcn) sym.unicodecpy () | void unicodecpy (char * arg1, char * arg2) {
| r0 = arg1;
| r1 = arg2;
0x000312d0 mov r3, 0 | r3 = 0;
0x000312d4 cmp r3, r2 |
0x000312d8 mov ip, r3 |
| if (r3 != r2) {
0x000312dc bxeq lr | return;
| }
0x000312e0 str lr, [sp, -4]! |
| do {
0x000312e4 ldrb lr, [r1, r3] |
0x000312e8 strb lr, [r0, r3, lsl 1] |
0x000312ec add lr, r0, r3, lsl 1 | lr = r0 + (r3 << 1);
0x000312f0 add r3, r3, 1 | r3++;
0x000312f4 cmp r3, r2 |
0x000312f8 strb ip, [lr, 1] | *((lr + 1)) = ip;
0x000312fc bne 0x312e4 |
| } while (r3 != r2);
0x00031300 pop {pc} |
| }
[*] Function system used 1 times libcurl.so