.syntax unified .cpu cortex-m3 .text .thumb /*0x2c00*/ .byte 0xd0 /*0x2c01*/ .byte 0xe /*0x2c02*/ .byte 0x0 /*0x2c03*/ .byte 0x20 /*0x2c04*/ .word reset /*0x2c08*/ .word nmi /*0x2c0c*/ .word hard_fault /*0x2c10*/ .word mcu_fault /*0x2c14*/ .word bus_fault /*0x2c18*/ .word usage_fault /*0x2c1c*/ .byte 0x0 /*0x2c1d*/ .byte 0x0 /*0x2c1e*/ .byte 0x0 /*0x2c1f*/ .byte 0x0 /*0x2c20*/ .byte 0x0 /*0x2c21*/ .byte 0x0 /*0x2c22*/ .byte 0x0 /*0x2c23*/ .byte 0x0 /*0x2c24*/ .byte 0x0 /*0x2c25*/ .byte 0x0 /*0x2c26*/ .byte 0x0 /*0x2c27*/ .byte 0x0 /*0x2c28*/ .byte 0x0 /*0x2c29*/ .byte 0x0 /*0x2c2a*/ .byte 0x0 /*0x2c2b*/ .byte 0x0 /*0x2c2c*/ .word svccall_intr /*0x2c30*/ .word debug_intr /*0x2c34*/ .byte 0x0 /*0x2c35*/ .byte 0x0 /*0x2c36*/ .byte 0x0 /*0x2c37*/ .byte 0x0 /*0x2c38*/ .word pendsv_intr /*0x2c3c*/ .word systick_intr /*0x2c40*/ .word generic_intr /*0x2c44*/ .word generic_intr /*0x2c48*/ .word generic_intr /*0x2c4c*/ .word generic_intr /*0x2c50*/ .word generic_intr /*0x2c54*/ .word generic_intr /*0x2c58*/ .word generic_intr /*0x2c5c*/ .word generic_intr /*0x2c60*/ .word generic_intr /*0x2c64*/ .word generic_intr /*0x2c68*/ .word generic_intr /*0x2c6c*/ .word generic_intr /*0x2c70*/ .word generic_intr /*0x2c74*/ .word generic_intr /*0x2c78*/ .word generic_intr /*0x2c7c*/ .word generic_intr /*0x2c80*/ .word generic_intr /*0x2c84*/ .word generic_intr /*0x2c88*/ .word generic_intr /*0x2c8c*/ .word generic_intr /*0x2c90*/ .word generic_intr /*0x2c94*/ .word generic_intr /*0x2c98*/ .word generic_intr /*0x2c9c*/ .word generic_intr /*0x2ca0*/ .word generic_intr /*0x2ca4*/ .word generic_intr /*0x2ca8*/ .byte 0x0 /*0x2ca9*/ .byte 0x0 /*0x2caa*/ .byte 0x0 /*0x2cab*/ .byte 0x0 /*0x2cac*/ .word generic_intr /*0x2cb0*/ .word generic_intr /*0x2cb4*/ .word generic_intr /*0x2cb8*/ .word generic_intr /*0x2cbc*/ .byte 0x0 /*0x2cbd*/ .byte 0x0 /*0x2cbe*/ .byte 0x0 /*0x2cbf*/ .byte 0x0 /*0x2cc0*/ .byte 0x0 /*0x2cc1*/ .byte 0x0 /*0x2cc2*/ .byte 0x0 /*0x2cc3*/ .byte 0x0 /*0x2cc4*/ .byte 0x0 /*0x2cc5*/ .byte 0x0 /*0x2cc6*/ .byte 0x0 /*0x2cc7*/ .byte 0x0 /*0x2cc8*/ .byte 0x0 /*0x2cc9*/ .byte 0x0 /*0x2cca*/ .byte 0x0 /*0x2ccb*/ .byte 0x0 /*0x2ccc*/ .word generic_intr /*0x2cd0*/ .word loc_341c /*0x2cd4*/ .byte 0x0 /*0x2cd5*/ .byte 0x0 /*0x2cd6*/ .byte 0x0 /*0x2cd7*/ .byte 0x0 /*0x2cd8*/ .byte 0x0 /*0x2cd9*/ .byte 0x0 /*0x2cda*/ .byte 0x0 /*0x2cdb*/ .byte 0x0 /*0x2cdc*/ .byte 0x0 /*0x2cdd*/ .byte 0x0 /*0x2cde*/ .byte 0x0 /*0x2cdf*/ .byte 0x0 /*0x2ce0*/ .byte 0x0 /*0x2ce1*/ .byte 0x0 /*0x2ce2*/ .byte 0x0 /*0x2ce3*/ .byte 0x0 /*0x2ce4*/ .word generic_intr /*0x2ce8*/ .word generic_intr /*0x2cec*/ .word generic_intr /*0x2cf0*/ .word generic_intr /*0x2cf4*/ .word generic_intr /*0x2cf8*/ .word generic_intr /*0x2cfc*/ .word generic_intr /*0x2d00*/ .word generic_intr /*0x2d04*/ .byte 0x0 /*0x2d05*/ .byte 0x0 /*0x2d06*/ .byte 0x0 /*0x2d07*/ .byte 0x0 /*0x2d08*/ .byte 0x0 /*0x2d09*/ .byte 0x0 /*0x2d0a*/ .byte 0x0 /*0x2d0b*/ .byte 0x0 /*0x2d0c*/ .word generic_intr /*0x2d10*/ .byte 0x0 /*0x2d11*/ .byte 0x0 /*0x2d12*/ .byte 0x0 /*0x2d13*/ .byte 0x0 /*0x2d14*/ .word usb_intr /*0x2d18*/ .byte 0x0 /*0x2d19*/ .byte 0x0 /*0x2d1a*/ .byte 0x0 /*0x2d1b*/ .byte 0x0 /*0x2d1c*/ .word generic_intr /*0x2d20*/ .word generic_intr /*0x2d24*/ .word generic_intr /*0x2d28*/ .word generic_intr /*0x2d2c*/ .word generic_intr /*0x2d30*/ .word generic_intr /*0x2d34*/ .word generic_intr /*0x2d38*/ .word generic_intr /*0x2d3c*/ .word generic_intr /*0x2d40*/ .word generic_intr /*0x2d44*/ .word generic_intr /*0x2d48*/ .word generic_intr /*0x2d4c*/ .word generic_intr .thumb_func reset: /*0x2d50*/ ldr r0, [pc, #0x1c] /* data_2d70 */ /*0x2d52*/ blx r0 /* /* call_4974 */ /*0x2d54*/ ldr r0, [pc, #0x1c] /* data_2d74 */ /*0x2d56*/ blx r0 /* /* call_3fc0 */ /*0x2d58*/ ldr r0, [pc, #0x1c] /* data_2d78 */ /*0x2d5a*/ bx r0 /* entry */ .thumb_func nmi: /*0x2d5c*/ b nmi .thumb_func hard_fault: /*0x2d5e*/ b hard_fault .thumb_func mcu_fault: /*0x2d60*/ b mcu_fault .thumb_func bus_fault: /*0x2d62*/ b bus_fault .thumb_func usage_fault: /*0x2d64*/ b usage_fault .thumb_func svccall_intr: /*0x2d66*/ b svccall_intr .thumb_func debug_intr: /*0x2d68*/ b debug_intr .thumb_func pendsv_intr: /*0x2d6a*/ b pendsv_intr .thumb_func systick_intr: /*0x2d6c*/ b systick_intr .thumb_func generic_intr: /*0x2d6e*/ b generic_intr data_2d70: /*0x2d70*/ .word call_4974 data_2d74: /*0x2d74*/ .word call_3fc0 data_2d78: /*0x2d78*/ .word entry .thumb_func entry: /*0x2d7c*/ ldr.w sp, [pc, #0xc] /* data_2d8c */ /*0x2d80*/ bl call_2d90 .thumb_func call_2d84: /*0x2d84*/ ldr r0, [pc, #0] /* data_2d88 */ /*0x2d86*/ bx r0 /* main */ data_2d88: /*0x2d88*/ .word main data_2d8c: /*0x2d8c*/ .word 0x20000ed0 .thumb_func call_2d90: /*0x2d90*/ ldr r4, [pc, #0x18] /* data_2dac */ /*0x2d92*/ ldr r5, [pc, #0x1c] /* data_2db0 */ /*0x2d94*/ b jump_2da4 jump_2d96: /*0x2d96*/ ldr r0, [r4, #0xc] /*0x2d98*/ orr r3, r0, #1 /*0x2d9c*/ ldm.w r4, {r0, r1, r2} /*0x2da0*/ blx r3 /*0x2da2*/ adds r4, #0x10 jump_2da4: /*0x2da4*/ cmp r4, r5 /*0x2da6*/ blo jump_2d96 /*0x2da8*/ bl call_2d84 data_2dac: /*0x2dac*/ str r0, [r5, r5] /*0x2dae*/ movs r0, r0 data_2db0: /*0x2db0*/ str r0, [r1, r6] /*0x2db2*/ movs r0, r0 .thumb_func call_2db4: /*0x2db4*/ push {r4, r5, r6, r7, lr} /*0x2db6*/ ldr r3, [pc, #0xcc] /* data_2e84 */ /*0x2db8*/ sbfx r1, r1, #0, #1 /*0x2dbc*/ adds r1, r1, #1 /*0x2dbe*/ ldrb r2, [r3, #1] /*0x2dc0*/ movs r5, #1 /*0x2dc2*/ ldr r6, [pc, #0xc4] /* data_2e88 */ /*0x2dc4*/ cmp r0, #0xea /*0x2dc6*/ beq jump_2dd2 /*0x2dc8*/ cmp r0, #0xeb /*0x2dca*/ beq jump_2dd8 /*0x2dcc*/ cmp r0, #0xec /*0x2dce*/ bne jump_2de0 /*0x2dd0*/ b jump_2e08 jump_2dd2: /*0x2dd2*/ bfi r2, r1, #0, #1 /*0x2dd6*/ b jump_2ddc jump_2dd8: /*0x2dd8*/ bfi r2, r1, #1, #1 jump_2ddc: /*0x2ddc*/ strb r2, [r3, #1] /*0x2dde*/ str r5, [r6, #0x20] jump_2de0: /*0x2de0*/ subs r0, #0xa0 /*0x2de2*/ cmp r0, #0x11 /*0x2de4*/ bhi jump_2e80 /*0x2de6*/ ldr r2, [pc, #0xa4] /* data_2e8c */ /*0x2de8*/ cmp r0, #0x12 /*0x2dea*/ ldrb r3, [r2, #1] /*0x2dec*/ ldrb r4, [r2, #2] /*0x2dee*/ ldrb r7, [r2, #3] /*0x2df0*/ bhs jump_2e7e /*0x2df2*/ tbb [pc, r0] /*0x2df6*/ .byte 0xc /*0x2df7*/ .byte 0xf /*0x2df8*/ .byte 0x13 /*0x2df9*/ .byte 0x16 /*0x2dfa*/ .byte 0x19 /*0x2dfb*/ .byte 0x1c /*0x2dfc*/ .byte 0x1f /*0x2dfd*/ .byte 0x22 /*0x2dfe*/ .byte 0x25 /*0x2dff*/ .byte 0x28 /*0x2e00*/ .byte 0x2c /*0x2e01*/ .byte 0x2f /*0x2e02*/ .byte 0x32 /*0x2e03*/ .byte 0x35 /*0x2e04*/ .byte 0x38 /*0x2e05*/ .byte 0x3b /*0x2e06*/ .byte 0x3e /*0x2e07*/ .byte 0x41 jump_2e08: /*0x2e08*/ bfi r2, r1, #2, #1 /*0x2e0c*/ b jump_2ddc switch_2e0e: /*0x2e0e*/ bfi r3, r1, #0, #1 /*0x2e12*/ b jump_2e18 switch_2e14: /*0x2e14*/ bfi r3, r1, #1, #1 jump_2e18: /*0x2e18*/ strb r3, [r2, #1] /*0x2e1a*/ b jump_2e7e switch_2e1c: /*0x2e1c*/ bfi r3, r1, #2, #1 /*0x2e20*/ b jump_2e18 switch_2e22: /*0x2e22*/ bfi r3, r1, #3, #1 /*0x2e26*/ b jump_2e18 switch_2e28: /*0x2e28*/ bfi r3, r1, #4, #1 /*0x2e2c*/ b jump_2e18 switch_2e2e: /*0x2e2e*/ bfi r3, r1, #5, #1 /*0x2e32*/ b jump_2e18 switch_2e34: /*0x2e34*/ bfi r3, r1, #6, #1 /*0x2e38*/ b jump_2e18 switch_2e3a: /*0x2e3a*/ bfi r3, r1, #7, #1 /*0x2e3e*/ b jump_2e18 switch_2e40: /*0x2e40*/ bfi r4, r1, #0, #1 /*0x2e44*/ b jump_2e4a switch_2e46: /*0x2e46*/ bfi r4, r1, #1, #1 jump_2e4a: /*0x2e4a*/ strb r4, [r2, #2] /*0x2e4c*/ b jump_2e7e switch_2e4e: /*0x2e4e*/ bfi r4, r1, #2, #1 /*0x2e52*/ b jump_2e4a switch_2e54: /*0x2e54*/ bfi r4, r1, #3, #1 /*0x2e58*/ b jump_2e4a switch_2e5a: /*0x2e5a*/ bfi r4, r1, #4, #1 /*0x2e5e*/ b jump_2e4a switch_2e60: /*0x2e60*/ bfi r4, r1, #5, #1 /*0x2e64*/ b jump_2e4a switch_2e66: /*0x2e66*/ bfi r4, r1, #6, #1 /*0x2e6a*/ b jump_2e4a switch_2e6c: /*0x2e6c*/ bfi r4, r1, #7, #1 /*0x2e70*/ b jump_2e4a switch_2e72: /*0x2e72*/ bfi r7, r1, #0, #1 /*0x2e76*/ b jump_2e7c switch_2e78: /*0x2e78*/ bfi r7, r1, #1, #1 jump_2e7c: /*0x2e7c*/ strb r7, [r2, #3] jump_2e7e: /*0x2e7e*/ str r5, [r6, #0x1c] jump_2e80: /*0x2e80*/ pop {r4, r5, r6, r7, pc} /*0x2e82*/ .byte 0x0 /*0x2e83*/ .byte 0x0 data_2e84: /*0x2e84*/ .word 0x2000000c data_2e88: /*0x2e88*/ .word 0x20000048 data_2e8c: /*0x2e8c*/ .word 0x20000028 .thumb_func call_2e90: /*0x2e90*/ push {r4, lr} /*0x2e92*/ movs r2, #0 /*0x2e94*/ cmp r0, #0x1c /*0x2e96*/ bls jump_2e9e /*0x2e98*/ movs r2, #1 /*0x2e9a*/ subs r0, #0x20 /*0x2e9c*/ uxtb r0, r0 jump_2e9e: /*0x2e9e*/ ldr r3, [pc, #0x14] /* data_2eb4 */ /*0x2ea0*/ add.w r2, r3, r2, lsl #2 /*0x2ea4*/ ldr r3, [r2] /*0x2ea6*/ movs r4, #0xf /*0x2ea8*/ lsls r4, r0 /*0x2eaa*/ bics r3, r4 /*0x2eac*/ lsls r1, r0 /*0x2eae*/ orrs r1, r3 /*0x2eb0*/ str r1, [r2] /*0x2eb2*/ pop {r4, pc} data_2eb4: /*0x2eb4*/ .word 0x40022000 .thumb_func call_2eb8: /*0x2eb8*/ ldr r3, [pc, #0xc] /* data_2ec8 */ /*0x2eba*/ ldr r2, [r3, #0xc] /*0x2ebc*/ ands r1, r0 /*0x2ebe*/ bics r2, r0 /*0x2ec0*/ orrs r2, r1 /*0x2ec2*/ str r2, [r3, #0xc] /*0x2ec4*/ bx lr /*0x2ec6*/ .byte 0x0 /*0x2ec7*/ .byte 0x0 data_2ec8: /*0x2ec8*/ .word 0x40022000 .thumb_func call_2ecc: /*0x2ecc*/ ldr r3, [pc, #0xc] /* data_2edc */ /*0x2ece*/ ldr r2, [r3, #0x10] /*0x2ed0*/ ands r1, r0 /*0x2ed2*/ bics r2, r0 /*0x2ed4*/ orrs r2, r1 /*0x2ed6*/ str r2, [r3, #0x10] /*0x2ed8*/ bx lr /*0x2eda*/ .byte 0x0 /*0x2edb*/ .byte 0x0 data_2edc: /*0x2edc*/ .word 0x40022000 .thumb_func call_2ee0: /*0x2ee0*/ ldr r3, [pc, #0xc] /* data_2ef0 */ /*0x2ee2*/ ldr r2, [r3, #0x18] /*0x2ee4*/ ands r1, r0 /*0x2ee6*/ bics r2, r0 /*0x2ee8*/ orrs r2, r1 /*0x2eea*/ str r2, [r3, #0x18] /*0x2eec*/ bx lr /*0x2eee*/ .byte 0x0 /*0x2eef*/ .byte 0x0 data_2ef0: /*0x2ef0*/ .word 0x40022000 .thumb_func handle_update_packet: /*0x2ef4*/ push {r4, r5, r6, lr} /*0x2ef6*/ ldr r0, [pc, #0x74] /* data_2f6c */ /*0x2ef8*/ ldr r1, [r0] /*0x2efa*/ cmp r1, #1 /*0x2efc*/ bne jump_2f68 /*0x2efe*/ movs r6, #0 /*0x2f00*/ str r6, [r0] /*0x2f02*/ ldr r4, [pc, #0x6c] /* data_2f70 */ /*0x2f04*/ ldr r5, [pc, #0x6c] /* data_2f74 */ /*0x2f06*/ str r6, [r4] jump_2f08: /*0x2f08*/ ldr r0, [r4] /*0x2f0a*/ adds r1, r5, r0 /*0x2f0c*/ adds r0, r0, #1 /*0x2f0e*/ str r0, [r4] /*0x2f10*/ ldr r0, [pc, #0x64] /* data_2f78 */ /*0x2f12*/ bl decrypt_packet_byte /*0x2f16*/ ldr r0, [r4] /*0x2f18*/ cmp r0, #0x40 /*0x2f1a*/ blo jump_2f08 /*0x2f1c*/ ldrh r4, [r5, #2] /*0x2f1e*/ strb r6, [r5, #3] /*0x2f20*/ strb r6, [r5, #2] /*0x2f22*/ movs r2, #0x40 /*0x2f24*/ ldr r1, [pc, #0x4c] /* data_2f74 */ /*0x2f26*/ movs r0, #0 /*0x2f28*/ bl crc16 /*0x2f2c*/ ldrb r1, [r5] /*0x2f2e*/ cmp r1, #6 /*0x2f30*/ bhi jump_2f36 /*0x2f32*/ cmp r4, r0 /*0x2f34*/ beq jump_2f40 jump_2f36: /*0x2f36*/ movs r4, #0x46 /*0x2f38*/ ldr r0, [pc, #0x3c] /* data_2f78 */ /*0x2f3a*/ bl clear_two_words /*0x2f3e*/ b jump_2f5a jump_2f40: /*0x2f40*/ mvn r0, #1 /*0x2f44*/ bl call_3f38 /*0x2f48*/ ldrb r3, [r5] /*0x2f4a*/ ldr r4, [pc, #0x30] /* data_2f7c */ /*0x2f4c*/ ldrd r1, r2, [r5, #4] /*0x2f50*/ ldr.w r3, [r4, r3, lsl #2] /*0x2f54*/ ldrb r0, [r5, #1] /*0x2f56*/ blx r3 /*0x2f58*/ mov r4, r0 jump_2f5a: /*0x2f5a*/ mov r1, r4 /*0x2f5c*/ pop.w {r4, r5, r6, lr} /*0x2f60*/ ldr r0, [pc, #0x14] /* data_2f78 */ /*0x2f62*/ subs r0, #0x10 /*0x2f64*/ b.w call_3090 jump_2f68: /*0x2f68*/ pop {r4, r5, r6, pc} /*0x2f6a*/ .byte 0x0 /*0x2f6b*/ .byte 0x0 data_2f6c: /*0x2f6c*/ .word 0x2000001c data_2f70: /*0x2f70*/ .word 0x200000c4 data_2f74: /*0x2f74*/ .word 0x20000a90 data_2f78: /*0x2f78*/ .word 0x2000062c data_2f7c: /*0x2f7c*/ .word update_handlers .thumb_func call_2f80: /*0x2f80*/ ldr r0, [pc, #0x54] /* data_2fd8 */ /*0x2f82*/ push {r4, lr} /*0x2f84*/ ldr r1, [r0] /*0x2f86*/ uxth r1, r1 /*0x2f88*/ orr r2, r1, #0x11000000 /*0x2f8c*/ ldr r1, [pc, #0x4c] /* data_2fdc */ /*0x2f8e*/ str r2, [r1] /*0x2f90*/ ldr r2, [r0, #8] /*0x2f92*/ mov.w r3, #0x2c00 /*0x2f96*/ orr.w r2, r3, r2, lsl #16 /*0x2f9a*/ str r2, [r1, #4] /*0x2f9c*/ ldr r2, [r0, #4] /*0x2f9e*/ ldr r0, [r0, #4] /*0x2fa0*/ sub.w r2, r2, #0xa /*0x2fa4*/ sub.w r0, r0, #0xa /*0x2fa8*/ orr.w r0, r2, r0, lsl #16 /*0x2fac*/ str r0, [r1, #8] /*0x2fae*/ mov.w r0, #0x2800 /*0x2fb2*/ str r0, [r1, #0xc] /*0x2fb4*/ sub.w r1, r1, #0x44 /*0x2fb8*/ mov.w r2, #0x44 /*0x2fbc*/ sub.w r0, r1, #0x420 /*0x2fc0*/ bl call_305c /*0x2fc4*/ ldr r1, [pc, #0x18] /* data_2fe0 */ /*0x2fc6*/ pop.w {r4, lr} /*0x2fca*/ mov.w r2, #0x400 /*0x2fce*/ sub.w r0, r1, #0x10 /*0x2fd2*/ b.w call_305c /*0x2fd6*/ .byte 0x0 /*0x2fd7*/ .byte 0x0 data_2fd8: /*0x2fd8*/ .word 0x40080180 data_2fdc: /*0x2fdc*/ .word 0x20000a80 data_2fe0: /*0x2fe0*/ .word 0x2000063c .thumb_func reset_cmd: /*0x2fe4*/ ldr r1, [pc, #0x38] /* data_3020 */ /*0x2fe6*/ mov.w r0, #0x200000 /*0x2fea*/ mov.w r4, #-0x1fff2000 /*0x2fee*/ str r0, [r1] /*0x2ff0*/ bl call_366c /*0x2ff4*/ ldr r1, [pc, #0x30] /* data_3028 */ /*0x2ff6*/ ldr r0, [pc, #0x2c] /* data_3024 */ /*0x2ff8*/ str.w r0, [r1, #0x304] /*0x2ffc*/ ldr r0, [pc, #0x2c] /* data_302c */ jump_2ffe: /*0x2ffe*/ subs r0, r0, #1 /*0x3000*/ bne jump_2ffe /*0x3002*/ dsb sy /*0x3006*/ ldr.w r0, [r4, #0xd0c] /*0x300a*/ ldr r1, [pc, #0x24] /* data_3030 */ /*0x300c*/ and r0, r0, #0x700 /*0x3010*/ orr.w r0, r0, r1 /*0x3014*/ str.w r0, [r4, #0xd0c] /*0x3018*/ dsb sy jump_301c: /*0x301c*/ b jump_301c /*0x301e*/ .byte 0x0 /*0x301f*/ .byte 0x0 data_3020: /*0x3020*/ .word 0xe000e184 data_3024: /*0x3024*/ .word 0x55aafaf5 data_3028: /*0x3028*/ .word 0x40080000 data_302c: /*0x302c*/ .word 0x61a80 data_3030: /*0x3030*/ .word 0x5fa0004 .thumb_func call_3034: /*0x3034*/ movs r1, #1 /*0x3036*/ ldr r0, [pc, #4] /* data_303c */ /*0x3038*/ b.w jump_3040 data_303c: /*0x303c*/ .word 0x40076000 jump_3040: /*0x3040*/ cmp r1, #0 /*0x3042*/ ldr r1, [r0] /*0x3044*/ beq jump_304c /*0x3046*/ orr r1, r1, #4 /*0x304a*/ b jump_3050 jump_304c: /*0x304c*/ bic r1, r1, #4 jump_3050: /*0x3050*/ str r1, [r0] /*0x3052*/ bx lr .thumb_func clear_two_words: /*0x3054*/ movs r1, #0 /*0x3056*/ str r1, [r0, #4] /*0x3058*/ str r1, [r0] /*0x305a*/ bx lr .thumb_func call_305c: /*0x305c*/ movs r3, #0 /*0x305e*/ str r3, [r0] /*0x3060*/ str r3, [r0, #4] /*0x3062*/ strd r1, r2, [r0, #8] /*0x3066*/ bx lr .thumb_func decrypt_packet_byte: /*0x3068*/ push {r4, lr} /*0x306a*/ ldr r4, [r0, #4] /*0x306c*/ movs r2, #0 /*0x306e*/ ldr r3, [r0] /*0x3070*/ cmp r4, r3 /*0x3072*/ beq jump_308c /*0x3074*/ ldr r2, [r0, #8] /*0x3076*/ ldrb r2, [r2, r3] /*0x3078*/ strb r2, [r1] /*0x307a*/ ldr r1, [r0] /*0x307c*/ ldr r2, [r0, #0xc] /*0x307e*/ adds r1, r1, #1 /*0x3080*/ udiv r3, r1, r2 /*0x3084*/ mls r1, r2, r3, r1 /*0x3088*/ movs r2, #1 /*0x308a*/ str r1, [r0] jump_308c: /*0x308c*/ mov r0, r2 /*0x308e*/ pop {r4, pc} .thumb_func call_3090: /*0x3090*/ push {r4, r5, lr} /*0x3092*/ ldr r3, [r0, #4] /*0x3094*/ movs r2, #0 /*0x3096*/ ldr r4, [r0, #0xc] /*0x3098*/ adds r3, r3, #1 /*0x309a*/ udiv r5, r3, r4 /*0x309e*/ mls r3, r4, r5, r3 /*0x30a2*/ ldr r4, [r0] /*0x30a4*/ cmp r3, r4 /*0x30a6*/ beq jump_30be /*0x30a8*/ ldr r2, [r0, #4] /*0x30aa*/ ldr r3, [r0, #8] /*0x30ac*/ strb r1, [r3, r2] /*0x30ae*/ ldr r1, [r0, #0xc] /*0x30b0*/ adds r2, r2, #1 /*0x30b2*/ udiv r3, r2, r1 /*0x30b6*/ mls r1, r1, r3, r2 /*0x30ba*/ str r1, [r0, #4] /*0x30bc*/ movs r2, #1 jump_30be: /*0x30be*/ mov r0, r2 /*0x30c0*/ pop {r4, r5, pc} .thumb_func call_30c2: /*0x30c2*/ ldr r1, [r0, #4] /*0x30c4*/ ldr r0, [r0] /*0x30c6*/ cmp r1, r0 /*0x30c8*/ bne jump_30ce /*0x30ca*/ movs r0, #1 /*0x30cc*/ bx lr jump_30ce: /*0x30ce*/ movs r0, #0 /*0x30d0*/ bx lr /*0x30d2*/ .byte 0x0 /*0x30d3*/ .byte 0x0 .thumb_func call_30d4: /*0x30d4*/ ldr r2, [pc, #0x10] /* data_30e8 */ /*0x30d6*/ cmp r1, #1 /*0x30d8*/ ldr r1, [r2, #0x2c] /*0x30da*/ beq jump_30e2 /*0x30dc*/ bics r1, r0 jump_30de: /*0x30de*/ str r1, [r2, #0x2c] /*0x30e0*/ bx lr jump_30e2: /*0x30e2*/ orrs r1, r0 /*0x30e4*/ b jump_30de /*0x30e6*/ .byte 0x0 /*0x30e7*/ .byte 0x0 data_30e8: /*0x30e8*/ .word 0x40088000 .thumb_func call_30ec: /*0x30ec*/ ldr r2, [pc, #0x10] /* data_3100 */ /*0x30ee*/ cmp r1, #1 /*0x30f0*/ ldr r1, [r2, #0x30] /*0x30f2*/ beq jump_30fa /*0x30f4*/ bics r1, r0 jump_30f6: /*0x30f6*/ str r1, [r2, #0x30] /*0x30f8*/ bx lr jump_30fa: /*0x30fa*/ orrs r1, r0 /*0x30fc*/ b jump_30f6 /*0x30fe*/ .byte 0x0 /*0x30ff*/ .byte 0x0 data_3100: /*0x3100*/ .word 0x40088000 .thumb_func call_3104: /*0x3104*/ push {r4, lr} /*0x3106*/ movs r1, #1 /*0x3108*/ ldr r0, [pc, #0x14] /* data_3120 */ /*0x310a*/ bl call_30d4 /*0x310e*/ movs r1, #1 /*0x3110*/ ldr r0, [pc, #0x10] /* data_3124 */ /*0x3112*/ bl call_30ec /*0x3116*/ pop.w {r4, lr} /*0x311a*/ movs r0, #2 /*0x311c*/ b.w jump_3128 data_3120: /*0x3120*/ .word 0x1fc002 data_3124: /*0x3124*/ .word 0x14240 jump_3128: /*0x3128*/ ldr r1, [pc, #0xc] /* data_3138 */ /*0x312a*/ ldr r2, [r1] /*0x312c*/ bic r2, r2, #0xc00000 /*0x3130*/ orr.w r0, r2, r0, lsl #22 /*0x3134*/ str r0, [r1] /*0x3136*/ bx lr data_3138: /*0x3138*/ .word 0x40088000 .thumb_func crc16: /*0x313c*/ push {r4, r5, r6, r7, lr} /*0x313e*/ movs r6, #0 /*0x3140*/ b jump_3178 jump_3142: /*0x3142*/ ldrb r3, [r1, r6] /*0x3144*/ movw ip, #0x1021 /*0x3148*/ eor.w r3, r3, r0, lsr #8 /*0x314c*/ lsl.w r4, r3, #8 /*0x3150*/ movs r3, #0 /*0x3152*/ movs r5, #8 jump_3154: /*0x3154*/ eor.w lr, r4, r3 /*0x3158*/ lsl.w r7, r3, #1 /*0x315c*/ lsls.w lr, lr, #0x10 /*0x3160*/ bpl jump_3166 /*0x3162*/ eor.w r7, ip, r3, lsl #1 jump_3166: /*0x3166*/ mov r3, r7 /*0x3168*/ subs r5, r5, #1 /*0x316a*/ lsl.w r4, r4, #1 /*0x316e*/ bne jump_3154 /*0x3170*/ uxth r3, r7 /*0x3172*/ eor.w r0, r3, r0, lsl #8 /*0x3176*/ adds r6, r6, #1 jump_3178: /*0x3178*/ cmp r6, r2 /*0x317a*/ blo jump_3142 /*0x317c*/ uxth r0, r0 /*0x317e*/ pop {r4, r5, r6, r7, pc} .thumb_func call_3180: /*0x3180*/ ldr r1, [pc, #0x64] /* data_31e8 */ /*0x3182*/ movs r0, #0xff /*0x3184*/ ldr.w r2, [r1, #0x380] /*0x3188*/ cbz r2, jump_318c /*0x318a*/ movs r0, #0xfe jump_318c: /*0x318c*/ ldr.w r2, [r1, #0x384] /*0x3190*/ cbz r2, jump_3196 /*0x3192*/ bic r0, r0, #2 jump_3196: /*0x3196*/ ldr.w r2, [r1, #0x388] /*0x319a*/ cbz r2, jump_31a0 /*0x319c*/ bic r0, r0, #4 jump_31a0: /*0x31a0*/ ldr.w r1, [r1, #0x38c] /*0x31a4*/ cbz r1, jump_31aa /*0x31a6*/ bic r0, r0, #8 jump_31aa: /*0x31aa*/ ldr r1, [pc, #0x40] /* data_31ec */ /*0x31ac*/ ldr r1, [r1] /*0x31ae*/ cbz r1, jump_31b4 /*0x31b0*/ bic r0, r0, #0x10 jump_31b4: /*0x31b4*/ ldr r1, [pc, #0x38] /* data_31f0 */ /*0x31b6*/ ldr r1, [r1] /*0x31b8*/ cbz r1, jump_31be /*0x31ba*/ bic r0, r0, #0x20 jump_31be: /*0x31be*/ ldr r1, [pc, #0x34] /* data_31f4 */ /*0x31c0*/ ldrb r2, [r1, #2] /*0x31c2*/ cmp r0, r2 /*0x31c4*/ beq jump_31ce /*0x31c6*/ movs r2, #0x64 /*0x31c8*/ str r2, [r1, #0x24] /*0x31ca*/ strb r0, [r1, #2] jump_31cc: /*0x31cc*/ bx lr jump_31ce: /*0x31ce*/ ldr r2, [r1, #0x24] /*0x31d0*/ cmp r2, #0 /*0x31d2*/ bne jump_31cc /*0x31d4*/ ldrb r2, [r1, #2] /*0x31d6*/ ldrb r3, [r1, #3] /*0x31d8*/ cmp r2, r3 /*0x31da*/ beq jump_31e0 /*0x31dc*/ movs r2, #1 /*0x31de*/ strb r2, [r1, #4] jump_31e0: /*0x31e0*/ strb r0, [r1, #2] /*0x31e2*/ strb r0, [r1, #3] /*0x31e4*/ bx lr /*0x31e6*/ .byte 0x0 /*0x31e7*/ .byte 0x0 data_31e8: /*0x31e8*/ .word 0x42360000 data_31ec: /*0x31ec*/ .word 0x423803a8 data_31f0: /*0x31f0*/ .word 0x423c03b8 data_31f4: /*0x31f4*/ .word 0x20000048 .thumb_func flash_page_erase: /*0x31f8*/ ldr r1, [pc, #0xc] /* data_3208 */ /*0x31fa*/ str r0, [r1] /*0x31fc*/ movs r0, #8 /*0x31fe*/ str r0, [r1, #0xc] /*0x3200*/ movs r0, #0x14 /*0x3202*/ str r0, [r1, #0x10] /*0x3204*/ b.w jump_3244 data_3208: /*0x3208*/ .word 0x40080000 .thumb_func call_320c: /*0x320c*/ ldr r0, [pc, #4] /* data_3214 */ /*0x320e*/ ldr r0, [r0, #0x30] /*0x3210*/ bx lr /*0x3212*/ .byte 0x0 /*0x3213*/ .byte 0x0 data_3214: /*0x3214*/ .word 0x40080000 .thumb_func call_3218: /*0x3218*/ ldr r3, [pc, #0xc] /* data_3228 */ /*0x321a*/ str r0, [r3, #0xc] /*0x321c*/ str r1, [r3] /*0x321e*/ str r2, [r3, #4] /*0x3220*/ movs r0, #0x14 /*0x3222*/ str r0, [r3, #0x10] /*0x3224*/ bx lr /*0x3226*/ .byte 0x0 /*0x3227*/ .byte 0x0 data_3228: /*0x3228*/ .word 0x40080000 .thumb_func call_322c: /*0x322c*/ ldr r2, [pc, #0x10] /* data_3240 */ /*0x322e*/ str r0, [r2] /*0x3230*/ str r1, [r2, #4] /*0x3232*/ movs r0, #4 /*0x3234*/ str r0, [r2, #0xc] /*0x3236*/ movs r0, #0x14 /*0x3238*/ str r0, [r2, #0x10] /*0x323a*/ b.w jump_3244 /*0x323e*/ .byte 0x0 /*0x323f*/ .byte 0x0 data_3240: /*0x3240*/ .word 0x40080000 jump_3244: /*0x3244*/ ldr r0, [pc, #0x18] /* data_3260 */ /*0x3246*/ ldr r1, [pc, #0x1c] /* data_3264 */ /*0x3248*/ b jump_3254 jump_324a: /*0x324a*/ ldr r2, [r1, #0x10] /*0x324c*/ ubfx r2, r2, #2, #2 /*0x3250*/ cmp r2, #3 /*0x3252*/ beq jump_325c jump_3254: /*0x3254*/ subs r0, r0, #1 /*0x3256*/ bhs jump_324a /*0x3258*/ movs r0, #8 /*0x325a*/ bx lr jump_325c: /*0x325c*/ movs r0, #0 /*0x325e*/ bx lr data_3260: /*0x3260*/ .word 0xfffff data_3264: /*0x3264*/ .word 0x40080000 jump_3268: /*0x3268*/ str r1, [r0, #0x28] /*0x326a*/ bx lr .thumb_func call_326c: /*0x326c*/ push.w {r4, r5, r6, r7, r8, sb, sl, lr} /*0x3270*/ ldr r6, [pc, #0x140] /* data_33b4 */ /*0x3272*/ movs r2, #0 /*0x3274*/ movs r1, #0xf /*0x3276*/ mov r0, r6 /*0x3278*/ bl call_33e4 /*0x327c*/ ldr r4, [pc, #0x138] /* data_33b8 */ /*0x327e*/ movs r2, #0 /*0x3280*/ movs r1, #0xf0 /*0x3282*/ mov r0, r4 /*0x3284*/ bl call_33e4 /*0x3288*/ movs r2, #1 /*0x328a*/ movs r1, #0xf /*0x328c*/ mov r0, r6 /*0x328e*/ bl call_33d4 /*0x3292*/ movs r2, #1 /*0x3294*/ movs r1, #0xf0 /*0x3296*/ mov r0, r4 /*0x3298*/ bl call_33d4 /*0x329c*/ mov.w r5, #0x55555555 /*0x32a0*/ mov r1, r5 /*0x32a2*/ mov.w r0, #0x3f00 /*0x32a6*/ bl call_2eb8 /*0x32aa*/ movs r1, #0 /*0x32ac*/ mov r0, r1 /*0x32ae*/ bl call_2e90 /*0x32b2*/ movs r1, #0 /*0x32b4*/ movs r0, #4 /*0x32b6*/ bl call_2e90 /*0x32ba*/ movs r1, #0 /*0x32bc*/ movs r0, #8 /*0x32be*/ bl call_2e90 /*0x32c2*/ movs r1, #0 /*0x32c4*/ movs r0, #0xc /*0x32c6*/ bl call_2e90 /*0x32ca*/ movs r1, #1 /*0x32cc*/ movs r0, #0x10 /*0x32ce*/ bl call_2e90 /*0x32d2*/ movs r1, #1 /*0x32d4*/ movs r0, #0x14 /*0x32d6*/ bl call_2e90 /*0x32da*/ movs r1, #1 /*0x32dc*/ movs r0, #0x18 /*0x32de*/ bl call_2e90 /*0x32e2*/ movs r1, #1 /*0x32e4*/ movs r0, #0x1c /*0x32e6*/ bl call_2e90 /*0x32ea*/ lsls r1, r5, #1 /*0x32ec*/ movs r0, #0xf0 /*0x32ee*/ bl call_2ecc /*0x32f2*/ movs r2, #1 /*0x32f4*/ movs r1, #0x40 /*0x32f6*/ mov r0, r6 /*0x32f8*/ bl call_3410 /*0x32fc*/ movs r2, #1 /*0x32fe*/ movs r1, #0x40 /*0x3300*/ mov r0, r6 /*0x3302*/ bl call_33c4 /*0x3306*/ ldr.w sb, [pc, #0xb4] /* data_33bc */ /*0x330a*/ asrs r6, r4, #0x13 /*0x330c*/ movs r2, #0 /*0x330e*/ mov r1, r6 /*0x3310*/ mov r0, sb /*0x3312*/ bl call_3410 /*0x3316*/ movs r2, #1 /*0x3318*/ mov r1, r6 /*0x331a*/ mov r0, sb /*0x331c*/ bl call_33c4 /*0x3320*/ mov r1, r5 /*0x3322*/ mov.w r0, #0xc00000 /*0x3326*/ bl call_2ee0 /*0x332a*/ mov.w r1, #-1 /*0x332e*/ mov.w r0, #0x3c0000 /*0x3332*/ bl call_2ee0 /*0x3336*/ movs r2, #1 /*0x3338*/ lsls r6, r2, #8 /*0x333a*/ mov r1, r6 /*0x333c*/ mov r0, sb /*0x333e*/ bl call_3410 /*0x3342*/ movs r2, #1 /*0x3344*/ mov r1, r6 /*0x3346*/ mov r0, sb /*0x3348*/ bl call_33c4 /*0x334c*/ movs r2, #1 /*0x334e*/ movs r1, #0xf /*0x3350*/ mov r0, r4 /*0x3352*/ bl call_33d4 /*0x3356*/ movs r2, #1 /*0x3358*/ ldr r7, [pc, #0x64] /* data_33c0 */ /*0x335a*/ lsls r6, r2, #0xa /*0x335c*/ mov r1, r6 /*0x335e*/ mov r0, r7 /*0x3360*/ bl call_33d4 /*0x3364*/ mov.w r8, #0x4000 /*0x3368*/ movs r2, #1 /*0x336a*/ mov r1, r8 /*0x336c*/ mov r0, sb /*0x336e*/ bl call_33d4 /*0x3372*/ movs r2, #0 /*0x3374*/ movs r1, #0xf /*0x3376*/ mov r0, r4 /*0x3378*/ bl call_33e4 /*0x337c*/ movs r2, #0 /*0x337e*/ mov r1, r6 /*0x3380*/ mov r0, r7 /*0x3382*/ bl call_33e4 /*0x3386*/ movs r2, #0 /*0x3388*/ mov r1, r8 /*0x338a*/ mov r0, sb /*0x338c*/ bl call_33e4 /*0x3390*/ mov r1, r5 /*0x3392*/ lsls r0, r4, #0x12 /*0x3394*/ bl call_2ee0 /*0x3398*/ movs r2, #2 /*0x339a*/ lsls r4, r2, #0xe /*0x339c*/ mov r1, r4 /*0x339e*/ mov r0, sb /*0x33a0*/ bl call_33e4 /*0x33a4*/ mov r1, r4 /*0x33a6*/ mov r0, sb /*0x33a8*/ pop.w {r4, r5, r6, r7, r8, sb, sl, lr} /*0x33ac*/ movs r2, #1 /*0x33ae*/ b.w call_33d4 /*0x33b2*/ .byte 0x0 /*0x33b3*/ .byte 0x0 data_33b4: /*0x33b4*/ .word 0x4001a000 data_33b8: /*0x33b8*/ .word 0x4001b000 data_33bc: /*0x33bc*/ .word 0x4001e000 data_33c0: /*0x33c0*/ .word 0x4001c000 .thumb_func call_33c4: /*0x33c4*/ cmp r2, #0 /*0x33c6*/ ldr r2, [r0] /*0x33c8*/ beq jump_33ce /*0x33ca*/ orrs r2, r1 /*0x33cc*/ b jump_33d0 jump_33ce: /*0x33ce*/ bics r2, r1 jump_33d0: /*0x33d0*/ str r2, [r0] /*0x33d2*/ bx lr .thumb_func call_33d4: /*0x33d4*/ cmp r2, #0 /*0x33d6*/ ldr r2, [r0, #4] /*0x33d8*/ beq jump_33de /*0x33da*/ orrs r2, r1 /*0x33dc*/ b jump_33e0 jump_33de: /*0x33de*/ bics r2, r1 jump_33e0: /*0x33e0*/ str r2, [r0, #4] /*0x33e2*/ bx lr .thumb_func call_33e4: /*0x33e4*/ cbz r2, jump_33f8 /*0x33e6*/ cmp r2, #1 /*0x33e8*/ beq jump_33fe /*0x33ea*/ ldr r2, [r0, #8] /*0x33ec*/ bics r2, r1 jump_33ee: /*0x33ee*/ str r2, [r0, #8] /*0x33f0*/ ldr r2, [r0, #0xc] /*0x33f2*/ bics r2, r1 /*0x33f4*/ str r2, [r0, #0xc] /*0x33f6*/ bx lr jump_33f8: /*0x33f8*/ ldr r2, [r0, #8] /*0x33fa*/ orrs r2, r1 /*0x33fc*/ b jump_33ee jump_33fe: /*0x33fe*/ ldr r2, [r0, #0xc] /*0x3400*/ orrs r2, r1 /*0x3402*/ str r2, [r0, #0xc] /*0x3404*/ ldr r2, [r0, #8] /*0x3406*/ bics r2, r1 /*0x3408*/ str r2, [r0, #8] /*0x340a*/ bx lr jump_340c: /*0x340c*/ str r1, [r0, #0x24] /*0x340e*/ bx lr .thumb_func call_3410: /*0x3410*/ cbz r2, jump_3416 /*0x3412*/ str r1, [r0, #0x24] /*0x3414*/ bx lr jump_3416: /*0x3416*/ str r1, [r0, #0x28] /*0x3418*/ bx lr /*0x341a*/ .byte 0x0 /*0x341b*/ .byte 0x0 .thumb_func loc_341c: /*0x341c*/ push.w {r4, r5, r6, r7, r8, lr} /*0x3420*/ ldr r4, [pc, #0x114] /* data_3538 */ /*0x3422*/ mov.w r1, #0x100 /*0x3426*/ mov r0, r4 /*0x3428*/ bl call_3578 /*0x342c*/ ldr r0, [pc, #0x10c] /* data_353c */ /*0x342e*/ ldr r1, [r0] /*0x3430*/ cbz r1, jump_3438 /*0x3432*/ ldr r1, [r0] /*0x3434*/ subs r1, r1, #1 /*0x3436*/ str r1, [r0] jump_3438: /*0x3438*/ ldr r0, [pc, #0x104] /* data_3540 */ /*0x343a*/ ldr r1, [r0] /*0x343c*/ cbz r1, jump_3444 /*0x343e*/ ldr r1, [r0] /*0x3440*/ subs r1, r1, #1 /*0x3442*/ str r1, [r0] jump_3444: /*0x3444*/ ldr r1, [r0, #4] /*0x3446*/ cbz r1, jump_344e /*0x3448*/ ldr r1, [r0, #4] /*0x344a*/ subs r1, r1, #1 /*0x344c*/ str r1, [r0, #4] jump_344e: /*0x344e*/ ldr r1, [r0, #0x10] /*0x3450*/ cbz r1, jump_3458 /*0x3452*/ ldr r1, [r0, #0x10] /*0x3454*/ subs r1, r1, #1 /*0x3456*/ str r1, [r0, #0x10] jump_3458: /*0x3458*/ ldr r0, [pc, #0xe8] /* data_3544 */ /*0x345a*/ ldr r1, [r0] /*0x345c*/ cbz r1, jump_3464 /*0x345e*/ ldr r1, [r0] /*0x3460*/ subs r1, r1, #1 /*0x3462*/ str r1, [r0] jump_3464: /*0x3464*/ ldr r0, [pc, #0xe0] /* data_3548 */ /*0x3466*/ ldr r2, [pc, #0xe4] /* data_354c */ /*0x3468*/ ldr r1, [r0] /*0x346a*/ adds r1, r1, #1 /*0x346c*/ str r1, [r0] /*0x346e*/ ldr r0, [r2] /*0x3470*/ cbz r0, jump_3476 /*0x3472*/ subs r0, r0, #1 /*0x3474*/ str r0, [r2] jump_3476: /*0x3476*/ ldr r0, [pc, #0xd8] /* data_3550 */ /*0x3478*/ ldrb r0, [r0] /*0x347a*/ cmp r0, #7 /*0x347c*/ bne jump_34fa /*0x347e*/ movs r0, #0x14 /*0x3480*/ udiv r2, r1, r0 /*0x3484*/ mls r0, r0, r2, r1 /*0x3488*/ cmp r0, #0 /*0x348a*/ bne jump_34fa /*0x348c*/ ldr r0, [pc, #0xc4] /* data_3554 */ /*0x348e*/ ldr r5, [pc, #0xc8] /* data_3558 */ /*0x3490*/ movs r6, #0 /*0x3492*/ ldrb r1, [r0] /*0x3494*/ movs r7, #1 /*0x3496*/ cmp r1, #0 /*0x3498*/ ldr r2, [pc, #0xc0] /* data_355c */ /*0x349a*/ ldrb r1, [r5] /*0x349c*/ mov.w r0, #0x708 /*0x34a0*/ mov.w r3, #0x320 /*0x34a4*/ beq jump_34b4 /*0x34a6*/ cmp r1, #0 /*0x34a8*/ ldr r1, [r2] /*0x34aa*/ beq jump_34fe /*0x34ac*/ cmp r1, r0 /*0x34ae*/ bls jump_3520 /*0x34b0*/ subs r1, r1, #3 /*0x34b2*/ b jump_352a jump_34b4: /*0x34b4*/ cmp r1, #0 /*0x34b6*/ ldr r1, [r2] /*0x34b8*/ beq jump_34c2 /*0x34ba*/ cmp r1, r0 /*0x34bc*/ bls jump_34e4 /*0x34be*/ subs r1, r1, #3 /*0x34c0*/ b jump_34ee jump_34c2: /*0x34c2*/ cmp r1, r0 /*0x34c4*/ bls jump_34ca /*0x34c6*/ adds r1, r1, #3 /*0x34c8*/ b jump_34d4 jump_34ca: /*0x34ca*/ cmp r1, r3 /*0x34cc*/ bls jump_34d2 /*0x34ce*/ adds r1, r1, #2 /*0x34d0*/ b jump_34d4 jump_34d2: /*0x34d2*/ adds r1, r1, #1 jump_34d4: /*0x34d4*/ mov.w r0, #0x8c0 /*0x34d8*/ str r1, [r2] /*0x34da*/ cmp r1, r0 /*0x34dc*/ blo jump_34f4 /*0x34de*/ str r0, [r2] /*0x34e0*/ strb r7, [r5] /*0x34e2*/ b jump_34f4 jump_34e4: /*0x34e4*/ cmp r1, r3 /*0x34e6*/ bls jump_34ec /*0x34e8*/ subs r1, r1, #2 /*0x34ea*/ b jump_34ee jump_34ec: /*0x34ec*/ subs r1, r1, #1 jump_34ee: /*0x34ee*/ str r1, [r2] /*0x34f0*/ cbnz r1, jump_34f4 /*0x34f2*/ strb r6, [r5] jump_34f4: /*0x34f4*/ ldr r0, [r2] /*0x34f6*/ str.w r0, [r4, #0x98] jump_34fa: /*0x34fa*/ pop.w {r4, r5, r6, r7, r8, pc} jump_34fe: /*0x34fe*/ cmp r1, r0 /*0x3500*/ bls jump_3506 /*0x3502*/ adds r1, r1, #3 /*0x3504*/ b jump_3510 jump_3506: /*0x3506*/ cmp r1, r3 /*0x3508*/ bls jump_350e /*0x350a*/ adds r1, r1, #2 /*0x350c*/ b jump_3510 jump_350e: /*0x350e*/ adds r1, r1, #1 jump_3510: /*0x3510*/ mov.w r0, #0xc80 /*0x3514*/ str r1, [r2] /*0x3516*/ cmp r1, r0 /*0x3518*/ blo jump_3530 /*0x351a*/ str r0, [r2] /*0x351c*/ strb r7, [r5] /*0x351e*/ b jump_3530 jump_3520: /*0x3520*/ cmp r1, r3 /*0x3522*/ bls jump_3528 /*0x3524*/ subs r1, r1, #2 /*0x3526*/ b jump_352a jump_3528: /*0x3528*/ subs r1, r1, #1 jump_352a: /*0x352a*/ str r1, [r2] /*0x352c*/ cbnz r1, jump_3530 /*0x352e*/ strb r6, [r5] jump_3530: /*0x3530*/ ldr r0, [r2] /*0x3532*/ str.w r0, [r4, #0x9c] /*0x3536*/ b jump_34fa data_3538: /*0x3538*/ .word 0x4006f000 data_353c: /*0x353c*/ .word 0x20000070 data_3540: /*0x3540*/ .word 0x200001a0 data_3544: /*0x3544*/ .word 0x2000006c data_3548: /*0x3548*/ .word 0x200000bc data_354c: /*0x354c*/ .word 0x200000c0 data_3550: /*0x3550*/ .word 0x20000052 data_3554: /*0x3554*/ .word 0x20000053 data_3558: /*0x3558*/ .word 0x20000049 data_355c: /*0x355c*/ .word 0x2000005c .thumb_func call_3560: /*0x3560*/ add.w r0, r0, r1, lsl #2 /*0x3564*/ ldr r1, [r0, #0x40]! /*0x3568*/ cbz r2, jump_3570 /*0x356a*/ orr r1, r1, #0x10 /*0x356e*/ b jump_3574 jump_3570: /*0x3570*/ bic r1, r1, #0x10 jump_3574: /*0x3574*/ str r1, [r0] /*0x3576*/ bx lr .thumb_func call_3578: /*0x3578*/ mvns r1, r1 /*0x357a*/ str r1, [r0, #0x7c] /*0x357c*/ dsb sy /*0x3580*/ bx lr .thumb_func call_3582: /*0x3582*/ cmp r1, #0 /*0x3584*/ ldr r1, [r0, #0x10] /*0x3586*/ beq jump_358e /*0x3588*/ orr r1, r1, #1 /*0x358c*/ b jump_3592 jump_358e: /*0x358e*/ bic r1, r1, #1 jump_3592: /*0x3592*/ str r1, [r0, #0x10] /*0x3594*/ bx lr .thumb_func call_3596: /*0x3596*/ cmp r2, #0 /*0x3598*/ ldr r2, [r0, #0x74] /*0x359a*/ beq jump_35a0 /*0x359c*/ orrs r2, r1 /*0x359e*/ b jump_35a2 jump_35a0: /*0x35a0*/ bics r2, r1 jump_35a2: /*0x35a2*/ str r2, [r0, #0x74] /*0x35a4*/ bx lr .thumb_func call_35a6: /*0x35a6*/ push {r4, r5, r6, lr} /*0x35a8*/ ldrb r3, [r1] /*0x35aa*/ ldr r6, [r0, #0x50] /*0x35ac*/ add.w r4, r0, r3, lsl #2 /*0x35b0*/ add.w r2, r4, #0x40 /*0x35b4*/ add.w r5, r4, #0x90 /*0x35b8*/ lsls r3, r3, #1 /*0x35ba*/ movs r4, #1 /*0x35bc*/ lsls r4, r3 /*0x35be*/ mvns r4, r4 /*0x35c0*/ ands r6, r4 /*0x35c2*/ str r6, [r0, #0x50] /*0x35c4*/ ldr r6, [r0, #0x54] /*0x35c6*/ ands r6, r4 /*0x35c8*/ str r6, [r0, #0x54] /*0x35ca*/ ldr r4, [r0, #0x54] /*0x35cc*/ ldrb r6, [r1, #2] /*0x35ce*/ lsls r6, r3 /*0x35d0*/ orrs r4, r6 /*0x35d2*/ str r4, [r0, #0x54] /*0x35d4*/ ldr r4, [r2] /*0x35d6*/ bic r4, r4, #7 /*0x35da*/ str r4, [r2] /*0x35dc*/ ldr r4, [r2] /*0x35de*/ ldrb r6, [r1, #3] /*0x35e0*/ orrs r4, r6 /*0x35e2*/ str r4, [r2] /*0x35e4*/ ldrh r2, [r1, #4] /*0x35e6*/ str r2, [r5] /*0x35e8*/ ldr r2, [r0, #0x50] /*0x35ea*/ ldrb r1, [r1, #1] /*0x35ec*/ lsls r1, r3 /*0x35ee*/ orrs r2, r1 /*0x35f0*/ str r2, [r0, #0x50] /*0x35f2*/ pop {r4, r5, r6, pc} .thumb_func call_35f4: /*0x35f4*/ ldrh r2, [r1, #4] /*0x35f6*/ str.w r2, [r0, #0x88] /*0x35fa*/ ldrh r2, [r1, #6] /*0x35fc*/ str.w r2, [r0, #0x84] /*0x3600*/ ldr r2, [r0] /*0x3602*/ bic r2, r2, #0x30000 /*0x3606*/ str r2, [r0] /*0x3608*/ ldr r2, [r0] /*0x360a*/ bic r2, r2, #0x1000000 /*0x360e*/ str r2, [r0] /*0x3610*/ ldr r2, [r0] /*0x3612*/ ldr r3, [r1] /*0x3614*/ orrs r2, r3 /*0x3616*/ str r2, [r0] /*0x3618*/ ldrh r1, [r1, #8] /*0x361a*/ str r1, [r0, #0x78] /*0x361c*/ bx lr /*0x361e*/ .byte 0x0 /*0x361f*/ .byte 0x0 .thumb_func call_3620: /*0x3620*/ ldr r3, [pc, #0x10] /* data_3634 */ /*0x3622*/ add.w r0, r3, r0, lsl #2 /*0x3626*/ ldr r3, [r0] /*0x3628*/ ands r2, r1 /*0x362a*/ bics r3, r1 /*0x362c*/ orrs r3, r2 /*0x362e*/ str r3, [r0] /*0x3630*/ bx lr /*0x3632*/ .byte 0x0 /*0x3633*/ .byte 0x0 data_3634: /*0x3634*/ .word 0x40022008 jump_3638: /*0x3638*/ push {r4, lr} /*0x363a*/ movs r1, #1 /*0x363c*/ mov.w r0, #0x14000 /*0x3640*/ bl call_30d4 /*0x3644*/ movs r2, #0 /*0x3646*/ mov.w r1, #0x300 /*0x364a*/ mov r0, r2 /*0x364c*/ bl call_3620 /*0x3650*/ ldr r4, [pc, #0x14] /* data_3668 */ /*0x3652*/ movs r2, #1 /*0x3654*/ movs r1, #0x10 /*0x3656*/ mov r0, r4 /*0x3658*/ bl call_33c4 /*0x365c*/ mov r0, r4 /*0x365e*/ pop.w {r4, lr} /*0x3662*/ movs r1, #0x10 /*0x3664*/ b.w jump_340c data_3668: /*0x3668*/ .word 0x4001a000 .thumb_func call_366c: /*0x366c*/ push {r4, lr} /*0x366e*/ ldr r4, [pc, #0x18] /* data_3688 */ /*0x3670*/ movs r2, #0 /*0x3672*/ movs r1, #0x10 /*0x3674*/ mov r0, r4 /*0x3676*/ bl call_33c4 /*0x367a*/ mov r0, r4 /*0x367c*/ pop.w {r4, lr} /*0x3680*/ movs r1, #0x10 /*0x3682*/ b.w jump_3268 /*0x3686*/ .byte 0x0 /*0x3687*/ .byte 0x0 data_3688: /*0x3688*/ .word 0x4001a000 .thumb_func call_368c: /*0x368c*/ push {r4, lr} /*0x368e*/ movs r1, #0xe /*0x3690*/ ldr r3, [pc, #0x68] /* data_36fc */ /*0x3692*/ cmp.w r1, r0, lsr #4 /*0x3696*/ bne jump_36ac /*0x3698*/ and r0, r0, #0xf /*0x369c*/ cmp r0, #8 /*0x369e*/ bhs jump_36f6 /*0x36a0*/ ldrb r1, [r3] /*0x36a2*/ movs r2, #1 /*0x36a4*/ lsls r2, r0 /*0x36a6*/ orrs r1, r2 /*0x36a8*/ strb r1, [r3] /*0x36aa*/ b jump_36f6 jump_36ac: /*0x36ac*/ cmp r0, #0x91 /*0x36ae*/ bhi jump_36f6 /*0x36b0*/ movs r2, #0 /*0x36b2*/ mov r1, r2 jump_36b4: /*0x36b4*/ adds r4, r3, r1 /*0x36b6*/ ldrb r4, [r4, #2] /*0x36b8*/ cmp r4, r0 /*0x36ba*/ bne jump_36be /*0x36bc*/ movs r2, #1 jump_36be: /*0x36be*/ adds r1, r1, #1 /*0x36c0*/ uxtb r1, r1 /*0x36c2*/ cmp r1, #6 /*0x36c4*/ blo jump_36b4 /*0x36c6*/ cbnz r2, jump_36f6 /*0x36c8*/ movs r1, #0 jump_36ca: /*0x36ca*/ adds r2, r3, r1 /*0x36cc*/ ldrb r2, [r2, #2] /*0x36ce*/ cbz r2, jump_36de /*0x36d0*/ adds r1, r1, #1 /*0x36d2*/ uxtb r1, r1 /*0x36d4*/ cmp r1, #6 /*0x36d6*/ blo jump_36ca jump_36d8: /*0x36d8*/ cmp r1, #6 /*0x36da*/ beq jump_36e4 /*0x36dc*/ b jump_36f6 jump_36de: /*0x36de*/ adds r2, r3, r1 /*0x36e0*/ strb r0, [r2, #2] /*0x36e2*/ b jump_36d8 jump_36e4: /*0x36e4*/ movs r1, #0 jump_36e6: /*0x36e6*/ adds r2, r3, r1 /*0x36e8*/ adds r1, r1, #1 /*0x36ea*/ ldrb r4, [r2, #3] /*0x36ec*/ uxtb r1, r1 /*0x36ee*/ strb r4, [r2, #2] /*0x36f0*/ cmp r1, #5 /*0x36f2*/ blo jump_36e6 /*0x36f4*/ strb r0, [r3, #7] jump_36f6: /*0x36f6*/ movs r0, #1 /*0x36f8*/ pop {r4, pc} /*0x36fa*/ .byte 0x0 /*0x36fb*/ .byte 0x0 data_36fc: /*0x36fc*/ .word 0x20000030 jump_3700: /*0x3700*/ push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} /*0x3704*/ ldr r0, [pc, #0x3c8] /* data_3ad0 */ /*0x3706*/ mov.w fp, #0 /*0x370a*/ mov.w sb, #1 /*0x370e*/ ldrb r0, [r0, #6] /*0x3710*/ cmp r0, #1 /*0x3712*/ bne jump_3788 /*0x3714*/ ldr r5, [pc, #0x3b8] /* data_3ad0 */ /*0x3716*/ ldr r0, [r5, #0x18] /*0x3718*/ cbnz r0, jump_3788 /*0x371a*/ ldrb r0, [r5, #0xc] /*0x371c*/ ldr r6, [pc, #0x3b4] /* data_3ad4 */ /*0x371e*/ adds r1, r0, #1 /*0x3720*/ uxtb r4, r1 /*0x3722*/ add.w r2, r5, #0x30 /*0x3726*/ cbz r0, jump_3736 /*0x3728*/ cmp r0, #1 /*0x372a*/ beq jump_375a /*0x372c*/ cmp r0, #2 /*0x372e*/ beq jump_375a /*0x3730*/ cmp r0, #3 /*0x3732*/ bne jump_3788 /*0x3734*/ b jump_376c jump_3736: /*0x3736*/ ldrb r0, [r6] /*0x3738*/ strb r0, [r5, #0xd] /*0x373a*/ mov r7, fp /*0x373c*/ strb.w fp, [r6] /*0x3740*/ movs r0, #0 jump_3742: /*0x3742*/ adds r1, r6, r0 /*0x3744*/ ldrb r3, [r1, #2] /*0x3746*/ strb r3, [r2, r0] /*0x3748*/ adds r0, r0, #1 /*0x374a*/ uxtb r0, r0 /*0x374c*/ strb r7, [r1, #2] /*0x374e*/ cmp r0, #6 /*0x3750*/ blo jump_3742 jump_3752: /*0x3752*/ str.w sb, [r5, #0x18] /*0x3756*/ strb r4, [r5, #0xc] /*0x3758*/ b jump_3788 jump_375a: /*0x375a*/ ldr r1, [pc, #0x37c] /* data_3ad8 */ /*0x375c*/ add.w r0, r1, r0, lsl #1 /*0x3760*/ ldrb r1, [r0, #-0x2]! /*0x3764*/ strb r1, [r6] /*0x3766*/ ldrb r0, [r0, #1] /*0x3768*/ strb r0, [r6, #2] /*0x376a*/ b jump_3752 jump_376c: /*0x376c*/ ldrb r0, [r5, #0xd] /*0x376e*/ strb r0, [r6] /*0x3770*/ movs r0, #0 jump_3772: /*0x3772*/ adds r3, r6, r0 /*0x3774*/ ldrb r1, [r2, r0] /*0x3776*/ adds r0, r0, #1 /*0x3778*/ uxtb r0, r0 /*0x377a*/ strb r1, [r3, #2] /*0x377c*/ cmp r0, #6 /*0x377e*/ blo jump_3772 /*0x3780*/ str.w sb, [r5, #0x18] /*0x3784*/ strb.w fp, [r5, #6] jump_3788: /*0x3788*/ movs r5, #0 jump_378a: /*0x378a*/ ldr r0, [pc, #0x350] /* data_3adc */ /*0x378c*/ ldrb r7, [r0, r5] /*0x378e*/ adds r0, #0xf /*0x3790*/ ldrb r0, [r0, r5] /*0x3792*/ movs r6, #0 /*0x3794*/ eor.w sl, r0, r7 jump_3798: /*0x3798*/ lsls.w r0, sl, #0x1f /*0x379c*/ beq jump_3824 /*0x379e*/ ldr.w r8, [pc, #0x330] /* data_3ad0 */ /*0x37a2*/ ldrb.w r0, [r8, #6] /*0x37a6*/ cbnz r0, jump_3824 /*0x37a8*/ movs r0, #1 /*0x37aa*/ ldr.w lr, [pc, #0x32c] /* data_3ad8 */ /*0x37ae*/ str r0, [sp] /*0x37b0*/ add.w lr, lr, #4 /*0x37b4*/ add.w r1, lr, r5, lsl #3 /*0x37b8*/ add.w r0, r6, r5, lsl #3 /*0x37bc*/ uxtb r2, r0 /*0x37be*/ ldrb r4, [r1, r6] /*0x37c0*/ mov r0, r2 /*0x37c2*/ movs r1, #0 /*0x37c4*/ sub.w r3, lr, #0x1c jump_37c8: /*0x37c8*/ ldrb.w ip, [r3, r1] /*0x37cc*/ cmp ip, r2 /*0x37ce*/ beq jump_37da /*0x37d0*/ adds r1, r1, #1 /*0x37d2*/ uxtb r1, r1 /*0x37d4*/ cmp r1, #4 /*0x37d6*/ blo jump_37c8 /*0x37d8*/ b jump_3812 jump_37da: /*0x37da*/ cmp r1, #4 /*0x37dc*/ bhs jump_3812 /*0x37de*/ lsls r3, r7, #0x1f /*0x37e0*/ bne jump_37ec /*0x37e2*/ ldrb.w r4, [r8] /*0x37e6*/ mov r3, r8 /*0x37e8*/ cmp r4, #1 /*0x37ea*/ beq jump_3838 jump_37ec: /*0x37ec*/ ldr.w r4, [r8, #0x10] /*0x37f0*/ lsl.w r3, sb, r1 /*0x37f4*/ tst r3, r4 /*0x37f6*/ beq jump_3804 /*0x37f8*/ bics r4, r3 jump_37fa: /*0x37fa*/ ldr r2, [pc, #0x2dc] /* data_3ad8 */ /*0x37fc*/ str.w r4, [r8, #0x10] /*0x3800*/ subs r2, #0x14 /*0x3802*/ ldrb r2, [r2, r1] jump_3804: /*0x3804*/ bic r3, r2, #7 /*0x3808*/ add.w r1, r3, lr /*0x380c*/ and r3, r2, #7 /*0x3810*/ ldrb r4, [r1, r3] jump_3812: /*0x3812*/ ldr r1, [pc, #0x2bc] /* data_3ad0 */ /*0x3814*/ ldrb r1, [r1, #5] /*0x3816*/ ands r8, r1, #3 /*0x381a*/ beq jump_387a /*0x381c*/ ldr r3, [pc, #0x2b8] /* data_3ad8 */ /*0x381e*/ movs r1, #0 /*0x3820*/ subs r3, #0x24 jump_3822: /*0x3822*/ b jump_3826 jump_3824: /*0x3824*/ b jump_3a3e jump_3826: /*0x3826*/ ldrb.w ip, [r3, r1] /*0x382a*/ cmp ip, r2 /*0x382c*/ beq jump_3842 /*0x382e*/ adds r1, r1, #1 /*0x3830*/ uxtb r1, r1 /*0x3832*/ cmp r1, #3 /*0x3834*/ blo jump_3822 /*0x3836*/ b jump_387a jump_3838: /*0x3838*/ movs r2, #1 /*0x383a*/ ldr r4, [r3, #0x10] /*0x383c*/ lsls r2, r1 /*0x383e*/ orrs r4, r2 /*0x3840*/ b jump_37fa jump_3842: /*0x3842*/ cmp r1, #3 /*0x3844*/ bhs jump_387a /*0x3846*/ cmp.w r8, #1 /*0x384a*/ beq jump_385a /*0x384c*/ cmp.w r8, #2 /*0x3850*/ beq jump_3860 /*0x3852*/ cmp.w r8, #3 /*0x3856*/ beq jump_3866 /*0x3858*/ b jump_386c jump_385a: /*0x385a*/ ldr r0, [pc, #0x27c] /* data_3ad8 */ /*0x385c*/ subs r0, #0x21 /*0x385e*/ b jump_386a jump_3860: /*0x3860*/ ldr r0, [pc, #0x274] /* data_3ad8 */ /*0x3862*/ subs r0, #0x1e /*0x3864*/ b jump_386a jump_3866: /*0x3866*/ ldr r0, [pc, #0x270] /* data_3ad8 */ /*0x3868*/ subs r0, #0x1b jump_386a: /*0x386a*/ ldrb r0, [r0, r1] jump_386c: /*0x386c*/ bic r3, r0, #7 /*0x3870*/ add.w r1, r3, lr /*0x3874*/ and r3, r0, #7 /*0x3878*/ ldrb r4, [r1, r3] jump_387a: /*0x387a*/ ldr r1, [pc, #0x254] /* data_3ad0 */ /*0x387c*/ ldrb r1, [r1, #5] /*0x387e*/ ands r8, r1, #0x30 /*0x3882*/ beq jump_38d4 /*0x3884*/ ldr r3, [pc, #0x250] /* data_3ad8 */ /*0x3886*/ movs r1, #0 /*0x3888*/ subs r3, #0x10 jump_388a: /*0x388a*/ ldrb.w ip, [r3, r1] /*0x388e*/ cmp ip, r2 /*0x3890*/ beq jump_389c /*0x3892*/ adds r1, r1, #1 /*0x3894*/ uxtb r1, r1 /*0x3896*/ cmp r1, #4 /*0x3898*/ blo jump_388a /*0x389a*/ b jump_38d4 jump_389c: /*0x389c*/ cmp r1, #4 /*0x389e*/ bhs jump_38d4 /*0x38a0*/ cmp.w r8, #0x10 /*0x38a4*/ beq jump_38b4 /*0x38a6*/ cmp.w r8, #0x20 /*0x38aa*/ beq jump_38ba /*0x38ac*/ cmp.w r8, #0x30 /*0x38b0*/ beq jump_38c0 /*0x38b2*/ b jump_38c6 jump_38b4: /*0x38b4*/ ldr r0, [pc, #0x220] /* data_3ad8 */ /*0x38b6*/ subs r0, #0xc /*0x38b8*/ b jump_38c4 jump_38ba: /*0x38ba*/ ldr r0, [pc, #0x21c] /* data_3ad8 */ /*0x38bc*/ subs r0, #8 /*0x38be*/ b jump_38c4 jump_38c0: /*0x38c0*/ ldr r0, [pc, #0x214] /* data_3ad8 */ /*0x38c2*/ subs r0, r0, #4 jump_38c4: /*0x38c4*/ ldrb r0, [r0, r1] jump_38c6: /*0x38c6*/ bic r2, r0, #7 /*0x38ca*/ add.w r1, r2, lr /*0x38ce*/ and r0, r0, #7 /*0x38d2*/ ldrb r4, [r1, r0] jump_38d4: /*0x38d4*/ cmp r4, #0x35 /*0x38d6*/ bne jump_38e2 /*0x38d8*/ ldr r0, [pc, #0x1f4] /* data_3ad0 */ /*0x38da*/ ldrb r0, [r0, #5] /*0x38dc*/ lsls r0, r0, #0x1d /*0x38de*/ bpl jump_38e2 /*0x38e0*/ movs r4, #0x29 jump_38e2: /*0x38e2*/ ldr.w r8, [pc, #0x1ec] /* data_3ad0 */ /*0x38e6*/ ldrb.w r0, [r8, #5] /*0x38ea*/ lsls r0, r0, #0x1c /*0x38ec*/ bpl jump_38fe /*0x38ee*/ cmp r4, #0xe2 /*0x38f0*/ beq jump_38f8 /*0x38f2*/ cmp r4, #0xe3 /*0x38f4*/ beq jump_38fc /*0x38f6*/ b jump_38fe jump_38f8: /*0x38f8*/ movs r4, #0xe3 /*0x38fa*/ b jump_38fe jump_38fc: /*0x38fc*/ movs r4, #0xe2 jump_38fe: /*0x38fe*/ lsls r0, r7, #0x1f /*0x3900*/ beq jump_3918 /*0x3902*/ ldr r1, [pc, #0x1d4] /* data_3ad8 */ /*0x3904*/ movs r0, #0 /*0x3906*/ adds r1, #0x7c jump_3908: /*0x3908*/ ldrb r2, [r1, r0] /*0x390a*/ cmp r2, r4 /*0x390c*/ beq jump_39f8 /*0x390e*/ adds r0, r0, #1 /*0x3910*/ uxtb r0, r0 /*0x3912*/ cmp r0, #0x31 /*0x3914*/ blo jump_3908 /*0x3916*/ b jump_3aa0 jump_3918: /*0x3918*/ cmp r4, #0xe8 /*0x391a*/ beq jump_3926 /*0x391c*/ cmp r4, #0xe9 /*0x391e*/ beq jump_392c /*0x3920*/ cmp r4, #0xc5 /*0x3922*/ beq jump_3932 /*0x3924*/ b jump_3936 jump_3926: /*0x3926*/ strb.w sb, [r8, #7] /*0x392a*/ b jump_3936 jump_392c: /*0x392c*/ strb.w sb, [r8, #8] /*0x3930*/ b jump_3936 jump_3932: /*0x3932*/ strb.w sb, [r8, #9] jump_3936: /*0x3936*/ ldrb.w r1, [r8, #7] /*0x393a*/ ldrb.w r2, [r8, #8] /*0x393e*/ ldrb.w r0, [r8, #9] /*0x3942*/ orrs r1, r2 /*0x3944*/ orrs r1, r0 /*0x3946*/ beq jump_3a0a /*0x3948*/ ldr r1, [pc, #0x18c] /* data_3ad8 */ /*0x394a*/ movs r0, #0 /*0x394c*/ adds r1, #0x7c jump_394e: /*0x394e*/ ldrb r2, [r1, r0] /*0x3950*/ cmp r2, r4 /*0x3952*/ beq jump_395e /*0x3954*/ adds r0, r0, #1 /*0x3956*/ uxtb r0, r0 /*0x3958*/ cmp r0, #0x31 /*0x395a*/ blo jump_394e /*0x395c*/ b jump_3980 jump_395e: /*0x395e*/ cmp r0, #0x31 /*0x3960*/ bhs jump_3980 /*0x3962*/ movs r2, #1 /*0x3964*/ and r1, r0, #0x1f /*0x3968*/ lsls r2, r1 /*0x396a*/ ldr r4, [pc, #0x170] /* data_3adc */ /*0x396c*/ lsrs r1, r0, #5 /*0x396e*/ subs r4, #0xc /*0x3970*/ ldr.w r3, [r4, r1, lsl #2] /*0x3974*/ orrs r3, r2 /*0x3976*/ str.w r3, [r4, r1, lsl #2] /*0x397a*/ ldr r1, [pc, #0x15c] /* data_3ad8 */ /*0x397c*/ adds r1, #0xad /*0x397e*/ ldrb r4, [r1, r0] jump_3980: /*0x3980*/ sub.w r0, r4, #0xc3 /*0x3984*/ cmp r0, #5 /*0x3986*/ bhs jump_3a0a /*0x3988*/ tbb [pc, r0] /*0x398c*/ .byte 0x3 /*0x398d*/ .byte 0x49 /*0x398e*/ .byte 0x2f /*0x398f*/ .byte 0x37 /*0x3990*/ .byte 0x21 /*0x3991*/ .byte 0x0 switch_3992: /*0x3992*/ ldrb.w r0, [r8] /*0x3996*/ mov r4, r8 /*0x3998*/ cbz r0, jump_39c6 /*0x399a*/ strb.w fp, [r4] /*0x399e*/ movs r2, #0 jump_39a0: /*0x39a0*/ mov.w r1, #0x800 /*0x39a4*/ ldr r0, [pc, #0x138] /* data_3ae0 */ /*0x39a6*/ bl call_3410 jump_39aa: /*0x39aa*/ ldr r0, [pc, #0x130] /* data_3adc */ /*0x39ac*/ ldrb r1, [r4] /*0x39ae*/ adds r0, #0x20 /*0x39b0*/ str r1, [r0] /*0x39b2*/ ldrb r1, [r4, #0xa] /*0x39b4*/ str r1, [r0, #4] /*0x39b6*/ ldrb r1, [r4, #0xb] /*0x39b8*/ str r1, [r0, #8] /*0x39ba*/ movs r1, #3 /*0x39bc*/ mov.w r0, #0xf800 /*0x39c0*/ bl call_4e40 /*0x39c4*/ b jump_3a08 jump_39c6: /*0x39c6*/ strb.w sb, [r4] /*0x39ca*/ movs r2, #1 /*0x39cc*/ b jump_39a0 switch_39ce: /*0x39ce*/ ldrb.w r0, [r8, #0xa] /*0x39d2*/ mov r4, r8 /*0x39d4*/ cbz r0, jump_3a08 /*0x39d6*/ ldrb r0, [r4, #0xb] /*0x39d8*/ cbz r0, jump_39e4 /*0x39da*/ strb.w fp, [r4, #0xb] jump_39de: /*0x39de*/ bl call_4d48 /*0x39e2*/ b jump_39aa jump_39e4: /*0x39e4*/ strb.w sb, [r4, #0xb] /*0x39e8*/ b jump_39de switch_39ea: /*0x39ea*/ ldrb.w r0, [r8, #0xa] /*0x39ee*/ mov r4, r8 /*0x39f0*/ cmp r0, #7 /*0x39f2*/ bhs jump_3a08 /*0x39f4*/ adds r0, r0, #1 /*0x39f6*/ b jump_3a04 jump_39f8: /*0x39f8*/ b jump_3a74 switch_39fa: /*0x39fa*/ ldrb.w r0, [r8, #0xa] /*0x39fe*/ mov r4, r8 /*0x3a00*/ cbz r0, jump_3a08 /*0x3a02*/ subs r0, r0, #1 jump_3a04: /*0x3a04*/ strb r0, [r4, #0xa] /*0x3a06*/ b jump_39de jump_3a08: /*0x3a08*/ movs r4, #0 jump_3a0a: /*0x3a0a*/ mov r1, r7 /*0x3a0c*/ mov r0, r4 /*0x3a0e*/ bl call_2db4 /*0x3a12*/ mov r0, r4 /*0x3a14*/ bl call_368c /*0x3a18*/ cmp r0, #1 /*0x3a1a*/ bne jump_3a3e /*0x3a1c*/ b jump_3a28 switch_3a1e: /*0x3a1e*/ strb.w sb, [r8, #6] /*0x3a22*/ strb.w fp, [r8, #0xc] /*0x3a26*/ b jump_3a08 jump_3a28: /*0x3a28*/ str.w sb, [r8, #0x18] /*0x3a2c*/ ldr r0, [sp] /*0x3a2e*/ cbz r0, jump_3a3e /*0x3a30*/ ldr r2, [pc, #0xa8] /* data_3adc */ /*0x3a32*/ adds r2, #0xf /*0x3a34*/ ldrb r1, [r2, r5] /*0x3a36*/ lsl.w r0, sb, r6 /*0x3a3a*/ eors r1, r0 /*0x3a3c*/ strb r1, [r2, r5] jump_3a3e: /*0x3a3e*/ adds r6, r6, #1 /*0x3a40*/ lsrs r7, r7, #1 /*0x3a42*/ uxtb r6, r6 /*0x3a44*/ lsr.w sl, sl, #1 /*0x3a48*/ cmp r6, #8 /*0x3a4a*/ blo.w jump_3798 /*0x3a4e*/ adds r5, r5, #1 /*0x3a50*/ uxtb r5, r5 /*0x3a52*/ cmp r5, #0xf /*0x3a54*/ blo.w jump_378a /*0x3a58*/ ldr r3, [pc, #0x74] /* data_3ad0 */ /*0x3a5a*/ ldrb r0, [r3, #4] /*0x3a5c*/ cmp r0, #1 /*0x3a5e*/ bne jump_3a70 /*0x3a60*/ bl call_4e20 /*0x3a64*/ cmp r0, #1 /*0x3a66*/ bne jump_3a70 /*0x3a68*/ strb.w fp, [r3, #4] /*0x3a6c*/ ldrb r0, [r3, #3] /*0x3a6e*/ strb r0, [r3, #5] jump_3a70: /*0x3a70*/ pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} jump_3a74: /*0x3a74*/ cmp r0, #0x31 /*0x3a76*/ bhs jump_3aa0 /*0x3a78*/ ldr.w lr, [pc, #0x60] /* data_3adc */ /*0x3a7c*/ movs r1, #1 /*0x3a7e*/ and r2, r0, #0x1f /*0x3a82*/ lsr.w ip, r0, #5 /*0x3a86*/ sub.w lr, lr, #0xc /*0x3a8a*/ lsls r1, r2 /*0x3a8c*/ ldr.w r2, [lr, ip, lsl #2] /*0x3a90*/ tst r2, r1 /*0x3a92*/ beq jump_3aa0 /*0x3a94*/ ldr r3, [pc, #0x40] /* data_3ad8 */ /*0x3a96*/ adds r3, #0xde /*0x3a98*/ bics r2, r1 /*0x3a9a*/ ldrb r4, [r3, r0] /*0x3a9c*/ str.w r2, [lr, ip, lsl #2] jump_3aa0: /*0x3aa0*/ cmp r4, #0xe8 /*0x3aa2*/ beq jump_3aae /*0x3aa4*/ cmp r4, #0xe9 /*0x3aa6*/ beq jump_3ab4 /*0x3aa8*/ cmp r4, #0xc5 /*0x3aaa*/ beq jump_3aba /*0x3aac*/ b jump_3abe jump_3aae: /*0x3aae*/ strb.w fp, [r8, #7] /*0x3ab2*/ b jump_3abe jump_3ab4: /*0x3ab4*/ strb.w fp, [r8, #8] /*0x3ab8*/ b jump_3abe jump_3aba: /*0x3aba*/ strb.w fp, [r8, #9] jump_3abe: /*0x3abe*/ mov r1, r7 /*0x3ac0*/ mov r0, r4 /*0x3ac2*/ bl call_2db4 /*0x3ac6*/ mov r0, r4 /*0x3ac8*/ bl call_3e64 /*0x3acc*/ b jump_3a28 /*0x3ace*/ .byte 0x0 /*0x3acf*/ .byte 0x0 data_3ad0: /*0x3ad0*/ .word 0x20000048 data_3ad4: /*0x3ad4*/ .word 0x20000030 data_3ad8: /*0x3ad8*/ .word data_5008 data_3adc: /*0x3adc*/ .word 0x200001fc data_3ae0: /*0x3ae0*/ .word 0x4001e000 jump_3ae4: /*0x3ae4*/ ldr r1, [pc, #4] /* data_3aec */ /*0x3ae6*/ movs r0, #0xff /*0x3ae8*/ str r0, [r1, #0x58] /*0x3aea*/ bx lr data_3aec: /*0x3aec*/ .word 0x40024000 .thumb_func call_3af0: /*0x3af0*/ push.w {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} /*0x3af4*/ ldr r5, [pc, #0x68] /* data_3b60 */ /*0x3af6*/ movs r4, #0 /*0x3af8*/ ldr.w sl, [pc, #0x68] /* data_3b64 */ /*0x3afc*/ ldr.w fp, [pc, #0x68] /* data_3b68 */ /*0x3b00*/ ldr r7, [pc, #0x68] /* data_3b6c */ /*0x3b02*/ mov r8, r4 /*0x3b04*/ mov.w sb, #1 /*0x3b08*/ sub.w r6, r5, #0x38 jump_3b0c: /*0x3b0c*/ ldr.w r1, [r5, r4, lsl #2] /*0x3b10*/ str.w sb, [r1] /*0x3b14*/ movs r0, #0x1c /*0x3b16*/ bl call_49cc /*0x3b1a*/ ldr.w r0, [sl, #0x1c] /*0x3b1e*/ ldr.w r1, [fp, #0x1c] /*0x3b22*/ and r0, r0, #0xf /*0x3b26*/ ldr.w r2, [r5, r4, lsl #2] /*0x3b2a*/ and r1, r1, #0xf0 /*0x3b2e*/ orrs r0, r1 /*0x3b30*/ str.w r8, [r2] /*0x3b34*/ ldrb r1, [r7, r4] /*0x3b36*/ cmp r1, r0 /*0x3b38*/ beq jump_3b3e /*0x3b3a*/ movs r1, #0x32 /*0x3b3c*/ str r1, [r6, #0x28] jump_3b3e: /*0x3b3e*/ strb r0, [r7, r4] /*0x3b40*/ adds r4, r4, #1 /*0x3b42*/ uxtb r4, r4 /*0x3b44*/ cmp r4, #0xf /*0x3b46*/ blo jump_3b0c /*0x3b48*/ bl call_3180 /*0x3b4c*/ ldr r0, [r6, #0x28] /*0x3b4e*/ cmp r0, #0 /*0x3b50*/ bne jump_3b5a /*0x3b52*/ pop.w {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} /*0x3b56*/ b.w jump_3700 jump_3b5a: /*0x3b5a*/ pop.w {r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} /*0x3b5e*/ .byte 0x0 /*0x3b5f*/ .byte 0x0 data_3b60: /*0x3b60*/ .word 0x20000080 data_3b64: /*0x3b64*/ .word 0x4001a000 data_3b68: /*0x3b68*/ .word 0x4001b000 data_3b6c: /*0x3b6c*/ .word 0x200001fc .thumb_func call_3b70: /*0x3b70*/ push {r1, r2, r3, r4, r5, lr} /*0x3b72*/ movs r0, #0 /*0x3b74*/ movw r1, #0x8c9f /*0x3b78*/ strh.w r1, [sp, #4] /*0x3b7c*/ ldr r4, [pc, #0x30] /* data_3bb0 */ /*0x3b7e*/ str r0, [sp] /*0x3b80*/ strh.w r0, [sp, #6] /*0x3b84*/ strh.w r0, [sp, #8] /*0x3b88*/ mov r1, sp /*0x3b8a*/ mov r0, r4 /*0x3b8c*/ bl call_35f4 /*0x3b90*/ movs r1, #1 /*0x3b92*/ mov r0, r4 /*0x3b94*/ bl call_3582 /*0x3b98*/ ldr r2, [pc, #0x18] /* data_3bb4 */ /*0x3b9a*/ movs r1, #0x10 /*0x3b9c*/ str r1, [r2] /*0x3b9e*/ mov.w r2, #1 /*0x3ba2*/ mov.w r1, #0x100 /*0x3ba6*/ mov r0, r4 /*0x3ba8*/ bl call_3596 /*0x3bac*/ pop {r1, r2, r3, r4, r5, pc} /*0x3bae*/ .byte 0x0 /*0x3baf*/ .byte 0x0 data_3bb0: /*0x3bb0*/ .word 0x4006f000 data_3bb4: /*0x3bb4*/ .word 0xe000e104 .thumb_func call_3bb8: /*0x3bb8*/ ldr r0, [pc, #0xc] /* data_3bc8 */ /*0x3bba*/ ldr r0, [r0, #0x58] /*0x3bbc*/ ands r0, r0, #0xff /*0x3bc0*/ beq jump_3bc4 /*0x3bc2*/ movs r0, #1 jump_3bc4: /*0x3bc4*/ bx lr /*0x3bc6*/ .byte 0x0 /*0x3bc7*/ .byte 0x0 data_3bc8: /*0x3bc8*/ .word 0x40024000 .thumb_func call_3bcc: /*0x3bcc*/ push {r4, r5, r6, lr} /*0x3bce*/ mov.w r4, #0xf800 /*0x3bd2*/ movs r1, #3 /*0x3bd4*/ mov r0, r4 /*0x3bd6*/ bl call_4df8 /*0x3bda*/ ldr r5, [pc, #0x6c] /* data_3c48 */ /*0x3bdc*/ ldr r0, [r5] /*0x3bde*/ adds r0, r0, #1 /*0x3be0*/ bne jump_3bf2 /*0x3be2*/ movs r1, #0 /*0x3be4*/ str r1, [r5] /*0x3be6*/ str r1, [r5, #4] /*0x3be8*/ str r1, [r5, #8] /*0x3bea*/ movs r1, #3 /*0x3bec*/ mov r0, r4 /*0x3bee*/ bl call_4e40 jump_3bf2: /*0x3bf2*/ ldr r4, [pc, #0x58] /* data_3c4c */ /*0x3bf4*/ ldr r0, [r5] /*0x3bf6*/ ldr r6, [pc, #0x58] /* data_3c50 */ /*0x3bf8*/ strb r0, [r4] /*0x3bfa*/ ldr r0, [r5, #4] /*0x3bfc*/ strb r0, [r4, #0xa] /*0x3bfe*/ ldr r0, [r5, #8] /*0x3c00*/ strb r0, [r4, #0xb] /*0x3c02*/ mov.w r5, #0x800 /*0x3c06*/ movs r2, #0 /*0x3c08*/ mov r1, r5 /*0x3c0a*/ mov r0, r6 /*0x3c0c*/ bl call_3410 /*0x3c10*/ ldrb r0, [r4] /*0x3c12*/ cmp r0, #1 /*0x3c14*/ bne jump_3c20 /*0x3c16*/ movs r2, #1 /*0x3c18*/ mov r1, r5 /*0x3c1a*/ mov r0, r6 /*0x3c1c*/ bl call_3410 jump_3c20: /*0x3c20*/ bl call_3b70 /*0x3c24*/ bl call_3dac /*0x3c28*/ bl call_4d48 /*0x3c2c*/ ldr r3, [pc, #0x18] /* data_3c48 */ /*0x3c2e*/ movs r0, #0 /*0x3c30*/ movs r1, #0xff /*0x3c32*/ subs r3, #0x20 /*0x3c34*/ add.w r2, r3, #0xf jump_3c38: /*0x3c38*/ strb r1, [r3, r0] /*0x3c3a*/ strb r1, [r2, r0] /*0x3c3c*/ adds r0, r0, #1 /*0x3c3e*/ uxtb r0, r0 /*0x3c40*/ cmp r0, #0xf /*0x3c42*/ blo jump_3c38 /*0x3c44*/ pop {r4, r5, r6, pc} /*0x3c46*/ .byte 0x0 /*0x3c47*/ .byte 0x0 data_3c48: /*0x3c48*/ .word 0x2000021c data_3c4c: /*0x3c4c*/ .word 0x20000048 data_3c50: /*0x3c50*/ .word 0x4001e000 .thumb_func call_3c54: /*0x3c54*/ push.w {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} /*0x3c58*/ ldr r3, [pc, #0x140] /* data_3d9c */ /*0x3c5a*/ ldr r7, [pc, #0x144] /* data_3da0 */ /*0x3c5c*/ ldr r4, [pc, #0x144] /* data_3da4 */ /*0x3c5e*/ ldr r6, [pc, #0x148] /* data_3da8 */ /*0x3c60*/ mov.w sl, #0x800 /*0x3c64*/ mov.w fp, #0x100 /*0x3c68*/ mov.w r5, #0x3000 /*0x3c6c*/ mov.w r8, #0x400 /*0x3c70*/ mov.w sb, #0x4000 /*0x3c74*/ cbz r0, jump_3cf4 /*0x3c76*/ movs r2, #0 /*0x3c78*/ movs r1, #0x40 /*0x3c7a*/ mov r0, r3 /*0x3c7c*/ bl call_33c4 /*0x3c80*/ mov r1, sl /*0x3c82*/ movs r2, #0 /*0x3c84*/ mov sl, r7 /*0x3c86*/ mov r0, r7 /*0x3c88*/ bl call_33c4 /*0x3c8c*/ movs r2, #1 /*0x3c8e*/ movs r1, #0xc /*0x3c90*/ mov r0, r4 /*0x3c92*/ bl call_33e4 /*0x3c96*/ movs r1, #0 /*0x3c98*/ movs r0, #0xf0 /*0x3c9a*/ bl call_2ecc /*0x3c9e*/ movs r2, #0 /*0x3ca0*/ mov r1, fp /*0x3ca2*/ mov r0, sl /*0x3ca4*/ bl call_33c4 /*0x3ca8*/ movs r2, #0 /*0x3caa*/ mov r1, r5 /*0x3cac*/ mov r0, sl /*0x3cae*/ bl call_33d4 /*0x3cb2*/ movs r2, #2 /*0x3cb4*/ mov r1, r5 /*0x3cb6*/ mov r0, sl /*0x3cb8*/ bl call_33e4 /*0x3cbc*/ mov.w r1, #0x55555555 /*0x3cc0*/ lsls r0, r7, #0xb /*0x3cc2*/ bl call_2ee0 /*0x3cc6*/ movs r2, #2 /*0x3cc8*/ movs r1, #0xf /*0x3cca*/ mov r0, r6 /*0x3ccc*/ bl call_33e4 /*0x3cd0*/ movs r2, #2 /*0x3cd2*/ mov r5, r8 /*0x3cd4*/ mov r1, r8 /*0x3cd6*/ mov r0, r4 /*0x3cd8*/ bl call_33e4 /*0x3cdc*/ movs r2, #2 /*0x3cde*/ mov r7, sb /*0x3ce0*/ mov r1, sb /*0x3ce2*/ mov r0, sl /*0x3ce4*/ bl call_33e4 /*0x3ce8*/ movs r2, #0 /*0x3cea*/ movs r1, #0xf /*0x3cec*/ mov r0, r6 /*0x3cee*/ bl call_33d4 /*0x3cf2*/ b jump_3cf6 jump_3cf4: /*0x3cf4*/ b jump_3d04 jump_3cf6: /*0x3cf6*/ movs r2, #0 /*0x3cf8*/ mov r1, r5 /*0x3cfa*/ mov r0, r4 /*0x3cfc*/ bl call_33d4 /*0x3d00*/ movs r2, #0 /*0x3d02*/ b jump_3d8e jump_3d04: /*0x3d04*/ movs r2, #1 /*0x3d06*/ movs r1, #0x40 /*0x3d08*/ mov r0, r3 /*0x3d0a*/ bl call_33c4 /*0x3d0e*/ mov r1, sl /*0x3d10*/ movs r2, #1 /*0x3d12*/ mov sl, r7 /*0x3d14*/ mov r0, r7 /*0x3d16*/ bl call_33c4 /*0x3d1a*/ movs r2, #2 /*0x3d1c*/ movs r1, #0xc /*0x3d1e*/ mov r0, r4 /*0x3d20*/ bl call_33e4 /*0x3d24*/ mov.w r1, #-0x55555556 /*0x3d28*/ movs r0, #0xf0 /*0x3d2a*/ bl call_2ecc /*0x3d2e*/ movs r2, #1 /*0x3d30*/ mov r1, fp /*0x3d32*/ mov r0, sl /*0x3d34*/ bl call_33c4 /*0x3d38*/ movs r2, #1 /*0x3d3a*/ mov r1, r5 /*0x3d3c*/ mov r0, sl /*0x3d3e*/ bl call_33d4 /*0x3d42*/ movs r2, #0 /*0x3d44*/ mov r1, r5 /*0x3d46*/ mov r0, sl /*0x3d48*/ bl call_33e4 /*0x3d4c*/ movs r1, #0 /*0x3d4e*/ mov.w r0, #0xf000000 /*0x3d52*/ bl call_2ee0 /*0x3d56*/ movs r2, #0 /*0x3d58*/ movs r1, #0xf /*0x3d5a*/ mov r0, r6 /*0x3d5c*/ bl call_33e4 /*0x3d60*/ movs r2, #0 /*0x3d62*/ mov r5, r8 /*0x3d64*/ mov r1, r8 /*0x3d66*/ mov r0, r4 /*0x3d68*/ bl call_33e4 /*0x3d6c*/ movs r2, #0 /*0x3d6e*/ mov r7, sb /*0x3d70*/ mov r1, sb /*0x3d72*/ mov r0, sl /*0x3d74*/ bl call_33e4 /*0x3d78*/ movs r2, #1 /*0x3d7a*/ movs r1, #0xf /*0x3d7c*/ mov r0, r6 /*0x3d7e*/ bl call_33d4 /*0x3d82*/ movs r2, #1 /*0x3d84*/ mov r1, r5 /*0x3d86*/ mov r0, r4 /*0x3d88*/ bl call_33d4 /*0x3d8c*/ movs r2, #1 jump_3d8e: /*0x3d8e*/ mov r1, r7 /*0x3d90*/ mov r0, sl /*0x3d92*/ pop.w {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} /*0x3d96*/ b.w call_33d4 /*0x3d9a*/ .byte 0x0 /*0x3d9b*/ .byte 0x0 data_3d9c: /*0x3d9c*/ .word 0x4001a000 data_3da0: /*0x3da0*/ .word 0x4001e000 data_3da4: /*0x3da4*/ .word 0x4001c000 data_3da8: /*0x3da8*/ .word 0x4001b000 .thumb_func call_3dac: /*0x3dac*/ push {r4, r5, lr} /*0x3dae*/ ldr r5, [pc, #0x7c] /* data_3e2c */ /*0x3db0*/ sub sp, #0x14 /*0x3db2*/ movs r4, #0 /*0x3db4*/ str r4, [r5] /*0x3db6*/ str r4, [r5, #4] /*0x3db8*/ movw r0, #0xf9f /*0x3dbc*/ strh.w r0, [sp, #0xc] /*0x3dc0*/ mov.w r0, #0x100 /*0x3dc4*/ sub.w r5, r5, #0x98 /*0x3dc8*/ strh.w r0, [sp, #0x10] /*0x3dcc*/ str r4, [sp, #8] /*0x3dce*/ strh.w r4, [sp, #0xe] /*0x3dd2*/ add r1, sp, #8 /*0x3dd4*/ mov r0, r5 /*0x3dd6*/ bl call_35f4 /*0x3dda*/ movs r0, #2 /*0x3ddc*/ strb.w r0, [sp] /*0x3de0*/ movs r0, #6 /*0x3de2*/ strb.w r0, [sp, #3] /*0x3de6*/ movs r0, #1 /*0x3de8*/ strb.w r0, [sp, #1] /*0x3dec*/ strb.w r4, [sp, #2] /*0x3df0*/ strh.w r4, [sp, #4] /*0x3df4*/ mov r1, sp /*0x3df6*/ mov r0, r5 /*0x3df8*/ bl call_35a6 /*0x3dfc*/ movs r0, #3 /*0x3dfe*/ strb.w r0, [sp] /*0x3e02*/ mov r1, sp /*0x3e04*/ mov r0, r5 /*0x3e06*/ bl call_35a6 /*0x3e0a*/ movs r2, #1 /*0x3e0c*/ movs r1, #2 /*0x3e0e*/ mov r0, r5 /*0x3e10*/ bl call_3560 /*0x3e14*/ movs r2, #1 /*0x3e16*/ movs r1, #3 /*0x3e18*/ mov r0, r5 /*0x3e1a*/ bl call_3560 /*0x3e1e*/ movs r1, #1 /*0x3e20*/ mov r0, r5 /*0x3e22*/ bl call_3582 /*0x3e26*/ add sp, #0x14 /*0x3e28*/ pop {r4, r5, pc} /*0x3e2a*/ .byte 0x0 /*0x3e2b*/ .byte 0x0 data_3e2c: /*0x3e2c*/ .word 0x4006f098 .thumb_func call_3e30: /*0x3e30*/ push {r4, lr} /*0x3e32*/ ldr r4, [pc, #0x2c] /* data_3e60 */ /*0x3e34*/ cbz r0, jump_3e50 /*0x3e36*/ movs r0, #1 /*0x3e38*/ bl call_3ec0 /*0x3e3c*/ ldr r0, [r4, #0x54] /*0x3e3e*/ orr r0, r0, #0xff /*0x3e42*/ str r0, [r4, #0x54] /*0x3e44*/ movs r0, #0xff /*0x3e46*/ str r0, [r4, #0x58] /*0x3e48*/ ldr r0, [r4, #0x50] /*0x3e4a*/ orr r0, r0, #0xff /*0x3e4e*/ b jump_3e5c jump_3e50: /*0x3e50*/ movs r0, #0 /*0x3e52*/ bl call_3ec0 /*0x3e56*/ ldr r0, [r4, #0x50] /*0x3e58*/ bic r0, r0, #0xff jump_3e5c: /*0x3e5c*/ str r0, [r4, #0x50] /*0x3e5e*/ pop {r4, pc} data_3e60: /*0x3e60*/ .word 0x40024000 .thumb_func call_3e64: /*0x3e64*/ push {r4, lr} /*0x3e66*/ movs r1, #0xe /*0x3e68*/ ldr r2, [pc, #0x50] /* data_3ebc */ /*0x3e6a*/ cmp.w r1, r0, lsr #4 /*0x3e6e*/ bne jump_3e84 /*0x3e70*/ and r0, r0, #0xf /*0x3e74*/ cmp r0, #8 /*0x3e76*/ bhs jump_3e82 /*0x3e78*/ ldrb r1, [r2] /*0x3e7a*/ movs r3, #1 /*0x3e7c*/ lsls r3, r0 /*0x3e7e*/ bics r1, r3 /*0x3e80*/ strb r1, [r2] jump_3e82: /*0x3e82*/ pop {r4, pc} jump_3e84: /*0x3e84*/ cmp r0, #0x91 /*0x3e86*/ bhi jump_3e82 /*0x3e88*/ movs r1, #0 jump_3e8a: /*0x3e8a*/ adds r3, r2, r1 /*0x3e8c*/ ldrb r3, [r3, #2] /*0x3e8e*/ cmp r3, r0 /*0x3e90*/ bne jump_3e9e /*0x3e92*/ movs r3, #0 /*0x3e94*/ adds r0, r2, r1 /*0x3e96*/ cmp r1, #6 /*0x3e98*/ strb r3, [r0, #2] /*0x3e9a*/ blo jump_3eb2 /*0x3e9c*/ pop {r4, pc} jump_3e9e: /*0x3e9e*/ adds r1, r1, #1 /*0x3ea0*/ uxtb r1, r1 /*0x3ea2*/ cmp r1, #6 /*0x3ea4*/ blo jump_3e8a /*0x3ea6*/ pop {r4, pc} jump_3ea8: /*0x3ea8*/ adds r0, r2, r1 /*0x3eaa*/ adds r1, r1, #1 /*0x3eac*/ ldrb r4, [r0, #3] /*0x3eae*/ strb r4, [r0, #2] /*0x3eb0*/ uxtb r1, r1 jump_3eb2: /*0x3eb2*/ cmp r1, #5 /*0x3eb4*/ blo jump_3ea8 /*0x3eb6*/ strb r3, [r2, #7] /*0x3eb8*/ pop {r4, pc} /*0x3eba*/ .byte 0x0 /*0x3ebb*/ .byte 0x0 data_3ebc: /*0x3ebc*/ .word 0x20000030 .thumb_func call_3ec0: /*0x3ec0*/ ldr r2, [pc, #0x10] /* data_3ed4 */ /*0x3ec2*/ movs r1, #0 jump_3ec4: /*0x3ec4*/ ldr.w r3, [r2, r1, lsl #2] /*0x3ec8*/ str r0, [r3] /*0x3eca*/ adds r1, r1, #1 /*0x3ecc*/ uxtb r1, r1 /*0x3ece*/ cmp r1, #0xf /*0x3ed0*/ blo jump_3ec4 /*0x3ed2*/ bx lr data_3ed4: /*0x3ed4*/ .word 0x20000080 .thumb_func call_3ed8: /*0x3ed8*/ mov.w r1, #0x2c00 /*0x3edc*/ movs r0, #0 /*0x3ede*/ b.w jump_3ee4 /*0x3ee2*/ .byte 0x0 /*0x3ee3*/ .byte 0x0 jump_3ee4: /*0x3ee4*/ ldr r2, [pc, #8] /* data_3ef0 */ /*0x3ee6*/ ands r1, r2 /*0x3ee8*/ orrs r1, r0 /*0x3eea*/ ldr r0, [pc, #8] /* data_3ef4 */ /*0x3eec*/ str r1, [r0] /*0x3eee*/ bx lr data_3ef0: /*0x3ef0*/ .word 0x1fffff80 data_3ef4: /*0x3ef4*/ .word 0xe000ed08 .thumb_func call_3ef8: /*0x3ef8*/ ldr r2, [pc, #0x18] /* data_3f14 */ /*0x3efa*/ movs r1, #0 /*0x3efc*/ str r1, [r2, #0x10] /*0x3efe*/ str r1, [r2] /*0x3f00*/ ldr r1, [pc, #0x14] /* data_3f18 */ /*0x3f02*/ ldr r2, [r1] /*0x3f04*/ orr r2, r2, #4 /*0x3f08*/ str r2, [r1] /*0x3f0a*/ cbz r0, jump_3f10 /*0x3f0c*/ wfi /*0x3f0e*/ bx lr jump_3f10: /*0x3f10*/ wfe /*0x3f12*/ bx lr data_3f14: /*0x3f14*/ .word 0x42d4208c data_3f18: /*0x3f18*/ .word 0xe000ed10 jump_3f1c: /*0x3f1c*/ ldr r2, [pc, #0x14] /* data_3f34 */ /*0x3f1e*/ cmp r1, #1 /*0x3f20*/ ldr.w r1, [r2, #0x10c] /*0x3f24*/ beq jump_3f2e /*0x3f26*/ bics r1, r0 jump_3f28: /*0x3f28*/ str.w r1, [r2, #0x10c] /*0x3f2c*/ bx lr jump_3f2e: /*0x3f2e*/ orrs r1, r0 /*0x3f30*/ b jump_3f28 /*0x3f32*/ .byte 0x0 /*0x3f33*/ .byte 0x0 data_3f34: /*0x3f34*/ .word 0x40088000 .thumb_func call_3f38: /*0x3f38*/ mov.w r1, #-0x1fff2000 /*0x3f3c*/ cbz r0, jump_3f4c /*0x3f3e*/ cmp r0, #1 /*0x3f40*/ ldr r0, [r1, #0x10] /*0x3f42*/ beq jump_3f52 /*0x3f44*/ bic r0, r0, #1 jump_3f48: /*0x3f48*/ str r0, [r1, #0x10] /*0x3f4a*/ bx lr jump_3f4c: /*0x3f4c*/ movs r0, #0 /*0x3f4e*/ str r0, [r1, #0x18] /*0x3f50*/ bx lr jump_3f52: /*0x3f52*/ orr r0, r0, #1 /*0x3f56*/ b jump_3f48 .thumb_func loc_3f58: /*0x3f58*/ ldr r0, [pc, #0x5c] /* data_3fb8 */ /*0x3f5a*/ push {r4, lr} /*0x3f5c*/ ldr r0, [r0] /*0x3f5e*/ cmp r0, #0 /*0x3f60*/ beq jump_3fb6 /*0x3f62*/ ldr r0, [pc, #0x58] /* data_3fbc */ /*0x3f64*/ bl call_43d8 /*0x3f68*/ mov r4, r0 /*0x3f6a*/ cmp r0, #1 /*0x3f6c*/ bne jump_3f72 /*0x3f6e*/ bl call_3e30 jump_3f72: /*0x3f72*/ bl call_49bc /*0x3f76*/ movs r0, #1 /*0x3f78*/ bl call_3c54 /*0x3f7c*/ movs r0, #0 /*0x3f7e*/ bl call_3ef8 /*0x3f82*/ movs r0, #0 /*0x3f84*/ bl call_3c54 /*0x3f88*/ bl call_3bb8 /*0x3f8c*/ cmp r0, #1 /*0x3f8e*/ beq jump_3fa2 /*0x3f90*/ cmp r4, #1 /*0x3f92*/ bne jump_3fb6 jump_3f94: /*0x3f94*/ movs r0, #0 /*0x3f96*/ bl call_3e30 /*0x3f9a*/ pop.w {r4, lr} /*0x3f9e*/ b.w jump_3ae4 jump_3fa2: /*0x3fa2*/ cmp r4, #1 /*0x3fa4*/ bne jump_3fb6 /*0x3fa6*/ ldr r0, [pc, #0x14] /* data_3fbc */ /*0x3fa8*/ bl call_45b6 /*0x3fac*/ cmp r0, #1 /*0x3fae*/ bne jump_3f94 /*0x3fb0*/ bl call_45fe /*0x3fb4*/ b jump_3f94 jump_3fb6: /*0x3fb6*/ pop {r4, pc} data_3fb8: /*0x3fb8*/ .word 0x20000000 data_3fbc: /*0x3fbc*/ .word 0x200000cc .thumb_func call_3fc0: /*0x3fc0*/ ldr r0, [pc, #0x50] /* data_4014 */ /*0x3fc2*/ movs r1, #1 /*0x3fc4*/ str.w r1, [r0, #0x300] /*0x3fc8*/ ldr r2, [pc, #0x4c] /* data_4018 */ /*0x3fca*/ str.w r1, [r2, #0xa8] jump_3fce: /*0x3fce*/ ldr.w r3, [r2, #0x108] /*0x3fd2*/ cmp r3, #0 /*0x3fd4*/ beq jump_3fce /*0x3fd6*/ movs r3, #0 /*0x3fd8*/ str r3, [r2, #0x20] /*0x3fda*/ mov.w r3, #0x9000000 /*0x3fde*/ str r3, [r0, #0x18] /*0x3fe0*/ str.w r1, [r2, #0xa4] jump_3fe4: /*0x3fe4*/ ldr.w r3, [r2, #0x104] /*0x3fe8*/ cmp r3, #0 /*0x3fea*/ beq jump_3fe4 /*0x3fec*/ ldr r2, [pc, #0x2c] /* data_401c */ /*0x3fee*/ ldr r3, [r2] /*0x3ff0*/ bic r3, r3, #7 /*0x3ff4*/ add.w r3, r3, #3 /*0x3ff8*/ str r3, [r2] /*0x3ffa*/ str r1, [r0, #0x20] /*0x3ffc*/ ldr r2, [r0, #4] /*0x3ffe*/ bic r2, r2, #3 /*0x4002*/ add.w r2, r2, #1 /*0x4006*/ str r2, [r0, #4] jump_4008: /*0x4008*/ ldr r2, [r0, #0x34] /*0x400a*/ cmp.w r1, r2, lsr #30 /*0x400e*/ bne jump_4008 /*0x4010*/ bx lr /*0x4012*/ .byte 0x0 /*0x4013*/ .byte 0x0 data_4014: /*0x4014*/ .word 0x40088000 data_4018: /*0x4018*/ .word 0x43100000 data_401c: /*0x401c*/ .word 0x40080200 .thumb_func call_4020: /*0x4020*/ push.w {r4, r5, r6, r7, r8, lr} /*0x4024*/ ldr r6, [pc, #0x54] /* data_407c */ /*0x4026*/ ldr r4, [pc, #0x58] /* data_4080 */ /*0x4028*/ movs r5, #0 /*0x402a*/ ldr r0, [r6] /*0x402c*/ cbz r0, jump_4046 /*0x402e*/ ldr r0, [r4, #0xc] /*0x4030*/ cmp r0, #1 /*0x4032*/ bne jump_4042 /*0x4034*/ movs r2, #8 /*0x4036*/ add.w r1, r4, #0x28 /*0x403a*/ bl usb_copy_send /*0x403e*/ str r5, [r4, #0xc] /*0x4040*/ str r5, [r6] jump_4042: /*0x4042*/ pop.w {r4, r5, r6, r7, r8, pc} jump_4046: /*0x4046*/ ldr r6, [pc, #0x3c] /* data_4084 */ /*0x4048*/ ldr r0, [r6] /*0x404a*/ cmp r0, #0 /*0x404c*/ bne jump_4042 /*0x404e*/ add.w r7, r6, #0x14 /*0x4052*/ ldr r0, [r7] /*0x4054*/ cmp r0, #0 /*0x4056*/ beq jump_4042 /*0x4058*/ ldr r0, [r4, #0xc] /*0x405a*/ cmp r0, #1 /*0x405c*/ bne jump_4042 /*0x405e*/ ldr r1, [pc, #0x20] /* data_4080 */ /*0x4060*/ movs r2, #8 /*0x4062*/ adds r1, #0x28 /*0x4064*/ bl usb_copy_send /*0x4068*/ str r5, [r4, #0xc] /*0x406a*/ ldr r0, [r7] /*0x406c*/ mov.w r1, #0xfa0 /*0x4070*/ muls r0, r1, r0 /*0x4072*/ asrs r1, r1, #3 /*0x4074*/ udiv r0, r0, r1 /*0x4078*/ str r0, [r6] /*0x407a*/ b jump_4042 data_407c: /*0x407c*/ .word 0x20000060 data_4080: /*0x4080*/ .word 0x20000008 data_4084: /*0x4084*/ .word 0x200001a0 jump_4088: /*0x4088*/ push.w {r4, r5, r6, r7, r8, lr} /*0x408c*/ ldr r4, [pc, #0x68] /* data_40f8 */ /*0x408e*/ ldr r7, [pc, #0x6c] /* data_40fc */ /*0x4090*/ movs r6, #0 /*0x4092*/ ldr r0, [r4] /*0x4094*/ cbz r0, jump_40b0 /*0x4096*/ ldr r0, [r7, #0x10] /*0x4098*/ cmp r0, #1 /*0x409a*/ bne jump_40ac /*0x409c*/ movs r2, #5 /*0x409e*/ add.w r1, r7, #0x20 /*0x40a2*/ movs r0, #2 /*0x40a4*/ bl usb_copy_send /*0x40a8*/ str r6, [r7, #0x10] /*0x40aa*/ str r6, [r4] jump_40ac: /*0x40ac*/ pop.w {r4, r5, r6, r7, r8, pc} jump_40b0: /*0x40b0*/ ldr r5, [pc, #0x4c] /* data_4100 */ /*0x40b2*/ ldr r0, [r5] /*0x40b4*/ cbz r0, jump_40ce /*0x40b6*/ ldr r0, [r7, #0x10] /*0x40b8*/ cmp r0, #1 /*0x40ba*/ bne jump_40ac /*0x40bc*/ ldr r1, [pc, #0x3c] /* data_40fc */ /*0x40be*/ movs r2, #2 /*0x40c0*/ adds r1, r1, #4 /*0x40c2*/ mov r0, r2 /*0x40c4*/ bl usb_copy_send /*0x40c8*/ str r6, [r7, #0x10] /*0x40ca*/ str r6, [r5] /*0x40cc*/ b jump_40ac jump_40ce: /*0x40ce*/ ldr r2, [pc, #0x34] /* data_4104 */ /*0x40d0*/ ldr r0, [r2, #4] /*0x40d2*/ cmp r0, #0 /*0x40d4*/ bne jump_40ac /*0x40d6*/ add.w r0, r2, #0x14 /*0x40da*/ ldr r0, [r0, #4] /*0x40dc*/ cmp r0, #0 /*0x40de*/ beq jump_40ac /*0x40e0*/ movs r1, #1 /*0x40e2*/ str r1, [r4] /*0x40e4*/ str r1, [r5] /*0x40e6*/ mov.w r1, #0xfa0 /*0x40ea*/ muls r0, r1, r0 /*0x40ec*/ asrs r1, r1, #3 /*0x40ee*/ udiv r0, r0, r1 /*0x40f2*/ str r0, [r2, #4] /*0x40f4*/ b jump_40ac /*0x40f6*/ .byte 0x0 /*0x40f7*/ .byte 0x0 data_40f8: /*0x40f8*/ .word 0x20000064 data_40fc: /*0x40fc*/ .word 0x20000008 data_4100: /*0x4100*/ .word 0x20000068 data_4104: /*0x4104*/ .word 0x200001a0 .thumb_func loc_4108: /*0x4108*/ ldr r1, [pc, #4] /* data_4110 */ /*0x410a*/ movs r0, #1 /*0x410c*/ str r0, [r1, #0xc] /*0x410e*/ bx lr data_4110: /*0x4110*/ .word 0x20000008 .thumb_func loc_4114: /*0x4114*/ ldr r1, [pc, #4] /* data_411c */ /*0x4116*/ movs r0, #1 /*0x4118*/ str r0, [r1, #0x10] /*0x411a*/ bx lr data_411c: /*0x411c*/ .word 0x20000008 .thumb_func func_update_packet: /*0x4120*/ push {r4, lr} /*0x4122*/ ldr r4, [pc, #0x28] /* data_414c */ /*0x4124*/ ldrd r1, r0, [r4, #4] /*0x4128*/ add r1, r0 /*0x412a*/ movs r2, #0x40 /*0x412c*/ movs r0, #4 /*0x412e*/ bl usb_recv /*0x4132*/ ldr r1, [r4, #4] /*0x4134*/ add r0, r1 /*0x4136*/ ubfx r0, r0, #0, #0xa /*0x413a*/ str r0, [r4, #4] /*0x413c*/ ldr r1, [pc, #0x10] /* data_4150 */ /*0x413e*/ movs r0, #1 /*0x4140*/ str r0, [r1, #0x14] /*0x4142*/ pop.w {r4, lr} /*0x4146*/ b.w handle_update_packet /*0x414a*/ .byte 0x0 /*0x414b*/ .byte 0x0 data_414c: /*0x414c*/ .word 0x2000062c data_4150: /*0x4150*/ .word 0x20000008 .thumb_func loc_4154: /*0x4154*/ ldr r1, [pc, #4] /* data_415c */ /*0x4156*/ movs r0, #1 /*0x4158*/ str r0, [r1, #0x18] /*0x415a*/ bx lr data_415c: /*0x415c*/ .word 0x20000008 .thumb_func loc_4160: /*0x4160*/ ldr r1, [pc, #4] /* data_4168 */ /*0x4162*/ movs r0, #1 /*0x4164*/ str r0, [r1, #0x1c] /*0x4166*/ bx lr data_4168: /*0x4168*/ .word 0x20000008 jump_416c: /*0x416c*/ push.w {r4, r5, r6, r7, r8, lr} /*0x4170*/ mov r4, r0 /*0x4172*/ ldrb r2, [r0, #3] /*0x4174*/ ldrb r1, [r0, #2] /*0x4176*/ ldrh r5, [r0, #6] /*0x4178*/ ldrh r0, [r0, #4] /*0x417a*/ cmp r2, #1 /*0x417c*/ bne jump_41bc /*0x417e*/ movs r6, #1 /*0x4180*/ cbz r0, jump_419e /*0x4182*/ cmp r0, #1 /*0x4184*/ beq jump_41a2 /*0x4186*/ cmp r0, #2 /*0x4188*/ bne jump_41bc /*0x418a*/ ldr r0, [pc, #0x50] /* data_41dc */ /*0x418c*/ bl call_30c2 /*0x4190*/ cmp r0, #0 /*0x4192*/ bne jump_41bc /*0x4194*/ ldr r3, [pc, #0x44] /* data_41dc */ /*0x4196*/ movs r0, #0x43 /*0x4198*/ movs r2, #0 /*0x419a*/ ldr r1, [r3, #8] /*0x419c*/ b jump_41c4 jump_419e: /*0x419e*/ ldr r0, [pc, #0x40] /* data_41e0 */ /*0x41a0*/ b jump_41b4 jump_41a2: /*0x41a2*/ cmp r1, #1 /*0x41a4*/ beq jump_41b0 /*0x41a6*/ cmp r1, #2 /*0x41a8*/ bne jump_41bc /*0x41aa*/ ldr r0, [pc, #0x34] /* data_41e0 */ /*0x41ac*/ subs r0, #8 /*0x41ae*/ b jump_41b4 jump_41b0: /*0x41b0*/ ldr r0, [pc, #0x2c] /* data_41e0 */ /*0x41b2*/ subs r0, #0x24 jump_41b4: /*0x41b4*/ strd r0, r5, [r4, #0x1c] /*0x41b8*/ strb.w r6, [r4, #0x24] jump_41bc: /*0x41bc*/ pop.w {r4, r5, r6, r7, r8, pc} jump_41c0: /*0x41c0*/ strb r2, [r1, r0] /*0x41c2*/ subs r0, r0, #1 jump_41c4: /*0x41c4*/ ldr r7, [r3, #4] /*0x41c6*/ cmp r7, r0 /*0x41c8*/ bls jump_41c0 /*0x41ca*/ strd r1, r5, [r4, #0x1c] /*0x41ce*/ strb.w r6, [r4, #0x24] /*0x41d2*/ pop.w {r4, r5, r6, r7, r8, lr} /*0x41d6*/ ldr r0, [pc, #4] /* data_41dc */ /*0x41d8*/ b.w clear_two_words data_41dc: /*0x41dc*/ .word 0x2000061c data_41e0: /*0x41e0*/ .word 0x20000030 .thumb_func set_func_ptrs: /*0x41e4*/ ldr r1, [pc, #0x28] /* data_4210 */ /*0x41e6*/ str r1, [r0] /*0x41e8*/ ldr r1, [pc, #0x28] /* data_4214 */ /*0x41ea*/ str r1, [r0, #8] /*0x41ec*/ ldr r1, [pc, #0x28] /* data_4218 */ /*0x41ee*/ str r1, [r0, #0x18] /*0x41f0*/ ldr r1, [pc, #0x28] /* data_421c */ /*0x41f2*/ str r1, [r0, #0x24] /*0x41f4*/ ldr r1, [pc, #0x28] /* data_4220 */ /*0x41f6*/ str r1, [r0, #0x2c] /*0x41f8*/ ldr r1, [pc, #0x28] /* data_4224 */ /*0x41fa*/ str r1, [r0, #0x30] /*0x41fc*/ ldr r1, [pc, #0x28] /* data_4228 */ /*0x41fe*/ str r1, [r0, #0x38] /*0x4200*/ ldr r1, [pc, #0x28] /* data_422c */ /*0x4202*/ str r1, [r0, #0x3c] /*0x4204*/ ldr r1, [pc, #0x28] /* data_4230 */ /*0x4206*/ str r1, [r0, #0x40] /*0x4208*/ movs r0, #0 /*0x420a*/ b.w loc_4328 /*0x420e*/ .byte 0x0 /*0x420f*/ .byte 0x0 data_4210: /*0x4210*/ .word loc_4234 data_4214: /*0x4214*/ .word loc_4328 data_4218: /*0x4218*/ .word usb_get_descriptor data_421c: /*0x421c*/ .word loc_426c data_4220: /*0x4220*/ .word loc_4108 data_4224: /*0x4224*/ .word loc_4114 data_4228: /*0x4228*/ .word func_update_packet data_422c: /*0x422c*/ .word loc_4154 data_4230: /*0x4230*/ .word loc_4160 .thumb_func loc_4234: /*0x4234*/ ldr r0, [pc, #0x28] /* data_4260 */ /*0x4236*/ push {r4, lr} /*0x4238*/ ldr r1, [r0] /*0x423a*/ cmp r1, #1 /*0x423c*/ bne jump_4254 /*0x423e*/ movs r1, #0 /*0x4240*/ str r1, [r0] /*0x4242*/ ldr r0, [pc, #0x20] /* data_4264 */ /*0x4244*/ movs r1, #0x40 /*0x4246*/ ldrb r0, [r0] /*0x4248*/ sbfx r2, r0, #1, #1 /*0x424c*/ adds r2, r2, #1 /*0x424e*/ ldr r0, [pc, #0x18] /* data_4268 */ /*0x4250*/ bl call_3410 jump_4254: /*0x4254*/ bl call_4020 /*0x4258*/ pop.w {r4, lr} /*0x425c*/ b.w jump_4088 data_4260: /*0x4260*/ .word 0x200001c8 data_4264: /*0x4264*/ .word 0x20000008 data_4268: /*0x4268*/ .word 0x4001a000 .thumb_func loc_426c: /*0x426c*/ push {r4, r5, r6, r7} /*0x426e*/ ldrh r1, [r0] /*0x4270*/ mov.w r2, #0x100 /*0x4274*/ movw r5, #0x921 /*0x4278*/ lsls r6, r2, #1 /*0x427a*/ ldr r4, [pc, #0xa0] /* data_431c */ /*0x427c*/ movs r3, #1 /*0x427e*/ subw r7, r1, #0x921 /*0x4282*/ cmp r1, r5 /*0x4284*/ beq jump_42c8 /*0x4286*/ bgt jump_429e /*0x4288*/ adds.w r1, r7, #0x780 /*0x428c*/ beq jump_42ba /*0x428e*/ cmp r1, r2 /*0x4290*/ beq jump_42c0 /*0x4292*/ cmp r1, r6 /*0x4294*/ bne jump_42b6 /*0x4296*/ ldr r1, [pc, #0x88] /* data_4320 */ jump_4298: /*0x4298*/ strd r1, r3, [r0, #0x1c] /*0x429c*/ b jump_42b2 jump_429e: /*0x429e*/ movs r5, #0 /*0x42a0*/ cmp r7, r2 /*0x42a2*/ beq jump_42fc /*0x42a4*/ cmp r7, r6 /*0x42a6*/ bne jump_42b6 /*0x42a8*/ ldr r2, [pc, #0x74] /* data_4320 */ /*0x42aa*/ ldrb r1, [r0, #2] /*0x42ac*/ subs r2, #8 /*0x42ae*/ str r1, [r2, #8] jump_42b0: /*0x42b0*/ str r5, [r0, #0x20] jump_42b2: /*0x42b2*/ strb.w r3, [r0, #0x24] jump_42b6: /*0x42b6*/ pop {r4, r5, r6, r7} /*0x42b8*/ bx lr jump_42ba: /*0x42ba*/ pop {r4, r5, r6, r7} /*0x42bc*/ b.w jump_416c jump_42c0: /*0x42c0*/ ldrh r1, [r0, #4] /*0x42c2*/ add.w r1, r4, r1, lsl #2 /*0x42c6*/ b jump_4298 jump_42c8: /*0x42c8*/ ldrb r3, [r0, #3] /*0x42ca*/ ldrh r2, [r0, #6] /*0x42cc*/ ldrh r1, [r0, #4] /*0x42ce*/ str r2, [r0, #0x20] /*0x42d0*/ cmp r3, #2 /*0x42d2*/ bne jump_42b6 /*0x42d4*/ cbz r1, jump_42f6 /*0x42d6*/ cmp r1, #4 /*0x42d8*/ bne jump_42b6 /*0x42da*/ ldr r3, [pc, #0x44] /* data_4320 */ /*0x42dc*/ subs r3, r3, #7 jump_42de: /*0x42de*/ str r3, [r0, #0x1c] /*0x42e0*/ ldr r3, [pc, #0x40] /* data_4324 */ /*0x42e2*/ strd r3, r1, [r0, #0x28] /*0x42e6*/ movs r3, #2 /*0x42e8*/ strb.w r3, [r0, #0x24] /*0x42ec*/ ldr r0, [pc, #0x2c] /* data_431c */ /*0x42ee*/ adds r0, #0x28 /*0x42f0*/ str.w r2, [r0, r1, lsl #2] /*0x42f4*/ b jump_42b6 jump_42f6: /*0x42f6*/ ldr r3, [pc, #0x28] /* data_4320 */ /*0x42f8*/ subs r3, #8 /*0x42fa*/ b jump_42de jump_42fc: /*0x42fc*/ ldrh r2, [r0, #4] /*0x42fe*/ ldrb r1, [r0, #3] /*0x4300*/ str.w r1, [r4, r2, lsl #2] /*0x4304*/ mov.w r4, #0xfa0 /*0x4308*/ muls r1, r4, r1 /*0x430a*/ asrs r4, r4, #3 /*0x430c*/ udiv r1, r1, r4 /*0x4310*/ ldr r4, [pc, #8] /* data_431c */ /*0x4312*/ subs r4, #0x14 /*0x4314*/ str.w r1, [r4, r2, lsl #2] /*0x4318*/ b jump_42b0 /*0x431a*/ .byte 0x0 /*0x431b*/ .byte 0x0 data_431c: /*0x431c*/ .word 0x200001b4 data_4320: /*0x4320*/ .word 0x20000010 data_4324: /*0x4324*/ .word loc_4364 .thumb_func loc_4328: /*0x4328*/ ldr r0, [pc, #0x34] /* data_4360 */ /*0x432a*/ push {r4, lr} /*0x432c*/ movs r3, #1 /*0x432e*/ str r3, [r0, #0xc] /*0x4330*/ str r3, [r0, #0x10] /*0x4332*/ movs r1, #0 /*0x4334*/ str r1, [r0, #0x14] /*0x4336*/ str r3, [r0, #0x18] /*0x4338*/ str r3, [r0, #0x1c] /*0x433a*/ add.w r2, r0, #0x28 /*0x433e*/ movs r0, #5 /*0x4340*/ strb r1, [r2] jump_4342: /*0x4342*/ add.w r4, r2, r0 /*0x4346*/ subs r0, r0, #1 /*0x4348*/ strb r1, [r4, #2] /*0x434a*/ bpl jump_4342 /*0x434c*/ ldr r0, [pc, #0x10] /* data_4360 */ /*0x434e*/ movs r2, #2 /*0x4350*/ adds r0, r0, #4 /*0x4352*/ strb r3, [r0] /*0x4354*/ strb r1, [r0, #1] /*0x4356*/ adds r0, #0x1c /*0x4358*/ strb r2, [r0] /*0x435a*/ str.w r1, [r0, #1] /*0x435e*/ pop {r4, pc} data_4360: /*0x4360*/ .word 0x20000008 .thumb_func loc_4364: /*0x4364*/ ldr r2, [pc, #8] /* data_4370 */ /*0x4366*/ movs r1, #1 /*0x4368*/ str.w r1, [r2, r0, lsl #2] /*0x436c*/ bx lr /*0x436e*/ .byte 0x0 /*0x436f*/ .byte 0x0 data_4370: /*0x4370*/ .word 0x200001c8 .thumb_func usb_get_descriptor: /*0x4374*/ ldrb r2, [r0, #3] /*0x4376*/ ldrh r1, [r0, #4] /*0x4378*/ movs r3, #1 /*0x437a*/ cmp r2, #0x21 /*0x437c*/ beq jump_438e /*0x437e*/ cmp r2, #0x22 /*0x4380*/ bne jump_43c6 /*0x4382*/ cbz r1, jump_43b0 /*0x4384*/ cmp r1, #1 /*0x4386*/ beq jump_43b8 /*0x4388*/ cmp r1, #2 /*0x438a*/ bne jump_43c2 /*0x438c*/ b jump_43c8 jump_438e: /*0x438e*/ cbz r1, jump_439a /*0x4390*/ cmp r1, #1 /*0x4392*/ beq jump_43a0 /*0x4394*/ cmp r1, #2 /*0x4396*/ bne jump_43a6 /*0x4398*/ b jump_43aa jump_439a: /*0x439a*/ ldr r1, [r0, #0xc] /*0x439c*/ adds r1, #0x12 /*0x439e*/ b jump_43a4 jump_43a0: /*0x43a0*/ ldr r1, [r0, #0xc] /*0x43a2*/ adds r1, #0x2b jump_43a4: /*0x43a4*/ str r1, [r0, #0x1c] jump_43a6: /*0x43a6*/ movs r1, #9 /*0x43a8*/ b jump_43c0 jump_43aa: /*0x43aa*/ ldr r1, [r0, #0xc] /*0x43ac*/ adds r1, #0x44 /*0x43ae*/ b jump_43a4 jump_43b0: /*0x43b0*/ ldr r1, [pc, #0x20] /* data_43d4 */ /*0x43b2*/ str r1, [r0, #0x1c] /*0x43b4*/ movs r1, #0x40 /*0x43b6*/ b jump_43c0 jump_43b8: /*0x43b8*/ ldr r1, [pc, #0x18] /* data_43d4 */ /*0x43ba*/ adds r1, #0x40 /*0x43bc*/ str r1, [r0, #0x1c] /*0x43be*/ movs r1, #0x65 jump_43c0: /*0x43c0*/ str r1, [r0, #0x20] jump_43c2: /*0x43c2*/ strb.w r3, [r0, #0x24] jump_43c6: /*0x43c6*/ bx lr jump_43c8: /*0x43c8*/ ldr r1, [pc, #8] /* data_43d4 */ /*0x43ca*/ adds r1, #0xa8 /*0x43cc*/ str r1, [r0, #0x1c] /*0x43ce*/ movs r1, #0x22 /*0x43d0*/ b jump_43c0 /*0x43d2*/ .byte 0x0 /*0x43d3*/ .byte 0x0 data_43d4: /*0x43d4*/ .word usb_report0_desc .thumb_func call_43d8: /*0x43d8*/ ldrb.w r0, [r0, #0x34] /*0x43dc*/ ubfx r0, r0, #1, #1 /*0x43e0*/ bx lr .thumb_func usb_entry: /*0x43e2*/ push.w {r4, r5, r6, r7, r8, lr} /*0x43e6*/ mov r4, r0 /*0x43e8*/ bl call_4868 /*0x43ec*/ mov r5, r0 /*0x43ee*/ lsls r0, r0, #0x1e /*0x43f0*/ bpl jump_4400 /*0x43f2*/ ldr r1, [r4, #0x4c] /*0x43f4*/ cbz r1, jump_43fa /*0x43f6*/ ldr r0, [r4, #0x50] /*0x43f8*/ blx r1 jump_43fa: /*0x43fa*/ movs r0, #2 /*0x43fc*/ bl call_4628 jump_4400: /*0x4400*/ lsls r0, r5, #0x1b /*0x4402*/ bpl jump_4422 /*0x4404*/ movs r0, #0x10 /*0x4406*/ bl call_4628 /*0x440a*/ ldrb.w r0, [r4, #0x32] /*0x440e*/ cmp r0, #2 /*0x4410*/ blo jump_4422 /*0x4412*/ bl call_488c /*0x4416*/ ldrb r0, [r4, #0x32]! /*0x441a*/ strb r0, [r4, #1] /*0x441c*/ movs r0, #3 /*0x441e*/ strb r0, [r4], #-0x32 jump_4422: /*0x4422*/ lsls r0, r5, #0x1d /*0x4424*/ mov.w r7, #0 /*0x4428*/ bpl jump_4482 /*0x442a*/ add.w r4, r4, #0x18 /*0x442e*/ mov.w r0, #-1 /*0x4432*/ ldr r6, [r4, #0x6c] /*0x4434*/ str r0, [r4, #8] /*0x4436*/ strb r7, [r4, #0x18] /*0x4438*/ strb r7, [r4, #0x19] /*0x443a*/ ldrb r0, [r4, #0x1c] /*0x443c*/ bic r0, r0, #2 /*0x4440*/ strb r0, [r4, #0x1c] /*0x4442*/ ldr r1, [r4, #-0xc] /*0x4446*/ ldrb r1, [r1, #7] /*0x4448*/ ubfx r1, r1, #6, #1 /*0x444c*/ bfi r0, r1, #0, #1 /*0x4450*/ strb r0, [r4, #0x1c] /*0x4452*/ mov.w r0, #4 /*0x4456*/ strb r0, [r4, #0x1a] /*0x4458*/ str r7, [r4, #0x20] /*0x445a*/ bl call_4678 /*0x445e*/ bl call_4898 /*0x4462*/ movs r0, #0 /*0x4464*/ ldr r1, [r4, #0x6c] /*0x4466*/ bl call_4730 /*0x446a*/ ldr r0, [r6] /*0x446c*/ bl call_4838 /*0x4470*/ ldr r1, [r4, #0x2c] /*0x4472*/ sub.w r4, r4, #0x18 /*0x4476*/ cbz r1, jump_447c /*0x4478*/ ldr r0, [r4, #0x48] /*0x447a*/ blx r1 jump_447c: /*0x447c*/ movs r0, #4 /*0x447e*/ bl call_4628 jump_4482: /*0x4482*/ lsls r0, r5, #0x1c /*0x4484*/ bpl jump_4498 /*0x4486*/ bl call_4898 /*0x448a*/ ldrb.w r0, [r4, #0x33] /*0x448e*/ strb.w r0, [r4, #0x32] /*0x4492*/ movs r0, #8 /*0x4494*/ bl call_4628 jump_4498: /*0x4498*/ lsls r0, r5, #0x17 /*0x449a*/ mov.w r6, #0x100 /*0x449e*/ bpl jump_4596 /*0x44a0*/ movs r0, #0 /*0x44a2*/ bl call_4710 /*0x44a6*/ mov r5, r0 /*0x44a8*/ lsls r0, r0, #0x16 /*0x44aa*/ bpl jump_44f2 /*0x44ac*/ mov r0, r4 /*0x44ae*/ bl call_4938 /*0x44b2*/ strb.w r7, [r4, #0x24] /*0x44b6*/ str r7, [r4, #0x20] /*0x44b8*/ ldrb r0, [r4] /*0x44ba*/ ands r0, r0, #0x60 /*0x44be*/ beq jump_44c6 /*0x44c0*/ cmp r0, #0x20 /*0x44c2*/ bne jump_44d6 /*0x44c4*/ b jump_44ce jump_44c6: /*0x44c6*/ mov r0, r4 /*0x44c8*/ bl call_4ba0 /*0x44cc*/ b jump_44d6 jump_44ce: /*0x44ce*/ ldr r1, [r4, #0x60] /*0x44d0*/ cbz r1, jump_44d6 /*0x44d2*/ mov r0, r4 /*0x44d4*/ blx r1 jump_44d6: /*0x44d6*/ ldrb.w r0, [r4, #0x24] /*0x44da*/ cmp r0, #1 /*0x44dc*/ beq jump_450e /*0x44de*/ cmp r0, #2 /*0x44e0*/ beq jump_4520 /*0x44e2*/ movs r0, #0 /*0x44e4*/ bl call_47d0 jump_44e8: /*0x44e8*/ mov.w r1, #0x200 /*0x44ec*/ movs r0, #0 /*0x44ee*/ bl call_46a0 jump_44f2: /*0x44f2*/ lsls r0, r5, #0x1e /*0x44f4*/ bpl jump_4554 /*0x44f6*/ movs r1, #2 /*0x44f8*/ movs r0, #0 /*0x44fa*/ bl call_46a0 /*0x44fe*/ ldr r0, [r4, #0x20] /*0x4500*/ adds r0, r0, #1 /*0x4502*/ beq jump_4554 /*0x4504*/ ldrb.w r0, [r4, #0x24] /*0x4508*/ cmp r0, #2 /*0x450a*/ beq jump_452c /*0x450c*/ b jump_4554 jump_450e: /*0x450e*/ ldrh r0, [r4, #6] /*0x4510*/ ldr r1, [r4, #0x20] /*0x4512*/ cmp r1, r0 /*0x4514*/ ble jump_4518 /*0x4516*/ str r0, [r4, #0x20] jump_4518: /*0x4518*/ mov r0, r4 /*0x451a*/ bl call_4b28 /*0x451e*/ b jump_44e8 jump_4520: /*0x4520*/ movs r2, #0 /*0x4522*/ mov r1, r2 /*0x4524*/ mov r0, r2 /*0x4526*/ bl usb_copy_send /*0x452a*/ b jump_44e8 jump_452c: /*0x452c*/ movs r2, #0x40 /*0x452e*/ movs r0, #0 /*0x4530*/ ldr r1, [r4, #0x1c] /*0x4532*/ bl usb_recv /*0x4536*/ ldr r1, [r4, #0x1c] /*0x4538*/ add r1, r0 /*0x453a*/ str r1, [r4, #0x1c] /*0x453c*/ ldr r1, [r4, #0x20] /*0x453e*/ subs r0, r1, r0 /*0x4540*/ str r0, [r4, #0x20] /*0x4542*/ bne jump_4554 /*0x4544*/ movs r0, #1 /*0x4546*/ strb.w r0, [r4, #0x24] /*0x454a*/ ldr r1, [r4, #0x28] /*0x454c*/ cbz r1, jump_4554 /*0x454e*/ ldr r0, [r4, #0x2c] /*0x4550*/ blx r1 /*0x4552*/ str r7, [r4, #0x28] jump_4554: /*0x4554*/ lsls r0, r5, #0x1b /*0x4556*/ bpl jump_4566 /*0x4558*/ mov r0, r4 /*0x455a*/ bl call_4b28 /*0x455e*/ movs r1, #0x10 /*0x4560*/ movs r0, #0 /*0x4562*/ bl call_46a0 jump_4566: /*0x4566*/ mov r0, r6 /*0x4568*/ bl call_4628 /*0x456c*/ b jump_4596 jump_456e: /*0x456e*/ mov r0, r5 /*0x4570*/ bl call_4710 /*0x4574*/ tst.w r0, #0x12 /*0x4578*/ beq jump_4596 /*0x457a*/ movs r1, #0x12 /*0x457c*/ mov r0, r5 /*0x457e*/ bl call_46a0 /*0x4582*/ lsl.w r0, r6, r5 /*0x4586*/ bl call_4628 /*0x458a*/ add.w r0, r4, r5, lsl #2 /*0x458e*/ ldr r1, [r0, #0x64] /*0x4590*/ cbz r1, jump_4596 /*0x4592*/ mov r0, r5 /*0x4594*/ blx r1 jump_4596: /*0x4596*/ bl call_4868 /*0x459a*/ bl call_4848 /*0x459e*/ mov r5, r0 /*0x45a0*/ adds r0, r0, #1 /*0x45a2*/ bne jump_456e /*0x45a4*/ pop.w {r4, r5, r6, r7, r8, pc} .thumb_func call_45a8: /*0x45a8*/ add.w r0, r0, #0x30 /*0x45ac*/ movs r1, #2 /*0x45ae*/ strb r1, [r0, #2] /*0x45b0*/ ldr r0, [r0, #0x54] /*0x45b2*/ b.w jump_4878 .thumb_func call_45b6: /*0x45b6*/ ldrb.w r0, [r0, #0x32] /*0x45ba*/ cmp r0, #3 /*0x45bc*/ beq jump_45c2 /*0x45be*/ movs r0, #0 /*0x45c0*/ bx lr jump_45c2: /*0x45c2*/ movs r0, #1 /*0x45c4*/ bx lr .thumb_func call_45c6: /*0x45c6*/ push {r4, lr} /*0x45c8*/ mov r4, r0 /*0x45ca*/ ldr.w r0, [r0, #0x84] /*0x45ce*/ bl call_48a4 /*0x45d2*/ ldrb.w r0, [r4, #0x32] /*0x45d6*/ cmp r0, #3 /*0x45d8*/ bne jump_45e6 /*0x45da*/ ldr.w r1, [r4, #0x88] /*0x45de*/ cbz r1, jump_45e6 /*0x45e0*/ ldr.w r0, [r4, #0x8c] /*0x45e4*/ blx r1 jump_45e6: /*0x45e6*/ ldr r1, [r4, #0x3c] /*0x45e8*/ cmp r1, #0 /*0x45ea*/ beq jump_45fc /*0x45ec*/ ldrb.w r0, [r4, #0x32] /*0x45f0*/ cmp r0, #6 /*0x45f2*/ bne jump_45fc /*0x45f4*/ ldr r0, [r4, #0x40] /*0x45f6*/ pop.w {r4, lr} /*0x45fa*/ bx r1 jump_45fc: /*0x45fc*/ pop {r4, pc} .thumb_func call_45fe: /*0x45fe*/ push {r4, lr} /*0x4600*/ bl call_4898 /*0x4604*/ pop.w {r4, lr} /*0x4608*/ b.w jump_4948 .thumb_func call_460c: /*0x460c*/ ldr r1, [pc, #0x10] /* data_4620 */ /*0x460e*/ str r1, [r0] /*0x4610*/ adds r1, #0x14 /*0x4612*/ str r1, [r0, #4] /*0x4614*/ ldr r1, [pc, #0xc] /* data_4624 */ /*0x4616*/ str r1, [r0, #8] /*0x4618*/ movs r1, #4 /*0x461a*/ str r1, [r0, #0xc] /*0x461c*/ bx lr /*0x461e*/ .byte 0x0 /*0x461f*/ .byte 0x0 data_4620: /*0x4620*/ .word device_desc data_4624: /*0x4624*/ .word 0x20000038 .thumb_func call_4628: /*0x4628*/ ldr r1, [pc, #4] /* data_4630 */ /*0x462a*/ str r0, [r1, #8] /*0x462c*/ bx lr /*0x462e*/ .byte 0x0 /*0x462f*/ .byte 0x0 data_4630: /*0x4630*/ .word 0x4004e000 .thumb_func usb_init: /*0x4634*/ ldr r1, [pc, #0x34] /* data_466c */ /*0x4636*/ push {r4, lr} /*0x4638*/ sub.w r0, r1, #0xc /*0x463c*/ str r1, [r0] /*0x463e*/ ldr r1, [pc, #0x30] /* data_4670 */ /*0x4640*/ str r1, [r0, #4] /*0x4642*/ subs r0, #0x7c /*0x4644*/ bl call_460c /*0x4648*/ ldr r0, [pc, #0x20] /* data_466c */ /*0x464a*/ subs r0, #0x54 /*0x464c*/ bl set_func_ptrs /*0x4650*/ ldr r0, [pc, #0x18] /* data_466c */ /*0x4652*/ subs r0, #0x90 /*0x4654*/ bl call_45a8 /*0x4658*/ ldr r1, [pc, #0x18] /* data_4674 */ /*0x465a*/ mov.w r0, #0x200000 /*0x465e*/ str.w r0, [r1, #0x100] /*0x4662*/ pop.w {r4, lr} /*0x4666*/ b.w jump_3638 /*0x466a*/ .byte 0x0 /*0x466b*/ .byte 0x0 data_466c: /*0x466c*/ .word 0x2000015c data_4670: /*0x4670*/ .word loc_3f58 data_4674: /*0x4674*/ .word 0xe000e004 .thumb_func call_4678: /*0x4678*/ movs r1, #1 /*0x467a*/ lsls r0, r1, #0xe /*0x467c*/ b.w jump_3f1c .thumb_func call_4680: /*0x4680*/ push {r4, lr} /*0x4682*/ bl usb_get_ep_reg /*0x4686*/ ldr r1, [r0] /*0x4688*/ and r1, r1, #9 /*0x468c*/ str r1, [r0] /*0x468e*/ pop {r4, pc} .thumb_func call_4690: /*0x4690*/ push {r4, lr} /*0x4692*/ bl usb_get_ep_reg /*0x4696*/ ldr r1, [r0] /*0x4698*/ and r1, r1, #0x24 /*0x469c*/ str r1, [r0] /*0x469e*/ pop {r4, pc} .thumb_func call_46a0: /*0x46a0*/ push {r4, lr} /*0x46a2*/ mov r4, r1 /*0x46a4*/ bl usb_get_ep_reg /*0x46a8*/ str r4, [r0, #8] /*0x46aa*/ pop {r4, pc} .thumb_func call_46ac: /*0x46ac*/ push {r4, lr} /*0x46ae*/ bl usb_get_ep_reg /*0x46b2*/ ldr r0, [r0, #0x10] /*0x46b4*/ ldr r1, [pc, #8] /* data_46c0 */ /*0x46b6*/ ubfx r0, r0, #0, #0xa /*0x46ba*/ add r0, r1 /*0x46bc*/ pop {r4, pc} /*0x46be*/ .byte 0x0 /*0x46bf*/ .byte 0x0 data_46c0: /*0x46c0*/ .word 0x4004e400 .thumb_func call_46c4: /*0x46c4*/ push {r4, r5, r6, lr} /*0x46c6*/ mov r5, r0 /*0x46c8*/ bl usb_get_ep_reg /*0x46cc*/ mov r4, r0 /*0x46ce*/ mov r0, r5 /*0x46d0*/ bl call_46e8 /*0x46d4*/ ldr r1, [r4, #0x10] /*0x46d6*/ ubfx r1, r1, #0, #0xa /*0x46da*/ add r0, r1 /*0x46dc*/ ldr r1, [pc, #4] /* data_46e4 */ /*0x46de*/ add r0, r1 /*0x46e0*/ pop {r4, r5, r6, pc} /*0x46e2*/ .byte 0x0 /*0x46e3*/ .byte 0x0 data_46e4: /*0x46e4*/ .word 0x4004e400 .thumb_func call_46e8: /*0x46e8*/ push {r4, lr} /*0x46ea*/ bl usb_get_ep_reg /*0x46ee*/ ldr r0, [r0, #0x10] /*0x46f0*/ ubfx r0, r0, #0xa, #0xa /*0x46f4*/ pop {r4, pc} .thumb_func call_46f6: /*0x46f6*/ push {r4, lr} /*0x46f8*/ bl usb_get_ep_reg /*0x46fc*/ ldr r1, [r0, #0x10] /*0x46fe*/ ldr r0, [r0] /*0x4700*/ lsls r1, r1, #3 /*0x4702*/ bpl jump_470a /*0x4704*/ ubfx r0, r0, #2, #1 /*0x4708*/ pop {r4, pc} jump_470a: /*0x470a*/ ubfx r0, r0, #5, #1 /*0x470e*/ pop {r4, pc} .thumb_func call_4710: /*0x4710*/ push {r4, lr} /*0x4712*/ bl usb_get_ep_reg /*0x4716*/ ldr r1, [r0, #4] /*0x4718*/ ldr r0, [r0, #8] /*0x471a*/ ands r0, r1 /*0x471c*/ pop {r4, pc} .thumb_func call_471e: /*0x471e*/ push {r4, lr} /*0x4720*/ mov r4, r1 /*0x4722*/ bl usb_get_ep_reg /*0x4726*/ ldr r0, [r0, #0xc] /*0x4728*/ lsrs r0, r4 /*0x472a*/ ubfx r0, r0, #0, #9 /*0x472e*/ pop {r4, pc} .thumb_func call_4730: /*0x4730*/ push {r4, r5, r6, lr} /*0x4732*/ mov r4, r1 /*0x4734*/ mov r5, r0 /*0x4736*/ bl usb_get_ep_reg /*0x473a*/ add.w r1, r4, r5, lsl #3 /*0x473e*/ ldr r2, [r1, #4] /*0x4740*/ str r2, [r0, #0x10] /*0x4742*/ ldr r1, [r1, #8] /*0x4744*/ str r1, [r0, #4] /*0x4746*/ mov.w r1, #-1 /*0x474a*/ str r1, [r0, #8] /*0x474c*/ mov r0, r5 /*0x474e*/ pop.w {r4, r5, r6, lr} /*0x4752*/ b.w jump_47c0 .thumb_func usb_read_ep_buff: /*0x4756*/ push.w {r4, r5, r6, r7, r8, lr} /*0x475a*/ mov r7, r1 /*0x475c*/ mov r6, r2 /*0x475e*/ movs r5, r0 /*0x4760*/ beq jump_4786 /*0x4762*/ movs r1, #0 jump_4764: /*0x4764*/ bl call_471e /*0x4768*/ mov r4, r0 /*0x476a*/ cmp r0, r6 /*0x476c*/ bhi jump_4780 /*0x476e*/ mov r0, r5 /*0x4770*/ cbz r5, jump_478a /*0x4772*/ bl call_46ac jump_4776: /*0x4776*/ adds r1, r4, #3 /*0x4778*/ lsrs r2, r1, #2 /*0x477a*/ mov r1, r7 /*0x477c*/ bl call_4d08 jump_4780: /*0x4780*/ mov r0, r4 /*0x4782*/ pop.w {r4, r5, r6, r7, r8, pc} jump_4786: /*0x4786*/ movs r1, #0x10 /*0x4788*/ b jump_4764 jump_478a: /*0x478a*/ bl call_46c4 /*0x478e*/ b jump_4776 .thumb_func usb_recv: /*0x4790*/ push.w {r4, r5, r6, r7, r8, lr} /*0x4794*/ mov r7, r1 /*0x4796*/ mov r5, r2 /*0x4798*/ mov r6, r0 /*0x479a*/ bl usb_get_ep_reg /*0x479e*/ mov r4, r0 /*0x47a0*/ movs r0, #0 /*0x47a2*/ cbz r5, jump_47b4 /*0x47a4*/ mov r2, r5 /*0x47a6*/ mov r1, r7 /*0x47a8*/ mov r0, r6 /*0x47aa*/ bl usb_read_ep_buff /*0x47ae*/ cbnz r0, jump_47b4 /*0x47b0*/ cmp r5, #0 /*0x47b2*/ bne jump_47bc jump_47b4: /*0x47b4*/ ldr r1, [r4] /*0x47b6*/ and r1, r1, #0x10 /*0x47ba*/ str r1, [r4] jump_47bc: /*0x47bc*/ pop.w {r4, r5, r6, r7, r8, pc} jump_47c0: /*0x47c0*/ push {r4, lr} /*0x47c2*/ bl usb_get_ep_reg /*0x47c6*/ ldr r1, [r0] /*0x47c8*/ and r1, r1, #0x19 /*0x47cc*/ str r1, [r0] /*0x47ce*/ pop {r4, pc} .thumb_func call_47d0: /*0x47d0*/ push {r4, lr} /*0x47d2*/ bl usb_get_ep_reg /*0x47d6*/ movs r1, #4 /*0x47d8*/ str r1, [r0] /*0x47da*/ pop {r4, pc} .thumb_func call_47dc: /*0x47dc*/ push {r4, lr} /*0x47de*/ bl usb_get_ep_reg /*0x47e2*/ movs r1, #0x40 /*0x47e4*/ str r1, [r0, #8] /*0x47e6*/ ldr r2, [r0] /*0x47e8*/ movs r1, #0x24 /*0x47ea*/ bics r1, r2 /*0x47ec*/ str r1, [r0] /*0x47ee*/ pop {r4, pc} .thumb_func usb_copy_send: /*0x47f0*/ push.w {r4, r5, r6, r7, r8, lr} /*0x47f4*/ mov r8, r1 /*0x47f6*/ mov r4, r2 /*0x47f8*/ mov r7, r0 /*0x47fa*/ bl call_46e8 /*0x47fe*/ mov r6, r0 /*0x4800*/ mov r0, r7 /*0x4802*/ bl usb_get_ep_reg /*0x4806*/ mov r5, r0 /*0x4808*/ movs r1, #0 /*0x480a*/ mov r0, r7 /*0x480c*/ bl call_471e /*0x4810*/ cmp r4, r6 /*0x4812*/ bhi jump_4816 /*0x4814*/ cbz r0, jump_481c jump_4816: /*0x4816*/ movs r0, #0 jump_4818: /*0x4818*/ pop.w {r4, r5, r6, r7, r8, pc} jump_481c: /*0x481c*/ mov r0, r7 /*0x481e*/ bl call_46ac /*0x4822*/ mov r1, r0 /*0x4824*/ adds r0, r4, #3 /*0x4826*/ lsrs r2, r0, #2 /*0x4828*/ mov r0, r8 /*0x482a*/ bl call_4d08 /*0x482e*/ str r4, [r5, #0xc] /*0x4830*/ movs r0, #2 /*0x4832*/ str r0, [r5] /*0x4834*/ mov r0, r4 /*0x4836*/ b jump_4818 .thumb_func call_4838: /*0x4838*/ ldr r1, [pc, #8] /* data_4844 */ /*0x483a*/ ldr r2, [r1, #4] /*0x483c*/ orrs r2, r0 /*0x483e*/ str r2, [r1, #4] /*0x4840*/ bx lr /*0x4842*/ .byte 0x0 /*0x4843*/ .byte 0x0 data_4844: /*0x4844*/ .word 0x4004e000 .thumb_func call_4848: /*0x4848*/ mov r3, r0 /*0x484a*/ movs r1, #7 jump_484c: /*0x484c*/ add.w r2, r1, #8 /*0x4850*/ lsr.w r0, r3, r2 /*0x4854*/ lsls r0, r0, #0x1f /*0x4856*/ beq jump_485c /*0x4858*/ sxtb r0, r1 /*0x485a*/ bx lr jump_485c: /*0x485c*/ subs r1, r1, #1 /*0x485e*/ cmp r1, #0 /*0x4860*/ bgt jump_484c /*0x4862*/ mov.w r0, #-1 /*0x4866*/ bx lr .thumb_func call_4868: /*0x4868*/ ldr r0, [pc, #8] /* data_4874 */ /*0x486a*/ ldr r1, [r0, #4] /*0x486c*/ ldr r0, [r0, #8] /*0x486e*/ ands r0, r1 /*0x4870*/ bx lr /*0x4872*/ .byte 0x0 /*0x4873*/ .byte 0x0 data_4874: /*0x4874*/ .word 0x4004e000 jump_4878: /*0x4878*/ push {lr} /*0x487a*/ bl call_48e0 /*0x487e*/ ldr r1, [pc, #8] /* data_4888 */ /*0x4880*/ movs r0, #0 /*0x4882*/ str r0, [r1] /*0x4884*/ pop {pc} /*0x4886*/ .byte 0x0 /*0x4887*/ .byte 0x0 data_4888: /*0x4888*/ .word 0x4004e000 .thumb_func call_488c: /*0x488c*/ ldr r1, [pc, #4] /* data_4894 */ /*0x488e*/ movs r0, #0xc /*0x4890*/ str r0, [r1] /*0x4892*/ bx lr data_4894: /*0x4894*/ .word 0x4004e000 .thumb_func call_4898: /*0x4898*/ ldr r1, [pc, #4] /* data_48a0 */ /*0x489a*/ movs r0, #0 /*0x489c*/ str r0, [r1] /*0x489e*/ bx lr data_48a0: /*0x48a0*/ .word 0x4004e000 .thumb_func call_48a4: /*0x48a4*/ push {r4, lr} /*0x48a6*/ mov r4, r0 /*0x48a8*/ ldr r0, [pc, #0x2c] /* data_48d8 */ /*0x48aa*/ ldr r1, [r0] /*0x48ac*/ cmp r1, #1 /*0x48ae*/ bne jump_48d4 /*0x48b0*/ movs r1, #0 /*0x48b2*/ str r1, [r0] /*0x48b4*/ ldr r1, [pc, #0x24] /* data_48dc */ /*0x48b6*/ movs r0, #2 /*0x48b8*/ str r0, [r1] /*0x48ba*/ movs r0, #0xc /*0x48bc*/ str r0, [r1] /*0x48be*/ mov.w r0, #-1 /*0x48c2*/ str r0, [r1, #8] /*0x48c4*/ movs r0, #0 /*0x48c6*/ bl call_3ef8 /*0x48ca*/ ldr r0, [r4] /*0x48cc*/ pop.w {r4, lr} /*0x48d0*/ b.w call_4838 jump_48d4: /*0x48d4*/ pop {r4, pc} /*0x48d6*/ .byte 0x0 /*0x48d7*/ .byte 0x0 data_48d8: /*0x48d8*/ .word 0x200000c8 data_48dc: /*0x48dc*/ .word 0x4004e000 .thumb_func call_48e0: /*0x48e0*/ movw r1, #0x7f1d /*0x48e4*/ str r1, [r0] /*0x48e6*/ ldr r1, [pc, #0x34] /* data_491c */ /*0x48e8*/ str r1, [r0, #4] /*0x48ea*/ movw r1, #0x212 /*0x48ee*/ str r1, [r0, #8] /*0x48f0*/ ldr r1, [pc, #0x2c] /* data_4920 */ /*0x48f2*/ str r1, [r0, #0xc] /*0x48f4*/ ldr r2, [pc, #0x2c] /* data_4924 */ /*0x48f6*/ movs r1, #0x10 /*0x48f8*/ strd r1, r2, [r0, #0x10] /*0x48fc*/ ldr r2, [pc, #0x28] /* data_4928 */ /*0x48fe*/ strd r1, r2, [r0, #0x18] /*0x4902*/ ldr r2, [pc, #0x28] /* data_492c */ /*0x4904*/ strd r1, r2, [r0, #0x20] /*0x4908*/ movs r2, #2 /*0x490a*/ str r2, [r0, #0x28] /*0x490c*/ ldr r2, [pc, #0x20] /* data_4930 */ /*0x490e*/ strd r2, r1, [r0, #0x2c] /*0x4912*/ ldr r2, [pc, #0x20] /* data_4934 */ /*0x4914*/ strd r2, r1, [r0, #0x34] /*0x4918*/ bx lr /*0x491a*/ .byte 0x0 /*0x491b*/ .byte 0x0 data_491c: /*0x491c*/ .word 0x80010008 data_4920: /*0x4920*/ .word 0x91002088 data_4924: /*0x4924*/ .word 0x92008090 data_4928: /*0x4928*/ .word 0x930100b0 data_492c: /*0x492c*/ .word 0x840100f0 data_4930: /*0x4930*/ .word 0x95002130 data_4934: /*0x4934*/ .word 0x96010138 .thumb_func call_4938: /*0x4938*/ ldr r1, [pc, #8] /* data_4944 */ /*0x493a*/ ldr r2, [r1] /*0x493c*/ str r2, [r0] /*0x493e*/ ldr r1, [r1, #4] /*0x4940*/ str r1, [r0, #4] /*0x4942*/ bx lr data_4944: /*0x4944*/ .word 0x4004e400 jump_4948: /*0x4948*/ ldr r0, [pc, #8] /* data_4954 */ /*0x494a*/ ldr r1, [r0] /*0x494c*/ orr r1, r1, #0x20 /*0x4950*/ str r1, [r0] /*0x4952*/ bx lr data_4954: /*0x4954*/ .word 0x4004e000 .thumb_func call_4958: /*0x4958*/ ldr r1, [pc, #8] /* data_4964 */ /*0x495a*/ mov.w r2, #0x100 /*0x495e*/ str r2, [r1] /*0x4960*/ str r0, [r1, #0x10] /*0x4962*/ bx lr data_4964: /*0x4964*/ .word 0x4004e000 .thumb_func usb_intr: /*0x4968*/ ldr r0, [pc, #4] /* data_4970 */ /*0x496a*/ b.w usb_entry /*0x496e*/ .byte 0x0 /*0x496f*/ .byte 0x0 data_4970: /*0x4970*/ .word 0x200000cc .thumb_func call_4974: /*0x4974*/ ldr r0, [pc, #0x38] /* data_49b0 */ /*0x4976*/ ldr r1, [r0, #0x30] /*0x4978*/ orr r1, r1, #0x10 /*0x497c*/ str r1, [r0, #0x30] /*0x497e*/ ldr r0, [pc, #0x34] /* data_49b4 */ /*0x4980*/ ldr r1, [r0, #4] /*0x4982*/ ubfx r1, r1, #0, #0xc /*0x4986*/ orr r1, r1, #0x2000 /*0x498a*/ str r1, [r0, #4] /*0x498c*/ ldr r1, [r0, #8] /*0x498e*/ ubfx r1, r1, #0, #0xc /*0x4992*/ orr r1, r1, #0x5000 /*0x4996*/ str r1, [r0, #8] /*0x4998*/ ldr r1, [r0, #4] /*0x499a*/ and r1, r1, #0xf000 /*0x499e*/ orr r1, r1, #0x7d0 /*0x49a2*/ str r1, [r0, #4] /*0x49a4*/ ldr r1, [pc, #0x10] /* data_49b8 */ /*0x49a6*/ str r1, [r0] /*0x49a8*/ movw r1, #0xca35 /*0x49ac*/ str r1, [r0, #0x10] /*0x49ae*/ bx lr data_49b0: /*0x49b0*/ .word 0x40088000 data_49b4: /*0x49b4*/ .word 0x40068000 data_49b8: /*0x49b8*/ .word 0x5fa00001 .thumb_func call_49bc: /*0x49bc*/ ldr r1, [pc, #8] /* data_49c8 */ /*0x49be*/ ldr r0, [pc, #4] /* data_49c4 */ /*0x49c0*/ str r0, [r1] /*0x49c2*/ bx lr data_49c4: /*0x49c4*/ .word 0x5fa00001 data_49c8: /*0x49c8*/ .word 0x40068000 .thumb_func call_49cc: /*0x49cc*/ ldr r1, [pc, #0x10] /* data_49e0 */ /*0x49ce*/ movs r2, #0 /*0x49d0*/ str r2, [r1, #8] /*0x49d2*/ add.w r0, r0, r0, lsl #3 /*0x49d6*/ lsls r0, r0, #3 jump_49d8: /*0x49d8*/ ldr r2, [r1, #8] /*0x49da*/ cmp r2, r0 /*0x49dc*/ blo jump_49d8 /*0x49de*/ bx lr data_49e0: /*0x49e0*/ .word 0x40076000 .thumb_func nop_cmd: /*0x49e4*/ movs r0, #0x4f /*0x49e6*/ bx lr .thumb_func flash_crc_cmd: /*0x49e8*/ push {r4, lr} /*0x49ea*/ bl crc16 /*0x49ee*/ mov r4, r0 /*0x49f0*/ mov r1, r0 /*0x49f2*/ ldr r0, [pc, #0x10] /* data_4a04 */ /*0x49f4*/ bl call_3090 /*0x49f8*/ lsrs r1, r4, #8 /*0x49fa*/ ldr r0, [pc, #8] /* data_4a04 */ /*0x49fc*/ bl call_3090 /*0x4a00*/ movs r0, #0x4f /*0x4a02*/ pop {r4, pc} data_4a04: /*0x4a04*/ .word 0x2000061c .thumb_func flash_erase_cmd: /*0x4a08*/ push {r4, r5, r6, lr} /*0x4a0a*/ mov r5, r2 /*0x4a0c*/ cmp r0, #0xa /*0x4a0e*/ beq jump_4a16 /*0x4a10*/ cmp.w r1, #0xf800 /*0x4a14*/ bhs jump_4a1a jump_4a16: /*0x4a16*/ movs r0, #0x46 /*0x4a18*/ pop {r4, r5, r6, pc} jump_4a1a: /*0x4a1a*/ mov r4, r1 /*0x4a1c*/ b jump_4a28 jump_4a1e: /*0x4a1e*/ mov r0, r4 /*0x4a20*/ bl flash_page_erase /*0x4a24*/ add.w r4, r4, #0x400 jump_4a28: /*0x4a28*/ cmp r4, r5 /*0x4a2a*/ bls jump_4a1e /*0x4a2c*/ movs r0, #0x4f /*0x4a2e*/ pop {r4, r5, r6, pc} .thumb_func flash_read_write_cmd: /*0x4a30*/ push.w {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} /*0x4a34*/ movs r6, #0 /*0x4a36*/ mov r8, r0 /*0x4a38*/ mov r4, r1 /*0x4a3a*/ mov sb, r2 /*0x4a3c*/ ldr r7, [pc, #0xc0] /* data_4b00 */ /*0x4a3e*/ mov r5, r6 /*0x4a40*/ ldr.w fp, [pc, #0xc0] /* data_4b04 */ /*0x4a44*/ mov sl, r6 /*0x4a46*/ bl call_320c /*0x4a4a*/ lsls r0, r0, #0x1f /*0x4a4c*/ bne jump_4a52 /*0x4a4e*/ mov.w sl, #1 jump_4a52: /*0x4a52*/ cmp.w r8, #1 /*0x4a56*/ bne jump_4af6 /*0x4a58*/ cmp.w sl, #1 /*0x4a5c*/ bne jump_4a88 /*0x4a5e*/ sub.w r0, sb, r4 /*0x4a62*/ adds r0, r0, #1 /*0x4a64*/ b jump_4a6e jump_4a66: /*0x4a66*/ ldr r1, [r4, r6] /*0x4a68*/ adds r1, r1, #1 /*0x4a6a*/ bne jump_4ab2 /*0x4a6c*/ adds r6, r6, #4 jump_4a6e: /*0x4a6e*/ cmp r0, r6 /*0x4a70*/ bhi jump_4a66 /*0x4a72*/ cmp.w r8, #1 /*0x4a76*/ beq jump_4a88 /*0x4a78*/ b jump_4af6 jump_4a7a: /*0x4a7a*/ mov r1, r4 /*0x4a7c*/ movs r0, #4 /*0x4a7e*/ ldr r2, [r7] /*0x4a80*/ bl call_3218 /*0x4a84*/ adds r4, r4, #4 /*0x4a86*/ adds r7, r7, #4 jump_4a88: /*0x4a88*/ cmp r4, sb /*0x4a8a*/ bls jump_4a7a /*0x4a8c*/ b jump_4af6 jump_4a8e: /*0x4a8e*/ ldr r0, [pc, #0x78] /* data_4b08 */ /*0x4a90*/ cmp r4, r0 /*0x4a92*/ bls jump_4a98 /*0x4a94*/ movs r0, #0 /*0x4a96*/ b jump_4a9a jump_4a98: /*0x4a98*/ ldr r0, [r4] jump_4a9a: /*0x4a9a*/ cmp.w r8, #0 /*0x4a9e*/ beq jump_4af4 /*0x4aa0*/ cmp.w r8, #3 /*0x4aa4*/ beq jump_4aae /*0x4aa6*/ cmp.w sl, #1 /*0x4aaa*/ beq jump_4ab8 /*0x4aac*/ b jump_4ad4 jump_4aae: /*0x4aae*/ adds r0, r0, #1 /*0x4ab0*/ beq jump_4af4 jump_4ab2: /*0x4ab2*/ movs r0, #0x46 jump_4ab4: /*0x4ab4*/ pop.w {r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} jump_4ab8: /*0x4ab8*/ sub.w r1, r4, #0x2800 /*0x4abc*/ cmp.w r1, #0x400 /*0x4ac0*/ blo jump_4ad4 /*0x4ac2*/ cmp.w r4, #0xf800 /*0x4ac6*/ bhs jump_4ad4 /*0x4ac8*/ ldr r2, [pc, #0x40] /* data_4b0c */ /*0x4aca*/ sub.w r1, r4, #0xf800 /*0x4ace*/ cmp r1, r2 /*0x4ad0*/ blo jump_4ad4 /*0x4ad2*/ mov r8, r8 jump_4ad4: /*0x4ad4*/ str.w r0, [fp, r5, lsl #2] /*0x4ad8*/ adds r5, r5, #1 /*0x4ada*/ cmp r5, #0x10 /*0x4adc*/ bne jump_4af4 /*0x4ade*/ ldr r0, [pc, #0x30] /* data_4b10 */ /*0x4ae0*/ movs r5, #0 /*0x4ae2*/ movs r1, #0x10 /*0x4ae4*/ str r1, [r0, #0x58] /*0x4ae6*/ movs r1, #0x40 /*0x4ae8*/ str r1, [r0, #0x5c] /*0x4aea*/ movs r1, #2 /*0x4aec*/ str r1, [r0, #0x50] jump_4aee: /*0x4aee*/ ldr r1, [r0, #0x58] /*0x4af0*/ lsls r1, r1, #0x1b /*0x4af2*/ bpl jump_4aee jump_4af4: /*0x4af4*/ adds r4, r4, #4 jump_4af6: /*0x4af6*/ cmp r4, sb /*0x4af8*/ bls jump_4a8e /*0x4afa*/ movs r0, #0x4f /*0x4afc*/ b jump_4ab4 /*0x4afe*/ .byte 0x0 /*0x4aff*/ .byte 0x0 data_4b00: /*0x4b00*/ .word 0x20000a9c data_4b04: /*0x4b04*/ .word 0x4004e4b0 data_4b08: /*0x4b08*/ .word 0x1ff003fc data_4b0c: /*0x4b0c*/ .word 0x1fef0850 data_4b10: /*0x4b10*/ .word 0x4004e000 .thumb_func update_start_cmd: /*0x4b14*/ push {r4, lr} /*0x4b16*/ movs r2, #0x40 /*0x4b18*/ ldr r1, [pc, #8] /* data_4b24 */ /*0x4b1a*/ movs r0, #3 /*0x4b1c*/ bl usb_copy_send /*0x4b20*/ movs r0, #0x4f /*0x4b22*/ pop {r4, pc} data_4b24: /*0x4b24*/ .word 0x20000a80 .thumb_func call_4b28: /*0x4b28*/ push {r4, r5, r6, lr} /*0x4b2a*/ mov r4, r0 /*0x4b2c*/ movs r0, #0 /*0x4b2e*/ bl call_46e8 /*0x4b32*/ mov r5, r0 /*0x4b34*/ ldr r0, [r4, #0x20] /*0x4b36*/ adds r1, r0, #1 /*0x4b38*/ beq jump_4b68 /*0x4b3a*/ ldrb.w r1, [r4, #0x24] /*0x4b3e*/ cmp r1, #1 /*0x4b40*/ bne jump_4b68 /*0x4b42*/ cmp r0, r5 /*0x4b44*/ blo jump_4b4c /*0x4b46*/ subs r0, r0, r5 /*0x4b48*/ str r0, [r4, #0x20] /*0x4b4a*/ b jump_4b58 jump_4b4c: /*0x4b4c*/ mov r5, r0 /*0x4b4e*/ movs r0, #0 /*0x4b50*/ str r0, [r4, #0x20] /*0x4b52*/ movs r0, #2 /*0x4b54*/ strb.w r0, [r4, #0x24] jump_4b58: /*0x4b58*/ mov r2, r5 /*0x4b5a*/ movs r0, #0 /*0x4b5c*/ ldr r1, [r4, #0x1c] /*0x4b5e*/ bl usb_copy_send /*0x4b62*/ ldr r0, [r4, #0x1c] /*0x4b64*/ add r0, r5 /*0x4b66*/ str r0, [r4, #0x1c] jump_4b68: /*0x4b68*/ pop {r4, r5, r6, pc} jump_4b6a: /*0x4b6a*/ push {r4, lr} /*0x4b6c*/ mov r4, r0 /*0x4b6e*/ movs r0, #0 /*0x4b70*/ strb r0, [r4, #0x19] /*0x4b72*/ cbz r1, jump_4b88 /*0x4b74*/ cmp r1, #1 /*0x4b76*/ beq jump_4b8c /*0x4b78*/ cmp r1, #2 /*0x4b7a*/ bne jump_4b9e /*0x4b7c*/ ldrh r0, [r4, #4] /*0x4b7e*/ and r0, r0, #0xf /*0x4b82*/ bl call_46f6 /*0x4b86*/ b jump_4b8c jump_4b88: /*0x4b88*/ ldrb.w r0, [r4, #0x34] jump_4b8c: /*0x4b8c*/ strb r0, [r4, #0x18] /*0x4b8e*/ add.w r0, r4, #0x18 /*0x4b92*/ str r0, [r4, #0x1c] /*0x4b94*/ movs r0, #2 /*0x4b96*/ str r0, [r4, #0x20] /*0x4b98*/ movs r0, #1 /*0x4b9a*/ strb.w r0, [r4, #0x24] jump_4b9e: /*0x4b9e*/ pop {r4, pc} .thumb_func call_4ba0: /*0x4ba0*/ push {r4, r5, r6, lr} /*0x4ba2*/ mov r4, r0 /*0x4ba4*/ ldrh r0, [r0] /*0x4ba6*/ movs r5, #1 /*0x4ba8*/ cmp.w r0, #0x500 /*0x4bac*/ beq jump_4c4a /*0x4bae*/ bgt jump_4bf2 /*0x4bb0*/ cmp.w r0, #0x100 /*0x4bb4*/ beq jump_4c3c /*0x4bb6*/ bgt jump_4bd0 /*0x4bb8*/ cmp r0, #0x80 /*0x4bba*/ beq jump_4c34 /*0x4bbc*/ cmp r0, #0x81 /*0x4bbe*/ beq jump_4c38 /*0x4bc0*/ cmp r0, #0x82 /*0x4bc2*/ bne jump_4c8e /*0x4bc4*/ movs r1, #2 jump_4bc6: /*0x4bc6*/ mov r0, r4 /*0x4bc8*/ pop.w {r4, r5, r6, lr} /*0x4bcc*/ b.w jump_4b6a jump_4bd0: /*0x4bd0*/ cmp.w r0, #0x102 /*0x4bd4*/ beq jump_4c40 /*0x4bd6*/ cmp.w r0, #0x300 /*0x4bda*/ beq jump_4c44 /*0x4bdc*/ sub.w r0, r0, #0x300 /*0x4be0*/ subs r0, #2 /*0x4be2*/ bne jump_4c8e /*0x4be4*/ movs r2, #1 jump_4be6: /*0x4be6*/ movs r1, #2 jump_4be8: /*0x4be8*/ mov r0, r4 /*0x4bea*/ pop.w {r4, r5, r6, lr} /*0x4bee*/ b.w jump_4cbc jump_4bf2: /*0x4bf2*/ cmp.w r0, #0x900 /*0x4bf6*/ beq jump_4c94 /*0x4bf8*/ bgt jump_4c1a /*0x4bfa*/ cmp.w r0, #0x680 /*0x4bfe*/ beq jump_4c58 /*0x4c00*/ sub.w r0, r0, #0x600 /*0x4c04*/ subs r0, #0x81 /*0x4c06*/ beq jump_4c90 /*0x4c08*/ sub.w r0, r0, #0x100 /*0x4c0c*/ subs r0, #0xff /*0x4c0e*/ bne jump_4c8e /*0x4c10*/ add.w r0, r4, #0x30 /*0x4c14*/ strd r0, r5, [r4, #0x1c] /*0x4c18*/ b jump_4c8a jump_4c1a: /*0x4c1a*/ sub.w r0, r0, #0xa00 /*0x4c1e*/ subs r0, #0x81 /*0x4c20*/ beq jump_4cb8 /*0x4c22*/ cmp r0, #0x80 /*0x4c24*/ bne jump_4c8e /*0x4c26*/ ldr r1, [r4, #0x58] jump_4c28: /*0x4c28*/ cmp r1, #0 /*0x4c2a*/ beq jump_4c8e /*0x4c2c*/ mov r0, r4 /*0x4c2e*/ pop.w {r4, r5, r6, lr} /*0x4c32*/ bx r1 jump_4c34: /*0x4c34*/ movs r1, #0 /*0x4c36*/ b jump_4bc6 jump_4c38: /*0x4c38*/ movs r1, #1 /*0x4c3a*/ b jump_4bc6 jump_4c3c: /*0x4c3c*/ movs r2, #0 /*0x4c3e*/ b jump_4c46 jump_4c40: /*0x4c40*/ movs r2, #0 /*0x4c42*/ b jump_4be6 jump_4c44: /*0x4c44*/ movs r2, #1 jump_4c46: /*0x4c46*/ movs r1, #0 /*0x4c48*/ b jump_4be8 jump_4c4a: /*0x4c4a*/ ldrb r0, [r4, #2] /*0x4c4c*/ bl call_4958 /*0x4c50*/ strb.w r5, [r4, #0x24] /*0x4c54*/ movs r0, #5 /*0x4c56*/ b jump_4cb2 jump_4c58: /*0x4c58*/ ldrb r0, [r4, #3] /*0x4c5a*/ cmp r0, #1 /*0x4c5c*/ beq jump_4c7e /*0x4c5e*/ cmp r0, #2 /*0x4c60*/ beq jump_4c82 /*0x4c62*/ cmp r0, #3 /*0x4c64*/ bne jump_4c8e /*0x4c66*/ ldrb r0, [r4, #2] /*0x4c68*/ ldr r1, [r4, #0x14] /*0x4c6a*/ cmp r1, r0 /*0x4c6c*/ bls jump_4c8e /*0x4c6e*/ ldr r1, [r4, #0x10] /*0x4c70*/ ldr.w r0, [r1, r0, lsl #2] /*0x4c74*/ cmp r0, #0 /*0x4c76*/ beq jump_4c8e jump_4c78: /*0x4c78*/ str r0, [r4, #0x1c] /*0x4c7a*/ ldrb r0, [r0] /*0x4c7c*/ b jump_4c88 jump_4c7e: /*0x4c7e*/ ldr r0, [r4, #8] /*0x4c80*/ b jump_4c78 jump_4c82: /*0x4c82*/ ldr r0, [r4, #0xc] /*0x4c84*/ str r0, [r4, #0x1c] /*0x4c86*/ ldrh r0, [r0, #2] jump_4c88: /*0x4c88*/ str r0, [r4, #0x20] jump_4c8a: /*0x4c8a*/ strb.w r5, [r4, #0x24] jump_4c8e: /*0x4c8e*/ pop {r4, r5, r6, pc} jump_4c90: /*0x4c90*/ ldr r1, [r4, #0x54] /*0x4c92*/ b jump_4c28 jump_4c94: /*0x4c94*/ ldrb r0, [r4, #2] /*0x4c96*/ strb.w r0, [r4, #0x30] /*0x4c9a*/ strb.w r5, [r4, #0x24] /*0x4c9e*/ movs r5, #1 jump_4ca0: /*0x4ca0*/ sxtb r0, r5 /*0x4ca2*/ ldr.w r1, [r4, #0x84] /*0x4ca6*/ bl call_4730 /*0x4caa*/ adds r5, r5, #1 /*0x4cac*/ cmp r5, #8 /*0x4cae*/ blo jump_4ca0 /*0x4cb0*/ movs r0, #6 jump_4cb2: /*0x4cb2*/ strb.w r0, [r4, #0x32] /*0x4cb6*/ pop {r4, r5, r6, pc} jump_4cb8: /*0x4cb8*/ ldr r1, [r4, #0x5c] /*0x4cba*/ b jump_4c28 jump_4cbc: /*0x4cbc*/ push {r4, r5, r6, lr} /*0x4cbe*/ mov r4, r0 /*0x4cc0*/ movs r6, #1 /*0x4cc2*/ cbz r1, jump_4cde /*0x4cc4*/ cmp r1, #2 /*0x4cc6*/ bne jump_4cdc /*0x4cc8*/ ldrh r0, [r4, #4] /*0x4cca*/ ands r5, r0, #0xf /*0x4cce*/ beq jump_4cd8 /*0x4cd0*/ cbz r2, jump_4cf4 /*0x4cd2*/ mov r0, r5 /*0x4cd4*/ bl call_47dc jump_4cd8: /*0x4cd8*/ strb.w r6, [r4, #0x24] jump_4cdc: /*0x4cdc*/ pop {r4, r5, r6, pc} jump_4cde: /*0x4cde*/ ldrb r0, [r4, #2] /*0x4ce0*/ cmp r0, #1 /*0x4ce2*/ bne jump_4cdc /*0x4ce4*/ add.w r4, r4, #0x24 /*0x4ce8*/ ldrb r0, [r4, #0x10] /*0x4cea*/ bfi r0, r2, #1, #1 /*0x4cee*/ strb r0, [r4, #0x10] /*0x4cf0*/ strb r6, [r4] /*0x4cf2*/ pop {r4, r5, r6, pc} jump_4cf4: /*0x4cf4*/ ldr r0, [r4, #0x38] /*0x4cf6*/ cmp r0, #0 /*0x4cf8*/ bne jump_4cd8 /*0x4cfa*/ mov r0, r5 /*0x4cfc*/ bl call_4690 /*0x4d00*/ sxtb r0, r5 /*0x4d02*/ bl call_4680 /*0x4d06*/ b jump_4cd8 .thumb_func call_4d08: /*0x4d08*/ subs r2, r2, #1 /*0x4d0a*/ bmi jump_4d16 /*0x4d0c*/ ldr.w r3, [r0, r2, lsl #2] /*0x4d10*/ str.w r3, [r1, r2, lsl #2] /*0x4d14*/ b call_4d08 jump_4d16: /*0x4d16*/ bx lr .thumb_func usb_get_ep_reg: /*0x4d18*/ ldr r1, [pc, #8] /* data_4d24 */ /*0x4d1a*/ add.w r0, r0, r0, lsl #2 /*0x4d1e*/ add.w r0, r1, r0, lsl #2 /*0x4d22*/ bx lr data_4d24: /*0x4d24*/ .word 0x4004e014 /*0x4d28*/ .byte 0x2 /*0x4d29*/ .byte 0xe0 /*0x4d2a*/ .byte 0x8 /*0x4d2b*/ .byte 0xc8 /*0x4d2c*/ .byte 0x12 /*0x4d2d*/ .byte 0x1f /*0x4d2e*/ .byte 0x8 /*0x4d2f*/ .byte 0xc1 /*0x4d30*/ .byte 0x0 /*0x4d31*/ .byte 0x2a /*0x4d32*/ .byte 0xfa /*0x4d33*/ .byte 0xd1 /*0x4d34*/ .byte 0x70 /*0x4d35*/ .byte 0x47 /*0x4d36*/ .byte 0x70 /*0x4d37*/ .byte 0x47 /*0x4d38*/ .byte 0x0 /*0x4d39*/ .byte 0x20 /*0x4d3a*/ .byte 0x1 /*0x4d3b*/ .byte 0xe0 /*0x4d3c*/ .byte 0x1 /*0x4d3d*/ .byte 0xc1 /*0x4d3e*/ .byte 0x12 /*0x4d3f*/ .byte 0x1f /*0x4d40*/ .byte 0x0 /*0x4d41*/ .byte 0x2a /*0x4d42*/ .byte 0xfb /*0x4d43*/ .byte 0xd1 /*0x4d44*/ .byte 0x70 /*0x4d45*/ .byte 0x47 /*0x4d46*/ .byte 0x0 /*0x4d47*/ .byte 0x0 .thumb_func call_4d48: /*0x4d48*/ push {r4, r5, r6, lr} /*0x4d4a*/ ldr r4, [pc, #0x50] /* data_4d9c */ /*0x4d4c*/ movs r5, #0 /*0x4d4e*/ str r5, [r4] /*0x4d50*/ str r5, [r4, #4] /*0x4d52*/ sub.w r4, r4, #0x98 /*0x4d56*/ mov.w r0, #0x32 /*0x4d5a*/ bl call_49cc /*0x4d5e*/ ldr r1, [pc, #0x40] /* data_4da0 */ /*0x4d60*/ ldrb r0, [r1, #0xb] /*0x4d62*/ cmp r0, #0 /*0x4d64*/ ldrb r0, [r1, #0xa] /*0x4d66*/ beq jump_4d78 /*0x4d68*/ cmp r0, #7 /*0x4d6a*/ bhs jump_4d90 /*0x4d6c*/ ldr r1, [pc, #0x34] /* data_4da4 */ /*0x4d6e*/ ldr.w r0, [r1, r0, lsl #2] /*0x4d72*/ str.w r0, [r4, #0x9c] /*0x4d76*/ pop {r4, r5, r6, pc} jump_4d78: /*0x4d78*/ cmp r0, #7 /*0x4d7a*/ bhs jump_4d8a /*0x4d7c*/ ldr r1, [pc, #0x24] /* data_4da4 */ /*0x4d7e*/ adds r1, #0x1c /*0x4d80*/ ldr.w r0, [r1, r0, lsl #2] /*0x4d84*/ str.w r0, [r4, #0x98] /*0x4d88*/ pop {r4, r5, r6, pc} jump_4d8a: /*0x4d8a*/ str.w r5, [r4, #0x98] /*0x4d8e*/ b jump_4d94 jump_4d90: /*0x4d90*/ str.w r5, [r4, #0x9c] jump_4d94: /*0x4d94*/ strb r5, [r1, #1] /*0x4d96*/ str r5, [r1, #0x14] /*0x4d98*/ pop {r4, r5, r6, pc} /*0x4d9a*/ .byte 0x0 /*0x4d9b*/ .byte 0x0 data_4d9c: /*0x4d9c*/ .word 0x4006f098 data_4da0: /*0x4da0*/ .word 0x20000048 data_4da4: /*0x4da4*/ .word data_5118 .thumb_func main: /*0x4da8*/ bl call_3ed8 /*0x4dac*/ bl call_3104 /*0x4db0*/ bl call_3034 /*0x4db4*/ bl call_326c /*0x4db8*/ bl call_2f80 /*0x4dbc*/ bl usb_init /*0x4dc0*/ ldr r5, [pc, #0x2c] /* data_4df0 */ /*0x4dc2*/ ldr r4, [pc, #0x30] /* data_4df4 */ /*0x4dc4*/ movs r6, #1 jump_4dc6: /*0x4dc6*/ ldr r0, [r4, #4] /*0x4dc8*/ cbz r0, jump_4dd0 /*0x4dca*/ cmp r0, #1 /*0x4dcc*/ beq jump_4dde /*0x4dce*/ b jump_4de2 jump_4dd0: /*0x4dd0*/ ldrb.w r0, [r5, #0x32] /*0x4dd4*/ cmp r0, #6 /*0x4dd6*/ bne jump_4de2 /*0x4dd8*/ bl call_3bcc /*0x4ddc*/ str r6, [r4, #4] jump_4dde: /*0x4dde*/ bl call_3af0 jump_4de2: /*0x4de2*/ ldr r0, [pc, #0xc] /* data_4df0 */ /*0x4de4*/ bl call_45c6 /*0x4de8*/ bl call_49bc /*0x4dec*/ b jump_4dc6 /*0x4dee*/ .byte 0x0 /*0x4def*/ .byte 0x0 data_4df0: /*0x4df0*/ .word 0x200000cc data_4df4: /*0x4df4*/ .word 0x20000000 .thumb_func call_4df8: /*0x4df8*/ push {r4, r5, lr} /*0x4dfa*/ ldr r3, [pc, #0x1c] /* data_4e18 */ /*0x4dfc*/ ldr r4, [pc, #0x1c] /* data_4e1c */ /*0x4dfe*/ str r0, [r3, #0x2c] /*0x4e00*/ movs r0, #0 /*0x4e02*/ b jump_4e10 jump_4e04: /*0x4e04*/ ldr r2, [r3, #0x2c] /*0x4e06*/ ldm r2!, {r5} /*0x4e08*/ str.w r5, [r4, r0, lsl #2] /*0x4e0c*/ adds r0, r0, #1 /*0x4e0e*/ str r2, [r3, #0x2c] jump_4e10: /*0x4e10*/ cmp r0, r1 /*0x4e12*/ blo jump_4e04 /*0x4e14*/ pop {r4, r5, pc} /*0x4e16*/ .byte 0x0 /*0x4e17*/ .byte 0x0 data_4e18: /*0x4e18*/ .word 0x20000048 data_4e1c: /*0x4e1c*/ .word 0x2000021c .thumb_func call_4e20: /*0x4e20*/ ldr r1, [pc, #0x18] /* data_4e3c */ /*0x4e22*/ movs r0, #0 jump_4e24: /*0x4e24*/ ldrb r2, [r1, r0] /*0x4e26*/ cmp r2, #0xff /*0x4e28*/ beq jump_4e2e /*0x4e2a*/ movs r0, #0 /*0x4e2c*/ bx lr jump_4e2e: /*0x4e2e*/ adds r0, r0, #1 /*0x4e30*/ uxtb r0, r0 /*0x4e32*/ cmp r0, #0xf /*0x4e34*/ blo jump_4e24 /*0x4e36*/ movs r0, #1 /*0x4e38*/ bx lr /*0x4e3a*/ .byte 0x0 /*0x4e3b*/ .byte 0x0 data_4e3c: /*0x4e3c*/ .word 0x2000020b .thumb_func call_4e40: /*0x4e40*/ push.w {r4, r5, r6, r7, r8, lr} /*0x4e44*/ ldr r6, [pc, #0x30] /* data_4e78 */ /*0x4e46*/ mov r5, r0 /*0x4e48*/ mov r7, r1 /*0x4e4a*/ str r0, [r6, #0x2c] /*0x4e4c*/ bl flash_page_erase /*0x4e50*/ strb r0, [r6, #0xe] /*0x4e52*/ movs r4, #0 /*0x4e54*/ ldr.w r8, [pc, #0x24] /* data_4e7c */ /*0x4e58*/ b jump_4e70 jump_4e5a: /*0x4e5a*/ ldr.w r1, [r8, r4, lsl #2] /*0x4e5e*/ mov r0, r5 /*0x4e60*/ bl call_322c /*0x4e64*/ strb r0, [r6, #0xe] /*0x4e66*/ ldr r0, [r6, #0x2c] /*0x4e68*/ adds r5, r5, #4 /*0x4e6a*/ adds r0, r0, #4 /*0x4e6c*/ adds r4, r4, #1 /*0x4e6e*/ str r0, [r6, #0x2c] jump_4e70: /*0x4e70*/ cmp r4, r7 /*0x4e72*/ blo jump_4e5a /*0x4e74*/ pop.w {r4, r5, r6, r7, r8, pc} data_4e78: /*0x4e78*/ .word 0x20000048 data_4e7c: /*0x4e7c*/ .word 0x2000021c usb_report0_desc: /*0x4e80*/ .byte 0x5 /*0x4e81*/ .byte 0x1 /*0x4e82*/ .byte 0x9 /*0x4e83*/ .byte 0x6 /*0x4e84*/ .byte 0xa1 /*0x4e85*/ .byte 0x1 /*0x4e86*/ .byte 0x5 /*0x4e87*/ .byte 0x7 /*0x4e88*/ .byte 0x19 /*0x4e89*/ .byte 0xe0 /*0x4e8a*/ .byte 0x29 /*0x4e8b*/ .byte 0xe7 /*0x4e8c*/ .byte 0x15 /*0x4e8d*/ .byte 0x0 /*0x4e8e*/ .byte 0x25 /*0x4e8f*/ .byte 0x1 /*0x4e90*/ .byte 0x75 /*0x4e91*/ .byte 0x1 /*0x4e92*/ .byte 0x95 /*0x4e93*/ .byte 0x8 /*0x4e94*/ .byte 0x81 /*0x4e95*/ .byte 0x2 /*0x4e96*/ .byte 0x95 /*0x4e97*/ .byte 0x1 /*0x4e98*/ .byte 0x75 /*0x4e99*/ .byte 0x8 /*0x4e9a*/ .byte 0x81 /*0x4e9b*/ .byte 0x3 /*0x4e9c*/ .byte 0x95 /*0x4e9d*/ .byte 0x3 /*0x4e9e*/ .byte 0x75 /*0x4e9f*/ .byte 0x1 /*0x4ea0*/ .byte 0x5 /*0x4ea1*/ .byte 0x8 /*0x4ea2*/ .byte 0x19 /*0x4ea3*/ .byte 0x1 /*0x4ea4*/ .byte 0x29 /*0x4ea5*/ .byte 0x3 /*0x4ea6*/ .byte 0x91 /*0x4ea7*/ .byte 0x2 /*0x4ea8*/ .byte 0x95 /*0x4ea9*/ .byte 0x1 /*0x4eaa*/ .byte 0x75 /*0x4eab*/ .byte 0x5 /*0x4eac*/ .byte 0x91 /*0x4ead*/ .byte 0x3 /*0x4eae*/ .byte 0x95 /*0x4eaf*/ .byte 0x6 /*0x4eb0*/ .byte 0x75 /*0x4eb1*/ .byte 0x8 /*0x4eb2*/ .byte 0x15 /*0x4eb3*/ .byte 0x0 /*0x4eb4*/ .byte 0x26 /*0x4eb5*/ .byte 0xa4 /*0x4eb6*/ .byte 0x0 /*0x4eb7*/ .byte 0x5 /*0x4eb8*/ .byte 0x7 /*0x4eb9*/ .byte 0x19 /*0x4eba*/ .byte 0x0 /*0x4ebb*/ .byte 0x29 /*0x4ebc*/ .byte 0xa4 /*0x4ebd*/ .byte 0x81 /*0x4ebe*/ .byte 0x0 /*0x4ebf*/ .byte 0xc0 usb_report1_desc: /*0x4ec0*/ .byte 0x5 /*0x4ec1*/ .byte 0x1 /*0x4ec2*/ .byte 0x9 /*0x4ec3*/ .byte 0x80 /*0x4ec4*/ .byte 0xa1 /*0x4ec5*/ .byte 0x1 /*0x4ec6*/ .byte 0x85 /*0x4ec7*/ .byte 0x1 /*0x4ec8*/ .byte 0x19 /*0x4ec9*/ .byte 0x81 /*0x4eca*/ .byte 0x29 /*0x4ecb*/ .byte 0x83 /*0x4ecc*/ .byte 0x15 /*0x4ecd*/ .byte 0x0 /*0x4ece*/ .byte 0x25 /*0x4ecf*/ .byte 0x1 /*0x4ed0*/ .byte 0x95 /*0x4ed1*/ .byte 0x3 /*0x4ed2*/ .byte 0x75 /*0x4ed3*/ .byte 0x1 /*0x4ed4*/ .byte 0x81 /*0x4ed5*/ .byte 0x2 /*0x4ed6*/ .byte 0x95 /*0x4ed7*/ .byte 0x1 /*0x4ed8*/ .byte 0x75 /*0x4ed9*/ .byte 0x5 /*0x4eda*/ .byte 0x81 /*0x4edb*/ .byte 0x1 /*0x4edc*/ .byte 0xc0 usb_report2_desc: /*0x4edd*/ .byte 0x5 /*0x4ede*/ .byte 0xc /*0x4edf*/ .byte 0x9 /*0x4ee0*/ .byte 0x1 /*0x4ee1*/ .byte 0xa1 /*0x4ee2*/ .byte 0x1 /*0x4ee3*/ .byte 0x85 /*0x4ee4*/ .byte 0x2 /*0x4ee5*/ .byte 0x15 /*0x4ee6*/ .byte 0x0 /*0x4ee7*/ .byte 0x25 /*0x4ee8*/ .byte 0x1 /*0x4ee9*/ .byte 0x95 /*0x4eea*/ .byte 0x12 /*0x4eeb*/ .byte 0x75 /*0x4eec*/ .byte 0x1 /*0x4eed*/ .byte 0xa /*0x4eee*/ .byte 0x83 /*0x4eef*/ .byte 0x1 /*0x4ef0*/ .byte 0xa /*0x4ef1*/ .byte 0x8a /*0x4ef2*/ .byte 0x1 /*0x4ef3*/ .byte 0xa /*0x4ef4*/ .byte 0x92 /*0x4ef5*/ .byte 0x1 /*0x4ef6*/ .byte 0xa /*0x4ef7*/ .byte 0x94 /*0x4ef8*/ .byte 0x1 /*0x4ef9*/ .byte 0x9 /*0x4efa*/ .byte 0xcd /*0x4efb*/ .byte 0x9 /*0x4efc*/ .byte 0xb7 /*0x4efd*/ .byte 0x9 /*0x4efe*/ .byte 0xb6 /*0x4eff*/ .byte 0x9 /*0x4f00*/ .byte 0xb5 /*0x4f01*/ .byte 0x9 /*0x4f02*/ .byte 0xe2 /*0x4f03*/ .byte 0x9 /*0x4f04*/ .byte 0xea /*0x4f05*/ .byte 0x9 /*0x4f06*/ .byte 0xe9 /*0x4f07*/ .byte 0xa /*0x4f08*/ .byte 0x21 /*0x4f09*/ .byte 0x2 /*0x4f0a*/ .byte 0xa /*0x4f0b*/ .byte 0x23 /*0x4f0c*/ .byte 0x2 /*0x4f0d*/ .byte 0xa /*0x4f0e*/ .byte 0x24 /*0x4f0f*/ .byte 0x2 /*0x4f10*/ .byte 0xa /*0x4f11*/ .byte 0x25 /*0x4f12*/ .byte 0x2 /*0x4f13*/ .byte 0xa /*0x4f14*/ .byte 0x26 /*0x4f15*/ .byte 0x2 /*0x4f16*/ .byte 0xa /*0x4f17*/ .byte 0x27 /*0x4f18*/ .byte 0x2 /*0x4f19*/ .byte 0xa /*0x4f1a*/ .byte 0x2a /*0x4f1b*/ .byte 0x2 /*0x4f1c*/ .byte 0x81 /*0x4f1d*/ .byte 0x2 /*0x4f1e*/ .byte 0x95 /*0x4f1f*/ .byte 0x1 /*0x4f20*/ .byte 0x75 /*0x4f21*/ .byte 0xe /*0x4f22*/ .byte 0x81 /*0x4f23*/ .byte 0x1 /*0x4f24*/ .byte 0xc0 /*0x4f25*/ .byte 0x0 /*0x4f26*/ .byte 0x0 /*0x4f27*/ .byte 0x0 usb_report3_desc: /*0x4f28*/ .byte 0x6 /*0x4f29*/ .byte 0x0 /*0x4f2a*/ .byte 0xff /*0x4f2b*/ .byte 0x9 /*0x4f2c*/ .byte 0x1 /*0x4f2d*/ .byte 0xa1 /*0x4f2e*/ .byte 0x1 /*0x4f2f*/ .byte 0x9 /*0x4f30*/ .byte 0x2 /*0x4f31*/ .byte 0x15 /*0x4f32*/ .byte 0x0 /*0x4f33*/ .byte 0x26 /*0x4f34*/ .byte 0xff /*0x4f35*/ .byte 0x0 /*0x4f36*/ .byte 0x75 /*0x4f37*/ .byte 0x8 /*0x4f38*/ .byte 0x95 /*0x4f39*/ .byte 0x40 /*0x4f3a*/ .byte 0x81 /*0x4f3b*/ .byte 0x2 /*0x4f3c*/ .byte 0x9 /*0x4f3d*/ .byte 0x3 /*0x4f3e*/ .byte 0x15 /*0x4f3f*/ .byte 0x0 /*0x4f40*/ .byte 0x26 /*0x4f41*/ .byte 0xff /*0x4f42*/ .byte 0x0 /*0x4f43*/ .byte 0x75 /*0x4f44*/ .byte 0x8 /*0x4f45*/ .byte 0x95 /*0x4f46*/ .byte 0x40 /*0x4f47*/ .byte 0x91 /*0x4f48*/ .byte 0x2 /*0x4f49*/ .byte 0xc0 /*0x4f4a*/ .byte 0x0 /*0x4f4b*/ .byte 0x0 device_desc: /*0x4f4c*/ .byte 0x12 /*0x4f4d*/ .byte 0x1 /*0x4f4e*/ .byte 0x10 /*0x4f4f*/ .byte 0x1 /*0x4f50*/ .byte 0x0 /*0x4f51*/ .byte 0x0 /*0x4f52*/ .byte 0x0 /*0x4f53*/ .byte 0x40 /*0x4f54*/ .byte 0xd9 /*0x4f55*/ .byte 0x4 /*0x4f56*/ .byte 0x12 /*0x4f57*/ .byte 0x1 /*0x4f58*/ .byte 0x7 /*0x4f59*/ .byte 0x1 /*0x4f5a*/ .byte 0x0 /*0x4f5b*/ .byte 0x2 /*0x4f5c*/ .byte 0x0 /*0x4f5d*/ .byte 0x1 /*0x4f5e*/ .byte 0x0 /*0x4f5f*/ .byte 0x0 config_desc: /*0x4f60*/ .byte 0x9 /*0x4f61*/ .byte 0x2 /*0x4f62*/ .byte 0x5b /*0x4f63*/ .byte 0x0 /*0x4f64*/ .byte 0x3 /*0x4f65*/ .byte 0x1 /*0x4f66*/ .byte 0x0 /*0x4f67*/ .byte 0xa0 /*0x4f68*/ .byte 0x32 interface0_desc: /*0x4f69*/ .byte 0x9 /*0x4f6a*/ .byte 0x4 /*0x4f6b*/ .byte 0x0 /*0x4f6c*/ .byte 0x0 /*0x4f6d*/ .byte 0x1 /*0x4f6e*/ .byte 0x3 /*0x4f6f*/ .byte 0x1 /*0x4f70*/ .byte 0x1 /*0x4f71*/ .byte 0x0 hid0_desc: /*0x4f72*/ .byte 0x9 /*0x4f73*/ .byte 0x21 /*0x4f74*/ .byte 0x11 /*0x4f75*/ .byte 0x1 /*0x4f76*/ .byte 0x0 /*0x4f77*/ .byte 0x1 /*0x4f78*/ .byte 0x22 /*0x4f79*/ .byte 0x40 /*0x4f7a*/ .byte 0x0 ep01_desc: /*0x4f7b*/ .byte 0x7 /*0x4f7c*/ .byte 0x5 /*0x4f7d*/ .byte 0x81 /*0x4f7e*/ .byte 0x3 /*0x4f7f*/ .byte 0x8 /*0x4f80*/ .byte 0x0 /*0x4f81*/ .byte 0x1 interface1_desc: /*0x4f82*/ .byte 0x9 /*0x4f83*/ .byte 0x4 /*0x4f84*/ .byte 0x1 /*0x4f85*/ .byte 0x0 /*0x4f86*/ .byte 0x1 /*0x4f87*/ .byte 0x3 /*0x4f88*/ .byte 0x0 /*0x4f89*/ .byte 0x0 /*0x4f8a*/ .byte 0x0 hid1_desc: /*0x4f8b*/ .byte 0x9 /*0x4f8c*/ .byte 0x21 /*0x4f8d*/ .byte 0x11 /*0x4f8e*/ .byte 0x1 /*0x4f8f*/ .byte 0x0 /*0x4f90*/ .byte 0x1 /*0x4f91*/ .byte 0x22 /*0x4f92*/ .byte 0x65 /*0x4f93*/ .byte 0x0 ep2_desc: /*0x4f94*/ .byte 0x7 /*0x4f95*/ .byte 0x5 /*0x4f96*/ .byte 0x82 /*0x4f97*/ .byte 0x3 /*0x4f98*/ .byte 0x20 /*0x4f99*/ .byte 0x0 /*0x4f9a*/ .byte 0x1 interface2_desc: /*0x4f9b*/ .byte 0x9 /*0x4f9c*/ .byte 0x4 /*0x4f9d*/ .byte 0x2 /*0x4f9e*/ .byte 0x0 /*0x4f9f*/ .byte 0x2 /*0x4fa0*/ .byte 0x3 /*0x4fa1*/ .byte 0x0 /*0x4fa2*/ .byte 0x0 /*0x4fa3*/ .byte 0x0 hid2_desc: /*0x4fa4*/ .byte 0x9 /*0x4fa5*/ .byte 0x21 /*0x4fa6*/ .byte 0x11 /*0x4fa7*/ .byte 0x1 /*0x4fa8*/ .byte 0x0 /*0x4fa9*/ .byte 0x1 /*0x4faa*/ .byte 0x22 /*0x4fab*/ .byte 0x22 /*0x4fac*/ .byte 0x0 ep3_desc: /*0x4fad*/ .byte 0x7 /*0x4fae*/ .byte 0x5 /*0x4faf*/ .byte 0x83 /*0x4fb0*/ .byte 0x3 /*0x4fb1*/ .byte 0x40 /*0x4fb2*/ .byte 0x0 /*0x4fb3*/ .byte 0x1 ep4_desc: /*0x4fb4*/ .byte 0x7 /*0x4fb5*/ .byte 0x5 /*0x4fb6*/ .byte 0x4 /*0x4fb7*/ .byte 0x3 /*0x4fb8*/ .byte 0x40 /*0x4fb9*/ .byte 0x0 /*0x4fba*/ .byte 0x1 /*0x4fbb*/ .byte 0x0 str0_desc: /*0x4fbc*/ .byte 0x4 /*0x4fbd*/ .byte 0x3 /*0x4fbe*/ .byte 0x9 /*0x4fbf*/ .byte 0x4 str1_desc: /*0x4fc0*/ .byte 0x22 /*0x4fc1*/ .byte 0x3 /*0x4fc2*/ .byte 0x55 /*0x4fc3*/ .byte 0x0 /*0x4fc4*/ .byte 0x53 /*0x4fc5*/ .byte 0x0 /*0x4fc6*/ .byte 0x42 /*0x4fc7*/ .byte 0x0 /*0x4fc8*/ .byte 0x2d /*0x4fc9*/ .byte 0x0 /*0x4fca*/ .byte 0x48 /*0x4fcb*/ .byte 0x0 /*0x4fcc*/ .byte 0x49 /*0x4fcd*/ .byte 0x0 /*0x4fce*/ .byte 0x44 /*0x4fcf*/ .byte 0x0 /*0x4fd0*/ .byte 0x20 /*0x4fd1*/ .byte 0x0 /*0x4fd2*/ .byte 0x4b /*0x4fd3*/ .byte 0x0 /*0x4fd4*/ .byte 0x65 /*0x4fd5*/ .byte 0x0 /*0x4fd6*/ .byte 0x79 /*0x4fd7*/ .byte 0x0 /*0x4fd8*/ .byte 0x62 /*0x4fd9*/ .byte 0x0 /*0x4fda*/ .byte 0x6f /*0x4fdb*/ .byte 0x0 /*0x4fdc*/ .byte 0x61 /*0x4fdd*/ .byte 0x0 /*0x4fde*/ .byte 0x72 /*0x4fdf*/ .byte 0x0 /*0x4fe0*/ .byte 0x64 /*0x4fe1*/ .byte 0x0 /*0x4fe2*/ .byte 0x0 /*0x4fe3*/ .byte 0x0 /*0x4fe4*/ .byte 0x9 /*0x4fe5*/ .byte 0x11 /*0x4fe6*/ .byte 0x6 /*0x4fe7*/ .byte 0x9 /*0x4fe8*/ .byte 0x60 /*0x4fe9*/ .byte 0x6 /*0x4fea*/ .byte 0x9 /*0x4feb*/ .byte 0x6 /*0x4fec*/ .byte 0x60 /*0x4fed*/ .byte 0x60 /*0x4fee*/ .byte 0x6 /*0x4fef*/ .byte 0x9 /*0x4ff0*/ .byte 0x6a /*0x4ff1*/ .byte 0x72 /*0x4ff2*/ .byte 0x73 /*0x4ff3*/ .byte 0x4 /*0x4ff4*/ .byte 0x6d /*0x4ff5*/ .byte 0x6b /*0x4ff6*/ .byte 0x6c /*0x4ff7*/ .byte 0x6e /*0x4ff8*/ .byte 0x54 /*0x4ff9*/ .byte 0x72 /*0x4ffa*/ .byte 0x73 /*0x4ffb*/ .byte 0x4 /*0x4ffc*/ .byte 0x55 /*0x4ffd*/ .byte 0x72 /*0x4ffe*/ .byte 0x73 /*0x4fff*/ .byte 0x4 /*0x5000*/ .byte 0x55 /*0x5001*/ .byte 0x72 /*0x5002*/ .byte 0x54 /*0x5003*/ .byte 0x4 /*0x5004*/ .byte 0x55 /*0x5005*/ .byte 0x72 /*0x5006*/ .byte 0x4 /*0x5007*/ .byte 0x54 data_5008: /*0x5008*/ .byte 0x2 /*0x5009*/ .byte 0x35 /*0x500a*/ .byte 0x0 /*0x500b*/ .byte 0x0 /*0x500c*/ .byte 0x0 /*0x500d*/ .byte 0x0 /*0x500e*/ .byte 0x0 /*0x500f*/ .byte 0x0 /*0x5010*/ .byte 0xe4 /*0x5011*/ .byte 0x0 /*0x5012*/ .byte 0xe0 /*0x5013*/ .byte 0x0 /*0x5014*/ .byte 0x14 /*0x5015*/ .byte 0x2b /*0x5016*/ .byte 0x4 /*0x5017*/ .byte 0x0 /*0x5018*/ .byte 0x1d /*0x5019*/ .byte 0x0 /*0x501a*/ .byte 0x35 /*0x501b*/ .byte 0x1e /*0x501c*/ .byte 0x1a /*0x501d*/ .byte 0x39 /*0x501e*/ .byte 0x16 /*0x501f*/ .byte 0x0 /*0x5020*/ .byte 0x1b /*0x5021*/ .byte 0x0 /*0x5022*/ .byte 0x0 /*0x5023*/ .byte 0x1f /*0x5024*/ .byte 0x8 /*0x5025*/ .byte 0x0 /*0x5026*/ .byte 0x7 /*0x5027*/ .byte 0x0 /*0x5028*/ .byte 0x6 /*0x5029*/ .byte 0x0 /*0x502a*/ .byte 0x0 /*0x502b*/ .byte 0x20 /*0x502c*/ .byte 0x15 /*0x502d*/ .byte 0x17 /*0x502e*/ .byte 0x9 /*0x502f*/ .byte 0xa /*0x5030*/ .byte 0x19 /*0x5031*/ .byte 0x5 /*0x5032*/ .byte 0x22 /*0x5033*/ .byte 0x21 /*0x5034*/ .byte 0x18 /*0x5035*/ .byte 0x1c /*0x5036*/ .byte 0xd /*0x5037*/ .byte 0xb /*0x5038*/ .byte 0x10 /*0x5039*/ .byte 0x11 /*0x503a*/ .byte 0x23 /*0x503b*/ .byte 0x24 /*0x503c*/ .byte 0xc /*0x503d*/ .byte 0x2f /*0x503e*/ .byte 0xe /*0x503f*/ .byte 0x0 /*0x5040*/ .byte 0x36 /*0x5041*/ .byte 0x0 /*0x5042*/ .byte 0x2e /*0x5043*/ .byte 0x25 /*0x5044*/ .byte 0x12 /*0x5045*/ .byte 0x0 /*0x5046*/ .byte 0xf /*0x5047*/ .byte 0x0 /*0x5048*/ .byte 0x37 /*0x5049*/ .byte 0x0 /*0x504a*/ .byte 0x0 /*0x504b*/ .byte 0x26 /*0x504c*/ .byte 0x0 /*0x504d*/ .byte 0x0 /*0x504e*/ .byte 0x0 /*0x504f*/ .byte 0x2c /*0x5050*/ .byte 0x0 /*0x5051*/ .byte 0x0 /*0x5052*/ .byte 0x0 /*0x5053*/ .byte 0x0 /*0x5054*/ .byte 0x0 /*0x5055*/ .byte 0x2a /*0x5056*/ .byte 0x31 /*0x5057*/ .byte 0x0 /*0x5058*/ .byte 0x28 /*0x5059*/ .byte 0x0 /*0x505a*/ .byte 0x0 /*0x505b*/ .byte 0x0 /*0x505c*/ .byte 0x0 /*0x505d*/ .byte 0x0 /*0x505e*/ .byte 0x0 /*0x505f*/ .byte 0xe2 /*0x5060*/ .byte 0xe9 /*0x5061*/ .byte 0xe6 /*0x5062*/ .byte 0x0 /*0x5063*/ .byte 0x0 /*0x5064*/ .byte 0x13 /*0x5065*/ .byte 0x30 /*0x5066*/ .byte 0x33 /*0x5067*/ .byte 0x34 /*0x5068*/ .byte 0x0 /*0x5069*/ .byte 0x38 /*0x506a*/ .byte 0x2d /*0x506b*/ .byte 0x27 /*0x506c*/ .byte 0xe8 /*0x506d*/ .byte 0x0 /*0x506e*/ .byte 0x0 /*0x506f*/ .byte 0x0 /*0x5070*/ .byte 0x87 /*0x5071*/ .byte 0xc5 /*0x5072*/ .byte 0x89 /*0x5073*/ .byte 0x64 /*0x5074*/ .byte 0x0 /*0x5075*/ .byte 0xe1 /*0x5076*/ .byte 0xe5 /*0x5077*/ .byte 0x50 /*0x5078*/ .byte 0x51 /*0x5079*/ .byte 0x52 /*0x507a*/ .byte 0x4f /*0x507b*/ .byte 0xe9 /*0x507c*/ .byte 0x0 /*0x507d*/ .byte 0xe3 /*0x507e*/ .byte 0xe7 /*0x507f*/ .byte 0x65 /*0x5080*/ .byte 0x0 /*0x5081*/ .byte 0x0 /*0x5082*/ .byte 0x0 /*0x5083*/ .byte 0x29 /*0x5084*/ .byte 0x1a /*0x5085*/ .byte 0x15 /*0x5086*/ .byte 0x17 /*0x5087*/ .byte 0x1c /*0x5088*/ .byte 0x18 /*0x5089*/ .byte 0xc /*0x508a*/ .byte 0x12 /*0x508b*/ .byte 0x13 /*0x508c*/ .byte 0x4 /*0x508d*/ .byte 0x16 /*0x508e*/ .byte 0x7 /*0x508f*/ .byte 0x9 /*0x5090*/ .byte 0xa /*0x5091*/ .byte 0xb /*0x5092*/ .byte 0xd /*0x5093*/ .byte 0xe /*0x5094*/ .byte 0xf /*0x5095*/ .byte 0x33 /*0x5096*/ .byte 0x34 /*0x5097*/ .byte 0x1d /*0x5098*/ .byte 0x1b /*0x5099*/ .byte 0x6 /*0x509a*/ .byte 0x19 /*0x509b*/ .byte 0x5 /*0x509c*/ .byte 0x11 /*0x509d*/ .byte 0x38 /*0x509e*/ .byte 0x28 /*0x509f*/ .byte 0x2a /*0x50a0*/ .byte 0x2b /*0x50a1*/ .byte 0x29 /*0x50a2*/ .byte 0x35 /*0x50a3*/ .byte 0x1e /*0x50a4*/ .byte 0x1f /*0x50a5*/ .byte 0x20 /*0x50a6*/ .byte 0x21 /*0x50a7*/ .byte 0x22 /*0x50a8*/ .byte 0x23 /*0x50a9*/ .byte 0x24 /*0x50aa*/ .byte 0x25 /*0x50ab*/ .byte 0x26 /*0x50ac*/ .byte 0x27 /*0x50ad*/ .byte 0x2d /*0x50ae*/ .byte 0x2e /*0x50af*/ .byte 0x2f /*0x50b0*/ .byte 0x30 /*0x50b1*/ .byte 0x31 /*0x50b2*/ .byte 0x10 /*0x50b3*/ .byte 0x36 /*0x50b4*/ .byte 0x37 /*0x50b5*/ .byte 0x52 /*0x50b6*/ .byte 0x2a /*0x50b7*/ .byte 0x4a /*0x50b8*/ .byte 0x4b /*0x50b9*/ .byte 0x46 /*0x50ba*/ .byte 0x47 /*0x50bb*/ .byte 0x48 /*0x50bc*/ .byte 0x52 /*0x50bd*/ .byte 0x50 /*0x50be*/ .byte 0x51 /*0x50bf*/ .byte 0x4f /*0x50c0*/ .byte 0x4c /*0x50c1*/ .byte 0x4d /*0x50c2*/ .byte 0x4e /*0x50c3*/ .byte 0xc4 /*0x50c4*/ .byte 0x49 /*0x50c5*/ .byte 0x50 /*0x50c6*/ .byte 0x51 /*0x50c7*/ .byte 0x4f /*0x50c8*/ .byte 0xa6 /*0x50c9*/ .byte 0xa4 /*0x50ca*/ .byte 0xa7 /*0x50cb*/ .byte 0xa9 /*0x50cc*/ .byte 0xaa /*0x50cd*/ .byte 0xa8 /*0x50ce*/ .byte 0x65 /*0x50cf*/ .byte 0xc3 /*0x50d0*/ .byte 0x4c /*0x50d1*/ .byte 0x39 /*0x50d2*/ .byte 0x35 /*0x50d3*/ .byte 0x29 /*0x50d4*/ .byte 0x3a /*0x50d5*/ .byte 0x3b /*0x50d6*/ .byte 0x3c /*0x50d7*/ .byte 0x3d /*0x50d8*/ .byte 0x3e /*0x50d9*/ .byte 0x3f /*0x50da*/ .byte 0x40 /*0x50db*/ .byte 0x41 /*0x50dc*/ .byte 0x42 /*0x50dd*/ .byte 0x43 /*0x50de*/ .byte 0x44 /*0x50df*/ .byte 0x45 /*0x50e0*/ .byte 0xc5 /*0x50e1*/ .byte 0xc6 /*0x50e2*/ .byte 0xc7 /*0x50e3*/ .byte 0x8b /*0x50e4*/ .byte 0x8a /*0x50e5*/ .byte 0x88 /*0x50e6*/ .byte 0x52 /*0x50e7*/ .byte 0x2a /*0x50e8*/ .byte 0x4a /*0x50e9*/ .byte 0x4b /*0x50ea*/ .byte 0x46 /*0x50eb*/ .byte 0x47 /*0x50ec*/ .byte 0x48 /*0x50ed*/ .byte 0x52 /*0x50ee*/ .byte 0x50 /*0x50ef*/ .byte 0x51 /*0x50f0*/ .byte 0x4f /*0x50f1*/ .byte 0x4c /*0x50f2*/ .byte 0x4d /*0x50f3*/ .byte 0x4e /*0x50f4*/ .byte 0x0 /*0x50f5*/ .byte 0x49 /*0x50f6*/ .byte 0x50 /*0x50f7*/ .byte 0x51 /*0x50f8*/ .byte 0x4f /*0x50f9*/ .byte 0xa6 /*0x50fa*/ .byte 0xa4 /*0x50fb*/ .byte 0xa7 /*0x50fc*/ .byte 0xa9 /*0x50fd*/ .byte 0xaa /*0x50fe*/ .byte 0xa8 /*0x50ff*/ .byte 0x65 /*0x5100*/ .byte 0x0 /*0x5101*/ .byte 0x4c /*0x5102*/ .byte 0x39 /*0x5103*/ .byte 0x35 /*0x5104*/ .byte 0x29 /*0x5105*/ .byte 0x3a /*0x5106*/ .byte 0x3b /*0x5107*/ .byte 0x3c /*0x5108*/ .byte 0x3d /*0x5109*/ .byte 0x3e /*0x510a*/ .byte 0x3f /*0x510b*/ .byte 0x40 /*0x510c*/ .byte 0x41 /*0x510d*/ .byte 0x42 /*0x510e*/ .byte 0x43 /*0x510f*/ .byte 0x44 /*0x5110*/ .byte 0x45 /*0x5111*/ .byte 0x0 /*0x5112*/ .byte 0x0 /*0x5113*/ .byte 0x0 /*0x5114*/ .byte 0x8b /*0x5115*/ .byte 0x8a /*0x5116*/ .byte 0x88 /*0x5117*/ .byte 0x0 data_5118: /*0x5118*/ .byte 0x0 /*0x5119*/ .byte 0x0 /*0x511a*/ .byte 0x0 /*0x511b*/ .byte 0x0 /*0x511c*/ .byte 0x32 /*0x511d*/ .byte 0x0 /*0x511e*/ .byte 0x0 /*0x511f*/ .byte 0x0 /*0x5120*/ .byte 0xc8 /*0x5121*/ .byte 0x0 /*0x5122*/ .byte 0x0 /*0x5123*/ .byte 0x0 /*0x5124*/ .byte 0xf4 /*0x5125*/ .byte 0x1 /*0x5126*/ .byte 0x0 /*0x5127*/ .byte 0x0 /*0x5128*/ .byte 0xe8 /*0x5129*/ .byte 0x3 /*0x512a*/ .byte 0x0 /*0x512b*/ .byte 0x0 /*0x512c*/ .byte 0x8 /*0x512d*/ .byte 0x7 /*0x512e*/ .byte 0x0 /*0x512f*/ .byte 0x0 /*0x5130*/ .byte 0x80 /*0x5131*/ .byte 0xc /*0x5132*/ .byte 0x0 /*0x5133*/ .byte 0x0 /*0x5134*/ .byte 0x0 /*0x5135*/ .byte 0x0 /*0x5136*/ .byte 0x0 /*0x5137*/ .byte 0x0 /*0x5138*/ .byte 0xc8 /*0x5139*/ .byte 0x0 /*0x513a*/ .byte 0x0 /*0x513b*/ .byte 0x0 /*0x513c*/ .byte 0x2c /*0x513d*/ .byte 0x1 /*0x513e*/ .byte 0x0 /*0x513f*/ .byte 0x0 /*0x5140*/ .byte 0xf4 /*0x5141*/ .byte 0x1 /*0x5142*/ .byte 0x0 /*0x5143*/ .byte 0x0 /*0x5144*/ .byte 0x20 /*0x5145*/ .byte 0x3 /*0x5146*/ .byte 0x0 /*0x5147*/ .byte 0x0 /*0x5148*/ .byte 0xb0 /*0x5149*/ .byte 0x4 /*0x514a*/ .byte 0x0 /*0x514b*/ .byte 0x0 /*0x514c*/ .byte 0xc0 /*0x514d*/ .byte 0x8 /*0x514e*/ .byte 0x0 /*0x514f*/ .byte 0x0 update_handlers: /*0x5150*/ .word flash_erase_cmd /*0x5154*/ .word flash_read_write_cmd /*0x5158*/ .word flash_crc_cmd /*0x515c*/ .word update_start_cmd /*0x5160*/ .word reset_cmd /*0x5164*/ .word nop_cmd data_5168: /*0x5168*/ .word data_5188 /*0x516c*/ .byte 0x0 /*0x516d*/ .byte 0x0 /*0x516e*/ .byte 0x0 /*0x516f*/ .byte 0x20 /*0x5170*/ .byte 0xcc /*0x5171*/ .byte 0x0 /*0x5172*/ .byte 0x0 /*0x5173*/ .byte 0x0 /*0x5174*/ .byte 0x28 /*0x5175*/ .byte 0x4d /*0x5176*/ .byte 0x0 /*0x5177*/ .byte 0x0 data_5178: /*0x5178*/ .word data_5254 /*0x517c*/ .byte 0xcc /*0x517d*/ .byte 0x0 /*0x517e*/ .byte 0x0 /*0x517f*/ .byte 0x20 /*0x5180*/ .byte 0x4 /*0x5181*/ .byte 0xe /*0x5182*/ .byte 0x0 /*0x5183*/ .byte 0x0 /*0x5184*/ .byte 0x38 /*0x5185*/ .byte 0x4d /*0x5186*/ .byte 0x0 /*0x5187*/ .byte 0x0 data_5188: /*0x5188*/ .byte 0x1 /*0x5189*/ .byte 0x0 /*0x518a*/ .byte 0x0 /*0x518b*/ .byte 0x0 /*0x518c*/ .byte 0x0 /*0x518d*/ .byte 0x0 /*0x518e*/ .byte 0x0 /*0x518f*/ .byte 0x0 /*0x5190*/ .byte 0x0 /*0x5191*/ .byte 0x0 /*0x5192*/ .byte 0x0 /*0x5193*/ .byte 0x0 /*0x5194*/ .byte 0x0 /*0x5195*/ .byte 0x0 /*0x5196*/ .byte 0x0 /*0x5197*/ .byte 0x0 /*0x5198*/ .byte 0x1 /*0x5199*/ .byte 0x0 /*0x519a*/ .byte 0x0 /*0x519b*/ .byte 0x0 /*0x519c*/ .byte 0x1 /*0x519d*/ .byte 0x0 /*0x519e*/ .byte 0x0 /*0x519f*/ .byte 0x0 /*0x51a0*/ .byte 0x1 /*0x51a1*/ .byte 0x0 /*0x51a2*/ .byte 0x0 /*0x51a3*/ .byte 0x0 /*0x51a4*/ .byte 0x0 /*0x51a5*/ .byte 0x0 /*0x51a6*/ .byte 0x0 /*0x51a7*/ .byte 0x0 /*0x51a8*/ .byte 0x1 /*0x51a9*/ .byte 0x0 /*0x51aa*/ .byte 0x0 /*0x51ab*/ .byte 0x0 /*0x51ac*/ .byte 0x1 /*0x51ad*/ .byte 0x0 /*0x51ae*/ .byte 0x0 /*0x51af*/ .byte 0x0 /*0x51b0*/ .byte 0x0 /*0x51b1*/ .byte 0x0 /*0x51b2*/ .byte 0x0 /*0x51b3*/ .byte 0x0 /*0x51b4*/ .byte 0x0 /*0x51b5*/ .byte 0x0 /*0x51b6*/ .byte 0x0 /*0x51b7*/ .byte 0x0 /*0x51b8*/ .byte 0x0 /*0x51b9*/ .byte 0x0 /*0x51ba*/ .byte 0x0 /*0x51bb*/ .byte 0x0 /*0x51bc*/ .byte 0x0 /*0x51bd*/ .byte 0x0 /*0x51be*/ .byte 0x0 /*0x51bf*/ .byte 0x0 /*0x51c0*/ .byte 0xbc /*0x51c1*/ .byte 0x4f /*0x51c2*/ .byte 0x0 /*0x51c3*/ .byte 0x0 /*0x51c4*/ .byte 0x0 /*0x51c5*/ .byte 0x0 /*0x51c6*/ .byte 0x0 /*0x51c7*/ .byte 0x0 /*0x51c8*/ .byte 0xc0 /*0x51c9*/ .byte 0x4f /*0x51ca*/ .byte 0x0 /*0x51cb*/ .byte 0x0 /*0x51cc*/ .byte 0x0 /*0x51cd*/ .byte 0x0 /*0x51ce*/ .byte 0x0 /*0x51cf*/ .byte 0x0 /*0x51d0*/ .byte 0x0 /*0x51d1*/ .byte 0x0 /*0x51d2*/ .byte 0xff /*0x51d3*/ .byte 0xff /*0x51d4*/ .byte 0x1 /*0x51d5*/ .byte 0xff /*0x51d6*/ .byte 0x0 /*0x51d7*/ .byte 0x0 /*0x51d8*/ .byte 0x0 /*0x51d9*/ .byte 0x0 /*0x51da*/ .byte 0x0 /*0x51db*/ .byte 0x0 /*0x51dc*/ .byte 0x0 /*0x51dd*/ .byte 0x0 /*0x51de*/ .byte 0x0 /*0x51df*/ .byte 0x0 /*0x51e0*/ .byte 0x0 /*0x51e1*/ .byte 0x0 /*0x51e2*/ .byte 0x0 /*0x51e3*/ .byte 0x0 /*0x51e4*/ .byte 0x0 /*0x51e5*/ .byte 0x0 /*0x51e6*/ .byte 0x0 /*0x51e7*/ .byte 0x0 /*0x51e8*/ .byte 0x0 /*0x51e9*/ .byte 0x0 /*0x51ea*/ .byte 0x0 /*0x51eb*/ .byte 0x0 /*0x51ec*/ .byte 0x0 /*0x51ed*/ .byte 0x0 /*0x51ee*/ .byte 0x0 /*0x51ef*/ .byte 0x0 /*0x51f0*/ .byte 0x0 /*0x51f1*/ .byte 0x0 /*0x51f2*/ .byte 0x0 /*0x51f3*/ .byte 0x0 /*0x51f4*/ .byte 0x0 /*0x51f5*/ .byte 0x0 /*0x51f6*/ .byte 0x0 /*0x51f7*/ .byte 0x0 /*0x51f8*/ .byte 0x0 /*0x51f9*/ .byte 0x0 /*0x51fa*/ .byte 0x0 /*0x51fb*/ .byte 0x0 /*0x51fc*/ .byte 0x0 /*0x51fd*/ .byte 0x0 /*0x51fe*/ .byte 0x0 /*0x51ff*/ .byte 0x0 /*0x5200*/ .byte 0x0 /*0x5201*/ .byte 0x0 /*0x5202*/ .byte 0x0 /*0x5203*/ .byte 0x0 /*0x5204*/ .byte 0x0 /*0x5205*/ .byte 0x0 /*0x5206*/ .byte 0x0 /*0x5207*/ .byte 0x0 /*0x5208*/ .byte 0x2c /*0x5209*/ .byte 0x0 /*0x520a*/ .byte 0x38 /*0x520b*/ .byte 0x42 /*0x520c*/ .byte 0x30 /*0x520d*/ .byte 0x0 /*0x520e*/ .byte 0x38 /*0x520f*/ .byte 0x42 /*0x5210*/ .byte 0x34 /*0x5211*/ .byte 0x0 /*0x5212*/ .byte 0x38 /*0x5213*/ .byte 0x42 /*0x5214*/ .byte 0x38 /*0x5215*/ .byte 0x0 /*0x5216*/ .byte 0x38 /*0x5217*/ .byte 0x42 /*0x5218*/ .byte 0x3c /*0x5219*/ .byte 0x0 /*0x521a*/ .byte 0x38 /*0x521b*/ .byte 0x42 /*0x521c*/ .byte 0x24 /*0x521d*/ .byte 0x0 /*0x521e*/ .byte 0x3a /*0x521f*/ .byte 0x42 /*0x5220*/ .byte 0x28 /*0x5221*/ .byte 0x0 /*0x5222*/ .byte 0x3a /*0x5223*/ .byte 0x42 /*0x5224*/ .byte 0x2c /*0x5225*/ .byte 0x0 /*0x5226*/ .byte 0x3a /*0x5227*/ .byte 0x42 /*0x5228*/ .byte 0x30 /*0x5229*/ .byte 0x0 /*0x522a*/ .byte 0x3a /*0x522b*/ .byte 0x42 /*0x522c*/ .byte 0x34 /*0x522d*/ .byte 0x0 /*0x522e*/ .byte 0x3a /*0x522f*/ .byte 0x42 /*0x5230*/ .byte 0x14 /*0x5231*/ .byte 0x0 /*0x5232*/ .byte 0x3c /*0x5233*/ .byte 0x42 /*0x5234*/ .byte 0x18 /*0x5235*/ .byte 0x0 /*0x5236*/ .byte 0x3c /*0x5237*/ .byte 0x42 /*0x5238*/ .byte 0x1c /*0x5239*/ .byte 0x0 /*0x523a*/ .byte 0x3c /*0x523b*/ .byte 0x42 /*0x523c*/ .byte 0x0 /*0x523d*/ .byte 0x0 /*0x523e*/ .byte 0x38 /*0x523f*/ .byte 0x42 /*0x5240*/ .byte 0x4 /*0x5241*/ .byte 0x0 /*0x5242*/ .byte 0x38 /*0x5243*/ .byte 0x42 /*0x5244*/ .byte 0x0 /*0x5245*/ .byte 0x0 /*0x5246*/ .byte 0x0 /*0x5247*/ .byte 0x0 /*0x5248*/ .byte 0x0 /*0x5249*/ .byte 0x0 /*0x524a*/ .byte 0x0 /*0x524b*/ .byte 0x0 /*0x524c*/ .byte 0x0 /*0x524d*/ .byte 0x0 /*0x524e*/ .byte 0x0 /*0x524f*/ .byte 0x0 /*0x5250*/ .byte 0x1 /*0x5251*/ .byte 0x0 /*0x5252*/ .byte 0x0 /*0x5253*/ .byte 0x0 data_5254: