#include #include #include #include "dat.h" #include "fns.h" #include "ds10.h" uint32_t tmp32; uint16_t tmp16; uint8_t tmp8; uint32_t *MEM32(uint32_t addr) { return vaddr(addr, 4, 0); } uint16_t *MEM16(uint32_t addr) { return vaddr(addr, 2, 0); } uint8_t *MEM8(uint32_t addr) { return vaddr(addr, 1, 0); } void execute(uint32_t in_R15, uint32_t in_R14, uint32_t in_R13, uint32_t in_R0, uint32_t in_R1, uint32_t in_R2, uint32_t in_R3) { uint32_t R0 = 0, R1 = 0, R2 = 0, R3 = 0; uint32_t R4 = 0, R5 = 0, R6 = 0, R7 = 0; uint32_t R8 = 0, R9 = 0, R10 = 0, R11 = 0; uint32_t R12 = 0, R13 = 0, R14 = 0, R15 = 0; uint64_t tmp64; uint32_t tmpA, tmpB; uint32_t C = 0, N = 0, Z = 0, V = 0; R15 = in_R15; R14 = in_R14; R13 = in_R13; R0 = in_R0; R1 = in_R1; R2 = in_R2; R3 = in_R3; dispatch: switch (R15) { // processing 02074720 // 02074720 e92d4ff8 stmdb r13!, { r3-r11, r14 } // adding link: 02074720 -> 02074724 // processing 02074724 // 02074724 e24dd068 sub r13, r13, #0x68 // adding link: 02074724 -> 02074728 // processing 02074728 // 02074728 e5901000 ldr r1, [r0] // adding link: 02074728 -> 0207472c // processing 0207472c // 0207472c e1a04000 mov r4, r0 // adding link: 0207472c -> 02074730 // processing 02074730 // 02074730 e5911028 ldr r1, [r1, #0x28] // adding link: 02074730 -> 02074734 // processing 02074734 // 02074734 e3a05000 mov r5, #0x0 // adding link: 02074734 -> 02074738 // processing 02074738 // 02074738 e12fff31 blx r1 // adding jump: 02074738 -> 0207546c (sub=1) // adding link: 02074738 -> 0207473c // processing 0207546c // 0207546c e92d4ff8 stmdb r13!, { r3-r11, r14 } // adding link: 0207546c -> 02075470 // processing 0207473c // 0207473c e5940034 ldr r0, [r4, #0x34] // adding link: 0207473c -> 02074740 // processing 02075470 // 02075470 e1a09000 mov r9, r0 // adding link: 02075470 -> 02075474 // processing 02074740 // 02074740 e594101c ldr r1, [r4, #0x1c] // adding link: 02074740 -> 02074744 // processing 02075474 // 02075474 e5d97008 ldrb r7, [r9, #0x8] // adding link: 02075474 -> 02075478 // processing 02074744 // 02074744 e5903014 ldr r3, [r0, #0x14] // adding link: 02074744 -> 02074748 // processing 02075478 // 02075478 e3a05000 mov r5, #0x0 // adding link: 02075478 -> 0207547c // processing 02074748 // 02074748 e5902018 ldr r2, [r0, #0x18] // adding link: 02074748 -> 0207474c // processing 0207547c // 0207547c e3570000 cmp r7, #0x0 // adding link: 0207547c -> 02075480 // processing 0207474c // 0207474c e5911000 ldr r1, [r1] // adding link: 0207474c -> 02074750 // processing 02075480 // 02075480 01a00005 moveq r0, r5 // adding link: 02075480 -> 02075484 // processing 02074750 // 02074750 e0433002 sub r3, r3, r2 // adding link: 02074750 -> 02074754 // processing 02075484 // 02075484 08bd8ff8 ldmiaeq r13!, { r3-r11, r15 } // return // adding link: 02075484 -> 02075488 // processing 02074754 // 02074754 e5803014 str r3, [r0, #0x14] // adding link: 02074754 -> 02074758 // processing 02075488 // 02075488 e3570000 cmp r7, #0x0 // adding link: 02075488 -> 0207548c // processing 02074758 // 02074758 e58d1000 str r1, [r13] // adding link: 02074758 -> 0207475c // processing 0207548c // 0207548c e1a08005 mov r8, r5 // adding link: 0207548c -> 02075490 // processing 0207475c // 0207475c e590101c ldr r1, [r0, #0x1c] // adding link: 0207475c -> 02074760 // processing 02075490 // 02075490 da000067 ble 0x2075634 // adding jump: 02075490 -> 02075634 (sub=0) // adding link: 02075490 -> 02075494 // processing 02074760 // 02074760 e5902018 ldr r2, [r0, #0x18] // adding link: 02074760 -> 02074764 // processing 02075634 // 02075634 e3a00000 mov r0, #0x0 // adding link: 02075634 -> 02075638 // processing 02075494 // 02075494 e3a0b003 mov r11, #0x3 // adding link: 02075494 -> 02075498 // processing 02074764 // 02074764 e1a033c3 mov r3, r3, asr #0x7 // adding link: 02074764 -> 02074768 // processing 02075638 // 02075638 e5c90008 strb r0, [r9, #0x8] // adding link: 02075638 -> 0207563c // processing 02075498 // 02075498 e3e04102 mvn r4, #0x80000000 // adding link: 02075498 -> 0207549c // processing 02074768 // 02074768 e0812002 add r2, r1, r2 // adding link: 02074768 -> 0207476c // processing 0207563c // 0207563c e8bd8ff8 ldmia r13!, { r3-r11, r15 } // return // processing 0207549c // 0207549c e1a0600b mov r6, r11 // adding link: 0207549c -> 020754a0 // processing 0207476c // 0207476c e580201c str r2, [r0, #0x1c] // adding link: 0207476c -> 02074770 // processing 020754a0 // 020754a0 e3a0a001 mov r10, #0x1 // adding link: 020754a0 -> 020754a4 // processing 02074770 // 02074770 e5907024 ldr r7, [r0, #0x24] // adding link: 02074770 -> 02074774 // processing 020754a4 // 020754a4 e5990004 ldr r0, [r9, #0x4] // adding link: 020754a4 -> 020754a8 // processing 02074774 // 02074774 e08323c2 add r2, r3, r2, asr #0x7 // adding link: 02074774 -> 02074778 // processing 020754a8 // 020754a8 e0801188 add r1, r0, r8, lsl #0x3 // adding link: 020754a8 -> 020754ac // processing 02074778 // 02074778 e3170101 tst r7, #0x40000000 // adding link: 02074778 -> 0207477c // processing 020754ac // 020754ac e7d00188 ldrb r0, [r0, r8, lsl #0x3] // adding link: 020754ac -> 020754b0 // processing 0207477c // 0207477c 059f6cac ldreq r6, [r15, #0xcac] ; 0x2075430 // adding link: 0207477c -> 02074780 // processing 020754b0 // 020754b0 e3500015 cmp r0, #0x15 // adding link: 020754b0 -> 020754b4 // processing 02074780 // 02074780 00276006 eoreq r6, r7, r6 // adding link: 02074780 -> 02074784 // processing 020754b4 // 020754b4 ca00000c bgt 0x20754ec // adding jump: 020754b4 -> 020754ec (sub=0) // adding link: 020754b4 -> 020754b8 // processing 02074784 // 02074784 01a06086 moveq r6, r6, lsl #0x1 // adding link: 02074784 -> 02074788 // processing 020754ec // 020754ec e3500018 cmp r0, #0x18 // adding link: 020754ec -> 020754f0 // processing 020754b8 // 020754b8 aa00005a bge 0x2075628 // adding jump: 020754b8 -> 02075628 (sub=0) // adding link: 020754b8 -> 020754bc // processing 02074788 // 02074788 03866001 orreq r6, r6, #0x1 // adding link: 02074788 -> 0207478c // processing 020754f0 // 020754f0 ca000001 bgt 0x20754fc // adding jump: 020754f0 -> 020754fc (sub=0) // adding link: 020754f0 -> 020754f4 // processing 02075628 // 02075628 e2888001 add r8, r8, #0x1 // adding link: 02075628 -> 0207562c // processing 020754bc // 020754bc e3500005 cmp r0, #0x5 // adding link: 020754bc -> 020754c0 // processing 0207478c // 0207478c 11a06087 movne r6, r7, lsl #0x1 // adding link: 0207478c -> 02074790 // processing 020754fc // 020754fc e2400019 sub r0, r0, #0x19 // adding link: 020754fc -> 02075500 // processing 020754f4 // 020754f4 0a00002f beq 0x20755b8 // adding jump: 020754f4 -> 020755b8 (sub=0) // adding link: 020754f4 -> 020754f8 // processing 0207562c // 0207562c e1580007 cmp r8, r7 // adding link: 0207562c -> 02075630 // processing 020754c0 // 020754c0 ca000058 bgt 0x2075628 // adding jump: 020754c0 -> 02075628 (sub=0) // adding link: 020754c0 -> 020754c4 // processing 02074790 // 02074790 e5806024 str r6, [r0, #0x24] // adding link: 02074790 -> 02074794 // processing 02075500 // 02075500 e3500005 cmp r0, #0x5 // adding link: 02075500 -> 02075504 // processing 020755b8 // 020755b8 e5990034 ldr r0, [r9, #0x34] // adding link: 020755b8 -> 020755bc // processing 020754f8 // 020754f8 ea00004a b 0x2075628 // adding jump: 020754f8 -> 02075628 (sub=0) // processing 02075630 // 02075630 baffff9b blt 0x20754a4 // adding jump: 02075630 -> 020754a4 (sub=0) // adding link: 02075630 -> 02075634 // processing 020754c4 // 020754c4 e3500000 cmp r0, #0x0 // adding link: 020754c4 -> 020754c8 // processing 02074794 // 02074794 e590601c ldr r6, [r0, #0x1c] // adding link: 02074794 -> 02074798 // processing 02075504 // 02075504 908ff100 addls r15, r15, r0, lsl #0x2 // foudn addls sha=2 rm=0 // target=02075628 // adding jump: 02075504 -> 02075628 (sub=0) // target=02075628 // adding jump: 02075504 -> 02075628 (sub=0) // target=02075628 // adding jump: 02075504 -> 02075628 (sub=0) // target=02075628 // adding jump: 02075504 -> 02075628 (sub=0) // target=020755e4 // adding jump: 02075504 -> 020755e4 (sub=0) // target=020755d4 // adding jump: 02075504 -> 020755d4 (sub=0) // target=02075608 // adding jump: 02075504 -> 02075608 (sub=0) // processing 020755bc // 020755bc e5804014 str r4, [r0, #0x14] // adding link: 020755bc -> 020755c0 // processing 020754c8 // 020754c8 a08ff100 addge r15, r15, r0, lsl #0x2 // foudn addls sha=2 rm=0 // target=02075628 // adding jump: 020754c8 -> 02075628 (sub=0) // target=02075628 // adding jump: 020754c8 -> 02075628 (sub=0) // target=02075524 // adding jump: 020754c8 -> 02075524 (sub=0) // target=02075534 // adding jump: 020754c8 -> 02075534 (sub=0) // target=02075628 // adding jump: 020754c8 -> 02075628 (sub=0) // target=02075588 // adding jump: 020754c8 -> 02075588 (sub=0) // target=020755a0 // adding jump: 020754c8 -> 020755a0 (sub=0) // target=02075628 // adding jump: 020754c8 -> 02075628 (sub=0) // processing 02074798 // 02074798 e0211006 eor r1, r1, r6 // adding link: 02074798 -> 0207479c // processing 020755e4 // 020755e4 e1d905b0 ldrh r0, [r9, #0x50] // adding link: 020755e4 -> 020755e8 // processing 020755d4 // 020755d4 e3a00001 mov r0, #0x1 // adding link: 020755d4 -> 020755d8 // processing 02075608 // 02075608 e5990034 ldr r0, [r9, #0x34] // adding link: 02075608 -> 0207560c // processing 020755c0 // 020755c0 e580501c str r5, [r0, #0x1c] // adding link: 020755c0 -> 020755c4 // processing 02075524 // 02075524 e5990030 ldr r0, [r9, #0x30] // adding link: 02075524 -> 02075528 // processing 02075534 // 02075534 e1d110d4 ldrsb r1, [r1, #0x4] // adding link: 02075534 -> 02075538 // processing 02075588 // 02075588 e5912004 ldr r2, [r1, #0x4] // adding link: 02075588 -> 0207558c // processing 020755a0 // 020755a0 e5991030 ldr r1, [r9, #0x30] // adding link: 020755a0 -> 020755a4 // processing 0207479c // 0207479c e1b01fc1 movs r1, r1, asr #0x1f // adding link: 0207479c -> 020747a0 // processing 020755e8 // 020755e8 e3500000 cmp r0, #0x0 // adding link: 020755e8 -> 020755ec // processing 020755d8 // 020755d8 e1c905b0 strh r0, [r9, #0x50] // adding link: 020755d8 -> 020755dc // processing 0207560c // 0207560c e5804014 str r4, [r0, #0x14] // adding link: 0207560c -> 02075610 // processing 020755c4 // 020755c4 e5990030 ldr r0, [r9, #0x30] // adding link: 020755c4 -> 020755c8 // processing 02075528 // 02075528 e5c06004 strb r6, [r0, #0x4] // adding link: 02075528 -> 0207552c // processing 02075538 // 02075538 e599003c ldr r0, [r9, #0x3c] // adding link: 02075538 -> 0207553c // processing 0207558c // 0207558c e5990034 ldr r0, [r9, #0x34] // adding link: 0207558c -> 02075590 // processing 020755a4 // 020755a4 e3a00003 mov r0, #0x3 // adding link: 020755a4 -> 020755a8 // processing 020747a0 // 020747a0 15901024 ldrne r1, [r0, #0x24] // adding link: 020747a0 -> 020747a4 // processing 020755ec // 020755ec 15991034 ldrne r1, [r9, #0x34] // adding link: 020755ec -> 020755f0 // processing 020755dc // 020755dc e1c905b2 strh r0, [r9, #0x52] // adding link: 020755dc -> 020755e0 // processing 02075610 // 02075610 e580501c str r5, [r0, #0x1c] // adding link: 02075610 -> 02075614 // processing 020755c8 // 020755c8 e580500c str r5, [r0, #0xc] // adding link: 020755c8 -> 020755cc // processing 0207552c // 0207552c e5c0a005 strb r10, [r0, #0x5] // adding link: 0207552c -> 02075530 // processing 0207553c // 0207553c e1a02005 mov r2, r5 // adding link: 0207553c -> 02075540 // processing 02075590 // 02075590 e589202c str r2, [r9, #0x2c] // adding link: 02075590 -> 02075594 // processing 020755a8 // 020755a8 e5c10004 strb r0, [r1, #0x4] // adding link: 020755a8 -> 020755ac // processing 020747a4 // 020747a4 e3e064ff mvn r6, #0xff000000 // adding link: 020747a4 -> 020747a8 // processing 020755f0 // 020755f0 11c955b0 strhne r5, [r9, #0x50] // adding link: 020755f0 -> 020755f4 // processing 020755e0 // 020755e0 ea000010 b 0x2075628 // adding jump: 020755e0 -> 02075628 (sub=0) // processing 02075614 // 02075614 e5990030 ldr r0, [r9, #0x30] // adding link: 02075614 -> 02075618 // processing 020755cc // 020755cc e5805008 str r5, [r0, #0x8] // adding link: 020755cc -> 020755d0 // processing 02075530 // 02075530 ea00003c b 0x2075628 // adding jump: 02075530 -> 02075628 (sub=0) // processing 02075540 // 02075540 ebfff299 bl 0x2071fac // adding jump: 02075540 -> 02071fac (sub=1) // adding link: 02075540 -> 02075544 // processing 02075594 // 02075594 e5911004 ldr r1, [r1, #0x4] // adding link: 02075594 -> 02075598 // processing 020755ac // 020755ac e3a00001 mov r0, #0x1 // adding link: 020755ac -> 020755b0 // processing 020747a8 // 020747a8 11a013c1 movne r1, r1, asr #0x7 // adding link: 020747a8 -> 020747ac // processing 020755f4 // 020755f4 15d10028 ldrbne r0, [r1, #0x28] // adding link: 020755f4 -> 020755f8 // processing 02075618 // 02075618 e580500c str r5, [r0, #0xc] // adding link: 02075618 -> 0207561c // processing 020755d0 // 020755d0 ea000014 b 0x2075628 // adding jump: 020755d0 -> 02075628 (sub=0) // processing 02071fac // 02071fac e5900018 ldr r0, [r0, #0x18] // adding link: 02071fac -> 02071fb0 // processing 02075544 // 02075544 e1d905b2 ldrh r0, [r9, #0x52] // adding link: 02075544 -> 02075548 // processing 02075598 // 02075598 eb00014d bl 0x2075ad4 // adding jump: 02075598 -> 02075ad4 (sub=1) // adding link: 02075598 -> 0207559c // processing 020755b0 // 020755b0 e5c10005 strb r0, [r1, #0x5] // adding link: 020755b0 -> 020755b4 // processing 020747ac // 020747ac 15801000 strne r1, [r0] // adding link: 020747ac -> 020747b0 // processing 020755f8 // 020755f8 13500000 cmpne r0, #0x0 // adding link: 020755f8 -> 020755fc // processing 0207561c // 0207561c e5805008 str r5, [r0, #0x8] // adding link: 0207561c -> 02075620 // processing 02071fb0 // 02071fb0 e59fc000 ldr r12, [r15] ; 0x2071fb8 // adding link: 02071fb0 -> 02071fb4 // processing 02075548 // 02075548 e3500000 cmp r0, #0x0 // adding link: 02075548 -> 0207554c // processing 02075ad4 // 02075ad4 e580102c str r1, [r0, #0x2c] // adding link: 02075ad4 -> 02075ad8 // processing 0207559c // 0207559c ea000021 b 0x2075628 // adding jump: 0207559c -> 02075628 (sub=0) // processing 020755b4 // 020755b4 ea00001b b 0x2075628 // adding jump: 020755b4 -> 02075628 (sub=0) // processing 020747b0 // 020747b0 e1a01003 mov r1, r3 // adding link: 020747b0 -> 020747b4 // processing 020755fc // 020755fc 15814014 strne r4, [r1, #0x14] // adding link: 020755fc -> 02075600 // processing 02075620 // 02075620 e5990040 ldr r0, [r9, #0x40] // adding link: 02075620 -> 02075624 // processing 02071fb4 // 02071fb4 e12fff1c bx r12 // processing 0207554c // 0207554c 0a000007 beq 0x2075570 // adding jump: 0207554c -> 02075570 (sub=0) // adding link: 0207554c -> 02075550 // processing 02075ad8 // 02075ad8 e1d013f0 ldrsh r1, [r0, #0x30] // adding link: 02075ad8 -> 02075adc // processing 020747b4 // 020747b4 e3530000 cmp r3, #0x0 // adding link: 020747b4 -> 020747b8 // processing 02075600 // 02075600 1581501c strne r5, [r1, #0x1c] // adding link: 02075600 -> 02075604 // processing 02075624 // 02075624 ebfff1fa bl 0x2071e14 // adding jump: 02075624 -> 02071e14 (sub=1) // adding link: 02075624 -> 02075628 // processing 02075570 // 02075570 e5991030 ldr r1, [r9, #0x30] // adding link: 02075570 -> 02075574 // processing 02075550 // 02075550 e5990030 ldr r0, [r9, #0x30] // adding link: 02075550 -> 02075554 // processing 02075adc // 02075adc e59fc000 ldr r12, [r15] ; 0x2075ae4 // adding link: 02075adc -> 02075ae0 // processing 020747b8 // 020747b8 d2631000 rsble r1, r3, #0x0 // adding link: 020747b8 -> 020747bc // processing 02075604 // 02075604 ea000007 b 0x2075628 // adding jump: 02075604 -> 02075628 (sub=0) // processing 02071e14 // 02071e14 e59f100c ldr r1, [r15, #0xc] ; 0x2071e28 // adding link: 02071e14 -> 02071e18 // processing 02075574 // 02075574 e1d100d5 ldrsb r0, [r1, #0x5] // adding link: 02075574 -> 02075578 // processing 02075554 // 02075554 e1c955b2 strh r5, [r9, #0x52] // adding link: 02075554 -> 02075558 // processing 02075ae0 // 02075ae0 e12fff1c bx r12 // processing 020747bc // 020747bc e1a01081 mov r1, r1, lsl #0x1 // adding link: 020747bc -> 020747c0 // processing 02071e18 // 02071e18 e3a02000 mov r2, #0x0 // adding link: 02071e18 -> 02071e1c // processing 02075578 // 02075578 e3500000 cmp r0, #0x0 // adding link: 02075578 -> 0207557c // processing 02075558 // 02075558 e580500c str r5, [r0, #0xc] // adding link: 02075558 -> 0207555c // processing 020747c0 // 020747c0 e2811001 add r1, r1, #0x1 // adding link: 020747c0 -> 020747c4 // processing 02071e1c // 02071e1c e5802014 str r2, [r0, #0x14] // adding link: 02071e1c -> 02071e20 // processing 0207557c // 0207557c 15c15004 strbne r5, [r1, #0x4] // adding link: 0207557c -> 02075580 // processing 0207555c // 0207555c e5805008 str r5, [r0, #0x8] // adding link: 0207555c -> 02075560 // processing 020747c4 // 020747c4 e5803004 str r3, [r0, #0x4] // adding link: 020747c4 -> 020747c8 // processing 02071e20 // 02071e20 e5801018 str r1, [r0, #0x18] // adding link: 02071e20 -> 02071e24 // processing 02075580 // 02075580 e5c15005 strb r5, [r1, #0x5] // adding link: 02075580 -> 02075584 // processing 02075560 // 02075560 e5991030 ldr r1, [r9, #0x30] // adding link: 02075560 -> 02075564 // processing 020747c8 // 020747c8 e28134ff add r3, r1, #0xff000000 // adding link: 020747c8 -> 020747cc // processing 02071e24 // 02071e24 e12fff1e bx r14 // processing 02075584 // 02075584 ea000027 b 0x2075628 // adding jump: 02075584 -> 02075628 (sub=0) // processing 02075564 // 02075564 e3a00001 mov r0, #0x1 // adding link: 02075564 -> 02075568 // processing 020747cc // 020747cc e2821401 add r1, r2, #0x1000000 // adding link: 020747cc -> 020747d0 // processing 02075568 // 02075568 e5c1b004 strb r11, [r1, #0x4] // adding link: 02075568 -> 0207556c // processing 020747d0 // 020747d0 e5803008 str r3, [r0, #0x8] // adding link: 020747d0 -> 020747d4 // processing 0207556c // 0207556c e5c10005 strb r0, [r1, #0x5] // adding link: 0207556c -> 02075570 // processing 020747d4 // 020747d4 e1a010c1 mov r1, r1, asr #0x1 // adding link: 020747d4 -> 020747d8 // processing 020747d8 // 020747d8 e580100c str r1, [r0, #0xc] // adding link: 020747d8 -> 020747dc // processing 020747dc // 020747dc e5940030 ldr r0, [r4, #0x30] // adding link: 020747dc -> 020747e0 // processing 020747e0 // 020747e0 e1d010d4 ldrsb r1, [r0, #0x4] // adding link: 020747e0 -> 020747e4 // processing 020747e4 // 020747e4 e3510003 cmp r1, #0x3 // adding link: 020747e4 -> 020747e8 // processing 020747e8 // 020747e8 908ff101 addls r15, r15, r1, lsl #0x2 // foudn addls sha=2 rm=1 // target=02074900 // adding jump: 020747e8 -> 02074900 (sub=0) // target=02074800 // adding jump: 020747e8 -> 02074800 (sub=0) // target=02074878 // adding jump: 020747e8 -> 02074878 (sub=0) // target=020748bc // adding jump: 020747e8 -> 020748bc (sub=0) // target=020748cc // adding jump: 020747e8 -> 020748cc (sub=0) // processing 02074900 // 02074900 e5940038 ldr r0, [r4, #0x38] // adding link: 02074900 -> 02074904 // processing 02074800 // 02074800 e590800c ldr r8, [r0, #0xc] // adding link: 02074800 -> 02074804 // processing 02074878 // 02074878 e5902000 ldr r2, [r0] // adding link: 02074878 -> 0207487c // processing 020748bc // 020748bc e5901000 ldr r1, [r0] // adding link: 020748bc -> 020748c0 // processing 020748cc // 020748cc e590200c ldr r2, [r0, #0xc] // adding link: 020748cc -> 020748d0 // processing 02074904 // 02074904 e590200c ldr r2, [r0, #0xc] // adding link: 02074904 -> 02074908 // processing 02074804 // 02074804 e59f2c28 ldr r2, [r15, #0xc28] ; 0x2075434 // adding link: 02074804 -> 02074808 // processing 0207487c // 0207487c e5905008 ldr r5, [r0, #0x8] // adding link: 0207487c -> 02074880 // processing 020748c0 // 020748c0 e5911008 ldr r1, [r1, #0x8] // adding link: 020748c0 -> 020748c4 // processing 020748d0 // 020748d0 e3a01042 mov r1, #0x42 // adding link: 020748d0 -> 020748d4 // processing 02074908 // 02074908 e8900022 ldmia r0, { r1, r5 } // adding link: 02074908 -> 0207490c // processing 02074808 // 02074808 e3a01070 mov r1, #0x70 // adding link: 02074808 -> 0207480c // processing 02074880 // 02074880 e5921008 ldr r1, [r2, #0x8] // adding link: 02074880 -> 02074884 // processing 020748c4 // 020748c4 e5801008 str r1, [r0, #0x8] // adding link: 020748c4 -> 020748c8 // processing 020748d4 // 020748d4 e0010192 mul r1, r2, r1 // adding link: 020748d4 -> 020748d8 // processing 0207490c // 0207490c e0411005 sub r1, r1, r5 // adding link: 0207490c -> 02074910 // processing 0207480c // 0207480c e0423008 sub r3, r2, r8 // adding link: 0207480c -> 02074810 // processing 02074884 // 02074884 e5922004 ldr r2, [r2, #0x4] // adding link: 02074884 -> 02074888 // processing 020748c8 // 020748c8 ea00000c b 0x2074900 // adding jump: 020748c8 -> 02074900 (sub=0) // processing 020748d8 // 020748d8 e1a013c1 mov r1, r1, asr #0x7 // adding link: 020748d8 -> 020748dc // processing 02074910 // 02074910 e0c13192 smull r3, r1, r2, r1 // adding link: 02074910 -> 02074914 // processing 02074810 // 02074810 e0867193 umull r7, r6, r3, r1 // adding link: 02074810 -> 02074814 // processing 02074888 // 02074888 e0411005 sub r1, r1, r5 // adding link: 02074888 -> 0207488c // processing 020748dc // 020748dc e580100c str r1, [r0, #0xc] // adding link: 020748dc -> 020748e0 // processing 02074914 // 02074914 e1a027a3 mov r2, r3, lsr #0xf // adding link: 02074914 -> 02074918 // processing 02074814 // 02074814 e0266593 mla r6, r3, r5, r6 // adding link: 02074814 -> 02074818 // processing 0207488c // 0207488c e0c13192 smull r3, r1, r2, r1 // adding link: 0207488c -> 02074890 // processing 020748e0 // 020748e0 e5901000 ldr r1, [r0] // adding link: 020748e0 -> 020748e4 // processing 02074918 // 02074918 e1822881 orr r2, r2, r1, lsl #0x11 // adding link: 02074918 -> 0207491c // processing 02074818 // 02074818 e1a03fc3 mov r3, r3, asr #0x1f // adding link: 02074818 -> 0207481c // processing 02074890 // 02074890 e1a02c23 mov r2, r3, lsr #0x18 // adding link: 02074890 -> 02074894 // processing 020748e4 // 020748e4 e5902008 ldr r2, [r0, #0x8] // adding link: 020748e4 -> 020748e8 // processing 0207491c // 0207491c e0851002 add r1, r5, r2 // adding link: 0207491c -> 02074920 // processing 0207481c // 0207481c e0266193 mla r6, r3, r1, r6 // adding link: 0207481c -> 02074820 // processing 02074894 // 02074894 e1822401 orr r2, r2, r1, lsl #0x8 // adding link: 02074894 -> 02074898 // processing 020748e8 // 020748e8 e591100c ldr r1, [r1, #0xc] // adding link: 020748e8 -> 020748ec // processing 02074920 // 02074920 e5801004 str r1, [r0, #0x4] // adding link: 02074920 -> 02074924 // processing 02074820 // 02074820 e1a013a7 mov r1, r7, lsr #0x7 // adding link: 02074820 -> 02074824 // processing 02074898 // 02074898 e0852002 add r2, r5, r2 // adding link: 02074898 -> 0207489c // processing 020748ec // 020748ec e0461001 sub r1, r6, r1 // adding link: 020748ec -> 020748f0 // processing 02074924 // 02074924 e5d01010 ldrb r1, [r0, #0x10] // adding link: 02074924 -> 02074928 // processing 02074824 // 02074824 e1811c86 orr r1, r1, r6, lsl #0x19 // adding link: 02074824 -> 02074828 // processing 0207489c // 0207489c e5802008 str r2, [r0, #0x8] // adding link: 0207489c -> 020748a0 // processing 020748f0 // 020748f0 e0c13192 smull r3, r1, r2, r1 // adding link: 020748f0 -> 020748f4 // processing 02074928 // 02074928 e5902000 ldr r2, [r0] // adding link: 02074928 -> 0207492c // processing 02074828 // 02074828 e0881001 add r1, r8, r1 // adding link: 02074828 -> 0207482c // processing 020748a0 // 020748a0 e5901000 ldr r1, [r0] // adding link: 020748a0 -> 020748a4 // processing 020748f4 // 020748f4 e1a02c23 mov r2, r3, lsr #0x18 // adding link: 020748f4 -> 020748f8 // processing 0207492c // 0207492c e3510000 cmp r1, #0x0 // adding link: 0207492c -> 02074930 // processing 0207482c // 0207482c e580100c str r1, [r0, #0xc] // adding link: 0207482c -> 02074830 // processing 020748a4 // 020748a4 e5911008 ldr r1, [r1, #0x8] // adding link: 020748a4 -> 020748a8 // processing 020748f8 // 020748f8 e1822401 orr r2, r2, r1, lsl #0x8 // adding link: 020748f8 -> 020748fc // processing 02074930 // 02074930 e5901004 ldr r1, [r0, #0x4] // adding link: 02074930 -> 02074934 // processing 02074830 // 02074830 e1510002 cmp r1, r2 // adding link: 02074830 -> 02074834 // processing 020748a8 // 020748a8 e1520001 cmp r2, r1 // adding link: 020748a8 -> 020748ac // processing 020748fc // 020748fc e5802008 str r2, [r0, #0x8] // adding link: 020748fc -> 02074900 // processing 02074934 // 02074934 0a000002 beq 0x2074944 // adding jump: 02074934 -> 02074944 (sub=0) // adding link: 02074934 -> 02074938 // processing 02074834 // 02074834 c580200c strgt r2, [r0, #0xc] // adding link: 02074834 -> 02074838 // processing 020748ac // 020748ac b5801008 strlt r1, [r0, #0x8] // adding link: 020748ac -> 020748b0 // processing 02074944 // 02074944 e1510002 cmp r1, r2 // adding link: 02074944 -> 02074948 // processing 02074938 // 02074938 e1510002 cmp r1, r2 // adding link: 02074938 -> 0207493c // processing 02074838 // 02074838 e5902000 ldr r2, [r0] // adding link: 02074838 -> 0207483c // processing 020748b0 // 020748b0 b3a01002 movlt r1, #0x2 // adding link: 020748b0 -> 020748b4 // processing 02074948 // 02074948 b5802004 strlt r2, [r0, #0x4] // adding link: 02074948 -> 0207494c // processing 0207493c // 0207493c c5802004 strgt r2, [r0, #0x4] // adding link: 0207493c -> 02074940 // processing 0207483c // 0207483c e5905008 ldr r5, [r0, #0x8] // adding link: 0207483c -> 02074840 // processing 020748b4 // 020748b4 b5c01004 strblt r1, [r0, #0x4] // adding link: 020748b4 -> 020748b8 // processing 0207494c // 0207494c e594b03c ldr r11, [r4, #0x3c] // adding link: 0207494c -> 02074950 // processing 02074940 // 02074940 ea000001 b 0x207494c // adding jump: 02074940 -> 0207494c (sub=0) // processing 02074840 // 02074840 e59f1bf0 ldr r1, [r15, #0xbf0] ; 0x2075438 // adding link: 02074840 -> 02074844 // processing 020748b8 // 020748b8 ea000010 b 0x2074900 // adding jump: 020748b8 -> 02074900 (sub=0) // processing 02074950 // 02074950 e59fcae4 ldr r12, [r15, #0xae4] ; 0x207543c // adding link: 02074950 -> 02074954 // processing 02074844 // 02074844 e5922000 ldr r2, [r2] // adding link: 02074844 -> 02074848 // processing 02074954 // 02074954 e59b0040 ldr r0, [r11, #0x40] // adding link: 02074954 -> 02074958 // processing 02074848 // 02074848 e0411005 sub r1, r1, r5 // adding link: 02074848 -> 0207484c // processing 02074958 // 02074958 e59b2010 ldr r2, [r11, #0x10] // adding link: 02074958 -> 0207495c // processing 0207484c // 0207484c e0c23291 smull r3, r2, r1, r2 // adding link: 0207484c -> 02074850 // processing 0207495c // 0207495c e1a05800 mov r5, r0, lsl #0x10 // adding link: 0207495c -> 02074960 // processing 02074850 // 02074850 e1a01c23 mov r1, r3, lsr #0x18 // adding link: 02074850 -> 02074854 // processing 02074960 // 02074960 e59b104c ldr r1, [r11, #0x4c] // adding link: 02074960 -> 02074964 // processing 02074854 // 02074854 e1811402 orr r1, r1, r2, lsl #0x8 // adding link: 02074854 -> 02074858 // processing 02074964 // 02074964 e59b0044 ldr r0, [r11, #0x44] // adding link: 02074964 -> 02074968 // processing 02074858 // 02074858 e0852001 add r2, r5, r1 // adding link: 02074858 -> 0207485c // processing 02074968 // 02074968 e0823101 add r3, r2, r1, lsl #0x2 // adding link: 02074968 -> 0207496c // processing 0207485c // 0207485c e3e014ff mvn r1, #0xff000000 // adding link: 0207485c -> 02074860 // processing 0207496c // 0207496c e59b1050 ldr r1, [r11, #0x50] // adding link: 0207496c -> 02074970 // processing 02074860 // 02074860 e5802008 str r2, [r0, #0x8] // adding link: 02074860 -> 02074864 // processing 02074970 // 02074970 e1a00800 mov r0, r0, lsl #0x10 // adding link: 02074970 -> 02074974 // processing 02074864 // 02074864 e1520001 cmp r2, r1 // adding link: 02074864 -> 02074868 // processing 02074974 // 02074974 e0821101 add r1, r2, r1, lsl #0x2 // adding link: 02074974 -> 02074978 // processing 02074868 // 02074868 c5801008 strgt r1, [r0, #0x8] // adding link: 02074868 -> 0207486c // processing 02074978 // 02074978 e5928008 ldr r8, [r2, #0x8] // adding link: 02074978 -> 0207497c // processing 0207486c // 0207486c c3a01001 movgt r1, #0x1 // adding link: 0207486c -> 02074870 // processing 0207497c // 0207497c e59b2028 ldr r2, [r11, #0x28] // adding link: 0207497c -> 02074980 // processing 02074870 // 02074870 c5c01004 strbgt r1, [r0, #0x4] // adding link: 02074870 -> 02074874 // processing 02074980 // 02074980 e59b7014 ldr r7, [r11, #0x14] // adding link: 02074980 -> 02074984 // processing 02074874 // 02074874 ea000021 b 0x2074900 // adding jump: 02074874 -> 02074900 (sub=0) // processing 02074984 // 02074984 e1a05845 mov r5, r5, asr #0x10 // adding link: 02074984 -> 02074988 // processing 02074988 // 02074988 e59b6024 ldr r6, [r11, #0x24] // adding link: 02074988 -> 0207498c // processing 0207498c // 0207498c e7975105 ldr r5, [r7, r5, lsl #0x2] // adding link: 0207498c -> 02074990 // processing 02074990 // 02074990 e5933008 ldr r3, [r3, #0x8] // adding link: 02074990 -> 02074994 // processing 02074994 // 02074994 e59b9020 ldr r9, [r11, #0x20] // adding link: 02074994 -> 02074998 // processing 02074998 // 02074998 e0853003 add r3, r5, r3 // adding link: 02074998 -> 0207499c // processing 0207499c // 0207499c e1a00840 mov r0, r0, asr #0x10 // adding link: 0207499c -> 020749a0 // processing 020749a0 // 020749a0 e79c5106 ldr r5, [r12, r6, lsl #0x2] // adding link: 020749a0 -> 020749a4 // processing 020749a4 // 020749a4 e1a034c3 mov r3, r3, asr #0x9 // adding link: 020749a4 -> 020749a8 // processing 020749a8 // 020749a8 e0030395 mul r3, r5, r3 // adding link: 020749a8 -> 020749ac // processing 020749ac // 020749ac e7976100 ldr r6, [r7, r0, lsl #0x2] // adding link: 020749ac -> 020749b0 // processing 020749b0 // 020749b0 e5911008 ldr r1, [r1, #0x8] // adding link: 020749b0 -> 020749b4 // processing 020749b4 // 020749b4 e79c5109 ldr r5, [r12, r9, lsl #0x2] // adding link: 020749b4 -> 020749b8 // processing 020749b8 // 020749b8 e0811006 add r1, r1, r6 // adding link: 020749b8 -> 020749bc // processing 020749bc // 020749bc e1a004c8 mov r0, r8, asr #0x9 // adding link: 020749bc -> 020749c0 // processing 020749c0 // 020749c0 e79c2102 ldr r2, [r12, r2, lsl #0x2] // adding link: 020749c0 -> 020749c4 // processing 020749c4 // 020749c4 e1a014c1 mov r1, r1, asr #0x9 // adding link: 020749c4 -> 020749c8 // processing 020749c8 // 020749c8 e0060095 mul r6, r5, r0 // adding link: 020749c8 -> 020749cc // processing 020749cc // 020749cc e0000192 mul r0, r2, r1 // adding link: 020749cc -> 020749d0 // processing 020749d0 // 020749d0 e1a037c3 mov r3, r3, asr #0xf // adding link: 020749d0 -> 020749d4 // processing 020749d4 // 020749d4 e08327c6 add r2, r3, r6, asr #0xf // adding link: 020749d4 -> 020749d8 // processing 020749d8 // 020749d8 e08217c0 add r1, r2, r0, asr #0xf // adding link: 020749d8 -> 020749dc // processing 020749dc // 020749dc e3a00030 mov r0, #0x30 // adding link: 020749dc -> 020749e0 // processing 020749e0 // 020749e0 e0000091 mul r0, r1, r0 // adding link: 020749e0 -> 020749e4 // processing 020749e4 // 020749e4 e59ba018 ldr r10, [r11, #0x18] // adding link: 020749e4 -> 020749e8 // processing 020749e8 // 020749e8 e59b3030 ldr r3, [r11, #0x30] // adding link: 020749e8 -> 020749ec // processing 020749ec // 020749ec e59a1004 ldr r1, [r10, #0x4] // adding link: 020749ec -> 020749f0 // processing 020749f0 // 020749f0 e0811783 add r1, r1, r3, lsl #0xf // adding link: 020749f0 -> 020749f4 // processing 020749f4 // 020749f4 e0907001 adds r7, r0, r1 // adding link: 020749f4 -> 020749f8 // processing 020749f8 // 020749f8 43a07000 movmi r7, #0x0 // adding link: 020749f8 -> 020749fc // processing 020749fc // 020749fc 4a000001 bmi 0x2074a08 // adding jump: 020749fc -> 02074a08 (sub=0) // adding link: 020749fc -> 02074a00 // processing 02074a08 // 02074a08 e59f0a30 ldr r0, [r15, #0xa30] ; 0x2075440 // adding link: 02074a08 -> 02074a0c // processing 02074a00 // 02074a00 e357070f cmp r7, #0x3c0000 // adding link: 02074a00 -> 02074a04 // processing 02074a0c // 02074a0c e1a067c7 mov r6, r7, asr #0xf // adding link: 02074a0c -> 02074a10 // processing 02074a04 // 02074a04 c3a0770f movgt r7, #0x3c0000 // adding link: 02074a04 -> 02074a08 // processing 02074a10 // 02074a10 e59f5a2c ldr r5, [r15, #0xa2c] ; 0x2075444 // adding link: 02074a10 -> 02074a14 // processing 02074a14 // 02074a14 e59f3a2c ldr r3, [r15, #0xa2c] ; 0x2075448 // adding link: 02074a14 -> 02074a18 // processing 02074a18 // 02074a18 e7900106 ldr r0, [r0, r6, lsl #0x2] // adding link: 02074a18 -> 02074a1c // processing 02074a1c // 02074a1c e7955106 ldr r5, [r5, r6, lsl #0x2] // adding link: 02074a1c -> 02074a20 // processing 02074a20 // 02074a20 e0076003 and r6, r7, r3 // adding link: 02074a20 -> 02074a24 // processing 02074a24 // 02074a24 e0453000 sub r3, r5, r0 // adding link: 02074a24 -> 02074a28 // processing 02074a28 // 02074a28 e0c35396 smull r5, r3, r6, r3 // adding link: 02074a28 -> 02074a2c // processing 02074a2c // 02074a2c e1a057a5 mov r5, r5, lsr #0xf // adding link: 02074a2c -> 02074a30 // processing 02074a30 // 02074a30 e1855883 orr r5, r5, r3, lsl #0x11 // adding link: 02074a30 -> 02074a34 // processing 02074a34 // 02074a34 e0900005 adds r0, r0, r5 // adding link: 02074a34 -> 02074a38 // processing 02074a38 // 02074a38 e58b0038 str r0, [r11, #0x38] // adding link: 02074a38 -> 02074a3c // processing 02074a3c // 02074a3c e59b0048 ldr r0, [r11, #0x48] // adding link: 02074a3c -> 02074a40 // processing 02074a40 // 02074a40 e59b5010 ldr r5, [r11, #0x10] // adding link: 02074a40 -> 02074a44 // processing 02074a44 // 02074a44 e59b3054 ldr r3, [r11, #0x54] // adding link: 02074a44 -> 02074a48 // processing 02074a48 // 02074a48 e1a00800 mov r0, r0, lsl #0x10 // adding link: 02074a48 -> 02074a4c // processing 02074a4c // 02074a4c e0857103 add r7, r5, r3, lsl #0x2 // adding link: 02074a4c -> 02074a50 // processing 02074a50 // 02074a50 e1a05840 mov r5, r0, asr #0x10 // adding link: 02074a50 -> 02074a54 // processing 02074a54 // 02074a54 e59b6014 ldr r6, [r11, #0x14] // adding link: 02074a54 -> 02074a58 // processing 02074a58 // 02074a58 e59b802c ldr r8, [r11, #0x2c] // adding link: 02074a58 -> 02074a5c // processing 02074a5c // 02074a5c e59f09d8 ldr r0, [r15, #0x9d8] ; 0x207543c // adding link: 02074a5c -> 02074a60 // processing 02074a60 // 02074a60 e7965105 ldr r5, [r6, r5, lsl #0x2] // adding link: 02074a60 -> 02074a64 // processing 02074a64 // 02074a64 e5977008 ldr r7, [r7, #0x8] // adding link: 02074a64 -> 02074a68 // processing 02074a68 // 02074a68 e1db33f4 ldrsh r3, [r11, #0x34] // adding link: 02074a68 -> 02074a6c // processing 02074a6c // 02074a6c e0875005 add r5, r7, r5 // adding link: 02074a6c -> 02074a70 // processing 02074a70 // 02074a70 e7906108 ldr r6, [r0, r8, lsl #0x2] // adding link: 02074a70 -> 02074a74 // processing 02074a74 // 02074a74 e1a054c5 mov r5, r5, asr #0x9 // adding link: 02074a74 -> 02074a78 // processing 02074a78 // 02074a78 e0050596 mul r5, r6, r5 // adding link: 02074a78 -> 02074a7c // processing 02074a7c // 02074a7c e7903103 ldr r3, [r0, r3, lsl #0x2] // adding link: 02074a7c -> 02074a80 // processing 02074a80 // 02074a80 e3a00030 mov r0, #0x30 // adding link: 02074a80 -> 02074a84 // processing 02074a84 // 02074a84 e08227c5 add r2, r2, r5, asr #0xf // adding link: 02074a84 -> 02074a88 // processing 02074a88 // 02074a88 e0211092 mla r1, r2, r0, r1 // adding link: 02074a88 -> 02074a8c // processing 02074a8c // 02074a8c e0000093 mul r0, r3, r0 // adding link: 02074a8c -> 02074a90 // processing 02074a90 // 02074a90 e0916000 adds r6, r1, r0 // adding link: 02074a90 -> 02074a94 // processing 02074a94 // 02074a94 43a06000 movmi r6, #0x0 // adding link: 02074a94 -> 02074a98 // processing 02074a98 // 02074a98 4a000001 bmi 0x2074aa4 // adding jump: 02074a98 -> 02074aa4 (sub=0) // adding link: 02074a98 -> 02074a9c // processing 02074aa4 // 02074aa4 e59f2994 ldr r2, [r15, #0x994] ; 0x2075440 // adding link: 02074aa4 -> 02074aa8 // processing 02074a9c // 02074a9c e356070f cmp r6, #0x3c0000 // adding link: 02074a9c -> 02074aa0 // processing 02074aa8 // 02074aa8 e1a057c6 mov r5, r6, asr #0xf // adding link: 02074aa8 -> 02074aac // processing 02074aa0 // 02074aa0 c3a0670f movgt r6, #0x3c0000 // adding link: 02074aa0 -> 02074aa4 // processing 02074aac // 02074aac e59f1990 ldr r1, [r15, #0x990] ; 0x2075444 // adding link: 02074aac -> 02074ab0 // processing 02074ab0 // 02074ab0 e59f0990 ldr r0, [r15, #0x990] ; 0x2075448 // adding link: 02074ab0 -> 02074ab4 // processing 02074ab4 // 02074ab4 e7923105 ldr r3, [r2, r5, lsl #0x2] // adding link: 02074ab4 -> 02074ab8 // processing 02074ab8 // 02074ab8 e7911105 ldr r1, [r1, r5, lsl #0x2] // adding link: 02074ab8 -> 02074abc // processing 02074abc // 02074abc e0062000 and r2, r6, r0 // adding link: 02074abc -> 02074ac0 // processing 02074ac0 // 02074ac0 e0410003 sub r0, r1, r3 // adding link: 02074ac0 -> 02074ac4 // processing 02074ac4 // 02074ac4 e0c01092 smull r1, r0, r2, r0 // adding link: 02074ac4 -> 02074ac8 // processing 02074ac8 // 02074ac8 e1a017a1 mov r1, r1, lsr #0xf // adding link: 02074ac8 -> 02074acc // processing 02074acc // 02074acc e1811880 orr r1, r1, r0, lsl #0x11 // adding link: 02074acc -> 02074ad0 // processing 02074ad0 // 02074ad0 e0930001 adds r0, r3, r1 // adding link: 02074ad0 -> 02074ad4 // processing 02074ad4 // 02074ad4 e58b003c str r0, [r11, #0x3c] // adding link: 02074ad4 -> 02074ad8 // processing 02074ad8 // 02074ad8 e5946040 ldr r6, [r4, #0x40] // adding link: 02074ad8 -> 02074adc // processing 02074adc // 02074adc e3a05000 mov r5, #0x0 // adding link: 02074adc -> 02074ae0 // processing 02074ae0 // 02074ae0 e5960010 ldr r0, [r6, #0x10] // adding link: 02074ae0 -> 02074ae4 // processing 02074ae4 // 02074ae4 e5901038 ldr r1, [r0, #0x38] // adding link: 02074ae4 -> 02074ae8 // processing 02074ae8 // 02074ae8 e586101c str r1, [r6, #0x1c] // adding link: 02074ae8 -> 02074aec // processing 02074aec // 02074aec e5960010 ldr r0, [r6, #0x10] // adding link: 02074aec -> 02074af0 // processing 02074af0 // 02074af0 e3510401 cmp r1, #0x1000000 // adding link: 02074af0 -> 02074af4 // processing 02074af4 // 02074af4 e590003c ldr r0, [r0, #0x3c] // adding link: 02074af4 -> 02074af8 // processing 02074af8 // 02074af8 e5860020 str r0, [r6, #0x20] // adding link: 02074af8 -> 02074afc // processing 02074afc // 02074afc b3e00102 mvnlt r0, #0x80000000 // adding link: 02074afc -> 02074b00 // processing 02074b00 // 02074b00 b5860024 strlt r0, [r6, #0x24] // adding link: 02074b00 -> 02074b04 // processing 02074b04 // 02074b04 ba00001c blt 0x2074b7c // adding jump: 02074b04 -> 02074b7c (sub=0) // adding link: 02074b04 -> 02074b08 // processing 02074b7c // 02074b7c e5960020 ldr r0, [r6, #0x20] // adding link: 02074b7c -> 02074b80 // processing 02074b08 // 02074b08 e28d0030 add r0, r13, #0x30 // adding link: 02074b08 -> 02074b0c // processing 02074b80 // 02074b80 e3500401 cmp r0, #0x1000000 // adding link: 02074b80 -> 02074b84 // processing 02074b0c // 02074b0c ebfe67b2 bl 0x200e9dc // adding jump: 02074b0c -> 0200e9dc (sub=1) // adding link: 02074b0c -> 02074b10 // processing 02074b84 // 02074b84 b3e00102 mvnlt r0, #0x80000000 // adding link: 02074b84 -> 02074b88 // processing 0200e9dc // 0200e9dc e59f1034 ldr r1, [r15, #0x34] ; 0x200ea18 // adding link: 0200e9dc -> 0200e9e0 // processing 02074b10 // 02074b10 e596801c ldr r8, [r6, #0x1c] // adding link: 02074b10 -> 02074b14 // processing 02074b88 // 02074b88 b5860028 strlt r0, [r6, #0x28] // adding link: 02074b88 -> 02074b8c // processing 0200e9e0 // 0200e9e0 e92d0010 stmdb r13!, { r4 } // adding link: 0200e9e0 -> 0200e9e4 // processing 02074b14 // 02074b14 e59f1930 ldr r1, [r15, #0x930] ; 0x207544c // adding link: 02074b14 -> 02074b18 // processing 02074b8c // 02074b8c ba00001c blt 0x2074c04 // adding jump: 02074b8c -> 02074c04 (sub=0) // adding link: 02074b8c -> 02074b90 // processing 0200e9e4 // 0200e9e4 e891101c ldmia r1, { r2-r4, r12 } // adding link: 0200e9e4 -> 0200e9e8 // processing 02074b18 // 02074b18 e3a02001 mov r2, #0x1 // adding link: 02074b18 -> 02074b1c // processing 02074c04 // 02074c04 e5960054 ldr r0, [r6, #0x54] // adding link: 02074c04 -> 02074c08 // processing 02074b90 // 02074b90 e28d004c add r0, r13, #0x4c // adding link: 02074b90 -> 02074b94 // processing 0200e9e8 // 0200e9e8 e8a0101c stmia r0!, { r2-r4, r12 } // adding link: 0200e9e8 -> 0200e9ec // processing 02074b1c // 02074b1c e3a004ff mov r0, #0xff000000 // adding link: 02074b1c -> 02074b20 // processing 02074c08 // 02074c08 e3a0392e mov r3, #0xb8000 // adding link: 02074c08 -> 02074c0c // processing 02074b94 // 02074b94 ebfe6790 bl 0x200e9dc // adding jump: 02074b94 -> 0200e9dc (sub=1) // adding link: 02074b94 -> 02074b98 // processing 0200e9ec // 0200e9ec e151c1b0 ldrh r12, [r1, #-0x10] // adding link: 0200e9ec -> 0200e9f0 // processing 02074b20 // 02074b20 e1c120b0 strh r2, [r1] // adding link: 02074b20 -> 02074b24 // processing 02074c0c // 02074c0c e5860060 str r0, [r6, #0x60] // adding link: 02074c0c -> 02074c10 // processing 02074b98 // 02074b98 e5968020 ldr r8, [r6, #0x20] // adding link: 02074b98 -> 02074b9c // processing 0200e9f0 // 0200e9f0 e2811028 add r1, r1, #0x28 // adding link: 0200e9f0 -> 0200e9f4 // processing 02074b24 // 02074b24 e5810010 str r0, [r1, #0x10] // adding link: 02074b24 -> 02074b28 // processing 02074c10 // 02074c10 e5960058 ldr r0, [r6, #0x58] // adding link: 02074c10 -> 02074c14 // processing 02074b9c // 02074b9c e59f18a8 ldr r1, [r15, #0x8a8] ; 0x207544c // adding link: 02074b9c -> 02074ba0 // processing 0200e9f4 // 0200e9f4 e891000c ldmia r1, { r2, r3 } // adding link: 0200e9f4 -> 0200e9f8 // processing 02074b28 // 02074b28 e2620502 rsb r0, r2, #0x800000 // adding link: 02074b28 -> 02074b2c // processing 02074c14 // 02074c14 e59fa838 ldr r10, [r15, #0x838] ; 0x2075454 // adding link: 02074c14 -> 02074c18 // processing 02074ba0 // 02074ba0 e3a02001 mov r2, #0x1 // adding link: 02074ba0 -> 02074ba4 // processing 0200e9f8 // 0200e9f8 e8a0000c stmia r0!, { r2, r3 } // adding link: 0200e9f8 -> 0200e9fc // processing 02074b2c // 02074b2c e5810014 str r0, [r1, #0x14] // adding link: 02074b2c -> 02074b30 // processing 02074c18 // 02074c18 e5860068 str r0, [r6, #0x68] // adding link: 02074c18 -> 02074c1c // processing 02074ba4 // 02074ba4 e3a004ff mov r0, #0xff000000 // adding link: 02074ba4 -> 02074ba8 // processing 0200e9fc // 0200e9fc e20cc003 and r12, r12, #0x3 // adding link: 0200e9fc -> 0200ea00 // processing 02074b30 // 02074b30 e5818018 str r8, [r1, #0x18] // adding link: 02074b30 -> 02074b34 // processing 02074c1c // 02074c1c e5961020 ldr r1, [r6, #0x20] // adding link: 02074c1c -> 02074c20 // processing 02074ba8 // 02074ba8 e1c120b0 strh r2, [r1] // adding link: 02074ba8 -> 02074bac // processing 0200ea00 // 0200ea00 e15120b8 ldrh r2, [r1, #-0x8] // adding link: 0200ea00 -> 0200ea04 // processing 02074b34 // 02074b34 e1a00005 mov r0, r5 // adding link: 02074b34 -> 02074b38 // processing 02074c20 // 02074c20 e5960054 ldr r0, [r6, #0x54] // adding link: 02074c20 -> 02074c24 // processing 02074bac // 02074bac e5810010 str r0, [r1, #0x10] // adding link: 02074bac -> 02074bb0 // processing 0200ea04 // 0200ea04 e1c0c0b0 strh r12, [r0] // adding link: 0200ea04 -> 0200ea08 // processing 02074b38 // 02074b38 e581001c str r0, [r1, #0x1c] // adding link: 02074b38 -> 02074b3c // processing 02074c24 // 02074c24 e59f782c ldr r7, [r15, #0x82c] ; 0x2075458 // adding link: 02074c24 -> 02074c28 // processing 02074bb0 // 02074bb0 e2620502 rsb r0, r2, #0x800000 // adding link: 02074bb0 -> 02074bb4 // processing 0200ea08 // 0200ea08 e2022001 and r2, r2, #0x1 // adding link: 0200ea08 -> 0200ea0c // processing 02074b3c // 02074b3c e1d100b0 ldrh r0, [r1] // adding link: 02074b3c -> 02074b40 // processing 02074c28 // 02074c28 e0c02091 smull r2, r0, r1, r0 // adding link: 02074c28 -> 02074c2c // processing 02074bb4 // 02074bb4 e5810014 str r0, [r1, #0x14] // adding link: 02074bb4 -> 02074bb8 // processing 0200ea0c // 0200ea0c e1c020b2 strh r2, [r0, #0x2] // adding link: 0200ea0c -> 0200ea10 // processing 02074b40 // 02074b40 e3100902 tst r0, #0x8000 // adding link: 02074b40 -> 02074b44 // processing 02074c2c // 02074c2c e1a013a2 mov r1, r2, lsr #0x7 // adding link: 02074c2c -> 02074c30 // processing 02074bb8 // 02074bb8 e5818018 str r8, [r1, #0x18] // adding link: 02074bb8 -> 02074bbc // processing 0200ea10 // 0200ea10 e8bd0010 ldmia r13!, { r4 } // adding link: 0200ea10 -> 0200ea14 // processing 02074b44 // 02074b44 1afffffc bne 0x2074b3c // adding jump: 02074b44 -> 02074b3c (sub=0) // adding link: 02074b44 -> 02074b48 // processing 02074c30 // 02074c30 e1811c80 orr r1, r1, r0, lsl #0x19 // adding link: 02074c30 -> 02074c34 // processing 02074bbc // 02074bbc e3a00000 mov r0, #0x0 // adding link: 02074bbc -> 02074bc0 // processing 0200ea14 // 0200ea14 e12fff1e bx r14 // processing 02074b48 // 02074b48 e59f18fc ldr r1, [r15, #0x8fc] ; 0x207544c // adding link: 02074b48 -> 02074b4c // processing 02074c34 // 02074c34 e5861064 str r1, [r6, #0x64] // adding link: 02074c34 -> 02074c38 // processing 02074bc0 // 02074bc0 e581001c str r0, [r1, #0x1c] // adding link: 02074bc0 -> 02074bc4 // processing 02074b4c // 02074b4c e1d100b0 ldrh r0, [r1] // adding link: 02074b4c -> 02074b50 // processing 02074c38 // 02074c38 e5961020 ldr r1, [r6, #0x20] // adding link: 02074c38 -> 02074c3c // processing 02074bc4 // 02074bc4 e1d100b0 ldrh r0, [r1] // adding link: 02074bc4 -> 02074bc8 // processing 02074b50 // 02074b50 e3100902 tst r0, #0x8000 // adding link: 02074b50 -> 02074b54 // processing 02074c3c // 02074c3c e596005c ldr r0, [r6, #0x5c] // adding link: 02074c3c -> 02074c40 // processing 02074bc8 // 02074bc8 e3100902 tst r0, #0x8000 // adding link: 02074bc8 -> 02074bcc // processing 02074b54 // 02074b54 1afffffc bne 0x2074b4c // adding jump: 02074b54 -> 02074b4c (sub=0) // adding link: 02074b54 -> 02074b58 // processing 02074c40 // 02074c40 e2633000 rsb r3, r3, #0x0 // adding link: 02074c40 -> 02074c44 // processing 02074bcc // 02074bcc 1afffffc bne 0x2074bc4 // adding jump: 02074bcc -> 02074bc4 (sub=0) // adding link: 02074bcc -> 02074bd0 // processing 02074b58 // 02074b58 e59f78f0 ldr r7, [r15, #0x8f0] ; 0x2075450 // adding link: 02074b58 -> 02074b5c // processing 02074c44 // 02074c44 e0c02091 smull r2, r0, r1, r0 // adding link: 02074c44 -> 02074c48 // processing 02074bd0 // 02074bd0 e59f1874 ldr r1, [r15, #0x874] ; 0x207544c // adding link: 02074bd0 -> 02074bd4 // processing 02074b5c // 02074b5c e28d0030 add r0, r13, #0x30 // adding link: 02074b5c -> 02074b60 // processing 02074c48 // 02074c48 e1a013a2 mov r1, r2, lsr #0x7 // adding link: 02074c48 -> 02074c4c // processing 02074bd4 // 02074bd4 e1d100b0 ldrh r0, [r1] // adding link: 02074bd4 -> 02074bd8 // processing 02074b60 // 02074b60 e5971000 ldr r1, [r7] // adding link: 02074b60 -> 02074b64 // processing 02074c4c // 02074c4c e1811c80 orr r1, r1, r0, lsl #0x19 // adding link: 02074c4c -> 02074c50 // processing 02074bd8 // 02074bd8 e3100902 tst r0, #0x8000 // adding link: 02074bd8 -> 02074bdc // processing 02074b64 // 02074b64 e5861024 str r1, [r6, #0x24] // adding link: 02074b64 -> 02074b68 // processing 02074c50 // 02074c50 e586106c str r1, [r6, #0x6c] // adding link: 02074c50 -> 02074c54 // processing 02074bdc // 02074bdc 1afffffc bne 0x2074bd4 // adding jump: 02074bdc -> 02074bd4 (sub=0) // adding link: 02074bdc -> 02074be0 // processing 02074b68 // 02074b68 ebfe67ab bl 0x200ea1c // adding jump: 02074b68 -> 0200ea1c (sub=1) // adding link: 02074b68 -> 02074b6c // processing 02074c54 // 02074c54 e5942044 ldr r2, [r4, #0x44] // adding link: 02074c54 -> 02074c58 // processing 02074be0 // 02074be0 e59f7868 ldr r7, [r15, #0x868] ; 0x2075450 // adding link: 02074be0 -> 02074be4 // processing 0200ea1c // 0200ea1c e92d0010 stmdb r13!, { r4 } // adding link: 0200ea1c -> 0200ea20 // processing 02074b6c // 02074b6c e2471020 sub r1, r7, #0x20 // adding link: 02074b6c -> 02074b70 // processing 02074c58 // 02074c58 e9920101 ldmib r2, { r0, r8 } // adding link: 02074c58 -> 02074c5c // processing 02074be4 // 02074be4 e28d004c add r0, r13, #0x4c // adding link: 02074be4 -> 02074be8 // processing 0200ea20 // 0200ea20 e59f102c ldr r1, [r15, #0x2c] ; 0x200ea54 // adding link: 0200ea20 -> 0200ea24 // processing 02074b70 // 02074b70 e1d100b0 ldrh r0, [r1] // adding link: 02074b70 -> 02074b74 // processing 02074c5c // 02074c5c e5929010 ldr r9, [r2, #0x10] // adding link: 02074c5c -> 02074c60 // processing 02074be8 // 02074be8 e5971000 ldr r1, [r7] // adding link: 02074be8 -> 02074bec // processing 0200ea24 // 0200ea24 e890101c ldmia r0, { r2-r4, r12 } // adding link: 0200ea24 -> 0200ea28 // processing 02074b74 // 02074b74 e3100902 tst r0, #0x8000 // adding link: 02074b74 -> 02074b78 // processing 02074c60 // 02074c60 e1a01800 mov r1, r0, lsl #0x10 // adding link: 02074c60 -> 02074c64 // processing 02074bec // 02074bec e5861028 str r1, [r6, #0x28] // adding link: 02074bec -> 02074bf0 // processing 0200ea28 // 0200ea28 e881101c stmia r1, { r2-r4, r12 } // adding link: 0200ea28 -> 0200ea2c // processing 02074b78 // 02074b78 1afffffc bne 0x2074b70 // adding jump: 02074b78 -> 02074b70 (sub=0) // adding link: 02074b78 -> 02074b7c // processing 02074c64 // 02074c64 e0890108 add r0, r9, r8, lsl #0x2 // adding link: 02074c64 -> 02074c68 // processing 02074bf0 // 02074bf0 ebfe6789 bl 0x200ea1c // adding jump: 02074bf0 -> 0200ea1c (sub=1) // adding link: 02074bf0 -> 02074bf4 // processing 0200ea2c // 0200ea2c e1d021b8 ldrh r2, [r0, #0x18] // adding link: 0200ea2c -> 0200ea30 // processing 02074c68 // 02074c68 e5998008 ldr r8, [r9, #0x8] // adding link: 02074c68 -> 02074c6c // processing 02074bf4 // 02074bf4 e2471020 sub r1, r7, #0x20 // adding link: 02074bf4 -> 02074bf8 // processing 0200ea30 // 0200ea30 e1d031ba ldrh r3, [r0, #0x1a] // adding link: 0200ea30 -> 0200ea34 // processing 02074c6c // 02074c6c e5909008 ldr r9, [r0, #0x8] // adding link: 02074c6c -> 02074c70 // processing 02074bf8 // 02074bf8 e1d100b0 ldrh r0, [r1] // adding link: 02074bf8 -> 02074bfc // processing 0200ea34 // 0200ea34 e14121b0 strh r2, [r1, #-0x10] // adding link: 0200ea34 -> 0200ea38 // processing 02074c70 // 02074c70 e1a004c8 mov r0, r8, asr #0x9 // adding link: 02074c70 -> 02074c74 // processing 02074bfc // 02074bfc e3100902 tst r0, #0x8000 // adding link: 02074bfc -> 02074c00 // processing 0200ea38 // 0200ea38 e1c132b0 strh r3, [r1, #0x20] // adding link: 0200ea38 -> 0200ea3c // processing 02074c74 // 02074c74 e1a08841 mov r8, r1, asr #0x10 // adding link: 02074c74 -> 02074c78 // processing 02074c00 // 02074c00 1afffffc bne 0x2074bf8 // adding jump: 02074c00 -> 02074bf8 (sub=0) // adding link: 02074c00 -> 02074c04 // processing 0200ea3c // 0200ea3c e2800010 add r0, r0, #0x10 // adding link: 0200ea3c -> 0200ea40 // processing 02074c78 // 02074c78 e5921044 ldr r1, [r2, #0x44] // adding link: 02074c78 -> 02074c7c // processing 0200ea40 // 0200ea40 e2811028 add r1, r1, #0x28 // adding link: 0200ea40 -> 0200ea44 // processing 02074c7c // 02074c7c e5926018 ldr r6, [r2, #0x18] // adding link: 02074c7c -> 02074c80 // processing 0200ea44 // 0200ea44 e890000c ldmia r0, { r2, r3 } // adding link: 0200ea44 -> 0200ea48 // processing 02074c80 // 02074c80 e1a01081 mov r1, r1, lsl #0x1 // adding link: 02074c80 -> 02074c84 // processing 0200ea48 // 0200ea48 e881000c stmia r1, { r2, r3 } // adding link: 0200ea48 -> 0200ea4c // processing 02074c84 // 02074c84 e19a10f1 ldrsh r1, [r10, r1] // adding link: 02074c84 -> 02074c88 // processing 0200ea4c // 0200ea4c e8bd0010 ldmia r13!, { r4 } // adding link: 0200ea4c -> 0200ea50 // processing 02074c88 // 02074c88 e592b048 ldr r11, [r2, #0x48] // adding link: 02074c88 -> 02074c8c // processing 0200ea50 // 0200ea50 e12fff1e bx r14 // processing 02074c8c // 02074c8c e596604c ldr r6, [r6, #0x4c] // adding link: 02074c8c -> 02074c90 // processing 02074c90 // 02074c90 e1a0b08b mov r11, r11, lsl #0x1 // adding link: 02074c90 -> 02074c94 // processing 02074c94 // 02074c94 e0000091 mul r0, r1, r0 // adding link: 02074c94 -> 02074c98 // processing 02074c98 // 02074c98 e592100c ldr r1, [r2, #0xc] // adding link: 02074c98 -> 02074c9c // processing 02074c9c // 02074c9c e19aa0fb ldrsh r10, [r10, r11] // adding link: 02074c9c -> 02074ca0 // processing 02074ca0 // 02074ca0 e19770fb ldrsh r7, [r7, r11] // adding link: 02074ca0 -> 02074ca4 // processing 02074ca4 // 02074ca4 e592b014 ldr r11, [r2, #0x14] // adding link: 02074ca4 -> 02074ca8 // processing 02074ca8 // 02074ca8 e0060691 mul r6, r1, r6 // adding link: 02074ca8 -> 02074cac // processing 02074cac // 02074cac e79b8108 ldr r8, [r11, r8, lsl #0x2] // adding link: 02074cac -> 02074cb0 // processing 02074cb0 // 02074cb0 e0891008 add r1, r9, r8 // adding link: 02074cb0 -> 02074cb4 // processing 02074cb4 // 02074cb4 e1a014c1 mov r1, r1, asr #0x9 // adding link: 02074cb4 -> 02074cb8 // processing 02074cb8 // 02074cb8 e008019a mul r8, r10, r1 // adding link: 02074cb8 -> 02074cbc // processing 02074cbc // 02074cbc e1a014c6 mov r1, r6, asr #0x9 // adding link: 02074cbc -> 02074cc0 // processing 02074cc0 // 02074cc0 e1a067c8 mov r6, r8, asr #0xf // adding link: 02074cc0 -> 02074cc4 // processing 02074cc4 // 02074cc4 e0010197 mul r1, r7, r1 // adding link: 02074cc4 -> 02074cc8 // processing 02074cc8 // 02074cc8 e08607c0 add r0, r6, r0, asr #0xf // adding link: 02074cc8 -> 02074ccc // processing 02074ccc // 02074ccc e08017c1 add r1, r0, r1, asr #0xf // adding link: 02074ccc -> 02074cd0 // processing 02074cd0 // 02074cd0 e592001c ldr r0, [r2, #0x1c] // adding link: 02074cd0 -> 02074cd4 // processing 02074cd4 // 02074cd4 e0611381 rsb r1, r1, r1, lsl #0x7 // adding link: 02074cd4 -> 02074cd8 // processing 02074cd8 // 02074cd8 e0810000 add r0, r1, r0 // adding link: 02074cd8 -> 02074cdc // processing 02074cdc // 02074cdc e1500003 cmp r0, r3 // adding link: 02074cdc -> 02074ce0 // processing 02074ce0 // 02074ce0 b1a00003 movlt r0, r3 // adding link: 02074ce0 -> 02074ce4 // processing 02074ce4 // 02074ce4 ba000001 blt 0x2074cf0 // adding jump: 02074ce4 -> 02074cf0 (sub=0) // adding link: 02074ce4 -> 02074ce8 // processing 02074cf0 // 02074cf0 e280792e add r7, r0, #0xb8000 // adding link: 02074cf0 -> 02074cf4 // processing 02074ce8 // 02074ce8 e35009fe cmp r0, #0x3f8000 // adding link: 02074ce8 -> 02074cec // processing 02074cf4 // 02074cf4 e59f3760 ldr r3, [r15, #0x760] ; 0x207545c // adding link: 02074cf4 -> 02074cf8 // processing 02074cec // 02074cec c3a009fe movgt r0, #0x3f8000 // adding link: 02074cec -> 02074cf0 // processing 02074cf8 // 02074cf8 e1a087c7 mov r8, r7, asr #0xf // adding link: 02074cf8 -> 02074cfc // processing 02074cfc // 02074cfc e59f175c ldr r1, [r15, #0x75c] ; 0x2075460 // adding link: 02074cfc -> 02074d00 // processing 02074d00 // 02074d00 e59f0740 ldr r0, [r15, #0x740] ; 0x2075448 // adding link: 02074d00 -> 02074d04 // processing 02074d04 // 02074d04 e7936108 ldr r6, [r3, r8, lsl #0x2] // adding link: 02074d04 -> 02074d08 // processing 02074d08 // 02074d08 e7911108 ldr r1, [r1, r8, lsl #0x2] // adding link: 02074d08 -> 02074d0c // processing 02074d0c // 02074d0c e0073000 and r3, r7, r0 // adding link: 02074d0c -> 02074d10 // processing 02074d10 // 02074d10 e0410006 sub r0, r1, r6 // adding link: 02074d10 -> 02074d14 // processing 02074d14 // 02074d14 e0c01093 smull r1, r0, r3, r0 // adding link: 02074d14 -> 02074d18 // processing 02074d18 // 02074d18 e1a017a1 mov r1, r1, lsr #0xf // adding link: 02074d18 -> 02074d1c // processing 02074d1c // 02074d1c e1811880 orr r1, r1, r0, lsl #0x11 // adding link: 02074d1c -> 02074d20 // processing 02074d20 // 02074d20 e0960001 adds r0, r6, r1 // adding link: 02074d20 -> 02074d24 // processing 02074d24 // 02074d24 e59f1738 ldr r1, [r15, #0x738] ; 0x2075464 // adding link: 02074d24 -> 02074d28 // processing 02074d28 // 02074d28 e5820028 str r0, [r2, #0x28] // adding link: 02074d28 -> 02074d2c // processing 02074d2c // 02074d2c e0806001 add r6, r0, r1 // adding link: 02074d2c -> 02074d30 // processing 02074d30 // 02074d30 e3560000 cmp r6, #0x0 // adding link: 02074d30 -> 02074d34 // processing 02074d34 // 02074d34 d3a06000 movle r6, #0x0 // adding link: 02074d34 -> 02074d38 // processing 02074d38 // 02074d38 e0c13696 smull r3, r1, r6, r6 // adding link: 02074d38 -> 02074d3c // processing 02074d3c // 02074d3c e1a03fa3 mov r3, r3, lsr #0x1f // adding link: 02074d3c -> 02074d40 // processing 02074d40 // 02074d40 e1833081 orr r3, r3, r1, lsl #0x1 // adding link: 02074d40 -> 02074d44 // processing 02074d44 // 02074d44 e1a033c3 mov r3, r3, asr #0x7 // adding link: 02074d44 -> 02074d48 // processing 02074d48 // 02074d48 e3a01506 mov r1, #0x1800000 // adding link: 02074d48 -> 02074d4c // processing 02074d4c // 02074d4c e0878193 umull r8, r7, r3, r1 // adding link: 02074d4c -> 02074d50 // processing 02074d50 // 02074d50 e0277593 mla r7, r3, r5, r7 // adding link: 02074d50 -> 02074d54 // processing 02074d54 // 02074d54 e1a06fc3 mov r6, r3, asr #0x1f // adding link: 02074d54 -> 02074d58 // processing 02074d58 // 02074d58 e0277196 mla r7, r6, r1, r7 // adding link: 02074d58 -> 02074d5c // processing 02074d5c // 02074d5c e1a01c28 mov r1, r8, lsr #0x18 // adding link: 02074d5c -> 02074d60 // processing 02074d60 // 02074d60 e1811407 orr r1, r1, r7, lsl #0x8 // adding link: 02074d60 -> 02074d64 // processing 02074d64 // 02074d64 e1a00440 mov r0, r0, asr #0x8 // adding link: 02074d64 -> 02074d68 // processing 02074d68 // 02074d68 e5923020 ldr r3, [r2, #0x20] // adding link: 02074d68 -> 02074d6c // processing 02074d6c // 02074d6c e2616401 rsb r6, r1, #0x1000000 // adding link: 02074d6c -> 02074d70 // processing 02074d70 // 02074d70 e1a013c3 mov r1, r3, asr #0x7 // adding link: 02074d70 -> 02074d74 // processing 02074d74 // 02074d74 e0c36691 smull r6, r3, r1, r6 // adding link: 02074d74 -> 02074d78 // processing 02074d78 // 02074d78 e1a07c26 mov r7, r6, lsr #0x18 // adding link: 02074d78 -> 02074d7c // processing 02074d7c // 02074d7c e1877403 orr r7, r7, r3, lsl #0x8 // adding link: 02074d7c -> 02074d80 // processing 02074d80 // 02074d80 e2671401 rsb r1, r7, #0x1000000 // adding link: 02074d80 -> 02074d84 // processing 02074d84 // 02074d84 e2600401 rsb r0, r0, #0x1000000 // adding link: 02074d84 -> 02074d88 // processing 02074d88 // 02074d88 e0c30091 smull r0, r3, r1, r0 // adding link: 02074d88 -> 02074d8c // processing 02074d8c // 02074d8c e1a06c20 mov r6, r0, lsr #0x18 // adding link: 02074d8c -> 02074d90 // processing 02074d90 // 02074d90 e5921058 ldr r1, [r2, #0x58] // adding link: 02074d90 -> 02074d94 // processing 02074d94 // 02074d94 e1866403 orr r6, r6, r3, lsl #0x8 // adding link: 02074d94 -> 02074d98 // processing 02074d98 // 02074d98 e0461001 sub r1, r6, r1 // adding link: 02074d98 -> 02074d9c // processing 02074d9c // 02074d9c e1a01341 mov r1, r1, asr #0x6 // adding link: 02074d9c -> 02074da0 // processing 02074da0 // 02074da0 e5821060 str r1, [r2, #0x60] // adding link: 02074da0 -> 02074da4 // processing 02074da4 // 02074da4 e5921058 ldr r1, [r2, #0x58] // adding link: 02074da4 -> 02074da8 // processing 02074da8 // 02074da8 e1a000c7 mov r0, r7, asr #0x1 // adding link: 02074da8 -> 02074dac // processing 02074dac // 02074dac e582105c str r1, [r2, #0x5c] // adding link: 02074dac -> 02074db0 // processing 02074db0 // 02074db0 e5826058 str r6, [r2, #0x58] // adding link: 02074db0 -> 02074db4 // processing 02074db4 // 02074db4 e5921028 ldr r1, [r2, #0x28] // adding link: 02074db4 -> 02074db8 // processing 02074db8 // 02074db8 e2803502 add r3, r0, #0x800000 // adding link: 02074db8 -> 02074dbc // processing 02074dbc // 02074dbc e1a013c1 mov r1, r1, asr #0x7 // adding link: 02074dbc -> 02074dc0 // processing 02074dc0 // 02074dc0 e0c16193 smull r6, r1, r3, r1 // adding link: 02074dc0 -> 02074dc4 // processing 02074dc4 // 02074dc4 e1a03c26 mov r3, r6, lsr #0x18 // adding link: 02074dc4 -> 02074dc8 // processing 02074dc8 // 02074dc8 e592004c ldr r0, [r2, #0x4c] // adding link: 02074dc8 -> 02074dcc // processing 02074dcc // 02074dcc e1833401 orr r3, r3, r1, lsl #0x8 // adding link: 02074dcc -> 02074dd0 // processing 02074dd0 // 02074dd0 e0430000 sub r0, r3, r0 // adding link: 02074dd0 -> 02074dd4 // processing 02074dd4 // 02074dd4 e1a00340 mov r0, r0, asr #0x6 // adding link: 02074dd4 -> 02074dd8 // processing 02074dd8 // 02074dd8 e5820054 str r0, [r2, #0x54] // adding link: 02074dd8 -> 02074ddc // processing 02074ddc // 02074ddc e592004c ldr r0, [r2, #0x4c] // adding link: 02074ddc -> 02074de0 // processing 02074de0 // 02074de0 e5820050 str r0, [r2, #0x50] // adding link: 02074de0 -> 02074de4 // processing 02074de4 // 02074de4 e582304c str r3, [r2, #0x4c] // adding link: 02074de4 -> 02074de8 // processing 02074de8 // 02074de8 e592103c ldr r1, [r2, #0x3c] // adding link: 02074de8 -> 02074dec // processing 02074dec // 02074dec e5920040 ldr r0, [r2, #0x40] // adding link: 02074dec -> 02074df0 // processing 02074df0 // 02074df0 e1500001 cmp r0, r1 // adding link: 02074df0 -> 02074df4 // processing 02074df4 // 02074df4 15821040 strne r1, [r2, #0x40] // adding link: 02074df4 -> 02074df8 // processing 02074df8 // 02074df8 15825034 strne r5, [r2, #0x34] // adding link: 02074df8 -> 02074dfc // processing 02074dfc // 02074dfc 15825038 strne r5, [r2, #0x38] // adding link: 02074dfc -> 02074e00 // processing 02074e00 // 02074e00 e5941048 ldr r1, [r4, #0x48] // adding link: 02074e00 -> 02074e04 // processing 02074e04 // 02074e04 e3e004ff mvn r0, #0xff000000 // adding link: 02074e04 -> 02074e08 // processing 02074e08 // 02074e08 e5915004 ldr r5, [r1, #0x4] // adding link: 02074e08 -> 02074e0c // processing 02074e0c // 02074e0c e5913014 ldr r3, [r1, #0x14] // adding link: 02074e0c -> 02074e10 // processing 02074e10 // 02074e10 e1a02805 mov r2, r5, lsl #0x10 // adding link: 02074e10 -> 02074e14 // processing 02074e14 // 02074e14 e1a02842 mov r2, r2, asr #0x10 // adding link: 02074e14 -> 02074e18 // processing 02074e18 // 02074e18 e3550003 cmp r5, #0x3 // adding link: 02074e18 -> 02074e1c // processing 02074e1c // 02074e1c e7936102 ldr r6, [r3, r2, lsl #0x2] // adding link: 02074e1c -> 02074e20 // processing 02074e20 // 02074e20 0a000003 beq 0x2074e34 // adding jump: 02074e20 -> 02074e34 (sub=0) // adding link: 02074e20 -> 02074e24 // processing 02074e34 // 02074e34 e591501c ldr r5, [r1, #0x1c] // adding link: 02074e34 -> 02074e38 // processing 02074e24 // 02074e24 e3550004 cmp r5, #0x4 // adding link: 02074e24 -> 02074e28 // processing 02074e38 // 02074e38 e0c23596 smull r3, r2, r6, r5 // adding link: 02074e38 -> 02074e3c // processing 02074e28 // 02074e28 1a00000a bne 0x2074e58 // adding jump: 02074e28 -> 02074e58 (sub=0) // adding link: 02074e28 -> 02074e2c // processing 02074e3c // 02074e3c e1a03c23 mov r3, r3, lsr #0x18 // adding link: 02074e3c -> 02074e40 // processing 02074e58 // 02074e58 e0862000 add r2, r6, r0 // adding link: 02074e58 -> 02074e5c // processing 02074e2c // 02074e2c e3a05401 mov r5, #0x1000000 // adding link: 02074e2c -> 02074e30 // processing 02074e40 // 02074e40 e1833402 orr r3, r3, r2, lsl #0x8 // adding link: 02074e40 -> 02074e44 // processing 02074e5c // 02074e5c e591601c ldr r6, [r1, #0x1c] // adding link: 02074e5c -> 02074e60 // processing 02074e30 // 02074e30 ea000012 b 0x2074e80 // adding jump: 02074e30 -> 02074e80 (sub=0) // processing 02074e44 // 02074e44 e3550000 cmp r5, #0x0 // adding link: 02074e44 -> 02074e48 // processing 02074e60 // 02074e60 e1a020c2 mov r2, r2, asr #0x1 // adding link: 02074e60 -> 02074e64 // processing 02074e80 // 02074e80 e5916010 ldr r6, [r1, #0x10] // adding link: 02074e80 -> 02074e84 // processing 02074e48 // 02074e48 c0830000 addgt r0, r3, r0 // adding link: 02074e48 -> 02074e4c // processing 02074e64 // 02074e64 e0c35692 smull r5, r3, r2, r6 // adding link: 02074e64 -> 02074e68 // processing 02074e84 // 02074e84 e5910008 ldr r0, [r1, #0x8] // adding link: 02074e84 -> 02074e88 // processing 02074e4c // 02074e4c c0405005 subgt r5, r0, r5 // adding link: 02074e4c -> 02074e50 // processing 02074e68 // 02074e68 e1a02c25 mov r2, r5, lsr #0x18 // adding link: 02074e68 -> 02074e6c // processing 02074e88 // 02074e88 e5913018 ldr r3, [r1, #0x18] // adding link: 02074e88 -> 02074e8c // processing 02074e50 // 02074e50 d0835000 addle r5, r3, r0 // adding link: 02074e50 -> 02074e54 // processing 02074e6c // 02074e6c e1822403 orr r2, r2, r3, lsl #0x8 // adding link: 02074e6c -> 02074e70 // processing 02074e8c // 02074e8c e0860100 add r0, r6, r0, lsl #0x2 // adding link: 02074e8c -> 02074e90 // processing 02074e54 // 02074e54 ea000009 b 0x2074e80 // adding jump: 02074e54 -> 02074e80 (sub=0) // processing 02074e70 // 02074e70 e3560000 cmp r6, #0x0 // adding link: 02074e70 -> 02074e74 // processing 02074e90 // 02074e90 e591201c ldr r2, [r1, #0x1c] // adding link: 02074e90 -> 02074e94 // processing 02074e74 // 02074e74 c0820000 addgt r0, r2, r0 // adding link: 02074e74 -> 02074e78 // processing 02074e94 // 02074e94 e5900008 ldr r0, [r0, #0x8] // adding link: 02074e94 -> 02074e98 // processing 02074e78 // 02074e78 c0405006 subgt r5, r0, r6 // adding link: 02074e78 -> 02074e7c // processing 02074e98 // 02074e98 e0c78395 smull r8, r7, r5, r3 // adding link: 02074e98 -> 02074e9c // processing 02074e7c // 02074e7c d0825000 addle r5, r2, r0 // adding link: 02074e7c -> 02074e80 // processing 02074e9c // 02074e9c e0c30092 smull r0, r3, r2, r0 // adding link: 02074e9c -> 02074ea0 // processing 02074ea0 // 02074ea0 e5915024 ldr r5, [r1, #0x24] // adding link: 02074ea0 -> 02074ea4 // processing 02074ea4 // 02074ea4 e1a02c20 mov r2, r0, lsr #0x18 // adding link: 02074ea4 -> 02074ea8 // processing 02074ea8 // 02074ea8 e0865105 add r5, r6, r5, lsl #0x2 // adding link: 02074ea8 -> 02074eac // processing 02074eac // 02074eac e1a00c28 mov r0, r8, lsr #0x18 // adding link: 02074eac -> 02074eb0 // processing 02074eb0 // 02074eb0 e1800407 orr r0, r0, r7, lsl #0x8 // adding link: 02074eb0 -> 02074eb4 // processing 02074eb4 // 02074eb4 e5955008 ldr r5, [r5, #0x8] // adding link: 02074eb4 -> 02074eb8 // processing 02074eb8 // 02074eb8 e1822403 orr r2, r2, r3, lsl #0x8 // adding link: 02074eb8 -> 02074ebc // processing 02074ebc // 02074ebc e0956002 adds r6, r5, r2 // adding link: 02074ebc -> 02074ec0 // processing 02074ec0 // 02074ec0 e1a02c43 mov r2, r3, asr #0x18 // adding link: 02074ec0 -> 02074ec4 // processing 02074ec4 // 02074ec4 e0837690 umull r7, r3, r0, r6 // adding link: 02074ec4 -> 02074ec8 // processing 02074ec8 // 02074ec8 e0a22fc5 adc r2, r2, r5, asr #0x1f // adding link: 02074ec8 -> 02074ecc // processing 02074ecc // 02074ecc e0233290 mla r3, r0, r2, r3 // adding link: 02074ecc -> 02074ed0 // processing 02074ed0 // 02074ed0 e1a00fc0 mov r0, r0, asr #0x1f // adding link: 02074ed0 -> 02074ed4 // processing 02074ed4 // 02074ed4 e0233690 mla r3, r0, r6, r3 // adding link: 02074ed4 -> 02074ed8 // processing 02074ed8 // 02074ed8 e1a02c27 mov r2, r7, lsr #0x18 // adding link: 02074ed8 -> 02074edc // processing 02074edc // 02074edc e5910028 ldr r0, [r1, #0x28] // adding link: 02074edc -> 02074ee0 // processing 02074ee0 // 02074ee0 e1822403 orr r2, r2, r3, lsl #0x8 // adding link: 02074ee0 -> 02074ee4 // processing 02074ee4 // 02074ee4 e0420000 sub r0, r2, r0 // adding link: 02074ee4 -> 02074ee8 // processing 02074ee8 // 02074ee8 e1a00340 mov r0, r0, asr #0x6 // adding link: 02074ee8 -> 02074eec // processing 02074eec // 02074eec e5810030 str r0, [r1, #0x30] // adding link: 02074eec -> 02074ef0 // processing 02074ef0 // 02074ef0 e5910028 ldr r0, [r1, #0x28] // adding link: 02074ef0 -> 02074ef4 // processing 02074ef4 // 02074ef4 e3a06000 mov r6, #0x0 // adding link: 02074ef4 -> 02074ef8 // processing 02074ef8 // 02074ef8 e581002c str r0, [r1, #0x2c] // adding link: 02074ef8 -> 02074efc // processing 02074efc // 02074efc e5812028 str r2, [r1, #0x28] // adding link: 02074efc -> 02074f00 // processing 02074f00 // 02074f00 e5940020 ldr r0, [r4, #0x20] // adding link: 02074f00 -> 02074f04 // processing 02074f04 // 02074f04 e3500000 cmp r0, #0x0 // adding link: 02074f04 -> 02074f08 // processing 02074f08 // 02074f08 da000145 ble 0x2075424 // adding jump: 02074f08 -> 02075424 (sub=0) // adding link: 02074f08 -> 02074f0c // processing 02075424 // 02075424 e3a00000 mov r0, #0x0 // adding link: 02075424 -> 02075428 // processing 02074f0c // 02074f0c e59fc554 ldr r12, [r15, #0x554] ; 0x2075468 // adding link: 02074f0c -> 02074f10 // processing 02075428 // 02075428 e28dd068 add r13, r13, #0x68 // adding link: 02075428 -> 0207542c // processing 02074f10 // 02074f10 e3e00102 mvn r0, #0x80000000 // adding link: 02074f10 -> 02074f14 // processing 0207542c // 0207542c e8bd8ff8 ldmia r13!, { r3-r11, r15 } // return // processing 02074f14 // 02074f14 e1a0292c mov r2, r12, lsr #0x12 // adding link: 02074f14 -> 02074f18 // processing 02074f18 // 02074f18 e58d2008 str r2, [r13, #0x8] // adding link: 02074f18 -> 02074f1c // processing 02074f1c // 02074f1c e59f250c ldr r2, [r15, #0x50c] ; 0x2075430 // adding link: 02074f1c -> 02074f20 // processing 02074f20 // 02074f20 e58d0004 str r0, [r13, #0x4] // adding link: 02074f20 -> 02074f24 // processing 02074f24 // 02074f24 e282203f add r2, r2, #0x3f // adding link: 02074f24 -> 02074f28 // processing 02074f28 // 02074f28 e58d200c str r2, [r13, #0xc] // adding link: 02074f28 -> 02074f2c // processing 02074f2c // 02074f2c e59f24fc ldr r2, [r15, #0x4fc] ; 0x2075430 // adding link: 02074f2c -> 02074f30 // processing 02074f30 // 02074f30 e59d1004 ldr r1, [r13, #0x4] // adding link: 02074f30 -> 02074f34 // processing 02074f34 // 02074f34 e282203f add r2, r2, #0x3f // adding link: 02074f34 -> 02074f38 // processing 02074f38 // 02074f38 e58d2010 str r2, [r13, #0x10] // adding link: 02074f38 -> 02074f3c // processing 02074f3c // 02074f3c e59d2004 ldr r2, [r13, #0x4] // adding link: 02074f3c -> 02074f40 // processing 02074f40 // 02074f40 e1a0e8ac mov r14, r12, lsr #0x11 // adding link: 02074f40 -> 02074f44 // processing 02074f44 // 02074f44 e242247f sub r2, r2, #0x7f000000 // adding link: 02074f44 -> 02074f48 // processing 02074f48 // 02074f48 e58d2014 str r2, [r13, #0x14] // adding link: 02074f48 -> 02074f4c // processing 02074f4c // 02074f4c e59d2004 ldr r2, [r13, #0x4] // adding link: 02074f4c -> 02074f50 // processing 02074f50 // 02074f50 e260047f rsb r0, r0, #0x7f000000 // adding link: 02074f50 -> 02074f54 // processing 02074f54 // 02074f54 e262247f rsb r2, r2, #0x7f000000 // adding link: 02074f54 -> 02074f58 // processing 02074f58 // 02074f58 e58d2018 str r2, [r13, #0x18] // adding link: 02074f58 -> 02074f5c // processing 02074f5c // 02074f5c e59d2004 ldr r2, [r13, #0x4] // adding link: 02074f5c -> 02074f60 // processing 02074f60 // 02074f60 e241147f sub r1, r1, #0x7f000000 // adding link: 02074f60 -> 02074f64 // processing 02074f64 // 02074f64 e242247f sub r2, r2, #0x7f000000 // adding link: 02074f64 -> 02074f68 // processing 02074f68 // 02074f68 e58d201c str r2, [r13, #0x1c] // adding link: 02074f68 -> 02074f6c // processing 02074f6c // 02074f6c e59d2004 ldr r2, [r13, #0x4] // adding link: 02074f6c -> 02074f70 // processing 02074f70 // 02074f70 e262247f rsb r2, r2, #0x7f000000 // adding link: 02074f70 -> 02074f74 // processing 02074f74 // 02074f74 e58d2020 str r2, [r13, #0x20] // adding link: 02074f74 -> 02074f78 // processing 02074f78 // 02074f78 e59d2004 ldr r2, [r13, #0x4] // adding link: 02074f78 -> 02074f7c // processing 02074f7c // 02074f7c e242247f sub r2, r2, #0x7f000000 // adding link: 02074f7c -> 02074f80 // processing 02074f80 // 02074f80 e58d2024 str r2, [r13, #0x24] // adding link: 02074f80 -> 02074f84 // processing 02074f84 // 02074f84 e59d2004 ldr r2, [r13, #0x4] // adding link: 02074f84 -> 02074f88 // processing 02074f88 // 02074f88 e262247f rsb r2, r2, #0x7f000000 // adding link: 02074f88 -> 02074f8c // processing 02074f8c // 02074f8c e58d2028 str r2, [r13, #0x28] // adding link: 02074f8c -> 02074f90 // processing 02074f90 // 02074f90 e28c2901 add r2, r12, #0x4000 // adding link: 02074f90 -> 02074f94 // processing 02074f94 // 02074f94 e58d202c str r2, [r13, #0x2c] // adding link: 02074f94 -> 02074f98 // processing 02074f98 // 02074f98 e5942040 ldr r2, [r4, #0x40] // adding link: 02074f98 -> 02074f9c // processing 02074f9c // 02074f9c e5923014 ldr r3, [r2, #0x14] // adding link: 02074f9c -> 02074fa0 // processing 02074fa0 // 02074fa0 e592501c ldr r5, [r2, #0x1c] // adding link: 02074fa0 -> 02074fa4 // processing 02074fa4 // 02074fa4 e0435005 sub r5, r3, r5 // adding link: 02074fa4 -> 02074fa8 // processing 02074fa8 // 02074fa8 e5825014 str r5, [r2, #0x14] // adding link: 02074fa8 -> 02074fac // processing 02074fac // 02074fac e592a018 ldr r10, [r2, #0x18] // adding link: 02074fac -> 02074fb0 // processing 02074fb0 // 02074fb0 e5925020 ldr r5, [r2, #0x20] // adding link: 02074fb0 -> 02074fb4 // processing 02074fb4 // 02074fb4 e04a5005 sub r5, r10, r5 // adding link: 02074fb4 -> 02074fb8 // processing 02074fb8 // 02074fb8 e5825018 str r5, [r2, #0x18] // adding link: 02074fb8 -> 02074fbc // processing 02074fbc // 02074fbc e592500c ldr r5, [r2, #0xc] // adding link: 02074fbc -> 02074fc0 // processing 02074fc0 // 02074fc0 e3550003 cmp r5, #0x3 // adding link: 02074fc0 -> 02074fc4 // processing 02074fc4 // 02074fc4 908ff105 addls r15, r15, r5, lsl #0x2 // foudn addls sha=2 rm=5 // target=02075050 // adding jump: 02074fc4 -> 02075050 (sub=0) // target=02075050 // adding jump: 02074fc4 -> 02075050 (sub=0) // target=02074fdc // adding jump: 02074fc4 -> 02074fdc (sub=0) // target=0207500c // adding jump: 02074fc4 -> 0207500c (sub=0) // target=02075030 // adding jump: 02074fc4 -> 02075030 (sub=0) // processing 02075050 // 02075050 e5925048 ldr r5, [r2, #0x48] // adding link: 02075050 -> 02075054 // processing 02074fdc // 02074fdc e5929060 ldr r9, [r2, #0x60] // adding link: 02074fdc -> 02074fe0 // processing 0207500c // 0207500c e5929068 ldr r9, [r2, #0x68] // adding link: 0207500c -> 02075010 // processing 02075030 // 02075030 e5929018 ldr r9, [r2, #0x18] // adding link: 02075030 -> 02075034 // processing 02075054 // 02075054 e3550001 cmp r5, #0x1 // adding link: 02075054 -> 02075058 // processing 02074fe0 // 02074fe0 e5928014 ldr r8, [r2, #0x14] // adding link: 02074fe0 -> 02074fe4 // processing 02075010 // 02075010 e5928014 ldr r8, [r2, #0x14] // adding link: 02075010 -> 02075014 // processing 02075034 // 02075034 e592504c ldr r5, [r2, #0x4c] // adding link: 02075034 -> 02075038 // processing 02075058 // 02075058 1a000003 bne 0x207506c // adding jump: 02075058 -> 0207506c (sub=0) // adding link: 02075058 -> 0207505c // processing 02074fe4 // 02074fe4 e592504c ldr r5, [r2, #0x4c] // adding link: 02074fe4 -> 02074fe8 // processing 02075014 // 02075014 e592504c ldr r5, [r2, #0x4c] // adding link: 02075014 -> 02075018 // processing 02075038 // 02075038 e592706c ldr r7, [r2, #0x6c] // adding link: 02075038 -> 0207503c // processing 0207506c // 0207506c e592502c ldr r5, [r2, #0x2c] // adding link: 0207506c -> 02075070 // processing 0207505c // 0207505c e5925014 ldr r5, [r2, #0x14] // adding link: 0207505c -> 02075060 // processing 02074fe8 // 02074fe8 e0070995 mul r7, r5, r9 // adding link: 02074fe8 -> 02074fec // processing 02075018 // 02075018 e0070995 mul r7, r5, r9 // adding link: 02075018 -> 0207501c // processing 0207503c // 0207503c e0c78795 smull r8, r7, r5, r7 // adding link: 0207503c -> 02075040 // processing 02075070 // 02075070 e5923014 ldr r3, [r2, #0x14] // adding link: 02075070 -> 02075074 // processing 02075060 // 02075060 e1550003 cmp r5, r3 // adding link: 02075060 -> 02075064 // processing 02074fec // 02074fec e1a053c7 mov r5, r7, asr #0x7 // adding link: 02074fec -> 02074ff0 // processing 0207501c // 0207501c e1a053c7 mov r5, r7, asr #0x7 // adding link: 0207501c -> 02075020 // processing 02075040 // 02075040 e1a05c28 mov r5, r8, lsr #0x18 // adding link: 02075040 -> 02075044 // processing 02075074 // 02075074 e5929018 ldr r9, [r2, #0x18] // adding link: 02075074 -> 02075078 // processing 02075064 // 02075064 c59d3004 ldrgt r3, [r13, #0x4] // adding link: 02075064 -> 02075068 // processing 02074ff0 // 02074ff0 e0050599 mul r5, r9, r5 // adding link: 02074ff0 -> 02074ff4 // processing 02075020 // 02075020 e0050599 mul r5, r9, r5 // adding link: 02075020 -> 02075024 // processing 02075044 // 02075044 e1855407 orr r5, r5, r7, lsl #0x8 // adding link: 02075044 -> 02075048 // processing 02075078 // 02075078 e3550003 cmp r5, #0x3 // adding link: 02075078 -> 0207507c // processing 02075068 // 02075068 c5823018 strgt r3, [r2, #0x18] // adding link: 02075068 -> 0207506c // processing 02074ff4 // 02074ff4 e04850c5 sub r5, r8, r5, asr #0x1 // adding link: 02074ff4 -> 02074ff8 // processing 02075024 // 02075024 e04850c5 sub r5, r8, r5, asr #0x1 // adding link: 02075024 -> 02075028 // processing 02075048 // 02075048 e0495005 sub r5, r9, r5 // adding link: 02075048 -> 0207504c // processing 0207507c // 0207507c 908ff105 addls r15, r15, r5, lsl #0x2 // foudn addls sha=2 rm=5 // target=0207514c // adding jump: 0207507c -> 0207514c (sub=0) // target=020750fc // adding jump: 0207507c -> 020750fc (sub=0) // target=02075094 // adding jump: 0207507c -> 02075094 (sub=0) // target=020750c4 // adding jump: 0207507c -> 020750c4 (sub=0) // target=02075124 // adding jump: 0207507c -> 02075124 (sub=0) // processing 02074ff8 // 02074ff8 e5825014 str r5, [r2, #0x14] // adding link: 02074ff8 -> 02074ffc // processing 02075028 // 02075028 e5825014 str r5, [r2, #0x14] // adding link: 02075028 -> 0207502c // processing 0207504c // 0207504c e5825018 str r5, [r2, #0x18] // adding link: 0207504c -> 02075050 // processing 0207514c // 0207514c e5925030 ldr r5, [r2, #0x30] // adding link: 0207514c -> 02075150 // processing 020750fc // 020750fc e5925014 ldr r5, [r2, #0x14] // adding link: 020750fc -> 02075100 // processing 02075094 // 02075094 e5925024 ldr r5, [r2, #0x24] // adding link: 02075094 -> 02075098 // processing 020750c4 // 020750c4 e1a03843 mov r3, r3, asr #0x10 // adding link: 020750c4 -> 020750c8 // processing 02075124 // 02075124 e5925040 ldr r5, [r2, #0x40] // adding link: 02075124 -> 02075128 // processing 02074ffc // 02074ffc e5929018 ldr r9, [r2, #0x18] // adding link: 02074ffc -> 02075000 // processing 0207502c // 0207502c ea000007 b 0x2075050 // adding jump: 0207502c -> 02075050 (sub=0) // processing 02075150 // 02075150 e3550003 cmp r5, #0x3 // adding link: 02075150 -> 02075154 // processing 02075100 // 02075100 e1a03843 mov r3, r3, asr #0x10 // adding link: 02075100 -> 02075104 // processing 02075098 // 02075098 e1a03843 mov r3, r3, asr #0x10 // adding link: 02075098 -> 0207509c // processing 020750c8 // 020750c8 e5925024 ldr r5, [r2, #0x24] // adding link: 020750c8 -> 020750cc // processing 02075128 // 02075128 e3150101 tst r5, #0x40000000 // adding link: 02075128 -> 0207512c // processing 02075000 // 02075000 e592504c ldr r5, [r2, #0x4c] // adding link: 02075000 -> 02075004 // processing 02075154 // 02075154 908ff105 addls r15, r15, r5, lsl #0x2 // foudn addls sha=2 rm=5 // target=02075234 // adding jump: 02075154 -> 02075234 (sub=0) // target=020751d4 // adding jump: 02075154 -> 020751d4 (sub=0) // target=0207516c // adding jump: 02075154 -> 0207516c (sub=0) // target=0207519c // adding jump: 02075154 -> 0207519c (sub=0) // target=020751fc // adding jump: 02075154 -> 020751fc (sub=0) // processing 02075104 // 02075104 e1a07845 mov r7, r5, asr #0x10 // adding link: 02075104 -> 02075108 // processing 0207509c // 0207509c e1a05845 mov r5, r5, asr #0x10 // adding link: 0207509c -> 020750a0 // processing 020750cc // 020750cc e3530000 cmp r3, #0x0 // adding link: 020750cc -> 020750d0 // processing 0207512c // 0207512c 059f32fc ldreq r3, [r15, #0x2fc] ; 0x2075430 // adding link: 0207512c -> 02075130 // processing 02075004 // 02075004 e5927064 ldr r7, [r2, #0x64] // adding link: 02075004 -> 02075008 // processing 02075234 // 02075234 e1a05489 mov r5, r9, lsl #0x9 // adding link: 02075234 -> 02075238 // processing 020751d4 // 020751d4 e5927018 ldr r7, [r2, #0x18] // adding link: 020751d4 -> 020751d8 // processing 0207516c // 0207516c e5925028 ldr r5, [r2, #0x28] // adding link: 0207516c -> 02075170 // processing 0207519c // 0207519c e1a05849 mov r5, r9, asr #0x10 // adding link: 0207519c -> 020751a0 // processing 020751fc // 020751fc e5927044 ldr r7, [r2, #0x44] // adding link: 020751fc -> 02075200 // processing 02075108 // 02075108 e59d500c ldr r5, [r13, #0xc] // adding link: 02075108 -> 0207510c // processing 020750a0 // 020750a0 e0050593 mul r5, r3, r5 // adding link: 020750a0 -> 020750a4 // processing 020750d0 // 020750d0 d2633000 rsble r3, r3, #0x0 // adding link: 020750d0 -> 020750d4 // processing 02075130 // 02075130 00253003 eoreq r3, r5, r3 // adding link: 02075130 -> 02075134 // processing 02075008 // 02075008 ea00000b b 0x207503c // adding jump: 02075008 -> 0207503c (sub=0) // processing 02075238 // 02075238 e582504c str r5, [r2, #0x4c] // adding link: 02075238 -> 0207523c // processing 020751d8 // 020751d8 e1a05849 mov r5, r9, asr #0x10 // adding link: 020751d8 -> 020751dc // processing 02075170 // 02075170 e1a07849 mov r7, r9, asr #0x10 // adding link: 02075170 -> 02075174 // processing 020751a0 // 020751a0 e3550000 cmp r5, #0x0 // adding link: 020751a0 -> 020751a4 // processing 02075200 // 02075200 e3170101 tst r7, #0x40000000 // adding link: 02075200 -> 02075204 // processing 0207510c // 0207510c e3530000 cmp r3, #0x0 // adding link: 0207510c -> 02075110 // processing 020750a4 // 020750a4 e1a05445 mov r5, r5, asr #0x8 // adding link: 020750a4 -> 020750a8 // processing 020750d4 // 020750d4 e08c3083 add r3, r12, r3, lsl #0x1 // adding link: 020750d4 -> 020750d8 // processing 02075134 // 02075134 01a03083 moveq r3, r3, lsl #0x1 // adding link: 02075134 -> 02075138 // processing 0207523c // 0207523c e5925038 ldr r5, [r2, #0x38] // adding link: 0207523c -> 02075240 // processing 020751dc // 020751dc e1a08847 mov r8, r7, asr #0x10 // adding link: 020751dc -> 020751e0 // processing 02075174 // 02075174 e1a05845 mov r5, r5, asr #0x10 // adding link: 02075174 -> 02075178 // processing 020751a4 // 020751a4 d2655000 rsble r5, r5, #0x0 // adding link: 020751a4 -> 020751a8 // processing 02075204 // 02075204 059f5224 ldreq r5, [r15, #0x224] ; 0x2075430 // adding link: 02075204 -> 02075208 // processing 02075110 // 02075110 e0050597 mul r5, r7, r5 // adding link: 02075110 -> 02075114 // processing 020750a8 // 020750a8 e15508ac cmp r5, r12, lsr #0x11 // adding link: 020750a8 -> 020750ac // processing 020750d8 // 020750d8 e1a05845 mov r5, r5, asr #0x10 // adding link: 020750d8 -> 020750dc // processing 02075138 // 02075138 03833001 orreq r3, r3, #0x1 // adding link: 02075138 -> 0207513c // processing 02075240 // 02075240 e592203c ldr r2, [r2, #0x3c] // adding link: 02075240 -> 02075244 // processing 020751e0 // 020751e0 e59d7010 ldr r7, [r13, #0x10] // adding link: 020751e0 -> 020751e4 // processing 02075178 // 02075178 e0050597 mul r5, r7, r5 // adding link: 02075178 -> 0207517c // processing 020751a8 // 020751a8 e08c7085 add r7, r12, r5, lsl #0x1 // adding link: 020751a8 -> 020751ac // processing 02075208 // 02075208 00275005 eoreq r5, r7, r5 // adding link: 02075208 -> 0207520c // processing 02075114 // 02075114 d2633000 rsble r3, r3, #0x0 // adding link: 02075114 -> 02075118 // processing 020750ac // 020750ac c1a0500e movgt r5, r14 // adding link: 020750ac -> 020750b0 // processing 020750dc // 020750dc e0050593 mul r5, r3, r5 // adding link: 020750dc -> 020750e0 // processing 0207513c // 0207513c 11a03085 movne r3, r5, lsl #0x1 // adding link: 0207513c -> 02075140 // processing 02075244 // 02075244 e5947044 ldr r7, [r4, #0x44] // adding link: 02075244 -> 02075248 // processing 020751e4 // 020751e4 e3550000 cmp r5, #0x0 // adding link: 020751e4 -> 020751e8 // processing 0207517c // 0207517c e1a05445 mov r5, r5, asr #0x8 // adding link: 0207517c -> 02075180 // processing 020751ac // 020751ac e5925028 ldr r5, [r2, #0x28] // adding link: 020751ac -> 020751b0 // processing 0207520c // 0207520c 01a05085 moveq r5, r5, lsl #0x1 // adding link: 0207520c -> 02075210 // processing 02075118 // 02075118 e08c3083 add r3, r12, r3, lsl #0x1 // adding link: 02075118 -> 0207511c // processing 020750b0 // 020750b0 ca000001 bgt 0x20750bc // adding jump: 020750b0 -> 020750bc (sub=0) // adding link: 020750b0 -> 020750b4 // processing 020750e0 // 020750e0 e1a03445 mov r3, r5, asr #0x8 // adding link: 020750e0 -> 020750e4 // processing 02075140 // 02075140 e5823040 str r3, [r2, #0x40] // adding link: 02075140 -> 02075144 // processing 02075248 // 02075248 e0020299 mul r2, r9, r2 // adding link: 02075248 -> 0207524c // processing 020751e8 // 020751e8 e0070798 mul r7, r8, r7 // adding link: 020751e8 -> 020751ec // processing 02075180 // 02075180 e15508ac cmp r5, r12, lsr #0x11 // adding link: 02075180 -> 02075184 // processing 020751b0 // 020751b0 e1a05845 mov r5, r5, asr #0x10 // adding link: 020751b0 -> 020751b4 // processing 02075210 // 02075210 03855001 orreq r5, r5, #0x1 // adding link: 02075210 -> 02075214 // processing 0207511c // 0207511c e08337c5 add r3, r3, r5, asr #0xf // adding link: 0207511c -> 02075120 // processing 020750bc // 020750bc e0433005 sub r3, r3, r5 // adding link: 020750bc -> 020750c0 // processing 020750b4 // 020750b4 e155000c cmp r5, r12 // adding link: 020750b4 -> 020750b8 // processing 020750e4 // 020750e4 e15c0445 cmp r12, r5, asr #0x8 // adding link: 020750e4 -> 020750e8 // processing 02075144 // 02075144 e1a03003 mov r3, r3 // adding link: 02075144 -> 02075148 // processing 0207524c // 0207524c e0222593 mla r2, r3, r5, r2 // adding link: 0207524c -> 02075250 // processing 020751ec // 020751ec d2655000 rsble r5, r5, #0x0 // adding link: 020751ec -> 020751f0 // processing 02075184 // 02075184 c1a0500e movgt r5, r14 // adding link: 02075184 -> 02075188 // processing 020751b4 // 020751b4 e0050597 mul r5, r7, r5 // adding link: 020751b4 -> 020751b8 // processing 02075214 // 02075214 11a05087 movne r5, r7, lsl #0x1 // adding link: 02075214 -> 02075218 // processing 02075120 // 02075120 ea000009 b 0x207514c // adding jump: 02075120 -> 0207514c (sub=0) // processing 020750c0 // 020750c0 ea000021 b 0x207514c // adding jump: 020750c0 -> 0207514c (sub=0) // processing 020750b8 // 020750b8 b1a0500c movlt r5, r12 // adding link: 020750b8 -> 020750bc // processing 020750e8 // 020750e8 c1a0300c movgt r3, r12 // adding link: 020750e8 -> 020750ec // processing 02075148 // 02075148 e1a03843 mov r3, r3, asr #0x10 // adding link: 02075148 -> 0207514c // processing 02075250 // 02075250 e1a027c2 mov r2, r2, asr #0xf // adding link: 02075250 -> 02075254 // processing 020751f0 // 020751f0 e08c5085 add r5, r12, r5, lsl #0x1 // adding link: 020751f0 -> 020751f4 // processing 02075188 // 02075188 ca000001 bgt 0x2075194 // adding jump: 02075188 -> 02075194 (sub=0) // adding link: 02075188 -> 0207518c // processing 020751b8 // 020751b8 e1a09445 mov r9, r5, asr #0x8 // adding link: 020751b8 -> 020751bc // processing 02075218 // 02075218 e5825044 str r5, [r2, #0x44] // adding link: 02075218 -> 0207521c // processing 020750ec // 020750ec ca000016 bgt 0x207514c // adding jump: 020750ec -> 0207514c (sub=0) // adding link: 020750ec -> 020750f0 // processing 02075254 // 02075254 e5973024 ldr r3, [r7, #0x24] // adding link: 02075254 -> 02075258 // processing 020751f4 // 020751f4 e08597c7 add r9, r5, r7, asr #0xf // adding link: 020751f4 -> 020751f8 // processing 02075194 // 02075194 e0479005 sub r9, r7, r5 // adding link: 02075194 -> 02075198 // processing 0207518c // 0207518c e155000c cmp r5, r12 // adding link: 0207518c -> 02075190 // processing 020751bc // 020751bc e15c0445 cmp r12, r5, asr #0x8 // adding link: 020751bc -> 020751c0 // processing 0207521c // 0207521c e029500a eor r5, r9, r10 // adding link: 0207521c -> 02075220 // processing 020750f0 // 020750f0 e15308ac cmp r3, r12, lsr #0x11 // adding link: 020750f0 -> 020750f4 // processing 02075258 // 02075258 e1a05482 mov r5, r2, lsl #0x9 // adding link: 02075258 -> 0207525c // processing 020751f8 // 020751f8 ea00000d b 0x2075234 // adding jump: 020751f8 -> 02075234 (sub=0) // processing 02075198 // 02075198 ea000025 b 0x2075234 // adding jump: 02075198 -> 02075234 (sub=0) // processing 02075190 // 02075190 b1a0500c movlt r5, r12 // adding link: 02075190 -> 02075194 // processing 020751c0 // 020751c0 c1a0900c movgt r9, r12 // adding link: 020751c0 -> 020751c4 // processing 02075220 // 02075220 e1b05fc5 movs r5, r5, asr #0x1f // adding link: 02075220 -> 02075224 // processing 020750f4 // 020750f4 c1a0300e movgt r3, r14 // adding link: 020750f4 -> 020750f8 // processing 0207525c // 0207525c e0030392 mul r3, r2, r3 // adding link: 0207525c -> 02075260 // processing 020751c4 // 020751c4 ca00001a bgt 0x2075234 // adding jump: 020751c4 -> 02075234 (sub=0) // adding link: 020751c4 -> 020751c8 // processing 02075224 // 02075224 15925044 ldrne r5, [r2, #0x44] // adding link: 02075224 -> 02075228 // processing 020750f8 // 020750f8 ea000013 b 0x207514c // adding jump: 020750f8 -> 0207514c (sub=0) // processing 02075260 // 02075260 e5978034 ldr r8, [r7, #0x34] // adding link: 02075260 -> 02075264 // processing 020751c8 // 020751c8 e15908ac cmp r9, r12, lsr #0x11 // adding link: 020751c8 -> 020751cc // processing 02075228 // 02075228 11a09845 movne r9, r5, asr #0x10 // adding link: 02075228 -> 0207522c // processing 02075264 // 02075264 e597205c ldr r2, [r7, #0x5c] // adding link: 02075264 -> 02075268 // processing 020751cc // 020751cc c1a0900e movgt r9, r14 // adding link: 020751cc -> 020751d0 // processing 0207522c // 0207522c 15829050 strne r9, [r2, #0x50] // adding link: 0207522c -> 02075230 // processing 02075268 // 02075268 e597b038 ldr r11, [r7, #0x38] // adding link: 02075268 -> 0207526c // processing 020751d0 // 020751d0 ea000017 b 0x2075234 // adding jump: 020751d0 -> 02075234 (sub=0) // processing 02075230 // 02075230 05929050 ldreq r9, [r2, #0x50] // adding link: 02075230 -> 02075234 // processing 0207526c // 0207526c e0ca2298 smull r2, r10, r8, r2 // adding link: 0207526c -> 02075270 // processing 02075270 // 02075270 e1a02ba2 mov r2, r2, lsr #0x17 // adding link: 02075270 -> 02075274 // processing 02075274 // 02075274 e182248a orr r2, r2, r10, lsl #0x9 // adding link: 02075274 -> 02075278 // processing 02075278 // 02075278 e09b2002 adds r2, r11, r2 // adding link: 02075278 -> 0207527c // processing 0207527c // 0207527c e0623343 rsb r3, r2, r3, asr #0x6 // adding link: 0207527c -> 02075280 // processing 02075280 // 02075280 e59d2014 ldr r2, [r13, #0x14] // adding link: 02075280 -> 02075284 // processing 02075284 // 02075284 e1530002 cmp r3, r2 // adding link: 02075284 -> 02075288 // processing 02075288 // 02075288 c1a03001 movgt r3, r1 // adding link: 02075288 -> 0207528c // processing 0207528c // 0207528c ca000002 bgt 0x207529c // adding jump: 0207528c -> 0207529c (sub=0) // adding link: 0207528c -> 02075290 // processing 0207529c // 0207529c e5972050 ldr r2, [r7, #0x50] // adding link: 0207529c -> 020752a0 // processing 02075290 // 02075290 e59d2018 ldr r2, [r13, #0x18] // adding link: 02075290 -> 02075294 // processing 020752a0 // 020752a0 e597b040 ldr r11, [r7, #0x40] // adding link: 020752a0 -> 020752a4 // processing 02075294 // 02075294 e1530002 cmp r3, r2 // adding link: 02075294 -> 02075298 // processing 020752a4 // 020752a4 e0ca2293 smull r2, r10, r3, r2 // adding link: 020752a4 -> 020752a8 // processing 02075298 // 02075298 b1a03000 movlt r3, r0 // adding link: 02075298 -> 0207529c // processing 020752a8 // 020752a8 e1a02ba2 mov r2, r2, lsr #0x17 // adding link: 020752a8 -> 020752ac // processing 020752ac // 020752ac e182248a orr r2, r2, r10, lsl #0x9 // adding link: 020752ac -> 020752b0 // processing 020752b0 // 020752b0 e35b0001 cmp r11, #0x1 // adding link: 020752b0 -> 020752b4 // processing 020752b4 // 020752b4 01a05003 moveq r5, r3 // adding link: 020752b4 -> 020752b8 // processing 020752b8 // 020752b8 e0988002 adds r8, r8, r2 // adding link: 020752b8 -> 020752bc // processing 020752bc // 020752bc e59d201c ldr r2, [r13, #0x1c] // adding link: 020752bc -> 020752c0 // processing 020752c0 // 020752c0 e1580002 cmp r8, r2 // adding link: 020752c0 -> 020752c4 // processing 020752c4 // 020752c4 c1a08001 movgt r8, r1 // adding link: 020752c4 -> 020752c8 // processing 020752c8 // 020752c8 ca000002 bgt 0x20752d8 // adding jump: 020752c8 -> 020752d8 (sub=0) // adding link: 020752c8 -> 020752cc // processing 020752d8 // 020752d8 e5878034 str r8, [r7, #0x34] // adding link: 020752d8 -> 020752dc // processing 020752cc // 020752cc e59d2020 ldr r2, [r13, #0x20] // adding link: 020752cc -> 020752d0 // processing 020752dc // 020752dc e5972050 ldr r2, [r7, #0x50] // adding link: 020752dc -> 020752e0 // processing 020752d0 // 020752d0 e1580002 cmp r8, r2 // adding link: 020752d0 -> 020752d4 // processing 020752e0 // 020752e0 e35b0002 cmp r11, #0x2 // adding link: 020752e0 -> 020752e4 // processing 020752d4 // 020752d4 b1a08000 movlt r8, r0 // adding link: 020752d4 -> 020752d8 // processing 020752e4 // 020752e4 e0ca2298 smull r2, r10, r8, r2 // adding link: 020752e4 -> 020752e8 // processing 020752e8 // 020752e8 e1a02ba2 mov r2, r2, lsr #0x17 // adding link: 020752e8 -> 020752ec // processing 020752ec // 020752ec e5973038 ldr r3, [r7, #0x38] // adding link: 020752ec -> 020752f0 // processing 020752f0 // 020752f0 e182248a orr r2, r2, r10, lsl #0x9 // adding link: 020752f0 -> 020752f4 // processing 020752f4 // 020752f4 01a05008 moveq r5, r8 // adding link: 020752f4 -> 020752f8 // processing 020752f8 // 020752f8 e0932002 adds r2, r3, r2 // adding link: 020752f8 -> 020752fc // processing 020752fc // 020752fc e59d3024 ldr r3, [r13, #0x24] // adding link: 020752fc -> 02075300 // processing 02075300 // 02075300 e1520003 cmp r2, r3 // adding link: 02075300 -> 02075304 // processing 02075304 // 02075304 c1a02001 movgt r2, r1 // adding link: 02075304 -> 02075308 // processing 02075308 // 02075308 ca000002 bgt 0x2075318 // adding jump: 02075308 -> 02075318 (sub=0) // adding link: 02075308 -> 0207530c // processing 02075318 // 02075318 e5872038 str r2, [r7, #0x38] // adding link: 02075318 -> 0207531c // processing 0207530c // 0207530c e59d3028 ldr r3, [r13, #0x28] // adding link: 0207530c -> 02075310 // processing 0207531c // 0207531c e5973040 ldr r3, [r7, #0x40] // adding link: 0207531c -> 02075320 // processing 02075310 // 02075310 e1520003 cmp r2, r3 // adding link: 02075310 -> 02075314 // processing 02075320 // 02075320 e3530000 cmp r3, #0x0 // adding link: 02075320 -> 02075324 // processing 02075314 // 02075314 b1a02000 movlt r2, r0 // adding link: 02075314 -> 02075318 // processing 02075324 // 02075324 01a05002 moveq r5, r2 // adding link: 02075324 -> 02075328 // processing 02075328 // 02075328 e5973050 ldr r3, [r7, #0x50] // adding link: 02075328 -> 0207532c // processing 0207532c // 0207532c e5972054 ldr r2, [r7, #0x54] // adding link: 0207532c -> 02075330 // processing 02075330 // 02075330 e1a054c5 mov r5, r5, asr #0x9 // adding link: 02075330 -> 02075334 // processing 02075334 // 02075334 e0832002 add r2, r3, r2 // adding link: 02075334 -> 02075338 // processing 02075338 // 02075338 e5872050 str r2, [r7, #0x50] // adding link: 02075338 -> 0207533c // processing 0207533c // 0207533c e597305c ldr r3, [r7, #0x5c] // adding link: 0207533c -> 02075340 // processing 02075340 // 02075340 e5972060 ldr r2, [r7, #0x60] // adding link: 02075340 -> 02075344 // processing 02075344 // 02075344 e0832002 add r2, r3, r2 // adding link: 02075344 -> 02075348 // processing 02075348 // 02075348 e587205c str r2, [r7, #0x5c] // adding link: 02075348 -> 0207534c // processing 0207534c // 0207534c e5942048 ldr r2, [r4, #0x48] // adding link: 0207534c -> 02075350 // processing 02075350 // 02075350 e5923038 ldr r3, [r2, #0x38] // adding link: 02075350 -> 02075354 // processing 02075354 // 02075354 e0030395 mul r3, r5, r3 // adding link: 02075354 -> 02075358 // processing 02075358 // 02075358 e15c05c3 cmp r12, r3, asr #0xb // adding link: 02075358 -> 0207535c // processing 0207535c // 0207535c e1a035c3 mov r3, r3, asr #0xb // adding link: 0207535c -> 02075360 // processing 02075360 // 02075360 e5823034 str r3, [r2, #0x34] // adding link: 02075360 -> 02075364 // processing 02075364 // 02075364 c1a0300c movgt r3, r12 // adding link: 02075364 -> 02075368 // processing 02075368 // 02075368 ca000001 bgt 0x2075374 // adding jump: 02075368 -> 02075374 (sub=0) // adding link: 02075368 -> 0207536c // processing 02075374 // 02075374 e5823034 str r3, [r2, #0x34] // adding link: 02075374 -> 02075378 // processing 0207536c // 0207536c e15308ac cmp r3, r12, lsr #0x11 // adding link: 0207536c -> 02075370 // processing 02075378 // 02075378 e1a070c3 mov r7, r3, asr #0x1 // adding link: 02075378 -> 0207537c // processing 02075370 // 02075370 c1a0300e movgt r3, r14 // adding link: 02075370 -> 02075374 // processing 0207537c // 0207537c e592803c ldr r8, [r2, #0x3c] // adding link: 0207537c -> 02075380 // processing 02075380 // 02075380 e592302c ldr r3, [r2, #0x2c] // adding link: 02075380 -> 02075384 // processing 02075384 // 02075384 e0080895 mul r8, r5, r8 // adding link: 02075384 -> 02075388 // processing 02075388 // 02075388 e08757c8 add r5, r7, r8, asr #0xf // adding link: 02075388 -> 0207538c // processing 0207538c // 0207538c e1a050c5 mov r5, r5, asr #0x1 // adding link: 0207538c -> 02075390 // processing 02075390 // 02075390 e1a034c3 mov r3, r3, asr #0x9 // adding link: 02075390 -> 02075394 // processing 02075394 // 02075394 e0030395 mul r3, r5, r3 // adding link: 02075394 -> 02075398 // processing 02075398 // 02075398 e1a037c3 mov r3, r3, asr #0xf // adding link: 02075398 -> 0207539c // processing 0207539c // 0207539c e592500c ldr r5, [r2, #0xc] // adding link: 0207539c -> 020753a0 // processing 020753a0 // 020753a0 e3550000 cmp r5, #0x0 // adding link: 020753a0 -> 020753a4 // processing 020753a4 // 020753a4 0a000007 beq 0x20753c8 // adding jump: 020753a4 -> 020753c8 (sub=0) // adding link: 020753a4 -> 020753a8 // processing 020753c8 // 020753c8 e59d502c ldr r5, [r13, #0x2c] // adding link: 020753c8 -> 020753cc // processing 020753a8 // 020753a8 e0050399 mul r5, r9, r3 // adding link: 020753a8 -> 020753ac // processing 020753cc // 020753cc e1530005 cmp r3, r5 // adding link: 020753cc -> 020753d0 // processing 020753ac // 020753ac e1a087c5 mov r8, r5, asr #0xf // adding link: 020753ac -> 020753b0 // processing 020753d0 // 020753d0 b28c3901 addlt r3, r12, #0x4000 // adding link: 020753d0 -> 020753d4 // processing 020753b0 // 020753b0 e5927020 ldr r7, [r2, #0x20] // adding link: 020753b0 -> 020753b4 // processing 020753d4 // 020753d4 ba000001 blt 0x20753e0 // adding jump: 020753d4 -> 020753e0 (sub=0) // adding link: 020753d4 -> 020753d8 // processing 020753b4 // 020753b4 e0050798 mul r5, r8, r7 // adding link: 020753b4 -> 020753b8 // processing 020753e0 // 020753e0 e1a07083 mov r7, r3, lsl #0x1 // adding link: 020753e0 -> 020753e4 // processing 020753d8 // 020753d8 e153092c cmp r3, r12, lsr #0x12 // adding link: 020753d8 -> 020753dc // processing 020753b8 // 020753b8 e06778ac rsb r7, r7, r12, lsr #0x11 // adding link: 020753b8 -> 020753bc // processing 020753e4 // 020753e4 e15c0083 cmp r12, r3, lsl #0x1 // adding link: 020753e4 -> 020753e8 // processing 020753dc // 020753dc c59d3008 ldrgt r3, [r13, #0x8] // adding link: 020753dc -> 020753e0 // processing 020753bc // 020753bc e0070793 mul r7, r3, r7 // adding link: 020753bc -> 020753c0 // processing 020753e8 // 020753e8 c1a0700c movgt r7, r12 // adding link: 020753e8 -> 020753ec // processing 020753c0 // 020753c0 e1a037c5 mov r3, r5, asr #0xf // adding link: 020753c0 -> 020753c4 // processing 020753ec // 020753ec ca000001 bgt 0x20753f8 // adding jump: 020753ec -> 020753f8 (sub=0) // adding link: 020753ec -> 020753f0 // processing 020753c4 // 020753c4 e08337c7 add r3, r3, r7, asr #0xf // adding link: 020753c4 -> 020753c8 // processing 020753f8 // 020753f8 e592502c ldr r5, [r2, #0x2c] // adding link: 020753f8 -> 020753fc // processing 020753f0 // 020753f0 e15708ac cmp r7, r12, lsr #0x11 // adding link: 020753f0 -> 020753f4 // processing 020753fc // 020753fc e5923030 ldr r3, [r2, #0x30] // adding link: 020753fc -> 02075400 // processing 020753f4 // 020753f4 c1a0700e movgt r7, r14 // adding link: 020753f4 -> 020753f8 // processing 02075400 // 02075400 e2866001 add r6, r6, #0x1 // adding link: 02075400 -> 02075404 // processing 02075404 // 02075404 e0853003 add r3, r5, r3 // adding link: 02075404 -> 02075408 // processing 02075408 // 02075408 e582302c str r3, [r2, #0x2c] // adding link: 02075408 -> 0207540c // processing 0207540c // 0207540c e59d2000 ldr r2, [r13] // adding link: 0207540c -> 02075410 // processing 02075410 // 02075410 e0c270b2 strh r7, [r2], #0x2 // adding link: 02075410 -> 02075414 // processing 02075414 // 02075414 e58d2000 str r2, [r13] // adding link: 02075414 -> 02075418 // processing 02075418 // 02075418 e5942020 ldr r2, [r4, #0x20] // adding link: 02075418 -> 0207541c // processing 0207541c // 0207541c e1560002 cmp r6, r2 // adding link: 0207541c -> 02075420 // processing 02075420 // 02075420 bafffedc blt 0x2074f98 // adding jump: 02075420 -> 02074f98 (sub=0) // adding link: 02075420 -> 02075424 // cfg case 0x02074720: lab02074720: /* stmdb r13!, { r3-r11, r14 } */ *MEM32(R13 - 4) = R14; *MEM32(R13 - 8) = R11; *MEM32(R13 - 12) = R10; *MEM32(R13 - 16) = R9; *MEM32(R13 - 20) = R8; *MEM32(R13 - 24) = R7; *MEM32(R13 - 28) = R6; *MEM32(R13 - 32) = R5; *MEM32(R13 - 36) = R4; *MEM32(R13 - 40) = R3; R13 -= 40; /* sub r13, r13, #0x68 */ R13 = R13 - 104; /* ldr r1, [r0] */ R1 = *MEM32(R0); /* mov r4, r0 */ R4 = R0; /* ldr r1, [r1, #0x28] */ R1 = *MEM32(R1 + 0x28); /* mov r5, #0x0 */ R5 = 0; /* blx r1 */ R14 = 0x0207473c; R15 = R1; goto dispatch; case 0x0207473c: lab0207473c: /* ldr r0, [r4, #0x34] */ R0 = *MEM32(R4 + 0x34); /* ldr r1, [r4, #0x1c] */ R1 = *MEM32(R4 + 0x1c); /* ldr r3, [r0, #0x14] */ R3 = *MEM32(R0 + 0x14); /* ldr r2, [r0, #0x18] */ R2 = *MEM32(R0 + 0x18); /* ldr r1, [r1] */ R1 = *MEM32(R1); /* sub r3, r3, r2 */ R3 = R3 - R2; /* str r3, [r0, #0x14] */ *MEM32(R0 + 0x14) = R3; /* str r1, [r13] */ *MEM32(R13) = R1; /* ldr r1, [r0, #0x1c] */ R1 = *MEM32(R0 + 0x1c); /* ldr r2, [r0, #0x18] */ R2 = *MEM32(R0 + 0x18); /* mov r3, r3, asr #0x7 */ R3 = ((int32_t)R3 >> 7); /* add r2, r1, r2 */ R2 = R1 + R2; /* str r2, [r0, #0x1c] */ *MEM32(R0 + 0x1c) = R2; /* ldr r7, [r0, #0x24] */ R7 = *MEM32(R0 + 0x24); /* add r2, r3, r2, asr #0x7 */ R2 = R3 + ((int32_t)R2 >> 7); /* tst r7, #0x40000000 */ tmpA = R7 & 0x40000000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* ldreq r6, [r15, #0xcac] ; 0x2075430 */ if (Z) { R6 = 0x00001064; } /* eoreq r6, r7, r6 */ if (Z) { R6 = R7 ^ R6; } /* moveq r6, r6, lsl #0x1 */ if (Z) { R6 = (R6 << 1); } /* orreq r6, r6, #0x1 */ if (Z) { R6 = R6 | 1; } /* movne r6, r7, lsl #0x1 */ if (!Z) { R6 = (R7 << 1); } /* str r6, [r0, #0x24] */ *MEM32(R0 + 0x24) = R6; /* ldr r6, [r0, #0x1c] */ R6 = *MEM32(R0 + 0x1c); /* eor r1, r1, r6 */ R1 = R1 ^ R6; /* movs r1, r1, asr #0x1f */ C = ((int32_t)R1 >> 30) & 1; R1 = ((int32_t)R1 >> 31); Z = R1 == 0; N = (int32_t)R1 < 0; /* ldrne r1, [r0, #0x24] */ if (!Z) { R1 = *MEM32(R0 + 0x24); } /* mvn r6, #0xff000000 */ R6 = ~0xff000000; /* movne r1, r1, asr #0x7 */ if (!Z) { R1 = ((int32_t)R1 >> 7); } /* strne r1, [r0] */ if (!Z) { *MEM32(R0) = R1; } /* mov r1, r3 */ R1 = R3; /* cmp r3, #0x0 */ tmpA = R3; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* rsble r1, r3, #0x0 */ if (Z || (N != V)) { R1 = 0 - R3; } /* mov r1, r1, lsl #0x1 */ R1 = (R1 << 1); /* add r1, r1, #0x1 */ R1 = R1 + 1; /* str r3, [r0, #0x4] */ *MEM32(R0 + 0x4) = R3; /* add r3, r1, #0xff000000 */ R3 = R1 + 0xff000000; /* add r1, r2, #0x1000000 */ R1 = R2 + 0x1000000; /* str r3, [r0, #0x8] */ *MEM32(R0 + 0x8) = R3; /* mov r1, r1, asr #0x1 */ R1 = ((int32_t)R1 >> 1); /* str r1, [r0, #0xc] */ *MEM32(R0 + 0xc) = R1; /* ldr r0, [r4, #0x30] */ R0 = *MEM32(R4 + 0x30); /* ldrsb r1, [r0, #0x4] */ R1 = (int8_t)*MEM8(R0 + 0x4); /* cmp r1, #0x3 */ tmpA = R1; tmpB = 3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addls r15, r15, r1, lsl #0x2 */ switch(R1) { default: goto lab02074900; case 0: goto lab02074800; case 1: goto lab02074878; case 2: goto lab020748bc; case 3: goto lab020748cc; } case 0x020748cc: lab020748cc: /* ldr r2, [r0, #0xc] */ R2 = *MEM32(R0 + 0xc); /* mov r1, #0x42 */ R1 = 66; /* mul r1, r2, r1 */ R1 = R2 * R1; /* mov r1, r1, asr #0x7 */ R1 = ((int32_t)R1 >> 7); /* str r1, [r0, #0xc] */ *MEM32(R0 + 0xc) = R1; /* ldr r1, [r0] */ R1 = *MEM32(R0); /* ldr r2, [r0, #0x8] */ R2 = *MEM32(R0 + 0x8); /* ldr r1, [r1, #0xc] */ R1 = *MEM32(R1 + 0xc); /* sub r1, r6, r1 */ R1 = R6 - R1; /* smull r3, r1, r2, r1 */ tmp64 = (int64_t)R2 * R1; R3 = tmp64; R1 = tmp64 >> 32; /* mov r2, r3, lsr #0x18 */ R2 = (R3 >> 24); /* orr r2, r2, r1, lsl #0x8 */ R2 = R2 | (R1 << 8); /* str r2, [r0, #0x8] */ *MEM32(R0 + 0x8) = R2; case 0x02074900: lab02074900: /* ldr r0, [r4, #0x38] */ R0 = *MEM32(R4 + 0x38); /* ldr r2, [r0, #0xc] */ R2 = *MEM32(R0 + 0xc); /* ldmia r0, { r1, r5 } */ R1 = *MEM32(R0 + 0); R5 = *MEM32(R0 + 4); /* sub r1, r1, r5 */ R1 = R1 - R5; /* smull r3, r1, r2, r1 */ tmp64 = (int64_t)R2 * R1; R3 = tmp64; R1 = tmp64 >> 32; /* mov r2, r3, lsr #0xf */ R2 = (R3 >> 15); /* orr r2, r2, r1, lsl #0x11 */ R2 = R2 | (R1 << 17); /* add r1, r5, r2 */ R1 = R5 + R2; /* str r1, [r0, #0x4] */ *MEM32(R0 + 0x4) = R1; /* ldrb r1, [r0, #0x10] */ R1 = *MEM8(R0 + 0x10); /* ldr r2, [r0] */ R2 = *MEM32(R0); /* cmp r1, #0x0 */ tmpA = R1; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* ldr r1, [r0, #0x4] */ R1 = *MEM32(R0 + 0x4); /* beq 0x2074944 */ if (Z) { goto lab02074944; } /* cmp r1, r2 */ tmpA = R1; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* strgt r2, [r0, #0x4] */ if (!Z && (N == V)) { *MEM32(R0 + 0x4) = R2; } /* b 0x207494c */ goto lab0207494c; case 0x0207494c: lab0207494c: /* ldr r11, [r4, #0x3c] */ R11 = *MEM32(R4 + 0x3c); /* ldr r12, [r15, #0xae4] ; 0x207543c */ R12 = 0x0207eb38; /* ldr r0, [r11, #0x40] */ R0 = *MEM32(R11 + 0x40); /* ldr r2, [r11, #0x10] */ R2 = *MEM32(R11 + 0x10); /* mov r5, r0, lsl #0x10 */ R5 = (R0 << 16); /* ldr r1, [r11, #0x4c] */ R1 = *MEM32(R11 + 0x4c); /* ldr r0, [r11, #0x44] */ R0 = *MEM32(R11 + 0x44); /* add r3, r2, r1, lsl #0x2 */ R3 = R2 + (R1 << 2); /* ldr r1, [r11, #0x50] */ R1 = *MEM32(R11 + 0x50); /* mov r0, r0, lsl #0x10 */ R0 = (R0 << 16); /* add r1, r2, r1, lsl #0x2 */ R1 = R2 + (R1 << 2); /* ldr r8, [r2, #0x8] */ R8 = *MEM32(R2 + 0x8); /* ldr r2, [r11, #0x28] */ R2 = *MEM32(R11 + 0x28); /* ldr r7, [r11, #0x14] */ R7 = *MEM32(R11 + 0x14); /* mov r5, r5, asr #0x10 */ R5 = ((int32_t)R5 >> 16); /* ldr r6, [r11, #0x24] */ R6 = *MEM32(R11 + 0x24); /* ldr r5, [r7, r5, lsl #0x2] */ R5 = *MEM32(R7 + (R5 << 2)); /* ldr r3, [r3, #0x8] */ R3 = *MEM32(R3 + 0x8); /* ldr r9, [r11, #0x20] */ R9 = *MEM32(R11 + 0x20); /* add r3, r5, r3 */ R3 = R5 + R3; /* mov r0, r0, asr #0x10 */ R0 = ((int32_t)R0 >> 16); /* ldr r5, [r12, r6, lsl #0x2] */ R5 = *MEM32(R12 + (R6 << 2)); /* mov r3, r3, asr #0x9 */ R3 = ((int32_t)R3 >> 9); /* mul r3, r5, r3 */ R3 = R5 * R3; /* ldr r6, [r7, r0, lsl #0x2] */ R6 = *MEM32(R7 + (R0 << 2)); /* ldr r1, [r1, #0x8] */ R1 = *MEM32(R1 + 0x8); /* ldr r5, [r12, r9, lsl #0x2] */ R5 = *MEM32(R12 + (R9 << 2)); /* add r1, r1, r6 */ R1 = R1 + R6; /* mov r0, r8, asr #0x9 */ R0 = ((int32_t)R8 >> 9); /* ldr r2, [r12, r2, lsl #0x2] */ R2 = *MEM32(R12 + (R2 << 2)); /* mov r1, r1, asr #0x9 */ R1 = ((int32_t)R1 >> 9); /* mul r6, r5, r0 */ R6 = R5 * R0; /* mul r0, r2, r1 */ R0 = R2 * R1; /* mov r3, r3, asr #0xf */ R3 = ((int32_t)R3 >> 15); /* add r2, r3, r6, asr #0xf */ R2 = R3 + ((int32_t)R6 >> 15); /* add r1, r2, r0, asr #0xf */ R1 = R2 + ((int32_t)R0 >> 15); /* mov r0, #0x30 */ R0 = 48; /* mul r0, r1, r0 */ R0 = R1 * R0; /* ldr r10, [r11, #0x18] */ R10 = *MEM32(R11 + 0x18); /* ldr r3, [r11, #0x30] */ R3 = *MEM32(R11 + 0x30); /* ldr r1, [r10, #0x4] */ R1 = *MEM32(R10 + 0x4); /* add r1, r1, r3, lsl #0xf */ R1 = R1 + (R3 << 15); /* adds r7, r0, r1 */ tmpA = R0; tmpB = R1; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R7 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R7 == 0; N = (int32_t)R7 < 0; /* movmi r7, #0x0 */ if (N) { R7 = 0; } /* bmi 0x2074a08 */ if (N) { goto lab02074a08; } /* cmp r7, #0x3c0000 */ tmpA = R7; tmpB = 0x3c0000; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r7, #0x3c0000 */ if (!Z && (N == V)) { R7 = 0x3c0000; } case 0x02074a08: lab02074a08: /* ldr r0, [r15, #0xa30] ; 0x2075440 */ R0 = 0x0207e950; /* mov r6, r7, asr #0xf */ R6 = ((int32_t)R7 >> 15); /* ldr r5, [r15, #0xa2c] ; 0x2075444 */ R5 = 0x0207e954; /* ldr r3, [r15, #0xa2c] ; 0x2075448 */ R3 = 0x00007fff; /* ldr r0, [r0, r6, lsl #0x2] */ R0 = *MEM32(R0 + (R6 << 2)); /* ldr r5, [r5, r6, lsl #0x2] */ R5 = *MEM32(R5 + (R6 << 2)); /* and r6, r7, r3 */ R6 = R7 & R3; /* sub r3, r5, r0 */ R3 = R5 - R0; /* smull r5, r3, r6, r3 */ tmp64 = (int64_t)R6 * R3; R5 = tmp64; R3 = tmp64 >> 32; /* mov r5, r5, lsr #0xf */ R5 = (R5 >> 15); /* orr r5, r5, r3, lsl #0x11 */ R5 = R5 | (R3 << 17); /* adds r0, r0, r5 */ tmpA = R0; tmpB = R5; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R0 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R0 == 0; N = (int32_t)R0 < 0; /* str r0, [r11, #0x38] */ *MEM32(R11 + 0x38) = R0; /* ldr r0, [r11, #0x48] */ R0 = *MEM32(R11 + 0x48); /* ldr r5, [r11, #0x10] */ R5 = *MEM32(R11 + 0x10); /* ldr r3, [r11, #0x54] */ R3 = *MEM32(R11 + 0x54); /* mov r0, r0, lsl #0x10 */ R0 = (R0 << 16); /* add r7, r5, r3, lsl #0x2 */ R7 = R5 + (R3 << 2); /* mov r5, r0, asr #0x10 */ R5 = ((int32_t)R0 >> 16); /* ldr r6, [r11, #0x14] */ R6 = *MEM32(R11 + 0x14); /* ldr r8, [r11, #0x2c] */ R8 = *MEM32(R11 + 0x2c); /* ldr r0, [r15, #0x9d8] ; 0x207543c */ R0 = 0x0207eb38; /* ldr r5, [r6, r5, lsl #0x2] */ R5 = *MEM32(R6 + (R5 << 2)); /* ldr r7, [r7, #0x8] */ R7 = *MEM32(R7 + 0x8); /* ldrsh r3, [r11, #0x34] */ R3 = (int16_t)*MEM16(R11 + 0x34); /* add r5, r7, r5 */ R5 = R7 + R5; /* ldr r6, [r0, r8, lsl #0x2] */ R6 = *MEM32(R0 + (R8 << 2)); /* mov r5, r5, asr #0x9 */ R5 = ((int32_t)R5 >> 9); /* mul r5, r6, r5 */ R5 = R6 * R5; /* ldr r3, [r0, r3, lsl #0x2] */ R3 = *MEM32(R0 + (R3 << 2)); /* mov r0, #0x30 */ R0 = 48; /* add r2, r2, r5, asr #0xf */ R2 = R2 + ((int32_t)R5 >> 15); /* mla r1, r2, r0, r1 */ R1 = R2 * R0 + R1; /* mul r0, r3, r0 */ R0 = R3 * R0; /* adds r6, r1, r0 */ tmpA = R1; tmpB = R0; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R6 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R6 == 0; N = (int32_t)R6 < 0; /* movmi r6, #0x0 */ if (N) { R6 = 0; } /* bmi 0x2074aa4 */ if (N) { goto lab02074aa4; } /* cmp r6, #0x3c0000 */ tmpA = R6; tmpB = 0x3c0000; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r6, #0x3c0000 */ if (!Z && (N == V)) { R6 = 0x3c0000; } case 0x02074aa4: lab02074aa4: /* ldr r2, [r15, #0x994] ; 0x2075440 */ R2 = 0x0207e950; /* mov r5, r6, asr #0xf */ R5 = ((int32_t)R6 >> 15); /* ldr r1, [r15, #0x990] ; 0x2075444 */ R1 = 0x0207e954; /* ldr r0, [r15, #0x990] ; 0x2075448 */ R0 = 0x00007fff; /* ldr r3, [r2, r5, lsl #0x2] */ R3 = *MEM32(R2 + (R5 << 2)); /* ldr r1, [r1, r5, lsl #0x2] */ R1 = *MEM32(R1 + (R5 << 2)); /* and r2, r6, r0 */ R2 = R6 & R0; /* sub r0, r1, r3 */ R0 = R1 - R3; /* smull r1, r0, r2, r0 */ tmp64 = (int64_t)R2 * R0; R1 = tmp64; R0 = tmp64 >> 32; /* mov r1, r1, lsr #0xf */ R1 = (R1 >> 15); /* orr r1, r1, r0, lsl #0x11 */ R1 = R1 | (R0 << 17); /* adds r0, r3, r1 */ tmpA = R3; tmpB = R1; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R0 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R0 == 0; N = (int32_t)R0 < 0; /* str r0, [r11, #0x3c] */ *MEM32(R11 + 0x3c) = R0; /* ldr r6, [r4, #0x40] */ R6 = *MEM32(R4 + 0x40); /* mov r5, #0x0 */ R5 = 0; /* ldr r0, [r6, #0x10] */ R0 = *MEM32(R6 + 0x10); /* ldr r1, [r0, #0x38] */ R1 = *MEM32(R0 + 0x38); /* str r1, [r6, #0x1c] */ *MEM32(R6 + 0x1c) = R1; /* ldr r0, [r6, #0x10] */ R0 = *MEM32(R6 + 0x10); /* cmp r1, #0x1000000 */ tmpA = R1; tmpB = 0x1000000; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* ldr r0, [r0, #0x3c] */ R0 = *MEM32(R0 + 0x3c); /* str r0, [r6, #0x20] */ *MEM32(R6 + 0x20) = R0; /* mvnlt r0, #0x80000000 */ if (N != V) { R0 = ~0x80000000; } /* strlt r0, [r6, #0x24] */ if (N != V) { *MEM32(R6 + 0x24) = R0; } /* blt 0x2074b7c */ if (N != V) { goto lab02074b7c; } /* add r0, r13, #0x30 */ R0 = R13 + 48; /* bl 0x200e9dc */ R14 = 0x02074b10; goto lab0200e9dc; case 0x02074b10: lab02074b10: /* ldr r8, [r6, #0x1c] */ R8 = *MEM32(R6 + 0x1c); /* ldr r1, [r15, #0x930] ; 0x207544c */ R1 = 0x04000280; /* mov r2, #0x1 */ R2 = 1; /* mov r0, #0xff000000 */ R0 = 0xff000000; /* strh r2, [r1] */ *MEM16(R1) = R2; /* str r0, [r1, #0x10] */ *MEM32(R1 + 0x10) = R0; /* rsb r0, r2, #0x800000 */ R0 = 0x800000 - R2; /* str r0, [r1, #0x14] */ *MEM32(R1 + 0x14) = R0; /* str r8, [r1, #0x18] */ *MEM32(R1 + 0x18) = R8; /* mov r0, r5 */ R0 = R5; /* str r0, [r1, #0x1c] */ *MEM32(R1 + 0x1c) = R0; case 0x02074b3c: lab02074b3c: /* ldrh r0, [r1] */ R0 = *MEM16(R1); /* tst r0, #0x8000 */ tmpA = R0 & 0x8000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* bne 0x2074b3c */ if (!Z) { goto lab02074b3c; } /* ldr r1, [r15, #0x8fc] ; 0x207544c */ R1 = 0x04000280; case 0x02074b4c: lab02074b4c: /* ldrh r0, [r1] */ R0 = *MEM16(R1); /* tst r0, #0x8000 */ tmpA = R0 & 0x8000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* bne 0x2074b4c */ if (!Z) { goto lab02074b4c; } /* ldr r7, [r15, #0x8f0] ; 0x2075450 */ R7 = 0x040002a0; /* add r0, r13, #0x30 */ R0 = R13 + 48; /* ldr r1, [r7] */ R1 = *MEM32(R7); /* str r1, [r6, #0x24] */ *MEM32(R6 + 0x24) = R1; /* bl 0x200ea1c */ R14 = 0x02074b6c; goto lab0200ea1c; case 0x02074b6c: lab02074b6c: /* sub r1, r7, #0x20 */ R1 = R7 - 32; case 0x02074b70: lab02074b70: /* ldrh r0, [r1] */ R0 = *MEM16(R1); /* tst r0, #0x8000 */ tmpA = R0 & 0x8000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* bne 0x2074b70 */ if (!Z) { goto lab02074b70; } case 0x02074b7c: lab02074b7c: /* ldr r0, [r6, #0x20] */ R0 = *MEM32(R6 + 0x20); /* cmp r0, #0x1000000 */ tmpA = R0; tmpB = 0x1000000; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* mvnlt r0, #0x80000000 */ if (N != V) { R0 = ~0x80000000; } /* strlt r0, [r6, #0x28] */ if (N != V) { *MEM32(R6 + 0x28) = R0; } /* blt 0x2074c04 */ if (N != V) { goto lab02074c04; } /* add r0, r13, #0x4c */ R0 = R13 + 76; /* bl 0x200e9dc */ R14 = 0x02074b98; goto lab0200e9dc; case 0x02074b98: lab02074b98: /* ldr r8, [r6, #0x20] */ R8 = *MEM32(R6 + 0x20); /* ldr r1, [r15, #0x8a8] ; 0x207544c */ R1 = 0x04000280; /* mov r2, #0x1 */ R2 = 1; /* mov r0, #0xff000000 */ R0 = 0xff000000; /* strh r2, [r1] */ *MEM16(R1) = R2; /* str r0, [r1, #0x10] */ *MEM32(R1 + 0x10) = R0; /* rsb r0, r2, #0x800000 */ R0 = 0x800000 - R2; /* str r0, [r1, #0x14] */ *MEM32(R1 + 0x14) = R0; /* str r8, [r1, #0x18] */ *MEM32(R1 + 0x18) = R8; /* mov r0, #0x0 */ R0 = 0; /* str r0, [r1, #0x1c] */ *MEM32(R1 + 0x1c) = R0; case 0x02074bc4: lab02074bc4: /* ldrh r0, [r1] */ R0 = *MEM16(R1); /* tst r0, #0x8000 */ tmpA = R0 & 0x8000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* bne 0x2074bc4 */ if (!Z) { goto lab02074bc4; } /* ldr r1, [r15, #0x874] ; 0x207544c */ R1 = 0x04000280; case 0x02074bd4: lab02074bd4: /* ldrh r0, [r1] */ R0 = *MEM16(R1); /* tst r0, #0x8000 */ tmpA = R0 & 0x8000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* bne 0x2074bd4 */ if (!Z) { goto lab02074bd4; } /* ldr r7, [r15, #0x868] ; 0x2075450 */ R7 = 0x040002a0; /* add r0, r13, #0x4c */ R0 = R13 + 76; /* ldr r1, [r7] */ R1 = *MEM32(R7); /* str r1, [r6, #0x28] */ *MEM32(R6 + 0x28) = R1; /* bl 0x200ea1c */ R14 = 0x02074bf4; goto lab0200ea1c; case 0x02074bf4: lab02074bf4: /* sub r1, r7, #0x20 */ R1 = R7 - 32; case 0x02074bf8: lab02074bf8: /* ldrh r0, [r1] */ R0 = *MEM16(R1); /* tst r0, #0x8000 */ tmpA = R0 & 0x8000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* bne 0x2074bf8 */ if (!Z) { goto lab02074bf8; } case 0x02074c04: lab02074c04: /* ldr r0, [r6, #0x54] */ R0 = *MEM32(R6 + 0x54); /* mov r3, #0xb8000 */ R3 = 0xb8000; /* str r0, [r6, #0x60] */ *MEM32(R6 + 0x60) = R0; /* ldr r0, [r6, #0x58] */ R0 = *MEM32(R6 + 0x58); /* ldr r10, [r15, #0x838] ; 0x2075454 */ R10 = 0x020803c4; /* str r0, [r6, #0x68] */ *MEM32(R6 + 0x68) = R0; /* ldr r1, [r6, #0x20] */ R1 = *MEM32(R6 + 0x20); /* ldr r0, [r6, #0x54] */ R0 = *MEM32(R6 + 0x54); /* ldr r7, [r15, #0x82c] ; 0x2075458 */ R7 = 0x020804c4; /* smull r2, r0, r1, r0 */ tmp64 = (int64_t)R1 * R0; R2 = tmp64; R0 = tmp64 >> 32; /* mov r1, r2, lsr #0x7 */ R1 = (R2 >> 7); /* orr r1, r1, r0, lsl #0x19 */ R1 = R1 | (R0 << 25); /* str r1, [r6, #0x64] */ *MEM32(R6 + 0x64) = R1; /* ldr r1, [r6, #0x20] */ R1 = *MEM32(R6 + 0x20); /* ldr r0, [r6, #0x5c] */ R0 = *MEM32(R6 + 0x5c); /* rsb r3, r3, #0x0 */ R3 = 0 - R3; /* smull r2, r0, r1, r0 */ tmp64 = (int64_t)R1 * R0; R2 = tmp64; R0 = tmp64 >> 32; /* mov r1, r2, lsr #0x7 */ R1 = (R2 >> 7); /* orr r1, r1, r0, lsl #0x19 */ R1 = R1 | (R0 << 25); /* str r1, [r6, #0x6c] */ *MEM32(R6 + 0x6c) = R1; /* ldr r2, [r4, #0x44] */ R2 = *MEM32(R4 + 0x44); /* ldmib r2, { r0, r8 } */ R0 = *MEM32(R2 + 4); R8 = *MEM32(R2 + 8); /* ldr r9, [r2, #0x10] */ R9 = *MEM32(R2 + 0x10); /* mov r1, r0, lsl #0x10 */ R1 = (R0 << 16); /* add r0, r9, r8, lsl #0x2 */ R0 = R9 + (R8 << 2); /* ldr r8, [r9, #0x8] */ R8 = *MEM32(R9 + 0x8); /* ldr r9, [r0, #0x8] */ R9 = *MEM32(R0 + 0x8); /* mov r0, r8, asr #0x9 */ R0 = ((int32_t)R8 >> 9); /* mov r8, r1, asr #0x10 */ R8 = ((int32_t)R1 >> 16); /* ldr r1, [r2, #0x44] */ R1 = *MEM32(R2 + 0x44); /* ldr r6, [r2, #0x18] */ R6 = *MEM32(R2 + 0x18); /* mov r1, r1, lsl #0x1 */ R1 = (R1 << 1); /* ldrsh r1, [r10, r1] */ R1 = (int16_t)*MEM16(R10 + R1); /* ldr r11, [r2, #0x48] */ R11 = *MEM32(R2 + 0x48); /* ldr r6, [r6, #0x4c] */ R6 = *MEM32(R6 + 0x4c); /* mov r11, r11, lsl #0x1 */ R11 = (R11 << 1); /* mul r0, r1, r0 */ R0 = R1 * R0; /* ldr r1, [r2, #0xc] */ R1 = *MEM32(R2 + 0xc); /* ldrsh r10, [r10, r11] */ R10 = (int16_t)*MEM16(R10 + R11); /* ldrsh r7, [r7, r11] */ R7 = (int16_t)*MEM16(R7 + R11); /* ldr r11, [r2, #0x14] */ R11 = *MEM32(R2 + 0x14); /* mul r6, r1, r6 */ R6 = R1 * R6; /* ldr r8, [r11, r8, lsl #0x2] */ R8 = *MEM32(R11 + (R8 << 2)); /* add r1, r9, r8 */ R1 = R9 + R8; /* mov r1, r1, asr #0x9 */ R1 = ((int32_t)R1 >> 9); /* mul r8, r10, r1 */ R8 = R10 * R1; /* mov r1, r6, asr #0x9 */ R1 = ((int32_t)R6 >> 9); /* mov r6, r8, asr #0xf */ R6 = ((int32_t)R8 >> 15); /* mul r1, r7, r1 */ R1 = R7 * R1; /* add r0, r6, r0, asr #0xf */ R0 = R6 + ((int32_t)R0 >> 15); /* add r1, r0, r1, asr #0xf */ R1 = R0 + ((int32_t)R1 >> 15); /* ldr r0, [r2, #0x1c] */ R0 = *MEM32(R2 + 0x1c); /* rsb r1, r1, r1, lsl #0x7 */ R1 = (R1 << 7) - R1; /* add r0, r1, r0 */ R0 = R1 + R0; /* cmp r0, r3 */ tmpA = R0; tmpB = R3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movlt r0, r3 */ if (N != V) { R0 = R3; } /* blt 0x2074cf0 */ if (N != V) { goto lab02074cf0; } /* cmp r0, #0x3f8000 */ tmpA = R0; tmpB = 0x3f8000; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r0, #0x3f8000 */ if (!Z && (N == V)) { R0 = 0x3f8000; } case 0x02074cf0: lab02074cf0: /* add r7, r0, #0xb8000 */ R7 = R0 + 0xb8000; /* ldr r3, [r15, #0x760] ; 0x207545c */ R3 = 0x020807c4; /* mov r8, r7, asr #0xf */ R8 = ((int32_t)R7 >> 15); /* ldr r1, [r15, #0x75c] ; 0x2075460 */ R1 = 0x020807c8; /* ldr r0, [r15, #0x740] ; 0x2075448 */ R0 = 0x00007fff; /* ldr r6, [r3, r8, lsl #0x2] */ R6 = *MEM32(R3 + (R8 << 2)); /* ldr r1, [r1, r8, lsl #0x2] */ R1 = *MEM32(R1 + (R8 << 2)); /* and r3, r7, r0 */ R3 = R7 & R0; /* sub r0, r1, r6 */ R0 = R1 - R6; /* smull r1, r0, r3, r0 */ tmp64 = (int64_t)R3 * R0; R1 = tmp64; R0 = tmp64 >> 32; /* mov r1, r1, lsr #0xf */ R1 = (R1 >> 15); /* orr r1, r1, r0, lsl #0x11 */ R1 = R1 | (R0 << 17); /* adds r0, r6, r1 */ tmpA = R6; tmpB = R1; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R0 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R0 == 0; N = (int32_t)R0 < 0; /* ldr r1, [r15, #0x738] ; 0x2075464 */ R1 = 0xae7c972b; /* str r0, [r2, #0x28] */ *MEM32(R2 + 0x28) = R0; /* add r6, r0, r1 */ R6 = R0 + R1; /* cmp r6, #0x0 */ tmpA = R6; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movle r6, #0x0 */ if (Z || (N != V)) { R6 = 0; } /* smull r3, r1, r6, r6 */ tmp64 = (int64_t)R6 * R6; R3 = tmp64; R1 = tmp64 >> 32; /* mov r3, r3, lsr #0x1f */ R3 = (R3 >> 31); /* orr r3, r3, r1, lsl #0x1 */ R3 = R3 | (R1 << 1); /* mov r3, r3, asr #0x7 */ R3 = ((int32_t)R3 >> 7); /* mov r1, #0x1800000 */ R1 = 0x1800000; /* umull r8, r7, r3, r1 */ tmp64 = (uint64_t)R3 * R1; R8 = tmp64; R7 = tmp64 >> 32; /* mla r7, r3, r5, r7 */ R7 = R3 * R5 + R7; /* mov r6, r3, asr #0x1f */ R6 = ((int32_t)R3 >> 31); /* mla r7, r6, r1, r7 */ R7 = R6 * R1 + R7; /* mov r1, r8, lsr #0x18 */ R1 = (R8 >> 24); /* orr r1, r1, r7, lsl #0x8 */ R1 = R1 | (R7 << 8); /* mov r0, r0, asr #0x8 */ R0 = ((int32_t)R0 >> 8); /* ldr r3, [r2, #0x20] */ R3 = *MEM32(R2 + 0x20); /* rsb r6, r1, #0x1000000 */ R6 = 0x1000000 - R1; /* mov r1, r3, asr #0x7 */ R1 = ((int32_t)R3 >> 7); /* smull r6, r3, r1, r6 */ tmp64 = (int64_t)R1 * R6; R6 = tmp64; R3 = tmp64 >> 32; /* mov r7, r6, lsr #0x18 */ R7 = (R6 >> 24); /* orr r7, r7, r3, lsl #0x8 */ R7 = R7 | (R3 << 8); /* rsb r1, r7, #0x1000000 */ R1 = 0x1000000 - R7; /* rsb r0, r0, #0x1000000 */ R0 = 0x1000000 - R0; /* smull r0, r3, r1, r0 */ tmp64 = (int64_t)R1 * R0; R0 = tmp64; R3 = tmp64 >> 32; /* mov r6, r0, lsr #0x18 */ R6 = (R0 >> 24); /* ldr r1, [r2, #0x58] */ R1 = *MEM32(R2 + 0x58); /* orr r6, r6, r3, lsl #0x8 */ R6 = R6 | (R3 << 8); /* sub r1, r6, r1 */ R1 = R6 - R1; /* mov r1, r1, asr #0x6 */ R1 = ((int32_t)R1 >> 6); /* str r1, [r2, #0x60] */ *MEM32(R2 + 0x60) = R1; /* ldr r1, [r2, #0x58] */ R1 = *MEM32(R2 + 0x58); /* mov r0, r7, asr #0x1 */ R0 = ((int32_t)R7 >> 1); /* str r1, [r2, #0x5c] */ *MEM32(R2 + 0x5c) = R1; /* str r6, [r2, #0x58] */ *MEM32(R2 + 0x58) = R6; /* ldr r1, [r2, #0x28] */ R1 = *MEM32(R2 + 0x28); /* add r3, r0, #0x800000 */ R3 = R0 + 0x800000; /* mov r1, r1, asr #0x7 */ R1 = ((int32_t)R1 >> 7); /* smull r6, r1, r3, r1 */ tmp64 = (int64_t)R3 * R1; R6 = tmp64; R1 = tmp64 >> 32; /* mov r3, r6, lsr #0x18 */ R3 = (R6 >> 24); /* ldr r0, [r2, #0x4c] */ R0 = *MEM32(R2 + 0x4c); /* orr r3, r3, r1, lsl #0x8 */ R3 = R3 | (R1 << 8); /* sub r0, r3, r0 */ R0 = R3 - R0; /* mov r0, r0, asr #0x6 */ R0 = ((int32_t)R0 >> 6); /* str r0, [r2, #0x54] */ *MEM32(R2 + 0x54) = R0; /* ldr r0, [r2, #0x4c] */ R0 = *MEM32(R2 + 0x4c); /* str r0, [r2, #0x50] */ *MEM32(R2 + 0x50) = R0; /* str r3, [r2, #0x4c] */ *MEM32(R2 + 0x4c) = R3; /* ldr r1, [r2, #0x3c] */ R1 = *MEM32(R2 + 0x3c); /* ldr r0, [r2, #0x40] */ R0 = *MEM32(R2 + 0x40); /* cmp r0, r1 */ tmpA = R0; tmpB = R1; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* strne r1, [r2, #0x40] */ if (!Z) { *MEM32(R2 + 0x40) = R1; } /* strne r5, [r2, #0x34] */ if (!Z) { *MEM32(R2 + 0x34) = R5; } /* strne r5, [r2, #0x38] */ if (!Z) { *MEM32(R2 + 0x38) = R5; } /* ldr r1, [r4, #0x48] */ R1 = *MEM32(R4 + 0x48); /* mvn r0, #0xff000000 */ R0 = ~0xff000000; /* ldr r5, [r1, #0x4] */ R5 = *MEM32(R1 + 0x4); /* ldr r3, [r1, #0x14] */ R3 = *MEM32(R1 + 0x14); /* mov r2, r5, lsl #0x10 */ R2 = (R5 << 16); /* mov r2, r2, asr #0x10 */ R2 = ((int32_t)R2 >> 16); /* cmp r5, #0x3 */ tmpA = R5; tmpB = 3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* ldr r6, [r3, r2, lsl #0x2] */ R6 = *MEM32(R3 + (R2 << 2)); /* beq 0x2074e34 */ if (Z) { goto lab02074e34; } /* cmp r5, #0x4 */ tmpA = R5; tmpB = 4; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* bne 0x2074e58 */ if (!Z) { goto lab02074e58; } /* mov r5, #0x1000000 */ R5 = 0x1000000; /* b 0x2074e80 */ goto lab02074e80; case 0x02074e80: lab02074e80: /* ldr r6, [r1, #0x10] */ R6 = *MEM32(R1 + 0x10); /* ldr r0, [r1, #0x8] */ R0 = *MEM32(R1 + 0x8); /* ldr r3, [r1, #0x18] */ R3 = *MEM32(R1 + 0x18); /* add r0, r6, r0, lsl #0x2 */ R0 = R6 + (R0 << 2); /* ldr r2, [r1, #0x1c] */ R2 = *MEM32(R1 + 0x1c); /* ldr r0, [r0, #0x8] */ R0 = *MEM32(R0 + 0x8); /* smull r8, r7, r5, r3 */ tmp64 = (int64_t)R5 * R3; R8 = tmp64; R7 = tmp64 >> 32; /* smull r0, r3, r2, r0 */ tmp64 = (int64_t)R2 * R0; R0 = tmp64; R3 = tmp64 >> 32; /* ldr r5, [r1, #0x24] */ R5 = *MEM32(R1 + 0x24); /* mov r2, r0, lsr #0x18 */ R2 = (R0 >> 24); /* add r5, r6, r5, lsl #0x2 */ R5 = R6 + (R5 << 2); /* mov r0, r8, lsr #0x18 */ R0 = (R8 >> 24); /* orr r0, r0, r7, lsl #0x8 */ R0 = R0 | (R7 << 8); /* ldr r5, [r5, #0x8] */ R5 = *MEM32(R5 + 0x8); /* orr r2, r2, r3, lsl #0x8 */ R2 = R2 | (R3 << 8); /* adds r6, r5, r2 */ tmpA = R5; tmpB = R2; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R6 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R6 == 0; N = (int32_t)R6 < 0; /* mov r2, r3, asr #0x18 */ R2 = ((int32_t)R3 >> 24); /* umull r7, r3, r0, r6 */ tmp64 = (uint64_t)R0 * R6; R7 = tmp64; R3 = tmp64 >> 32; /* adc r2, r2, r5, asr #0x1f */ R2 = R2 + ((int32_t)R5 >> 31) + C; /* mla r3, r0, r2, r3 */ R3 = R0 * R2 + R3; /* mov r0, r0, asr #0x1f */ R0 = ((int32_t)R0 >> 31); /* mla r3, r0, r6, r3 */ R3 = R0 * R6 + R3; /* mov r2, r7, lsr #0x18 */ R2 = (R7 >> 24); /* ldr r0, [r1, #0x28] */ R0 = *MEM32(R1 + 0x28); /* orr r2, r2, r3, lsl #0x8 */ R2 = R2 | (R3 << 8); /* sub r0, r2, r0 */ R0 = R2 - R0; /* mov r0, r0, asr #0x6 */ R0 = ((int32_t)R0 >> 6); /* str r0, [r1, #0x30] */ *MEM32(R1 + 0x30) = R0; /* ldr r0, [r1, #0x28] */ R0 = *MEM32(R1 + 0x28); /* mov r6, #0x0 */ R6 = 0; /* str r0, [r1, #0x2c] */ *MEM32(R1 + 0x2c) = R0; /* str r2, [r1, #0x28] */ *MEM32(R1 + 0x28) = R2; /* ldr r0, [r4, #0x20] */ R0 = *MEM32(R4 + 0x20); /* cmp r0, #0x0 */ tmpA = R0; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* ble 0x2075424 */ if (Z || (N != V)) { goto lab02075424; } /* ldr r12, [r15, #0x554] ; 0x2075468 */ R12 = 0xffff8001; /* mvn r0, #0x80000000 */ R0 = ~0x80000000; /* mov r2, r12, lsr #0x12 */ R2 = (R12 >> 18); /* str r2, [r13, #0x8] */ *MEM32(R13 + 0x8) = R2; /* ldr r2, [r15, #0x50c] ; 0x2075430 */ R2 = 0x00001064; /* str r0, [r13, #0x4] */ *MEM32(R13 + 0x4) = R0; /* add r2, r2, #0x3f */ R2 = R2 + 63; /* str r2, [r13, #0xc] */ *MEM32(R13 + 0xc) = R2; /* ldr r2, [r15, #0x4fc] ; 0x2075430 */ R2 = 0x00001064; /* ldr r1, [r13, #0x4] */ R1 = *MEM32(R13 + 0x4); /* add r2, r2, #0x3f */ R2 = R2 + 63; /* str r2, [r13, #0x10] */ *MEM32(R13 + 0x10) = R2; /* ldr r2, [r13, #0x4] */ R2 = *MEM32(R13 + 0x4); /* mov r14, r12, lsr #0x11 */ R14 = (R12 >> 17); /* sub r2, r2, #0x7f000000 */ R2 = R2 - 0x7f000000; /* str r2, [r13, #0x14] */ *MEM32(R13 + 0x14) = R2; /* ldr r2, [r13, #0x4] */ R2 = *MEM32(R13 + 0x4); /* rsb r0, r0, #0x7f000000 */ R0 = 0x7f000000 - R0; /* rsb r2, r2, #0x7f000000 */ R2 = 0x7f000000 - R2; /* str r2, [r13, #0x18] */ *MEM32(R13 + 0x18) = R2; /* ldr r2, [r13, #0x4] */ R2 = *MEM32(R13 + 0x4); /* sub r1, r1, #0x7f000000 */ R1 = R1 - 0x7f000000; /* sub r2, r2, #0x7f000000 */ R2 = R2 - 0x7f000000; /* str r2, [r13, #0x1c] */ *MEM32(R13 + 0x1c) = R2; /* ldr r2, [r13, #0x4] */ R2 = *MEM32(R13 + 0x4); /* rsb r2, r2, #0x7f000000 */ R2 = 0x7f000000 - R2; /* str r2, [r13, #0x20] */ *MEM32(R13 + 0x20) = R2; /* ldr r2, [r13, #0x4] */ R2 = *MEM32(R13 + 0x4); /* sub r2, r2, #0x7f000000 */ R2 = R2 - 0x7f000000; /* str r2, [r13, #0x24] */ *MEM32(R13 + 0x24) = R2; /* ldr r2, [r13, #0x4] */ R2 = *MEM32(R13 + 0x4); /* rsb r2, r2, #0x7f000000 */ R2 = 0x7f000000 - R2; /* str r2, [r13, #0x28] */ *MEM32(R13 + 0x28) = R2; /* add r2, r12, #0x4000 */ R2 = R12 + 0x4000; /* str r2, [r13, #0x2c] */ *MEM32(R13 + 0x2c) = R2; case 0x02074f98: lab02074f98: /* ldr r2, [r4, #0x40] */ R2 = *MEM32(R4 + 0x40); /* ldr r3, [r2, #0x14] */ R3 = *MEM32(R2 + 0x14); /* ldr r5, [r2, #0x1c] */ R5 = *MEM32(R2 + 0x1c); /* sub r5, r3, r5 */ R5 = R3 - R5; /* str r5, [r2, #0x14] */ *MEM32(R2 + 0x14) = R5; /* ldr r10, [r2, #0x18] */ R10 = *MEM32(R2 + 0x18); /* ldr r5, [r2, #0x20] */ R5 = *MEM32(R2 + 0x20); /* sub r5, r10, r5 */ R5 = R10 - R5; /* str r5, [r2, #0x18] */ *MEM32(R2 + 0x18) = R5; /* ldr r5, [r2, #0xc] */ R5 = *MEM32(R2 + 0xc); /* cmp r5, #0x3 */ tmpA = R5; tmpB = 3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addls r15, r15, r5, lsl #0x2 */ switch(R5) { default: goto lab02075050; case 0: goto lab02075050; case 1: goto lab02074fdc; case 2: goto lab0207500c; case 3: goto lab02075030; } case 0x02075030: lab02075030: /* ldr r9, [r2, #0x18] */ R9 = *MEM32(R2 + 0x18); /* ldr r5, [r2, #0x4c] */ R5 = *MEM32(R2 + 0x4c); /* ldr r7, [r2, #0x6c] */ R7 = *MEM32(R2 + 0x6c); case 0x0207503c: lab0207503c: /* smull r8, r7, r5, r7 */ tmp64 = (int64_t)R5 * R7; R8 = tmp64; R7 = tmp64 >> 32; /* mov r5, r8, lsr #0x18 */ R5 = (R8 >> 24); /* orr r5, r5, r7, lsl #0x8 */ R5 = R5 | (R7 << 8); /* sub r5, r9, r5 */ R5 = R9 - R5; /* str r5, [r2, #0x18] */ *MEM32(R2 + 0x18) = R5; case 0x02075050: lab02075050: /* ldr r5, [r2, #0x48] */ R5 = *MEM32(R2 + 0x48); /* cmp r5, #0x1 */ tmpA = R5; tmpB = 1; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* bne 0x207506c */ if (!Z) { goto lab0207506c; } /* ldr r5, [r2, #0x14] */ R5 = *MEM32(R2 + 0x14); /* cmp r5, r3 */ tmpA = R5; tmpB = R3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* ldrgt r3, [r13, #0x4] */ if (!Z && (N == V)) { R3 = *MEM32(R13 + 0x4); } /* strgt r3, [r2, #0x18] */ if (!Z && (N == V)) { *MEM32(R2 + 0x18) = R3; } case 0x0207506c: lab0207506c: /* ldr r5, [r2, #0x2c] */ R5 = *MEM32(R2 + 0x2c); /* ldr r3, [r2, #0x14] */ R3 = *MEM32(R2 + 0x14); /* ldr r9, [r2, #0x18] */ R9 = *MEM32(R2 + 0x18); /* cmp r5, #0x3 */ tmpA = R5; tmpB = 3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addls r15, r15, r5, lsl #0x2 */ switch(R5) { default: goto lab0207514c; case 0: goto lab020750fc; case 1: goto lab02075094; case 2: goto lab020750c4; case 3: goto lab02075124; } case 0x02075124: lab02075124: /* ldr r5, [r2, #0x40] */ R5 = *MEM32(R2 + 0x40); /* tst r5, #0x40000000 */ tmpA = R5 & 0x40000000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* ldreq r3, [r15, #0x2fc] ; 0x2075430 */ if (Z) { R3 = 0x00001064; } /* eoreq r3, r5, r3 */ if (Z) { R3 = R5 ^ R3; } /* moveq r3, r3, lsl #0x1 */ if (Z) { R3 = (R3 << 1); } /* orreq r3, r3, #0x1 */ if (Z) { R3 = R3 | 1; } /* movne r3, r5, lsl #0x1 */ if (!Z) { R3 = (R5 << 1); } /* str r3, [r2, #0x40] */ *MEM32(R2 + 0x40) = R3; /* mov r3, r3 */ R3 = R3; /* mov r3, r3, asr #0x10 */ R3 = ((int32_t)R3 >> 16); case 0x0207514c: lab0207514c: /* ldr r5, [r2, #0x30] */ R5 = *MEM32(R2 + 0x30); /* cmp r5, #0x3 */ tmpA = R5; tmpB = 3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addls r15, r15, r5, lsl #0x2 */ switch(R5) { default: goto lab02075234; case 0: goto lab020751d4; case 1: goto lab0207516c; case 2: goto lab0207519c; case 3: goto lab020751fc; } case 0x020751fc: lab020751fc: /* ldr r7, [r2, #0x44] */ R7 = *MEM32(R2 + 0x44); /* tst r7, #0x40000000 */ tmpA = R7 & 0x40000000; Z = tmpA == 0; N = (int32_t)tmpA < 0; /* ldreq r5, [r15, #0x224] ; 0x2075430 */ if (Z) { R5 = 0x00001064; } /* eoreq r5, r7, r5 */ if (Z) { R5 = R7 ^ R5; } /* moveq r5, r5, lsl #0x1 */ if (Z) { R5 = (R5 << 1); } /* orreq r5, r5, #0x1 */ if (Z) { R5 = R5 | 1; } /* movne r5, r7, lsl #0x1 */ if (!Z) { R5 = (R7 << 1); } /* str r5, [r2, #0x44] */ *MEM32(R2 + 0x44) = R5; /* eor r5, r9, r10 */ R5 = R9 ^ R10; /* movs r5, r5, asr #0x1f */ C = ((int32_t)R5 >> 30) & 1; R5 = ((int32_t)R5 >> 31); Z = R5 == 0; N = (int32_t)R5 < 0; /* ldrne r5, [r2, #0x44] */ if (!Z) { R5 = *MEM32(R2 + 0x44); } /* movne r9, r5, asr #0x10 */ if (!Z) { R9 = ((int32_t)R5 >> 16); } /* strne r9, [r2, #0x50] */ if (!Z) { *MEM32(R2 + 0x50) = R9; } /* ldreq r9, [r2, #0x50] */ if (Z) { R9 = *MEM32(R2 + 0x50); } case 0x02075234: lab02075234: /* mov r5, r9, lsl #0x9 */ R5 = (R9 << 9); /* str r5, [r2, #0x4c] */ *MEM32(R2 + 0x4c) = R5; /* ldr r5, [r2, #0x38] */ R5 = *MEM32(R2 + 0x38); /* ldr r2, [r2, #0x3c] */ R2 = *MEM32(R2 + 0x3c); /* ldr r7, [r4, #0x44] */ R7 = *MEM32(R4 + 0x44); /* mul r2, r9, r2 */ R2 = R9 * R2; /* mla r2, r3, r5, r2 */ R2 = R3 * R5 + R2; /* mov r2, r2, asr #0xf */ R2 = ((int32_t)R2 >> 15); /* ldr r3, [r7, #0x24] */ R3 = *MEM32(R7 + 0x24); /* mov r5, r2, lsl #0x9 */ R5 = (R2 << 9); /* mul r3, r2, r3 */ R3 = R2 * R3; /* ldr r8, [r7, #0x34] */ R8 = *MEM32(R7 + 0x34); /* ldr r2, [r7, #0x5c] */ R2 = *MEM32(R7 + 0x5c); /* ldr r11, [r7, #0x38] */ R11 = *MEM32(R7 + 0x38); /* smull r2, r10, r8, r2 */ tmp64 = (int64_t)R8 * R2; R2 = tmp64; R10 = tmp64 >> 32; /* mov r2, r2, lsr #0x17 */ R2 = (R2 >> 23); /* orr r2, r2, r10, lsl #0x9 */ R2 = R2 | (R10 << 9); /* adds r2, r11, r2 */ tmpA = R11; tmpB = R2; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R2 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R2 == 0; N = (int32_t)R2 < 0; /* rsb r3, r2, r3, asr #0x6 */ R3 = ((int32_t)R3 >> 6) - R2; /* ldr r2, [r13, #0x14] */ R2 = *MEM32(R13 + 0x14); /* cmp r3, r2 */ tmpA = R3; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r3, r1 */ if (!Z && (N == V)) { R3 = R1; } /* bgt 0x207529c */ if (!Z && (N == V)) { goto lab0207529c; } /* ldr r2, [r13, #0x18] */ R2 = *MEM32(R13 + 0x18); /* cmp r3, r2 */ tmpA = R3; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movlt r3, r0 */ if (N != V) { R3 = R0; } case 0x0207529c: lab0207529c: /* ldr r2, [r7, #0x50] */ R2 = *MEM32(R7 + 0x50); /* ldr r11, [r7, #0x40] */ R11 = *MEM32(R7 + 0x40); /* smull r2, r10, r3, r2 */ tmp64 = (int64_t)R3 * R2; R2 = tmp64; R10 = tmp64 >> 32; /* mov r2, r2, lsr #0x17 */ R2 = (R2 >> 23); /* orr r2, r2, r10, lsl #0x9 */ R2 = R2 | (R10 << 9); /* cmp r11, #0x1 */ tmpA = R11; tmpB = 1; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* moveq r5, r3 */ if (Z) { R5 = R3; } /* adds r8, r8, r2 */ tmpA = R8; tmpB = R2; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R8 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R8 == 0; N = (int32_t)R8 < 0; /* ldr r2, [r13, #0x1c] */ R2 = *MEM32(R13 + 0x1c); /* cmp r8, r2 */ tmpA = R8; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r8, r1 */ if (!Z && (N == V)) { R8 = R1; } /* bgt 0x20752d8 */ if (!Z && (N == V)) { goto lab020752d8; } /* ldr r2, [r13, #0x20] */ R2 = *MEM32(R13 + 0x20); /* cmp r8, r2 */ tmpA = R8; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movlt r8, r0 */ if (N != V) { R8 = R0; } case 0x020752d8: lab020752d8: /* str r8, [r7, #0x34] */ *MEM32(R7 + 0x34) = R8; /* ldr r2, [r7, #0x50] */ R2 = *MEM32(R7 + 0x50); /* cmp r11, #0x2 */ tmpA = R11; tmpB = 2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* smull r2, r10, r8, r2 */ tmp64 = (int64_t)R8 * R2; R2 = tmp64; R10 = tmp64 >> 32; /* mov r2, r2, lsr #0x17 */ R2 = (R2 >> 23); /* ldr r3, [r7, #0x38] */ R3 = *MEM32(R7 + 0x38); /* orr r2, r2, r10, lsl #0x9 */ R2 = R2 | (R10 << 9); /* moveq r5, r8 */ if (Z) { R5 = R8; } /* adds r2, r3, r2 */ tmpA = R3; tmpB = R2; tmp64 = (uint64_t)tmpA + tmpB; C = (tmp64 >> 32) & 1; R2 = tmp64; V = (~(tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = R2 == 0; N = (int32_t)R2 < 0; /* ldr r3, [r13, #0x24] */ R3 = *MEM32(R13 + 0x24); /* cmp r2, r3 */ tmpA = R2; tmpB = R3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r2, r1 */ if (!Z && (N == V)) { R2 = R1; } /* bgt 0x2075318 */ if (!Z && (N == V)) { goto lab02075318; } /* ldr r3, [r13, #0x28] */ R3 = *MEM32(R13 + 0x28); /* cmp r2, r3 */ tmpA = R2; tmpB = R3; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movlt r2, r0 */ if (N != V) { R2 = R0; } case 0x02075318: lab02075318: /* str r2, [r7, #0x38] */ *MEM32(R7 + 0x38) = R2; /* ldr r3, [r7, #0x40] */ R3 = *MEM32(R7 + 0x40); /* cmp r3, #0x0 */ tmpA = R3; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* moveq r5, r2 */ if (Z) { R5 = R2; } /* ldr r3, [r7, #0x50] */ R3 = *MEM32(R7 + 0x50); /* ldr r2, [r7, #0x54] */ R2 = *MEM32(R7 + 0x54); /* mov r5, r5, asr #0x9 */ R5 = ((int32_t)R5 >> 9); /* add r2, r3, r2 */ R2 = R3 + R2; /* str r2, [r7, #0x50] */ *MEM32(R7 + 0x50) = R2; /* ldr r3, [r7, #0x5c] */ R3 = *MEM32(R7 + 0x5c); /* ldr r2, [r7, #0x60] */ R2 = *MEM32(R7 + 0x60); /* add r2, r3, r2 */ R2 = R3 + R2; /* str r2, [r7, #0x5c] */ *MEM32(R7 + 0x5c) = R2; /* ldr r2, [r4, #0x48] */ R2 = *MEM32(R4 + 0x48); /* ldr r3, [r2, #0x38] */ R3 = *MEM32(R2 + 0x38); /* mul r3, r5, r3 */ R3 = R5 * R3; /* cmp r12, r3, asr #0xb */ tmpA = R12; tmpB = ((int32_t)R3 >> 11); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* mov r3, r3, asr #0xb */ R3 = ((int32_t)R3 >> 11); /* str r3, [r2, #0x34] */ *MEM32(R2 + 0x34) = R3; /* movgt r3, r12 */ if (!Z && (N == V)) { R3 = R12; } /* bgt 0x2075374 */ if (!Z && (N == V)) { goto lab02075374; } /* cmp r3, r12, lsr #0x11 */ tmpA = R3; tmpB = (R12 >> 17); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r3, r14 */ if (!Z && (N == V)) { R3 = R14; } case 0x02075374: lab02075374: /* str r3, [r2, #0x34] */ *MEM32(R2 + 0x34) = R3; /* mov r7, r3, asr #0x1 */ R7 = ((int32_t)R3 >> 1); /* ldr r8, [r2, #0x3c] */ R8 = *MEM32(R2 + 0x3c); /* ldr r3, [r2, #0x2c] */ R3 = *MEM32(R2 + 0x2c); /* mul r8, r5, r8 */ R8 = R5 * R8; /* add r5, r7, r8, asr #0xf */ R5 = R7 + ((int32_t)R8 >> 15); /* mov r5, r5, asr #0x1 */ R5 = ((int32_t)R5 >> 1); /* mov r3, r3, asr #0x9 */ R3 = ((int32_t)R3 >> 9); /* mul r3, r5, r3 */ R3 = R5 * R3; /* mov r3, r3, asr #0xf */ R3 = ((int32_t)R3 >> 15); /* ldr r5, [r2, #0xc] */ R5 = *MEM32(R2 + 0xc); /* cmp r5, #0x0 */ tmpA = R5; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* beq 0x20753c8 */ if (Z) { goto lab020753c8; } /* mul r5, r9, r3 */ R5 = R9 * R3; /* mov r8, r5, asr #0xf */ R8 = ((int32_t)R5 >> 15); /* ldr r7, [r2, #0x20] */ R7 = *MEM32(R2 + 0x20); /* mul r5, r8, r7 */ R5 = R8 * R7; /* rsb r7, r7, r12, lsr #0x11 */ R7 = (R12 >> 17) - R7; /* mul r7, r3, r7 */ R7 = R3 * R7; /* mov r3, r5, asr #0xf */ R3 = ((int32_t)R5 >> 15); /* add r3, r3, r7, asr #0xf */ R3 = R3 + ((int32_t)R7 >> 15); case 0x020753c8: lab020753c8: /* ldr r5, [r13, #0x2c] */ R5 = *MEM32(R13 + 0x2c); /* cmp r3, r5 */ tmpA = R3; tmpB = R5; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addlt r3, r12, #0x4000 */ if (N != V) { R3 = R12 + 0x4000; } /* blt 0x20753e0 */ if (N != V) { goto lab020753e0; } /* cmp r3, r12, lsr #0x12 */ tmpA = R3; tmpB = (R12 >> 18); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* ldrgt r3, [r13, #0x8] */ if (!Z && (N == V)) { R3 = *MEM32(R13 + 0x8); } case 0x020753e0: lab020753e0: /* mov r7, r3, lsl #0x1 */ R7 = (R3 << 1); /* cmp r12, r3, lsl #0x1 */ tmpA = R12; tmpB = (R3 << 1); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r7, r12 */ if (!Z && (N == V)) { R7 = R12; } /* bgt 0x20753f8 */ if (!Z && (N == V)) { goto lab020753f8; } /* cmp r7, r12, lsr #0x11 */ tmpA = R7; tmpB = (R12 >> 17); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r7, r14 */ if (!Z && (N == V)) { R7 = R14; } case 0x020753f8: lab020753f8: /* ldr r5, [r2, #0x2c] */ R5 = *MEM32(R2 + 0x2c); /* ldr r3, [r2, #0x30] */ R3 = *MEM32(R2 + 0x30); /* add r6, r6, #0x1 */ R6 = R6 + 1; /* add r3, r5, r3 */ R3 = R5 + R3; /* str r3, [r2, #0x2c] */ *MEM32(R2 + 0x2c) = R3; /* ldr r2, [r13] */ R2 = *MEM32(R13); /* strh r7, [r2], #0x2 */ *MEM16(R2 + 0x2) = R7; R2 = R2 + 0x2; /* str r2, [r13] */ *MEM32(R13) = R2; /* ldr r2, [r4, #0x20] */ R2 = *MEM32(R4 + 0x20); /* cmp r6, r2 */ tmpA = R6; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* blt 0x2074f98 */ if (N != V) { goto lab02074f98; } case 0x02075424: lab02075424: /* mov r0, #0x0 */ R0 = 0; /* add r13, r13, #0x68 */ R13 = R13 + 104; /* ldmia r13!, { r3-r11, r15 } */ R3 = *MEM32(R13 + 0); R4 = *MEM32(R13 + 4); R5 = *MEM32(R13 + 8); R6 = *MEM32(R13 + 12); R7 = *MEM32(R13 + 16); R8 = *MEM32(R13 + 20); R9 = *MEM32(R13 + 24); R10 = *MEM32(R13 + 28); R11 = *MEM32(R13 + 32); R15 = *MEM32(R13 + 36); R13 += 40; goto dispatch; case 0x0207519c: lab0207519c: /* mov r5, r9, asr #0x10 */ R5 = ((int32_t)R9 >> 16); /* cmp r5, #0x0 */ tmpA = R5; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* rsble r5, r5, #0x0 */ if (Z || (N != V)) { R5 = 0 - R5; } /* add r7, r12, r5, lsl #0x1 */ R7 = R12 + (R5 << 1); /* ldr r5, [r2, #0x28] */ R5 = *MEM32(R2 + 0x28); /* mov r5, r5, asr #0x10 */ R5 = ((int32_t)R5 >> 16); /* mul r5, r7, r5 */ R5 = R7 * R5; /* mov r9, r5, asr #0x8 */ R9 = ((int32_t)R5 >> 8); /* cmp r12, r5, asr #0x8 */ tmpA = R12; tmpB = ((int32_t)R5 >> 8); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r9, r12 */ if (!Z && (N == V)) { R9 = R12; } /* bgt 0x2075234 */ if (!Z && (N == V)) { goto lab02075234; } /* cmp r9, r12, lsr #0x11 */ tmpA = R9; tmpB = (R12 >> 17); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r9, r14 */ if (!Z && (N == V)) { R9 = R14; } /* b 0x2075234 */ goto lab02075234; case 0x0207516c: lab0207516c: /* ldr r5, [r2, #0x28] */ R5 = *MEM32(R2 + 0x28); /* mov r7, r9, asr #0x10 */ R7 = ((int32_t)R9 >> 16); /* mov r5, r5, asr #0x10 */ R5 = ((int32_t)R5 >> 16); /* mul r5, r7, r5 */ R5 = R7 * R5; /* mov r5, r5, asr #0x8 */ R5 = ((int32_t)R5 >> 8); /* cmp r5, r12, lsr #0x11 */ tmpA = R5; tmpB = (R12 >> 17); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r5, r14 */ if (!Z && (N == V)) { R5 = R14; } /* bgt 0x2075194 */ if (!Z && (N == V)) { goto lab02075194; } /* cmp r5, r12 */ tmpA = R5; tmpB = R12; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movlt r5, r12 */ if (N != V) { R5 = R12; } case 0x02075194: lab02075194: /* sub r9, r7, r5 */ R9 = R7 - R5; /* b 0x2075234 */ goto lab02075234; case 0x020751d4: lab020751d4: /* ldr r7, [r2, #0x18] */ R7 = *MEM32(R2 + 0x18); /* mov r5, r9, asr #0x10 */ R5 = ((int32_t)R9 >> 16); /* mov r8, r7, asr #0x10 */ R8 = ((int32_t)R7 >> 16); /* ldr r7, [r13, #0x10] */ R7 = *MEM32(R13 + 0x10); /* cmp r5, #0x0 */ tmpA = R5; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* mul r7, r8, r7 */ R7 = R8 * R7; /* rsble r5, r5, #0x0 */ if (Z || (N != V)) { R5 = 0 - R5; } /* add r5, r12, r5, lsl #0x1 */ R5 = R12 + (R5 << 1); /* add r9, r5, r7, asr #0xf */ R9 = R5 + ((int32_t)R7 >> 15); /* b 0x2075234 */ goto lab02075234; case 0x020750c4: lab020750c4: /* mov r3, r3, asr #0x10 */ R3 = ((int32_t)R3 >> 16); /* ldr r5, [r2, #0x24] */ R5 = *MEM32(R2 + 0x24); /* cmp r3, #0x0 */ tmpA = R3; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* rsble r3, r3, #0x0 */ if (Z || (N != V)) { R3 = 0 - R3; } /* add r3, r12, r3, lsl #0x1 */ R3 = R12 + (R3 << 1); /* mov r5, r5, asr #0x10 */ R5 = ((int32_t)R5 >> 16); /* mul r5, r3, r5 */ R5 = R3 * R5; /* mov r3, r5, asr #0x8 */ R3 = ((int32_t)R5 >> 8); /* cmp r12, r5, asr #0x8 */ tmpA = R12; tmpB = ((int32_t)R5 >> 8); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r3, r12 */ if (!Z && (N == V)) { R3 = R12; } /* bgt 0x207514c */ if (!Z && (N == V)) { goto lab0207514c; } /* cmp r3, r12, lsr #0x11 */ tmpA = R3; tmpB = (R12 >> 17); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r3, r14 */ if (!Z && (N == V)) { R3 = R14; } /* b 0x207514c */ goto lab0207514c; case 0x02075094: lab02075094: /* ldr r5, [r2, #0x24] */ R5 = *MEM32(R2 + 0x24); /* mov r3, r3, asr #0x10 */ R3 = ((int32_t)R3 >> 16); /* mov r5, r5, asr #0x10 */ R5 = ((int32_t)R5 >> 16); /* mul r5, r3, r5 */ R5 = R3 * R5; /* mov r5, r5, asr #0x8 */ R5 = ((int32_t)R5 >> 8); /* cmp r5, r12, lsr #0x11 */ tmpA = R5; tmpB = (R12 >> 17); tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movgt r5, r14 */ if (!Z && (N == V)) { R5 = R14; } /* bgt 0x20750bc */ if (!Z && (N == V)) { goto lab020750bc; } /* cmp r5, r12 */ tmpA = R5; tmpB = R12; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* movlt r5, r12 */ if (N != V) { R5 = R12; } case 0x020750bc: lab020750bc: /* sub r3, r3, r5 */ R3 = R3 - R5; /* b 0x207514c */ goto lab0207514c; case 0x020750fc: lab020750fc: /* ldr r5, [r2, #0x14] */ R5 = *MEM32(R2 + 0x14); /* mov r3, r3, asr #0x10 */ R3 = ((int32_t)R3 >> 16); /* mov r7, r5, asr #0x10 */ R7 = ((int32_t)R5 >> 16); /* ldr r5, [r13, #0xc] */ R5 = *MEM32(R13 + 0xc); /* cmp r3, #0x0 */ tmpA = R3; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* mul r5, r7, r5 */ R5 = R7 * R5; /* rsble r3, r3, #0x0 */ if (Z || (N != V)) { R3 = 0 - R3; } /* add r3, r12, r3, lsl #0x1 */ R3 = R12 + (R3 << 1); /* add r3, r3, r5, asr #0xf */ R3 = R3 + ((int32_t)R5 >> 15); /* b 0x207514c */ goto lab0207514c; case 0x0207500c: lab0207500c: /* ldr r9, [r2, #0x68] */ R9 = *MEM32(R2 + 0x68); /* ldr r8, [r2, #0x14] */ R8 = *MEM32(R2 + 0x14); /* ldr r5, [r2, #0x4c] */ R5 = *MEM32(R2 + 0x4c); /* mul r7, r5, r9 */ R7 = R5 * R9; /* mov r5, r7, asr #0x7 */ R5 = ((int32_t)R7 >> 7); /* mul r5, r9, r5 */ R5 = R9 * R5; /* sub r5, r8, r5, asr #0x1 */ R5 = R8 - ((int32_t)R5 >> 1); /* str r5, [r2, #0x14] */ *MEM32(R2 + 0x14) = R5; /* b 0x2075050 */ goto lab02075050; case 0x02074fdc: lab02074fdc: /* ldr r9, [r2, #0x60] */ R9 = *MEM32(R2 + 0x60); /* ldr r8, [r2, #0x14] */ R8 = *MEM32(R2 + 0x14); /* ldr r5, [r2, #0x4c] */ R5 = *MEM32(R2 + 0x4c); /* mul r7, r5, r9 */ R7 = R5 * R9; /* mov r5, r7, asr #0x7 */ R5 = ((int32_t)R7 >> 7); /* mul r5, r9, r5 */ R5 = R9 * R5; /* sub r5, r8, r5, asr #0x1 */ R5 = R8 - ((int32_t)R5 >> 1); /* str r5, [r2, #0x14] */ *MEM32(R2 + 0x14) = R5; /* ldr r9, [r2, #0x18] */ R9 = *MEM32(R2 + 0x18); /* ldr r5, [r2, #0x4c] */ R5 = *MEM32(R2 + 0x4c); /* ldr r7, [r2, #0x64] */ R7 = *MEM32(R2 + 0x64); /* b 0x207503c */ goto lab0207503c; case 0x02074e58: lab02074e58: /* add r2, r6, r0 */ R2 = R6 + R0; /* ldr r6, [r1, #0x1c] */ R6 = *MEM32(R1 + 0x1c); /* mov r2, r2, asr #0x1 */ R2 = ((int32_t)R2 >> 1); /* smull r5, r3, r2, r6 */ tmp64 = (int64_t)R2 * R6; R5 = tmp64; R3 = tmp64 >> 32; /* mov r2, r5, lsr #0x18 */ R2 = (R5 >> 24); /* orr r2, r2, r3, lsl #0x8 */ R2 = R2 | (R3 << 8); /* cmp r6, #0x0 */ tmpA = R6; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addgt r0, r2, r0 */ if (!Z && (N == V)) { R0 = R2 + R0; } /* subgt r5, r0, r6 */ if (!Z && (N == V)) { R5 = R0 - R6; } /* addle r5, r2, r0 */ if (Z || (N != V)) { R5 = R2 + R0; } case 0x02074e34: lab02074e34: /* ldr r5, [r1, #0x1c] */ R5 = *MEM32(R1 + 0x1c); /* smull r3, r2, r6, r5 */ tmp64 = (int64_t)R6 * R5; R3 = tmp64; R2 = tmp64 >> 32; /* mov r3, r3, lsr #0x18 */ R3 = (R3 >> 24); /* orr r3, r3, r2, lsl #0x8 */ R3 = R3 | (R2 << 8); /* cmp r5, #0x0 */ tmpA = R5; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addgt r0, r3, r0 */ if (!Z && (N == V)) { R0 = R3 + R0; } /* subgt r5, r0, r5 */ if (!Z && (N == V)) { R5 = R0 - R5; } /* addle r5, r3, r0 */ if (Z || (N != V)) { R5 = R3 + R0; } /* b 0x2074e80 */ goto lab02074e80; case 0x0200ea1c: lab0200ea1c: /* stmdb r13!, { r4 } */ *MEM32(R13 - 4) = R4; R13 -= 4; /* ldr r1, [r15, #0x2c] ; 0x200ea54 */ R1 = 0x04000290; /* ldmia r0, { r2-r4, r12 } */ R2 = *MEM32(R0 + 0); R3 = *MEM32(R0 + 4); R4 = *MEM32(R0 + 8); R12 = *MEM32(R0 + 12); /* stmia r1, { r2-r4, r12 } */ *MEM32(R1 + 0) = R2; *MEM32(R1 + 4) = R3; *MEM32(R1 + 8) = R4; *MEM32(R1 + 12) = R12; /* ldrh r2, [r0, #0x18] */ R2 = *MEM16(R0 + 0x18); /* ldrh r3, [r0, #0x1a] */ R3 = *MEM16(R0 + 0x1a); /* strh r2, [r1, #-0x10] */ *MEM16(R1 - 0x10) = R2; /* strh r3, [r1, #0x20] */ *MEM16(R1 + 0x20) = R3; /* add r0, r0, #0x10 */ R0 = R0 + 16; /* add r1, r1, #0x28 */ R1 = R1 + 40; /* ldmia r0, { r2, r3 } */ R2 = *MEM32(R0 + 0); R3 = *MEM32(R0 + 4); /* stmia r1, { r2, r3 } */ *MEM32(R1 + 0) = R2; *MEM32(R1 + 4) = R3; /* ldmia r13!, { r4 } */ R4 = *MEM32(R13 + 0); R13 += 4; /* bx r14 */ R15 = R14; goto dispatch; case 0x0200e9dc: lab0200e9dc: /* ldr r1, [r15, #0x34] ; 0x200ea18 */ R1 = 0x04000290; /* stmdb r13!, { r4 } */ *MEM32(R13 - 4) = R4; R13 -= 4; /* ldmia r1, { r2-r4, r12 } */ R2 = *MEM32(R1 + 0); R3 = *MEM32(R1 + 4); R4 = *MEM32(R1 + 8); R12 = *MEM32(R1 + 12); /* stmia r0!, { r2-r4, r12 } */ *MEM32(R0 + 0) = R2; *MEM32(R0 + 4) = R3; *MEM32(R0 + 8) = R4; *MEM32(R0 + 12) = R12; R0 += 16; /* ldrh r12, [r1, #-0x10] */ R12 = *MEM16(R1 - 0x10); /* add r1, r1, #0x28 */ R1 = R1 + 40; /* ldmia r1, { r2, r3 } */ R2 = *MEM32(R1 + 0); R3 = *MEM32(R1 + 4); /* stmia r0!, { r2, r3 } */ *MEM32(R0 + 0) = R2; *MEM32(R0 + 4) = R3; R0 += 8; /* and r12, r12, #0x3 */ R12 = R12 & 3; /* ldrh r2, [r1, #-0x8] */ R2 = *MEM16(R1 - 0x8); /* strh r12, [r0] */ *MEM16(R0) = R12; /* and r2, r2, #0x1 */ R2 = R2 & 1; /* strh r2, [r0, #0x2] */ *MEM16(R0 + 0x2) = R2; /* ldmia r13!, { r4 } */ R4 = *MEM32(R13 + 0); R13 += 4; /* bx r14 */ R15 = R14; goto dispatch; case 0x02074944: lab02074944: /* cmp r1, r2 */ tmpA = R1; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* strlt r2, [r0, #0x4] */ if (N != V) { *MEM32(R0 + 0x4) = R2; } case 0x020748bc: lab020748bc: /* ldr r1, [r0] */ R1 = *MEM32(R0); /* ldr r1, [r1, #0x8] */ R1 = *MEM32(R1 + 0x8); /* str r1, [r0, #0x8] */ *MEM32(R0 + 0x8) = R1; /* b 0x2074900 */ goto lab02074900; case 0x02074878: lab02074878: /* ldr r2, [r0] */ R2 = *MEM32(R0); /* ldr r5, [r0, #0x8] */ R5 = *MEM32(R0 + 0x8); /* ldr r1, [r2, #0x8] */ R1 = *MEM32(R2 + 0x8); /* ldr r2, [r2, #0x4] */ R2 = *MEM32(R2 + 0x4); /* sub r1, r1, r5 */ R1 = R1 - R5; /* smull r3, r1, r2, r1 */ tmp64 = (int64_t)R2 * R1; R3 = tmp64; R1 = tmp64 >> 32; /* mov r2, r3, lsr #0x18 */ R2 = (R3 >> 24); /* orr r2, r2, r1, lsl #0x8 */ R2 = R2 | (R1 << 8); /* add r2, r5, r2 */ R2 = R5 + R2; /* str r2, [r0, #0x8] */ *MEM32(R0 + 0x8) = R2; /* ldr r1, [r0] */ R1 = *MEM32(R0); /* ldr r1, [r1, #0x8] */ R1 = *MEM32(R1 + 0x8); /* cmp r2, r1 */ tmpA = R2; tmpB = R1; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* strlt r1, [r0, #0x8] */ if (N != V) { *MEM32(R0 + 0x8) = R1; } /* movlt r1, #0x2 */ if (N != V) { R1 = 2; } /* strblt r1, [r0, #0x4] */ if (N != V) { *MEM8(R0 + 0x4) = R1; } /* b 0x2074900 */ goto lab02074900; case 0x02074800: lab02074800: /* ldr r8, [r0, #0xc] */ R8 = *MEM32(R0 + 0xc); /* ldr r2, [r15, #0xc28] ; 0x2075434 */ R2 = 0x00b33333; /* mov r1, #0x70 */ R1 = 112; /* sub r3, r2, r8 */ R3 = R2 - R8; /* umull r7, r6, r3, r1 */ tmp64 = (uint64_t)R3 * R1; R7 = tmp64; R6 = tmp64 >> 32; /* mla r6, r3, r5, r6 */ R6 = R3 * R5 + R6; /* mov r3, r3, asr #0x1f */ R3 = ((int32_t)R3 >> 31); /* mla r6, r3, r1, r6 */ R6 = R3 * R1 + R6; /* mov r1, r7, lsr #0x7 */ R1 = (R7 >> 7); /* orr r1, r1, r6, lsl #0x19 */ R1 = R1 | (R6 << 25); /* add r1, r8, r1 */ R1 = R8 + R1; /* str r1, [r0, #0xc] */ *MEM32(R0 + 0xc) = R1; /* cmp r1, r2 */ tmpA = R1; tmpB = R2; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* strgt r2, [r0, #0xc] */ if (!Z && (N == V)) { *MEM32(R0 + 0xc) = R2; } /* ldr r2, [r0] */ R2 = *MEM32(R0); /* ldr r5, [r0, #0x8] */ R5 = *MEM32(R0 + 0x8); /* ldr r1, [r15, #0xbf0] ; 0x2075438 */ R1 = 0x014ccccd; /* ldr r2, [r2] */ R2 = *MEM32(R2); /* sub r1, r1, r5 */ R1 = R1 - R5; /* smull r3, r2, r1, r2 */ tmp64 = (int64_t)R1 * R2; R3 = tmp64; R2 = tmp64 >> 32; /* mov r1, r3, lsr #0x18 */ R1 = (R3 >> 24); /* orr r1, r1, r2, lsl #0x8 */ R1 = R1 | (R2 << 8); /* add r2, r5, r1 */ R2 = R5 + R1; /* mvn r1, #0xff000000 */ R1 = ~0xff000000; /* str r2, [r0, #0x8] */ *MEM32(R0 + 0x8) = R2; /* cmp r2, r1 */ tmpA = R2; tmpB = R1; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* strgt r1, [r0, #0x8] */ if (!Z && (N == V)) { *MEM32(R0 + 0x8) = R1; } /* movgt r1, #0x1 */ if (!Z && (N == V)) { R1 = 1; } /* strbgt r1, [r0, #0x4] */ if (!Z && (N == V)) { *MEM8(R0 + 0x4) = R1; } /* b 0x2074900 */ goto lab02074900; case 0x0207546c: lab0207546c: /* stmdb r13!, { r3-r11, r14 } */ *MEM32(R13 - 4) = R14; *MEM32(R13 - 8) = R11; *MEM32(R13 - 12) = R10; *MEM32(R13 - 16) = R9; *MEM32(R13 - 20) = R8; *MEM32(R13 - 24) = R7; *MEM32(R13 - 28) = R6; *MEM32(R13 - 32) = R5; *MEM32(R13 - 36) = R4; *MEM32(R13 - 40) = R3; R13 -= 40; /* mov r9, r0 */ R9 = R0; /* ldrb r7, [r9, #0x8] */ R7 = *MEM8(R9 + 0x8); /* mov r5, #0x0 */ R5 = 0; /* cmp r7, #0x0 */ tmpA = R7; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* moveq r0, r5 */ if (Z) { R0 = R5; } /* ldmiaeq r13!, { r3-r11, r15 } */ if (Z) { R3 = *MEM32(R13 + 0); R4 = *MEM32(R13 + 4); R5 = *MEM32(R13 + 8); R6 = *MEM32(R13 + 12); R7 = *MEM32(R13 + 16); R8 = *MEM32(R13 + 20); R9 = *MEM32(R13 + 24); R10 = *MEM32(R13 + 28); R11 = *MEM32(R13 + 32); R15 = *MEM32(R13 + 36); R13 += 40; goto dispatch; } /* cmp r7, #0x0 */ tmpA = R7; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* mov r8, r5 */ R8 = R5; /* ble 0x2075634 */ if (Z || (N != V)) { goto lab02075634; } /* mov r11, #0x3 */ R11 = 3; /* mvn r4, #0x80000000 */ R4 = ~0x80000000; /* mov r6, r11 */ R6 = R11; /* mov r10, #0x1 */ R10 = 1; case 0x020754a4: lab020754a4: /* ldr r0, [r9, #0x4] */ R0 = *MEM32(R9 + 0x4); /* add r1, r0, r8, lsl #0x3 */ R1 = R0 + (R8 << 3); /* ldrb r0, [r0, r8, lsl #0x3] */ R0 = *MEM8(R0 + (R8 << 3)); /* cmp r0, #0x15 */ tmpA = R0; tmpB = 21; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* bgt 0x20754ec */ if (!Z && (N == V)) { goto lab020754ec; } /* bge 0x2075628 */ if (N == V) { goto lab02075628; } /* cmp r0, #0x5 */ tmpA = R0; tmpB = 5; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* bgt 0x2075628 */ if (!Z && (N == V)) { goto lab02075628; } /* cmp r0, #0x0 */ tmpA = R0; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addge r15, r15, r0, lsl #0x2 */ switch(R0) { default: goto lab02075628; case 0: goto lab02075628; case 1: goto lab02075524; case 2: goto lab02075534; case 3: goto lab02075628; case 4: goto lab02075588; case 5: goto lab020755a0; case 6: goto lab02075628; } case 0x020755a0: lab020755a0: /* ldr r1, [r9, #0x30] */ R1 = *MEM32(R9 + 0x30); /* mov r0, #0x3 */ R0 = 3; /* strb r0, [r1, #0x4] */ *MEM8(R1 + 0x4) = R0; /* mov r0, #0x1 */ R0 = 1; /* strb r0, [r1, #0x5] */ *MEM8(R1 + 0x5) = R0; /* b 0x2075628 */ goto lab02075628; case 0x02075588: lab02075588: /* ldr r2, [r1, #0x4] */ R2 = *MEM32(R1 + 0x4); /* ldr r0, [r9, #0x34] */ R0 = *MEM32(R9 + 0x34); /* str r2, [r9, #0x2c] */ *MEM32(R9 + 0x2c) = R2; /* ldr r1, [r1, #0x4] */ R1 = *MEM32(R1 + 0x4); /* bl 0x2075ad4 */ R14 = 0x0207559c; goto lab02075ad4; case 0x0207559c: lab0207559c: /* b 0x2075628 */ goto lab02075628; case 0x02075ad4: lab02075ad4: /* str r1, [r0, #0x2c] */ *MEM32(R0 + 0x2c) = R1; /* ldrsh r1, [r0, #0x30] */ R1 = (int16_t)*MEM16(R0 + 0x30); /* ldr r12, [r15] ; 0x2075ae4 */ R12 = 0x02075a58; /* bx r12 */ R15 = R12; goto dispatch; case 0x02075534: lab02075534: /* ldrsb r1, [r1, #0x4] */ R1 = (int8_t)*MEM8(R1 + 0x4); /* ldr r0, [r9, #0x3c] */ R0 = *MEM32(R9 + 0x3c); /* mov r2, r5 */ R2 = R5; /* bl 0x2071fac */ R14 = 0x02075544; goto lab02071fac; case 0x02075544: lab02075544: /* ldrh r0, [r9, #0x52] */ R0 = *MEM16(R9 + 0x52); /* cmp r0, #0x0 */ tmpA = R0; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* beq 0x2075570 */ if (Z) { goto lab02075570; } /* ldr r0, [r9, #0x30] */ R0 = *MEM32(R9 + 0x30); /* strh r5, [r9, #0x52] */ *MEM16(R9 + 0x52) = R5; /* str r5, [r0, #0xc] */ *MEM32(R0 + 0xc) = R5; /* str r5, [r0, #0x8] */ *MEM32(R0 + 0x8) = R5; /* ldr r1, [r9, #0x30] */ R1 = *MEM32(R9 + 0x30); /* mov r0, #0x1 */ R0 = 1; /* strb r11, [r1, #0x4] */ *MEM8(R1 + 0x4) = R11; /* strb r0, [r1, #0x5] */ *MEM8(R1 + 0x5) = R0; case 0x02075570: lab02075570: /* ldr r1, [r9, #0x30] */ R1 = *MEM32(R9 + 0x30); /* ldrsb r0, [r1, #0x5] */ R0 = (int8_t)*MEM8(R1 + 0x5); /* cmp r0, #0x0 */ tmpA = R0; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* strbne r5, [r1, #0x4] */ if (!Z) { *MEM8(R1 + 0x4) = R5; } /* strb r5, [r1, #0x5] */ *MEM8(R1 + 0x5) = R5; /* b 0x2075628 */ goto lab02075628; case 0x02071fac: lab02071fac: /* ldr r0, [r0, #0x18] */ R0 = *MEM32(R0 + 0x18); /* ldr r12, [r15] ; 0x2071fb8 */ R12 = 0x02075c7c; /* bx r12 */ R15 = R12; goto dispatch; case 0x02075524: lab02075524: /* ldr r0, [r9, #0x30] */ R0 = *MEM32(R9 + 0x30); /* strb r6, [r0, #0x4] */ *MEM8(R0 + 0x4) = R6; /* strb r10, [r0, #0x5] */ *MEM8(R0 + 0x5) = R10; /* b 0x2075628 */ goto lab02075628; case 0x02075628: lab02075628: /* add r8, r8, #0x1 */ R8 = R8 + 1; /* cmp r8, r7 */ tmpA = R8; tmpB = R7; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* blt 0x20754a4 */ if (N != V) { goto lab020754a4; } case 0x02075634: lab02075634: /* mov r0, #0x0 */ R0 = 0; /* strb r0, [r9, #0x8] */ *MEM8(R9 + 0x8) = R0; /* ldmia r13!, { r3-r11, r15 } */ R3 = *MEM32(R13 + 0); R4 = *MEM32(R13 + 4); R5 = *MEM32(R13 + 8); R6 = *MEM32(R13 + 12); R7 = *MEM32(R13 + 16); R8 = *MEM32(R13 + 20); R9 = *MEM32(R13 + 24); R10 = *MEM32(R13 + 28); R11 = *MEM32(R13 + 32); R15 = *MEM32(R13 + 36); R13 += 40; goto dispatch; case 0x020754ec: lab020754ec: /* cmp r0, #0x18 */ tmpA = R0; tmpB = 24; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* bgt 0x20754fc */ if (!Z && (N == V)) { goto lab020754fc; } /* beq 0x20755b8 */ if (Z) { goto lab020755b8; } /* b 0x2075628 */ goto lab02075628; case 0x020755b8: lab020755b8: /* ldr r0, [r9, #0x34] */ R0 = *MEM32(R9 + 0x34); /* str r4, [r0, #0x14] */ *MEM32(R0 + 0x14) = R4; /* str r5, [r0, #0x1c] */ *MEM32(R0 + 0x1c) = R5; /* ldr r0, [r9, #0x30] */ R0 = *MEM32(R9 + 0x30); /* str r5, [r0, #0xc] */ *MEM32(R0 + 0xc) = R5; /* str r5, [r0, #0x8] */ *MEM32(R0 + 0x8) = R5; /* b 0x2075628 */ goto lab02075628; case 0x020754fc: lab020754fc: /* sub r0, r0, #0x19 */ R0 = R0 - 25; /* cmp r0, #0x5 */ tmpA = R0; tmpB = 5; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* addls r15, r15, r0, lsl #0x2 */ switch(R0) { default: goto lab02075628; case 0: goto lab02075628; case 1: goto lab02075628; case 2: goto lab02075628; case 3: goto lab020755e4; case 4: goto lab020755d4; case 5: goto lab02075608; } case 0x02075608: lab02075608: /* ldr r0, [r9, #0x34] */ R0 = *MEM32(R9 + 0x34); /* str r4, [r0, #0x14] */ *MEM32(R0 + 0x14) = R4; /* str r5, [r0, #0x1c] */ *MEM32(R0 + 0x1c) = R5; /* ldr r0, [r9, #0x30] */ R0 = *MEM32(R9 + 0x30); /* str r5, [r0, #0xc] */ *MEM32(R0 + 0xc) = R5; /* str r5, [r0, #0x8] */ *MEM32(R0 + 0x8) = R5; /* ldr r0, [r9, #0x40] */ R0 = *MEM32(R9 + 0x40); /* bl 0x2071e14 */ R14 = 0x02075628; goto lab02071e14; case 0x02071e14: lab02071e14: /* ldr r1, [r15, #0xc] ; 0x2071e28 */ R1 = 0x0017f3a7; /* mov r2, #0x0 */ R2 = 0; /* str r2, [r0, #0x14] */ *MEM32(R0 + 0x14) = R2; /* str r1, [r0, #0x18] */ *MEM32(R0 + 0x18) = R1; /* bx r14 */ R15 = R14; goto dispatch; case 0x020755d4: lab020755d4: /* mov r0, #0x1 */ R0 = 1; /* strh r0, [r9, #0x50] */ *MEM16(R9 + 0x50) = R0; /* strh r0, [r9, #0x52] */ *MEM16(R9 + 0x52) = R0; /* b 0x2075628 */ goto lab02075628; case 0x020755e4: lab020755e4: /* ldrh r0, [r9, #0x50] */ R0 = *MEM16(R9 + 0x50); /* cmp r0, #0x0 */ tmpA = R0; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; /* ldrne r1, [r9, #0x34] */ if (!Z) { R1 = *MEM32(R9 + 0x34); } /* strhne r5, [r9, #0x50] */ if (!Z) { *MEM16(R9 + 0x50) = R5; } /* ldrbne r0, [r1, #0x28] */ if (!Z) { R0 = *MEM8(R1 + 0x28); } /* cmpne r0, #0x0 */ if (!Z) { tmpA = R0; tmpB = 0; tmp64 = (uint64_t)tmpA - tmpB; C = ~(tmp64 >> 32) & 1; V = ((tmpA ^ tmpB) & (tmpA ^ (uint32_t)tmp64)) >> 31; Z = (uint32_t)tmp64 == 0; N = (int32_t)(uint32_t)tmp64 < 0; } /* strne r4, [r1, #0x14] */ if (!Z) { *MEM32(R1 + 0x14) = R4; } /* strne r5, [r1, #0x1c] */ if (!Z) { *MEM32(R1 + 0x1c) = R5; } /* b 0x2075628 */ goto lab02075628; default: if (R15 == in_R14) { printf("done!\n"); return; } printf("unknown PC %08x!\n", R15); assert(0); } }