[*] Binary protection state of KT-1
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of KT-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/windows/KT-1 @ 0x3a12c */
| #include <stdint.h>
|
; (fcn) fcn.0003a12c () | void fcn_0003a12c (int32_t arg2) {
| char * dest;
| int32_t var_10h;
| int32_t var_20h;
| r1 = arg2;
0x0003a12c push {r4, r5, r6, lr} |
0x0003a130 mov r6, r1 | r6 = r1;
0x0003a134 mov r1, 2 | r1 = 2;
0x0003a138 sub sp, sp, 0x20 |
0x0003a13c mov r2, 0 | r2 = 0;
0x0003a140 mov r0, r1 | r0 = r1;
0x0003a144 bl 0x183b0 | socket (r0, r1, r2);
0x0003a148 mov r4, sp | r4 = sp;
0x0003a14c mov r3, 0x20 | r3 = 0x20;
0x0003a150 mov r2, 0 | r2 = 0;
0x0003a154 mov r1, r3 | r1 = r3;
0x0003a158 mov r5, r0 | r5 = r0;
0x0003a15c mov r0, r4 | r0 = r4;
0x0003a160 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x0003a164 mov r0, r6 | r0 = r6;
0x0003a168 bl 0x1772c | r0 = strlen (r0);
0x0003a16c cmp r0, 0xf |
| if (r0 <= 0xf) {
0x0003a170 movhi r0, 0 | r0 = 0;
| }
| if (r0 <= 0xf) {
0x0003a174 bhi 0x3a1a8 |
0x0003a178 mov r1, r6 | r1 = r6;
0x0003a17c mov r0, r4 | r0 = r4;
0x0003a180 bl 0x17e4c | strcpy (r0, r1)
0x0003a184 mov r2, r4 | r2 = r4;
0x0003a188 ldr r1, [pc, 0x20] | r1 = *(0x3a1ac);
0x0003a18c mov r0, r5 | r0 = r5;
0x0003a190 bl 0x17a8c | ioctl (r0, r1);
0x0003a194 mov r0, r5 | r0 = r5;
0x0003a198 bl 0x184c4 | close (r0);
0x0003a19c ldrh r0, [sp, 0x10] | r0 = var_10h;
0x0003a1a0 lsr r0, r0, 6 | r0 >>= 6;
0x0003a1a4 and r0, r0, 1 | r0 &= 1;
| }
0x0003a1a8 add sp, sp, 0x20 |
0x0003a1ac 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/windows/KT-1 @ 0x4f8a4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0004f8a4 () | void fcn_0004f8a4 (int32_t arg1) {
| char * src;
| int32_t var_20h;
| r0 = arg1;
0x0004f8a4 push {r4, r5, r6, r7, r8, lr} |
0x0004f8a8 mov r4, r0 | r4 = r0;
0x0004f8ac ldr r0, [pc, 0x218] | r0 = *(0x4fac8);
0x0004f8b0 sub sp, sp, 0x20 |
0x0004f8b4 add r0, pc, r0 | r0 = pc + r0;
0x0004f8b8 bl 0x183e0 | basename (r0);
0x0004f8bc ldr r1, [pc, 0x20c] |
0x0004f8c0 ldr r3, [pc, 0x20c] | r3 = *(0x4fad0);
0x0004f8c4 add r1, pc, r1 | r1 = pc + r1;
0x0004f8c8 add r3, pc, r3 | r3 = pc + r3;
0x0004f8cc mov r2, 5 | r2 = 5;
0x0004f8d0 add r1, r1, 0x1a | r1 = 0x4fae6;
0x0004f8d4 bl 0xc3f94 | fcn_000c3f94 (r0, r1, r2, r3);
0x0004f8d8 ldr r3, [pc, 0x1f8] | r3 = *(0x4fad4);
0x0004f8dc mov r2, 0 | r2 = 0;
0x0004f8e0 mov r1, r3 | r1 = r3;
0x0004f8e4 add r0, r4, 0x18 | r0 = r4 + 0x18;
0x0004f8e8 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x0004f8ec ldrb r3, [r4, 0x56] | r3 = *((r4 + 0x56));
0x0004f8f0 add r5, sp, 4 | r5 += src;
0x0004f8f4 bic r3, r3, 0xe | r3 = BIT_MASK (r3, 0xe);
0x0004f8f8 orr r3, r3, 1 | r3 |= 1;
0x0004f8fc mov r0, r5 | r0 = r5;
0x0004f900 strb r3, [r4, 0x56] | *((r4 + 0x56)) = r3;
0x0004f904 bl 0x3a8cc | fcn_0003a8cc (r0);
0x0004f908 mov r0, r5 | r0 = r5;
0x0004f90c bl 0x1bb20 | fcn_0001bb20 (r0);
0x0004f910 add r6, r4, 0x6b | r6 = r4 + 0x6b;
0x0004f914 mov r1, r0 | r1 = r0;
0x0004f918 mov r0, r6 | r0 = r6;
0x0004f91c bl 0x17e4c | strcpy (r0, r1)
0x0004f920 mov r0, r5 | r0 = r5;
0x0004f924 bl 0x1bcc4 | fcn_0001bcc4 (r0);
0x0004f928 mov r0, r5 | r0 = r5;
0x0004f92c bl 0x3a90c | fcn_0003a90c (r0);
0x0004f930 mov r0, r5 | r0 = r5;
0x0004f934 add r6, r4, 0x5b | r6 = r4 + 0x5b;
0x0004f938 bl 0x1bb20 | r0 = fcn_0001bb20 (r0);
0x0004f93c mov r1, r0 | r1 = r0;
0x0004f940 mov r0, r6 | r0 = r6;
0x0004f944 bl 0x17e4c | strcpy (r0, r1)
0x0004f948 mov r0, r5 | r0 = r5;
0x0004f94c bl 0x1bcc4 | fcn_0001bcc4 (r0);
0x0004f950 ldr r3, [pc, 0x184] | r3 = *(0x4fad8);
0x0004f954 mov r2, 0 | r2 = 0;
0x0004f958 strh r3, [r4, 0x22] | *((r4 + 0x22)) = r3;
0x0004f95c ldr r3, [pc, 0x174] | r3 = *(0x4fad4);
0x0004f960 add r0, r4, 0x1a | r0 = r4 + 0x1a;
0x0004f964 strh r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0004f968 mov r3, 4 | r3 = 4;
0x0004f96c mov r1, r3 | r1 = r3;
0x0004f970 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x0004f974 mvn r3, 0x3f | r3 = ~0x3f;
0x0004f978 strb r3, [r4, 0x7b] | *((r4 + 0x7b)) = r3;
0x0004f97c ldr r1, [pc, 0x15c] | r1 = *(0x4fadc);
0x0004f980 mvn r3, 0x57 | r3 = ~0x57;
0x0004f984 strb r3, [r4, 0x7c] | *((r4 + 0x7c)) = r3;
0x0004f988 mov r3, 2 | r3 = 2;
0x0004f98c mov r5, 0 | r5 = 0;
0x0004f990 mov r6, 1 | r6 = 1;
0x0004f994 strb r3, [r4, 0x7e] | *((r4 + 0x7e)) = r3;
0x0004f998 mvn r3, 0 | r3 = ~0;
0x0004f99c strb r6, [r4, 0x7d] | *((r4 + 0x7d)) = r6;
0x0004f9a0 strb r3, [r4, 0x7f] | *((r4 + 0x7f)) = r3;
0x0004f9a4 strb r3, [r4, 0x80] | *((r4 + 0x80)) = r3;
0x0004f9a8 strb r3, [r4, 0x81] | *((r4 + 0x81)) = r3;
0x0004f9ac strb r6, [r4, 0x8f] | *((r4 + 0x8f)) = r6;
0x0004f9b0 add r1, pc, r1 | r1 = pc + r1;
0x0004f9b4 strb r5, [r4, 0x82] | *((r4 + 0x82)) = r5;
0x0004f9b8 strb r5, [r4, 0x83] | *((r4 + 0x83)) = r5;
0x0004f9bc strb r5, [r4, 0x84] | *((r4 + 0x84)) = r5;
0x0004f9c0 strb r5, [r4, 0x85] | *((r4 + 0x85)) = r5;
0x0004f9c4 strb r5, [r4, 0x86] | *((r4 + 0x86)) = r5;
0x0004f9c8 add r0, r4, 0xab | r0 = r4 + 0xab;
0x0004f9cc bl 0x17e4c | strcpy (r0, r1)
0x0004f9d0 ldr r2, [pc, 0x10c] | r2 = *(0x4fae0);
0x0004f9d4 mov r3, 0x10 | r3 = 0x10;
0x0004f9d8 add r2, pc, r2 | r2 = pc + r2;
0x0004f9dc mov r1, r3 | r1 = r3;
0x0004f9e0 add r0, r4, 0x93 | r0 = r4 + 0x93;
0x0004f9e4 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x0004f9e8 ldr r3, [pc, 0xf8] | r3 = *(0x4fae4);
0x0004f9ec mov r2, 0x3c | r2 = 0x3c;
0x0004f9f0 strh r3, [r4, 0x90] | *((r4 + 0x90)) = r3;
0x0004f9f4 mvn r3, 0x51 | r3 = ~0x51;
0x0004f9f8 strb r3, [r4, 0xa3] | *((r4 + 0xa3)) = r3;
0x0004f9fc strb r2, [r4, 0xdf] | *((r4 + 0xdf)) = r2;
0x0004fa00 mov r3, 0x14 | r3 = 0x14;
0x0004fa04 mov r2, 6 | r2 = 6;
0x0004fa08 strb r6, [r4, 0x92] | *((r4 + 0x92)) = r6;
0x0004fa0c strb r3, [r4, 0xa5] | *((r4 + 0xa5)) = r3;
0x0004fa10 strb r2, [r4, 0xe1] | *((r4 + 0xe1)) = r2;
0x0004fa14 strb r3, [r4, 0xa7] | *((r4 + 0xa7)) = r3;
0x0004fa18 mov r2, 4 | r2 = 4;
0x0004fa1c mov r3, 0x78 | r3 = 0x78;
0x0004fa20 add r6, r4, 0xe6 | r6 = r4 + 0xe6;
0x0004fa24 mov r8, 0x7f | r8 = 0x7f;
0x0004fa28 mov r7, r5 | r7 = r5;
0x0004fa2c strb r5, [r4, 0x87] | *((r4 + 0x87)) = r5;
0x0004fa30 strb r5, [r4, 0x88] | *((r4 + 0x88)) = r5;
0x0004fa34 strb r5, [r4, 0x89] | *((r4 + 0x89)) = r5;
0x0004fa38 strb r5, [r4, 0x8a] | *((r4 + 0x8a)) = r5;
0x0004fa3c strb r5, [r4, 0x8b] | *((r4 + 0x8b)) = r5;
0x0004fa40 strb r5, [r4, 0x8c] | *((r4 + 0x8c)) = r5;
0x0004fa44 strb r5, [r4, 0x8d] | *((r4 + 0x8d)) = r5;
0x0004fa48 strb r5, [r4, 0x8e] | *((r4 + 0x8e)) = r5;
0x0004fa4c strb r5, [r4, 0xa6] | *((r4 + 0xa6)) = r5;
0x0004fa50 strb r5, [r4, 0xe0] | *((r4 + 0xe0)) = r5;
0x0004fa54 strb r5, [r4, 0xe2] | *((r4 + 0xe2)) = r5;
0x0004fa58 strb r2, [r4, 0xa4] | *((r4 + 0xa4)) = r2;
0x0004fa5c strb r5, [r4, 0xa8] | *((r4 + 0xa8)) = r5;
0x0004fa60 strb r3, [r4, 0xa9] | *((r4 + 0xa9)) = r3;
0x0004fa64 strb r5, [r4, 0xaa] | *((r4 + 0xaa)) = r5;
0x0004fa68 strb r5, [r4, 0x57] | *((r4 + 0x57)) = r5;
0x0004fa6c strb r5, [r4, 0x58] | *((r4 + 0x58)) = r5;
0x0004fa70 strb r5, [r4, 0x59] | *((r4 + 0x59)) = r5;
0x0004fa74 strb r5, [r4, 0x5a] | *((r4 + 0x5a)) = r5;
| do {
0x0004fa78 strb r8, [r6, -1] | *((r6 - 1)) = r8;
0x0004fa7c strb r7, [r6, 4] | *((r6 + 4)) = r7;
0x0004fa80 ldr r3, [r4, 0x1a8] | r3 = *((r4 + 0x1a8));
0x0004fa84 mov r0, r6 | r0 = r6;
0x0004fa88 add r3, r3, r5 | r3 += r5;
0x0004fa8c strb r7, [r3, 0x391] | *((r3 + 0x391)) = r7;
0x0004fa90 mov r3, 4 | r3 = 4;
0x0004fa94 mov r2, 0 | r2 = 0;
0x0004fa98 mov r1, r3 | r1 = r3;
0x0004fa9c add r5, r5, 1 | r5++;
0x0004faa0 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x0004faa4 cmp r5, 0x20 |
0x0004faa8 add r6, r6, 6 | r6 += 6;
0x0004faac bne 0x4fa78 |
| } while (r5 != 0x20);
0x0004fab0 strb r7, [r4, 0x1ac] | *((r4 + 0x1ac)) = r7;
0x0004fab4 add sp, sp, 0x20 |
0x0004fab8 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/windows/KT-1 @ 0x52b58 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00052b58 () | void fcn_00052b58 (void * in, int32_t arg_204h, int32_t arg1, int32_t arg2) {
| char * var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_2h;
| char * src;
| char * dest;
| int32_t var_3ah;
| int32_t var_0h_2;
| int32_t var_77h;
| int32_t var_78h;
| char * var_43h;
| char * var_53h;
| void * s1;
| int8_t var_d2h;
| int32_t var_1cch;
| int32_t var_1f4h;
| r0 = arg1;
| r1 = arg2;
0x00052b58 sub sp, sp, 8 |
0x00052b5c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00052b60 ldrb ip, [r2, 1] | ip = *((r2 + 1));
0x00052b64 sub sp, sp, 0x1cc |
0x00052b68 str r3, [sp, 0x1f4] | var_1f4h = r3;
0x00052b6c ldrb r3, [r2] | r3 = *(r2);
0x00052b70 ldr r8, [pc, 0xaa4] | r8 = *(0x53618);
0x00052b74 orr r3, r3, ip, lsl 8 | r3 |= (ip << 8);
0x00052b78 ldr ip, [pc, 0xaa0] | ip = *(0x00053620);
0x00052b7c add r8, pc, r8 | r8 = pc + r8;
0x00052b80 cmp r3, ip |
0x00052b84 ldrb r7, [sp, 0x204] | r7 = *(arg_204h);
| if (r3 != ip) {
0x00052b88 beq 0x52b98 |
0x00052b8c ldr ip, [pc, 0xa90] | ip = *(0x00053624);
0x00052b90 cmp r3, ip |
| if (r3 != ip) {
0x00052b94 bne 0x52bd4 | goto label_0;
| }
| }
0x00052b98 mov sl, r1 | sl = r1;
0x00052b9c ldrb r1, [r2, 0xe] | r1 = *((r2 + 0xe));
0x00052ba0 mov r5, r2 | r5 = r2;
0x00052ba4 cmp r1, 0x65 |
0x00052ba8 mov r4, r0 | r4 = r0;
| if (r1 == 0x65) {
0x00052bac beq 0x52fd8 | goto label_9;
| }
| if (r1 > 0x65) {
0x00052bb0 bhi 0x52c90 | goto label_10;
| }
0x00052bb4 cmp r1, 0x5f |
| if (r1 == 0x5f) {
0x00052bb8 beq 0x52fd8 | goto label_9;
| }
| if (r1 > 0x5f) {
0x00052bbc bhi 0x52c6c | goto label_11;
| }
0x00052bc0 cmp r1, 6 |
| if (r1 == 6) {
0x00052bc4 beq 0x533f0 | goto label_12;
| }
| if (r1 > 6) {
0x00052bc8 bhi 0x52bdc | goto label_13;
| }
0x00052bcc cmp r1, 0 |
| if (r1 == 0) {
0x00052bd0 beq 0x52d84 | goto label_14;
| }
| do {
| label_0:
0x00052bd4 mov r6, 0 | r6 = 0;
0x00052bd8 b 0x52c58 | goto label_1;
| label_13:
0x00052bdc cmp r1, 0x58 |
| if (r1 == 0x58) {
0x00052be0 beq 0x53580 | goto label_15;
| }
0x00052be4 cmp r1, 0x5e |
| label_3:
0x00052be8 bne 0x52bd4 |
| } while (r1 != 0x5e);
0x00052bec ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x00052bf0 ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x00052bf4 ldrb r0, [r5, 0xd] | r0 = *((r5 + 0xd));
0x00052bf8 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00052bfc ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00052c00 mov r6, 1 | r6 = 1;
0x00052c04 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00052c08 add r2, sp, 0x1f4 | r2 += var_1f4h;
0x00052c0c str r2, [sp, 8] | var_8h = r2;
0x00052c10 ldr r2, [pc, 0xa10] | r2 = *(0x53624);
0x00052c14 orr r3, r3, r0, lsl 24 | r3 |= (r0 << 24);
0x00052c18 add r2, pc, r2 | r2 = pc + r2;
0x00052c1c str r2, [sp, 4] | var_4h = r2;
0x00052c20 mov r2, 0 | r2 = 0;
0x00052c24 str r2, [sp] | *(sp) = r2;
0x00052c28 mov r0, r4 | r0 = r4;
0x00052c2c str r7, [sp, 0x10] | var_10h = r7;
0x00052c30 str r6, [sp, 0xc] | var_ch = r6;
0x00052c34 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
0x00052c38 ldr r3, [pc, 0x9ec] |
0x00052c3c mov r2, 0xff00 | r2 = 0xff00;
0x00052c40 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00052c44 ldr r1, [pc, 0x9e4] | r1 = *(0x5362c);
0x00052c48 ldr r3, [r3] |
0x00052c4c add r3, r3, 0x42000 | r3 = 0x95628;
0x00052c50 ldr r0, [r3, 0xf38] | r0 = *(0x96560);
0x00052c54 bl 0x88e7c | fcn_00088e7c (r0, r1);
| label_1:
0x00052c58 mov r0, r6 | r0 = r6;
0x00052c5c add sp, sp, 0x1cc |
0x00052c60 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00052c64 add sp, sp, 8 |
0x00052c68 bx lr | return;
| label_11:
0x00052c6c cmp r1, 0x61 |
| if (r1 == 0x61) {
0x00052c70 beq 0x52fd0 | goto label_16;
| }
| if (r1 <= 0x61) {
0x00052c74 blo 0x52e8c | goto label_17;
| }
0x00052c78 cmp r1, 0x63 |
| if (r1 == 0x63) {
0x00052c7c beq 0x52e8c | goto label_17;
| }
0x00052c80 cmp r1, 0x64 |
| if (r1 != 0x64) {
0x00052c84 bne 0x52bd4 | goto label_0;
| }
| label_2:
0x00052c88 mov r6, 1 | r6 = 1;
0x00052c8c b 0x52c58 | goto label_1;
| label_10:
0x00052c90 cmp r1, 0x6c |
| if (r1 > 0x6c) {
0x00052c94 bhi 0x52d70 | goto label_18;
| }
0x00052c98 cmp r1, 0x6b |
| if (r1 >= 0x6b) {
0x00052c9c bhs 0x53378 | goto label_19;
| }
0x00052ca0 cmp r1, 0x68 |
| if (r1 == 0x68) {
0x00052ca4 beq 0x531f0 | goto label_20;
| }
| if (r1 > 0x68) {
0x00052ca8 bhi 0x52cf8 | goto label_21;
| }
0x00052cac cmp r1, 0x66 |
| if (r1 != 0x66) {
0x00052cb0 bne 0x52bd4 | goto label_0;
| }
0x00052cb4 ldrb r3, [r2, 0xa] | r3 = *((r2 + 0xa));
0x00052cb8 ldrb r2, [r2, 0xb] | r2 = *((r2 + 0xb));
0x00052cbc ldrb r0, [r5, 0xd] | r0 = *((r5 + 0xd));
0x00052cc0 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00052cc4 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00052cc8 add ip, sp, 0x1f4 |
0x00052ccc orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00052cd0 str ip, [sp, 8] | var_8h = ip;
0x00052cd4 mov r2, 0 | r2 = 0;
0x00052cd8 add ip, r4, 0x93 |
0x00052cdc orr r3, r3, r0, lsl 24 | r3 |= (r0 << 24);
0x00052ce0 str r7, [sp, 0x10] | var_10h = r7;
0x00052ce4 str r2, [sp, 0xc] | var_ch = r2;
0x00052ce8 stm sp, {r2, ip} | *(sp) = r2;
| *((sp + 4)) = ip;
| label_7:
0x00052cec mov r0, r4 | r0 = r4;
0x00052cf0 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
0x00052cf4 b 0x52c88 | goto label_2;
| label_21:
0x00052cf8 cmp r1, 0x69 |
| if (r1 == 0x69) {
0x00052cfc beq 0x53278 | goto label_22;
| }
0x00052d00 cmp r1, 0x6a |
| if (r1 != 0x6a) {
0x00052d04 bne 0x52bd4 | goto label_0;
| }
0x00052d08 ldrb r3, [r2, 0xa] | r3 = *((r2 + 0xa));
0x00052d0c ldrb r2, [r2, 0xb] | r2 = *((r2 + 0xb));
0x00052d10 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x00052d14 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00052d18 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00052d1c add r0, r0, 0x1b8 | r0 += 0x1b8;
0x00052d20 str r0, [sp, 8] | var_8h = r0;
0x00052d24 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00052d28 add r0, r4, 0x93 | r0 = r4 + 0x93;
0x00052d2c mov r2, 0 | r2 = 0;
0x00052d30 orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x00052d34 str r2, [sp, 0xc] | var_ch = r2;
0x00052d38 mov r1, 6 | r1 = 6;
0x00052d3c str r0, [sp, 4] | var_4h = r0;
0x00052d40 str r2, [sp] | *(sp) = r2;
0x00052d44 mov r0, r4 | r0 = r4;
0x00052d48 add r2, r5, 8 | r2 = r5 + 8;
0x00052d4c str r7, [sp, 0x10] | var_10h = r7;
0x00052d50 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
0x00052d54 mov r0, 1 | r0 = 1;
0x00052d58 bl 0xc45f0 | fcn_000c45f0 (r0);
0x00052d5c mov r0, r4 | r0 = r4;
0x00052d60 bl 0x4f8a4 | fcn_0004f8a4 (r0);
0x00052d64 mov r0, r4 | r0 = r4;
0x00052d68 bl 0x526c4 | fcn_000526c4 (r0);
0x00052d6c b 0x532cc | goto label_23;
| label_18:
0x00052d70 cmp r1, 0x6e |
| if (r1 == 0x6e) {
0x00052d74 beq 0x533c0 | goto label_24;
| }
| if (r1 <= 0x6e) {
0x00052d78 blo 0x532f4 | goto label_25;
| }
0x00052d7c cmp r1, 0x6f |
0x00052d80 b 0x52be8 | goto label_3;
| label_14:
0x00052d84 ldr r0, [r0, 0x1a8] | r0 = *((r0 + 0x1a8));
0x00052d88 cmp r0, 0 |
| if (r0 != 0) {
0x00052d8c bne 0x52db0 | goto label_26;
| }
| label_4:
0x00052d90 ldrb r1, [r4, 5] | r1 = *((r4 + 5));
0x00052d94 cmp r1, 0 |
| if (r1 != 0) {
0x00052d98 bne 0x52c88 | goto label_2;
| }
0x00052d9c ldr r0, [r4, 0x1a8] | r0 = *((r4 + 0x1a8));
0x00052da0 bl 0x6caac | r0 = fcn_0006caac (r0, r1);
0x00052da4 cmp r0, 0 |
| if (r0 != 0) {
0x00052da8 bne 0x52dbc | goto label_27;
| }
0x00052dac b 0x52c88 | goto label_2;
| label_26:
0x00052db0 bl 0x6a62c | r0 = fcn_0006a62c (r0);
0x00052db4 cmp r0, 0 |
| if (r0 == 0) {
0x00052db8 beq 0x52d90 | goto label_4;
| }
| label_27:
0x00052dbc ldrb r1, [r5, 9] | r1 = *((r5 + 9));
0x00052dc0 ldrb r3, [r5, 8] | r3 = *((r5 + 8));
0x00052dc4 ldr r2, [r4, 0x2fc] | r2 = *((r4 + 0x2fc));
0x00052dc8 orr r3, r3, r1, lsl 8 | r3 |= (r1 << 8);
0x00052dcc add r2, sl, r2 | r2 = sl + r2;
0x00052dd0 mov r1, 0 | r1 = 0;
0x00052dd4 mov r0, r4 | r0 = r4;
0x00052dd8 bl 0x5002c | r0 = fcn_0005002c (r0, r1);
0x00052ddc subs r2, r0, 0 | r2 = r0 - 0;
0x00052de0 mov r6, r0 | r6 = r0;
| if (r2 != r0) {
0x00052de4 beq 0x52e28 |
| label_8:
0x00052de8 ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x00052dec ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x00052df0 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x00052df4 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00052df8 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00052dfc add r0, r4, 0x1b8 | r0 = r4 + 0x1b8;
0x00052e00 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00052e04 str r0, [sp, 8] | var_8h = r0;
0x00052e08 mov r2, 0 | r2 = 0;
0x00052e0c add r0, r4, 0x93 | r0 = r4 + 0x93;
0x00052e10 str r7, [sp, 0x10] | var_10h = r7;
0x00052e14 str r2, [sp, 0xc] | var_ch = r2;
0x00052e18 str r0, [sp, 4] | var_4h = r0;
0x00052e1c str r2, [sp] | *(sp) = r2;
0x00052e20 orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x00052e24 b 0x5336c | goto label_28;
| }
0x00052e28 ldr r3, [pc, 0x7fc] |
0x00052e2c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00052e30 ldr r3, [r3] | r3 = *(0x53628);
0x00052e34 ldrb r6, [r3, 0x148] | r6 = *((r3 + 0x148));
0x00052e38 cmp r6, 0 |
| if (r6 == 0) {
0x00052e3c beq 0x52c88 | goto label_2;
| }
0x00052e40 ldrb r1, [r5, 0xb] | r1 = *((r5 + 0xb));
0x00052e44 ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x00052e48 add r0, r4, 0x1b8 | r0 = r4 + 0x1b8;
0x00052e4c orr r3, r3, r1, lsl 8 | r3 |= (r1 << 8);
0x00052e50 ldrb r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00052e54 orr r3, r3, r1, lsl 16 | r3 |= (r1 << 16);
0x00052e58 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x00052e5c str r2, [sp, 0xc] | var_ch = r2;
0x00052e60 str r0, [sp, 8] | var_8h = r0;
0x00052e64 str r2, [sp] | *(sp) = r2;
0x00052e68 add r0, r4, 0x93 | r0 = r4 + 0x93;
0x00052e6c orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x00052e70 add r2, r5, 8 | r2 = r5 + 8;
0x00052e74 mov r1, 2 | r1 = 2;
0x00052e78 str r7, [sp, 0x10] | var_10h = r7;
0x00052e7c str r0, [sp, 4] | var_4h = r0;
| label_5:
0x00052e80 mov r0, r4 | r0 = r4;
0x00052e84 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
0x00052e88 b 0x52c58 | goto label_1;
| label_17:
0x00052e8c ldr r3, [pc, 0x798] | r3 = *(0x53628);
0x00052e90 ldr r8, [r8, r3] | r8 = *((r8 + r3));
0x00052e94 ldr r3, [r8] | r3 = *(r8);
0x00052e98 ldrsb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x00052e9c cmp r3, 0 |
| if (r3 < 0) {
0x00052ea0 blt 0x52f00 | goto label_29;
| }
0x00052ea4 ldrb r6, [r4, 0x1ac] | r6 = *((r4 + 0x1ac));
0x00052ea8 cmp r6, 0 |
| if (r6 == 0) {
0x00052eac beq 0x52f00 | goto label_29;
| }
0x00052eb0 ldrb r3, [r4, 0xa3] | r3 = *((r4 + 0xa3));
0x00052eb4 cmp r3, 0x51 |
| if (r3 == 0x51) {
0x00052eb8 beq 0x52c88 | goto label_2;
| }
0x00052ebc ldr r0, [sp, 0x1f8] | r0 = *(in);
0x00052ec0 bl 0x17d38 | r0 = inet_ntoa (r0);
0x00052ec4 mov r1, r0 | r1 = r0;
0x00052ec8 add r0, sp, 0x38 | r0 += dest;
0x00052ecc bl 0x17e4c | strcpy (r0, r1)
0x00052ed0 mov r3, 1 | r3 = 1;
0x00052ed4 str r3, [sp, 0xc] | var_ch = r3;
0x00052ed8 add r3, sp, 0x1f4 | r3 += var_1f4h;
0x00052edc str r3, [sp, 8] | var_8h = r3;
0x00052ee0 add r3, r4, 0x93 | r3 = r4 + 0x93;
0x00052ee4 str r3, [sp, 4] | var_4h = r3;
0x00052ee8 mov r3, 0 | r3 = 0;
0x00052eec str r7, [sp, 0x10] | var_10h = r7;
0x00052ef0 str r3, [sp] | *(sp) = r3;
0x00052ef4 mov r2, r3 | r2 = r3;
0x00052ef8 mov r1, 0x72 | r1 = 0x72;
0x00052efc b 0x52e80 | goto label_5;
| label_29:
0x00052f00 ldrb r3, [r4, 0x57] | r3 = *((r4 + 0x57));
0x00052f04 ldr r2, [r4, 0x58] | r2 = *((r4 + 0x58));
0x00052f08 orrs r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
| if (r3 != r3) {
0x00052f0c beq 0x52f1c |
0x00052f10 ldrb r3, [r4, 0x1ac] | r3 = *((r4 + 0x1ac));
0x00052f14 cmp r3, 0 |
| if (r3 != 0) {
0x00052f18 bne 0x52f90 | goto label_30;
| }
| }
0x00052f1c ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x00052f20 ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x00052f24 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x00052f28 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00052f2c ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00052f30 str r7, [sp, 0x10] | var_10h = r7;
0x00052f34 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00052f38 mov r2, 1 | r2 = 1;
0x00052f3c str r2, [sp, 0xc] | var_ch = r2;
0x00052f40 add r2, sp, 0x1f4 | r2 += var_1f4h;
0x00052f44 str r2, [sp, 8] | var_8h = r2;
0x00052f48 ldr r2, [pc, 0x6e4] | r2 = *(0x53630);
0x00052f4c add r2, pc, r2 | r2 = pc + r2;
| label_6:
0x00052f50 str r2, [sp, 4] | var_4h = r2;
0x00052f54 mov r2, 0 | r2 = 0;
0x00052f58 orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x00052f5c str r2, [sp] | *(sp) = r2;
0x00052f60 mov r1, 0x63 | r1 = 0x63;
0x00052f64 mov r0, r4 | r0 = r4;
0x00052f68 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
| do {
0x00052f6c ldr r0, [sp, 0x1f8] | r0 = *(in);
0x00052f70 bl 0x17d38 | inet_ntoa (r0);
0x00052f74 ldr r3, [r8] | r3 = *(r8);
0x00052f78 mov r2, 0xff00 | r2 = 0xff00;
0x00052f7c add r3, r3, 0x42000 | r3 += 0x42000;
0x00052f80 ldr r1, [pc, 0x6a8] | r1 = *(0x5362c);
0x00052f84 ldr r0, [r3, 0xf38] | r0 = *((r3 + 0xf38));
0x00052f88 bl 0x88e7c | fcn_00088e7c (r0, r1);
0x00052f8c b 0x52c88 | goto label_2;
| label_30:
0x00052f90 ldrb r3, [r4, 0xa3] | r3 = *((r4 + 0xa3));
0x00052f94 cmp r3, 0x51 |
0x00052f98 beq 0x52f6c |
| } while (r3 == 0x51);
0x00052f9c ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x00052fa0 ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x00052fa4 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x00052fa8 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00052fac ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00052fb0 str r7, [sp, 0x10] | var_10h = r7;
0x00052fb4 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00052fb8 mov r2, 1 | r2 = 1;
0x00052fbc str r2, [sp, 0xc] | var_ch = r2;
0x00052fc0 add r2, sp, 0x1f4 | r2 += var_1f4h;
0x00052fc4 str r2, [sp, 8] | var_8h = r2;
0x00052fc8 add r2, r4, 0x93 | r2 = r4 + 0x93;
0x00052fcc b 0x52f50 | goto label_6;
| label_16:
0x00052fd0 mov r3, 0 | r3 = 0;
0x00052fd4 strb r3, [r0, 0x1ac] | *((r0 + 0x1ac)) = r3;
| label_9:
0x00052fd8 ldr r2, [r4, 0x2fc] | r2 = *((r4 + 0x2fc));
0x00052fdc add r6, sp, 0x1c | r6 += src;
0x00052fe0 mov r3, 2 | r3 = 2;
0x00052fe4 mov r1, r3 | r1 = r3;
0x00052fe8 add r2, sl, r2 | r2 = sl + r2;
0x00052fec sub r0, r6, 2 | r0 -= var_2h;
0x00052ff0 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x00052ff4 ldr r3, [pc, 0x63c] | r3 = *(0x53634);
0x00052ff8 add sb, sp, 0x38 | sb += dest;
0x00052ffc mov r1, r3 | r1 = r3;
0x00053000 mov r2, 0 | r2 = 0;
0x00053004 mov r0, sb | r0 = sb;
0x00053008 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x0005300c ldrh r1, [r6, -2] | r1 = var_2h;
0x00053010 ldr r3, [pc, 0x620] | r3 = *(0x53634);
0x00053014 ldr r2, [r4, 0x2fc] | r2 = *((r4 + 0x2fc));
0x00053018 cmp r1, r3 |
| if (r1 > r3) {
0x0005301c movls r3, r1 | r3 = r1;
| }
| if (r1 > r3) {
0x00053020 addls r2, sl, r2 | r2 = sl + r2;
| }
| if (r1 <= r3) {
0x00053024 addhi r2, sl, r2 | r2 = sl + r2;
| }
| if (r1 <= r3) {
0x00053028 movhi r1, r3 | r1 = r3;
| }
0x0005302c mov r0, sb | r0 = sb;
0x00053030 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x00053034 mov r0, r6 | r0 = r6;
0x00053038 bl 0x3a90c | fcn_0003a90c (r0);
0x0005303c mov r0, r6 | r0 = r6;
0x00053040 bl 0x1bb20 | r0 = fcn_0001bb20 (r0);
0x00053044 mov r1, r0 | r1 = r0;
0x00053048 add r0, sb, 0x43 | r0 += var_43h;
0x0005304c bl 0x17e4c | strcpy (r0, r1)
0x00053050 mov r0, r6 | r0 = r6;
0x00053054 bl 0x1bcc4 | fcn_0001bcc4 (r0);
0x00053058 mov r0, r6 | r0 = r6;
0x0005305c bl 0x3a8cc | fcn_0003a8cc (r0);
0x00053060 mov r0, r6 | r0 = r6;
0x00053064 bl 0x1bb20 | r0 = fcn_0001bb20 (r0);
0x00053068 mov r1, r0 | r1 = r0;
0x0005306c add r0, sb, 0x53 | r0 += var_53h;
0x00053070 bl 0x17e4c | strcpy (r0, r1)
0x00053074 mov r0, r6 | r0 = r6;
0x00053078 bl 0x1bcc4 | fcn_0001bcc4 (r0);
0x0005307c mov r1, sb | r1 = sb;
0x00053080 mov r0, r4 | r0 = r4;
0x00053084 bl 0x500a8 | r0 = fcn_000500a8 (r0, r1);
0x00053088 cmp r0, 0 |
0x0005308c strb r0, [r4, 0x422] | *((r4 + 0x422)) = r0;
| if (r0 != 0) {
0x00053090 beq 0x530c0 |
0x00053094 ldr r3, [pc, 0x590] | r3 = *(0x53628);
0x00053098 ldr r6, [r8, r3] | r6 = *((r8 + r3));
0x0005309c ldr r0, [r6] | r0 = *(r6);
0x000530a0 bl 0x3c6d0 | r0 = fcn_0003c6d0 (r0);
0x000530a4 cmp r0, 0 |
| if (r0 == 0) {
0x000530a8 beq 0x530c0 | goto label_31;
| }
0x000530ac ldr r0, [r6] | r0 = *(r6);
0x000530b0 ldrb r1, [r0, 0x14] | r1 = *((r0 + 0x14));
0x000530b4 ands r1, r1, 0x10 | r1 &= 0x10;
| if (r1 != r1) {
0x000530b8 bne 0x530c0 | goto label_31;
| }
0x000530bc bl 0x3c7ec | fcn_0003c7ec (r0, r1);
| }
| label_31:
0x000530c0 ldrb r3, [sp, 0x77] | r3 = var_77h;
0x000530c4 ldr r1, [sp, 0x78] | r1 = var_78h;
0x000530c8 ldr r0, [r4, 0x1a8] | r0 = *((r4 + 0x1a8));
0x000530cc orr r1, r3, r1, lsl 8 | r1 = r3 | (r1 << 8);
0x000530d0 bl 0x6ab78 | fcn_0006ab78 (r0, r1);
0x000530d4 add r6, r4, 0x93 | r6 = r4 + 0x93;
0x000530d8 add fp, sb, 0x7b |
0x000530dc mov r2, 0x10 | r2 = 0x10;
0x000530e0 mov r1, r6 | r1 = r6;
0x000530e4 add r8, r4, 0x1b8 | r8 = r4 + 0x1b8;
0x000530e8 mov sl, r0 | sl = r0;
0x000530ec mov r0, fp | r0 = fp;
0x000530f0 bl 0x17f00 | r0 = memcmp (r0, r1, r2);
0x000530f4 cmp r0, 0 |
| if (r0 != 0) {
0x000530f8 beq 0x53138 |
0x000530fc ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x00053100 ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x00053104 mov r1, 0 | r1 = 0;
0x00053108 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x0005310c ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00053110 mov r0, r4 | r0 = r4;
0x00053114 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00053118 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x0005311c str r1, [sp] | *(sp) = r1;
0x00053120 orr r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
0x00053124 str r7, [sp, 0x10] | var_10h = r7;
0x00053128 stmib sp, {r6, r8, sl} | __asm ("stmib sp, {r6, r8, sl}");
0x0005312c mov r2, fp | r2 = fp;
0x00053130 mov r1, 0x73 | r1 = 0x73;
0x00053134 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
| }
0x00053138 add fp, r4, 0x3a0 |
0x0005313c mov r0, fp | r0 = fp;
0x00053140 bl 0x17edc | pthread_mutex_lock ();
0x00053144 ldr r0, [r4, 0x1a8] | r0 = *((r4 + 0x1a8));
0x00053148 cmp r0, 0 |
| if (r0 == 0) {
0x0005314c beq 0x53194 | goto label_32;
| }
0x00053150 bl 0x6a62c | r0 = fcn_0006a62c (r0);
0x00053154 cmp r0, 0 |
| if (r0 == 0) {
0x00053158 beq 0x53194 | goto label_32;
| }
0x0005315c mov r3, 0 | r3 = 0;
0x00053160 mov r1, 6 | r1 = 6;
0x00053164 mov r0, 0x63 | r0 = 0x63;
0x00053168 mov ip, r3 |
| do {
0x0005316c mla r2, r1, r3, sb | __asm ("mla r2, r1, r3, sb");
0x00053170 ldrb lr, [r2, 0xd2] | lr = var_d2h;
0x00053174 cmp lr, 0 |
| if (lr == 0) {
0x00053178 strbne r0, [r2, 0xd2] | *((r2 + 0xd2)) = r0;
| }
| if (lr == 0) {
0x0005317c ldrne r2, [r4, 0x1a8] | r2 = *((r4 + 0x1a8));
| }
| if (lr == 0) {
0x00053180 addne r2, r2, r3 | r2 += r3;
| }
0x00053184 add r3, r3, 1 | r3++;
| if (lr == 0) {
0x00053188 strbne ip, [r2, 0x391] | *((r2 + 0x391)) = ip;
| }
0x0005318c cmp r3, 0x20 |
0x00053190 bne 0x5316c |
| } while (r3 != 0x20);
| label_32:
0x00053194 mov r0, fp | r0 = fp;
0x00053198 bl 0x17c9c | pthread_mutex_unlock ();
0x0005319c mov r1, sb | r1 = sb;
0x000531a0 mov r0, r4 | r0 = r4;
0x000531a4 bl 0x502a4 | fcn_000502a4 (r0, r1);
0x000531a8 ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x000531ac ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x000531b0 mov r1, 0 | r1 = 0;
0x000531b4 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x000531b8 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x000531bc mov r0, r4 | r0 = r4;
0x000531c0 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x000531c4 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x000531c8 str r1, [sp] | *(sp) = r1;
0x000531cc orr r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
0x000531d0 str r7, [sp, 0x10] | var_10h = r7;
0x000531d4 stmib sp, {r6, r8, sl} | __asm ("stmib sp, {r6, r8, sl}");
0x000531d8 add r2, r5, 8 | r2 = r5 + 8;
0x000531dc mov r1, 6 | r1 = 6;
0x000531e0 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
0x000531e4 ldr r0, [r4, 0x1a8] | r0 = *((r4 + 0x1a8));
0x000531e8 bl 0x6aec0 | fcn_0006aec0 (r0);
0x000531ec b 0x52c88 | goto label_2;
| label_20:
0x000531f0 ldrb r3, [r2, 0xa] | r3 = *((r2 + 0xa));
0x000531f4 ldrb r2, [r2, 0xb] | r2 = *((r2 + 0xb));
0x000531f8 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x000531fc orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00053200 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00053204 add r0, r0, 0x1b8 | r0 += 0x1b8;
0x00053208 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x0005320c str r0, [sp, 8] | var_8h = r0;
0x00053210 mov r2, 0 | r2 = 0;
0x00053214 add r0, r4, 0x93 | r0 = r4 + 0x93;
0x00053218 orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x0005321c str r2, [sp, 0xc] | var_ch = r2;
0x00053220 mov r1, 6 | r1 = 6;
0x00053224 str r0, [sp, 4] | var_4h = r0;
0x00053228 str r2, [sp] | *(sp) = r2;
0x0005322c mov r0, r4 | r0 = r4;
0x00053230 add r2, r5, 8 | r2 = r5 + 8;
0x00053234 str r7, [sp, 0x10] | var_10h = r7;
0x00053238 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
0x0005323c mov r0, 1 | r0 = 1;
0x00053240 bl 0xc45f0 | fcn_000c45f0 (r0);
0x00053244 add r2, r4, 0x1000 | r2 = r4 + 0x1000;
0x00053248 ldr r2, [r2, 0x118] | r2 = *((r2 + 0x118));
0x0005324c ldr r3, [pc, 0x3d8] | r3 = *(0x53628);
0x00053250 add r4, r4, 0x1100 | r4 += 0x1100;
0x00053254 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00053258 str r2, [sp, 8] | var_8h = r2;
0x0005325c ldrd r0, r1, [r4, 0x20] | __asm ("ldrd r0, r1, [r4, 0x20]");
0x00053260 mov r2, 4 | r2 = 4;
0x00053264 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
| do {
0x00053268 ldr r0, [r3] | r0 = *(r3);
0x0005326c mov r1, 0x19 | r1 = 0x19;
0x00053270 bl 0x3b718 | fcn_0003b718 (r0, r1, r2, r3);
0x00053274 b 0x52c88 | goto label_2;
| label_22:
0x00053278 ldrb r3, [r2, 0xa] | r3 = *((r2 + 0xa));
0x0005327c ldrb r2, [r2, 0xb] | r2 = *((r2 + 0xb));
0x00053280 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x00053284 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00053288 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x0005328c add r0, r0, 0x1b8 | r0 += 0x1b8;
0x00053290 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00053294 str r0, [sp, 8] | var_8h = r0;
0x00053298 mov r2, 0 | r2 = 0;
0x0005329c add r0, r4, 0x93 | r0 = r4 + 0x93;
0x000532a0 str r2, [sp, 0xc] | var_ch = r2;
0x000532a4 str r0, [sp, 4] | var_4h = r0;
0x000532a8 str r2, [sp] | *(sp) = r2;
0x000532ac orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x000532b0 mov r0, r4 | r0 = r4;
0x000532b4 str r7, [sp, 0x10] | var_10h = r7;
0x000532b8 add r2, r5, 8 | r2 = r5 + 8;
0x000532bc mov r1, 6 | r1 = 6;
0x000532c0 bl 0x50398 | fcn_00050398 (r0, r1, r2, r3, r4, r5);
0x000532c4 mov r0, 1 | r0 = 1;
0x000532c8 bl 0xc45f0 | fcn_000c45f0 (r0);
| label_23:
0x000532cc add r2, r4, 0x1000 | r2 = r4 + 0x1000;
0x000532d0 ldr r2, [r2, 0x118] | r2 = *((r2 + 0x118));
0x000532d4 ldr r3, [pc, 0x350] | r3 = *(0x53628);
0x000532d8 add r4, r4, 0x1100 | r4 += 0x1100;
0x000532dc ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000532e0 str r2, [sp, 8] | var_8h = r2;
0x000532e4 ldrd r0, r1, [r4, 0x20] | __asm ("ldrd r0, r1, [r4, 0x20]");
0x000532e8 mov r2, 2 | r2 = 2;
0x000532ec strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000532f0 b 0x53268 |
| } while (1);
| label_25:
0x000532f4 ldr r3, [pc, 0x330] |
0x000532f8 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000532fc ldr r3, [r3] | r3 = *(0x53628);
0x00053300 ldrsb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x00053304 cmp r3, 0 |
| if (r3 < 0) {
0x00053308 blt 0x52c88 | goto label_2;
| }
0x0005330c ldr r0, [r0, 0x1a8] | r0 = *((r0 + 0x1a8));
0x00053310 cmp r0, 0 |
| if (r0 == 0) {
0x00053314 beq 0x53378 | goto label_19;
| }
0x00053318 ldrb r8, [r0, 0x38f] | r8 = *((r0 + 0x38f));
0x0005331c cmp r8, 0 |
| if (r8 != 0) {
0x00053320 bne 0x53378 | goto label_19;
| }
0x00053324 mov r1, r8 | r1 = r8;
0x00053328 bl 0x6caac | r0 = fcn_0006caac (r0, r1);
0x0005332c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00053330 beq 0x52c88 | goto label_2;
| }
0x00053334 ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x00053338 ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x0005333c add r1, r4, 0x1b8 | r1 = r4 + 0x1b8;
0x00053340 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00053344 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00053348 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x0005334c ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x00053350 str r1, [sp, 8] | var_8h = r1;
0x00053354 orr r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
0x00053358 add r1, r4, 0x93 | r1 = r4 + 0x93;
0x0005335c str r7, [sp, 0x10] | var_10h = r7;
0x00053360 str r8, [sp, 0xc] | var_ch = r8;
0x00053364 str r1, [sp, 4] | var_4h = r1;
0x00053368 str r8, [sp] | *(sp) = r8;
| label_28:
0x0005336c add r2, r5, 8 | r2 = r5 + 8;
0x00053370 mov r1, 6 | r1 = 6;
0x00053374 b 0x52e80 | goto label_5;
| label_19:
0x00053378 ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x0005337c ldrb r3, [r5, 0xa] | r3 = *((r5 + 0xa));
0x00053380 ldrb r1, [r5, 0xd] | r1 = *((r5 + 0xd));
0x00053384 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00053388 ldrb r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x0005338c add r0, r4, 0x1b8 | r0 = r4 + 0x1b8;
0x00053390 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00053394 str r0, [sp, 8] | var_8h = r0;
0x00053398 mov r2, 0 | r2 = 0;
0x0005339c add r0, r4, 0x93 | r0 = r4 + 0x93;
0x000533a0 str r2, [sp, 0xc] | var_ch = r2;
0x000533a4 str r2, [sp] | *(sp) = r2;
0x000533a8 orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x000533ac str r7, [sp, 0x10] | var_10h = r7;
0x000533b0 str r0, [sp, 4] | var_4h = r0;
0x000533b4 add r2, r5, 8 | r2 = r5 + 8;
0x000533b8 mov r1, 6 | r1 = 6;
0x000533bc b 0x52cec | goto label_7;
| label_24:
0x000533c0 ldr r3, [pc, 0x264] |
0x000533c4 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000533c8 ldr r3, [r3] | r3 = *(0x53628);
0x000533cc ldrsb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x000533d0 cmp r3, 0 |
| if (r3 < 0) {
0x000533d4 blt 0x52c88 | goto label_2;
| }
0x000533d8 mov r1, 0 | r1 = 0;
0x000533dc ldr r0, [r0, 0x1a8] | r0 = *((r0 + 0x1a8));
0x000533e0 bl 0x6c914 | r0 = fcn_0006c914 (r0, r1);
0x000533e4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x000533e8 beq 0x52c88 | goto label_2;
| }
0x000533ec b 0x52de8 | goto label_8;
| label_12:
0x000533f0 ldr r2, [r0, 0x2fc] | r2 = *((r0 + 0x2fc));
0x000533f4 mov r3, 2 | r3 = 2;
0x000533f8 add r5, sp, 0x1c | r5 += src;
0x000533fc mov r1, r3 | r1 = r3;
0x00053400 add r2, sl, r2 | r2 = sl + r2;
0x00053404 mov r0, r5 | r0 = r5;
0x00053408 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x0005340c ldrh r1, [r5] | r1 = *(r5);
0x00053410 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00053414 bl 0x7cbb8 | r0 = fcn_0007cbb8 (r0, r1);
0x00053418 cmp r0, 0 |
| if (r0 != 0) {
0x0005341c beq 0x5349c |
0x00053420 ldrh r1, [r5] | r1 = *(r5);
0x00053424 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00053428 bl 0x7cd24 | fcn_0007cd24 (r0, r1);
0x0005342c ldr r3, [pc, 0x1f8] | r3 = *(0x53628);
0x00053430 ldr r6, [r8, r3] | r6 = *((r8 + r3));
0x00053434 ldr r3, [r6] | r3 = *(r6);
0x00053438 ldrb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x0005343c tst r3, 0x20 |
| if ((r3 & 0x20) == 0) {
0x00053440 beq 0x5349c | goto label_33;
| }
0x00053444 mov r3, 8 | r3 = 8;
0x00053448 add r5, sp, 0x38 | r5 += dest;
0x0005344c mov r1, r3 | r1 = r3;
0x00053450 mov r2, 0 | r2 = 0;
0x00053454 mov r0, r5 | r0 = r5;
0x00053458 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x0005345c ldr r0, [r6] | r0 = *(r6);
0x00053460 mov r1, 0x18 | r1 = 0x18;
0x00053464 ldrb r3, [r0, 0x12] | r3 = *((r0 + 0x12));
0x00053468 bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x0005346c strb r3, [r0, 0x12] | *((r0 + 0x12)) = r3;
0x00053470 ldrb r3, [sp, 0x3a] | r3 = var_3ah;
0x00053474 orr r3, r3, 0x20 | r3 |= 0x20;
0x00053478 strb r3, [sp, 0x3a] | var_3ah = r3;
0x0005347c add r3, r4, 0x1000 | r3 = r4 + 0x1000;
0x00053480 add r2, r3, 0x128 | r2 = r3 + 0x128;
0x00053484 ldr r3, [r3, 0x118] | r3 = *((r3 + 0x118));
0x00053488 ldrh r2, [r2] | r2 = *(r2);
0x0005348c str r3, [sp, 8] | var_8h = r3;
0x00053490 ldrd r6, r7, [r5] | __asm ("ldrd r6, r7, [r5]");
0x00053494 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x00053498 bl 0x3b718 | fcn_0003b718 (r0, r1, r2, r3);
| }
| label_33:
0x0005349c ldrb r3, [r4, 5] | r3 = *((r4 + 5));
0x000534a0 cmp r3, 0 |
| if (r3 != 0) {
0x000534a4 beq 0x53518 |
0x000534a8 mov r3, 0 | r3 = 0;
0x000534ac strb r3, [r4, 5] | *((r4 + 5)) = r3;
0x000534b0 ldrb r3, [r4, 7] | r3 = *((r4 + 7));
0x000534b4 add r1, r4, 0x83 | r1 = r4 + 0x83;
0x000534b8 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x000534bc strb r3, [r4, 7] | *((r4 + 7)) = r3;
0x000534c0 mov r0, r4 | r0 = r4;
0x000534c4 bl 0x51bd8 | fcn_00051bd8 (r0);
0x000534c8 mov r7, r1 | r7 = r1;
0x000534cc add r1, r4, 0x2f0 | r1 = r4 + 0x2f0;
0x000534d0 ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x000534d4 mov r6, r0 | r6 = r0;
0x000534d8 cmp r3, r7 |
0x000534dc cmpeq r2, r6 | __asm ("cmpeq r2, r6");
| if (r3 == r7) {
0x000534e0 beq 0x53518 | goto label_34;
| }
0x000534e4 ldr r3, [pc, 0x140] |
0x000534e8 strd r6, r7, [r1] | __asm ("strd r6, r7, [r1]");
0x000534ec ldr r0, [r8, r3] | r0 = *((r8 + r3));
0x000534f0 add r3, r4, 0x1000 | r3 = r4 + 0x1000;
0x000534f4 ldr r3, [r3, 0x118] | r3 = *(0x53740);
0x000534f8 mov r1, 0x1a | r1 = 0x1a;
0x000534fc str r3, [sp, 8] | var_8h = r3;
0x00053500 add r3, r4, 0x1100 | r3 = r4 + 0x1100;
0x00053504 ldrd r2, r3, [r3, 0x20] | __asm ("ldrd r2, r3, [r3, 0x20]");
0x00053508 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0005350c ldr r0, [r0] | r0 = *(r0);
0x00053510 mov r2, 4 | r2 = 4;
0x00053514 bl 0x3b718 | fcn_0003b718 (r0, r1, r2, r3);
| }
| label_34:
0x00053518 ldrb r3, [r4, 0x423] | r3 = *((r4 + 0x423));
0x0005351c cmp r3, 0 |
| if (r3 != 0) {
0x00053520 beq 0x53538 |
0x00053524 mov r0, r4 | r0 = r4;
0x00053528 bl 0x4f5ac | fcn_0004f5ac (r0);
0x0005352c mov r1, 0 | r1 = 0;
0x00053530 mov r0, r4 | r0 = r4;
0x00053534 bl 0x4f3d0 | fcn_0004f3d0 (r0, r1);
| }
0x00053538 ldrb r3, [r4, 0x1ac] | r3 = *((r4 + 0x1ac));
0x0005353c cmp r3, 0 |
| if (r3 != 0) {
0x00053540 bne 0x52c88 | goto label_2;
| }
0x00053544 mov r6, 1 | r6 = 1;
0x00053548 add r2, r4, 0x1000 | r2 = r4 + 0x1000;
0x0005354c strb r6, [r4, 0x1ac] | *((r4 + 0x1ac)) = r6;
0x00053550 ldr r3, [pc, 0xd4] | r3 = *(0x53628);
0x00053554 ldr r2, [r2, 0x118] | r2 = *((r2 + 0x118));
0x00053558 add r4, r4, 0x1100 | r4 += 0x1100;
0x0005355c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00053560 str r2, [sp, 8] | var_8h = r2;
0x00053564 ldrd r0, r1, [r4, 0x20] | __asm ("ldrd r0, r1, [r4, 0x20]");
0x00053568 mov r2, 4 | r2 = 4;
0x0005356c strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00053570 ldr r0, [r3] | r0 = *(0x53628);
0x00053574 mov r1, 0x1a | r1 = 0x1a;
0x00053578 bl 0x3b718 | fcn_0003b718 (r0, r1, r2, r3);
0x0005357c b 0x52c58 | goto label_1;
| label_15:
0x00053580 ldr r0, [r0, 0x1a8] | r0 = *((r0 + 0x1a8));
0x00053584 cmp r0, 0 |
| if (r0 != 0) {
0x00053588 beq 0x535a8 |
0x0005358c ldr r2, [r4, 0x2fc] | r2 = *((r4 + 0x2fc));
0x00053590 mov r3, 0x80 | r3 = 0x80;
0x00053594 add r0, r0, 0x3b0 | r0 += 0x3b0;
0x00053598 add r2, sl, r2 | r2 = sl + r2;
0x0005359c mov r1, r3 | r1 = r3;
0x000535a0 add r0, r0, 1 | r0++;
0x000535a4 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
| }
0x000535a8 ldr r3, [pc, 0x7c] | r3 = *(0x53628);
0x000535ac ldr r5, [r8, r3] | r5 = *((r8 + r3));
0x000535b0 ldr r0, [r5] | r0 = *(r5);
0x000535b4 bl 0x3c6d0 | r0 = fcn_0003c6d0 (r0);
0x000535b8 cmp r0, 0 |
| if (r0 == 0) {
0x000535bc beq 0x52c88 | goto label_2;
| }
0x000535c0 ldr r3, [pc, 0x74] | r3 = *(0x53638);
0x000535c4 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000535c8 ldr r1, [r3] | r1 = *(0x53638);
0x000535cc cmp r1, 0 |
| if (r1 == 0) {
0x000535d0 beq 0x52c88 | goto label_2;
| }
0x000535d4 ldr r2, [r4, 0x1a8] | r2 = *((r4 + 0x1a8));
0x000535d8 cmp r2, 0 |
| if (r2 == 0) {
0x000535dc beq 0x52c88 | goto label_2;
| }
0x000535e0 ldrb r3, [r2, 0x3b8] | r3 = *((r2 + 0x3b8));
0x000535e4 ldr r0, [r2, 0x3b4] | r0 = *((r2 + 0x3b4));
0x000535e8 ldr r2, [r1, 0x5c] | r2 = *((r1 + 0x5c));
0x000535ec lsl r3, r3, 0x18 | r3 <<= 0x18;
0x000535f0 orr r3, r3, r0, lsr 8 | r3 |= (r0 >> 8);
0x000535f4 cmp r3, r2 |
| if (r3 != r2) {
0x000535f8 bne 0x52c88 | goto label_2;
| }
0x000535fc mov r1, 1 | r1 = 1;
0x00053600 ldr r0, [r5] | r0 = *(r5);
0x00053604 bl 0x3c7ec | fcn_0003c7ec (r0, r1);
0x00053608 b 0x52c88 | 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/windows/KT-1 @ 0x66f48 */
| #include <stdint.h>
|
; (fcn) fcn.00066f48 () | void fcn_00066f48 (char * arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00066f48 mov r3, 0 | r3 = 0;
0x00066f4c str lr, [sp, -4]! |
0x00066f50 strb r3, [r0] | *(r0) = r3;
0x00066f54 mov r3, r1 | r3 = r1;
| do {
0x00066f58 cmp r2, 1 |
0x00066f5c sub lr, r3, r1 | lr = r3 - r1;
0x00066f60 ldrb ip, [r3], 1 | ip = *(r3);
| r3++;
| if (r2 == 1) {
0x00066f64 bne 0x66f90 |
0x00066f68 add r1, r1, lr | r1 += lr;
0x00066f6c mov r3, r0 | r3 = r0;
| label_1:
0x00066f70 ldrb r2, [r1], 1 | r2 = *(r1);
| r1++;
0x00066f74 cmp r2, 0x2f |
| if (r2 > 0x2f) {
0x00066f78 bhi 0x66fb4 | goto label_2;
| }
| label_0:
0x00066f7c mov r2, 0 | r2 = 0;
0x00066f80 cmp r0, r3 |
0x00066f84 strb r2, [r3] | *(r3) = r2;
0x00066f88 popne {pc} |
0x00066f8c b 0x66f98 |
| } else {
0x00066f90 cmp ip, 0 |
| if (ip != 0) {
0x00066f94 bne 0x66fa8 | goto label_3;
| }
| }
0x00066f98 ldr r1, [pc, 0x24] | r1 = *(0x66fc0);
0x00066f9c pop {lr} |
0x00066fa0 add r1, pc, r1 | r1 = pc + r1;
0x00066fa4 b 0x17e4c | void (*0x17e4c)() ();
| label_3:
0x00066fa8 cmp ip, 0x2e |
| if (ip != 0x2e) {
0x00066fac subeq r2, r2, 1 | r2--;
| }
0x00066fb0 b 0x66f58 |
| } while (1);
| label_2:
0x00066fb4 cmp r2, 0x39 |
| if (r2 > 0x39) {
0x00066fb8 bhi 0x66f7c | goto label_0;
| }
0x00066fbc strb r2, [r3], 1 | *(r3) = r2;
| r3++;
0x00066fc0 b 0x66f70 | 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/windows/KT-1 @ 0x67594 */
| #include <stdint.h>
|
; (fcn) fcn.00067594 () | void fcn_00067594 () {
| char * s2;
| int32_t var_4h;
| int32_t var_1ch;
| int32_t var_20h;
| char * string;
| int32_t var_58h;
0x00067594 push {r4, r5, r6, lr} |
0x00067598 sub sp, sp, 0x58 |
0x0006759c mov r5, sp | r5 = sp;
0x000675a0 mov r0, r5 | r0 = r5;
0x000675a4 bl 0x1bae8 | fcn_0001bae8 (r0);
0x000675a8 add r4, sp, 0x38 | r4 += string;
0x000675ac mov r3, 0x20 | r3 = 0x20;
0x000675b0 mov r2, 0 | r2 = 0;
0x000675b4 mov r1, r3 | r1 = r3;
0x000675b8 mov r0, r4 | r0 = r4;
0x000675bc bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000675c0 ldr r1, [pc, 0xc0] | r1 = *(0x67684);
0x000675c4 mov r0, r4 | r0 = r4;
0x000675c8 add r1, pc, r1 | r1 = pc + r1;
0x000675cc bl 0x17e4c | strcpy (r0, r1)
0x000675d0 mov r0, r4 | r0 = r4;
0x000675d4 bl 0x18680 | system (r0);
0x000675d8 mov r3, 0x20 | r3 = 0x20;
0x000675dc mov r2, 0 | r2 = 0;
0x000675e0 mov r1, r3 | r1 = r3;
0x000675e4 mov r0, r4 | r0 = r4;
0x000675e8 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000675ec add r6, sp, 0x1c | r6 += var_1ch;
0x000675f0 mov r0, r6 | r0 = r6;
0x000675f4 bl 0x67478 | fcn_00067478 (r0);
0x000675f8 add r1, sp, 0x20 | r1 += var_20h;
0x000675fc add r0, sp, 4 | r0 += var_4h;
0x00067600 bl 0x1d84c | method (r0, r1);
0x00067604 mov r0, r6 | r0 = r6;
0x00067608 bl 0x1bcc4 | fcn_0001bcc4 (r0);
0x0006760c ldr r1, [pc, 0x78] | r1 = *(0x67688);
0x00067610 mov r0, r4 | r0 = r4;
0x00067614 add r1, pc, r1 | r1 = pc + r1;
0x00067618 bl 0x17e4c | strcpy (r0, r1)
0x0006761c ldr r1, [pc, 0x6c] | r1 = *(0x6768c);
0x00067620 mov r0, r4 | r0 = r4;
0x00067624 add r1, pc, r1 | r1 = pc + r1;
0x00067628 bl 0x1868c | strcat (r0, r1);
0x0006762c mov r0, r5 | r0 = r5;
0x00067630 bl 0x1bb20 | r0 = fcn_0001bb20 (r0);
0x00067634 mov r1, r0 | r1 = r0;
0x00067638 mov r0, r4 | r0 = r4;
0x0006763c bl 0x1868c | strcat (r0, r1);
0x00067640 mov r0, r4 | r0 = r4;
0x00067644 bl 0x18680 | r0 = system (r0);
0x00067648 cmp r0, 0 |
| if (r0 == 0) {
0x0006764c beq 0x67664 | goto label_0;
| }
0x00067650 bl 0xc4668 | fcn_000c4668 ();
| do {
0x00067654 mov r0, r5 | r0 = r5;
0x00067658 bl 0x1bcc4 | fcn_0001bcc4 (r0);
0x0006765c add sp, sp, 0x58 |
0x00067660 pop {r4, r5, r6, pc} |
| label_0:
0x00067664 mov r0, r5 | r0 = r5;
0x00067668 bl 0x1bb20 | fcn_0001bb20 (r0);
0x0006766c b 0x67654 |
| } 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/windows/KT-1 @ 0xba0d4 */
| #include <stdint.h>
|
; (fcn) fcn.000ba0d4 () | void fcn_000ba0d4 (int32_t arg_60h, int32_t arg1, int32_t arg2) {
| void * s;
| int32_t var_8h;
| int32_t var_16h;
| char * dest;
| int32_t var_48h;
| r0 = arg1;
| r1 = arg2;
0x000ba0d4 push {r4, r5, r6, r7, r8, lr} |
0x000ba0d8 sub sp, sp, 0x48 |
0x000ba0dc add r4, sp, 4 | r4 += s;
0x000ba0e0 mov r7, r1 | r7 = r1;
0x000ba0e4 mov r8, r2 | r8 = r2;
0x000ba0e8 mov r5, r0 | r5 = r0;
0x000ba0ec mov r2, 0x44 | r2 = 0x44;
0x000ba0f0 mov r1, 0 | r1 = 0;
0x000ba0f4 mov r0, r4 | r0 = r4;
0x000ba0f8 mov r6, r3 | r6 = r3;
0x000ba0fc bl 0x17d98 | memset (r0, r1, r2);
0x000ba100 ldr r1, [r7] | r1 = *(r7);
0x000ba104 mov r3, 2 | r3 = 2;
0x000ba108 add r0, sp, 0x38 | r0 += dest;
0x000ba10c strh r3, [sp, 4] | s = r3;
0x000ba110 str r8, [sp, 8] | var_8h = r8;
0x000ba114 bl 0x17e4c | strcpy (r0, r1)
0x000ba118 ldr r5, [r5, 0x2c] | r5 = *((r5 + 0x2c));
0x000ba11c ldr r3, [r5] | r3 = *(r5);
0x000ba120 mov r0, r5 | r0 = r5;
0x000ba124 ldr r7, [r3, 8] | r7 = *((r3 + 8));
0x000ba128 bl 0x1d5c4 | fcn_0001d5c4 ();
0x000ba12c mov r2, r4 | r2 = r4;
0x000ba130 mov r1, r0 | r1 = r0;
0x000ba134 mov r0, r5 | r0 = r5;
0x000ba138 blx r7 | uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x000ba13c ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x000ba140 add r2, sp, 0x16 | r2 += var_16h;
0x000ba144 mov r1, r3 | r1 = r3;
0x000ba148 mov r4, r0 | r4 = r0;
0x000ba14c mov r0, r6 | r0 = r6;
0x000ba150 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x000ba154 mov r0, r4 | r0 = r4;
0x000ba158 add sp, sp, 0x48 |
0x000ba15c 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/windows/KT-1 @ 0xc64d4 */
| #include <stdint.h>
|
; (fcn) fcn.000c64d4 () | void fcn_000c64d4 (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_2ch;
| int32_t var_0h_3;
| int32_t var_40h;
| int32_t var_6ch;
| int32_t var_0h_2;
| int32_t var_74h;
| int32_t var_440h;
| char * s;
| int32_t var_470h;
| char * var_2h_2;
| int32_t var_480h;
| char * var_2h;
| int32_t var_620h;
| int32_t var_4h_2;
| r0 = arg1;
0x000c64d4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000c64d8 ldr r7, [pc, 0x5c8] | r7 = *(0xc6aa4);
0x000c64dc mov r5, r0 | r5 = r0;
0x000c64e0 add r7, pc, r7 | r7 = pc + r7;
0x000c64e4 add lr, r7, 0x2a0 | lr = r7 + 0x2a0;
0x000c64e8 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000c64ec ldr r6, [pc, 0x5b8] | r6 = *(0xc6aa8);
0x000c64f0 sub sp, sp, 0x620 |
0x000c64f4 sub sp, sp, 4 |
0x000c64f8 add ip, sp, 0x40 |
0x000c64fc stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000c6500 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000c6504 add r6, pc, r6 | r6 = pc + r6;
0x000c6508 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000c650c ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000c6510 mov fp, 1 |
0x000c6514 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000c6518 ldr r3, [lr] | r3 = *(lr);
0x000c651c add lr, r7, 0x2d4 | lr = r7 + 0x2d4;
0x000c6520 str r3, [ip] | *(ip) = r3;
0x000c6524 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000c6528 add ip, sp, 0x1c |
0x000c652c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000c6530 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000c6534 mov sl, 5 | sl = 5;
0x000c6538 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000c653c ldr r3, [lr] | r3 = *(lr);
0x000c6540 str fp, [sp, 0x24] | var_24h = fp;
0x000c6544 str r3, [ip] | *(ip) = r3;
0x000c6548 ldr r3, [pc, 0x560] | r3 = *(0xc6aac);
0x000c654c str sl, [sp, 0x2c] | var_2ch = sl;
0x000c6550 ldr r4, [r6, r3] | r4 = *(0xc6aa8);
0x000c6554 mov r2, 0x14 | r2 = 0x14;
0x000c6558 str r2, [r4, 0x174] | *((r4 + 0x174)) = r2;
0x000c655c ldr r2, [pc, 0x550] | r2 = *(0xc6ab0);
0x000c6560 mov r3, 0 | r3 = 0;
0x000c6564 str fp, [r4, 0x104] | *((r4 + 0x104)) = fp;
0x000c6568 str r3, [r4, 0x318] | *((r4 + 0x318)) = r3;
0x000c656c str r3, [sp, 0x14] | var_14h = r3;
0x000c6570 str sl, [r4] | *(r4) = sl;
0x000c6574 ldr r2, [r6, r2] | r2 = *(0xc6aa8);
0x000c6578 add r8, sp, 0x20 | r8 += var_20h;
0x000c657c str r2, [r4, 0x334] | *((r4 + 0x334)) = r2;
0x000c6580 ldr r2, [pc, 0x530] | r2 = *(0xc6ab4);
0x000c6584 add sb, r5, 0x18 | sb = r5 + 0x18;
0x000c6588 ldr r2, [r6, r2] | r2 = *(0xc6aa8);
0x000c658c sub r8, r8, 4 | r8 -= var_1ch;
0x000c6590 str r2, [r4, 0x338] | *((r4 + 0x338)) = r2;
0x000c6594 ldr r2, [pc, 0x520] | r2 = *(0xc6ab8);
0x000c6598 ldr r2, [r6, r2] | r2 = *(0xc6aa8);
0x000c659c str r2, [sp, 0x6c] | var_6ch = r2;
0x000c65a0 ldr r2, [pc, 0x518] | r2 = *(0xc6abc);
0x000c65a4 ldr r3, [r6, r2] | r3 = *(0xc6aa8);
0x000c65a8 mov r0, r3 | r0 = r3;
0x000c65ac str r3, [sp, 0x10] | var_10h = r3;
0x000c65b0 bl 0x181b8 | MQTTAsync_setTraceCallback ();
0x000c65b4 mov r0, 6 | r0 = 6;
0x000c65b8 bl 0x1796c | MQTTAsync_setTraceLevel ();
0x000c65bc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000c65c0 str r8, [sp, 4] | var_4h = r8;
0x000c65c4 str r3, [sp] | *(sp) = r3;
0x000c65c8 add r2, r4, 0x298 | r2 = r4 + 0x298;
0x000c65cc mov r3, fp | r3 = fp;
0x000c65d0 add r1, r4, 0x248 | r1 = r4 + 0x248;
0x000c65d4 mov r0, sb | r0 = sb;
0x000c65d8 bl 0x17b4c | r0 = MQTTAsync_createWithOptions ();
0x000c65dc subs fp, r0, 0 |
| if (fp != r0) {
0x000c65e0 beq 0xc6618 |
0x000c65e4 ldr r0, [pc, 0x4d8] | r0 = *(0xc6ac0);
0x000c65e8 add r0, pc, r0 | r0 = pc + r0;
0x000c65ec bl 0x183e0 | r0 = basename (r0);
0x000c65f0 mov r8, r0 | r8 = r0;
0x000c65f4 mov r0, fp | r0 = fp;
0x000c65f8 bl 0x18044 | MQTTAsync_strerror ();
0x000c65fc ldr r3, [pc, 0x4c4] | r3 = *(0xc6ac4);
0x000c6600 mov r2, sl | r2 = sl;
0x000c6604 add r3, pc, r3 | r3 = pc + r3;
0x000c6608 add r1, r7, 0x2f8 | r1 = r7 + 0x2f8;
0x000c660c str r0, [sp] | *(sp) = r0;
0x000c6610 mov r0, r8 | r0 = r8;
0x000c6614 bl 0xc3f94 | fcn_000c3f94 (r0, r1, r2, r3);
| }
0x000c6618 ldr r3, [pc, 0x4ac] | r3 = *(0xc6ac8);
0x000c661c ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x000c6620 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000c6624 mov r0, r1 | r0 = r1;
0x000c6628 str r3, [sp, 0x10] | var_10h = r3;
0x000c662c ldr r3, [pc, 0x49c] | r3 = *(0xc6acc);
0x000c6630 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000c6634 str r3, [sp, 0x14] | var_14h = r3;
0x000c6638 mov r3, 0 | r3 = 0;
0x000c663c str r3, [sp] | *(sp) = r3;
0x000c6640 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000c6644 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000c6648 bl 0x17f30 | r0 = MQTTAsync_setCallbacks ();
0x000c664c subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x000c6650 beq 0xc6690 |
0x000c6654 ldr r0, [pc, 0x478] | r0 = *(0xc6ad0);
0x000c6658 add r0, pc, r0 | r0 = pc + r0;
0x000c665c bl 0x183e0 | r0 = basename (r0);
0x000c6660 mov r7, r0 | r7 = r0;
0x000c6664 mov r0, r8 | r0 = r8;
0x000c6668 bl 0x18044 | MQTTAsync_strerror ();
0x000c666c ldr r1, [pc, 0x464] |
0x000c6670 ldr r3, [pc, 0x464] | r3 = *(0xc6ad8);
0x000c6674 add r1, pc, r1 | r1 = pc + r1;
0x000c6678 add r3, pc, r3 | r3 = pc + r3;
0x000c667c mov r2, 5 | r2 = 5;
0x000c6680 add r1, r1, 0x2f8 | r1 = 0xc6dcc;
0x000c6684 str r0, [sp] | *(sp) = r0;
0x000c6688 mov r0, r7 | r0 = r7;
0x000c668c bl 0xc3f94 | fcn_000c3f94 (r0, r1, r2, r3);
| }
0x000c6690 add r7, r4, 0x10c | r7 = r4 + 0x10c;
0x000c6694 mov r0, r7 | r0 = r7;
0x000c6698 bl 0x1772c | strlen (r0);
0x000c669c add r8, r4, 0x14c | r8 = r4 + 0x14c;
0x000c66a0 mov r2, 0 | r2 = 0;
0x000c66a4 add sl, r4, 0xc4 | sl = r4 + 0xc4;
0x000c66a8 mov r3, r0 | r3 = r0;
0x000c66ac mov r1, r0 | r1 = r0;
0x000c66b0 mov r0, r7 | r0 = r7;
0x000c66b4 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000c66b8 mov r0, r8 | r0 = r8;
0x000c66bc bl 0x1772c | strlen (r0);
0x000c66c0 mov r2, 0 | r2 = 0;
0x000c66c4 mov r3, r0 | r3 = r0;
0x000c66c8 mov r1, r0 | r1 = r0;
0x000c66cc mov r0, r8 | r0 = r8;
0x000c66d0 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000c66d4 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000c66d8 mov r2, 0 | r2 = 0;
0x000c66dc mov r1, r3 | r1 = r3;
0x000c66e0 ldr r0, [r5] | r0 = *(r5);
0x000c66e4 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000c66e8 mov r0, sl | r0 = sl;
0x000c66ec bl 0x1772c | strlen (r0);
0x000c66f0 mov r2, 0 | r2 = 0;
0x000c66f4 mov r3, r0 | r3 = r0;
0x000c66f8 mov r1, r0 | r1 = r0;
0x000c66fc mov r0, sl | r0 = sl;
0x000c6700 add sl, r4, 0x178 | sl = r4 + 0x178;
0x000c6704 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000c6708 mov r0, sl | r0 = sl;
0x000c670c bl 0x1772c | strlen (r0);
0x000c6710 mov r2, 0 | r2 = 0;
0x000c6714 mov r3, r0 | r3 = r0;
0x000c6718 mov r1, r0 | r1 = r0;
0x000c671c mov r0, sl | r0 = sl;
0x000c6720 bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000c6724 mov r0, r5 | r0 = r5;
0x000c6728 bl 0xc5a5c | r0 = fcn_000c5a5c ();
0x000c672c cmp r0, 0 |
| if (r0 != 0) {
0x000c6730 bne 0xc681c | goto label_2;
| }
0x000c6734 ldr r2, [pc, 0x3a4] | r2 = *(0xc6adc);
0x000c6738 mov r3, 0x1f | r3 = 0x1f;
0x000c673c mov r1, r3 | r1 = r3;
0x000c6740 add r2, pc, r2 | r2 = pc + r2;
0x000c6744 add sl, r4, 0x298 | sl = r4 + 0x298;
0x000c6748 mov r0, r7 | r0 = r7;
0x000c674c bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x000c6750 mov r0, sl | r0 = sl;
0x000c6754 bl 0x1772c | strlen (r0);
0x000c6758 mov r2, sl | r2 = sl;
0x000c675c mov r3, r0 | r3 = r0;
0x000c6760 mov r1, r0 | r1 = r0;
0x000c6764 mov r0, r8 | r0 = r8;
0x000c6768 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x000c676c ldr r0, [pc, 0x370] | r0 = *(0xc6ae0);
0x000c6770 add r0, pc, r0 | r0 = pc + r0;
0x000c6774 bl 0x183e0 | basename (r0);
0x000c6778 add r3, r4, 0x248 | r3 = r4 + 0x248;
0x000c677c ldr r1, [pc, 0x364] |
0x000c6780 str r3, [sp] | *(sp) = r3;
0x000c6784 ldr r3, [pc, 0x360] | r3 = *(0xc6ae8);
0x000c6788 add r1, pc, r1 | r1 = pc + r1;
0x000c678c stmib sp, {r7, r8} | __asm ("stmib sp, {r7, r8}");
0x000c6790 add r3, pc, r3 | r3 = pc + r3;
0x000c6794 mov r2, 5 | r2 = 5;
0x000c6798 add r1, r1, 0x2f8 | r1 = 0xc6ddc;
0x000c679c bl 0xc3f94 | fcn_000c3f94 (r0, r1, r2, r3);
0x000c67a0 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000c67a4 bl 0xc5fec | fcn_000c5fec (r0);
| do {
0x000c67a8 ldr r3, [r4, 0x318] | r3 = *((r4 + 0x318));
0x000c67ac cmp r3, 1 |
| if (r3 == 1) {
0x000c67b0 beq 0xc67c0 | goto label_3;
| }
0x000c67b4 mov r0, 0x32 | r0 = 0x32;
0x000c67b8 bl 0xc45f0 | fcn_000c45f0 (r0);
0x000c67bc b 0xc67a8 |
| } while (1);
| label_3:
0x000c67c0 add r1, sp, 0x40 | r1 += var_40h;
0x000c67c4 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000c67c8 bl 0x180b0 | r0 = MQTTAsync_disconnect ();
0x000c67cc cmp r0, 0 |
| if (r0 == 0) {
0x000c67d0 beq 0xc67fc | goto label_4;
| }
0x000c67d4 ldr r0, [pc, 0x314] | r0 = *(0xc6aec);
0x000c67d8 add r0, pc, r0 | r0 = pc + r0;
0x000c67dc bl 0x183e0 | basename (r0);
0x000c67e0 ldr r1, [pc, 0x30c] |
0x000c67e4 ldr r3, [pc, 0x30c] | r3 = *(0xc6af4);
0x000c67e8 add r1, pc, r1 | r1 = pc + r1;
0x000c67ec add r3, pc, r3 | r3 = pc + r3;
0x000c67f0 mov r2, 5 | r2 = 5;
0x000c67f4 add r1, r1, 0x2f8 | r1 = 0xc6de8;
0x000c67f8 bl 0xc3f94 | fcn_000c3f94 (r0, r1, r2, r3);
| do {
| label_4:
0x000c67fc ldr r3, [r4, 0x318] | r3 = *((r4 + 0x318));
0x000c6800 cmp r3, 1 |
| if (r3 != 1) {
0x000c6804 bne 0xc6814 | goto label_5;
| }
0x000c6808 mov r0, 0x32 | r0 = 0x32;
0x000c680c bl 0xc45f0 | fcn_000c45f0 (r0);
0x000c6810 b 0xc67fc |
| } while (1);
| label_5:
0x000c6814 mov r0, r5 | r0 = r5;
0x000c6818 bl 0xc5810 | fcn_000c5810 ();
| label_2:
0x000c681c mov r0, r5 | r0 = r5;
0x000c6820 bl 0xc5a5c | r0 = fcn_000c5a5c ();
0x000c6824 cmp r0, 0 |
| if (r0 == 0) {
0x000c6828 beq 0xc6a94 | goto label_6;
| }
0x000c682c ldr r3, [pc, 0x2c8] |
0x000c6830 add r8, r4, 0x14c | r8 = r4 + 0x14c;
0x000c6834 ldr r7, [r6, r3] | r7 = *((r6 + r3));
0x000c6838 add r6, sp, 0x74 | r6 += var_74h;
0x000c683c ldr r3, [r7] | r3 = *(r7);
0x000c6840 add sb, r6, 0x440 | sb += var_440h;
0x000c6844 add r3, r3, 0x43000 | r3 = 0x109af8;
0x000c6848 mov r1, r6 | r1 = r6;
0x000c684c ldr r0, [r3, 0x900] | r0 = *(0x10a3f8);
0x000c6850 bl 0x66cf0 | fcn_00066cf0 (r0, r1);
0x000c6854 add sb, sb, 0xa | sb += s;
0x000c6858 mov r0, sb | r0 = sb;
0x000c685c bl 0x1772c | strlen (r0);
0x000c6860 add sl, r6, 0x480 | sl += var_480h;
0x000c6864 mov r2, sb | r2 = sb;
0x000c6868 add sl, sl, 2 | sl += var_2h;
0x000c686c add sb, r4, 0x238 | sb = r4 + 0x238;
0x000c6870 add r6, r6, 0x470 | r6 += var_470h;
0x000c6874 add r6, r6, 2 | r6 += var_2h_2;
0x000c6878 add fp, r4, 0x10c |
0x000c687c mov r3, r0 | r3 = r0;
0x000c6880 mov r1, r0 | r1 = r0;
0x000c6884 mov r0, r8 | r0 = r8;
0x000c6888 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x000c688c mov r0, sl | r0 = sl;
0x000c6890 bl 0x1772c | strlen (r0);
0x000c6894 mov r2, sl | r2 = sl;
0x000c6898 ldr sl, [pc, 0x260] | sl = *(0xc6afc);
0x000c689c add sl, pc, sl | sl = pc + sl;
0x000c68a0 mov r3, r0 | r3 = r0;
0x000c68a4 mov r1, r0 | r1 = r0;
0x000c68a8 mov r0, sb | r0 = sb;
0x000c68ac bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x000c68b0 mov r0, r6 | r0 = r6;
0x000c68b4 bl 0x1772c | strlen (r0);
0x000c68b8 add ip, r4, 0x240 |
0x000c68bc mov r2, r6 | r2 = r6;
0x000c68c0 mov r6, ip | r6 = ip;
0x000c68c4 mov r3, r0 | r3 = r0;
0x000c68c8 mov r1, r0 | r1 = r0;
0x000c68cc mov r0, ip | r0 = ip;
0x000c68d0 bl 0xb9ec8 | fcn_000b9ec8 (r0, r1);
0x000c68d4 mov r0, fp | r0 = fp;
0x000c68d8 bl 0x1772c | strlen (r0);
0x000c68dc mov r2, 0 | r2 = 0;
0x000c68e0 mov r3, r0 | r3 = r0;
0x000c68e4 mov r1, r0 | r1 = r0;
0x000c68e8 mov r0, fp | r0 = fp;
0x000c68ec bl 0xb9f54 | fcn_000b9f54 (r0, r1);
0x000c68f0 ldr r3, [pc, 0x20c] | r3 = *(0xc6b00);
0x000c68f4 mov r2, sl | r2 = sl;
0x000c68f8 add r3, pc, r3 | r3 = pc + r3;
0x000c68fc mov r1, 0x40 | r1 = 0x40;
0x000c6900 str r6, [sp] | *(sp) = r6;
0x000c6904 add r0, r4, 0xc4 | r0 = r4 + 0xc4;
0x000c6908 bl 0x17b1c | snprintf (r0, r1, r2, r3);
0x000c690c ldr r3, [pc, 0x1f4] | r3 = *(0xc6b04);
0x000c6910 mov r2, sl | r2 = sl;
0x000c6914 add r3, pc, r3 | r3 = pc + r3;
0x000c6918 mov r1, 0x40 | r1 = 0x40;
0x000c691c str r6, [sp] | *(sp) = r6;
0x000c6920 add r0, r4, 0x178 | r0 = r4 + 0x178;
0x000c6924 bl 0x17b1c | snprintf (r0, r1, r2, r3);
0x000c6928 ldr r1, [pc, 0x1dc] | r1 = *(0xc6b08);
0x000c692c add r0, r4, 0x1b8 | r0 = r4 + 0x1b8;
0x000c6930 add r1, pc, r1 | r1 = pc + r1;
0x000c6934 bl 0x17e4c | strcpy (r0, r1)
0x000c6938 ldr r2, [pc, 0x1d0] | r2 = *(0xc6b0c);
0x000c693c mov r3, sb | r3 = sb;
0x000c6940 add r2, pc, r2 | r2 = pc + r2;
0x000c6944 mov r1, 0x40 | r1 = 0x40;
0x000c6948 str r6, [sp] | *(sp) = r6;
0x000c694c mov r0, fp | r0 = fp;
0x000c6950 bl 0x17b1c | snprintf (r0, r1, r2, r3);
0x000c6954 ldr r3, [pc, 0x1b8] | r3 = *(0xc6b10);
0x000c6958 mov r2, sl | r2 = sl;
0x000c695c add r3, pc, r3 | r3 = pc + r3;
0x000c6960 mov r1, 0x40 | r1 = 0x40;
0x000c6964 str r6, [sp] | *(sp) = r6;
0x000c6968 add r0, r4, 0x84 | r0 = r4 + 0x84;
0x000c696c bl 0x17b1c | snprintf (r0, r1, r2, r3);
0x000c6970 ldr r3, [pc, 0x1a0] | r3 = *(0xc6b14);
0x000c6974 mov r2, sl | r2 = sl;
0x000c6978 add r3, pc, r3 | r3 = pc + r3;
0x000c697c mov r1, 0x40 | r1 = 0x40;
0x000c6980 str r6, [sp] | *(sp) = r6;
0x000c6984 add r0, r4, 4 | r0 = r4 + 4;
0x000c6988 bl 0x17b1c | snprintf (r0, r1, r2, r3);
0x000c698c ldr r3, [pc, 0x188] | r3 = *(0xc6b18);
0x000c6990 mov r2, sl | r2 = sl;
0x000c6994 add r3, pc, r3 | r3 = pc + r3;
0x000c6998 mov r1, 0x40 | r1 = 0x40;
0x000c699c str r6, [sp] | *(sp) = r6;
0x000c69a0 add r0, r4, 0x44 | r0 = r4 + 0x44;
0x000c69a4 bl 0x17b1c | snprintf (r0, r1, r2, r3);
0x000c69a8 ldr r0, [pc, 0x170] | r0 = *(0xc6b1c);
0x000c69ac add r0, pc, r0 | r0 = pc + r0;
0x000c69b0 bl 0x183e0 | basename (r0);
0x000c69b4 add r3, r4, 0x248 | r3 = r4 + 0x248;
0x000c69b8 ldr r1, [pc, 0x164] |
0x000c69bc str r3, [sp] | *(sp) = r3;
0x000c69c0 ldr r3, [pc, 0x160] | r3 = *(0xc6b24);
0x000c69c4 add r1, pc, r1 | r1 = pc + r1;
0x000c69c8 str r8, [sp, 8] | var_8h = r8;
0x000c69cc str fp, [sp, 4] | var_4h = fp;
0x000c69d0 add r3, pc, r3 | r3 = pc + r3;
0x000c69d4 mov r2, 5 | r2 = 5;
0x000c69d8 add r1, r1, 0x2f8 | r1 = 0xc6e18;
0x000c69dc bl 0xc3f94 | fcn_000c3f94 (r0, r1, r2, r3);
0x000c69e0 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000c69e4 bl 0xc5fec | fcn_000c5fec (r0);
| do {
0x000c69e8 ldr r3, [r4, 0x318] | r3 = *((r4 + 0x318));
0x000c69ec cmp r3, 1 |
| if (r3 == 1) {
0x000c69f0 beq 0xc6a48 | goto label_7;
| }
0x000c69f4 mov r0, 0x32 | r0 = 0x32;
0x000c69f8 bl 0xc45f0 | fcn_000c45f0 (r0);
0x000c69fc b 0xc69e8 |
| } while (1);
| do {
0x000c6a00 ldr r3, [r7] | r3 = *(r7);
0x000c6a04 ldrb r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x000c6a08 cmp r2, 0 |
| if (r2 == 0) {
0x000c6a0c beq 0xc6a74 | goto label_8;
| }
0x000c6a10 add r3, r3, 0x42000 | r3 += 0x42000;
0x000c6a14 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x000c6a18 ldr r1, [r5] | r1 = *(r5);
0x000c6a1c ldr r0, [r3, 0xf4c] | r0 = *((r3 + 0xf4c));
0x000c6a20 bl 0x5def0 | r0 = fcn_0005def0 (r0, r1);
0x000c6a24 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 != r0) {
0x000c6a28 bne 0xc6a68 | goto label_1;
| }
0x000c6a2c ldr r0, [r7] | r0 = *(r7);
0x000c6a30 mov r3, 0x14 | r3 = 0x14;
0x000c6a34 mov r1, r3 | r1 = r3;
0x000c6a38 add r0, r0, 0x2c | r0 += 0x2c;
0x000c6a3c bl 0xb9f54 | fcn_000b9f54 (r0, r1);
| label_0:
0x000c6a40 mov r0, 0x32 | r0 = 0x32;
0x000c6a44 bl 0xc45f0 | fcn_000c45f0 (r0);
| label_7:
0x000c6a48 ldr r3, [r7] | r3 = *(r7);
0x000c6a4c ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x000c6a50 add r3, r3, 0x42000 | r3 += 0x42000;
0x000c6a54 ldr r1, [r5] | r1 = *(r5);
0x000c6a58 ldr r0, [r3, 0xf4c] | r0 = *((r3 + 0xf4c));
0x000c6a5c bl 0x5d694 | r0 = fcn_0005d694 (r0, r1);
0x000c6a60 cmp r0, 0 |
0x000c6a64 beq 0xc6a00 |
| } while (r0 == 0);
| label_1:
0x000c6a68 mov r0, r5 | r0 = r5;
0x000c6a6c bl 0xc55dc | fcn_000c55dc (r0, r1);
0x000c6a70 b 0xc6a40 | goto label_0;
| label_8:
0x000c6a74 ldrb r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x000c6a78 cmp r2, 0 |
| if (r2 == 0) {
0x000c6a7c beq 0xc6a40 | goto label_0;
| }
0x000c6a80 add r3, r3, 0x42000 | r3 += 0x42000;
0x000c6a84 ldr r1, [r5] | r1 = *(r5);
0x000c6a88 ldr r0, [r3, 0xf4c] | r0 = *((r3 + 0xf4c));
0x000c6a8c bl 0x55b90 | fcn_00055b90 (r0);
0x000c6a90 b 0xc6a68 | goto label_1;
| label_6:
0x000c6a94 mov r0, sb | r0 = sb;
0x000c6a98 bl 0x18698 | MQTTAsync_destroy ();
0x000c6a9c add sp, sp, 0x620 |
0x000c6aa0 add sp, sp, 4 |
0x000c6aa4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
[*] Function strcpy used 12 times KT-1