.include "asm/macros.inc" .include "global.inc" .section .text .balign 4, 0 thumb_func_start MOD16_021D74E0 MOD16_021D74E0: ; 0x021D74E0 push {r3, r4, r5, lr} sub sp, #0x20 mov r1, #0 add r5, r0, #0 mov r0, #0x36 add r2, r1, #0 bl FUN_0200433C mov r2, #1 mov r0, #3 mov r1, #0x25 lsl r2, r2, #0x12 bl FUN_0201681C add r0, r5, #0 mov r1, #4 mov r2, #0x25 bl FUN_02006268 add r4, r0, #0 bne _021D750E bl ErrorHandling _021D750E: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] mov r0, #8 mov r1, #0x25 bl FUN_0201C24C add r0, r5, #0 bl FUN_0200628C add r5, r0, #0 ldr r0, _021D7584 ; =MOD16_021D7650 add r1, r4, #0 bl FUN_02015F10 bl FUN_02015F1C bl FUN_0201CC08 mov r0, #4 bl FUN_0201CC24 cmp r0, #1 beq _021D7546 bl ErrorHandling _021D7546: mov r0, #0x25 bl MOD16_021D79FC ldr r0, [r5] add r1, sp, #0 str r0, [sp] ldr r0, [r5, #4] str r0, [sp, #4] ldr r0, [r5, #8] str r0, [sp, #8] ldr r0, [r5, #0xc] str r0, [sp, #0xc] ldr r0, [r5, #0x18] str r0, [sp, #0x18] ldr r0, [r5, #0x10] str r0, [sp, #0x10] ldr r0, [r5, #0x14] str r0, [sp, #0x14] ldr r0, [r5, #0x1c] str r0, [sp, #0x1c] mov r0, #0x25 bl MOD16_021D76AC str r0, [r4] mov r0, #1 mov r1, #0x2a bl FUN_020051EC mov r0, #1 add sp, #0x20 pop {r3, r4, r5, pc} .align 2, 0 _021D7584: .word MOD16_021D7650 thumb_func_end MOD16_021D74E0 thumb_func_start MOD16_021D7588 MOD16_021D7588: ; 0x021D7588 push {r3, r4, r5, lr} add r4, r1, #0 bl FUN_02006278 ldr r1, [r4] add r5, r0, #0 cmp r1, #3 bhi _021D7608 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021D75A4: ; jump table .short _021D75AC - _021D75A4 - 2 ; case 0 .short _021D75C4 - _021D75A4 - 2 ; case 1 .short _021D75DA - _021D75A4 - 2 ; case 2 .short _021D75E6 - _021D75A4 - 2 ; case 3 _021D75AC: bl MOD16_021D7664 mov r0, #0xf mvn r0, r0 mov r1, #0x3f mov r2, #3 bl FUN_0200A274 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D7608 _021D75C4: ldr r0, [r5] bl MOD16_021D7804 cmp r0, #1 bne _021D7608 mov r0, #0 str r0, [r5] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D7608 _021D75DA: bl MOD16_021D7684 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021D7608 _021D75E6: bl MOD16_021D76A4 cmp r0, #0 beq _021D7608 mov r0, #0 bl FUN_0200E388 mov r0, #1 bl FUN_0200E388 ldr r0, _021D760C ; =0x04000050 mov r1, #0 strh r1, [r0] ldr r0, _021D7610 ; =0x04001050 strh r1, [r0] mov r0, #1 pop {r3, r4, r5, pc} _021D7608: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 _021D760C: .word 0x04000050 _021D7610: .word 0x04001050 thumb_func_end MOD16_021D7588 thumb_func_start MOD16_021D7614 MOD16_021D7614: ; 0x021D7614 push {r4, lr} add r4, r0, #0 bl FUN_02006278 mov r0, #0 add r1, r0, #0 bl FUN_02015F10 bl FUN_0201CD04 cmp r0, #1 beq _021D7630 bl ErrorHandling _021D7630: bl MOD16_021D7A10 bl FUN_0201C29C add r0, r4, #0 bl FUN_0200627C mov r0, #0x25 bl FUN_020168D0 mov r0, #1 mov r1, #0x7f bl FUN_020051EC mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021D7614 thumb_func_start MOD16_021D7650 MOD16_021D7650: ; 0x021D7650 push {r3, lr} ldr r0, [r0] cmp r0, #0 beq _021D765C bl MOD16_021D7A24 _021D765C: bl FUN_0201C30C pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021D7650 thumb_func_start MOD16_021D7664 MOD16_021D7664: ; 0x021D7664 push {lr} sub sp, #0xc mov r0, #6 str r0, [sp] mov r1, #1 str r1, [sp, #4] mov r0, #0x25 str r0, [sp, #8] mov r0, #0 add r2, r1, #0 add r3, r0, #0 bl FUN_0200E1D0 add sp, #0xc pop {pc} .align 2, 0 thumb_func_end MOD16_021D7664 thumb_func_start MOD16_021D7684 MOD16_021D7684: ; 0x021D7684 push {lr} sub sp, #0xc mov r0, #6 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0x25 str r0, [sp, #8] mov r0, #0 add r1, r0, #0 add r2, r0, #0 add r3, r0, #0 bl FUN_0200E1D0 add sp, #0xc pop {pc} thumb_func_end MOD16_021D7684 thumb_func_start MOD16_021D76A4 MOD16_021D76A4: ; 0x021D76A4 ldr r3, _021D76A8 ; =0x0200E309 bx r3 .align 2, 0 _021D76A8: .word 0x0200E309 thumb_func_end MOD16_021D76A4 thumb_func_start MOD16_021D76AC MOD16_021D76AC: ; 0x021D76AC push {r4, r5, r6, r7, lr} sub sp, #0x2c add r5, r1, #0 ldr r1, _021D77D0 ; =0x00001D10 add r7, r0, #0 bl FUN_02016998 add r4, r0, #0 bne _021D76C2 bl ErrorHandling _021D76C2: ldr r2, _021D77D0 ; =0x00001D10 add r0, r4, #0 mov r1, #0 bl Call_FillMemWithValue str r7, [r4, #4] ldr r0, [r5, #0x1c] str r0, [r4, #8] add r0, r7, #0 bl MOD16_021DA858 ldr r1, _021D77D4 ; =0x00001A0C str r0, [r4, r1] add r0, r7, #0 bl MOD16_021DA858 ldr r1, _021D77D8 ; =0x00001A10 str r0, [r4, r1] add r0, r7, #0 bl MOD16_021DA858 ldr r1, _021D77DC ; =0x00001A14 str r0, [r4, r1] add r0, r7, #0 bl MOD16_021DA858 ldr r1, _021D77E0 ; =0x00001A18 str r0, [r4, r1] add r0, r7, #0 bl MOD16_021DA5FC mov r1, #0x1d lsl r1, r1, #8 str r0, [r4, r1] add r0, r7, #0 bl MOD16_021DA5FC ldr r1, _021D77E4 ; =0x00001D04 str r0, [r4, r1] add r0, r7, #0 bl MOD16_021DA5FC ldr r1, _021D77E8 ; =0x00001D08 str r0, [r4, r1] add r0, r7, #0 bl MOD16_021DA5FC ldr r1, _021D77EC ; =0x00001D0C str r0, [r4, r1] ldr r0, [r5] str r0, [sp, #8] ldr r0, [r5, #4] str r0, [sp, #0xc] ldr r0, [r5, #8] str r0, [sp, #0x10] ldr r0, [r5, #0xc] str r0, [sp, #0x14] ldr r0, [r5, #0x10] str r0, [sp, #0x18] ldr r0, [r5, #0x14] str r0, [sp, #0x1c] ldr r0, [r5, #0x18] str r0, [sp, #0x20] ldr r0, [r5, #0x1c] bl FUN_0208A328 str r0, [sp, #0x24] ldr r0, [r5, #0x1c] bl FUN_0208A330 str r0, [sp, #0x28] add r0, r4, #0 add r0, #0xc add r1, sp, #8 add r2, r7, #0 bl MOD16_021D9798 ldr r0, _021D77F0 ; =0x0000177C add r1, r7, #0 add r0, r4, r0 bl MOD16_021D8534 mov r0, #0 str r0, [sp, #4] ldr r0, _021D77F4 ; =0x00001A30 ldr r5, _021D77F8 ; =0x021FF418 add r6, r4, r0 _021D7770: ldr r3, [r5] cmp r3, #0 beq _021D777E add r0, r6, #0 add r1, r4, #0 add r2, r7, #0 blx r3 _021D777E: ldr r0, [sp, #4] add r5, r5, #4 add r0, r0, #1 add r6, #0x28 str r0, [sp, #4] cmp r0, #0xa blt _021D7770 mov r0, #0 str r0, [sp] mov r0, #0x6f lsl r0, r0, #6 ldr r5, _021D77FC ; =0x021FF3D8 add r6, r4, r0 _021D7798: ldr r3, [r5] cmp r3, #0 beq _021D77A6 add r0, r6, #0 add r1, r4, #0 add r2, r7, #0 blx r3 _021D77A6: ldr r0, [sp] add r5, r5, #4 add r0, r0, #1 add r6, #0x28 str r0, [sp] cmp r0, #8 blt _021D7798 ldr r1, _021D7800 ; =0x00001A1C add r0, r7, #0 add r1, r4, r1 add r2, r4, #0 mov r3, #1 bl MOD16_021DAE0C add r0, r4, #0 bl MOD16_021D847C add r0, r4, #0 add sp, #0x2c pop {r4, r5, r6, r7, pc} nop _021D77D0: .word 0x00001D10 _021D77D4: .word 0x00001A0C _021D77D8: .word 0x00001A10 _021D77DC: .word 0x00001A14 _021D77E0: .word 0x00001A18 _021D77E4: .word 0x00001D04 _021D77E8: .word 0x00001D08 _021D77EC: .word 0x00001D0C _021D77F0: .word 0x0000177C _021D77F4: .word 0x00001A30 _021D77F8: .word 0x021FF418 _021D77FC: .word 0x021FF3D8 _021D7800: .word 0x00001A1C thumb_func_end MOD16_021D76AC thumb_func_start MOD16_021D7804 MOD16_021D7804: ; 0x021D7804 push {r4, lr} add r4, r0, #0 bne _021D780E bl ErrorHandling _021D780E: add r0, r4, #0 add r0, #0xc bl MOD16_021D9F8C ldr r0, _021D79D8 ; =0x00001A14 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7872 ldr r0, _021D79DC ; =0x00001A0C ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7872 ldr r0, _021D79E0 ; =0x00001A18 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7872 ldr r0, _021D79E4 ; =0x00001A10 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7872 ldr r0, _021D79E8 ; =0x00001D08 mov r1, #0 ldr r0, [r4, r0] bl MOD16_021DA7B0 ldr r0, _021D79EC ; =0x00001D0C mov r1, #0 ldr r0, [r4, r0] bl MOD16_021DA7B0 mov r0, #0x1d lsl r0, r0, #8 ldr r0, [r4, r0] mov r1, #0 bl MOD16_021DA7B0 ldr r0, _021D79F0 ; =0x00001D04 mov r1, #0 ldr r0, [r4, r0] bl MOD16_021DA7B0 b _021D789C _021D7872: ldr r0, _021D79E8 ; =0x00001D08 mov r1, #1 ldr r0, [r4, r0] bl MOD16_021DA7B0 ldr r0, _021D79EC ; =0x00001D0C mov r1, #1 ldr r0, [r4, r0] bl MOD16_021DA7B0 mov r0, #0x1d lsl r0, r0, #8 ldr r0, [r4, r0] mov r1, #1 bl MOD16_021DA7B0 ldr r0, _021D79F0 ; =0x00001D04 mov r1, #1 ldr r0, [r4, r0] bl MOD16_021DA7B0 _021D789C: ldr r0, _021D79E8 ; =0x00001D08 ldr r0, [r4, r0] bl MOD16_021DA694 ldr r0, _021D79EC ; =0x00001D0C ldr r0, [r4, r0] bl MOD16_021DA694 mov r0, #0x1d lsl r0, r0, #8 ldr r0, [r4, r0] bl MOD16_021DA694 ldr r0, _021D79F0 ; =0x00001D04 ldr r0, [r4, r0] bl MOD16_021DA694 ldr r0, _021D79E8 ; =0x00001D08 ldr r0, [r4, r0] bl MOD16_021DA71C ldr r0, _021D79EC ; =0x00001D0C ldr r0, [r4, r0] bl MOD16_021DA71C mov r0, #0x1d lsl r0, r0, #8 ldr r0, [r4, r0] bl MOD16_021DA71C ldr r0, _021D79F0 ; =0x00001D04 ldr r0, [r4, r0] bl MOD16_021DA71C ldr r0, _021D79DC ; =0x00001A0C ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7910 ldr r0, _021D79E0 ; =0x00001A18 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7910 ldr r0, _021D79E4 ; =0x00001A10 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7910 ldr r1, _021D79D8 ; =0x00001A14 ldr r0, [r4, r1] sub r1, #0x10 ldr r1, [r4, r1] bl MOD16_021DA8A0 _021D7910: ldr r0, _021D79D8 ; =0x00001A14 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7940 ldr r0, _021D79E0 ; =0x00001A18 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7940 ldr r0, _021D79E4 ; =0x00001A10 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7940 ldr r1, _021D79DC ; =0x00001A0C ldr r0, [r4, r1] sub r1, #0x10 ldr r1, [r4, r1] bl MOD16_021DA8A0 _021D7940: ldr r0, _021D79D8 ; =0x00001A14 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7970 ldr r0, _021D79DC ; =0x00001A0C ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7970 ldr r0, _021D79E4 ; =0x00001A10 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D7970 ldr r1, _021D79E0 ; =0x00001A18 ldr r0, [r4, r1] sub r1, #0x10 ldr r1, [r4, r1] bl MOD16_021DA8A0 _021D7970: ldr r0, _021D79D8 ; =0x00001A14 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D79A0 ldr r0, _021D79DC ; =0x00001A0C ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D79A0 ldr r0, _021D79E0 ; =0x00001A18 ldr r0, [r4, r0] bl MOD16_021DA8F0 cmp r0, #0 bne _021D79A0 ldr r1, _021D79E4 ; =0x00001A10 ldr r0, [r4, r1] sub r1, #0x10 ldr r1, [r4, r1] bl MOD16_021DA8A0 _021D79A0: bl FUN_020222AC ldr r0, _021D79F4 ; =0x0000177C add r0, r4, r0 bl MOD16_021D86B4 mov r0, #0 add r1, r0, #0 bl FUN_020222B4 ldr r1, _021D79F8 ; =0x00001A04 mov r0, #0 str r0, [r4, r1] add r2, r1, #4 str r0, [r4, r2] add r2, r1, #0 sub r2, #8 str r0, [r4, r2] sub r1, r1, #4 str r0, [r4, r1] ldr r1, [r4] cmp r1, #1 bne _021D79D6 add r0, r4, #0 bl MOD16_021D8298 mov r0, #1 _021D79D6: pop {r4, pc} .align 2, 0 _021D79D8: .word 0x00001A14 _021D79DC: .word 0x00001A0C _021D79E0: .word 0x00001A18 _021D79E4: .word 0x00001A10 _021D79E8: .word 0x00001D08 _021D79EC: .word 0x00001D0C _021D79F0: .word 0x00001D04 _021D79F4: .word 0x0000177C _021D79F8: .word 0x00001A04 thumb_func_end MOD16_021D7804 thumb_func_start MOD16_021D79FC MOD16_021D79FC: ; 0x021D79FC push {r4, lr} add r4, r0, #0 bl MOD16_021D8404 add r0, r4, #0 bl MOD16_021D8424 bl MOD16_021D84A0 pop {r4, pc} thumb_func_end MOD16_021D79FC thumb_func_start MOD16_021D7A10 MOD16_021D7A10: ; 0x021D7A10 push {r3, lr} bl FUN_02009FA0 bl FUN_0201D12C bl FUN_0201E08C bl MOD16_021D8514 pop {r3, pc} thumb_func_end MOD16_021D7A10 thumb_func_start MOD16_021D7A24 MOD16_021D7A24: ; 0x021D7A24 push {r3, lr} ldr r1, _021D7A34 ; =0x0000177C add r0, r0, r1 bl MOD16_021D86DC bl FUN_02009F80 pop {r3, pc} .align 2, 0 _021D7A34: .word 0x0000177C thumb_func_end MOD16_021D7A24 thumb_func_start MOD16_021D7A38 MOD16_021D7A38: ; 0x021D7A38 push {r4, lr} add r4, r0, #0 bne _021D7A42 bl ErrorHandling _021D7A42: mov r0, #0x1d lsl r0, r0, #8 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021D7A38 thumb_func_start MOD16_021D7A4C MOD16_021D7A4C: ; 0x021D7A4C push {r4, lr} add r4, r0, #0 bne _021D7A56 bl ErrorHandling _021D7A56: ldr r0, _021D7A5C ; =0x00001D04 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 _021D7A5C: .word 0x00001D04 thumb_func_end MOD16_021D7A4C thumb_func_start MOD16_021D7A60 MOD16_021D7A60: ; 0x021D7A60 push {r4, lr} add r4, r0, #0 bne _021D7A6A bl ErrorHandling _021D7A6A: ldr r0, _021D7A70 ; =0x00001D08 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 _021D7A70: .word 0x00001D08 thumb_func_end MOD16_021D7A60 thumb_func_start MOD16_021D7A74 MOD16_021D7A74: ; 0x021D7A74 push {r4, lr} add r4, r0, #0 bne _021D7A7E bl ErrorHandling _021D7A7E: ldr r0, _021D7A84 ; =0x00001D0C ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 _021D7A84: .word 0x00001D0C thumb_func_end MOD16_021D7A74 thumb_func_start MOD16_021D7A88 MOD16_021D7A88: ; 0x021D7A88 push {r4, lr} add r4, r0, #0 bne _021D7A92 bl ErrorHandling _021D7A92: ldr r0, _021D7A98 ; =0x00001A0C ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 _021D7A98: .word 0x00001A0C thumb_func_end MOD16_021D7A88 thumb_func_start MOD16_021D7A9C MOD16_021D7A9C: ; 0x021D7A9C push {r4, lr} add r4, r0, #0 bne _021D7AA6 bl ErrorHandling _021D7AA6: ldr r0, _021D7AAC ; =0x00001A10 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 _021D7AAC: .word 0x00001A10 thumb_func_end MOD16_021D7A9C thumb_func_start MOD16_021D7AB0 MOD16_021D7AB0: ; 0x021D7AB0 push {r4, lr} add r4, r0, #0 bne _021D7ABA bl ErrorHandling _021D7ABA: ldr r0, _021D7AC0 ; =0x00001A14 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 _021D7AC0: .word 0x00001A14 thumb_func_end MOD16_021D7AB0 thumb_func_start MOD16_021D7AC4 MOD16_021D7AC4: ; 0x021D7AC4 push {r4, lr} add r4, r0, #0 bne _021D7ACE bl ErrorHandling _021D7ACE: ldr r0, _021D7AD4 ; =0x00001A18 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 _021D7AD4: .word 0x00001A18 thumb_func_end MOD16_021D7AC4 thumb_func_start MOD16_021D7AD8 MOD16_021D7AD8: ; 0x021D7AD8 push {r4, lr} add r4, r0, #0 bne _021D7AE2 bl ErrorHandling _021D7AE2: ldr r0, _021D7AE8 ; =0x000019FC add r0, r4, r0 pop {r4, pc} .align 2, 0 _021D7AE8: .word 0x000019FC thumb_func_end MOD16_021D7AD8 thumb_func_start MOD16_021D7AEC MOD16_021D7AEC: ; 0x021D7AEC push {r4, lr} add r4, r0, #0 bne _021D7AF6 bl ErrorHandling _021D7AF6: mov r0, #0x1a lsl r0, r0, #8 add r0, r4, r0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021D7AEC thumb_func_start MOD16_021D7B00 MOD16_021D7B00: ; 0x021D7B00 push {r4, lr} add r4, r0, #0 bne _021D7B0A bl ErrorHandling _021D7B0A: ldr r0, _021D7B10 ; =0x00001A04 add r0, r4, r0 pop {r4, pc} .align 2, 0 _021D7B10: .word 0x00001A04 thumb_func_end MOD16_021D7B00 thumb_func_start MOD16_021D7B14 MOD16_021D7B14: ; 0x021D7B14 push {r4, lr} add r4, r0, #0 bne _021D7B1E bl ErrorHandling _021D7B1E: ldr r0, _021D7B24 ; =0x00001A08 add r0, r4, r0 pop {r4, pc} .align 2, 0 _021D7B24: .word 0x00001A08 thumb_func_end MOD16_021D7B14 thumb_func_start MOD16_021D7B28 MOD16_021D7B28: ; 0x021D7B28 push {r4, lr} add r4, r0, #0 bne _021D7B32 bl ErrorHandling _021D7B32: add r0, r4, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021D7B28 thumb_func_start MOD16_021D7B38 MOD16_021D7B38: ; 0x021D7B38 push {r4, lr} add r4, r0, #0 bne _021D7B42 bl ErrorHandling _021D7B42: add r4, #0xc add r0, r4, #0 pop {r4, pc} thumb_func_end MOD16_021D7B38 thumb_func_start MOD16_021D7B48 MOD16_021D7B48: ; 0x021D7B48 push {r4, lr} add r4, r0, #0 bne _021D7B52 bl ErrorHandling _021D7B52: ldr r0, _021D7B58 ; =0x0000177C add r0, r4, r0 pop {r4, pc} .align 2, 0 _021D7B58: .word 0x0000177C thumb_func_end MOD16_021D7B48 thumb_func_start MOD16_021D7B5C MOD16_021D7B5C: ; 0x021D7B5C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #0xa blt _021D7B6A bl ErrorHandling _021D7B6A: ldr r0, _021D7B78 ; =0x00001A30 add r1, r5, r0 mov r0, #0x28 mul r0, r4 add r0, r1, r0 pop {r3, r4, r5, pc} nop _021D7B78: .word 0x00001A30 thumb_func_end MOD16_021D7B5C thumb_func_start MOD16_021D7B7C MOD16_021D7B7C: ; 0x021D7B7C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #8 blt _021D7B8A bl ErrorHandling _021D7B8A: mov r0, #0x6f lsl r0, r0, #6 add r1, r5, r0 mov r0, #0x28 mul r0, r4 add r0, r1, r0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D7B7C thumb_func_start MOD16_021D7B98 MOD16_021D7B98: ; 0x021D7B98 push {r4, lr} add r4, r0, #0 cmp r1, #4 bhi _021D7BDE add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021D7BAC: ; jump table .short _021D7BB6 - _021D7BAC - 2 ; case 0 .short _021D7BC6 - _021D7BAC - 2 ; case 1 .short _021D7BBE - _021D7BAC - 2 ; case 2 .short _021D7BCE - _021D7BAC - 2 ; case 3 .short _021D7BCE - _021D7BAC - 2 ; case 4 _021D7BB6: mov r1, #1 bl FUN_02020208 pop {r4, pc} _021D7BBE: mov r1, #2 bl FUN_02020208 pop {r4, pc} _021D7BC6: mov r1, #3 bl FUN_02020208 pop {r4, pc} _021D7BCE: bl FUN_0202022C cmp r0, #0 beq _021D7BDE ldr r1, _021D7BE0 ; =0xFFFFE000 add r0, r4, #0 bl FUN_020201E4 _021D7BDE: pop {r4, pc} .align 2, 0 _021D7BE0: .word 0xFFFFE000 thumb_func_end MOD16_021D7B98 thumb_func_start MOD16_021D7BE4 MOD16_021D7BE4: ; 0x021D7BE4 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r2, #0 bl FUN_0202022C cmp r0, #3 bhi _021D7C6C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021D7C00: ; jump table .short _021D7C08 - _021D7C00 - 2 ; case 0 .short _021D7C22 - _021D7C00 - 2 ; case 1 .short _021D7C3C - _021D7C00 - 2 ; case 2 .short _021D7C56 - _021D7C00 - 2 ; case 3 _021D7C08: ldr r0, [r4] add r1, sp, #4 add r2, sp, #0 bl FUN_020119A4 str r5, [sp] ldr r0, [r4] ldr r1, [sp, #4] add r2, r5, #0 bl FUN_020118C4 add sp, #8 pop {r3, r4, r5, pc} _021D7C22: ldr r0, [r4] add r1, sp, #4 add r2, sp, #0 bl FUN_020119A4 sub r2, r5, #2 str r2, [sp] ldr r0, [r4] ldr r1, [sp, #4] bl FUN_020118C4 add sp, #8 pop {r3, r4, r5, pc} _021D7C3C: ldr r0, [r4] add r1, sp, #4 add r2, sp, #0 bl FUN_020119A4 sub r2, r5, #4 str r2, [sp] ldr r0, [r4] ldr r1, [sp, #4] bl FUN_020118C4 add sp, #8 pop {r3, r4, r5, pc} _021D7C56: ldr r0, [r4] add r1, sp, #4 add r2, sp, #0 bl FUN_020119A4 sub r2, r5, #2 str r2, [sp] ldr r0, [r4] ldr r1, [sp, #4] bl FUN_020118C4 _021D7C6C: add sp, #8 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D7BE4 thumb_func_start MOD16_021D7C70 MOD16_021D7C70: ; 0x021D7C70 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r6, r3, #0 bl MOD16_021D7BE4 add r0, r5, #0 bl FUN_0202022C cmp r0, #2 ldr r0, [r4] bge _021D7C90 add r1, r6, #0 bl FUN_02011AC0 pop {r4, r5, r6, pc} _021D7C90: ldr r1, [sp, #0x10] bl FUN_02011AC0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021D7C70 thumb_func_start MOD16_021D7C98 MOD16_021D7C98: ; 0x021D7C98 strb r1, [r0] strb r2, [r0, #1] ldr r1, [sp] strb r3, [r0, #2] strb r1, [r0, #3] bx lr thumb_func_end MOD16_021D7C98 thumb_func_start MOD16_021D7CA4 MOD16_021D7CA4: ; 0x021D7CA4 str r1, [r0] str r2, [r0, #8] ldr r2, [sp] ldr r1, [sp, #4] str r3, [r0, #4] str r2, [r0, #0xc] sub r1, r1, r2 str r1, [r0, #0x14] ldr r2, [sp, #8] ldr r1, [sp, #0xc] str r2, [r0, #0x10] sub r1, r1, r2 str r1, [r0, #0x18] ldr r1, [sp, #0x10] str r1, [r0, #0x20] mov r1, #0 str r1, [r0, #0x1c] bx lr thumb_func_end MOD16_021D7CA4 thumb_func_start MOD16_021D7CC8 MOD16_021D7CC8: ; 0x021D7CC8 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r5, r0, #0 ldr r1, [r5, #0x1c] ldr r0, [r5, #0x20] cmp r1, r0 bgt _021D7D94 mov r2, #0 str r2, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x18 str r0, [sp, #8] mov r0, #0x10 str r0, [sp, #0xc] ldr r1, [r5, #8] ldr r0, [r5] lsl r1, r1, #0x18 lsr r1, r1, #0x18 add r3, r2, #0 bl FUN_02018540 ldr r1, [r5, #0x14] ldr r6, [r5, #0x1c] add r0, r1, #0 ldr r4, [r5, #0x20] mul r0, r6 add r1, r4, #0 bl _s32_div_f ldr r1, [r5, #0x18] add r7, r0, #0 add r0, r1, #0 mul r0, r6 add r1, r4, #0 bl _s32_div_f ldr r1, [r5, #0xc] ldr r2, [r5, #0x10] add r1, r7, r1 add r4, r0, r2 cmp r1, #0 ble _021D7D4C mov r0, #0x20 lsl r2, r1, #0x18 str r0, [sp] lsr r2, r2, #0x18 str r2, [sp, #4] ldr r2, [r5, #4] sub r1, r0, r1 add r2, #0xc str r2, [sp, #8] mov r2, #0 lsl r1, r1, #0x18 str r2, [sp, #0xc] lsr r1, r1, #0x18 str r1, [sp, #0x10] str r0, [sp, #0x14] str r0, [sp, #0x18] ldr r1, [r5, #8] ldr r0, [r5] lsl r1, r1, #0x18 lsr r1, r1, #0x18 add r3, r2, #0 bl FUN_02018170 _021D7D4C: mov r0, #0x20 sub r3, r0, r4 cmp r3, #0 ble _021D7D7C lsl r1, r4, #0x18 str r0, [sp] lsr r1, r1, #0x18 str r1, [sp, #4] ldr r1, [r5, #4] mov r2, #0 add r1, #0xc str r1, [sp, #8] str r2, [sp, #0xc] str r2, [sp, #0x10] str r0, [sp, #0x14] str r0, [sp, #0x18] ldr r1, [r5, #8] lsl r3, r3, #0x18 lsl r1, r1, #0x18 ldr r0, [r5] lsr r1, r1, #0x18 lsr r3, r3, #0x18 bl FUN_02018170 _021D7D7C: ldr r1, [r5, #8] ldr r0, [r5] lsl r1, r1, #0x18 lsr r1, r1, #0x18 bl FUN_0201AC68 ldr r0, [r5, #0x1c] add sp, #0x1c add r0, r0, #1 str r0, [r5, #0x1c] mov r0, #0 pop {r4, r5, r6, r7, pc} _021D7D94: mov r0, #1 add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021D7CC8 thumb_func_start MOD16_021D7D9C MOD16_021D7D9C: ; 0x021D7D9C push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 add r6, r1, #0 mov r0, #4 add r1, r3, #0 add r7, r2, #0 str r3, [sp, #0x10] bl FUN_020219F4 mov r1, #1 str r1, [sp] add r1, r6, #0 mov r2, #3 mov r3, #2 add r4, r0, #0 bl FUN_02021B04 ldr r2, [sp, #0x10] add r0, r7, #0 mov r1, #2 bl MOD16_021DBBC8 mov r1, #0 add r6, r0, #0 str r1, [sp] mov r0, #0xff str r0, [sp, #4] ldr r0, _021D7E10 ; =0x00030201 add r2, r4, #0 str r0, [sp, #8] str r1, [sp, #0xc] add r0, r5, #0 mov r1, #2 mov r3, #0x16 bl FUN_0201BDE0 mov r1, #0 str r1, [sp] mov r0, #0xff str r0, [sp, #4] ldr r0, _021D7E10 ; =0x00030201 add r2, r6, #0 str r0, [sp, #8] str r1, [sp, #0xc] add r0, r5, #0 mov r1, #2 mov r3, #0x31 bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r6, #0 bl MOD16_021DBBAC add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021D7E10: .word 0x00030201 thumb_func_end MOD16_021D7D9C thumb_func_start MOD16_021D7E14 MOD16_021D7E14: ; 0x021D7E14 push {r4, r5, r6, lr} add r5, r0, #0 add r0, r1, #0 add r4, r2, #0 add r6, r3, #0 bl MOD16_021D9D04 cmp r0, #0 bne _021D7E36 mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r5, r0] add r1, r4, #0 add r2, r6, #0 bl MOD16_021D7E68 pop {r4, r5, r6, pc} _021D7E36: mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r5, r0] add r1, r4, #0 add r2, r6, #0 bl MOD16_021D7E48 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021D7E14 thumb_func_start MOD16_021D7E48 MOD16_021D7E48: ; 0x021D7E48 push {r4, r5, r6, lr} add r5, r1, #0 add r6, r2, #0 mov r1, #0xf mov r2, #2 bl MOD16_021DB388 add r1, r6, #0 add r2, r6, #0 add r3, r5, #0 add r4, r0, #0 bl MOD16_021D7D9C add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021D7E48 thumb_func_start MOD16_021D7E68 MOD16_021D7E68: ; 0x021D7E68 push {r3, r4, r5, r6, r7, lr} add r6, r2, #0 add r4, r0, #0 lsl r0, r6, #0x10 lsr r0, r0, #0x10 add r5, r1, #0 bl FUN_02069B40 add r7, r0, #0 cmp r7, #0 bgt _021D7E82 bl ErrorHandling _021D7E82: add r0, r4, #0 mov r1, #0xf mov r2, #2 bl MOD16_021DB388 add r1, r7, #0 add r2, r6, #0 add r3, r5, #0 add r4, r0, #0 bl MOD16_021D7D9C add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021D7E68 thumb_func_start MOD16_021D7E9C MOD16_021D7E9C: ; 0x021D7E9C push {r4, r5, r6, r7, lr} sub sp, #0x44 add r7, r1, #0 add r5, r0, #0 add r4, r3, #0 add r0, r7, #0 str r2, [sp, #4] bl MOD16_021D9D04 str r0, [sp, #8] add r0, r7, #0 add r1, r4, #0 bl MOD16_021D9E08 add r4, r0, #0 add r0, r5, #0 bl MOD16_021D8838 add r6, r0, #0 add r0, r5, #0 bl MOD16_021D8854 str r0, [sp, #0xc] ldr r0, [sp, #0x58] add r1, sp, #0x10 str r0, [sp, #0x10] ldr r0, [sp, #0x5c] str r0, [sp, #0x14] add r0, r6, #0 bl FUN_02020044 add r0, r6, #0 mov r1, #1 bl FUN_020200A0 ldr r0, [r4, #4] cmp r0, #2 bne _021D7F08 mov r0, #0x36 ldr r1, [sp, #0x58] lsl r0, r0, #0xc sub r0, r1, r0 str r0, [sp, #0x10] ldr r0, [sp, #0x5c] add r1, sp, #0x10 str r0, [sp, #0x14] ldr r0, [sp, #0xc] bl FUN_02020044 ldr r0, [sp, #0xc] mov r1, #1 bl FUN_020200A0 b _021D7F10 _021D7F08: ldr r0, [sp, #0xc] mov r1, #0 bl FUN_020200A0 _021D7F10: add r0, r5, #0 mov r1, #1 bl MOD16_021D88D4 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r5, r1] str r1, [sp, #0x1c] mov r1, #0 bl FUN_02009E54 str r0, [sp, #0x24] mov r0, #0x3f mvn r0, r0 str r0, [sp, #0x2c] add r0, #0x38 str r0, [sp, #0x30] mov r0, #0 str r0, [sp, #0x34] str r0, [sp, #0x38] mov r0, #1 str r0, [sp, #0x3c] ldr r0, [sp, #4] str r6, [sp, #0x28] str r0, [sp, #0x40] ldr r2, [sp, #4] ldr r3, [r4] add r0, r5, #0 add r1, r7, #0 bl MOD16_021D7E14 add r6, r0, #0 ldr r0, [sp, #8] str r6, [sp, #0x20] str r0, [sp] ldr r3, [r4] add r0, r5, #0 add r1, sp, #0x1c mov r2, #0 bl MOD16_021D8870 add r0, r6, #0 bl MOD16_021DB3BC add sp, #0x44 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021D7E9C thumb_func_start MOD16_021D7F6C MOD16_021D7F6C: ; 0x021D7F6C mov r3, #0x6d lsl r3, r3, #2 add r0, r0, r3 ldr r3, _021D7F78 ; =MOD16_021D7F7C bx r3 nop _021D7F78: .word MOD16_021D7F7C thumb_func_end MOD16_021D7F6C thumb_func_start MOD16_021D7F7C MOD16_021D7F7C: ; 0x021D7F7C push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 lsl r0, r1, #0xc str r0, [sp] lsl r0, r2, #0xc str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0 bl FUN_02020044 mov r0, #0x36 ldr r1, [sp] lsl r0, r0, #0xc sub r0, r1, r0 str r0, [sp] ldr r0, [r4, #4] add r1, sp, #0 bl FUN_02020044 ldr r0, [r4, #8] ldr r0, [r0] cmp r0, #0 beq _021D7FB0 bl FUN_02011938 _021D7FB0: add sp, #0xc pop {r3, r4, pc} thumb_func_end MOD16_021D7F7C thumb_func_start MOD16_021D7FB4 MOD16_021D7FB4: ; 0x021D7FB4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [sp, #0x28] ldr r5, [sp, #0x2c] cmp r2, #0xc9 bne _021D7FD4 str r5, [sp] mov r2, #0 str r2, [sp, #4] str r2, [sp, #8] add r2, r3, #0 add r3, r6, #0 bl MOD16_021D80CC add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D7FD4: mov r7, #0x67 lsl r7, r7, #2 cmp r2, r7 bne _021D7FF0 str r5, [sp] mov r2, #0 str r2, [sp, #4] str r2, [sp, #8] add r2, r3, #0 add r3, r6, #0 bl MOD16_021D81A0 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D7FF0: add r4, r7, #1 cmp r2, r4 bne _021D800A str r5, [sp] mov r2, #0 str r2, [sp, #4] str r2, [sp, #8] add r2, r3, #0 add r3, r6, #0 bl MOD16_021D81E4 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D800A: add r4, r7, #0 add r4, #0xa cmp r2, r4 bne _021D8026 str r5, [sp] mov r2, #0 str r2, [sp, #4] str r2, [sp, #8] add r2, r3, #0 add r3, r6, #0 bl MOD16_021D8110 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D8026: add r4, r7, #0 add r4, #0xb cmp r2, r4 bne _021D8042 str r5, [sp] mov r2, #0 str r2, [sp, #4] str r2, [sp, #8] add r2, r3, #0 add r3, r6, #0 bl MOD16_021D8158 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D8042: sub r7, #0x1a cmp r2, r7 bne _021D805C str r5, [sp] mov r2, #0 str r2, [sp, #4] str r2, [sp, #8] add r2, r3, #0 add r3, r6, #0 bl MOD16_021D822C add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021D805C: str r6, [sp] str r5, [sp, #4] mov r4, #0 str r4, [sp, #8] str r4, [sp, #0xc] bl MOD16_021D8070 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021D7FB4 thumb_func_start MOD16_021D8070 MOD16_021D8070: ; 0x021D8070 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r7, r0, #0 ldr r0, _021D80C8 ; =0x00000147 add r5, r2, #0 add r6, r1, #0 mov r4, #0 str r3, [sp, #0x18] cmp r5, r0 bne _021D808C add r0, r6, #0 bl MOD16_021D9A30 add r4, r0, #0 _021D808C: ldr r2, [sp, #0x38] add r0, r6, #0 add r1, r5, #0 bl MOD16_021D98DC add r6, r0, #0 mov r0, #0 mvn r0, r0 cmp r6, r0 beq _021D80C0 mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r0, [sp, #0x30] str r4, [sp, #8] str r0, [sp, #0xc] ldr r0, [sp, #0x34] ldr r3, [sp, #0x18] str r0, [sp, #0x10] ldr r0, [sp, #0x3c] add r1, r5, #0 str r0, [sp, #0x14] add r0, r7, #0 add r2, r6, #0 bl MOD16_021D8718 _021D80C0: add r0, r6, #0 add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021D80C8: .word 0x00000147 thumb_func_end MOD16_021D8070 thumb_func_start MOD16_021D80CC MOD16_021D80CC: ; 0x021D80CC push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r0, #0 add r0, r1, #0 ldr r1, [sp, #0x34] add r7, r2, #0 add r5, r3, #0 bl MOD16_021D98EC add r4, r0, #0 mov r0, #0 mvn r0, r0 cmp r4, r0 beq _021D810A mov r1, #0 lsl r0, r4, #0x18 str r1, [sp] lsr r0, r0, #0x18 str r0, [sp, #4] str r1, [sp, #8] ldr r0, [sp, #0x30] str r5, [sp, #0xc] str r0, [sp, #0x10] ldr r0, [sp, #0x38] mov r1, #0xc9 str r0, [sp, #0x14] add r0, r6, #0 mov r2, #2 add r3, r7, #0 bl MOD16_021D8718 _021D810A: add r0, r4, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021D80CC thumb_func_start MOD16_021D8110 MOD16_021D8110: ; 0x021D8110 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r0, #0 add r0, r1, #0 ldr r1, [sp, #0x34] add r7, r2, #0 add r5, r3, #0 bl MOD16_021D9904 add r4, r0, #0 mov r0, #0 mvn r0, r0 cmp r4, r0 beq _021D814C mov r2, #0 lsl r0, r4, #0x18 str r2, [sp] lsr r0, r0, #0x18 str r0, [sp, #4] str r2, [sp, #8] ldr r0, [sp, #0x30] str r5, [sp, #0xc] str r0, [sp, #0x10] ldr r0, [sp, #0x38] ldr r1, _021D8154 ; =0x000001A6 str r0, [sp, #0x14] add r0, r6, #0 add r3, r7, #0 bl MOD16_021D8718 _021D814C: add r0, r4, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop _021D8154: .word 0x000001A6 thumb_func_end MOD16_021D8110 thumb_func_start MOD16_021D8158 MOD16_021D8158: ; 0x021D8158 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r0, #0 add r0, r1, #0 ldr r1, [sp, #0x34] add r7, r2, #0 add r5, r3, #0 bl MOD16_021D991C add r4, r0, #0 mov r0, #0 mvn r0, r0 cmp r4, r0 beq _021D8194 mov r2, #0 lsl r0, r4, #0x18 str r2, [sp] lsr r0, r0, #0x18 str r0, [sp, #4] str r2, [sp, #8] ldr r0, [sp, #0x30] str r5, [sp, #0xc] str r0, [sp, #0x10] ldr r0, [sp, #0x38] ldr r1, _021D819C ; =0x000001A7 str r0, [sp, #0x14] add r0, r6, #0 add r3, r7, #0 bl MOD16_021D8718 _021D8194: add r0, r4, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop _021D819C: .word 0x000001A7 thumb_func_end MOD16_021D8158 thumb_func_start MOD16_021D81A0 MOD16_021D81A0: ; 0x021D81A0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r0, #0 add r0, r1, #0 ldr r1, [sp, #0x34] add r7, r2, #0 add r5, r3, #0 bl MOD16_021D9934 add r4, r0, #0 mov r0, #0 mvn r0, r0 cmp r4, r0 beq _021D81DE mov r2, #0 lsl r0, r4, #0x18 str r2, [sp] lsr r0, r0, #0x18 str r0, [sp, #4] str r2, [sp, #8] mov r1, #0x67 ldr r0, [sp, #0x30] str r5, [sp, #0xc] str r0, [sp, #0x10] ldr r0, [sp, #0x38] lsl r1, r1, #2 str r0, [sp, #0x14] add r0, r6, #0 add r3, r7, #0 bl MOD16_021D8718 _021D81DE: add r0, r4, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021D81A0 thumb_func_start MOD16_021D81E4 MOD16_021D81E4: ; 0x021D81E4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r0, #0 add r0, r1, #0 ldr r1, [sp, #0x34] add r7, r2, #0 add r5, r3, #0 bl MOD16_021D994C add r4, r0, #0 mov r0, #0 mvn r0, r0 cmp r4, r0 beq _021D8222 mov r1, #0 lsl r0, r4, #0x18 str r1, [sp] lsr r0, r0, #0x18 str r0, [sp, #4] str r1, [sp, #8] ldr r0, [sp, #0x30] str r5, [sp, #0xc] str r0, [sp, #0x10] ldr r0, [sp, #0x38] ldr r1, _021D8228 ; =0x0000019D str r0, [sp, #0x14] add r0, r6, #0 mov r2, #1 add r3, r7, #0 bl MOD16_021D8718 _021D8222: add r0, r4, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D8228: .word 0x0000019D thumb_func_end MOD16_021D81E4 thumb_func_start MOD16_021D822C MOD16_021D822C: ; 0x021D822C push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r0, #0 add r0, r1, #0 ldr r1, [sp, #0x34] add r7, r2, #0 add r5, r3, #0 bl MOD16_021D9A3C add r4, r0, #0 cmp r4, #0xf beq _021D8266 mov r1, #0 lsl r0, r4, #0x18 str r1, [sp] lsr r0, r0, #0x18 str r0, [sp, #4] str r1, [sp, #8] ldr r0, [sp, #0x30] str r5, [sp, #0xc] str r0, [sp, #0x10] ldr r0, [sp, #0x38] ldr r1, _021D826C ; =0x00000182 str r0, [sp, #0x14] add r0, r6, #0 mov r2, #1 add r3, r7, #0 bl MOD16_021D8718 _021D8266: add r0, r4, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D826C: .word 0x00000182 thumb_func_end MOD16_021D822C thumb_func_start MOD16_021D8270 MOD16_021D8270: ; 0x021D8270 push {r3, r4, r5, lr} ldr r2, _021D8294 ; =0x00000266 add r4, r0, #0 add r3, r1, #0 mov r0, #0 mov r1, #0x1a bl FUN_0200A86C add r5, r0, #0 add r1, r4, #0 bl FUN_0200A914 add r4, r0, #0 add r0, r5, #0 bl FUN_0200A8B8 add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 _021D8294: .word 0x00000266 thumb_func_end MOD16_021D8270 thumb_func_start MOD16_021D8298 MOD16_021D8298: ; 0x021D8298 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 ldr r0, _021D83D4 ; =0x00001A1C add r0, r6, r0 bl MOD16_021DAC7C ldr r0, _021D83D8 ; =0x00001A0C ldr r0, [r6, r0] cmp r0, #0 bne _021D82B0 bl ErrorHandling _021D82B0: ldr r0, _021D83D8 ; =0x00001A0C ldr r0, [r6, r0] bl FUN_02016A18 ldr r0, _021D83DC ; =0x00001A10 ldr r0, [r6, r0] cmp r0, #0 bne _021D82C4 bl ErrorHandling _021D82C4: ldr r0, _021D83DC ; =0x00001A10 ldr r0, [r6, r0] bl FUN_02016A18 ldr r0, _021D83E0 ; =0x00001A14 ldr r0, [r6, r0] cmp r0, #0 bne _021D82D8 bl ErrorHandling _021D82D8: ldr r0, _021D83E0 ; =0x00001A14 ldr r0, [r6, r0] bl FUN_02016A18 ldr r0, _021D83E4 ; =0x00001A18 ldr r0, [r6, r0] cmp r0, #0 bne _021D82EC bl ErrorHandling _021D82EC: ldr r0, _021D83E4 ; =0x00001A18 ldr r0, [r6, r0] bl FUN_02016A18 mov r0, #0x1d lsl r0, r0, #8 ldr r0, [r6, r0] cmp r0, #0 bne _021D8302 bl ErrorHandling _021D8302: mov r0, #0x1d lsl r0, r0, #8 ldr r0, [r6, r0] bl FUN_02016A18 ldr r0, _021D83E8 ; =0x00001D04 ldr r0, [r6, r0] cmp r0, #0 bne _021D8318 bl ErrorHandling _021D8318: ldr r0, _021D83E8 ; =0x00001D04 ldr r0, [r6, r0] bl FUN_02016A18 ldr r0, _021D83EC ; =0x00001D08 ldr r0, [r6, r0] cmp r0, #0 bne _021D832C bl ErrorHandling _021D832C: ldr r0, _021D83EC ; =0x00001D08 ldr r0, [r6, r0] bl FUN_02016A18 ldr r0, _021D83F0 ; =0x00001D0C ldr r0, [r6, r0] cmp r0, #0 bne _021D8340 bl ErrorHandling _021D8340: ldr r0, _021D83F0 ; =0x00001D0C ldr r0, [r6, r0] bl FUN_02016A18 ldr r0, _021D83F4 ; =0x00001A30 ldr r4, _021D83F8 ; =0x021FF440 mov r7, #0 add r5, r6, r0 _021D8350: ldr r1, [r4] cmp r1, #0 beq _021D835A add r0, r5, #0 blx r1 _021D835A: add r7, r7, #1 add r4, r4, #4 add r5, #0x28 cmp r7, #0xa blt _021D8350 mov r0, #0x6f lsl r0, r0, #6 ldr r4, _021D83FC ; =0x021FF3F8 mov r7, #0 add r5, r6, r0 _021D836E: ldr r1, [r4] cmp r1, #0 beq _021D8378 add r0, r5, #0 blx r1 _021D8378: add r7, r7, #1 add r4, r4, #4 add r5, #0x28 cmp r7, #8 blt _021D836E add r0, r6, #0 add r0, #0xc bl MOD16_021D9A6C add r1, r0, #0 ldr r0, [r6, #8] bl FUN_0208A32C add r0, r6, #0 add r0, #0xc mov r1, #1 bl MOD16_021D9CD0 cmp r0, #1 bne _021D83B2 add r0, r6, #0 add r0, #0xc bl MOD16_021D9A84 add r1, r0, #0 ldr r0, [r6, #8] bl FUN_0208A334 b _021D83BA _021D83B2: ldr r0, [r6, #8] mov r1, #2 bl FUN_0208A334 _021D83BA: add r0, r6, #0 add r0, #0xc bl MOD16_021D98B0 ldr r0, _021D8400 ; =0x0000177C add r0, r6, r0 bl MOD16_021D8628 add r0, r6, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} nop _021D83D4: .word 0x00001A1C _021D83D8: .word 0x00001A0C _021D83DC: .word 0x00001A10 _021D83E0: .word 0x00001A14 _021D83E4: .word 0x00001A18 _021D83E8: .word 0x00001D04 _021D83EC: .word 0x00001D08 _021D83F0: .word 0x00001D0C _021D83F4: .word 0x00001A30 _021D83F8: .word 0x021FF440 _021D83FC: .word 0x021FF3F8 _021D8400: .word 0x0000177C thumb_func_end MOD16_021D8298 thumb_func_start MOD16_021D8404 MOD16_021D8404: ; 0x021D8404 push {r4, lr} sub sp, #0x28 ldr r4, _021D8420 ; =0x021FF468 add r3, sp, #0 mov r2, #5 _021D840E: ldmia r4!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _021D840E add r0, sp, #0 bl FUN_0201E66C add sp, #0x28 pop {r4, pc} .align 2, 0 _021D8420: .word 0x021FF468 thumb_func_end MOD16_021D8404 thumb_func_start MOD16_021D8424 MOD16_021D8424: ; 0x021D8424 push {r4, r5, lr} sub sp, #0x24 add r4, r0, #0 bl FUN_020B0FC0 mov r0, #0 str r0, [sp] mov r1, #0x80 str r1, [sp, #4] str r0, [sp, #8] mov r3, #0x20 str r3, [sp, #0xc] add r2, r0, #0 str r4, [sp, #0x10] bl FUN_02009EAC ldr r5, _021D8474 ; =0x021FF3C8 add r3, sp, #0x14 add r2, r3, #0 ldmia r5!, {r0, r1} stmia r3!, {r0, r1} ldmia r5!, {r0, r1} stmia r3!, {r0, r1} add r0, r2, #0 ldr r1, _021D8478 ; =0x00200010 mov r2, #0x10 str r4, [sp, #0x20] bl FUN_0201D060 mov r0, #0x20 add r1, r4, #0 bl FUN_0201E00C bl FUN_0201D168 bl FUN_0201E0BC add sp, #0x24 pop {r4, r5, pc} nop _021D8474: .word 0x021FF3C8 _021D8478: .word 0x00200010 thumb_func_end MOD16_021D8424 thumb_func_start MOD16_021D847C MOD16_021D847C: ; 0x021D847C push {r4, lr} ldr r1, _021D8498 ; =0x00001A0C add r4, r0, #0 ldr r0, [r4, r1] add r1, #0x10 add r1, r4, r1 mov r2, #1 bl MOD16_021DA888 ldr r0, _021D849C ; =0x000019FC mov r1, #1 str r1, [r4, r0] pop {r4, pc} nop _021D8498: .word 0x00001A0C _021D849C: .word 0x000019FC thumb_func_end MOD16_021D847C thumb_func_start MOD16_021D84A0 MOD16_021D84A0: ; 0x021D84A0 push {r3, lr} bl FUN_020BB7F4 bl G3X_InitMtxStack ldr r0, _021D8500 ; =0x04000060 ldr r2, _021D8504 ; =0xFFFFCFFD ldrh r1, [r0] and r1, r2 strh r1, [r0] ldrh r3, [r0] add r1, r2, #2 and r3, r1 mov r1, #0x10 orr r1, r3 strh r1, [r0] ldrh r3, [r0] ldr r1, _021D8508 ; =0x0000CFFB and r1, r3 strh r1, [r0] add r1, r2, #2 ldrh r3, [r0] lsr r2, r2, #0x11 and r3, r1 mov r1, #8 orr r1, r3 strh r1, [r0] mov r0, #0 add r1, r0, #0 mov r3, #0x3f str r0, [sp] bl G3X_SetClearColor ldr r1, _021D850C ; =0x04000540 mov r0, #2 str r0, [r1] ldr r0, _021D8510 ; =0xBFFF0000 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 bl FUN_020AEB70 mov r0, #1 lsl r0, r0, #0xe mov r1, #1 bl FUN_020AEDF4 pop {r3, pc} .align 2, 0 _021D8500: .word 0x04000060 _021D8504: .word 0xFFFFCFFD _021D8508: .word 0x0000CFFB _021D850C: .word 0x04000540 _021D8510: .word 0xBFFF0000 thumb_func_end MOD16_021D84A0 thumb_func_start MOD16_021D8514 MOD16_021D8514: ; 0x021D8514 push {r3, lr} bl FUN_020AEAF4 bl FUN_020AEC60 pop {r3, pc} thumb_func_end MOD16_021D8514 thumb_func_start MOD16_021D8520 MOD16_021D8520: ; 0x021D8520 mov r0, #0x46 bx lr thumb_func_end MOD16_021D8520 thumb_func_start MOD16_021D8524 MOD16_021D8524: ; 0x021D8524 add r0, r0, #3 bx lr thumb_func_end MOD16_021D8524 thumb_func_start MOD16_021D8528 MOD16_021D8528: ; 0x021D8528 mov r0, #0 bx lr thumb_func_end MOD16_021D8528 thumb_func_start MOD16_021D852C MOD16_021D852C: ; 0x021D852C mov r0, #2 bx lr thumb_func_end MOD16_021D852C thumb_func_start MOD16_021D8530 MOD16_021D8530: ; 0x021D8530 mov r0, #1 bx lr thumb_func_end MOD16_021D8530 thumb_func_start MOD16_021D8534 MOD16_021D8534: ; 0x021D8534 push {r3, r4, r5, lr} sub sp, #0x20 add r5, r0, #0 mov r0, #0x45 add r4, r1, #0 bl FUN_02006670 mov r1, #0x9f lsl r1, r1, #2 str r0, [r5, r1] add r0, r4, #0 bl FUN_02016B94 str r0, [r5] mov r1, #1 mov r0, #0 str r0, [sp, #0x14] str r1, [sp, #0x10] str r1, [sp, #0x18] str r1, [sp, #0x1c] add r0, sp, #0x10 bl FUN_02016BBC ldr r0, [r5] add r1, r4, #0 bl MOD16_021D8DC0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021D8F60 add r1, r5, #0 mov r0, #0x80 add r1, #0x14 add r2, r4, #0 bl FUN_02008C9C mov r1, #0x4f lsl r1, r1, #2 str r0, [r5, r1] mov r0, #0x20 mov r1, #0 add r2, r4, #0 bl FUN_02008DEC mov r1, #5 lsl r1, r1, #6 str r0, [r5, r1] mov r0, #0x20 mov r1, #1 add r2, r4, #0 bl FUN_02008DEC mov r1, #0x51 lsl r1, r1, #2 str r0, [r5, r1] mov r0, #0x20 mov r1, #2 add r2, r4, #0 bl FUN_02008DEC mov r1, #0x52 lsl r1, r1, #2 str r0, [r5, r1] mov r0, #0x20 mov r1, #3 add r2, r4, #0 bl FUN_02008DEC mov r1, #0x53 lsl r1, r1, #2 str r0, [r5, r1] mov r0, #0x10 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x10 mov r1, #1 bl FUN_0201E74C mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r5, r0] str r0, [sp] ldr r0, [r5] str r0, [sp, #4] mov r0, #0x10 str r0, [sp, #8] add r0, sp, #0 str r4, [sp, #0xc] bl MOD16_021DB228 mov r1, #0x15 lsl r1, r1, #4 str r0, [r5, r1] mov r0, #2 add r1, r4, #0 bl FUN_02002C50 add r0, r5, #0 add r1, r4, #0 bl MOD16_021D8F9C add r0, r5, #0 add r1, r4, #0 bl MOD16_021D9078 add r0, r5, #0 add r1, r4, #0 bl MOD16_021D921C add r0, r5, #0 add r1, r4, #0 bl MOD16_021D9400 add r0, r5, #0 add r1, r4, #0 bl MOD16_021D94EC add sp, #0x20 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D8534 thumb_func_start MOD16_021D8628 MOD16_021D8628: ; 0x021D8628 push {r4, lr} add r4, r0, #0 bl MOD16_021D92DC add r0, r4, #0 bl MOD16_021D91A0 add r0, r4, #0 bl MOD16_021D959C add r0, r4, #0 bl MOD16_021D94A4 add r0, r4, #0 bl MOD16_021D8F90 ldr r0, [r4] bl MOD16_021D8F2C ldr r0, [r4] bl FUN_02016A18 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0201FD58 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] bl FUN_02008E2C mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_02008E2C mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_02008E2C mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_02008E2C mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] bl MOD16_021DB288 mov r0, #2 bl FUN_02002CF8 add r0, r4, #0 bl MOD16_021D9044 mov r0, #0x9f lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_020066F4 mov r2, #0xa add r0, r4, #0 mov r1, #0 lsl r2, r2, #6 bl Call_FillMemWithValue pop {r4, pc} thumb_func_end MOD16_021D8628 thumb_func_start MOD16_021D86B4 MOD16_021D86B4: ; 0x021D86B4 push {r4, lr} add r4, r0, #0 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0201FDEC bl FUN_020B02C8 mov r0, #0x55 lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_02006ED4 mov r0, #0x5a lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_02013D5C pop {r4, pc} thumb_func_end MOD16_021D86B4 thumb_func_start MOD16_021D86DC MOD16_021D86DC: ; 0x021D86DC push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0201AB60 mov r0, #0x55 lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_020081C4 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021D86DC thumb_func_start MOD16_021D86F4 MOD16_021D86F4: ; 0x021D86F4 push {r3, lr} mov r3, #0 bl MOD16_021D87BC pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021D86F4 thumb_func_start MOD16_021D8700 MOD16_021D8700: ; 0x021D8700 ldr r3, _021D8708 ; =MOD16_021D8804 mov r1, #0 bx r3 nop _021D8708: .word MOD16_021D8804 thumb_func_end MOD16_021D8700 thumb_func_start MOD16_021D870C MOD16_021D870C: ; 0x021D870C ldr r3, _021D8714 ; =MOD16_021D8810 mov r2, #0 bx r3 nop _021D8714: .word MOD16_021D8810 thumb_func_end MOD16_021D870C thumb_func_start MOD16_021D8718 MOD16_021D8718: ; 0x021D8718 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r5, r1, #0 mov r1, #0x56 lsl r1, r1, #2 str r0, [sp, #0x10] add r7, r0, r1 ldr r0, [sp, #0x54] add r4, r2, #0 lsl r0, r0, #2 str r0, [sp, #0x14] ldr r0, [r7, r0] add r6, r3, #0 cmp r0, #0 beq _021D873A bl FUN_02007534 _021D873A: mov r0, #0 mvn r0, r0 cmp r4, r0 bne _021D874E lsl r0, r5, #0x10 lsr r0, r0, #0x10 mov r1, #0 bl FUN_02068A20 add r4, r0, #0 _021D874E: ldr r0, [sp, #0x40] lsl r1, r5, #0x10 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] add r0, sp, #0x30 ldrb r0, [r0, #0x14] lsl r2, r4, #0x18 lsl r3, r6, #0x18 str r0, [sp, #4] ldr r0, [sp, #0x48] lsr r1, r1, #0x10 str r0, [sp, #8] add r0, sp, #0x18 lsr r2, r2, #0x18 lsr r3, r3, #0x18 bl FUN_02068C00 cmp r6, #0 bne _021D8792 ldr r0, [sp, #0x48] lsl r1, r4, #0x18 str r0, [sp] add r3, sp, #0x30 lsl r0, r5, #0x10 lsl r2, r6, #0x18 ldrb r3, [r3, #0x14] lsr r0, r0, #0x10 lsr r1, r1, #0x18 lsr r2, r2, #0x18 bl FUN_02068E88 add r3, r0, #0 b _021D8794 _021D8792: mov r3, #0 _021D8794: mov r0, #0 str r0, [sp] str r0, [sp, #4] str r0, [sp, #8] str r0, [sp, #0xc] mov r1, #0x55 ldr r4, [sp, #0x50] ldr r0, [sp, #0x10] lsl r1, r1, #2 ldr r0, [r0, r1] ldr r2, [sp, #0x4c] add r1, sp, #0x18 add r3, r4, r3 bl FUN_020073A0 ldr r1, [sp, #0x14] str r0, [r7, r1] add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021D8718 thumb_func_start MOD16_021D87BC MOD16_021D87BC: ; 0x021D87BC push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 mov r1, #0x56 lsl r1, r1, #2 add r5, r0, r1 lsl r4, r3, #2 add r7, r2, #0 ldr r0, [r5, r4] mov r1, #0 add r2, r6, #0 bl FUN_02007558 ldr r0, [r5, r4] mov r1, #1 add r2, r7, #0 bl FUN_02007558 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021D87BC thumb_func_start MOD16_021D87E0 MOD16_021D87E0: ; 0x021D87E0 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 mov r1, #0x56 lsl r1, r1, #2 add r5, r0, r1 lsl r4, r3, #2 ldr r0, [r5, r4] mov r1, #0 add r7, r2, #0 bl FUN_0200782C str r0, [r6] ldr r0, [r5, r4] mov r1, #1 bl FUN_0200782C str r0, [r7] pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021D87E0 thumb_func_start MOD16_021D8804 MOD16_021D8804: ; 0x021D8804 lsl r1, r1, #2 add r1, r0, r1 mov r0, #0x56 lsl r0, r0, #2 ldr r0, [r1, r0] bx lr thumb_func_end MOD16_021D8804 thumb_func_start MOD16_021D8810 MOD16_021D8810: ; 0x021D8810 push {r3, lr} lsl r2, r2, #2 add r2, r0, r2 mov r0, #0x56 lsl r0, r0, #2 ldr r0, [r2, r0] cmp r0, #0 beq _021D8836 cmp r1, #1 bne _021D882E mov r1, #6 mov r2, #0 bl FUN_02007558 pop {r3, pc} _021D882E: mov r1, #6 mov r2, #1 bl FUN_02007558 _021D8836: pop {r3, pc} thumb_func_end MOD16_021D8810 thumb_func_start MOD16_021D8838 MOD16_021D8838: ; 0x021D8838 push {r4, lr} add r4, r0, #0 mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r4, r0] cmp r0, #0 bne _021D884A bl ErrorHandling _021D884A: mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021D8838 thumb_func_start MOD16_021D8854 MOD16_021D8854: ; 0x021D8854 push {r4, lr} add r4, r0, #0 mov r0, #0x6e lsl r0, r0, #2 ldr r0, [r4, r0] cmp r0, #0 bne _021D8866 bl ErrorHandling _021D8866: mov r0, #0x6e lsl r0, r0, #2 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021D8854 thumb_func_start MOD16_021D8870 MOD16_021D8870: ; 0x021D8870 push {r3, r4, lr} sub sp, #4 ldr r4, [sp, #0x10] str r4, [sp] mov r4, #0x6d lsl r4, r4, #2 add r0, r0, r4 bl MOD16_021D8888 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021D8870 thumb_func_start MOD16_021D8888 MOD16_021D8888: ; 0x021D8888 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0x28] add r6, r1, #0 add r4, r2, #0 cmp r3, r0 bne _021D88AA ldr r1, [sp, #0x10] ldr r0, [r5, #0x2c] cmp r1, r0 bne _021D88AA ldr r0, [r5, #8] mov r1, #1 ldr r0, [r0] bl FUN_020119D0 pop {r4, r5, r6, pc} _021D88AA: ldr r0, [sp, #0x10] str r3, [r5, #0x28] str r0, [r5, #0x2c] ldr r0, [r5, #8] cmp r0, #0 beq _021D88BA bl MOD16_021DB338 _021D88BA: cmp r4, #0 beq _021D88CA add r0, r6, #0 add r1, r4, #0 bl MOD16_021DB2D4 str r0, [r5, #8] pop {r4, r5, r6, pc} _021D88CA: add r0, r6, #0 bl MOD16_021DB2BC str r0, [r5, #8] pop {r4, r5, r6, pc} thumb_func_end MOD16_021D8888 thumb_func_start MOD16_021D88D4 MOD16_021D88D4: ; 0x021D88D4 push {r3, r4, r5, lr} add r5, r1, #0 add r4, r0, #0 cmp r5, #3 ble _021D88E2 bl ErrorHandling _021D88E2: lsl r0, r5, #2 add r1, r4, r0 mov r0, #7 lsl r0, r0, #6 ldr r0, [r1, r0] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D88D4 thumb_func_start MOD16_021D88F0 MOD16_021D88F0: ; 0x021D88F0 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r5, r0] add r4, r1, #0 bl FUN_02020398 mov r0, #0x6e lsl r0, r0, #2 ldr r0, [r5, r0] add r1, r4, #0 bl FUN_02020398 mov r0, #0x6f lsl r0, r0, #2 ldr r0, [r5, r0] add r1, r4, #0 ldr r0, [r0] bl FUN_02011AF0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D88F0 thumb_func_start MOD16_021D891C MOD16_021D891C: ; 0x021D891C push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x6d add r4, r1, #0 lsl r0, r0, #2 lsl r1, r4, #0x18 ldr r0, [r5, r0] lsr r1, r1, #0x18 bl FUN_02020238 mov r0, #0x6e lsl r0, r0, #2 lsl r1, r4, #0x18 ldr r0, [r5, r0] lsr r1, r1, #0x18 bl FUN_02020238 mov r0, #0x6f lsl r0, r0, #2 ldr r0, [r5, r0] lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 bl FUN_02011A00 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D891C thumb_func_start MOD16_021D8950 MOD16_021D8950: ; 0x021D8950 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r5, r0] add r4, r1, #0 cmp r0, #0 beq _021D8964 bl FUN_020200A0 _021D8964: mov r0, #0x6e lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, #0 beq _021D8974 add r1, r4, #0 bl FUN_020200A0 _021D8974: mov r0, #0x6f lsl r0, r0, #2 ldr r0, [r5, r0] ldr r0, [r0] cmp r0, #0 beq _021D8986 add r1, r4, #0 bl FUN_020119D0 _021D8986: pop {r3, r4, r5, pc} thumb_func_end MOD16_021D8950 thumb_func_start MOD16_021D8988 MOD16_021D8988: ; 0x021D8988 push {r4, r5} ldr r4, [sp, #0x18] ldr r5, [sp, #0x14] str r4, [r0] ldr r4, [sp, #0x10] str r4, [r0, #4] mov r4, #0x20 orr r4, r5 str r4, [r0, #8] str r2, [r0, #0xc] sub r2, r3, r2 str r2, [r0, #0x10] ldr r3, [sp, #8] ldr r2, [sp, #0xc] str r3, [r0, #0x14] sub r2, r2, r3 str r2, [r0, #0x18] str r1, [r0, #0x1c] mov r1, #0 str r1, [r0, #0x20] pop {r4, r5} bx lr thumb_func_end MOD16_021D8988 thumb_func_start MOD16_021D89B4 MOD16_021D89B4: ; 0x021D89B4 push {r3, r4, r5, lr} sub sp, #8 add r5, r0, #0 bl MOD16_021D8A7C cmp r0, #0 bne _021D8A02 add r0, r5, #0 bl MOD16_021D8A14 add r4, r0, #0 add r0, r5, #0 bl MOD16_021D8A48 ldr r1, [r5] cmp r1, #0 bne _021D89EA mov r1, #0 str r1, [sp] str r0, [sp, #4] ldr r0, _021D8A0C ; =0x04000050 ldr r1, [r5, #4] ldr r2, [r5, #8] add r3, r4, #0 bl G2x_SetBlendBrightnessExt_ b _021D89FC _021D89EA: mov r1, #0 str r1, [sp] str r0, [sp, #4] ldr r0, _021D8A10 ; =0x04001050 ldr r1, [r5, #4] ldr r2, [r5, #8] add r3, r4, #0 bl G2x_SetBlendBrightnessExt_ _021D89FC: ldr r0, [r5, #0x20] add r0, r0, #1 str r0, [r5, #0x20] _021D8A02: add r0, r5, #0 bl MOD16_021D8A7C add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 _021D8A0C: .word 0x04000050 _021D8A10: .word 0x04001050 thumb_func_end MOD16_021D89B4 thumb_func_start MOD16_021D8A14 MOD16_021D8A14: ; 0x021D8A14 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x18] ldr r2, [r4, #0x20] lsl r0, r0, #0xc lsl r2, r2, #0xc asr r1, r0, #0x1f asr r3, r2, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 ldr r1, [r4, #0x1c] lsl r1, r1, #0xc bl FX_Div asr r1, r0, #0xc ldr r0, [r4, #0x14] add r0, r1, r0 pop {r4, pc} thumb_func_end MOD16_021D8A14 thumb_func_start MOD16_021D8A48 MOD16_021D8A48: ; 0x021D8A48 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x10] ldr r2, [r4, #0x20] lsl r0, r0, #0xc lsl r2, r2, #0xc asr r1, r0, #0x1f asr r3, r2, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 ldr r1, [r4, #0x1c] lsl r1, r1, #0xc bl FX_Div asr r1, r0, #0xc ldr r0, [r4, #0xc] add r0, r1, r0 pop {r4, pc} thumb_func_end MOD16_021D8A48 thumb_func_start MOD16_021D8A7C MOD16_021D8A7C: ; 0x021D8A7C ldr r1, [r0, #0x20] ldr r0, [r0, #0x1c] cmp r1, r0 ble _021D8A88 mov r0, #1 bx lr _021D8A88: mov r0, #0 bx lr thumb_func_end MOD16_021D8A7C thumb_func_start MOD16_021D8A8C MOD16_021D8A8C: ; 0x021D8A8C push {r3, r4, r5, lr} add r5, r0, #0 add r0, r1, #0 bl MOD16_021D8A48 neg r4, r0 add r0, r5, #0 bl MOD16_021D8700 mov r3, #0 add r1, r4, #0 add r2, r4, #0 str r3, [sp] bl FUN_02007E68 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D8A8C thumb_func_start MOD16_021D8AAC MOD16_021D8AAC: ; 0x021D8AAC push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 add r4, r2, #0 add r0, r1, #0 bl MOD16_021D8A48 neg r6, r0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021D8804 mov r3, #0 add r1, r6, #0 add r2, r6, #0 str r3, [sp] bl FUN_02007E68 add sp, #4 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021D8AAC thumb_func_start MOD16_021D8AD4 MOD16_021D8AD4: ; 0x021D8AD4 push {r4, r5, lr} sub sp, #0x14 add r4, r1, #0 add r5, r0, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021DB540 add r0, r5, #0 add r1, sp, #8 add r2, sp, #4 bl MOD16_021DB568 ldr r0, [sp, #4] str r0, [sp] ldr r1, [sp, #0x10] ldr r2, [sp, #0xc] ldr r3, [sp, #8] add r0, r4, #0 bl MOD16_021D8B04 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D8AD4 thumb_func_start MOD16_021D8B04 MOD16_021D8B04: ; 0x021D8B04 push {r3, r4, lr} sub sp, #4 ldr r4, [sp, #0x10] str r4, [sp] bl MOD16_021D96B4 add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021D8B04 thumb_func_start MOD16_021D8B14 MOD16_021D8B14: ; 0x021D8B14 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 mov r4, #0 _021D8B1C: ldr r0, [r5] add r1, r6, #0 bl FUN_020200A0 add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _021D8B1C pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021D8B14 thumb_func_start MOD16_021D8B30 MOD16_021D8B30: ; 0x021D8B30 ldr r3, _021D8B38 ; =0x02020129 ldr r0, [r0] bx r3 nop _021D8B38: .word 0x02020129 thumb_func_end MOD16_021D8B30 thumb_func_start MOD16_021D8B3C MOD16_021D8B3C: ; 0x021D8B3C str r1, [r0, #0x30] cmp r1, #0 bne _021D8B46 mov r1, #0 str r1, [r0, #0x34] _021D8B46: bx lr thumb_func_end MOD16_021D8B3C thumb_func_start MOD16_021D8B48 MOD16_021D8B48: ; 0x021D8B48 push {r4, r5, lr} sub sp, #0x14 add r4, r1, #0 add r5, r0, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021DB540 add r0, r5, #0 add r1, sp, #8 add r2, sp, #4 bl MOD16_021DB568 ldr r0, [sp, #4] str r0, [sp] ldr r1, [sp, #0x10] ldr r2, [sp, #0xc] ldr r3, [sp, #8] add r0, r4, #0 bl MOD16_021D8B78 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D8B48 thumb_func_start MOD16_021D8B78 MOD16_021D8B78: ; 0x021D8B78 push {r3, r4, r5, r6, r7, lr} add r7, r3, #0 mov r3, #0x81 add r4, r1, #0 add r5, r0, #0 lsl r3, r3, #2 add r6, r2, #0 str r4, [r5, r3] add r0, r3, #4 str r6, [r5, r0] add r0, r3, #0 add r0, #8 str r7, [r5, r0] add r0, r3, #0 ldr r1, [sp, #0x18] add r0, #0xc str r1, [r5, r0] add r0, r3, #0 add r0, #0xc ldr r0, [r5, r0] add r2, r3, #4 str r0, [sp] add r0, r3, #0 ldr r1, [r5, r3] add r3, #8 sub r0, #0x20 ldr r2, [r5, r2] ldr r3, [r5, r3] add r0, r5, r0 bl MOD16_021D9668 mov r0, #0x26 lsl r0, r0, #4 str r4, [r5, r0] add r1, r0, #4 str r6, [r5, r1] add r1, r0, #0 add r1, #8 str r7, [r5, r1] add r1, r0, #0 ldr r2, [sp, #0x18] add r1, #0xc str r2, [r5, r1] mov r1, #0 add r0, #0x10 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021D8B78 thumb_func_start MOD16_021D8BD8 MOD16_021D8BD8: ; 0x021D8BD8 str r1, [r0] str r3, [r0, #4] str r1, [r0, #8] str r3, [r0, #0xc] sub r1, r2, r1 str r1, [r0, #0x10] ldr r1, [sp] sub r1, r1, r3 str r1, [r0, #0x14] ldr r1, [sp, #4] str r1, [r0, #0x1c] mov r1, #0 str r1, [r0, #0x18] bx lr thumb_func_end MOD16_021D8BD8 thumb_func_start MOD16_021D8BF4 MOD16_021D8BF4: ; 0x021D8BF4 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x10] ldr r2, [r5, #0x18] lsl r0, r0, #0xc lsl r2, r2, #0xc asr r1, r0, #0x1f asr r3, r2, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 ldr r1, [r5, #0x1c] lsl r1, r1, #0xc bl FX_Div add r4, r0, #0 ldr r0, [r5, #0x14] ldr r2, [r5, #0x18] lsl r0, r0, #0xc lsl r2, r2, #0xc asr r1, r0, #0x1f asr r3, r2, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 ldr r1, [r5, #0x1c] lsl r1, r1, #0xc bl FX_Div ldr r1, [r5, #8] asr r2, r4, #0xc add r1, r2, r1 str r1, [r5] asr r1, r0, #0xc ldr r0, [r5, #0xc] add r0, r1, r0 str r0, [r5, #4] ldr r0, [r5, #0x18] ldr r1, [r5, #0x1c] add r0, r0, #1 cmp r0, r1 bgt _021D8C6A str r0, [r5, #0x18] mov r0, #0 pop {r3, r4, r5, pc} _021D8C6A: str r1, [r5, #0x18] mov r0, #1 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D8BF4 thumb_func_start MOD16_021D8C70 MOD16_021D8C70: ; 0x021D8C70 mov r1, #0x9f lsl r1, r1, #2 ldr r0, [r0, r1] bx lr thumb_func_end MOD16_021D8C70 thumb_func_start MOD16_021D8C78 MOD16_021D8C78: ; 0x021D8C78 push {r4, r5, r6, lr} add r5, r2, #0 mov r2, #0x9f lsl r2, r2, #2 add r6, r3, #0 ldr r0, [r0, r2] add r2, r6, #0 bl FUN_02006704 add r4, r0, #0 beq _021D8CB0 cmp r5, #0 beq _021D8CB0 ldr r1, [r4] add r0, r6, #0 lsr r1, r1, #8 bl FUN_02016998 add r5, r0, #0 beq _021D8CAE add r0, r4, #0 add r1, r5, #0 bl MI_UncompressLZ8 add r0, r4, #0 bl FUN_02016A18 _021D8CAE: add r4, r5, #0 _021D8CB0: add r0, r4, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021D8C78 thumb_func_start MOD16_021D8CB4 MOD16_021D8CB4: ; 0x021D8CB4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r6, r2, #0 add r5, r3, #0 ldr r2, [sp, #0x28] ldr r3, [sp, #0x2c] ldr r4, [sp, #0x24] bl MOD16_021D8C78 add r7, r0, #0 beq _021D8CF6 add r1, sp, #4 bl FUN_020B0030 cmp r0, #0 beq _021D8CF0 cmp r4, #0 bne _021D8CDC ldr r0, [sp, #4] ldr r4, [r0, #0x10] _021D8CDC: ldr r0, [sp, #0x20] lsl r1, r5, #0x18 str r0, [sp] ldr r2, [sp, #4] add r0, r6, #0 ldr r2, [r2, #0x14] lsr r1, r1, #0x18 add r3, r4, #0 bl FUN_02017E14 _021D8CF0: add r0, r7, #0 bl FUN_02016A18 _021D8CF6: add r0, r4, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021D8CB4 thumb_func_start MOD16_021D8CFC MOD16_021D8CFC: ; 0x021D8CFC push {r3, r4, r5, r6, r7, lr} add r6, r3, #0 add r5, r2, #0 ldr r3, [sp, #0x1c] mov r2, #0 ldr r4, [sp, #0x18] bl MOD16_021D8C78 add r7, r0, #0 beq _021D8D42 add r1, sp, #0 bl FUN_020B0138 cmp r0, #0 beq _021D8D3C cmp r4, #0 bne _021D8D22 ldr r0, [sp] ldr r4, [r0, #8] _021D8D22: ldr r0, [sp] add r1, r4, #0 ldr r0, [r0, #0xc] bl DC_FlushRange ldr r0, [sp] add r2, r4, #0 ldr r3, _021D8D44 ; =0x021FF548 lsl r4, r5, #2 ldr r0, [r0, #0xc] ldr r3, [r3, r4] add r1, r6, #0 blx r3 _021D8D3C: add r0, r7, #0 bl FUN_02016A18 _021D8D42: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D8D44: .word 0x021FF548 thumb_func_end MOD16_021D8CFC thumb_func_start MOD16_021D8D48 MOD16_021D8D48: ; 0x021D8D48 push {r3, r4, r5, lr} add r5, r3, #0 ldr r3, [sp, #0x10] bl MOD16_021D8C78 add r4, r0, #0 beq _021D8D6A add r1, r5, #0 bl FUN_020B0180 cmp r0, #0 bne _021D8D6A add r0, r4, #0 bl FUN_02016A18 mov r0, #0 pop {r3, r4, r5, pc} _021D8D6A: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D8D48 thumb_func_start MOD16_021D8D70 MOD16_021D8D70: ; 0x021D8D70 push {r3, r4, r5, lr} add r5, r2, #0 mov r2, #0 bl MOD16_021D8C78 add r4, r0, #0 beq _021D8D92 add r1, r5, #0 bl FUN_020B0138 cmp r0, #0 bne _021D8D92 add r0, r4, #0 bl FUN_02016A18 mov r0, #0 pop {r3, r4, r5, pc} _021D8D92: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D8D70 thumb_func_start MOD16_021D8D98 MOD16_021D8D98: ; 0x021D8D98 push {r3, r4, r5, lr} add r5, r3, #0 ldr r3, [sp, #0x10] bl MOD16_021D8C78 add r4, r0, #0 beq _021D8DBA add r1, r5, #0 bl FUN_020B0030 cmp r0, #0 bne _021D8DBA add r0, r4, #0 bl FUN_02016A18 mov r0, #0 pop {r3, r4, r5, pc} _021D8DBA: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D8D98 thumb_func_start MOD16_021D8DC0 MOD16_021D8DC0: ; 0x021D8DC0 push {r4, r5, r6, lr} sub sp, #0xa8 ldr r6, _021D8F14 ; =0x021FF510 add r3, sp, #0x8c add r5, r0, #0 add r4, r1, #0 ldmia r6!, {r0, r1} add r2, r3, #0 stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r6] mov r1, #1 str r0, [r3] add r0, r5, #0 mov r3, #0 bl FUN_02016C18 mov r0, #1 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #1 bl FUN_02018744 ldr r6, _021D8F18 ; =0x021FF4F4 add r3, sp, #0x70 ldmia r6!, {r0, r1} add r2, r3, #0 stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r6] mov r1, #2 str r0, [r3] add r0, r5, #0 mov r3, #0 bl FUN_02016C18 mov r0, #2 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #2 bl FUN_02018744 mov r0, #0 mov r1, #2 bl FUN_020178BC mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 ldr r6, _021D8F1C ; =0x021FF4D8 add r3, sp, #0x54 ldmia r6!, {r0, r1} add r2, r3, #0 stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r6] mov r1, #3 str r0, [r3] add r0, r5, #0 mov r3, #0 bl FUN_02016C18 mov r0, #3 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #3 bl FUN_02018744 ldr r6, _021D8F20 ; =0x021FF4BC add r3, sp, #0x38 ldmia r6!, {r0, r1} add r2, r3, #0 stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r6] mov r1, #5 str r0, [r3] add r0, r5, #0 mov r3, #0 bl FUN_02016C18 mov r0, #5 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #5 bl FUN_02018744 ldr r6, _021D8F24 ; =0x021FF4A0 add r3, sp, #0x1c ldmia r6!, {r0, r1} add r2, r3, #0 stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r6] mov r1, #6 str r0, [r3] add r0, r5, #0 mov r3, #0 bl FUN_02016C18 mov r0, #6 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #6 bl FUN_02018744 ldr r6, _021D8F28 ; =0x021FF52C add r3, sp, #0 ldmia r6!, {r0, r1} add r2, r3, #0 stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldmia r6!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r6] mov r1, #7 str r0, [r3] add r0, r5, #0 mov r3, #1 bl FUN_02016C18 mov r0, #7 mov r1, #0x40 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #7 bl FUN_02018744 add sp, #0xa8 pop {r4, r5, r6, pc} .align 2, 0 _021D8F14: .word 0x021FF510 _021D8F18: .word 0x021FF4F4 _021D8F1C: .word 0x021FF4D8 _021D8F20: .word 0x021FF4BC _021D8F24: .word 0x021FF4A0 _021D8F28: .word 0x021FF52C thumb_func_end MOD16_021D8DC0 thumb_func_start MOD16_021D8F2C MOD16_021D8F2C: ; 0x021D8F2C push {r4, lr} add r4, r0, #0 mov r1, #1 bl FUN_020178A0 add r0, r4, #0 mov r1, #2 bl FUN_020178A0 add r0, r4, #0 mov r1, #3 bl FUN_020178A0 add r0, r4, #0 mov r1, #5 bl FUN_020178A0 add r0, r4, #0 mov r1, #7 bl FUN_020178A0 add r0, r4, #0 mov r1, #6 bl FUN_020178A0 pop {r4, pc} thumb_func_end MOD16_021D8F2C thumb_func_start MOD16_021D8F60 MOD16_021D8F60: ; 0x021D8F60 push {r3, r4, lr} sub sp, #0x14 mov r3, #0 add r4, r0, #0 str r3, [sp] mov r0, #0x20 str r0, [sp, #4] str r0, [sp, #8] str r3, [sp, #0xc] str r3, [sp, #0x10] ldr r0, [r4] add r1, r4, #4 mov r2, #1 bl FUN_02019064 add r0, r4, #4 mov r1, #0 bl FUN_02019620 add r0, r4, #4 bl FUN_020191D0 add sp, #0x14 pop {r3, r4, pc} thumb_func_end MOD16_021D8F60 thumb_func_start MOD16_021D8F90 MOD16_021D8F90: ; 0x021D8F90 ldr r3, _021D8F98 ; =0x02019179 add r0, r0, #4 bx r3 nop _021D8F98: .word 0x02019179 thumb_func_end MOD16_021D8F90 thumb_func_start MOD16_021D8F9C MOD16_021D8F9C: ; 0x021D8F9C push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r7, r1, #0 add r5, r0, #0 add r0, r7, #0 bl FUN_02006D98 mov r1, #0x55 lsl r1, r1, #2 str r0, [r5, r1] ldr r3, _021D9030 ; =0x021064B8 mov r0, #2 mov r1, #0 ldr r3, [r3] lsl r0, r0, #0xe add r2, r1, #0 blx r3 ldr r3, _021D9034 ; =0x021064C0 add r4, r0, #0 ldr r3, [r3] mov r0, #0x80 mov r1, #0 mov r2, #1 blx r3 ldr r2, _021D9038 ; =0x7FFF0000 add r6, r0, #0 mov r0, #0x55 lsl r0, r0, #2 and r2, r4 lsl r1, r4, #0x10 lsr r2, r2, #0x10 ldr r0, [r5, r0] lsr r1, r1, #0xd lsl r2, r2, #4 bl FUN_020081A8 ldr r2, _021D903C ; =0xFFFF0000 mov r0, #0x55 lsl r0, r0, #2 and r2, r6 lsl r1, r6, #0x10 lsr r2, r2, #0x10 ldr r0, [r5, r0] lsr r1, r1, #0xd lsl r2, r2, #3 bl FUN_020081B4 mov r2, #0 mov r0, #0x56 add r3, r5, #0 add r1, r2, #0 lsl r0, r0, #2 _021D9004: add r2, r2, #1 str r1, [r3, r0] add r3, r3, #4 cmp r2, #4 blt _021D9004 ldr r4, _021D9040 ; =0x021FF490 add r3, sp, #0 add r2, r3, #0 ldmia r4!, {r0, r1} stmia r3!, {r0, r1} ldmia r4!, {r0, r1} stmia r3!, {r0, r1} add r0, r2, #0 str r7, [sp, #0xc] bl FUN_02013CD4 mov r1, #0x5a lsl r1, r1, #2 str r0, [r5, r1] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021D9030: .word 0x021064B8 _021D9034: .word 0x021064C0 _021D9038: .word 0x7FFF0000 _021D903C: .word 0xFFFF0000 _021D9040: .word 0x021FF490 thumb_func_end MOD16_021D8F9C thumb_func_start MOD16_021D9044 MOD16_021D9044: ; 0x021D9044 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 mov r6, #0x56 mov r4, #0 add r5, r7, #0 lsl r6, r6, #2 _021D9050: ldr r0, [r5, r6] cmp r0, #0 beq _021D905A bl FUN_02007534 _021D905A: add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _021D9050 mov r0, #0x55 lsl r0, r0, #2 ldr r0, [r7, r0] bl FUN_020072E8 mov r0, #0x5a lsl r0, r0, #2 ldr r0, [r7, r0] bl FUN_02013D18 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021D9044 thumb_func_start MOD16_021D9078 MOD16_021D9078: ; 0x021D9078 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r6, r1, #0 mov r1, #0x6d add r5, r0, #0 lsl r1, r1, #2 add r4, r5, r1 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021D9114 ; =0x00000BB8 mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r6, [sp, #8] lsl r0, r0, #6 ldr r0, [r5, r0] add r1, r7, #0 mov r2, #0x4e bl FUN_020091E0 str r0, [r4, #0xc] bl FUN_02009B04 ldr r0, [r4, #0xc] bl FUN_02009474 ldr r0, _021D9114 ; =0x00000BB8 add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x51 str r6, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r5, r0] mov r2, #3 mov r3, #0 bl FUN_02009298 str r0, [r4, #0x10] bl FUN_02009D68 ldr r0, [r4, #0x10] bl FUN_02009474 ldr r0, _021D9114 ; =0x00000BB8 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r6, [sp, #8] lsl r0, r0, #2 ldr r0, [r5, r0] mov r2, #0x4c mov r3, #1 bl FUN_02009358 str r0, [r4, #0x14] ldr r0, _021D9114 ; =0x00000BB8 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r6, [sp, #8] lsl r0, r0, #2 ldr r0, [r5, r0] mov r2, #0x4d mov r3, #1 bl FUN_02009358 str r0, [r4, #0x18] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D9114: .word 0x00000BB8 thumb_func_end MOD16_021D9078 thumb_func_start MOD16_021D9118 MOD16_021D9118: ; 0x021D9118 push {r4, r5, r6, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, _021D919C ; =0x00000BB8 mov r3, #1 str r0, [sp] add r6, r2, #0 str r3, [sp, #4] add r4, r1, #0 str r6, [sp, #8] ldr r0, [r4] mov r1, #0x45 mov r2, #0x4e bl FUN_02008F34 str r0, [r5, #0xc] bl FUN_02009B04 ldr r0, [r5, #0xc] bl FUN_02009474 ldr r0, _021D919C ; =0x00000BB8 mov r1, #0x45 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] str r6, [sp, #0xc] ldr r0, [r4, #4] mov r2, #3 mov r3, #0 bl FUN_02008FEC str r0, [r5, #0x10] bl FUN_02009D68 ldr r0, [r5, #0x10] bl FUN_02009474 ldr r0, _021D919C ; =0x00000BB8 mov r1, #0x45 str r0, [sp] mov r0, #2 str r0, [sp, #4] str r6, [sp, #8] ldr r0, [r4, #8] mov r2, #0x4c mov r3, #1 bl FUN_020090AC str r0, [r5, #0x14] ldr r0, _021D919C ; =0x00000BB8 mov r1, #0x45 str r0, [sp] mov r0, #3 str r0, [sp, #4] str r6, [sp, #8] ldr r0, [r4, #0xc] mov r2, #0x4d mov r3, #1 bl FUN_020090AC str r0, [r5, #0x18] add sp, #0x10 pop {r4, r5, r6, pc} nop _021D919C: .word 0x00000BB8 thumb_func_end MOD16_021D9118 thumb_func_start MOD16_021D91A0 MOD16_021D91A0: ; 0x021D91A0 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x6d lsl r0, r0, #2 add r4, r5, r0 ldr r0, [r4, #0xc] bl FUN_02009C0C ldr r0, [r4, #0x10] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r5, r0] ldr r1, [r4, #0xc] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r5, r0] ldr r1, [r4, #0x10] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r5, r0] ldr r1, [r4, #0x14] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r5, r0] ldr r1, [r4, #0x18] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D91A0 thumb_func_start MOD16_021D91E8 MOD16_021D91E8: ; 0x021D91E8 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0xc] add r4, r1, #0 bl FUN_02009C0C ldr r0, [r5, #0x10] bl FUN_02009E04 ldr r0, [r4] ldr r1, [r5, #0xc] bl FUN_02009490 ldr r0, [r4, #4] ldr r1, [r5, #0x10] bl FUN_02009490 ldr r0, [r4, #8] ldr r1, [r5, #0x14] bl FUN_02009490 ldr r0, [r4, #0xc] ldr r1, [r5, #0x18] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D91E8 thumb_func_start MOD16_021D921C MOD16_021D921C: ; 0x021D921C push {r3, r4, r5, lr} sub sp, #0x70 add r4, r1, #0 ldr r1, _021D92D8 ; =0x00000BB8 add r5, r0, #0 mov r0, #0 str r1, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r3, #5 str r0, [sp, #0x10] lsl r3, r3, #6 ldr r2, [r5, r3] str r2, [sp, #0x14] add r2, r3, #4 ldr r2, [r5, r2] str r2, [sp, #0x18] add r2, r3, #0 add r2, #8 ldr r2, [r5, r2] add r3, #0xc str r2, [sp, #0x1c] ldr r2, [r5, r3] add r3, r1, #0 str r2, [sp, #0x20] str r0, [sp, #0x24] str r0, [sp, #0x28] add r0, sp, #0x4c add r2, r1, #0 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #0 str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #1 str r0, [sp, #0x44] add r0, sp, #0x2c str r1, [sp, #0x40] str r4, [sp, #0x48] str r1, [sp, #0x34] str r1, [sp, #0x38] bl FUN_0201FF84 mov r1, #0x6d lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r5, r1] mov r1, #0 bl FUN_020200A0 mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #1 bl FUN_02020310 mov r0, #0 str r0, [sp, #0x34] str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 mov r1, #0x6e lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r5, r1] mov r1, #0 bl FUN_020200A0 mov r0, #0x6e lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #1 bl FUN_02020130 mov r1, #0x6f lsl r1, r1, #2 mov r2, #0 add r0, r1, #0 str r2, [r5, r1] add r0, #0x20 str r2, [r5, r0] add r1, #0x24 str r2, [r5, r1] add sp, #0x70 pop {r3, r4, r5, pc} nop _021D92D8: .word 0x00000BB8 thumb_func_end MOD16_021D921C thumb_func_start MOD16_021D92DC MOD16_021D92DC: ; 0x021D92DC push {r4, lr} add r4, r0, #0 mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0201FFC8 mov r0, #0x6d mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] add r0, r0, #4 ldr r0, [r4, r0] bl FUN_0201FFC8 mov r0, #0x6e mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] add r0, r0, #4 ldr r0, [r4, r0] cmp r0, #0 beq _021D9316 bl MOD16_021DB338 mov r0, #0x6f mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] _021D9316: pop {r4, pc} thumb_func_end MOD16_021D92DC thumb_func_start MOD16_021D9318 MOD16_021D9318: ; 0x021D9318 push {r4, r5, r6, lr} sub sp, #0x70 add r4, r1, #0 ldr r1, _021D93A8 ; =0x00000BB8 add r5, r0, #0 mov r0, #0 add r6, r3, #0 str r1, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0 ldr r3, [sp, #0x80] str r0, [sp, #0xc] str r3, [sp, #0x10] ldr r3, [r2] str r3, [sp, #0x14] ldr r3, [r2, #4] str r3, [sp, #0x18] ldr r3, [r2, #8] str r3, [sp, #0x1c] ldr r2, [r2, #0xc] add r3, r1, #0 str r2, [sp, #0x20] str r0, [sp, #0x24] str r0, [sp, #0x28] add r0, sp, #0x4c add r2, r1, #0 bl FUN_02008AA4 mov r1, #0 add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #1 str r0, [sp, #0x44] str r4, [sp, #0x2c] str r1, [sp, #0x40] str r6, [sp, #0x48] str r1, [sp, #0x34] str r1, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5] mov r1, #0 bl FUN_020200A0 ldr r0, [r5] mov r1, #1 bl FUN_02020310 mov r0, #0 str r0, [sp, #0x34] str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5, #4] mov r1, #0 bl FUN_020200A0 ldr r0, [r5, #4] mov r1, #1 bl FUN_02020130 mov r0, #0 str r0, [r5, #8] str r0, [r5, #0x28] str r0, [r5, #0x2c] add sp, #0x70 pop {r4, r5, r6, pc} nop _021D93A8: .word 0x00000BB8 thumb_func_end MOD16_021D9318 thumb_func_start MOD16_021D93AC MOD16_021D93AC: ; 0x021D93AC push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0201FFC8 mov r0, #0 str r0, [r4] ldr r0, [r4, #4] bl FUN_0201FFC8 mov r0, #0 str r0, [r4, #4] ldr r0, [r4, #8] cmp r0, #0 beq _021D93D2 bl MOD16_021DB338 mov r0, #0 str r0, [r4, #8] _021D93D2: pop {r4, pc} thumb_func_end MOD16_021D93AC thumb_func_start MOD16_021D93D4 MOD16_021D93D4: ; 0x021D93D4 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 cmp r0, #0 beq _021D93E4 bl FUN_020200A0 _021D93E4: ldr r0, [r5, #4] cmp r0, #0 beq _021D93F0 add r1, r4, #0 bl FUN_020200A0 _021D93F0: ldr r0, [r5, #8] ldr r0, [r0] cmp r0, #0 beq _021D93FE add r1, r4, #0 bl FUN_020119D0 _021D93FE: pop {r3, r4, r5, pc} thumb_func_end MOD16_021D93D4 thumb_func_start MOD16_021D9400 MOD16_021D9400: ; 0x021D9400 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r6, r1, #0 mov r1, #0x79 add r5, r0, #0 lsl r1, r1, #2 add r4, r5, r1 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021D94A0 ; =0x00002EE0 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r6, [sp, #8] lsl r0, r0, #6 ldr r0, [r5, r0] mov r2, #0x77 mov r3, #1 bl FUN_020091E0 str r0, [r4, #0x10] bl FUN_02009B04 ldr r0, [r4, #0x10] bl FUN_02009474 ldr r0, _021D94A0 ; =0x00002EE0 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0x51 str r6, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r5, r0] mov r2, #0x15 mov r3, #0 bl FUN_02009298 str r0, [r4, #0x14] bl FUN_02009D68 ldr r0, [r4, #0x14] bl FUN_02009474 ldr r0, _021D94A0 ; =0x00002EE0 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r6, [sp, #8] lsl r0, r0, #2 ldr r0, [r5, r0] mov r2, #0x78 mov r3, #1 bl FUN_02009358 str r0, [r4, #0x18] ldr r0, _021D94A0 ; =0x00002EE0 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r6, [sp, #8] lsl r0, r0, #2 ldr r0, [r5, r0] mov r2, #0x76 mov r3, #1 bl FUN_02009358 str r0, [r4, #0x1c] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D94A0: .word 0x00002EE0 thumb_func_end MOD16_021D9400 thumb_func_start MOD16_021D94A4 MOD16_021D94A4: ; 0x021D94A4 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0x79 lsl r0, r0, #2 add r4, r5, r0 ldr r0, [r4, #0x10] bl FUN_02009C0C ldr r0, [r4, #0x14] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r5, r0] ldr r1, [r4, #0x10] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r5, r0] ldr r1, [r4, #0x14] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r5, r0] ldr r1, [r4, #0x18] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r5, r0] ldr r1, [r4, #0x1c] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D94A4 thumb_func_start MOD16_021D94EC MOD16_021D94EC: ; 0x021D94EC push {r3, r4, r5, r6, r7, lr} sub sp, #0x70 add r5, r1, #0 ldr r1, _021D9598 ; =0x00002EE0 add r6, r0, #0 mov r0, #0 mov r2, #0x79 lsl r2, r2, #2 str r1, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] str r0, [sp, #0x10] sub r2, #0xa4 ldr r2, [r6, r2] add r3, r1, #0 str r2, [sp, #0x14] mov r2, #0x79 lsl r2, r2, #2 sub r2, #0xa0 ldr r2, [r6, r2] str r2, [sp, #0x18] mov r2, #0x79 lsl r2, r2, #2 sub r2, #0x9c ldr r2, [r6, r2] str r2, [sp, #0x1c] mov r2, #0x79 lsl r2, r2, #2 sub r2, #0x98 ldr r2, [r6, r2] str r2, [sp, #0x20] str r0, [sp, #0x24] str r0, [sp, #0x28] add r0, sp, #0x4c add r2, r1, #0 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r6, r0] mov r4, #0 str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #2 str r0, [sp, #0x44] mov r0, #0x49 lsl r0, r0, #0xe str r0, [sp, #0x38] mov r0, #0x19 lsl r0, r0, #0xe str r0, [sp, #0x34] mov r0, #0x79 lsl r0, r0, #2 str r5, [sp, #0x48] str r4, [sp, #0x40] add r5, r6, r0 add r7, sp, #0x2c _021D9566: add r0, r7, #0 bl FUN_0201FF84 add r1, r4, #0 stmia r5!, {r0} bl FUN_02020130 add r4, r4, #1 cmp r4, #4 blt _021D9566 mov r0, #0x79 lsl r0, r0, #2 add r0, r6, r0 mov r1, #0 bl MOD16_021D8B14 add r0, r6, #0 bl MOD16_021D95C4 add r0, r6, #0 bl MOD16_021D9760 add sp, #0x70 pop {r3, r4, r5, r6, r7, pc} nop _021D9598: .word 0x00002EE0 thumb_func_end MOD16_021D94EC thumb_func_start MOD16_021D959C MOD16_021D959C: ; 0x021D959C push {r3, r4, r5, lr} add r5, r0, #0 bl MOD16_021D9780 add r0, r5, #0 bl MOD16_021D95E4 mov r0, #0x79 lsl r0, r0, #2 mov r4, #0 add r5, r5, r0 _021D95B2: ldr r0, [r5] bl FUN_0201FFC8 add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _021D95B2 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D959C thumb_func_start MOD16_021D95C4 MOD16_021D95C4: ; 0x021D95C4 push {r4, lr} mov r1, #0x79 add r4, r0, #0 lsl r1, r1, #2 ldr r0, _021D95E0 ; =MOD16_021D95F4 add r1, r4, r1 mov r2, #1 bl FUN_0200CA44 mov r1, #0x9d lsl r1, r1, #2 str r0, [r4, r1] pop {r4, pc} nop _021D95E0: .word MOD16_021D95F4 thumb_func_end MOD16_021D95C4 thumb_func_start MOD16_021D95E4 MOD16_021D95E4: ; 0x021D95E4 mov r1, #0x9d lsl r1, r1, #2 ldr r3, _021D95F0 ; =0x0200CAB5 ldr r0, [r0, r1] bx r3 nop _021D95F0: .word 0x0200CAB5 thumb_func_end MOD16_021D95E4 thumb_func_start MOD16_021D95F4 MOD16_021D95F4: ; 0x021D95F4 push {r3, r4, r5, lr} add r4, r1, #0 ldr r0, [r4, #0x30] cmp r0, #0 beq _021D9610 ldr r0, [r4, #0x2c] str r0, [sp] ldr r1, [r4, #0x20] ldr r2, [r4, #0x24] ldr r3, [r4, #0x28] add r0, r4, #0 bl MOD16_021D9668 pop {r3, r4, r5, pc} _021D9610: ldr r0, [r4, #0x34] add r0, r0, #1 lsr r2, r0, #0x1f lsl r1, r0, #0x1a sub r1, r1, r2 mov r0, #0x1a ror r1, r0 add r0, r2, r1 str r0, [r4, #0x34] cmp r0, #0x20 blt _021D962C add r1, r0, #1 mov r0, #0x40 sub r0, r0, r1 _021D962C: lsl r2, r0, #0xc asr r1, r2, #0x1f lsr r0, r2, #0x12 lsl r3, r1, #0xe mov r1, #2 orr r3, r0 lsl r2, r2, #0xe mov r0, #0 lsl r1, r1, #0xa add r5, r2, r1 adc r3, r0 lsl r2, r3, #0x14 lsr r0, r5, #0xc orr r0, r2 lsl r1, r1, #6 bl FX_Div asr r3, r0, #0xc ldr r0, [r4, #0x2c] add r0, r0, r3 str r0, [sp] add r0, r4, #0 ldr r1, [r4, #0x20] ldr r2, [r4, #0x24] ldr r4, [r4, #0x28] add r3, r4, r3 bl MOD16_021D9668 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D95F4 thumb_func_start MOD16_021D9668 MOD16_021D9668: ; 0x021D9668 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 ldr r6, [sp, #0x40] add r5, r0, #0 str r1, [sp, #0xc] add r7, r2, #0 str r3, [sp, #0x10] mov r4, #0 _021D9678: ldr r0, [sp, #0x10] str r7, [sp] str r0, [sp, #4] ldr r3, [sp, #0xc] str r6, [sp, #8] add r0, r4, #0 add r1, sp, #0x18 add r2, sp, #0x14 bl MOD16_021DB5A8 ldr r0, [sp, #0x18] lsl r0, r0, #0xc str r0, [sp, #0x1c] ldr r0, [sp, #0x14] lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [sp, #0x20] ldr r0, [r5] add r1, sp, #0x1c bl FUN_02020044 add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _021D9678 add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021D9668 thumb_func_start MOD16_021D96B4 MOD16_021D96B4: ; 0x021D96B4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r6, r1, #0 mov r1, #0x87 lsl r1, r1, #2 add r4, r0, r1 ldr r1, [r4, #0x44] add r5, r2, #0 add r7, r3, #0 cmp r1, r6 bne _021D96DE ldr r1, [r4, #0x48] cmp r1, r5 bne _021D96DE ldr r1, [r4, #0x4c] cmp r1, r7 bne _021D96DE ldr r2, [r4, #0x50] ldr r1, [sp, #0x20] cmp r2, r1 beq _021D971E _021D96DE: mov r1, #0x79 lsl r1, r1, #2 add r3, r0, r1 str r3, [r4] str r5, [sp] mov r0, #3 str r0, [sp, #4] ldr r1, [r3, #0x20] ldr r3, [r3, #0x24] add r0, r4, #4 add r2, r6, #0 bl MOD16_021D8BD8 ldr r3, [r4] ldr r0, [sp, #0x20] add r2, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] add r0, r4, #0 ldr r1, [r3, #0x28] ldr r3, [r3, #0x2c] add r0, #0x24 bl MOD16_021D8BD8 str r6, [r4, #0x44] str r5, [r4, #0x48] ldr r0, [sp, #0x20] str r7, [r4, #0x4c] str r0, [r4, #0x50] mov r0, #1 str r0, [r4, #0x54] _021D971E: add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021D96B4 thumb_func_start MOD16_021D9724 MOD16_021D9724: ; 0x021D9724 push {r3, r4, r5, lr} add r5, r1, #0 ldr r0, [r5, #0x54] cmp r0, #0 beq _021D975E add r0, r5, #4 bl MOD16_021D8BF4 add r4, r0, #0 add r0, r5, #0 add r0, #0x24 bl MOD16_021D8BF4 ldr r1, [r5, #4] ldr r0, [r5] cmp r4, #1 str r1, [r0, #0x20] ldr r1, [r5, #8] ldr r0, [r5] str r1, [r0, #0x24] ldr r1, [r5, #0x24] ldr r0, [r5] str r1, [r0, #0x28] ldr r1, [r5, #0x28] ldr r0, [r5] str r1, [r0, #0x2c] bne _021D975E mov r0, #0 str r0, [r5, #0x54] _021D975E: pop {r3, r4, r5, pc} thumb_func_end MOD16_021D9724 thumb_func_start MOD16_021D9760 MOD16_021D9760: ; 0x021D9760 push {r4, lr} mov r1, #0x87 add r4, r0, #0 lsl r1, r1, #2 ldr r0, _021D977C ; =MOD16_021D9724 add r1, r4, r1 mov r2, #0 bl FUN_0200CA44 mov r1, #0x9e lsl r1, r1, #2 str r0, [r4, r1] pop {r4, pc} nop _021D977C: .word MOD16_021D9724 thumb_func_end MOD16_021D9760 thumb_func_start MOD16_021D9780 MOD16_021D9780: ; 0x021D9780 push {r4, lr} add r4, r0, #0 mov r0, #0x9e lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0200CAB4 mov r0, #0x9e mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} thumb_func_end MOD16_021D9780 thumb_func_start MOD16_021D9798 MOD16_021D9798: ; 0x021D9798 push {r4, r5, r6, lr} sub sp, #0x10 add r6, r2, #0 add r4, r1, #0 ldr r2, _021D988C ; =0x00001770 mov r1, #0 add r5, r0, #0 bl Call_FillMemWithValue ldr r0, [r4] str r0, [r5] ldr r1, [r4, #8] ldr r0, _021D9890 ; =0x00001744 str r1, [r5, r0] ldr r0, [r5] bl FUN_02024CA4 cmp r0, #0 beq _021D97C2 mov r1, #1 b _021D97C4 _021D97C2: mov r1, #0 _021D97C4: ldr r0, _021D9894 ; =0x00001734 str r1, [r5, r0] ldr r0, [r4, #0x20] cmp r0, #2 bne _021D97DC ldr r0, _021D9894 ; =0x00001734 ldr r0, [r5, r0] cmp r0, #0 beq _021D97DA mov r0, #1 b _021D97DC _021D97DA: mov r0, #0 _021D97DC: cmp r0, #1 ldr r0, _021D9898 ; =0x00001730 bne _021D97EA mov r1, #1 str r1, [r5, r0] mov r1, #0 b _021D97EE _021D97EA: mov r1, #0 str r1, [r5, r0] _021D97EE: str r1, [sp] ldr r0, _021D9898 ; =0x00001730 str r1, [sp, #4] ldr r0, [r5, r0] add r2, r1, #0 str r0, [sp, #8] add r0, r5, #0 add r3, r1, #0 str r6, [sp, #0xc] bl MOD16_021D9CB0 cmp r0, #0 bne _021D980C bl ErrorHandling _021D980C: ldr r1, [r4, #0x1c] add r0, r5, #0 bl MOD16_021D9DC0 ldr r1, [r4, #0x1c] add r0, r5, #0 bl MOD16_021D9A60 ldr r1, [r4, #0x20] add r0, r5, #0 bl MOD16_021D9A78 ldr r0, [r4, #4] bl FUN_02023A68 ldr r1, _021D989C ; =0x0000174C str r0, [r5, r1] ldr r0, [r4, #4] bl FUN_020239CC ldr r1, _021D98A0 ; =0x00001750 str r0, [r5, r1] ldr r0, [r4, #4] add r1, r6, #0 bl FUN_020239A0 ldr r1, _021D98A4 ; =0x00001754 str r0, [r5, r1] add r0, r6, #0 bl FUN_02087A6C ldr r1, _021D98A8 ; =0x00001748 str r0, [r5, r1] add r0, r1, #0 add r0, #8 ldr r0, [r5, r0] cmp r0, #0 ldr r0, [r5, r1] bne _021D9864 mov r1, #0 add r2, r6, #0 bl FUN_02087A98 b _021D986C _021D9864: mov r1, #1 add r2, r6, #0 bl FUN_02087A98 _021D986C: ldr r0, [r4, #0xc] ldr r1, _021D98AC ; =0x00001760 str r0, [r5, r1] ldr r2, [r4, #0x10] add r0, r1, #4 str r2, [r5, r0] add r0, r1, #0 ldr r2, [r4, #0x14] add r0, #8 str r2, [r5, r0] ldr r0, [r4, #0x18] add r1, #0xc str r0, [r5, r1] add sp, #0x10 pop {r4, r5, r6, pc} nop _021D988C: .word 0x00001770 _021D9890: .word 0x00001744 _021D9894: .word 0x00001734 _021D9898: .word 0x00001730 _021D989C: .word 0x0000174C _021D98A0: .word 0x00001750 _021D98A4: .word 0x00001754 _021D98A8: .word 0x00001748 _021D98AC: .word 0x00001760 thumb_func_end MOD16_021D9798 thumb_func_start MOD16_021D98B0 MOD16_021D98B0: ; 0x021D98B0 push {r4, lr} add r4, r0, #0 ldr r0, _021D98D4 ; =0x00001754 ldr r0, [r4, r0] bl FUN_02021A20 ldr r0, _021D98D8 ; =0x00001748 ldr r0, [r4, r0] bl FUN_02087B0C ldr r0, _021D98D8 ; =0x00001748 ldr r0, [r4, r0] bl FUN_02087A84 ldr r0, _021D98D8 ; =0x00001748 mov r1, #0 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021D98D4: .word 0x00001754 _021D98D8: .word 0x00001748 thumb_func_end MOD16_021D98B0 thumb_func_start MOD16_021D98DC MOD16_021D98DC: ; 0x021D98DC ldr r3, _021D98E8 ; =0x02024675 lsl r1, r1, #0x10 ldr r0, [r0] lsr r1, r1, #0x10 bx r3 nop _021D98E8: .word 0x02024675 thumb_func_end MOD16_021D98DC thumb_func_start MOD16_021D98EC MOD16_021D98EC: ; 0x021D98EC push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #0x1c blt _021D98FA bl ErrorHandling _021D98FA: ldr r0, [r5] add r1, r4, #0 bl FUN_020246DC pop {r3, r4, r5, pc} thumb_func_end MOD16_021D98EC thumb_func_start MOD16_021D9904 MOD16_021D9904: ; 0x021D9904 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #2 blt _021D9912 bl ErrorHandling _021D9912: ldr r0, [r5] add r1, r4, #0 bl FUN_02024748 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D9904 thumb_func_start MOD16_021D991C MOD16_021D991C: ; 0x021D991C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #2 blt _021D992A bl ErrorHandling _021D992A: ldr r0, [r5] add r1, r4, #0 bl FUN_020247C8 pop {r3, r4, r5, pc} thumb_func_end MOD16_021D991C thumb_func_start MOD16_021D9934 MOD16_021D9934: ; 0x021D9934 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #3 blt _021D9942 bl ErrorHandling _021D9942: ldr r0, [r5] add r1, r4, #0 bl FUN_0202484C pop {r3, r4, r5, pc} thumb_func_end MOD16_021D9934 thumb_func_start MOD16_021D994C MOD16_021D994C: ; 0x021D994C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #3 blt _021D995A bl ErrorHandling _021D995A: ldr r0, [r5] add r1, r4, #0 bl FUN_020248BC pop {r3, r4, r5, pc} thumb_func_end MOD16_021D994C thumb_func_start MOD16_021D9964 MOD16_021D9964: ; 0x021D9964 push {r3, lr} ldr r3, _021D99D8 ; =0x0000019D cmp r1, r3 bhi _021D998A sub r2, r3, #1 cmp r1, r2 blo _021D997A beq _021D99BA cmp r1, r3 beq _021D99C2 b _021D99D2 _021D997A: cmp r1, #0xc9 bhi _021D9982 beq _021D99A2 b _021D99D2 _021D9982: sub r3, #0x1b cmp r1, r3 beq _021D99CA b _021D99D2 _021D998A: add r2, r3, #0 add r2, #9 cmp r1, r2 bhi _021D999A add r3, #9 cmp r1, r3 beq _021D99AA b _021D99D2 _021D999A: add r3, #0xa cmp r1, r3 beq _021D99B2 b _021D99D2 _021D99A2: mov r1, #0 bl MOD16_021D98EC pop {r3, pc} _021D99AA: mov r1, #0 bl MOD16_021D9904 pop {r3, pc} _021D99B2: mov r1, #0 bl MOD16_021D991C pop {r3, pc} _021D99BA: mov r1, #0 bl MOD16_021D9934 pop {r3, pc} _021D99C2: mov r1, #0 bl MOD16_021D994C pop {r3, pc} _021D99CA: mov r1, #0 bl MOD16_021D9A3C pop {r3, pc} _021D99D2: mov r0, #0 pop {r3, pc} nop _021D99D8: .word 0x0000019D thumb_func_end MOD16_021D9964 thumb_func_start MOD16_021D99DC MOD16_021D99DC: ; 0x021D99DC push {r3, lr} mov r2, #1 bl MOD16_021D98DC mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021D99F0 mov r0, #1 pop {r3, pc} _021D99F0: mov r0, #2 pop {r3, pc} thumb_func_end MOD16_021D99DC thumb_func_start MOD16_021D99F4 MOD16_021D99F4: ; 0x021D99F4 ldr r3, _021D99FC ; =0x0202471D ldr r0, [r0] bx r3 nop _021D99FC: .word 0x0202471D thumb_func_end MOD16_021D99F4 thumb_func_start MOD16_021D9A00 MOD16_021D9A00: ; 0x021D9A00 ldr r3, _021D9A08 ; =0x020247A5 ldr r0, [r0] bx r3 nop _021D9A08: .word 0x020247A5 thumb_func_end MOD16_021D9A00 thumb_func_start MOD16_021D9A0C MOD16_021D9A0C: ; 0x021D9A0C ldr r3, _021D9A14 ; =0x02024829 ldr r0, [r0] bx r3 nop _021D9A14: .word 0x02024829 thumb_func_end MOD16_021D9A0C thumb_func_start MOD16_021D9A18 MOD16_021D9A18: ; 0x021D9A18 ldr r3, _021D9A20 ; =0x0202489D ldr r0, [r0] bx r3 nop _021D9A20: .word 0x0202489D thumb_func_end MOD16_021D9A18 thumb_func_start MOD16_021D9A24 MOD16_021D9A24: ; 0x021D9A24 ldr r3, _021D9A2C ; =0x0202490D ldr r0, [r0] bx r3 nop _021D9A2C: .word 0x0202490D thumb_func_end MOD16_021D9A24 thumb_func_start MOD16_021D9A30 MOD16_021D9A30: ; 0x021D9A30 ldr r3, _021D9A38 ; =0x02024649 ldr r0, [r0] mov r1, #0 bx r3 .align 2, 0 _021D9A38: .word 0x02024649 thumb_func_end MOD16_021D9A30 thumb_func_start MOD16_021D9A3C MOD16_021D9A3C: ; 0x021D9A3C ldr r3, _021D9A44 ; =0x02024931 ldr r0, [r0] bx r3 nop _021D9A44: .word 0x02024931 thumb_func_end MOD16_021D9A3C thumb_func_start MOD16_021D9A48 MOD16_021D9A48: ; 0x021D9A48 ldr r3, _021D9A50 ; =0x02024971 ldr r0, [r0] bx r3 nop _021D9A50: .word 0x02024971 thumb_func_end MOD16_021D9A48 thumb_func_start MOD16_021D9A54 MOD16_021D9A54: ; 0x021D9A54 ldr r3, _021D9A5C ; =0x02024CA5 ldr r0, [r0] bx r3 nop _021D9A5C: .word 0x02024CA5 thumb_func_end MOD16_021D9A54 thumb_func_start MOD16_021D9A60 MOD16_021D9A60: ; 0x021D9A60 ldr r2, _021D9A68 ; =0x0000175C strh r1, [r0, r2] bx lr nop _021D9A68: .word 0x0000175C thumb_func_end MOD16_021D9A60 thumb_func_start MOD16_021D9A6C MOD16_021D9A6C: ; 0x021D9A6C ldr r1, _021D9A74 ; =0x0000175C ldrh r0, [r0, r1] bx lr nop _021D9A74: .word 0x0000175C thumb_func_end MOD16_021D9A6C thumb_func_start MOD16_021D9A78 MOD16_021D9A78: ; 0x021D9A78 ldr r2, _021D9A80 ; =0x0000175E strh r1, [r0, r2] bx lr nop _021D9A80: .word 0x0000175E thumb_func_end MOD16_021D9A78 thumb_func_start MOD16_021D9A84 MOD16_021D9A84: ; 0x021D9A84 ldr r1, _021D9A8C ; =0x0000175E ldrh r0, [r0, r1] bx lr nop _021D9A8C: .word 0x0000175E thumb_func_end MOD16_021D9A84 thumb_func_start MOD16_021D9A90 MOD16_021D9A90: ; 0x021D9A90 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 ldr r7, [sp, #0x4c] str r1, [sp, #0xc] add r5, r0, #0 ldr r1, _021D9CA8 ; =0x000003DA add r0, r7, #0 str r2, [sp, #0x10] str r3, [sp, #0x14] bl FUN_020169D8 add r6, r0, #0 bne _021D9AAE bl ErrorHandling _021D9AAE: ldr r2, _021D9CA8 ; =0x000003DA add r0, r6, #0 mov r1, #0 bl Call_FillMemWithValue mov r0, #0 str r0, [sp, #0x24] ldr r1, _021D9CA8 ; =0x000003DA add r0, r7, #0 bl FUN_020169D8 add r4, r0, #0 bne _021D9ACC bl ErrorHandling _021D9ACC: ldr r2, _021D9CA8 ; =0x000003DA add r0, r4, #0 mov r1, #0 bl Call_FillMemWithValue mov r1, #0 ldr r0, [sp, #0x48] str r1, [sp, #0x20] cmp r0, #0 add r2, sp, #0x1c bne _021D9AFE add r0, r7, #0 mov r1, #1 bl MOD16_021DA184 str r0, [sp, #0x18] ldr r0, [sp, #0x1c] ldr r3, [sp, #0x18] str r0, [sp] ldr r2, [r5] add r0, r6, #0 add r1, sp, #0x24 bl MOD16_021D9FC4 b _021D9B16 _021D9AFE: add r0, r7, #0 bl MOD16_021DA184 str r0, [sp, #0x18] ldr r0, [sp, #0x1c] ldr r3, [sp, #0x18] str r0, [sp] ldr r2, [r5] add r0, r6, #0 add r1, sp, #0x24 bl MOD16_021D9FC4 _021D9B16: ldr r0, [sp, #0x24] add r1, r4, #0 str r0, [sp] str r7, [sp, #4] ldr r0, [r5] add r2, sp, #0x20 str r0, [sp, #8] ldr r0, [sp, #0xc] add r3, r6, #0 bl MOD16_021DA1B4 ldr r2, [sp, #0x20] add r0, r6, #0 add r1, r4, #0 lsl r2, r2, #1 bl memcpy ldr r2, [sp, #0x20] add r0, r4, #0 str r2, [sp, #0x24] mov r1, #0 lsl r2, r2, #1 bl Call_FillMemWithValue mov r0, #0 str r0, [sp, #0x20] ldr r0, [sp, #0x24] add r1, r4, #0 str r0, [sp] str r7, [sp, #4] ldr r0, [r5] add r2, sp, #0x20 str r0, [sp, #8] ldr r0, [sp, #0x10] add r3, r6, #0 bl MOD16_021DA264 ldr r2, [sp, #0x20] cmp r2, #0 bne _021D9B6A mov r7, #0 b _021D9C82 _021D9B6A: add r0, r6, #0 add r1, r4, #0 lsl r2, r2, #1 bl memcpy ldr r2, [sp, #0x20] add r0, r4, #0 str r2, [sp, #0x24] mov r1, #0 lsl r2, r2, #1 bl Call_FillMemWithValue mov r0, #0 str r0, [sp, #0x20] ldr r0, [sp, #0x24] add r1, r4, #0 str r0, [sp] str r7, [sp, #4] ldr r0, [r5] add r2, sp, #0x20 str r0, [sp, #8] ldr r0, [sp, #0x14] add r3, r6, #0 bl MOD16_021DA348 ldr r2, [sp, #0x20] cmp r2, #0 bne _021D9BA6 mov r7, #0 b _021D9C82 _021D9BA6: add r0, r6, #0 add r1, r4, #0 lsl r2, r2, #1 bl memcpy ldr r2, [sp, #0x20] add r0, r4, #0 str r2, [sp, #0x24] mov r1, #0 lsl r2, r2, #1 bl Call_FillMemWithValue mov r0, #0 str r0, [sp, #0x20] ldr r0, [sp, #0x24] add r1, r4, #0 str r0, [sp] str r7, [sp, #4] ldr r0, [r5] add r2, sp, #0x20 str r0, [sp, #8] ldr r0, [sp, #0x40] add r3, r6, #0 bl MOD16_021DA348 ldr r2, [sp, #0x20] cmp r2, #0 bne _021D9BE2 mov r7, #0 b _021D9C82 _021D9BE2: add r0, r6, #0 add r1, r4, #0 lsl r2, r2, #1 bl memcpy ldr r2, [sp, #0x20] add r0, r4, #0 str r2, [sp, #0x24] mov r1, #0 lsl r2, r2, #1 bl Call_FillMemWithValue mov r0, #0 str r0, [sp, #0x20] ldr r0, [sp, #0x24] add r1, r4, #0 str r0, [sp] str r7, [sp, #4] ldr r0, [r5] add r2, sp, #0x20 str r0, [sp, #8] ldr r0, [sp, #0x44] add r3, r6, #0 bl MOD16_021DA49C ldr r2, [sp, #0x20] cmp r2, #0 bne _021D9C1E mov r7, #0 b _021D9C82 _021D9C1E: add r0, r6, #0 add r1, r4, #0 lsl r2, r2, #1 bl memcpy ldr r2, [sp, #0x20] add r0, r4, #0 str r2, [sp, #0x24] mov r1, #0 lsl r2, r2, #1 bl Call_FillMemWithValue mov r0, #0 str r0, [sp, #0x20] ldr r1, [r5] ldr r3, [sp, #0x24] add r0, r5, #4 add r2, r6, #0 bl MOD16_021DA080 ldr r0, [sp, #0xc] cmp r0, #0 bne _021D9C64 ldr r0, [sp, #0x10] cmp r0, #0 bne _021D9C64 ldr r0, [sp, #0x14] cmp r0, #0 bne _021D9C64 ldr r0, [sp, #0x40] cmp r0, #0 bne _021D9C64 ldr r0, [sp, #0x44] cmp r0, #0 beq _021D9C68 _021D9C64: mov r0, #1 str r0, [sp, #0x50] _021D9C68: ldr r0, [sp, #0x50] cmp r0, #0 bne _021D9C7A ldr r1, [sp, #0x18] ldr r2, [sp, #0x1c] add r0, r5, #4 bl MOD16_021DA0D8 b _021D9C80 _021D9C7A: add r0, r5, #4 bl MOD16_021DA148 _021D9C80: mov r7, #1 _021D9C82: ldr r2, _021D9CAC ; =0x00001738 add r0, r5, #4 add r1, r5, r2 add r2, r2, #4 add r2, r5, r2 bl MOD16_021DA5C4 add r0, r6, #0 bl FUN_02016A18 add r0, r4, #0 bl FUN_02016A18 ldr r0, [sp, #0x18] bl FUN_02016A18 add r0, r7, #0 add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D9CA8: .word 0x000003DA _021D9CAC: .word 0x00001738 thumb_func_end MOD16_021D9A90 thumb_func_start MOD16_021D9CB0 MOD16_021D9CB0: ; 0x021D9CB0 push {r3, r4, lr} sub sp, #0x14 ldr r4, [sp, #0x20] str r4, [sp] ldr r4, [sp, #0x24] str r4, [sp, #4] ldr r4, [sp, #0x28] str r4, [sp, #8] ldr r4, [sp, #0x2c] str r4, [sp, #0xc] mov r4, #0 str r4, [sp, #0x10] bl MOD16_021D9A90 add sp, #0x14 pop {r3, r4, pc} thumb_func_end MOD16_021D9CB0 thumb_func_start MOD16_021D9CD0 MOD16_021D9CD0: ; 0x021D9CD0 cmp r1, #0 bne _021D9CD8 mov r0, #1 bx lr _021D9CD8: ldr r1, _021D9CE8 ; =0x00001734 ldr r0, [r0, r1] cmp r0, #0 beq _021D9CE4 mov r0, #1 bx lr _021D9CE4: mov r0, #0 bx lr .align 2, 0 _021D9CE8: .word 0x00001734 thumb_func_end MOD16_021D9CD0 thumb_func_start MOD16_021D9CEC MOD16_021D9CEC: ; 0x021D9CEC push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021D9CD0 cmp r0, #0 beq _021D9CFE ldr r1, _021D9D00 ; =0x00001730 str r4, [r5, r1] _021D9CFE: pop {r3, r4, r5, pc} .align 2, 0 _021D9D00: .word 0x00001730 thumb_func_end MOD16_021D9CEC thumb_func_start MOD16_021D9D04 MOD16_021D9D04: ; 0x021D9D04 ldr r1, _021D9D0C ; =0x00001730 ldr r0, [r0, r1] bx lr nop _021D9D0C: .word 0x00001730 thumb_func_end MOD16_021D9D04 thumb_func_start MOD16_021D9D10 MOD16_021D9D10: ; 0x021D9D10 cmp r1, #0 blt _021D9D22 mov r2, #0xf7 lsl r2, r2, #4 ldr r0, [r0, r2] cmp r1, r0 bge _021D9D22 mov r0, #1 bx lr _021D9D22: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021D9D10 thumb_func_start MOD16_021D9D28 MOD16_021D9D28: ; 0x021D9D28 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021D9D10 cmp r0, #0 beq _021D9D3E ldr r0, _021D9D44 ; =0x00000F6C str r4, [r5, r0] mov r0, #1 pop {r3, r4, r5, pc} _021D9D3E: mov r0, #0 pop {r3, r4, r5, pc} nop _021D9D44: .word 0x00000F6C thumb_func_end MOD16_021D9D28 thumb_func_start MOD16_021D9D48 MOD16_021D9D48: ; 0x021D9D48 push {r3, r4, r5, lr} add r4, r1, #0 ldr r1, _021D9D84 ; =0x00000F6C add r5, r0, #0 ldr r1, [r5, r1] add r1, r1, r4 bl MOD16_021D9D10 cmp r0, #0 beq _021D9D68 ldr r0, _021D9D84 ; =0x00000F6C ldr r1, [r5, r0] add r1, r1, r4 str r1, [r5, r0] mov r0, #1 pop {r3, r4, r5, pc} _021D9D68: cmp r4, #0 blt _021D9D78 mov r0, #0xf7 lsl r0, r0, #4 ldr r1, [r5, r0] sub r0, r0, #4 sub r1, r1, #1 b _021D9D7C _021D9D78: ldr r0, _021D9D84 ; =0x00000F6C mov r1, #0 _021D9D7C: str r1, [r5, r0] mov r0, #0 pop {r3, r4, r5, pc} nop _021D9D84: .word 0x00000F6C thumb_func_end MOD16_021D9D48 thumb_func_start MOD16_021D9D88 MOD16_021D9D88: ; 0x021D9D88 ldr r1, _021D9D90 ; =0x00000F6C ldr r0, [r0, r1] bx lr nop _021D9D90: .word 0x00000F6C thumb_func_end MOD16_021D9D88 thumb_func_start MOD16_021D9D94 MOD16_021D9D94: ; 0x021D9D94 mov r1, #0xf7 lsl r1, r1, #4 ldr r0, [r0, r1] bx lr thumb_func_end MOD16_021D9D94 thumb_func_start MOD16_021D9D9C MOD16_021D9D9C: ; 0x021D9D9C push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021D9D94 mov r2, #0 cmp r0, #0 ble _021D9DBA _021D9DAC: ldr r1, [r5, #4] cmp r1, r4 beq _021D9DBA add r2, r2, #1 add r5, #8 cmp r2, r0 blt _021D9DAC _021D9DBA: add r0, r2, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D9D9C thumb_func_start MOD16_021D9DC0 MOD16_021D9DC0: ; 0x021D9DC0 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 bl MOD16_021D9D94 add r4, r0, #0 add r0, r5, #0 add r1, r6, #0 bl MOD16_021D9D9C add r1, r0, #0 cmp r4, r1 bls _021D9DE2 add r0, r5, #0 bl MOD16_021D9D28 pop {r4, r5, r6, pc} _021D9DE2: mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021D9DC0 thumb_func_start MOD16_021D9DE8 MOD16_021D9DE8: ; 0x021D9DE8 ldr r1, _021D9DF4 ; =0x00000F6C ldr r1, [r0, r1] lsl r1, r1, #3 add r0, r0, r1 ldr r0, [r0, #4] bx lr .align 2, 0 _021D9DF4: .word 0x00000F6C thumb_func_end MOD16_021D9DE8 thumb_func_start MOD16_021D9DF8 MOD16_021D9DF8: ; 0x021D9DF8 ldr r1, _021D9E04 ; =0x00000F6C ldr r1, [r0, r1] lsl r1, r1, #3 add r0, r0, r1 ldr r0, [r0, #8] bx lr .align 2, 0 _021D9E04: .word 0x00000F6C thumb_func_end MOD16_021D9DF8 thumb_func_start MOD16_021D9E08 MOD16_021D9E08: ; 0x021D9E08 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021D9D10 cmp r0, #0 beq _021D9E1E add r1, r5, #4 lsl r0, r4, #3 add r0, r1, r0 pop {r3, r4, r5, pc} _021D9E1E: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021D9E08 thumb_func_start MOD16_021D9E24 MOD16_021D9E24: ; 0x021D9E24 ldr r2, _021D9E38 ; =0x0000172C ldr r0, [r0, r2] cmp r0, r1 ble _021D9E34 cmp r1, #0 blt _021D9E34 mov r0, #1 bx lr _021D9E34: mov r0, #0 bx lr .align 2, 0 _021D9E38: .word 0x0000172C thumb_func_end MOD16_021D9E24 thumb_func_start MOD16_021D9E3C MOD16_021D9E3C: ; 0x021D9E3C push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021D9E24 cmp r0, #0 beq _021D9E62 ldr r1, _021D9E68 ; =0x00001728 add r0, r5, #0 str r4, [r5, r1] ldr r1, [r5, r1] lsl r1, r1, #2 add r2, r5, r1 ldr r1, _021D9E6C ; =0x00000F74 ldr r1, [r2, r1] bl MOD16_021D9D28 mov r0, #1 pop {r3, r4, r5, pc} _021D9E62: mov r0, #0 pop {r3, r4, r5, pc} nop _021D9E68: .word 0x00001728 _021D9E6C: .word 0x00000F74 thumb_func_end MOD16_021D9E3C thumb_func_start MOD16_021D9E70 MOD16_021D9E70: ; 0x021D9E70 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021D9EA8 cmp r0, #0 beq _021D9E9A ldr r1, _021D9EA0 ; =0x00001728 ldr r0, [r5, r1] add r0, r0, r4 str r0, [r5, r1] ldr r1, [r5, r1] add r0, r5, #0 lsl r1, r1, #2 add r2, r5, r1 ldr r1, _021D9EA4 ; =0x00000F74 ldr r1, [r2, r1] bl MOD16_021D9D28 mov r0, #1 pop {r3, r4, r5, pc} _021D9E9A: mov r0, #0 pop {r3, r4, r5, pc} nop _021D9EA0: .word 0x00001728 _021D9EA4: .word 0x00000F74 thumb_func_end MOD16_021D9E70 thumb_func_start MOD16_021D9EA8 MOD16_021D9EA8: ; 0x021D9EA8 push {r3, lr} ldr r2, _021D9EC0 ; =0x00001728 ldr r2, [r0, r2] add r1, r2, r1 bl MOD16_021D9E24 cmp r0, #0 beq _021D9EBC mov r0, #1 pop {r3, pc} _021D9EBC: mov r0, #0 pop {r3, pc} .align 2, 0 _021D9EC0: .word 0x00001728 thumb_func_end MOD16_021D9EA8 thumb_func_start MOD16_021D9EC4 MOD16_021D9EC4: ; 0x021D9EC4 ldr r1, _021D9ECC ; =0x00001728 ldr r0, [r0, r1] bx lr nop _021D9ECC: .word 0x00001728 thumb_func_end MOD16_021D9EC4 thumb_func_start MOD16_021D9ED0 MOD16_021D9ED0: ; 0x021D9ED0 ldr r1, _021D9ED8 ; =0x0000172C ldr r0, [r0, r1] bx lr nop _021D9ED8: .word 0x0000172C thumb_func_end MOD16_021D9ED0 thumb_func_start MOD16_021D9EDC MOD16_021D9EDC: ; 0x021D9EDC lsl r1, r1, #2 add r1, r0, r1 ldr r0, _021D9EE8 ; =0x00000F74 ldr r0, [r1, r0] bx lr nop _021D9EE8: .word 0x00000F74 thumb_func_end MOD16_021D9EDC thumb_func_start MOD16_021D9EEC MOD16_021D9EEC: ; 0x021D9EEC push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, _021D9F24 ; =0x0000172C mov r4, #0 ldr r0, [r5, r0] cmp r0, #0 ble _021D9F22 ldr r7, _021D9F24 ; =0x0000172C _021D9EFC: add r0, r5, #0 add r1, r4, #0 bl MOD16_021D9EDC add r6, r0, #0 add r0, r5, #0 bl MOD16_021D9D88 cmp r6, r0 bne _021D9F1A add r0, r5, #0 add r1, r4, #0 bl MOD16_021D9E3C pop {r3, r4, r5, r6, r7, pc} _021D9F1A: ldr r0, [r5, r7] add r4, r4, #1 cmp r4, r0 blt _021D9EFC _021D9F22: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021D9F24: .word 0x0000172C thumb_func_end MOD16_021D9EEC thumb_func_start MOD16_021D9F28 MOD16_021D9F28: ; 0x021D9F28 ldr r1, _021D9F30 ; =0x00001738 ldr r0, [r0, r1] bx lr nop _021D9F30: .word 0x00001738 thumb_func_end MOD16_021D9F28 thumb_func_start MOD16_021D9F34 MOD16_021D9F34: ; 0x021D9F34 ldr r1, _021D9F3C ; =0x0000173C ldr r0, [r0, r1] bx lr nop _021D9F3C: .word 0x0000173C thumb_func_end MOD16_021D9F34 thumb_func_start MOD16_021D9F40 MOD16_021D9F40: ; 0x021D9F40 ldr r1, _021D9F48 ; =0x00001754 ldr r0, [r0, r1] bx lr nop _021D9F48: .word 0x00001754 thumb_func_end MOD16_021D9F40 thumb_func_start MOD16_021D9F4C MOD16_021D9F4C: ; 0x021D9F4C ldr r1, _021D9F54 ; =0x00001750 ldr r0, [r0, r1] bx lr nop _021D9F54: .word 0x00001750 thumb_func_end MOD16_021D9F4C thumb_func_start MOD16_021D9F58 MOD16_021D9F58: ; 0x021D9F58 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 bl MOD16_021D9DE8 add r4, r0, #0 ldr r0, [r5] bl FUN_02024D58 cmp r0, #0 bne _021D9F72 mov r0, #0 pop {r4, r5, r6, pc} _021D9F72: lsl r1, r4, #0x10 ldr r0, [r5] lsr r1, r1, #0x10 add r2, r6, #0 bl FUN_02024D00 pop {r4, r5, r6, pc} thumb_func_end MOD16_021D9F58 thumb_func_start MOD16_021D9F80 MOD16_021D9F80: ; 0x021D9F80 ldr r3, _021D9F88 ; =0x02024CC5 ldr r0, [r0] bx r3 nop _021D9F88: .word 0x02024CC5 thumb_func_end MOD16_021D9F80 thumb_func_start MOD16_021D9F8C MOD16_021D9F8C: ; 0x021D9F8C ldr r1, _021D9FAC ; =0x021C48F8 ldrh r1, [r1, #0x22] cmp r1, #0 beq _021D9F9C ldr r1, _021D9FB0 ; =0x00001758 mov r2, #0 str r2, [r0, r1] bx lr _021D9F9C: ldr r1, _021D9FB4 ; =0x021C48B8 ldr r1, [r1, #0x44] cmp r1, #0 beq _021D9FAA ldr r1, _021D9FB0 ; =0x00001758 mov r2, #1 str r2, [r0, r1] _021D9FAA: bx lr .align 2, 0 _021D9FAC: .word 0x021C48F8 _021D9FB0: .word 0x00001758 _021D9FB4: .word 0x021C48B8 thumb_func_end MOD16_021D9F8C thumb_func_start MOD16_021D9FB8 MOD16_021D9FB8: ; 0x021D9FB8 ldr r1, _021D9FC0 ; =0x00001758 ldr r0, [r0, r1] bx lr nop _021D9FC0: .word 0x00001758 thumb_func_end MOD16_021D9FB8 thumb_func_start MOD16_021D9FC4 MOD16_021D9FC4: ; 0x021D9FC4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 ldr r7, [sp, #0x20] add r5, r1, #0 mov r6, #0 add r4, r3, #0 str r0, [sp] str r2, [sp, #4] str r6, [r5] cmp r7, #0 ble _021D9FFE _021D9FDA: ldrh r1, [r4] ldr r0, [sp, #4] bl FUN_020245F0 cmp r0, #0 beq _021D9FF6 ldr r1, [r5] ldrh r0, [r4] lsl r2, r1, #1 ldr r1, [sp] strh r0, [r1, r2] ldr r0, [r5] add r0, r0, #1 str r0, [r5] _021D9FF6: add r6, r6, #1 add r4, r4, #2 cmp r6, r7 blt _021D9FDA _021D9FFE: add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021D9FC4 thumb_func_start MOD16_021DA004 MOD16_021DA004: ; 0x021DA004 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 str r0, [sp] ldr r0, [sp, #0x28] str r1, [sp, #4] str r0, [sp, #0x28] ldr r0, [sp, #0x30] mov r1, #0 str r0, [sp, #0x30] ldr r0, [sp, #0x34] add r6, r2, #0 str r0, [sp, #0x34] ldr r0, [sp, #4] str r3, [sp, #8] str r1, [r0] add r0, r3, #0 ldr r7, [sp, #0x2c] str r1, [sp, #0xc] cmp r0, #0 ble _021DA07C _021DA02C: mov r4, #0 cmp r7, #0 ble _021DA054 ldr r5, [sp, #0x28] _021DA034: ldrh r1, [r6] ldrh r0, [r5] cmp r1, r0 bne _021DA04C ldr r0, [sp, #0x30] cmp r0, #1 beq _021DA054 ldr r0, [sp, #0x34] bl FUN_02024594 cmp r0, #0 bne _021DA054 _021DA04C: add r4, r4, #1 add r5, r5, #2 cmp r4, r7 blt _021DA034 _021DA054: cmp r4, r7 bge _021DA06E ldr r0, [sp, #4] ldrh r2, [r6] ldr r0, [r0] lsl r1, r0, #1 ldr r0, [sp] strh r2, [r0, r1] ldr r0, [sp, #4] ldr r0, [r0] add r1, r0, #1 ldr r0, [sp, #4] str r1, [r0] _021DA06E: ldr r0, [sp, #0xc] add r6, r6, #2 add r1, r0, #1 ldr r0, [sp, #8] str r1, [sp, #0xc] cmp r1, r0 blt _021DA02C _021DA07C: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DA004 thumb_func_start MOD16_021DA080 MOD16_021DA080: ; 0x021DA080 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, _021DA0D4 ; =0x00000F6C mov r6, #0 add r7, r3, #0 add r4, r2, #0 str r1, [sp] str r6, [r5, r0] cmp r7, #0 ble _021DA0D2 _021DA094: ldrh r1, [r4] ldr r0, [sp] bl FUN_02024594 cmp r0, #0 ldr r0, _021DA0D4 ; =0x00000F6C beq _021DA0AC ldr r0, [r5, r0] lsl r0, r0, #3 add r1, r5, r0 mov r0, #2 b _021DA0B4 _021DA0AC: ldr r0, [r5, r0] lsl r0, r0, #3 add r1, r5, r0 mov r0, #1 _021DA0B4: str r0, [r1, #4] ldr r1, _021DA0D4 ; =0x00000F6C ldrh r0, [r4] ldr r1, [r5, r1] add r6, r6, #1 lsl r1, r1, #3 str r0, [r5, r1] ldr r0, _021DA0D4 ; =0x00000F6C add r4, r4, #2 ldr r0, [r5, r0] add r1, r0, #1 ldr r0, _021DA0D4 ; =0x00000F6C str r1, [r5, r0] cmp r6, r7 blt _021DA094 _021DA0D2: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DA0D4: .word 0x00000F6C thumb_func_end MOD16_021DA080 thumb_func_start MOD16_021DA0D8 MOD16_021DA0D8: ; 0x021DA0D8 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 mov r4, #0 ldr r1, _021DA13C ; =0x00001728 mov ip, r2 str r4, [r0, r1] add r1, r2, #0 mov lr, r4 cmp r1, #0 ble _021DA13A ldr r7, _021DA13C ; =0x00001728 add r5, r0, #0 _021DA0F0: ldr r1, _021DA140 ; =0x00000F6C ldr r1, [r0, r1] cmp r4, r1 bge _021DA12C ldrh r1, [r6] ldr r2, [r5] cmp r2, r1 ldr r1, _021DA13C ; =0x00001728 bne _021DA11A ldr r1, [r0, r1] add r5, #8 lsl r1, r1, #2 add r2, r0, r1 mov r1, #0xf7 lsl r1, r1, #4 str r4, [r2, r1] ldr r1, [r0, r7] add r4, r4, #1 add r1, r1, #1 str r1, [r0, r7] b _021DA12C _021DA11A: ldr r1, [r0, r1] ldr r2, _021DA144 ; =0x000001EE lsl r1, r1, #2 add r3, r0, r1 lsl r1, r2, #3 str r2, [r3, r1] ldr r1, [r0, r7] add r1, r1, #1 str r1, [r0, r7] _021DA12C: mov r1, lr add r1, r1, #1 mov r2, ip add r6, r6, #2 mov lr, r1 cmp r1, r2 blt _021DA0F0 _021DA13A: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DA13C: .word 0x00001728 _021DA140: .word 0x00000F6C _021DA144: .word 0x000001EE thumb_func_end MOD16_021DA0D8 thumb_func_start MOD16_021DA148 MOD16_021DA148: ; 0x021DA148 push {r3, r4, r5, r6} ldr r2, _021DA17C ; =0x00001728 mov r1, #0 str r1, [r0, r2] ldr r2, _021DA180 ; =0x00000F6C ldr r2, [r0, r2] cmp r2, #0 ble _021DA178 ldr r5, _021DA17C ; =0x00001728 mov r3, #0xf7 lsl r3, r3, #4 add r2, r5, #0 sub r4, r3, #4 _021DA162: ldr r6, [r0, r2] lsl r6, r6, #2 add r6, r0, r6 str r1, [r6, r3] ldr r6, [r0, r5] add r1, r1, #1 add r6, r6, #1 str r6, [r0, r5] ldr r6, [r0, r4] cmp r1, r6 blt _021DA162 _021DA178: pop {r3, r4, r5, r6} bx lr .align 2, 0 _021DA17C: .word 0x00001728 _021DA180: .word 0x00000F6C thumb_func_end MOD16_021DA148 thumb_func_start MOD16_021DA184 MOD16_021DA184: ; 0x021DA184 push {r3, r4, r5, r6, lr} sub sp, #0xc add r5, r1, #0 add r6, r0, #0 add r4, r2, #0 cmp r5, #0x2f blt _021DA196 bl ErrorHandling _021DA196: mov r2, #0 add r5, #0xb str r2, [sp] add r0, sp, #8 str r0, [sp, #4] mov r0, #0x4b add r1, r5, #0 add r3, r6, #0 bl FUN_02006D18 ldr r1, [sp, #8] lsr r1, r1, #1 str r1, [r4] add sp, #0xc pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021DA184 thumb_func_start MOD16_021DA1B4 MOD16_021DA1B4: ; 0x021DA1B4 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r5, r0, #0 str r1, [sp, #0x10] add r7, r2, #0 mov r4, #0 str r3, [sp, #0x14] ldr r0, [sp, #0x34] cmp r5, #5 bhi _021DA222 add r1, r5, r5 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DA1D4: ; jump table .short _021DA1E0 - _021DA1D4 - 2 ; case 0 .short _021DA1E4 - _021DA1D4 - 2 ; case 1 .short _021DA1F2 - _021DA1D4 - 2 ; case 2 .short _021DA1FE - _021DA1D4 - 2 ; case 3 .short _021DA20A - _021DA1D4 - 2 ; case 4 .short _021DA216 - _021DA1D4 - 2 ; case 5 _021DA1E0: add r6, r4, #0 b _021DA226 _021DA1E4: mov r1, #2 add r2, sp, #0x18 bl MOD16_021DA184 add r6, r0, #0 mov r4, #1 b _021DA226 _021DA1F2: mov r1, #3 add r2, sp, #0x18 bl MOD16_021DA184 add r6, r0, #0 b _021DA226 _021DA1FE: mov r1, #4 add r2, sp, #0x18 bl MOD16_021DA184 add r6, r0, #0 b _021DA226 _021DA20A: mov r1, #5 add r2, sp, #0x18 bl MOD16_021DA184 add r6, r0, #0 b _021DA226 _021DA216: mov r1, #6 add r2, sp, #0x18 bl MOD16_021DA184 add r6, r0, #0 b _021DA226 _021DA222: bl ErrorHandling _021DA226: cmp r6, #0 beq _021DA24E ldr r0, [sp, #0x14] add r1, r7, #0 str r0, [sp] ldr r0, [sp, #0x30] add r2, r6, #0 str r0, [sp, #4] ldr r0, [sp, #0x38] str r4, [sp, #8] str r0, [sp, #0xc] ldr r0, [sp, #0x10] ldr r3, [sp, #0x18] bl MOD16_021DA004 add r0, r6, #0 bl FUN_02016A18 add sp, #0x1c pop {r4, r5, r6, r7, pc} _021DA24E: ldr r2, [sp, #0x30] ldr r0, [sp, #0x10] ldr r1, [sp, #0x14] lsl r2, r2, #1 bl memcpy ldr r0, [sp, #0x30] str r0, [r7] add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DA1B4 thumb_func_start MOD16_021DA264 MOD16_021DA264: ; 0x021DA264 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r0, #0 add r7, r1, #0 add r6, r2, #0 str r3, [sp, #0x10] ldr r0, [sp, #0x34] cmp r5, #9 bhi _021DA306 add r1, r5, r5 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DA282: ; jump table .short _021DA296 - _021DA282 - 2 ; case 0 .short _021DA29A - _021DA282 - 2 ; case 1 .short _021DA2A6 - _021DA282 - 2 ; case 2 .short _021DA2B2 - _021DA282 - 2 ; case 3 .short _021DA2BE - _021DA282 - 2 ; case 4 .short _021DA2CA - _021DA282 - 2 ; case 5 .short _021DA2D6 - _021DA282 - 2 ; case 6 .short _021DA2E2 - _021DA282 - 2 ; case 7 .short _021DA2EE - _021DA282 - 2 ; case 8 .short _021DA2FA - _021DA282 - 2 ; case 9 _021DA296: mov r4, #0 b _021DA30A _021DA29A: mov r1, #7 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2A6: mov r1, #8 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2B2: mov r1, #9 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2BE: mov r1, #0xa add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2CA: mov r1, #0xb add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2D6: mov r1, #0xc add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2E2: mov r1, #0xd add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2EE: mov r1, #0xe add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA2FA: mov r1, #0xf add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA30A _021DA306: bl ErrorHandling _021DA30A: cmp r4, #0 beq _021DA332 str r4, [sp] ldr r0, [sp, #0x14] ldr r2, [sp, #0x10] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [sp, #0x38] ldr r3, [sp, #0x30] str r0, [sp, #0xc] add r0, r7, #0 add r1, r6, #0 bl MOD16_021DA004 add r0, r4, #0 bl FUN_02016A18 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021DA332: ldr r2, [sp, #0x30] ldr r1, [sp, #0x10] add r0, r7, #0 lsl r2, r2, #1 bl memcpy ldr r0, [sp, #0x30] str r0, [r6] add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DA264 thumb_func_start MOD16_021DA348 MOD16_021DA348: ; 0x021DA348 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r0, #0 add r7, r1, #0 add r6, r2, #0 str r3, [sp, #0x10] ldr r0, [sp, #0x34] cmp r5, #0x11 bhi _021DA45A add r1, r5, r5 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DA366: ; jump table .short _021DA38A - _021DA366 - 2 ; case 0 .short _021DA38E - _021DA366 - 2 ; case 1 .short _021DA39A - _021DA366 - 2 ; case 2 .short _021DA3A6 - _021DA366 - 2 ; case 3 .short _021DA3B2 - _021DA366 - 2 ; case 4 .short _021DA3BE - _021DA366 - 2 ; case 5 .short _021DA3CA - _021DA366 - 2 ; case 6 .short _021DA3D6 - _021DA366 - 2 ; case 7 .short _021DA3E2 - _021DA366 - 2 ; case 8 .short _021DA3EE - _021DA366 - 2 ; case 9 .short _021DA3FA - _021DA366 - 2 ; case 10 .short _021DA406 - _021DA366 - 2 ; case 11 .short _021DA412 - _021DA366 - 2 ; case 12 .short _021DA41E - _021DA366 - 2 ; case 13 .short _021DA42A - _021DA366 - 2 ; case 14 .short _021DA436 - _021DA366 - 2 ; case 15 .short _021DA442 - _021DA366 - 2 ; case 16 .short _021DA44E - _021DA366 - 2 ; case 17 _021DA38A: mov r4, #0 b _021DA45E _021DA38E: mov r1, #0x10 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA39A: mov r1, #0x11 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3A6: mov r1, #0x12 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3B2: mov r1, #0x13 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3BE: mov r1, #0x14 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3CA: mov r1, #0x15 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3D6: mov r1, #0x16 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3E2: mov r1, #0x17 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3EE: mov r1, #0x18 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA3FA: mov r1, #0x19 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA406: mov r1, #0x1a add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA412: mov r1, #0x1b add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA41E: mov r1, #0x1c add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA42A: mov r1, #0x1d add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA436: mov r1, #0x1e add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA442: mov r1, #0x1f add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA44E: mov r1, #0x20 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA45E _021DA45A: bl ErrorHandling _021DA45E: cmp r4, #0 beq _021DA486 str r4, [sp] ldr r0, [sp, #0x14] ldr r2, [sp, #0x10] str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] ldr r0, [sp, #0x38] ldr r3, [sp, #0x30] str r0, [sp, #0xc] add r0, r7, #0 add r1, r6, #0 bl MOD16_021DA004 add r0, r4, #0 bl FUN_02016A18 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021DA486: ldr r2, [sp, #0x30] ldr r1, [sp, #0x10] add r0, r7, #0 lsl r2, r2, #1 bl memcpy ldr r0, [sp, #0x30] str r0, [r6] add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DA348 thumb_func_start MOD16_021DA49C MOD16_021DA49C: ; 0x021DA49C push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r0, #0 add r7, r1, #0 add r6, r2, #0 str r3, [sp, #0x10] ldr r0, [sp, #0x34] cmp r5, #0xe bhi _021DA584 add r1, r5, r5 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DA4BA: ; jump table .short _021DA4D8 - _021DA4BA - 2 ; case 0 .short _021DA4DC - _021DA4BA - 2 ; case 1 .short _021DA4E8 - _021DA4BA - 2 ; case 2 .short _021DA4F4 - _021DA4BA - 2 ; case 3 .short _021DA500 - _021DA4BA - 2 ; case 4 .short _021DA50C - _021DA4BA - 2 ; case 5 .short _021DA518 - _021DA4BA - 2 ; case 6 .short _021DA524 - _021DA4BA - 2 ; case 7 .short _021DA530 - _021DA4BA - 2 ; case 8 .short _021DA53C - _021DA4BA - 2 ; case 9 .short _021DA548 - _021DA4BA - 2 ; case 10 .short _021DA554 - _021DA4BA - 2 ; case 11 .short _021DA560 - _021DA4BA - 2 ; case 12 .short _021DA56C - _021DA4BA - 2 ; case 13 .short _021DA578 - _021DA4BA - 2 ; case 14 _021DA4D8: mov r4, #0 b _021DA588 _021DA4DC: mov r1, #0x21 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA4E8: mov r1, #0x22 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA4F4: mov r1, #0x23 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA500: mov r1, #0x24 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA50C: mov r1, #0x25 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA518: mov r1, #0x26 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA524: mov r1, #0x27 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA530: mov r1, #0x28 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA53C: mov r1, #0x29 add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA548: mov r1, #0x2a add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA554: mov r1, #0x2b add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA560: mov r1, #0x2c add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA56C: mov r1, #0x2d add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA578: mov r1, #0x2e add r2, sp, #0x14 bl MOD16_021DA184 add r4, r0, #0 b _021DA588 _021DA584: bl ErrorHandling _021DA588: cmp r4, #0 beq _021DA5B0 str r4, [sp] ldr r0, [sp, #0x14] ldr r2, [sp, #0x10] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [sp, #0x38] ldr r3, [sp, #0x30] str r0, [sp, #0xc] add r0, r7, #0 add r1, r6, #0 bl MOD16_021DA004 add r0, r4, #0 bl FUN_02016A18 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021DA5B0: ldr r2, [sp, #0x30] ldr r1, [sp, #0x10] add r0, r7, #0 lsl r2, r2, #1 bl memcpy ldr r0, [sp, #0x30] str r0, [r6] add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DA49C thumb_func_start MOD16_021DA5C4 MOD16_021DA5C4: ; 0x021DA5C4 push {r3, r4, r5, r6} mov r3, #0 str r3, [r1] ldr r4, _021DA5F8 ; =0x00000F6C str r3, [r2] ldr r4, [r0, r4] cmp r4, #0 ble _021DA5F4 ldr r5, _021DA5F8 ; =0x00000F6C add r4, r0, #0 _021DA5D8: ldr r6, [r4, #4] cmp r6, #2 bne _021DA5E4 ldr r6, [r2] add r6, r6, #1 str r6, [r2] _021DA5E4: ldr r6, [r1] add r3, r3, #1 add r6, r6, #1 str r6, [r1] ldr r6, [r0, r5] add r4, #8 cmp r3, r6 blt _021DA5D8 _021DA5F4: pop {r3, r4, r5, r6} bx lr .align 2, 0 _021DA5F8: .word 0x00000F6C thumb_func_end MOD16_021DA5C4 thumb_func_start MOD16_021DA5FC MOD16_021DA5FC: ; 0x021DA5FC push {r3, r4, r5, lr} mov r1, #0x48 add r5, r0, #0 bl FUN_02016998 add r4, r0, #0 bne _021DA60E bl ErrorHandling _021DA60E: add r0, r4, #0 mov r1, #0 mov r2, #0x48 bl Call_FillMemWithValue mov r0, #5 str r0, [r4, #8] str r5, [r4, #0x44] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DA5FC thumb_func_start MOD16_021DA624 MOD16_021DA624: ; 0x021DA624 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 cmp r5, #0 bne _021DA632 bl ErrorHandling _021DA632: cmp r4, #0 bne _021DA63A bl ErrorHandling _021DA63A: add r0, r5, #0 bl MOD16_021DA7C4 cmp r0, #0 bne _021DA648 bl ErrorHandling _021DA648: ldr r0, [r4] str r0, [r5] ldr r0, [r4, #4] str r0, [r5, #4] mov r0, #0 str r0, [r5, #8] add r0, r5, #0 add r0, #0xc bl MOD16_021DA7F4 ldr r0, [r5, #0x44] str r0, [r5, #0x10] add r0, r5, #0 add r0, #0x2c bl MOD16_021DA800 ldr r0, [r5, #0x44] str r0, [r5, #0x30] ldr r0, [r4, #8] ldr r0, [r0] str r0, [r5, #0x20] ldr r0, [r4, #8] ldr r0, [r0, #4] str r0, [r5, #0x24] ldr r0, [r4, #8] ldr r0, [r0, #8] str r0, [r5, #0x28] ldr r0, [r4, #0xc] ldr r0, [r0] str r0, [r5, #0x38] ldr r0, [r4, #0xc] ldr r0, [r0, #4] str r0, [r5, #0x3c] ldr r0, [r4, #0xc] ldr r0, [r0, #8] str r0, [r5, #0x40] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DA624 thumb_func_start MOD16_021DA694 MOD16_021DA694: ; 0x021DA694 push {r4, lr} add r4, r0, #0 bne _021DA69E bl ErrorHandling _021DA69E: ldr r0, [r4, #8] cmp r0, #5 bhi _021DA712 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DA6B0: ; jump table .short _021DA6BC - _021DA6B0 - 2 ; case 0 .short _021DA716 - _021DA6B0 - 2 ; case 1 .short _021DA6D8 - _021DA6B0 - 2 ; case 2 .short _021DA716 - _021DA6B0 - 2 ; case 3 .short _021DA6F6 - _021DA6B0 - 2 ; case 4 .short _021DA70E - _021DA6B0 - 2 ; case 5 _021DA6BC: add r1, r4, #0 ldr r0, [r4, #0x20] ldr r2, [r4] add r1, #0xc bl MOD16_021DA808 cmp r0, #1 bne _021DA716 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] mov r0, #0 str r0, [r4, #0xc] b _021DA716 _021DA6D8: add r1, r4, #0 ldr r0, [r4, #0x24] ldr r2, [r4] add r1, #0xc bl MOD16_021DA808 cmp r0, #1 bne _021DA716 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] mov r0, #0 str r0, [r4, #0xc] str r0, [r4, #0x2c] b _021DA716 _021DA6F6: add r1, r4, #0 ldr r0, [r4, #0x28] ldr r2, [r4] add r1, #0xc bl MOD16_021DA808 cmp r0, #1 bne _021DA716 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _021DA716 _021DA70E: mov r0, #1 pop {r4, pc} _021DA712: bl ErrorHandling _021DA716: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DA694 thumb_func_start MOD16_021DA71C MOD16_021DA71C: ; 0x021DA71C push {r3, r4, lr} sub sp, #4 add r4, r0, #0 bne _021DA728 bl ErrorHandling _021DA728: ldr r0, [r4, #8] cmp r0, #5 bhi _021DA7A6 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DA73A: ; jump table .short _021DA7AA - _021DA73A - 2 ; case 0 .short _021DA746 - _021DA73A - 2 ; case 1 .short _021DA76A - _021DA73A - 2 ; case 2 .short _021DA780 - _021DA73A - 2 ; case 3 .short _021DA7AA - _021DA73A - 2 ; case 4 .short _021DA7A0 - _021DA73A - 2 ; case 5 _021DA746: add r0, r4, #0 add r0, #0xc str r0, [sp] add r2, r4, #0 ldr r0, [r4, #0x38] ldr r1, [r4, #4] ldr r3, [r4] add r2, #0x2c bl MOD16_021DA828 cmp r0, #1 bne _021DA7AA ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] mov r0, #0 str r0, [r4, #0x2c] b _021DA7AA _021DA76A: add r0, r4, #0 add r0, #0xc str r0, [sp] add r2, r4, #0 ldr r0, [r4, #0x3c] ldr r1, [r4, #4] ldr r3, [r4] add r2, #0x2c bl MOD16_021DA828 b _021DA7AA _021DA780: add r0, r4, #0 add r0, #0xc str r0, [sp] add r2, r4, #0 ldr r0, [r4, #0x40] ldr r1, [r4, #4] ldr r3, [r4] add r2, #0x2c bl MOD16_021DA828 cmp r0, #1 bne _021DA7AA ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _021DA7AA _021DA7A0: add sp, #4 mov r0, #1 pop {r3, r4, pc} _021DA7A6: bl ErrorHandling _021DA7AA: mov r0, #0 add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021DA71C thumb_func_start MOD16_021DA7B0 MOD16_021DA7B0: ; 0x021DA7B0 str r1, [r0, #0x1c] bx lr thumb_func_end MOD16_021DA7B0 thumb_func_start MOD16_021DA7B4 MOD16_021DA7B4: ; 0x021DA7B4 push {r4, lr} add r4, r0, #0 bne _021DA7BE bl ErrorHandling _021DA7BE: mov r0, #1 str r0, [r4, #0x18] pop {r4, pc} thumb_func_end MOD16_021DA7B4 thumb_func_start MOD16_021DA7C4 MOD16_021DA7C4: ; 0x021DA7C4 push {r4, lr} add r4, r0, #0 bne _021DA7CE bl ErrorHandling _021DA7CE: ldr r0, [r4, #8] cmp r0, #5 bne _021DA7D8 mov r0, #1 pop {r4, pc} _021DA7D8: mov r0, #0 pop {r4, pc} thumb_func_end MOD16_021DA7C4 thumb_func_start MOD16_021DA7DC MOD16_021DA7DC: ; 0x021DA7DC push {r4, lr} add r4, r0, #0 bne _021DA7E6 bl ErrorHandling _021DA7E6: ldr r0, [r4, #8] cmp r0, #2 bne _021DA7F0 mov r0, #1 pop {r4, pc} _021DA7F0: mov r0, #0 pop {r4, pc} thumb_func_end MOD16_021DA7DC thumb_func_start MOD16_021DA7F4 MOD16_021DA7F4: ; 0x021DA7F4 mov r1, #0 str r1, [r0] str r1, [r0, #8] str r1, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD16_021DA7F4 thumb_func_start MOD16_021DA800 MOD16_021DA800: ; 0x021DA800 mov r1, #0 str r1, [r0] str r1, [r0, #8] bx lr thumb_func_end MOD16_021DA800 thumb_func_start MOD16_021DA808 MOD16_021DA808: ; 0x021DA808 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 cmp r5, #0 bne _021DA818 bl ErrorHandling _021DA818: cmp r4, #0 bne _021DA820 bl ErrorHandling _021DA820: add r0, r4, #0 add r1, r6, #0 blx r5 pop {r4, r5, r6, pc} thumb_func_end MOD16_021DA808 thumb_func_start MOD16_021DA828 MOD16_021DA828: ; 0x021DA828 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 add r4, r2, #0 add r7, r3, #0 cmp r5, #0 bne _021DA83A bl ErrorHandling _021DA83A: cmp r4, #0 bne _021DA842 bl ErrorHandling _021DA842: ldr r0, [sp, #0x18] cmp r0, #0 bne _021DA84C bl ErrorHandling _021DA84C: ldr r3, [sp, #0x18] add r0, r6, #0 add r1, r4, #0 add r2, r7, #0 blx r5 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DA828 thumb_func_start MOD16_021DA858 MOD16_021DA858: ; 0x021DA858 push {r4, lr} mov r1, #0xc bl FUN_02016998 add r4, r0, #0 bne _021DA868 bl ErrorHandling _021DA868: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r4, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DA858 thumb_func_start MOD16_021DA888 MOD16_021DA888: ; 0x021DA888 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 cmp r5, #0 bne _021DA898 bl ErrorHandling _021DA898: str r4, [r5] str r6, [r5, #4] pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DA888 thumb_func_start MOD16_021DA8A0 MOD16_021DA8A0: ; 0x021DA8A0 push {r3, r4, r5, lr} add r4, r0, #0 add r5, r1, #0 cmp r4, #0 bne _021DA8AE bl ErrorHandling _021DA8AE: add r0, r4, #0 bl MOD16_021DA908 cmp r0, #0 bne _021DA8CA add r0, r4, #0 add r1, r5, #0 bl MOD16_021DA918 add r1, r0, #0 beq _021DA8CA add r0, r4, #0 bl MOD16_021DA950 _021DA8CA: add r0, r4, #0 bl MOD16_021DA908 cmp r0, #1 bne _021DA8EA ldr r1, [r4, #8] add r0, r1, #0 ldr r1, [r1, #4] add r0, #8 blx r1 cmp r0, #1 bne _021DA8EA add r0, r4, #0 mov r1, #0 bl MOD16_021DA950 _021DA8EA: ldr r0, [r4, #8] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DA8A0 thumb_func_start MOD16_021DA8F0 MOD16_021DA8F0: ; 0x021DA8F0 push {r4, lr} add r4, r0, #0 bne _021DA8FA bl ErrorHandling _021DA8FA: ldr r0, [r4, #8] cmp r0, #0 beq _021DA904 mov r0, #1 pop {r4, pc} _021DA904: mov r0, #0 pop {r4, pc} thumb_func_end MOD16_021DA8F0 thumb_func_start MOD16_021DA908 MOD16_021DA908: ; 0x021DA908 ldr r0, [r0, #8] cmp r0, #0 beq _021DA912 mov r0, #1 bx lr _021DA912: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021DA908 thumb_func_start MOD16_021DA918 MOD16_021DA918: ; 0x021DA918 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #4] add r7, r1, #0 mov r6, #0 cmp r0, #0 ble _021DA94C add r4, r6, #0 _021DA928: ldr r0, [r5] cmp r0, #0 bne _021DA932 bl ErrorHandling _021DA932: ldr r0, [r5] ldr r1, [r0, r4] tst r1, r7 beq _021DA942 mov r1, #0x14 mul r1, r6 add r0, r0, r1 pop {r3, r4, r5, r6, r7, pc} _021DA942: ldr r0, [r5, #4] add r6, r6, #1 add r4, #0x14 cmp r6, r0 blt _021DA928 _021DA94C: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DA918 thumb_func_start MOD16_021DA950 MOD16_021DA950: ; 0x021DA950 str r1, [r0, #8] cmp r1, #0 beq _021DA95A mov r0, #0 str r0, [r1, #8] _021DA95A: bx lr thumb_func_end MOD16_021DA950 thumb_func_start MOD16_021DA95C MOD16_021DA95C: ; 0x021DA95C push {r4, lr} add r4, r0, #0 ldr r0, [r4] ldr r2, [r4, #8] cmp r0, #3 bhi _021DA9BC add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DA974: ; jump table .short _021DA97C - _021DA974 - 2 ; case 0 .short _021DA98A - _021DA974 - 2 ; case 1 .short _021DA99C - _021DA974 - 2 ; case 2 .short _021DA9AE - _021DA974 - 2 ; case 3 _021DA97C: ldr r0, [r2, #4] bl MOD16_021DA7B4 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DA9C0 _021DA98A: ldr r0, [r2, #4] bl MOD16_021DA7C4 cmp r0, #1 bne _021DA9C0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DA9C0 _021DA99C: ldr r0, [r2] ldr r1, [r2, #8] ldr r2, [r2, #4] bl MOD16_021DAC44 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DA9C0 _021DA9AE: ldr r0, [r2, #4] bl MOD16_021DA7DC cmp r0, #1 bne _021DA9C0 mov r0, #1 pop {r4, pc} _021DA9BC: bl ErrorHandling _021DA9C0: mov r0, #0 pop {r4, pc} thumb_func_end MOD16_021DA95C thumb_func_start MOD16_021DA9C4 MOD16_021DA9C4: ; 0x021DA9C4 push {r3, r4, r5, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5] ldr r4, [r5, #8] cmp r0, #0 beq _021DA9DC cmp r0, #1 beq _021DA9FC cmp r0, #2 beq _021DAA3A b _021DAA44 _021DA9DC: ldr r0, [r4] bl MOD16_021DA7B4 ldr r0, [r4, #4] bl MOD16_021DA7B4 ldr r0, [r4, #8] bl MOD16_021DA7B4 ldr r0, [r4, #0xc] bl MOD16_021DA7B4 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAA48 _021DA9FC: ldr r0, [r4] bl MOD16_021DA7C4 str r0, [sp] ldr r0, [r4, #4] bl MOD16_021DA7C4 str r0, [sp, #4] ldr r0, [r4, #8] bl MOD16_021DA7C4 str r0, [sp, #8] ldr r0, [r4, #0xc] bl MOD16_021DA7C4 str r0, [sp, #0xc] mov r1, #0 add r2, sp, #0 _021DAA20: ldr r0, [r2] cmp r0, #0 beq _021DAA2E add r1, r1, #1 add r2, r2, #4 cmp r1, #4 blt _021DAA20 _021DAA2E: cmp r1, #4 blt _021DAA48 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAA48 _021DAA3A: ldr r1, [r4, #0x10] mov r0, #1 str r0, [r1] add sp, #0x10 pop {r3, r4, r5, pc} _021DAA44: bl ErrorHandling _021DAA48: mov r0, #0 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DA9C4 thumb_func_start MOD16_021DAA50 MOD16_021DAA50: ; 0x021DAA50 push {r3, r4, r5, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5] ldr r4, [r5, #8] cmp r0, #3 bls _021DAA60 b _021DAB68 _021DAA60: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DAA6C: ; jump table .short _021DAA74 - _021DAA6C - 2 ; case 0 .short _021DAA94 - _021DAA6C - 2 ; case 1 .short _021DAAD2 - _021DAA6C - 2 ; case 2 .short _021DAB02 - _021DAA6C - 2 ; case 3 _021DAA74: ldr r0, [r4] bl MOD16_021DA7B4 ldr r0, [r4, #4] bl MOD16_021DA7B4 ldr r0, [r4, #8] bl MOD16_021DA7B4 ldr r0, [r4, #0xc] bl MOD16_021DA7B4 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAB6C _021DAA94: ldr r0, [r4] bl MOD16_021DA7C4 str r0, [sp] ldr r0, [r4, #4] bl MOD16_021DA7C4 str r0, [sp, #4] ldr r0, [r4, #8] bl MOD16_021DA7C4 str r0, [sp, #8] ldr r0, [r4, #0xc] bl MOD16_021DA7C4 str r0, [sp, #0xc] mov r1, #0 add r2, sp, #0 _021DAAB8: ldr r0, [r2] cmp r0, #0 beq _021DAAC6 add r1, r1, #1 add r2, r2, #4 cmp r1, #4 blt _021DAAB8 _021DAAC6: cmp r1, #4 blt _021DAB6C ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAB6C _021DAAD2: ldr r0, [r4, #0x20] ldr r1, [r4, #0x10] ldr r2, [r4] bl MOD16_021DAC44 ldr r0, [r4, #0x24] ldr r1, [r4, #0x14] ldr r2, [r4, #4] bl MOD16_021DAC44 ldr r0, [r4, #0x28] ldr r1, [r4, #0x18] ldr r2, [r4, #8] bl MOD16_021DAC44 ldr r0, [r4, #0x2c] ldr r1, [r4, #0x1c] ldr r2, [r4, #0xc] bl MOD16_021DAC44 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAB6C _021DAB02: ldr r0, [r4, #0x20] cmp r0, #0 beq _021DAB12 ldr r0, [r4] bl MOD16_021DA7DC str r0, [sp] b _021DAB16 _021DAB12: mov r0, #1 str r0, [sp] _021DAB16: ldr r0, [r4, #0x24] cmp r0, #0 beq _021DAB24 ldr r0, [r4, #4] bl MOD16_021DA7DC str r0, [sp, #4] _021DAB24: ldr r0, [r4, #0x28] cmp r0, #0 beq _021DAB34 ldr r0, [r4, #8] bl MOD16_021DA7DC str r0, [sp, #8] b _021DAB38 _021DAB34: mov r0, #1 str r0, [sp, #8] _021DAB38: ldr r0, [r4, #0x2c] cmp r0, #0 beq _021DAB48 ldr r0, [r4, #0xc] bl MOD16_021DA7DC str r0, [sp, #0xc] b _021DAB4C _021DAB48: mov r0, #1 str r0, [sp, #0xc] _021DAB4C: mov r2, #0 add r1, sp, #0 _021DAB50: ldr r0, [r1] cmp r0, #0 beq _021DAB5E add r2, r2, #1 add r1, r1, #4 cmp r2, #4 blt _021DAB50 _021DAB5E: cmp r2, #4 blt _021DAB6C add sp, #0x10 mov r0, #1 pop {r3, r4, r5, pc} _021DAB68: bl ErrorHandling _021DAB6C: mov r0, #0 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DAA50 thumb_func_start MOD16_021DAB74 MOD16_021DAB74: ; 0x021DAB74 push {r3, r4, r5, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5] ldr r4, [r5, #8] cmp r0, #3 bhi _021DAC38 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DAB8E: ; jump table .short _021DAB96 - _021DAB8E - 2 ; case 0 .short _021DABAA - _021DAB8E - 2 ; case 1 .short _021DABD8 - _021DAB8E - 2 ; case 2 .short _021DABF4 - _021DAB8E - 2 ; case 3 _021DAB96: ldr r0, [r4] bl MOD16_021DA7B4 ldr r0, [r4, #4] bl MOD16_021DA7B4 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAC3C _021DABAA: ldr r0, [r4] bl MOD16_021DA7C4 str r0, [sp] ldr r0, [r4, #4] bl MOD16_021DA7C4 str r0, [sp, #4] mov r1, #0 add r2, sp, #0 _021DABBE: ldr r0, [r2] cmp r0, #0 beq _021DABCC add r1, r1, #1 add r2, r2, #4 cmp r1, #2 blt _021DABBE _021DABCC: cmp r1, #2 blt _021DAC3C ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAC3C _021DABD8: ldr r0, [r4, #0x10] ldr r1, [r4, #8] ldr r2, [r4] bl MOD16_021DAC44 ldr r0, [r4, #0x14] ldr r1, [r4, #0xc] ldr r2, [r4, #4] bl MOD16_021DAC44 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DAC3C _021DABF4: ldr r0, [r4, #0x10] cmp r0, #0 beq _021DAC04 ldr r0, [r4] bl MOD16_021DA7DC str r0, [sp] b _021DAC08 _021DAC04: mov r0, #1 str r0, [sp] _021DAC08: ldr r0, [r4, #0x14] cmp r0, #0 beq _021DAC18 ldr r0, [r4, #4] bl MOD16_021DA7DC str r0, [sp, #4] b _021DAC1C _021DAC18: mov r0, #1 str r0, [sp, #4] _021DAC1C: mov r2, #0 add r1, sp, #0 _021DAC20: ldr r0, [r1] cmp r0, #0 beq _021DAC2E add r2, r2, #1 add r1, r1, #4 cmp r2, #2 blt _021DAC20 _021DAC2E: cmp r2, #2 blt _021DAC3C add sp, #8 mov r0, #1 pop {r3, r4, r5, pc} _021DAC38: bl ErrorHandling _021DAC3C: mov r0, #0 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DAB74 thumb_func_start MOD16_021DAC44 MOD16_021DAC44: ; 0x021DAC44 push {r3, r4, r5, lr} sub sp, #0x10 add r5, r0, #0 add r4, r1, #0 cmp r5, #0 beq _021DAC76 ldr r0, [r5] add r1, sp, #0 str r0, [sp] ldr r0, [r5, #4] str r0, [sp, #4] add r0, r5, #0 add r0, #8 str r0, [sp, #8] add r0, r5, #0 add r0, #0x14 str r0, [sp, #0xc] add r0, r2, #0 bl MOD16_021DA624 ldr r1, [r5, #0x20] ldr r2, [r5, #0x24] add r0, r4, #0 bl MOD16_021DA888 _021DAC76: add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DAC44 thumb_func_start MOD16_021DAC7C MOD16_021DAC7C: ; 0x021DAC7C push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x10] cmp r0, #0 bne _021DAC8A bl ErrorHandling _021DAC8A: ldr r0, [r4, #0x10] bl FUN_02016A18 mov r0, #0 str r0, [r4, #0x10] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DAC7C thumb_func_start MOD16_021DAC98 MOD16_021DAC98: ; 0x021DAC98 push {r4, r5, r6, lr} add r6, r1, #0 ldr r1, _021DAD1C ; =MOD16_021DAA50 str r3, [r6] str r1, [r6, #4] mov r1, #0x30 add r5, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DACB2 bl ErrorHandling _021DACB2: add r0, r4, #0 mov r1, #0 mov r2, #0x30 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r5, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r5, #0 bl MOD16_021D7A60 str r0, [r4, #8] add r0, r5, #0 bl MOD16_021D7A74 str r0, [r4, #0xc] add r0, r5, #0 bl MOD16_021D7A88 str r0, [r4, #0x10] add r0, r5, #0 bl MOD16_021D7A9C str r0, [r4, #0x14] add r0, r5, #0 bl MOD16_021D7AB0 str r0, [r4, #0x18] add r0, r5, #0 bl MOD16_021D7AC4 str r0, [r4, #0x1c] add r0, r5, #0 mov r1, #1 bl MOD16_021D7B5C str r0, [r4, #0x20] add r0, r5, #0 mov r1, #1 bl MOD16_021D7B7C str r0, [r4, #0x24] mov r0, #0 str r0, [r4, #0x28] str r0, [r4, #0x2c] str r4, [r6, #0x10] pop {r4, r5, r6, pc} nop _021DAD1C: .word MOD16_021DAA50 thumb_func_end MOD16_021DAC98 thumb_func_start MOD16_021DAD20 MOD16_021DAD20: ; 0x021DAD20 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DAD74 ; =MOD16_021DA9C4 str r3, [r5] str r1, [r5, #4] mov r1, #0x14 add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DAD3A bl ErrorHandling _021DAD3A: add r2, r4, #0 mov r1, #0x14 mov r0, #0 _021DAD40: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DAD40 add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r6, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A60 str r0, [r4, #8] add r0, r6, #0 bl MOD16_021D7A74 str r0, [r4, #0xc] add r0, r6, #0 bl MOD16_021D7B28 str r0, [r4, #0x10] str r4, [r5, #0x10] pop {r4, r5, r6, pc} .align 2, 0 _021DAD74: .word MOD16_021DA9C4 thumb_func_end MOD16_021DAD20 thumb_func_start MOD16_021DAD78 MOD16_021DAD78: ; 0x021DAD78 push {r4, r5, r6, lr} add r6, r1, #0 ldr r1, _021DAE08 ; =MOD16_021DAA50 str r3, [r6] str r1, [r6, #4] mov r1, #0x30 add r5, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DAD92 bl ErrorHandling _021DAD92: add r0, r4, #0 mov r1, #0 mov r2, #0x30 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r5, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r5, #0 bl MOD16_021D7A60 str r0, [r4, #8] add r0, r5, #0 bl MOD16_021D7A74 str r0, [r4, #0xc] add r0, r5, #0 bl MOD16_021D7A88 str r0, [r4, #0x10] add r0, r5, #0 bl MOD16_021D7A9C str r0, [r4, #0x14] add r0, r5, #0 bl MOD16_021D7AB0 str r0, [r4, #0x18] add r0, r5, #0 bl MOD16_021D7AC4 str r0, [r4, #0x1c] add r0, r5, #0 mov r1, #2 bl MOD16_021D7B5C str r0, [r4, #0x20] add r0, r5, #0 mov r1, #2 bl MOD16_021D7B7C str r0, [r4, #0x24] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #0x28] add r0, r5, #0 mov r1, #3 bl MOD16_021D7B7C str r0, [r4, #0x2c] str r4, [r6, #0x10] pop {r4, r5, r6, pc} .align 2, 0 _021DAE08: .word MOD16_021DAA50 thumb_func_end MOD16_021DAD78 thumb_func_start MOD16_021DAE0C MOD16_021DAE0C: ; 0x021DAE0C push {r4, r5, r6, lr} add r6, r1, #0 ldr r1, _021DAE90 ; =MOD16_021DAA50 str r3, [r6] str r1, [r6, #4] mov r1, #0x30 add r5, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DAE26 bl ErrorHandling _021DAE26: add r0, r4, #0 mov r1, #0 mov r2, #0x30 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r5, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r5, #0 bl MOD16_021D7A60 str r0, [r4, #8] add r0, r5, #0 bl MOD16_021D7A74 str r0, [r4, #0xc] add r0, r5, #0 bl MOD16_021D7A88 str r0, [r4, #0x10] add r0, r5, #0 bl MOD16_021D7A9C str r0, [r4, #0x14] add r0, r5, #0 bl MOD16_021D7AB0 str r0, [r4, #0x18] add r0, r5, #0 bl MOD16_021D7AC4 str r0, [r4, #0x1c] add r0, r5, #0 mov r1, #0 bl MOD16_021D7B5C str r0, [r4, #0x20] add r0, r5, #0 mov r1, #0 bl MOD16_021D7B7C str r0, [r4, #0x24] mov r0, #0 str r0, [r4, #0x28] str r0, [r4, #0x2c] str r4, [r6, #0x10] pop {r4, r5, r6, pc} nop _021DAE90: .word MOD16_021DAA50 thumb_func_end MOD16_021DAE0C thumb_func_start MOD16_021DAE94 MOD16_021DAE94: ; 0x021DAE94 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, _021DAED0 ; =MOD16_021DA95C str r3, [r5] add r6, r1, #0 str r0, [r5, #4] add r0, r2, #0 mov r1, #0xc bl FUN_02016998 add r4, r0, #0 bne _021DAEB0 bl ErrorHandling _021DAEB0: add r0, r6, #0 mov r1, #0 bl MOD16_021D7B5C str r0, [r4] add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] str r4, [r5, #0x10] pop {r4, r5, r6, pc} nop _021DAED0: .word MOD16_021DA95C thumb_func_end MOD16_021DAE94 thumb_func_start MOD16_021DAED4 MOD16_021DAED4: ; 0x021DAED4 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DAF34 ; =MOD16_021DAB74 str r3, [r5] str r1, [r5, #4] mov r1, #0x18 add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DAEEE bl ErrorHandling _021DAEEE: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021DAEF4: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DAEF4 add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r6, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 bl MOD16_021D7A9C str r0, [r4, #0xc] add r0, r6, #0 mov r1, #6 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r6, #0 mov r1, #4 bl MOD16_021D7B7C str r0, [r4, #0x14] str r4, [r5, #0x10] pop {r4, r5, r6, pc} .align 2, 0 _021DAF34: .word MOD16_021DAB74 thumb_func_end MOD16_021DAED4 thumb_func_start MOD16_021DAF38 MOD16_021DAF38: ; 0x021DAF38 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DAF98 ; =MOD16_021DAB74 str r3, [r5] str r1, [r5, #4] mov r1, #0x18 add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DAF52 bl ErrorHandling _021DAF52: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021DAF58: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DAF58 add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r6, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 bl MOD16_021D7A9C str r0, [r4, #0xc] add r0, r6, #0 mov r1, #7 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r6, #0 mov r1, #5 bl MOD16_021D7B7C str r0, [r4, #0x14] str r4, [r5, #0x10] pop {r4, r5, r6, pc} .align 2, 0 _021DAF98: .word MOD16_021DAB74 thumb_func_end MOD16_021DAF38 thumb_func_start MOD16_021DAF9C MOD16_021DAF9C: ; 0x021DAF9C push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DAFFC ; =MOD16_021DAB74 str r3, [r5] str r1, [r5, #4] mov r1, #0x18 add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DAFB6 bl ErrorHandling _021DAFB6: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021DAFBC: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DAFBC add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r6, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 bl MOD16_021D7A9C str r0, [r4, #0xc] add r0, r6, #0 mov r1, #8 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r6, #0 mov r1, #6 bl MOD16_021D7B7C str r0, [r4, #0x14] str r4, [r5, #0x10] pop {r4, r5, r6, pc} .align 2, 0 _021DAFFC: .word MOD16_021DAB74 thumb_func_end MOD16_021DAF9C thumb_func_start MOD16_021DB000 MOD16_021DB000: ; 0x021DB000 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DB054 ; =MOD16_021DA95C str r3, [r5] str r1, [r5, #4] mov r1, #0xc add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DB01A bl ErrorHandling _021DB01A: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 mov r1, #8 bl MOD16_021D7B5C str r0, [r4] str r4, [r5, #0x10] pop {r4, r5, r6, pc} nop _021DB054: .word MOD16_021DA95C thumb_func_end MOD16_021DB000 thumb_func_start MOD16_021DB058 MOD16_021DB058: ; 0x021DB058 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DB0AC ; =MOD16_021DA95C str r3, [r5] str r1, [r5, #4] mov r1, #0xc add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DB072 bl ErrorHandling _021DB072: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 mov r1, #9 bl MOD16_021D7B5C str r0, [r4] str r4, [r5, #0x10] pop {r4, r5, r6, pc} nop _021DB0AC: .word MOD16_021DA95C thumb_func_end MOD16_021DB058 thumb_func_start MOD16_021DB0B0 MOD16_021DB0B0: ; 0x021DB0B0 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DB110 ; =MOD16_021DAB74 str r3, [r5] str r1, [r5, #4] mov r1, #0x18 add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DB0CA bl ErrorHandling _021DB0CA: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021DB0D0: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DB0D0 add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r6, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 bl MOD16_021D7A9C str r0, [r4, #0xc] add r0, r6, #0 mov r1, #2 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r6, #0 mov r1, #2 bl MOD16_021D7B7C str r0, [r4, #0x14] str r4, [r5, #0x10] pop {r4, r5, r6, pc} .align 2, 0 _021DB110: .word MOD16_021DAB74 thumb_func_end MOD16_021DB0B0 thumb_func_start MOD16_021DB114 MOD16_021DB114: ; 0x021DB114 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DB168 ; =MOD16_021DA95C str r3, [r5] str r1, [r5, #4] mov r1, #0xc add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DB12E bl ErrorHandling _021DB12E: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 mov r1, #2 bl MOD16_021D7B5C str r0, [r4] str r4, [r5, #0x10] pop {r4, r5, r6, pc} nop _021DB168: .word MOD16_021DA95C thumb_func_end MOD16_021DB114 thumb_func_start MOD16_021DB16C MOD16_021DB16C: ; 0x021DB16C push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DB1CC ; =MOD16_021DAB74 str r3, [r5] str r1, [r5, #4] mov r1, #0x18 add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DB186 bl ErrorHandling _021DB186: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021DB18C: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DB18C add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4] add r0, r6, #0 bl MOD16_021D7A4C str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 bl MOD16_021D7A9C str r0, [r4, #0xc] add r0, r6, #0 mov r1, #3 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r6, #0 mov r1, #7 bl MOD16_021D7B7C str r0, [r4, #0x14] str r4, [r5, #0x10] pop {r4, r5, r6, pc} .align 2, 0 _021DB1CC: .word MOD16_021DAB74 thumb_func_end MOD16_021DB16C thumb_func_start MOD16_021DB1D0 MOD16_021DB1D0: ; 0x021DB1D0 push {r4, r5, r6, lr} add r5, r1, #0 ldr r1, _021DB224 ; =MOD16_021DA95C str r3, [r5] str r1, [r5, #4] mov r1, #0xc add r6, r2, #0 bl FUN_02016998 add r4, r0, #0 bne _021DB1EA bl ErrorHandling _021DB1EA: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r6, #0 bl MOD16_021D7A38 str r0, [r4, #4] add r0, r6, #0 bl MOD16_021D7A88 str r0, [r4, #8] add r0, r6, #0 mov r1, #4 bl MOD16_021D7B5C str r0, [r4] str r4, [r5, #0x10] pop {r4, r5, r6, pc} nop _021DB224: .word MOD16_021DA95C thumb_func_end MOD16_021DB1D0 thumb_func_start MOD16_021DB228 MOD16_021DB228: ; 0x021DB228 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0xc] mov r1, #0x18 bl FUN_02016998 add r4, r0, #0 bne _021DB23C bl ErrorHandling _021DB23C: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021DB242: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DB242 ldr r0, [r5, #8] ldr r1, [r5, #0xc] bl FUN_02011744 str r0, [r4] ldr r1, [r5, #8] ldr r0, [r5, #0xc] lsl r1, r1, #4 bl FUN_02016998 str r0, [r4, #0xc] cmp r0, #0 bne _021DB268 bl ErrorHandling _021DB268: ldr r2, [r5, #8] ldr r0, [r4, #0xc] mov r1, #0 lsl r2, r2, #4 bl Call_FillMemWithValue ldr r0, [r5, #8] str r0, [r4, #0x10] ldr r0, [r5] str r0, [r4, #4] ldr r0, [r5, #4] str r0, [r4, #8] ldr r0, [r5, #0xc] str r0, [r4, #0x14] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DB228 thumb_func_start MOD16_021DB288 MOD16_021DB288: ; 0x021DB288 push {r4, lr} add r4, r0, #0 bne _021DB292 bl ErrorHandling _021DB292: add r0, r4, #0 bl MOD16_021DB358 ldr r0, [r4, #0xc] bl FUN_02016A18 ldr r0, [r4] bl FUN_020117BC add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021DB2AA: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DB2AA add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DB288 thumb_func_start MOD16_021DB2BC MOD16_021DB2BC: ; 0x021DB2BC push {r4, lr} add r4, r0, #0 ldr r0, [r4, #4] ldr r1, [r4, #0x20] ldr r2, [r4, #0x24] bl FUN_02011898 add r1, r0, #0 add r0, r4, #0 bl MOD16_021DB2D4 pop {r4, pc} thumb_func_end MOD16_021DB2BC thumb_func_start MOD16_021DB2D4 MOD16_021DB2D4: ; 0x021DB2D4 push {r4, r5, r6, lr} sub sp, #0x30 add r5, r0, #0 ldr r0, [r5] add r6, r1, #0 bl MOD16_021DB460 add r4, r0, #0 bne _021DB2EA bl ErrorHandling _021DB2EA: ldr r2, [r5, #0x20] add r0, r6, #0 mov r1, #1 add r3, r4, #4 bl FUN_0201D568 ldr r0, [r5] ldr r0, [r0] str r0, [sp] ldr r0, [r5, #4] str r0, [sp, #4] ldr r0, [r5] ldr r0, [r0, #4] str r0, [sp, #8] ldr r0, [r5, #8] str r0, [sp, #0xc] ldr r0, [r5, #0xc] str r0, [sp, #0x10] ldr r0, [r4, #8] str r0, [sp, #0x14] ldr r0, [r5, #0x10] str r0, [sp, #0x18] ldr r0, [r5, #0x14] str r0, [sp, #0x1c] ldr r0, [r5, #0x18] str r0, [sp, #0x20] ldr r0, [r5, #0x1c] str r0, [sp, #0x24] ldr r0, [r5, #0x20] str r0, [sp, #0x28] ldr r0, [r5, #0x24] str r0, [sp, #0x2c] add r0, sp, #0 bl FUN_020117E8 str r0, [r4] add r0, r4, #0 add sp, #0x30 pop {r4, r5, r6, pc} thumb_func_end MOD16_021DB2D4 thumb_func_start MOD16_021DB338 MOD16_021DB338: ; 0x021DB338 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_02011870 add r0, r4, #4 bl FUN_0201D5E8 mov r1, #0x10 mov r0, #0 _021DB34C: strb r0, [r4] add r4, r4, #1 sub r1, r1, #1 bne _021DB34C pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DB338 thumb_func_start MOD16_021DB358 MOD16_021DB358: ; 0x021DB358 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0x10] mov r6, #0 cmp r0, #0 ble _021DB384 add r4, r6, #0 _021DB366: ldr r0, [r5, #0xc] add r0, r0, r4 bl MOD16_021DB450 cmp r0, #0 beq _021DB37A ldr r0, [r5, #0xc] add r0, r0, r4 bl MOD16_021DB338 _021DB37A: ldr r0, [r5, #0x10] add r6, r6, #1 add r4, #0x10 cmp r6, r0 blt _021DB366 _021DB384: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DB358 thumb_func_start MOD16_021DB388 MOD16_021DB388: ; 0x021DB388 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5, #0x14] add r4, r1, #0 mov r1, #1 add r6, r2, #0 bl FUN_02018FF4 add r7, r0, #0 bl FUN_0201901C mov r0, #0 str r0, [sp] str r0, [sp, #4] lsl r2, r4, #0x18 lsl r3, r6, #0x18 ldr r0, [r5, #8] add r1, r7, #0 lsr r2, r2, #0x18 lsr r3, r3, #0x18 bl FUN_020190EC add r0, r7, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DB388 thumb_func_start MOD16_021DB3BC MOD16_021DB3BC: ; 0x021DB3BC ldr r3, _021DB3C4 ; =0x020191A5 mov r1, #1 bx r3 nop _021DB3C4: .word 0x020191A5 thumb_func_end MOD16_021DB3BC thumb_func_start MOD16_021DB3C8 MOD16_021DB3C8: ; 0x021DB3C8 push {r4, r5, r6, lr} sub sp, #0x10 add r5, r0, #0 add r4, r3, #0 add r6, r1, #0 ldr r3, [r5, #0x14] mov r0, #0 mov r1, #0x1a bl FUN_0200A86C add r5, r0, #0 bne _021DB3E4 bl ErrorHandling _021DB3E4: add r0, r5, #0 add r1, r4, #0 bl FUN_0200A914 add r4, r0, #0 ldr r0, [sp, #0x24] ldr r3, [sp, #0x20] str r0, [sp] mov r0, #0xff str r0, [sp, #4] ldr r0, _021DB428 ; =0x00030201 mov r1, #2 str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] add r0, r6, #0 add r2, r4, #0 bl FUN_0201BDE0 mov r0, #2 add r1, r4, #0 mov r2, #0 bl FUN_02002E14 add r6, r0, #0 add r0, r4, #0 bl FUN_02021A20 add r0, r5, #0 bl FUN_0200A8B8 add r0, r6, #0 add sp, #0x10 pop {r4, r5, r6, pc} .align 2, 0 _021DB428: .word 0x00030201 thumb_func_end MOD16_021DB3C8 thumb_func_start MOD16_021DB42C MOD16_021DB42C: ; 0x021DB42C push {r3, lr} sub sp, #0x10 ldr r0, [sp, #0x18] str r0, [sp] mov r0, #0xff str r0, [sp, #4] ldr r0, _021DB44C ; =0x00030201 str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] add r0, r1, #0 mov r1, #2 bl FUN_0201BDE0 add sp, #0x10 pop {r3, pc} .align 2, 0 _021DB44C: .word 0x00030201 thumb_func_end MOD16_021DB42C thumb_func_start MOD16_021DB450 MOD16_021DB450: ; 0x021DB450 ldr r0, [r0] cmp r0, #0 beq _021DB45A mov r0, #1 bx lr _021DB45A: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021DB450 thumb_func_start MOD16_021DB460 MOD16_021DB460: ; 0x021DB460 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0x10] mov r6, #0 cmp r0, #0 ble _021DB48C add r4, r6, #0 _021DB46E: ldr r0, [r5, #0xc] add r0, r0, r4 bl MOD16_021DB450 cmp r0, #0 bne _021DB482 ldr r1, [r5, #0xc] lsl r0, r6, #4 add r0, r1, r0 pop {r4, r5, r6, pc} _021DB482: ldr r0, [r5, #0x10] add r6, r6, #1 add r4, #0x10 cmp r6, r0 blt _021DB46E _021DB48C: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021DB460 thumb_func_start MOD16_021DB490 MOD16_021DB490: ; 0x021DB490 push {r3, lr} mov r1, #0x14 bl FUN_02016998 add r3, r0, #0 mov r2, #0x14 mov r1, #0 _021DB49E: strb r1, [r3] add r3, r3, #1 sub r2, r2, #1 bne _021DB49E pop {r3, pc} thumb_func_end MOD16_021DB490 thumb_func_start MOD16_021DB4A8 MOD16_021DB4A8: ; 0x021DB4A8 ldr r3, _021DB4AC ; =0x02016A19 bx r3 .align 2, 0 _021DB4AC: .word 0x02016A19 thumb_func_end MOD16_021DB4A8 thumb_func_start MOD16_021DB4B0 MOD16_021DB4B0: ; 0x021DB4B0 push {r3, r4, r5, r6} add r6, r0, #0 mov r5, #0x14 mov r4, #0 _021DB4B8: strb r4, [r6] add r6, r6, #1 sub r5, r5, #1 bne _021DB4B8 str r1, [r0] str r2, [r0, #4] str r3, [r0, #8] pop {r3, r4, r5, r6} bx lr .align 2, 0 thumb_func_end MOD16_021DB4B0 thumb_func_start MOD16_021DB4CC MOD16_021DB4CC: ; 0x021DB4CC push {r3, r4, r5, lr} add r5, r0, #0 add r4, r2, #0 cmp r1, #4 bhi _021DB526 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DB4E2: ; jump table .short _021DB4EC - _021DB4E2 - 2 ; case 0 .short _021DB4F4 - _021DB4E2 - 2 ; case 1 .short _021DB4FC - _021DB4E2 - 2 ; case 2 .short _021DB50E - _021DB4E2 - 2 ; case 3 .short _021DB520 - _021DB4E2 - 2 ; case 4 _021DB4EC: add r1, r4, #0 bl MOD16_021DB68C pop {r3, r4, r5, pc} _021DB4F4: add r1, r4, #0 bl MOD16_021DB6BC pop {r3, r4, r5, pc} _021DB4FC: cmp r4, #0 blt _021DB506 ldr r0, [r5, #4] cmp r4, r0 blt _021DB50A _021DB506: bl ErrorHandling _021DB50A: str r4, [r5, #0xc] pop {r3, r4, r5, pc} _021DB50E: cmp r4, #0 blt _021DB518 ldr r0, [r5, #8] cmp r4, r0 blt _021DB51C _021DB518: bl ErrorHandling _021DB51C: str r4, [r5, #0x10] pop {r3, r4, r5, pc} _021DB520: add r1, r4, #0 bl MOD16_021DB6EC _021DB526: pop {r3, r4, r5, pc} thumb_func_end MOD16_021DB4CC thumb_func_start MOD16_021DB528 MOD16_021DB528: ; 0x021DB528 ldr r2, [r0, #0x10] ldr r1, [r0, #4] add r3, r2, #0 mul r3, r1 ldr r1, [r0, #0xc] add r2, r3, r1 ldr r1, [r0] mov r0, #0x1c mul r0, r2 add r0, r1, r0 ldr r0, [r0, #0x18] bx lr thumb_func_end MOD16_021DB528 thumb_func_start MOD16_021DB540 MOD16_021DB540: ; 0x021DB540 push {r4, r5} ldr r4, [r0, #0x10] ldr r3, [r0, #4] add r5, r4, #0 mul r5, r3 ldr r3, [r0, #0xc] add r5, r5, r3 mov r3, #0x1c add r4, r5, #0 mul r4, r3 ldr r3, [r0] ldr r3, [r3, r4] str r3, [r1] ldr r0, [r0] add r0, r0, r4 ldr r0, [r0, #4] str r0, [r2] pop {r4, r5} bx lr .align 2, 0 thumb_func_end MOD16_021DB540 thumb_func_start MOD16_021DB568 MOD16_021DB568: ; 0x021DB568 push {r4, r5} ldr r4, [r0, #0x10] ldr r3, [r0, #4] add r5, r4, #0 mul r5, r3 ldr r3, [r0, #0xc] add r5, r5, r3 mov r3, #0x1c add r4, r5, #0 mul r4, r3 ldr r3, [r0] add r3, r3, r4 ldr r3, [r3, #8] str r3, [r1] ldr r0, [r0] add r0, r0, r4 ldr r0, [r0, #0xc] str r0, [r2] pop {r4, r5} bx lr thumb_func_end MOD16_021DB568 thumb_func_start MOD16_021DB590 MOD16_021DB590: ; 0x021DB590 str r1, [r0] str r2, [r0, #4] ldr r1, [sp] str r3, [r0, #8] str r1, [r0, #0xc] ldr r1, [sp, #4] str r1, [r0, #0x10] ldr r1, [sp, #8] str r1, [r0, #0x14] ldr r1, [sp, #0xc] str r1, [r0, #0x18] bx lr thumb_func_end MOD16_021DB590 thumb_func_start MOD16_021DB5A8 MOD16_021DB5A8: ; 0x021DB5A8 push {r3, r4, r5, r6} ldr r4, [sp, #0x10] cmp r0, #0 beq _021DB5B4 cmp r0, #2 bne _021DB5C0 _021DB5B4: ldr r6, [sp, #0x14] lsr r5, r6, #0x1f add r5, r6, r5 asr r5, r5, #1 sub r3, r3, r5 b _021DB5CA _021DB5C0: ldr r6, [sp, #0x14] lsr r5, r6, #0x1f add r5, r6, r5 asr r5, r5, #1 add r3, r3, r5 _021DB5CA: cmp r0, #1 bhi _021DB5DA ldr r5, [sp, #0x18] lsr r0, r5, #0x1f add r0, r5, r0 asr r0, r0, #1 sub r4, r4, r0 b _021DB5E4 _021DB5DA: ldr r5, [sp, #0x18] lsr r0, r5, #0x1f add r0, r5, r0 asr r0, r0, #1 add r4, r4, r0 _021DB5E4: str r3, [r1] str r4, [r2] pop {r3, r4, r5, r6} bx lr thumb_func_end MOD16_021DB5A8 thumb_func_start MOD16_021DB5EC MOD16_021DB5EC: ; 0x021DB5EC push {r4, r5, r6, lr} add r5, r0, #0 mov r0, #0 add r4, r1, #0 mvn r0, r0 cmp r4, r0 beq _021DB602 cmp r4, #1 beq _021DB602 bl ErrorHandling _021DB602: ldr r0, [r5, #0xc] mov r1, #0x1c _021DB606: add r0, r0, r4 bmi _021DB626 ldr r2, [r5, #4] cmp r0, r2 bge _021DB626 ldr r3, [r5, #0x10] ldr r2, [r5, #4] mul r2, r3 add r6, r2, r0 add r2, r6, #0 ldr r3, [r5] mul r2, r1 add r6, r3, r2 ldr r2, [r6, #0x10] cmp r2, #2 beq _021DB606 _021DB626: cmp r0, #0 blt _021DB638 ldr r1, [r5, #4] cmp r0, r1 bge _021DB638 ldr r1, [r6, #0x10] cmp r1, #0 bne _021DB638 str r0, [r5, #0xc] _021DB638: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DB5EC thumb_func_start MOD16_021DB63C MOD16_021DB63C: ; 0x021DB63C push {r4, r5, r6, lr} add r5, r0, #0 mov r0, #0 add r4, r1, #0 mvn r0, r0 cmp r4, r0 beq _021DB652 cmp r4, #1 beq _021DB652 bl ErrorHandling _021DB652: ldr r0, [r5, #0x10] mov r1, #0x1c _021DB656: add r0, r0, r4 bmi _021DB678 ldr r2, [r5, #8] cmp r0, r2 bge _021DB678 ldr r2, [r5, #4] add r3, r0, #0 mul r3, r2 ldr r2, [r5, #0xc] add r6, r3, r2 add r2, r6, #0 ldr r3, [r5] mul r2, r1 add r6, r3, r2 ldr r2, [r6, #0x14] cmp r2, #2 beq _021DB656 _021DB678: cmp r0, #0 blt _021DB68A ldr r1, [r5, #8] cmp r0, r1 bge _021DB68A ldr r1, [r6, #0x10] cmp r1, #0 bne _021DB68A str r0, [r5, #0x10] _021DB68A: pop {r4, r5, r6, pc} thumb_func_end MOD16_021DB63C thumb_func_start MOD16_021DB68C MOD16_021DB68C: ; 0x021DB68C push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 cmp r1, #0 bge _021DB698 neg r5, r1 b _021DB69A _021DB698: add r5, r1, #0 _021DB69A: add r0, r1, #0 add r1, r5, #0 bl _s32_div_f add r7, r0, #0 mov r4, #0 cmp r5, #0 ble _021DB6B8 _021DB6AA: add r0, r6, #0 add r1, r7, #0 bl MOD16_021DB5EC add r4, r4, #1 cmp r4, r5 blt _021DB6AA _021DB6B8: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DB68C thumb_func_start MOD16_021DB6BC MOD16_021DB6BC: ; 0x021DB6BC push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 cmp r1, #0 bge _021DB6C8 neg r5, r1 b _021DB6CA _021DB6C8: add r5, r1, #0 _021DB6CA: add r0, r1, #0 add r1, r5, #0 bl _s32_div_f add r7, r0, #0 mov r4, #0 cmp r5, #0 ble _021DB6E8 _021DB6DA: add r0, r6, #0 add r1, r7, #0 bl MOD16_021DB63C add r4, r4, #1 cmp r4, r5 blt _021DB6DA _021DB6E8: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DB6BC thumb_func_start MOD16_021DB6EC MOD16_021DB6EC: ; 0x021DB6EC push {r4, r5, r6, lr} add r4, r0, #0 ldr r2, [r4, #4] ldr r0, [r4, #8] add r3, r2, #0 mul r3, r0 mov r5, #0 cmp r3, #0 ble _021DB724 ldr r6, [r4] _021DB700: ldr r0, [r6, #0x18] cmp r1, r0 bne _021DB71C add r0, r5, #0 add r1, r2, #0 bl _s32_div_f str r1, [r4, #0xc] ldr r1, [r4, #4] add r0, r5, #0 bl _s32_div_f str r0, [r4, #0x10] pop {r4, r5, r6, pc} _021DB71C: add r5, r5, #1 add r6, #0x1c cmp r5, r3 blt _021DB700 _021DB724: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DB6EC thumb_func_start MOD16_021DB728 MOD16_021DB728: ; 0x021DB728 push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 str r0, [sp, #0x10] ldr r0, [sp, #0x5c] str r2, [sp, #0x18] str r1, [sp, #0x14] str r0, [sp, #0x5c] mov r0, #0 str r3, [sp, #0x1c] add r1, sp, #0x48 str r0, [sp, #0x38] ldrb r0, [r1, #0x1c] str r0, [sp, #0x20] cmp r0, #0 ble _021DB7BC ldr r0, [sp, #0x38] ldrb r6, [r1, #0x10] str r0, [sp, #0x34] str r0, [sp, #0x30] ldrh r0, [r1, #0x24] str r0, [sp, #0x2c] ldrh r0, [r1, #0x20] str r0, [sp, #0x28] ldrb r0, [r1, #0x18] str r0, [sp, #0x24] _021DB75A: ldr r0, [sp, #0x24] mov r7, #0 cmp r0, #0 ble _021DB7A2 ldr r1, [sp, #0x5c] ldr r0, [sp, #0x30] add r4, r7, #0 add r5, r1, r0 ldr r1, [sp, #0x2c] ldr r0, [sp, #0x34] add r0, r1, r0 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x3c] _021DB776: str r6, [sp] ldrb r0, [r5] ldr r1, [sp, #0x14] str r0, [sp, #4] ldr r0, [sp, #0x28] add r0, r0, r4 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [sp, #0x3c] str r0, [sp, #0xc] ldr r0, [sp, #0x10] ldr r2, [sp, #0x18] ldr r3, [sp, #0x1c] bl MOD16_021DB7F4 ldr r0, [sp, #0x24] add r7, r7, #1 add r4, r4, r6 add r5, r5, #1 cmp r7, r0 blt _021DB776 _021DB7A2: ldr r0, [sp, #0x34] ldr r1, [sp, #0x30] add r0, r0, r6 str r0, [sp, #0x34] ldr r0, [sp, #0x20] add r0, r1, r0 str r0, [sp, #0x30] ldr r0, [sp, #0x38] add r1, r0, #1 ldr r0, [sp, #0x20] str r1, [sp, #0x38] cmp r1, r0 blt _021DB75A _021DB7BC: add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DB728 thumb_func_start MOD16_021DB7C0 MOD16_021DB7C0: ; 0x021DB7C0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r7, r2, #0 str r0, [sp, #4] add r5, r1, #0 mov r6, #0 cmp r7, #0 ble _021DB7F0 _021DB7D0: mov r4, #0 cmp r5, #0 ble _021DB7EA _021DB7D6: ldr r0, [sp, #4] add r1, r4, #0 add r2, r6, #0 add r3, r5, #0 str r7, [sp] bl MOD16_021DB84C add r4, r4, #1 cmp r4, r5 blt _021DB7D6 _021DB7EA: add r6, r6, #1 cmp r6, r7 blt _021DB7D0 _021DB7F0: add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DB7C0 thumb_func_start MOD16_021DB7F4 MOD16_021DB7F4: ; 0x021DB7F4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 str r1, [sp, #0x1c] ldr r1, [sp, #0x3c] str r0, [sp, #0x18] add r5, r2, #0 add r6, r3, #0 cmp r1, #0 beq _021DB848 ldr r0, [sp, #0x38] add r4, r1, #0 mul r4, r0 add r0, r4, #0 add r1, r5, #0 bl _s32_div_f add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl _s32_div_f str r5, [sp] add r4, r1, #0 str r6, [sp, #4] add r0, sp, #0x28 ldrb r1, [r0, #0x18] lsl r2, r4, #0x10 lsl r3, r7, #0x10 str r1, [sp, #8] ldrb r0, [r0, #0x1c] ldr r1, [sp, #0x1c] lsr r2, r2, #0x10 str r0, [sp, #0xc] ldr r0, [sp, #0x38] lsr r3, r3, #0x10 lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r0, [sp, #0x18] bl FUN_02019658 _021DB848: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DB7F4 thumb_func_start MOD16_021DB84C MOD16_021DB84C: ; 0x021DB84C push {r4, r5, r6, r7, lr} sub sp, #0xc add r7, r2, #0 add r6, r1, #0 add r1, r7, #0 mul r1, r3 add r4, r0, #0 add r5, r6, r1 ldrb r1, [r4, r5] cmp r1, #0 bne _021DB87A ldr r1, [sp, #0x20] str r3, [sp] str r1, [sp, #4] add r1, sp, #8 add r2, r6, #0 add r3, r7, #0 bl MOD16_021DB8B0 ldr r0, [sp, #8] bl MOD16_021DB9D0 strb r0, [r4, r5] _021DB87A: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DB84C thumb_func_start MOD16_021DB880 MOD16_021DB880: ; 0x021DB880 push {r3, r4} cmp r1, #0 blt _021DB88A cmp r1, r3 blt _021DB892 _021DB88A: mov r0, #0 mvn r0, r0 pop {r3, r4} bx lr _021DB892: cmp r2, #0 blt _021DB89C ldr r4, [sp, #8] cmp r2, r4 blt _021DB8A4 _021DB89C: mov r0, #0 mvn r0, r0 pop {r3, r4} bx lr _021DB8A4: mul r3, r2 add r1, r1, r3 ldrb r0, [r0, r1] pop {r3, r4} bx lr .align 2, 0 thumb_func_end MOD16_021DB880 thumb_func_start MOD16_021DB8B0 MOD16_021DB8B0: ; 0x021DB8B0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r1, #0 ldr r1, [sp, #0x20] add r6, r2, #0 str r1, [sp, #0x20] add r7, r3, #0 mov r1, #0 str r1, [r5] ldr r4, [sp, #0x24] ldr r3, [sp, #0x20] add r1, r6, #0 sub r2, r7, #1 str r0, [sp, #4] str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB8DE ldr r1, [r5] mov r0, #1 orr r0, r1 str r0, [r5] _021DB8DE: ldr r0, [sp, #4] ldr r3, [sp, #0x20] add r1, r6, #0 add r2, r7, #1 str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB8F8 ldr r1, [r5] mov r0, #2 orr r0, r1 str r0, [r5] _021DB8F8: ldr r0, [sp, #4] ldr r3, [sp, #0x20] sub r1, r6, #1 add r2, r7, #0 str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB912 ldr r1, [r5] mov r0, #4 orr r0, r1 str r0, [r5] _021DB912: ldr r0, [sp, #4] ldr r3, [sp, #0x20] add r1, r6, #1 add r2, r7, #0 str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB92C ldr r1, [r5] mov r0, #8 orr r0, r1 str r0, [r5] _021DB92C: ldr r0, [r5] mov r1, #1 tst r1, r0 bne _021DB954 mov r1, #4 tst r0, r1 bne _021DB954 ldr r0, [sp, #4] ldr r3, [sp, #0x20] sub r1, r6, #1 sub r2, r7, #1 str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB954 ldr r1, [r5] mov r0, #0x10 orr r0, r1 str r0, [r5] _021DB954: ldr r0, [r5] mov r1, #1 tst r1, r0 bne _021DB97C mov r1, #8 tst r0, r1 bne _021DB97C ldr r0, [sp, #4] ldr r3, [sp, #0x20] add r1, r6, #1 sub r2, r7, #1 str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB97C ldr r1, [r5] mov r0, #0x20 orr r0, r1 str r0, [r5] _021DB97C: ldr r0, [r5] mov r1, #2 tst r1, r0 bne _021DB9A4 mov r1, #4 tst r0, r1 bne _021DB9A4 ldr r0, [sp, #4] ldr r3, [sp, #0x20] sub r1, r6, #1 add r2, r7, #1 str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB9A4 ldr r1, [r5] mov r0, #0x40 orr r0, r1 str r0, [r5] _021DB9A4: ldr r0, [r5] mov r1, #2 tst r1, r0 bne _021DB9CC mov r1, #8 tst r0, r1 bne _021DB9CC ldr r0, [sp, #4] ldr r3, [sp, #0x20] add r1, r6, #1 add r2, r7, #1 str r4, [sp] bl MOD16_021DB880 cmp r0, #1 bne _021DB9CC ldr r1, [r5] mov r0, #0x80 orr r0, r1 str r0, [r5] _021DB9CC: add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DB8B0 thumb_func_start MOD16_021DB9D0 MOD16_021DB9D0: ; 0x021DB9D0 push {r4, lr} cmp r0, #0x84 bgt _021DBAA6 blt _021DB9DA b _021DBB98 _021DB9DA: cmp r0, #0x58 bgt _021DBA8C blt _021DB9E2 b _021DBB70 _021DB9E2: cmp r0, #0x48 bgt _021DBA7E blt _021DB9EA b _021DBBA0 _021DB9EA: cmp r0, #0x41 bhi _021DBA84 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DB9FA: ; jump table .short _021DBAE8 - _021DB9FA - 2 ; case 0 .short _021DBAEC - _021DB9FA - 2 ; case 1 .short _021DBAF0 - _021DB9FA - 2 ; case 2 .short _021DBAFC - _021DB9FA - 2 ; case 3 .short _021DBAF4 - _021DB9FA - 2 ; case 4 .short _021DBB00 - _021DB9FA - 2 ; case 5 .short _021DBB08 - _021DB9FA - 2 ; case 6 .short _021DBB14 - _021DB9FA - 2 ; case 7 .short _021DBAF8 - _021DB9FA - 2 ; case 8 .short _021DBB04 - _021DB9FA - 2 ; case 9 .short _021DBB0C - _021DB9FA - 2 ; case 10 .short _021DBB18 - _021DB9FA - 2 ; case 11 .short _021DBB10 - _021DB9FA - 2 ; case 12 .short _021DBB1C - _021DB9FA - 2 ; case 13 .short _021DBB20 - _021DB9FA - 2 ; case 14 .short _021DBB24 - _021DB9FA - 2 ; case 15 .short _021DBB28 - _021DB9FA - 2 ; case 16 .short _021DBBA4 - _021DB9FA - 2 ; case 17 .short _021DBB8C - _021DB9FA - 2 ; case 18 .short _021DBBA4 - _021DB9FA - 2 ; case 19 .short _021DBBA4 - _021DB9FA - 2 ; case 20 .short _021DBBA4 - _021DB9FA - 2 ; case 21 .short _021DBBA4 - _021DB9FA - 2 ; case 22 .short _021DBBA4 - _021DB9FA - 2 ; case 23 .short _021DBB9C - _021DB9FA - 2 ; case 24 .short _021DBBA4 - _021DB9FA - 2 ; case 25 .short _021DBB80 - _021DB9FA - 2 ; case 26 .short _021DBBA4 - _021DB9FA - 2 ; case 27 .short _021DBBA4 - _021DB9FA - 2 ; case 28 .short _021DBBA4 - _021DB9FA - 2 ; case 29 .short _021DBBA4 - _021DB9FA - 2 ; case 30 .short _021DBBA4 - _021DB9FA - 2 ; case 31 .short _021DBB2C - _021DB9FA - 2 ; case 32 .short _021DBBA4 - _021DB9FA - 2 ; case 33 .short _021DBB90 - _021DB9FA - 2 ; case 34 .short _021DBBA4 - _021DB9FA - 2 ; case 35 .short _021DBB94 - _021DB9FA - 2 ; case 36 .short _021DBBA4 - _021DB9FA - 2 ; case 37 .short _021DBB7C - _021DB9FA - 2 ; case 38 .short _021DBBA4 - _021DB9FA - 2 ; case 39 .short _021DBBA4 - _021DB9FA - 2 ; case 40 .short _021DBBA4 - _021DB9FA - 2 ; case 41 .short _021DBBA4 - _021DB9FA - 2 ; case 42 .short _021DBBA4 - _021DB9FA - 2 ; case 43 .short _021DBBA4 - _021DB9FA - 2 ; case 44 .short _021DBBA4 - _021DB9FA - 2 ; case 45 .short _021DBBA4 - _021DB9FA - 2 ; case 46 .short _021DBBA4 - _021DB9FA - 2 ; case 47 .short _021DBB38 - _021DB9FA - 2 ; case 48 .short _021DBBA4 - _021DB9FA - 2 ; case 49 .short _021DBB68 - _021DB9FA - 2 ; case 50 .short _021DBBA4 - _021DB9FA - 2 ; case 51 .short _021DBBA4 - _021DB9FA - 2 ; case 52 .short _021DBBA4 - _021DB9FA - 2 ; case 53 .short _021DBBA4 - _021DB9FA - 2 ; case 54 .short _021DBBA4 - _021DB9FA - 2 ; case 55 .short _021DBBA4 - _021DB9FA - 2 ; case 56 .short _021DBBA4 - _021DB9FA - 2 ; case 57 .short _021DBBA4 - _021DB9FA - 2 ; case 58 .short _021DBBA4 - _021DB9FA - 2 ; case 59 .short _021DBBA4 - _021DB9FA - 2 ; case 60 .short _021DBBA4 - _021DB9FA - 2 ; case 61 .short _021DBBA4 - _021DB9FA - 2 ; case 62 .short _021DBBA4 - _021DB9FA - 2 ; case 63 .short _021DBB30 - _021DB9FA - 2 ; case 64 .short _021DBB84 - _021DB9FA - 2 ; case 65 _021DBA7E: cmp r0, #0x49 bgt _021DBA86 beq _021DBB78 _021DBA84: b _021DBBA4 _021DBA86: cmp r0, #0x50 beq _021DBB3C b _021DBBA4 _021DBA8C: cmp r0, #0x70 bgt _021DBA98 bge _021DBB50 cmp r0, #0x60 beq _021DBB44 b _021DBBA4 _021DBA98: cmp r0, #0x80 bgt _021DBAA0 beq _021DBB34 b _021DBBA4 _021DBAA0: cmp r0, #0x81 beq _021DBB88 b _021DBBA4 _021DBAA6: cmp r0, #0xb0 bgt _021DBAC6 bge _021DBB54 cmp r0, #0x90 bgt _021DBAB8 bge _021DBB40 cmp r0, #0x85 beq _021DBB74 b _021DBBA4 _021DBAB8: cmp r0, #0xa0 bgt _021DBAC0 beq _021DBB48 b _021DBBA4 _021DBAC0: cmp r0, #0xa4 beq _021DBB6C b _021DBBA4 _021DBAC6: cmp r0, #0xd0 bgt _021DBADA bge _021DBB58 cmp r0, #0xc0 bgt _021DBAD4 beq _021DBB4C b _021DBBA4 _021DBAD4: cmp r0, #0xc1 beq _021DBB64 b _021DBBA4 _021DBADA: cmp r0, #0xe0 bgt _021DBAE2 beq _021DBB5C b _021DBBA4 _021DBAE2: cmp r0, #0xf0 beq _021DBB60 b _021DBBA4 _021DBAE8: mov r4, #0 b _021DBBA8 _021DBAEC: mov r4, #2 b _021DBBA8 _021DBAF0: mov r4, #3 b _021DBBA8 _021DBAF4: mov r4, #4 b _021DBBA8 _021DBAF8: mov r4, #5 b _021DBBA8 _021DBAFC: mov r4, #6 b _021DBBA8 _021DBB00: mov r4, #7 b _021DBBA8 _021DBB04: mov r4, #8 b _021DBBA8 _021DBB08: mov r4, #9 b _021DBBA8 _021DBB0C: mov r4, #0xa b _021DBBA8 _021DBB10: mov r4, #0xb b _021DBBA8 _021DBB14: mov r4, #0xc b _021DBBA8 _021DBB18: mov r4, #0xd b _021DBBA8 _021DBB1C: mov r4, #0xe b _021DBBA8 _021DBB20: mov r4, #0xf b _021DBBA8 _021DBB24: mov r4, #0x10 b _021DBBA8 _021DBB28: mov r4, #0x11 b _021DBBA8 _021DBB2C: mov r4, #0x12 b _021DBBA8 _021DBB30: mov r4, #0x13 b _021DBBA8 _021DBB34: mov r4, #0x14 b _021DBBA8 _021DBB38: mov r4, #0x15 b _021DBBA8 _021DBB3C: mov r4, #0x16 b _021DBBA8 _021DBB40: mov r4, #0x17 b _021DBBA8 _021DBB44: mov r4, #0x18 b _021DBBA8 _021DBB48: mov r4, #0x19 b _021DBBA8 _021DBB4C: mov r4, #0x1a b _021DBBA8 _021DBB50: mov r4, #0x1b b _021DBBA8 _021DBB54: mov r4, #0x1c b _021DBBA8 _021DBB58: mov r4, #0x1d b _021DBBA8 _021DBB5C: mov r4, #0x1e b _021DBBA8 _021DBB60: mov r4, #0x1f b _021DBBA8 _021DBB64: mov r4, #0x20 b _021DBBA8 _021DBB68: mov r4, #0x21 b _021DBBA8 _021DBB6C: mov r4, #0x22 b _021DBBA8 _021DBB70: mov r4, #0x23 b _021DBBA8 _021DBB74: mov r4, #0x24 b _021DBBA8 _021DBB78: mov r4, #0x25 b _021DBBA8 _021DBB7C: mov r4, #0x26 b _021DBBA8 _021DBB80: mov r4, #0x27 b _021DBBA8 _021DBB84: mov r4, #0x28 b _021DBBA8 _021DBB88: mov r4, #0x29 b _021DBBA8 _021DBB8C: mov r4, #0x2a b _021DBBA8 _021DBB90: mov r4, #0x2b b _021DBBA8 _021DBB94: mov r4, #0x2c b _021DBBA8 _021DBB98: mov r4, #0x2d b _021DBBA8 _021DBB9C: mov r4, #0x2e b _021DBBA8 _021DBBA0: mov r4, #0x2f b _021DBBA8 _021DBBA4: bl ErrorHandling _021DBBA8: add r0, r4, #0 pop {r4, pc} thumb_func_end MOD16_021DB9D0 thumb_func_start MOD16_021DBBAC MOD16_021DBBAC: ; 0x021DBBAC ldr r3, _021DBBB0 ; =0x02021A21 bx r3 .align 2, 0 _021DBBB0: .word 0x02021A21 thumb_func_end MOD16_021DBBAC thumb_func_start MOD16_021DBBB4 MOD16_021DBBB4: ; 0x021DBBB4 add r1, r0, #1 ldr r0, _021DBBC0 ; =0x021FF568 ldr r3, _021DBBC4 ; =0x02087A39 ldrb r0, [r0, r1] bx r3 nop _021DBBC0: .word 0x021FF568 _021DBBC4: .word 0x02087A39 thumb_func_end MOD16_021DBBB4 thumb_func_start MOD16_021DBBC8 MOD16_021DBBC8: ; 0x021DBBC8 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r2, #0 add r2, sp, #4 str r2, [sp] add r2, sp, #0xc add r3, sp, #8 add r5, r0, #0 bl MOD16_021DBCE0 ldr r2, [sp, #4] cmp r2, #6 bne _021DBBEE add r0, r5, #0 add r1, r4, #0 bl FUN_0200AA50 add sp, #0x10 pop {r3, r4, r5, pc} _021DBBEE: ldr r1, [sp, #0xc] mov r0, #6 mul r0, r1 add r1, r2, r0 ldr r0, _021DBC04 ; =0x0000026E add r2, r4, #0 str r1, [sp, #4] bl MOD16_021DBCA0 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _021DBC04: .word 0x0000026E thumb_func_end MOD16_021DBBC8 thumb_func_start MOD16_021DBC08 MOD16_021DBC08: ; 0x021DBC08 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r2, #0 add r2, sp, #4 str r2, [sp] add r2, sp, #0xc add r3, sp, #8 add r5, r0, #0 bl MOD16_021DBCE0 ldr r2, [sp, #4] cmp r2, #6 bne _021DBC28 str r5, [sp, #4] ldr r0, _021DBC40 ; =0x0000026D b _021DBC34 _021DBC28: ldr r1, [sp, #0xc] mov r0, #6 mul r0, r1 add r0, r2, r0 str r0, [sp, #4] ldr r0, _021DBC44 ; =0x0000026F _021DBC34: ldr r1, [sp, #4] add r2, r4, #0 bl MOD16_021DBCA0 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _021DBC40: .word 0x0000026D _021DBC44: .word 0x0000026F thumb_func_end MOD16_021DBC08 thumb_func_start MOD16_021DBC48 MOD16_021DBC48: ; 0x021DBC48 push {r4, r5, r6, lr} sub sp, #0x10 add r4, r2, #0 add r2, sp, #4 add r6, r3, #0 str r2, [sp] add r2, sp, #0xc add r3, sp, #8 add r5, r0, #0 bl MOD16_021DBCE0 ldr r0, [sp, #4] cmp r0, #6 bne _021DBC74 cmp r4, #1 blt _021DBC6C bl ErrorHandling _021DBC6C: add r0, r5, r4 str r0, [sp, #4] ldr r0, _021DBC98 ; =0x00000267 b _021DBC8C _021DBC74: cmp r4, #1 blt _021DBC7C bl ErrorHandling _021DBC7C: ldr r0, [sp, #4] ldr r1, [sp, #0xc] add r2, r0, r4 mov r0, #6 mul r0, r1 add r0, r2, r0 str r0, [sp, #4] ldr r0, _021DBC9C ; =0x00000269 _021DBC8C: ldr r1, [sp, #4] add r2, r6, #0 bl MOD16_021DBCA0 add sp, #0x10 pop {r4, r5, r6, pc} .align 2, 0 _021DBC98: .word 0x00000267 _021DBC9C: .word 0x00000269 thumb_func_end MOD16_021DBC48 thumb_func_start MOD16_021DBCA0 MOD16_021DBCA0: ; 0x021DBCA0 push {r4, r5, r6, lr} add r3, r0, #0 add r5, r2, #0 add r6, r1, #0 add r2, r3, #0 mov r0, #1 mov r1, #0x1a add r3, r5, #0 bl FUN_0200A86C add r4, r0, #0 beq _021DBCDA mov r0, #1 lsl r0, r0, #8 add r1, r5, #0 bl FUN_020219F4 add r5, r0, #0 beq _021DBCD0 add r0, r4, #0 add r1, r6, #0 add r2, r5, #0 bl FUN_0200A8E0 _021DBCD0: add r0, r4, #0 bl FUN_0200A8B8 add r0, r5, #0 pop {r4, r5, r6, pc} _021DBCDA: mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DBCA0 thumb_func_start MOD16_021DBCE0 MOD16_021DBCE0: ; 0x021DBCE0 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 add r0, r1, #0 add r4, r2, #0 add r5, r3, #0 ldr r6, [sp, #0x18] bl FUN_02087A1C str r0, [r5] cmp r0, #6 blt _021DBCFA bl ErrorHandling _021DBCFA: add r0, r7, #0 bl FUN_02087A50 str r0, [r4] ldr r5, [r5] cmp r5, #6 blt _021DBD0C bl ErrorHandling _021DBD0C: cmp r5, #1 bne _021DBD12 mov r5, #6 _021DBD12: str r5, [r6] ldr r0, [r4] cmp r0, #0xe bne _021DBD22 cmp r5, #6 beq _021DBD22 mov r0, #0 b _021DBD24 _021DBD22: mov r0, #1 _021DBD24: cmp r0, #0 bne _021DBD2C bl ErrorHandling _021DBD2C: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DBCE0 thumb_func_start MOD16_021DBD30 MOD16_021DBD30: ; 0x021DBD30 push {r4, r5, lr} sub sp, #0xc add r4, r0, #0 cmp r2, #9 bhi _021DBD82 add r0, r2, r2 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DBD46: ; jump table .short _021DBD5A - _021DBD46 - 2 ; case 0 .short _021DBD5E - _021DBD46 - 2 ; case 1 .short _021DBD62 - _021DBD46 - 2 ; case 2 .short _021DBD66 - _021DBD46 - 2 ; case 3 .short _021DBD6A - _021DBD46 - 2 ; case 4 .short _021DBD70 - _021DBD46 - 2 ; case 5 .short _021DBD74 - _021DBD46 - 2 ; case 6 .short _021DBD78 - _021DBD46 - 2 ; case 7 .short _021DBD7C - _021DBD46 - 2 ; case 8 .short _021DBD80 - _021DBD46 - 2 ; case 9 _021DBD5A: mov r5, #4 b _021DBD82 _021DBD5E: ldr r5, _021DBDA0 ; =0x000001F3 b _021DBD82 _021DBD62: ldr r5, _021DBDA4 ; =0x000003E2 b _021DBD82 _021DBD66: ldr r5, _021DBDA8 ; =0x000005D1 b _021DBD82 _021DBD6A: mov r5, #0x1f lsl r5, r5, #6 b _021DBD82 _021DBD70: ldr r5, _021DBDAC ; =0x000009AF b _021DBD82 _021DBD74: ldr r5, _021DBDB0 ; =0x00000B9E b _021DBD82 _021DBD78: ldr r5, _021DBDB4 ; =0x00000D8D b _021DBD82 _021DBD7C: ldr r5, _021DBDB8 ; =0x00000F7C b _021DBD82 _021DBD80: ldr r5, _021DBDBC ; =0x0000116B _021DBD82: mov r2, #0 str r2, [sp] add r0, sp, #8 str r0, [sp, #4] mov r0, #0x8b add r1, r5, r1 bl FUN_02006D18 str r0, [r4] ldr r0, [sp, #8] lsr r0, r0, #2 str r0, [r4, #4] add sp, #0xc pop {r4, r5, pc} nop _021DBDA0: .word 0x000001F3 _021DBDA4: .word 0x000003E2 _021DBDA8: .word 0x000005D1 _021DBDAC: .word 0x000009AF _021DBDB0: .word 0x00000B9E _021DBDB4: .word 0x00000D8D _021DBDB8: .word 0x00000F7C _021DBDBC: .word 0x0000116B thumb_func_end MOD16_021DBD30 thumb_func_start MOD16_021DBDC0 MOD16_021DBDC0: ; 0x021DBDC0 push {r4, lr} add r4, r0, #0 bne _021DBDCA bl ErrorHandling _021DBDCA: ldr r0, [r4] cmp r0, #0 bne _021DBDD4 bl ErrorHandling _021DBDD4: ldr r0, [r4] bl FUN_02016A18 mov r0, #0 str r0, [r4] str r0, [r4, #4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DBDC0 thumb_func_start MOD16_021DBDE4 MOD16_021DBDE4: ; 0x021DBDE4 push {r3, r4, lr} sub sp, #0xc add r4, r1, #0 mov r1, #0 add r3, r0, #0 str r1, [sp] add r0, sp, #8 str r0, [sp, #4] mov r0, #0x8b add r2, r1, #0 bl FUN_02006D18 cmp r4, #0 beq _021DBE06 ldr r1, [sp, #8] lsr r1, r1, #2 str r1, [r4] _021DBE06: add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021DBDE4 thumb_func_start MOD16_021DBE0C MOD16_021DBE0C: ; 0x021DBE0C push {r4, r5, lr} sub sp, #0xc mov r2, #0 add r3, r0, #0 add r4, r1, #0 str r2, [sp] add r0, sp, #8 str r0, [sp, #4] mov r0, #0x8b mov r1, #2 bl FUN_02006D18 add r5, r0, #0 cmp r4, #0 beq _021DBE34 ldr r0, [sp, #8] mov r1, #0x24 bl _u32_div_f str r0, [r4] _021DBE34: add r0, r5, #0 add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DBE0C thumb_func_start MOD16_021DBE3C MOD16_021DBE3C: ; 0x021DBE3C push {r3, r4, r5, r6, r7, lr} sub sp, #8 str r1, [sp, #4] add r4, r3, #0 str r0, [sp] ldrb r1, [r4, #1] ldrb r0, [r4, #3] add r0, r1, r0 cmp r0, r2 blt _021DBE54 bl ErrorHandling _021DBE54: ldrb r1, [r4] ldrb r0, [r4, #2] add r1, r1, r0 ldr r0, [sp, #4] cmp r1, r0 blt _021DBE64 bl ErrorHandling _021DBE64: ldrb r7, [r4, #1] ldrb r0, [r4, #3] add r0, r7, r0 cmp r7, r0 bge _021DBEBE ldr r0, [sp, #4] mul r0, r7 mov ip, r0 _021DBE74: ldrb r5, [r4] ldrb r3, [r4, #2] add r1, r5, #0 add r0, r5, r3 cmp r5, r0 bge _021DBEAA ldr r2, [sp] mov r0, ip add r0, r2, r0 add r2, r0, r5 _021DBE88: sub r6, r1, r5 ldrb r5, [r4, #1] ldrb r0, [r2] add r1, r1, #1 sub r5, r7, r5 mul r5, r3 add r3, r4, r6 add r3, r5, r3 ldrb r3, [r3, #4] orr r0, r3 strb r0, [r2] ldrb r3, [r4, #2] ldrb r5, [r4] add r2, r2, #1 add r0, r5, r3 cmp r1, r0 blt _021DBE88 _021DBEAA: ldr r0, [sp, #4] mov r1, ip add r0, r1, r0 mov ip, r0 ldrb r1, [r4, #1] ldrb r0, [r4, #3] add r7, r7, #1 add r0, r1, r0 cmp r7, r0 blt _021DBE74 _021DBEBE: add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DBE3C thumb_func_start MOD16_021DBEC4 MOD16_021DBEC4: ; 0x021DBEC4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 str r0, [sp] ldr r0, [sp, #0x30] str r3, [sp, #4] str r0, [sp, #0x30] mov r0, #0 str r0, [sp, #8] str r0, [sp, #0xc] ldr r0, [sp, #0x30] ldr r5, [sp, #0x34] ldr r0, [r0, #4] ldr r4, [sp, #0x38] sub r0, r0, #1 cmp r0, #0 ble _021DBF4E lsl r0, r1, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] lsl r0, r2, #0x18 lsr r0, r0, #0x18 ldr r7, [sp, #8] str r0, [sp, #0x14] _021DBEF2: ldr r0, [sp, #0x30] ldr r0, [r0] ldr r0, [r0, r7] cmp r0, #0 bne _021DBF00 bl ErrorHandling _021DBF00: mov r1, #0 cmp r4, #0 bls _021DBF18 ldr r0, [sp, #0x30] ldr r0, [r0] ldr r2, [r0, r7] _021DBF0C: ldrb r0, [r5, r1] cmp r2, r0 beq _021DBF18 add r1, r1, #1 cmp r1, r4 blo _021DBF0C _021DBF18: cmp r1, r4 blo _021DBF3A ldr r3, [sp, #0x30] mov r6, #0x24 ldr r3, [r3] ldr r0, [sp] ldr r3, [r3, r7] ldr r1, [sp, #0x10] mul r6, r3 ldr r3, [sp, #4] ldr r2, [sp, #0x14] add r3, r3, r6 bl MOD16_021DBE3C ldr r0, [sp, #8] add r0, r0, #1 str r0, [sp, #8] _021DBF3A: ldr r0, [sp, #0xc] add r7, r7, #4 add r0, r0, #1 str r0, [sp, #0xc] ldr r0, [sp, #0x30] ldr r0, [r0, #4] sub r1, r0, #1 ldr r0, [sp, #0xc] cmp r0, r1 blt _021DBEF2 _021DBF4E: ldr r0, [sp, #8] add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DBEC4 thumb_func_start MOD16_021DBF54 MOD16_021DBF54: ; 0x021DBF54 push {r3, r4, r5, r6, lr} sub sp, #0xc ldr r4, [sp, #0x24] add r5, r0, #0 ldrb r6, [r4] mul r3, r6 add r1, r1, r3 str r1, [sp] ldrb r6, [r4, #1] ldr r3, [sp, #0x20] lsl r1, r1, #0xc mul r3, r6 add r2, r2, r3 str r1, [sp] str r2, [sp, #4] lsl r1, r2, #0xc str r1, [sp, #4] add r1, sp, #0 bl FUN_02020044 ldrb r0, [r4, #2] cmp r0, #0 beq _021DBF8E ldr r1, [sp, #0x2c] add r0, r5, #0 bl FUN_02020130 add sp, #0xc pop {r3, r4, r5, r6, pc} _021DBF8E: ldr r1, [sp, #0x28] add r0, r5, #0 bl FUN_02020130 add sp, #0xc pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DBF54 thumb_func_start MOD16_021DBF9C MOD16_021DBF9C: ; 0x021DBF9C push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 mov ip, r0 ldr r0, [sp, #0x40] ldr r7, [sp, #0x50] str r0, [sp, #0x40] ldr r0, [sp, #0x44] str r1, [sp, #0x10] str r0, [sp, #0x44] ldr r0, [sp, #0x48] str r2, [sp, #0x14] str r0, [sp, #0x48] ldr r0, [sp, #0x4c] str r3, [sp, #0x18] str r0, [sp, #0x4c] ldr r0, [sp, #0x54] ldr r5, [sp, #0x5c] str r0, [sp, #0x54] ldr r0, [sp, #0x58] ldr r4, [sp, #0x60] str r0, [sp, #0x58] mov r0, #0 str r0, [sp, #0x20] str r0, [sp, #0x24] ldr r0, [r7, #4] sub r0, r0, #1 cmp r0, #0 ble _021DC05C add r0, r1, #0 lsl r1, r0, #2 mov r0, ip add r0, r0, r1 ldr r6, [sp, #0x20] str r0, [sp, #0x1c] _021DBFE0: ldr r0, [r7] ldr r0, [r0, r6] cmp r0, #0 bne _021DBFEC bl ErrorHandling _021DBFEC: ldr r1, [sp, #0x10] ldr r0, [sp, #0x14] cmp r1, r0 blt _021DBFF8 bl ErrorHandling _021DBFF8: mov r1, #0 cmp r4, #0 bls _021DC00E ldr r0, [r7] ldr r2, [r0, r6] _021DC002: ldrb r0, [r5, r1] cmp r2, r0 beq _021DC00E add r1, r1, #1 cmp r1, r4 blo _021DC002 _021DC00E: cmp r1, r4 blo _021DC04A ldr r0, [sp, #0x48] ldr r2, [sp, #0x40] str r0, [sp] ldr r0, [r7] ldr r3, [sp, #0x44] ldr r0, [r0, r6] lsl r1, r0, #2 ldr r0, [sp, #0x4c] add r0, r0, r1 str r0, [sp, #4] ldr r0, [sp, #0x54] ldr r1, [sp, #0x18] str r0, [sp, #8] ldr r0, [sp, #0x58] str r0, [sp, #0xc] ldr r0, [sp, #0x1c] ldr r0, [r0] bl MOD16_021DBF54 ldr r0, [sp, #0x1c] add r0, r0, #4 str r0, [sp, #0x1c] ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] ldr r0, [sp, #0x20] add r0, r0, #1 str r0, [sp, #0x20] _021DC04A: ldr r0, [sp, #0x24] add r6, r6, #4 add r0, r0, #1 str r0, [sp, #0x24] ldr r0, [r7, #4] sub r1, r0, #1 ldr r0, [sp, #0x24] cmp r0, r1 blt _021DBFE0 _021DC05C: ldr r1, [sp, #0x64] ldr r0, [sp, #0x20] str r0, [r1] ldr r0, [sp, #0x10] add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DBF9C thumb_func_start MOD16_021DC068 MOD16_021DC068: ; 0x021DC068 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021DC10C add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021DC15C add r7, r0, #0 ldr r0, [sp] add r1, r5, #0 add r2, r4, #0 bl MOD16_021DC198 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021DC230 str r0, [r5, #0x24] ldr r0, _021DC0B4 ; =MOD16_021DC234 str r0, [r5, #8] ldr r0, _021DC0B8 ; =MOD16_021DC280 str r0, [r5, #0xc] ldr r0, _021DC0BC ; =MOD16_021DC2B0 str r0, [r5, #0x10] ldr r0, _021DC0C0 ; =MOD16_021DC2C4 str r0, [r5, #0x14] ldr r0, _021DC0C4 ; =MOD16_021DC3A8 str r0, [r5, #0x18] ldr r0, _021DC0C8 ; =MOD16_021DC424 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} nop _021DC0B4: .word MOD16_021DC234 _021DC0B8: .word MOD16_021DC280 _021DC0BC: .word MOD16_021DC2B0 _021DC0C0: .word MOD16_021DC2C4 _021DC0C4: .word MOD16_021DC3A8 _021DC0C8: .word MOD16_021DC424 thumb_func_end MOD16_021DC068 thumb_func_start MOD16_021DC0CC MOD16_021DC0CC: ; 0x021DC0CC push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021DC148 ldr r0, [r4, #4] bl MOD16_021DC184 ldr r0, [r4, #0x20] bl MOD16_021DC1F8 pop {r4, pc} thumb_func_end MOD16_021DC0CC thumb_func_start MOD16_021DC0E4 MOD16_021DC0E4: ; 0x021DC0E4 ldr r1, [r0, #0x24] cmp r1, #1 beq _021DC102 ldr r1, [r0, #0x28] cmp r1, #1 beq _021DC102 ldr r1, [r0, #0x2c] cmp r1, #1 beq _021DC102 ldr r1, [r0, #0x30] cmp r1, #1 beq _021DC102 ldr r0, [r0, #0x34] cmp r0, #1 bne _021DC106 _021DC102: mov r0, #0 bx lr _021DC106: mov r0, #1 bx lr .align 2, 0 thumb_func_end MOD16_021DC0E4 thumb_func_start MOD16_021DC10C MOD16_021DC10C: ; 0x021DC10C push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x38 bl FUN_02016998 add r4, r0, #0 bne _021DC11E bl ErrorHandling _021DC11E: add r0, r4, #0 mov r1, #0 mov r2, #0x38 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] mov r0, #0 str r0, [r4, #0x10] str r0, [r4, #0x14] mov r0, #1 str r0, [r4, #0x1c] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DC10C thumb_func_start MOD16_021DC148 MOD16_021DC148: ; 0x021DC148 push {r4, lr} add r4, r0, #0 bne _021DC152 bl ErrorHandling _021DC152: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DC148 thumb_func_start MOD16_021DC15C MOD16_021DC15C: ; 0x021DC15C push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021DC16E bl ErrorHandling _021DC16E: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DC15C thumb_func_start MOD16_021DC184 MOD16_021DC184: ; 0x021DC184 push {r4, lr} add r4, r0, #0 bne _021DC18E bl ErrorHandling _021DC18E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DC184 thumb_func_start MOD16_021DC198 MOD16_021DC198: ; 0x021DC198 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r2, #0 bl MOD16_021DC230 add r2, r0, #0 mov r1, #0x14 add r0, r5, #0 mul r1, r2 bl FUN_02016998 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 mov r3, #1 bl MOD16_021DAC98 add r1, r6, #0 add r0, r5, #0 add r1, #0x14 add r2, r4, #0 mov r3, #2 bl MOD16_021DAD78 add r1, r6, #0 add r0, r5, #0 add r1, #0x28 add r2, r4, #0 mov r3, #4 bl MOD16_021DAD20 add r0, r6, #0 add r0, #0x3c add r1, r4, #0 add r2, r5, #0 mov r3, #8 bl MOD16_021DAE94 add r1, r6, #0 add r0, r5, #0 add r1, #0x50 add r2, r4, #0 mov r3, #0x10 bl MOD16_021DAE0C add r0, r6, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021DC198 thumb_func_start MOD16_021DC1F8 MOD16_021DC1F8: ; 0x021DC1F8 push {r4, lr} add r4, r0, #0 bne _021DC202 bl ErrorHandling _021DC202: add r0, r4, #0 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x14 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x28 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x3c bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x50 bl MOD16_021DAC7C add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_end MOD16_021DC1F8 thumb_func_start MOD16_021DC230 MOD16_021DC230: ; 0x021DC230 mov r0, #5 bx lr thumb_func_end MOD16_021DC230 thumb_func_start MOD16_021DC234 MOD16_021DC234: ; 0x021DC234 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #4] add r4, r1, #0 mov r1, #0x24 bl FUN_02016998 str r0, [r5, #8] cmp r0, #0 bne _021DC24C bl ErrorHandling _021DC24C: ldr r0, [r5, #8] mov r1, #0 mov r2, #0x24 bl Call_FillMemWithValue ldr r1, [r5, #8] add r0, r4, #0 bl MOD16_021DC4D4 ldr r0, [r4, #4] bl MOD16_021D9EEC mov r1, #1 str r1, [r4, #0x1c] mov r0, #0 str r0, [r4, #0x20] ldr r0, [r4, #0x18] cmp r0, #1 bne _021DC274 str r1, [r4, #0x10] _021DC274: add r0, r4, #0 bl MOD16_021DC540 mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DC234 thumb_func_start MOD16_021DC280 MOD16_021DC280: ; 0x021DC280 push {r3, lr} add r2, r0, #0 ldr r0, [r2, #0xc] ldr r3, [r2, #8] cmp r0, #1 bne _021DC290 mov r0, #1 pop {r3, pc} _021DC290: ldr r0, [r2] cmp r0, #0 bne _021DC2A0 mov r0, #0 str r0, [r1, #0x18] mov r0, #1 str r0, [r2] b _021DC2AA _021DC2A0: ldr r2, [r2, #4] add r0, r1, #0 add r1, r3, #0 bl MOD16_021DC4F8 _021DC2AA: mov r0, #0 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021DC280 thumb_func_start MOD16_021DC2B0 MOD16_021DC2B0: ; 0x021DC2B0 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DC2B0 thumb_func_start MOD16_021DC2C4 MOD16_021DC2C4: ; 0x021DC2C4 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r6, r2, #0 ldr r7, [r4, #8] cmp r0, #3 bhi _021DC39C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DC2E0: ; jump table .short _021DC2E8 - _021DC2E0 - 2 ; case 0 .short _021DC316 - _021DC2E0 - 2 ; case 1 .short _021DC360 - _021DC2E0 - 2 ; case 2 .short _021DC388 - _021DC2E0 - 2 ; case 3 _021DC2E8: mov r1, #0x52 ldr r0, [r4, #4] lsl r1, r1, #2 bl FUN_02016998 add r7, r0, #0 bne _021DC2FA bl ErrorHandling _021DC2FA: str r7, [r4, #8] add r0, r7, #0 add r1, r6, #0 bl MOD16_021DD1A0 ldr r1, [r5] add r0, r7, #0 add r2, r6, #0 bl MOD16_021DCE44 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DC3A0 _021DC316: mov r0, #0x5d ldr r1, [r6, #4] lsl r0, r0, #6 ldr r0, [r1, r0] cmp r0, #0 bne _021DC32E ldr r1, [r5] ldr r3, [r4, #4] add r0, r7, #0 bl MOD16_021DC690 b _021DC338 _021DC32E: ldr r1, [r5] ldr r3, [r4, #4] add r0, r7, #0 bl MOD16_021DC770 _021DC338: ldr r0, [r6, #0x14] cmp r0, #0 beq _021DC34C add r0, r7, #0 add r1, r5, #0 add r2, r6, #0 mov r3, #1 bl MOD16_021DD7C4 b _021DC358 _021DC34C: add r0, r7, #0 add r1, r5, #0 add r2, r6, #0 mov r3, #1 bl MOD16_021DD724 _021DC358: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DC3A0 _021DC360: ldr r0, [r6, #0x14] cmp r0, #0 beq _021DC372 add r0, r7, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021DD850 b _021DC37C _021DC372: add r0, r7, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021DD760 _021DC37C: cmp r0, #0 beq _021DC3A0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DC3A0 _021DC388: mov r0, #0x10 str r0, [sp] ldr r0, _021DC3A4 ; =0x04000050 mov r1, #1 mov r2, #8 mov r3, #0 bl G2x_SetBlendAlpha_ mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DC39C: bl ErrorHandling _021DC3A0: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DC3A4: .word 0x04000050 thumb_func_end MOD16_021DC2C4 thumb_func_start MOD16_021DC3A8 MOD16_021DC3A8: ; 0x021DC3A8 push {r3, r4, r5, r6, r7, lr} add r5, r2, #0 add r6, r0, #0 add r7, r1, #0 ldr r0, [r5, #0x1c] ldr r4, [r7, #8] cmp r0, #0 bne _021DC3BC mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021DC3BC: ldr r0, [r5, #4] bl MOD16_021D9EC4 mov r1, #0x51 lsl r1, r1, #2 ldr r2, [r4, r1] cmp r2, r0 beq _021DC3EC str r0, [r4, r1] add r0, r4, #0 add r1, r5, #0 bl MOD16_021DCFD4 ldr r1, [r6] ldr r3, [r7, #4] add r0, r4, #0 add r2, r5, #0 bl MOD16_021DD244 ldr r1, [r6] add r0, r4, #0 add r2, r5, #0 bl MOD16_021DCE44 _021DC3EC: add r0, r4, #0 add r1, r5, #0 bl MOD16_021DCF1C add r0, r4, #0 add r1, r5, #0 bl MOD16_021DD060 add r0, r4, #0 add r1, r5, #0 bl MOD16_021DD12C ldr r1, [r6] ldr r3, [r7, #4] add r0, r4, #0 add r2, r5, #0 bl MOD16_021DD1C0 ldr r1, [r6] add r0, r4, #0 add r2, r5, #0 bl MOD16_021DD49C add r0, r5, #0 bl MOD16_021DD4F0 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DC3A8 thumb_func_start MOD16_021DC424 MOD16_021DC424: ; 0x021DC424 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #3 bhi _021DC4C6 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DC440: ; jump table .short _021DC448 - _021DC440 - 2 ; case 0 .short _021DC484 - _021DC440 - 2 ; case 1 .short _021DC4AC - _021DC440 - 2 ; case 2 .short _021DC4C2 - _021DC440 - 2 ; case 3 _021DC448: ldr r0, _021DC4D0 ; =0x04000050 mov r3, #0 strh r3, [r0] ldr r0, [r7, #0x14] cmp r0, #0 beq _021DC474 ldr r1, [r5] ldr r3, [r4, #4] add r0, r6, #0 bl MOD16_021DD6DC ldr r0, [r5] add r1, r7, #0 bl MOD16_021DD4E0 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021DD7C4 b _021DC47C _021DC474: add r0, r6, #0 add r1, r5, #0 bl MOD16_021DD724 _021DC47C: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DC4CA _021DC484: ldr r0, [r7, #0x14] cmp r0, #0 beq _021DC496 add r0, r6, #0 add r1, r5, #0 mov r3, #0 bl MOD16_021DD850 b _021DC4A0 _021DC496: add r0, r6, #0 add r1, r5, #0 mov r3, #0 bl MOD16_021DD760 _021DC4A0: cmp r0, #0 beq _021DC4CA ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DC4CA _021DC4AC: ldr r1, [r5] add r0, r6, #0 bl MOD16_021DC754 add r0, r6, #0 bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DC4CA _021DC4C2: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DC4C6: bl ErrorHandling _021DC4CA: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} nop _021DC4D0: .word 0x04000050 thumb_func_end MOD16_021DC424 thumb_func_start MOD16_021DC4D4 MOD16_021DC4D4: ; 0x021DC4D4 mov r2, #0 str r2, [r0, #8] str r2, [r1] mov r0, #0x3c str r0, [r1, #4] mov r0, #4 str r0, [r1, #8] str r0, [r1, #0xc] bx lr .align 2, 0 thumb_func_end MOD16_021DC4D4 thumb_func_start MOD16_021DC4E8 MOD16_021DC4E8: ; 0x021DC4E8 mov r0, #0xa lsl r0, r0, #6 str r0, [r1, #4] mov r0, #0 str r0, [r1, #8] str r0, [r1, #0xc] bx lr .align 2, 0 thumb_func_end MOD16_021DC4E8 thumb_func_start MOD16_021DC4F8 MOD16_021DC4F8: ; 0x021DC4F8 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021DC598 cmp r0, #1 beq _021DC53E add r0, r5, #0 bl MOD16_021DC540 ldr r0, [r4] cmp r0, #0 bne _021DC52A ldr r0, [r4, #0x14] cmp r0, #1 bne _021DC522 add r0, r4, #0 add r1, r5, #0 bl MOD16_021DDB0C b _021DC52A _021DC522: add r0, r4, #0 add r1, r5, #0 bl MOD16_021DDB58 _021DC52A: ldr r0, [r5, #0x20] cmp r0, #0 beq _021DC538 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DC620 _021DC538: add r0, r5, #0 bl MOD16_021DC550 _021DC53E: pop {r3, r4, r5, pc} thumb_func_end MOD16_021DC4F8 thumb_func_start MOD16_021DC540 MOD16_021DC540: ; 0x021DC540 mov r1, #0 str r1, [r0, #0x24] str r1, [r0, #0x28] str r1, [r0, #0x2c] str r1, [r0, #0x30] str r1, [r0, #0x34] bx lr .align 2, 0 thumb_func_end MOD16_021DC540 thumb_func_start MOD16_021DC550 MOD16_021DC550: ; 0x021DC550 ldr r1, _021DC594 ; =0x021C48B8 mov r2, #2 ldr r1, [r1, #0x48] tst r2, r1 beq _021DC572 mov r1, #0x5d ldr r2, [r0, #4] lsl r1, r1, #6 ldr r1, [r2, r1] cmp r1, #0 bne _021DC56C mov r1, #1 str r1, [r0, #0x28] bx lr _021DC56C: mov r1, #1 str r1, [r0, #0x24] bx lr _021DC572: mov r3, #1 add r2, r1, #0 tst r2, r3 beq _021DC57E str r3, [r0, #0x2c] bx lr _021DC57E: lsl r2, r3, #0xa tst r2, r1 beq _021DC588 str r3, [r0, #0x34] bx lr _021DC588: mov r2, #4 tst r1, r2 beq _021DC590 str r3, [r0, #0x30] _021DC590: bx lr nop _021DC594: .word 0x021C48B8 thumb_func_end MOD16_021DC550 thumb_func_start MOD16_021DC598 MOD16_021DC598: ; 0x021DC598 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 ldr r1, [r5, #0x28] add r4, r2, #0 cmp r1, #0 beq _021DC5B4 bl MOD16_021DD9C8 ldr r0, _021DC618 ; =0x000005DD bl FUN_020054C8 mov r0, #1 pop {r4, r5, r6, pc} _021DC5B4: ldr r1, [r5, #0x24] cmp r1, #0 beq _021DC5CA add r1, r4, #0 bl MOD16_021DDAB4 ldr r0, _021DC618 ; =0x000005DD bl FUN_020054C8 mov r0, #1 pop {r4, r5, r6, pc} _021DC5CA: ldr r0, [r5, #0x2c] cmp r0, #0 beq _021DC5F6 ldr r0, [r5, #4] bl MOD16_021D9EC4 add r1, r0, #0 ldr r0, [r5, #4] bl MOD16_021D9EDC ldr r1, _021DC61C ; =0x000001EE cmp r0, r1 beq _021DC5F6 add r0, r6, #0 add r1, r5, #0 bl MOD16_021DD9E0 ldr r0, _021DC618 ; =0x000005DD bl FUN_020054C8 mov r0, #1 pop {r4, r5, r6, pc} _021DC5F6: ldr r0, [r5, #0x34] cmp r0, #0 beq _021DC604 add r0, r5, #0 bl MOD16_021DD9F8 pop {r4, r5, r6, pc} _021DC604: ldr r0, [r5, #0x30] cmp r0, #0 beq _021DC614 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DDA2C pop {r4, r5, r6, pc} _021DC614: mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 _021DC618: .word 0x000005DD _021DC61C: .word 0x000001EE thumb_func_end MOD16_021DC598 thumb_func_start MOD16_021DC620 MOD16_021DC620: ; 0x021DC620 push {r4, lr} add r4, r1, #0 ldr r1, [r4] cmp r1, #0 beq _021DC670 ldr r2, [r4, #4] ldr r1, [r0, #0xc] sub r1, r1, r2 cmp r1, #0 ble _021DC638 str r1, [r0, #0xc] pop {r4, pc} _021DC638: mov r1, #0 str r1, [r0, #0xc] str r1, [r4] ldr r0, [r4, #0xc] cmp r0, #0 ble _021DC670 ldr r0, [r4, #8] sub r0, r0, #1 cmp r0, #0 ble _021DC650 str r0, [r4, #8] pop {r4, pc} _021DC650: ldr r0, [r4, #4] bl _fflt ldr r1, _021DC674 ; =0x3FCCCCCD bl _fmul bl _ffix str r0, [r4, #4] ldr r0, [r4, #0xc] sub r1, r0, #1 mov r0, #4 sub r0, r0, r1 str r1, [r4, #0xc] lsl r0, r0, #2 str r0, [r4, #8] _021DC670: pop {r4, pc} nop _021DC674: .word 0x3FCCCCCD thumb_func_end MOD16_021DC620 thumb_func_start MOD16_021DC678 MOD16_021DC678: ; 0x021DC678 mov r3, #0xa lsl r3, r3, #6 str r3, [r0, #0xc] str r2, [r1] str r2, [r0, #8] bx lr thumb_func_end MOD16_021DC678 thumb_func_start MOD16_021DC684 MOD16_021DC684: ; 0x021DC684 ldr r3, _021DC68C ; =MOD16_021D9E70 ldr r0, [r0, #4] bx r3 nop _021DC68C: .word MOD16_021D9E70 thumb_func_end MOD16_021DC684 thumb_func_start MOD16_021DC690 MOD16_021DC690: ; 0x021DC690 push {r4, r5, r6, r7, lr} sub sp, #0xc add r6, r1, #0 mov r1, #0 add r5, r0, #0 add r4, r2, #0 add r7, r3, #0 str r1, [sp] add r0, r6, #0 add r2, r1, #0 add r3, r1, #0 str r7, [sp, #4] bl MOD16_021D8CFC add r0, r6, #0 add r1, r7, #0 bl MOD16_021DC860 ldr r0, [r4, #4] bl MOD16_021D9D04 add r3, r0, #0 add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021DC8F8 ldr r0, [r4, #4] bl MOD16_021D9F28 str r0, [sp, #8] ldr r0, [r4, #4] bl MOD16_021D9F34 add r3, r0, #0 ldr r2, [sp, #8] add r0, r6, #0 add r1, r7, #0 bl MOD16_021DC958 add r0, r5, #0 add r1, r7, #0 bl MOD16_021DCAB4 add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021DCB58 add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021DCCC0 add r0, r6, #0 add r1, r7, #0 bl MOD16_021DD63C str r0, [r5, #0x4c] add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 add r3, r7, #0 bl MOD16_021DCD68 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DCF10 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DCF1C add r0, r5, #0 add r1, r4, #0 bl MOD16_021DD060 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DD110 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DD12C add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 add r3, r7, #0 bl MOD16_021DD1C0 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021DD49C add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021DC690 thumb_func_start MOD16_021DC754 MOD16_021DC754: ; 0x021DC754 push {r4, lr} add r4, r0, #0 bl MOD16_021DCED8 add r0, r4, #0 bl MOD16_021DCAFC add r0, r4, #0 bl MOD16_021DCEBC add r0, r4, #0 bl MOD16_021DC93C pop {r4, pc} thumb_func_end MOD16_021DC754 thumb_func_start MOD16_021DC770 MOD16_021DC770: ; 0x021DC770 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 add r7, r1, #0 add r4, r2, #0 mov r0, #0x20 str r0, [sp] add r6, r3, #0 mov r2, #0 add r0, r7, #0 mov r1, #4 add r3, r2, #0 str r6, [sp, #4] bl MOD16_021D8CFC add r0, r7, #0 mov r1, #0 add r2, sp, #0x10 add r3, r6, #0 bl MOD16_021D8D70 str r0, [sp, #0xc] ldr r0, [sp, #0x10] mov r1, #2 ldr r0, [r0, #0xc] lsl r1, r1, #8 str r0, [sp, #8] bl DC_FlushRange ldr r0, [sp, #8] mov r2, #0x1e add r0, #0x20 mov r1, #0x20 lsl r2, r2, #4 str r0, [sp, #8] bl GX_LoadBGPltt ldr r0, [sp, #0xc] bl FUN_02016A18 add r0, r7, #0 add r1, r6, #0 bl MOD16_021DC860 ldr r0, [r4, #4] bl MOD16_021D9D04 add r3, r0, #0 add r0, r5, #0 add r1, r7, #0 add r2, r6, #0 bl MOD16_021DC8F8 add r0, r5, #0 add r1, r6, #0 bl MOD16_021DCAB4 add r0, r5, #0 add r1, r7, #0 add r2, r6, #0 bl MOD16_021DCB58 add r0, r5, #0 add r1, r7, #0 add r2, r6, #0 bl MOD16_021DCCC0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021DD63C str r0, [r5, #0x4c] add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021DCD68 ldr r0, [r4, #4] bl MOD16_021D9F28 add r2, r0, #0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021DCA2C add r0, r5, #0 add r1, r4, #0 bl MOD16_021DCF10 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DCF1C add r0, r5, #0 add r1, r4, #0 bl MOD16_021DD060 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DD110 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DD12C add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021DD1C0 add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 bl MOD16_021DD49C add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DC770 thumb_func_start MOD16_021DC860 MOD16_021DC860: ; 0x021DC860 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] add r5, r0, #0 str r4, [sp, #0xc] ldr r2, [r5] mov r1, #0x1c mov r3, #3 bl MOD16_021D8CB4 str r4, [sp] add r0, r5, #0 mov r1, #0x26 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r6, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] add r0, r5, #0 mov r1, #0x27 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r4, r0, #0 ldr r2, [sp, #0x10] mov r0, #4 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #1 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #3 bl FUN_0201AC68 add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021DC860 thumb_func_start MOD16_021DC8F8 MOD16_021DC8F8: ; 0x021DC8F8 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 add r6, r1, #0 str r0, [sp, #8] add r4, r2, #0 str r4, [sp, #0xc] add r7, r3, #0 ldr r2, [r6] add r0, r6, #0 mov r1, #0x1c mov r3, #2 bl MOD16_021D8CB4 cmp r7, #1 bne _021DC924 mov r1, #0x2a b _021DC926 _021DC924: mov r1, #0x28 _021DC926: add r3, r5, #0 add r0, r6, #0 mov r2, #1 add r3, #0xdc str r4, [sp] bl MOD16_021D8D48 add r5, #0xd8 str r0, [r5] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DC8F8 thumb_func_start MOD16_021DC93C MOD16_021DC93C: ; 0x021DC93C push {r4, lr} add r4, r0, #0 add r0, #0xd8 ldr r0, [r0] bl FUN_02016A18 add r0, r4, #0 mov r1, #0 add r0, #0xd8 str r1, [r0] add r4, #0xdc str r1, [r4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DC93C thumb_func_start MOD16_021DC958 MOD16_021DC958: ; 0x021DC958 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 mov r0, #0x20 add r6, r1, #0 add r7, r2, #0 str r3, [sp, #0x10] bl FUN_020219F4 add r4, r0, #0 ldr r2, _021DCA24 ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r6, #0 bl FUN_0200A86C mov r1, #0 add r2, r4, #0 add r6, r0, #0 bl FUN_0200A8E0 mov r0, #0x98 str r0, [sp] mov r1, #0 ldr r0, _021DCA28 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r4, #0 mov r3, #8 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r6, #0 mov r1, #1 add r2, r4, #0 bl FUN_0200A8E0 mov r0, #0x98 str r0, [sp] mov r1, #0 ldr r0, _021DCA28 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r4, #0 mov r3, #0x80 str r1, [sp, #0xc] bl FUN_0201BDE0 mov r0, #1 str r0, [sp] add r0, r4, #0 add r1, r7, #0 mov r2, #3 mov r3, #2 bl FUN_02021B04 mov r0, #0xaa str r0, [sp] mov r1, #0 ldr r0, _021DCA28 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r4, #0 mov r3, #0x30 str r1, [sp, #0xc] bl FUN_0201BDE0 mov r0, #1 str r0, [sp] ldr r1, [sp, #0x10] add r0, r4, #0 mov r2, #3 mov r3, #2 bl FUN_02021B04 mov r0, #0xaa str r0, [sp] mov r1, #0 ldr r0, _021DCA28 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r4, #0 mov r3, #0xb4 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r6, #0 bl FUN_0200A8B8 ldr r0, [r5] mov r1, #1 bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021DCA24: .word 0x00000266 _021DCA28: .word 0x00020100 thumb_func_end MOD16_021DC958 thumb_func_start MOD16_021DCA2C MOD16_021DCA2C: ; 0x021DCA2C push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r0, #0 mov r0, #0x20 add r6, r1, #0 add r7, r2, #0 bl FUN_020219F4 add r4, r0, #0 ldr r2, _021DCAAC ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r6, #0 bl FUN_0200A86C mov r1, #0x6c add r2, r4, #0 add r6, r0, #0 bl FUN_0200A8E0 mov r0, #0x98 str r0, [sp] mov r1, #0 ldr r0, _021DCAB0 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r4, #0 mov r3, #8 str r1, [sp, #0xc] bl FUN_0201BDE0 mov r0, #1 str r0, [sp] add r0, r4, #0 add r1, r7, #0 mov r2, #3 mov r3, #2 bl FUN_02021B04 mov r0, #0xaa str r0, [sp] mov r1, #0 ldr r0, _021DCAB0 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r4, #0 mov r3, #0x30 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r6, #0 bl FUN_0200A8B8 ldr r0, [r5] mov r1, #1 bl FUN_0201AC68 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DCAAC: .word 0x00000266 _021DCAB0: .word 0x00020100 thumb_func_end MOD16_021DCA2C thumb_func_start MOD16_021DCAB4 MOD16_021DCAB4: ; 0x021DCAB4 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 mov r0, #2 mov r1, #0 add r2, r4, #0 bl FUN_02008DEC add r1, r5, #0 add r1, #0x80 str r0, [r1] mov r0, #2 mov r1, #1 add r2, r4, #0 bl FUN_02008DEC add r1, r5, #0 add r1, #0x84 str r0, [r1] mov r0, #2 add r1, r0, #0 add r2, r4, #0 bl FUN_02008DEC add r1, r5, #0 add r1, #0x88 str r0, [r1] mov r0, #2 mov r1, #3 add r2, r4, #0 bl FUN_02008DEC add r5, #0x8c str r0, [r5] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DCAB4 thumb_func_start MOD16_021DCAFC MOD16_021DCAFC: ; 0x021DCAFC push {r4, lr} add r4, r0, #0 add r0, #0x80 ldr r0, [r0] mov r1, #0x51 bl FUN_020094F0 bl FUN_02009C0C add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #3 bl FUN_020094F0 bl FUN_02009E04 add r0, r4, #0 add r0, #0x80 ldr r0, [r0] mov r1, #0x6f bl FUN_020094F0 bl FUN_02009C0C add r0, r4, #0 add r0, #0x80 ldr r0, [r0] bl FUN_02008E2C add r0, r4, #0 add r0, #0x84 ldr r0, [r0] bl FUN_02008E2C add r0, r4, #0 add r0, #0x88 ldr r0, [r0] bl FUN_02008E2C add r4, #0x8c ldr r0, [r4] bl FUN_02008E2C pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DCAFC thumb_func_start MOD16_021DCB58 MOD16_021DCB58: ; 0x021DCB58 push {r4, r5, r6, r7, lr} sub sp, #0x2c add r5, r0, #0 add r0, r1, #0 add r4, r2, #0 bl MOD16_021D8C70 add r6, r0, #0 mov r2, #0x51 add r0, r5, #0 str r2, [sp] mov r3, #1 str r3, [sp, #4] str r4, [sp, #8] add r0, #0x80 ldr r0, [r0] add r1, r6, #0 bl FUN_020091E0 add r7, r0, #0 bl FUN_02009B04 add r0, r7, #0 bl FUN_02009474 mov r2, #3 str r2, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0xc str r0, [sp, #8] add r0, r5, #0 str r4, [sp, #0xc] add r0, #0x84 ldr r0, [r0] add r1, r6, #0 mov r3, #0 bl FUN_02009298 add r7, r0, #0 bl FUN_02009D68 add r0, r7, #0 bl FUN_02009474 mov r2, #0x4f str r2, [sp] mov r0, #2 str r0, [sp, #4] add r0, r5, #0 str r4, [sp, #8] add r0, #0x88 ldr r0, [r0] add r1, r6, #0 mov r3, #1 bl FUN_02009358 mov r2, #0x50 str r2, [sp] mov r0, #3 str r0, [sp, #4] add r0, r5, #0 str r4, [sp, #8] add r0, #0x8c ldr r0, [r0] add r1, r6, #0 mov r3, #1 bl FUN_02009358 mov r0, #0x50 str r0, [sp] sub r0, #0x51 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r1, #2 str r1, [sp, #0x10] add r1, r5, #0 add r1, #0x80 ldr r1, [r1] mov r2, #3 str r1, [sp, #0x14] add r1, r5, #0 add r1, #0x84 ldr r1, [r1] mov r3, #0x4f str r1, [sp, #0x18] add r1, r5, #0 add r1, #0x88 ldr r1, [r1] str r1, [sp, #0x1c] add r1, r5, #0 add r1, #0x8c ldr r1, [r1] str r1, [sp, #0x20] str r0, [sp, #0x24] str r0, [sp, #0x28] add r0, r5, #0 add r0, #0x90 mov r1, #0x51 bl FUN_02008AA4 mov r2, #0x6f str r2, [sp] mov r3, #1 str r3, [sp, #4] add r0, r5, #0 str r4, [sp, #8] add r0, #0x80 ldr r0, [r0] add r1, r6, #0 bl FUN_020091E0 add r7, r0, #0 bl FUN_02009B04 add r0, r7, #0 bl FUN_02009474 mov r2, #0x6d str r2, [sp] mov r0, #2 str r0, [sp, #4] add r0, r5, #0 str r4, [sp, #8] add r0, #0x88 ldr r0, [r0] add r1, r6, #0 mov r3, #1 bl FUN_02009358 mov r2, #0x6e str r2, [sp] mov r0, #3 str r0, [sp, #4] add r0, r5, #0 str r4, [sp, #8] add r0, #0x8c ldr r0, [r0] add r1, r6, #0 mov r3, #1 bl FUN_02009358 mov r0, #0x6e str r0, [sp] sub r0, #0x6f str r0, [sp, #4] str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r1, #2 str r1, [sp, #0x10] add r1, r5, #0 add r1, #0x80 ldr r1, [r1] mov r2, #3 str r1, [sp, #0x14] add r1, r5, #0 add r1, #0x84 ldr r1, [r1] mov r3, #0x6d str r1, [sp, #0x18] add r1, r5, #0 add r1, #0x88 ldr r1, [r1] str r1, [sp, #0x1c] add r1, r5, #0 add r1, #0x8c ldr r1, [r1] add r5, #0xb4 str r1, [sp, #0x20] str r0, [sp, #0x24] str r0, [sp, #0x28] add r0, r5, #0 mov r1, #0x6f bl FUN_02008AA4 add sp, #0x2c pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021DCB58 thumb_func_start MOD16_021DCCC0 MOD16_021DCCC0: ; 0x021DCCC0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 mov r4, #0 add r6, r0, #0 add r3, r1, #0 add r5, sp, #0 add r0, r4, #0 add r1, r4, #0 stmia r5!, {r0, r1} stmia r5!, {r0, r1} stmia r5!, {r0, r1} stmia r5!, {r0, r1} mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r3, r0] add r5, r6, #0 str r0, [sp] add r0, r6, #0 add r0, #0x90 str r0, [sp, #4] mov r0, #1 str r0, [sp, #0x18] mov r0, #0x20 str r2, [sp, #0x1c] str r0, [sp, #0x14] add r7, r4, #0 _021DCCF4: add r0, sp, #0 bl FUN_0201FF84 add r1, r7, #0 stmia r5!, {r0} bl FUN_02020130 add r4, r4, #1 cmp r4, #9 blt _021DCCF4 mov r5, #0 str r5, [sp, #0x14] add r4, r6, #0 add r7, sp, #0 _021DCD10: add r0, r7, #0 bl FUN_0201FF84 mov r1, #1 str r0, [r4, #0x50] bl FUN_02020130 add r5, r5, #1 add r4, r4, #4 cmp r5, #9 blt _021DCD10 mov r0, #0 str r0, [sp, #0x14] add r0, sp, #0 bl FUN_0201FF84 mov r1, #2 str r0, [r6, #0x74] bl FUN_02020130 mov r0, #0 str r0, [sp, #0x14] mov r0, #0xe lsl r0, r0, #0xe str r0, [sp, #8] mov r0, #5 lsl r0, r0, #0x10 str r0, [sp, #0xc] add r0, r6, #0 add r0, #0xb4 str r0, [sp, #4] add r0, sp, #0 bl FUN_0201FF84 str r0, [r6, #0x7c] mov r1, #0 bl FUN_020200A0 ldr r0, [r6, #0x7c] mov r1, #1 bl FUN_02020398 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DCCC0 thumb_func_start MOD16_021DCD68 MOD16_021DCD68: ; 0x021DCD68 push {r4, r5, r6, r7, lr} sub sp, #0x44 str r1, [sp, #8] str r0, [sp, #4] mov r1, #0x15 ldr r0, [sp, #8] lsl r1, r1, #4 ldr r0, [r0, r1] mov r1, #0 str r0, [sp, #0x1c] ldr r0, [sp, #4] add r7, r2, #0 add r0, #0x98 ldr r0, [r0] str r3, [sp, #0xc] str r0, [sp, #0x24] mov r0, #2 str r0, [sp, #0x34] mov r0, #1 str r0, [sp, #0x3c] add r0, r3, #0 str r1, [sp, #0x28] str r1, [sp, #0x2c] str r1, [sp, #0x30] str r1, [sp, #0x38] str r0, [sp, #0x40] ldr r0, [r7, #4] bl MOD16_021D9EC4 sub r4, r0, #4 ldr r0, [sp, #4] ldr r6, [r0, #0x24] ldr r0, [r7, #4] bl MOD16_021D9ED0 str r0, [sp, #0x10] mov r0, #0 str r0, [sp, #0x14] _021DCDB4: ldr r0, [sp, #4] lsl r1, r6, #2 add r5, r0, r1 ldr r0, [r5, #0x28] cmp r0, #0 beq _021DCDC8 bl MOD16_021DB338 mov r0, #0 str r0, [r5, #0x28] _021DCDC8: cmp r4, #0 blt _021DCE20 ldr r0, [sp, #0x10] cmp r4, r0 bge _021DCE20 ldr r0, [r7, #4] add r1, r4, #0 bl MOD16_021D9EDC add r1, r0, #0 ldr r0, _021DCE40 ; =0x000001EE cmp r1, r0 beq _021DCE0E ldr r0, [r7, #4] bl MOD16_021D9E08 add r3, r0, #0 ldr r0, [sp, #8] ldr r1, [r7, #4] ldr r2, [sp, #0xc] ldr r3, [r3] bl MOD16_021D7E14 ldr r1, [sp, #4] str r0, [sp, #0x20] str r0, [sp, #0x18] ldr r1, [r1, #0x4c] add r0, sp, #0x1c bl MOD16_021DB2D4 str r0, [r5, #0x28] ldr r0, [sp, #0x18] bl MOD16_021DB3BC b _021DCE24 _021DCE0E: add r0, r4, #1 str r0, [sp] ldr r0, [sp, #4] ldr r1, [sp, #8] ldr r2, [sp, #0xc] add r3, r6, #0 bl MOD16_021DD370 b _021DCE24 _021DCE20: mov r0, #0 str r0, [r5, #0x28] _021DCE24: add r0, r6, #1 mov r1, #9 bl _s32_div_f ldr r0, [sp, #0x14] add r6, r1, #0 add r0, r0, #1 add r4, r4, #1 str r0, [sp, #0x14] cmp r0, #9 blt _021DCDB4 add sp, #0x44 pop {r4, r5, r6, r7, pc} nop _021DCE40: .word 0x000001EE thumb_func_end MOD16_021DCD68 thumb_func_start MOD16_021DCE44 MOD16_021DCE44: ; 0x021DCE44 push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r2, #0 add r5, r0, #0 ldr r0, [r4, #4] add r6, r1, #0 bl MOD16_021D9EC4 str r0, [sp, #8] ldr r0, [r4, #4] bl MOD16_021D9D88 add r1, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9E08 add r7, r0, #0 ldr r0, [r4, #4] ldr r1, [sp, #8] bl MOD16_021D9EDC ldr r1, _021DCEB8 ; =0x000001EE cmp r0, r1 bne _021DCE8C add r0, r6, #0 mov r1, #0 bl MOD16_021D870C ldr r0, [r5, #0x7c] cmp r0, #0 beq _021DCEB4 mov r1, #1 bl FUN_020200A0 add sp, #0xc pop {r4, r5, r6, r7, pc} _021DCE8C: mov r0, #0x38 str r0, [sp] mov r0, #0x50 str r0, [sp, #4] ldr r1, [r4, #4] ldr r2, [r7] add r0, r6, #0 mov r3, #2 bl MOD16_021D7FB4 add r0, r6, #0 mov r1, #1 bl MOD16_021D870C ldr r0, [r5, #0x7c] cmp r0, #0 beq _021DCEB4 mov r1, #0 bl FUN_020200A0 _021DCEB4: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _021DCEB8: .word 0x000001EE thumb_func_end MOD16_021DCE44 thumb_func_start MOD16_021DCEBC MOD16_021DCEBC: ; 0x021DCEBC push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021DCEC2: ldr r0, [r5, #0x28] cmp r0, #0 beq _021DCECC bl MOD16_021DB338 _021DCECC: add r4, r4, #1 add r5, r5, #4 cmp r4, #9 blt _021DCEC2 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DCEBC thumb_func_start MOD16_021DCED8 MOD16_021DCED8: ; 0x021DCED8 push {r4, r5, r6, lr} add r6, r0, #0 mov r4, #0 add r5, r6, #0 _021DCEE0: ldr r0, [r5] bl FUN_0201FFC8 add r4, r4, #1 add r5, r5, #4 cmp r4, #9 blt _021DCEE0 mov r5, #0 add r4, r6, #0 _021DCEF2: ldr r0, [r4, #0x50] bl FUN_0201FFC8 add r5, r5, #1 add r4, r4, #4 cmp r5, #9 blt _021DCEF2 ldr r0, [r6, #0x74] bl FUN_0201FFC8 ldr r0, [r6, #0x7c] bl FUN_0201FFC8 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DCED8 thumb_func_start MOD16_021DCF10 MOD16_021DCF10: ; 0x021DCF10 ldr r3, _021DCF18 ; =MOD16_021DD44C mov r2, #0 str r2, [r0, #0x24] bx r3 .align 2, 0 _021DCF18: .word MOD16_021DD44C thumb_func_end MOD16_021DCF10 thumb_func_start MOD16_021DCF1C MOD16_021DCF1C: ; 0x021DCF1C push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r0, #0 ldr r0, [r5, #0x24] str r1, [sp] str r0, [sp, #4] mov r4, #0 _021DCF2A: ldr r0, [sp] ldr r0, [r0, #8] cmp r0, #1 bne _021DCF36 add r0, r4, #2 b _021DCF38 _021DCF36: add r0, r4, #0 _021DCF38: add r1, r4, #1 ldr r3, [sp] lsl r7, r1, #2 mov r2, #0xa lsl r0, r0, #2 ldr r1, _021DCFCC ; =0x021FF570 str r0, [sp, #8] ldr r0, [r1, r0] lsl r2, r2, #6 ldr r6, [r3, #0xc] add r3, r2, #0 ldr r1, [r1, r7] sub r3, r3, r6 bl MOD16_021DD174 str r0, [sp, #0xc] ldr r3, [sp] mov r2, #0xa ldr r1, _021DCFD0 ; =0x021FF59C ldr r0, [sp, #8] lsl r2, r2, #6 ldr r6, [r3, #0xc] ldr r0, [r1, r0] add r3, r2, #0 ldr r1, [r1, r7] sub r3, r3, r6 bl MOD16_021DD174 str r0, [sp, #0x10] ldr r0, [sp, #4] add r1, sp, #0xc lsl r6, r0, #2 ldr r0, [r5, r6] bl FUN_02020044 mov r0, #4 sub r7, r0, r4 bpl _021DCF86 neg r7, r7 _021DCF86: lsl r1, r7, #1 bpl _021DCF8C neg r1, r1 _021DCF8C: ldr r0, [r5, r6] add r1, #0x20 bl FUN_02020310 cmp r4, #4 bne _021DCFA2 ldr r0, [r5, r6] mov r1, #0 bl FUN_020202DC b _021DCFB6 _021DCFA2: add r1, r7, #6 cmp r1, #9 ldr r0, [r5, r6] bge _021DCFB0 bl FUN_020202DC b _021DCFB6 _021DCFB0: mov r1, #9 bl FUN_020202DC _021DCFB6: ldr r0, [sp, #4] mov r1, #9 add r0, r0, #1 bl _s32_div_f add r4, r4, #1 str r1, [sp, #4] cmp r4, #9 blt _021DCF2A add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DCFCC: .word 0x021FF570 _021DCFD0: .word 0x021FF59C thumb_func_end MOD16_021DCF1C thumb_func_start MOD16_021DCFD4 MOD16_021DCFD4: ; 0x021DCFD4 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9EC4 add r6, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9ED0 add r7, r0, #0 ldr r0, [r4, #8] cmp r0, #1 bne _021DD026 ldr r0, [r5, #0x24] add r0, r0, #1 cmp r0, #9 bge _021DCFFA b _021DCFFC _021DCFFA: mov r0, #0 _021DCFFC: str r0, [r5, #0x24] ldr r0, [r5, #0x24] mov r1, #9 add r0, #8 bl _s32_div_f add r0, r6, #4 cmp r0, r7 blt _021DD01A lsl r0, r1, #2 ldr r0, [r5, r0] mov r1, #0 bl FUN_020200A0 pop {r3, r4, r5, r6, r7, pc} _021DD01A: lsl r0, r1, #2 ldr r0, [r5, r0] mov r1, #1 bl FUN_020200A0 pop {r3, r4, r5, r6, r7, pc} _021DD026: cmp r0, #2 bne _021DD054 ldr r0, [r5, #0x24] sub r0, r0, #1 bmi _021DD032 b _021DD034 _021DD032: mov r0, #8 _021DD034: str r0, [r5, #0x24] ldr r1, [r5, #0x24] sub r0, r6, #4 bpl _021DD048 lsl r0, r1, #2 ldr r0, [r5, r0] mov r1, #0 bl FUN_020200A0 pop {r3, r4, r5, r6, r7, pc} _021DD048: lsl r0, r1, #2 ldr r0, [r5, r0] mov r1, #1 bl FUN_020200A0 pop {r3, r4, r5, r6, r7, pc} _021DD054: add r0, r5, #0 add r1, r4, #0 bl MOD16_021DD44C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DCFD4 thumb_func_start MOD16_021DD060 MOD16_021DD060: ; 0x021DD060 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r7, r1, #0 str r0, [sp] ldr r0, [r7, #4] bl MOD16_021D9EC4 add r5, r0, #0 ldr r0, [r7, #4] bl MOD16_021D9ED0 str r0, [sp, #4] sub r0, r5, #4 mov r4, #0 str r0, [sp, #8] _021DD07E: ldr r0, [sp] mov r1, #9 ldr r0, [r0, #0x24] add r0, r0, r4 bl _s32_div_f ldr r0, [sp, #8] add r5, r1, #0 mov r6, #0 add r1, r0, r4 bmi _021DD0B6 ldr r0, [sp, #4] cmp r1, r0 bge _021DD0B6 ldr r0, [r7, #4] bl MOD16_021D9EDC add r1, r0, #0 ldr r0, _021DD10C ; =0x000001EE cmp r1, r0 beq _021DD0B6 ldr r0, [r7, #4] bl MOD16_021D9E08 ldr r0, [r0, #4] cmp r0, #2 bne _021DD0B6 mov r6, #1 _021DD0B6: ldr r0, [sp] lsl r1, r5, #2 add r5, r0, r1 ldr r0, [r5, #0x50] add r1, r6, #0 bl FUN_020200A0 cmp r6, #0 beq _021DD102 ldr r0, [r5] bl FUN_0202011C mov r1, #0x36 ldr r2, [r0] lsl r1, r1, #0xc sub r1, r2, r1 str r1, [sp, #0xc] ldr r0, [r0, #4] add r1, sp, #0xc str r0, [sp, #0x10] ldr r0, [r5, #0x50] bl FUN_02020044 ldr r0, [r5] bl FUN_02020300 add r1, r0, #0 ldr r0, [r5, #0x50] bl FUN_020202A8 ldr r0, [r5] bl FUN_0202032C add r1, r0, #0 ldr r0, [r5, #0x50] sub r1, r1, #1 bl FUN_02020310 _021DD102: add r4, r4, #1 cmp r4, #9 blt _021DD07E add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DD10C: .word 0x000001EE thumb_func_end MOD16_021DD060 thumb_func_start MOD16_021DD110 MOD16_021DD110: ; 0x021DD110 push {r4, lr} add r4, r0, #0 ldr r0, [r1, #4] bl MOD16_021D9ED0 add r1, r0, #0 mov r0, #0x36 lsl r0, r0, #0xc lsl r1, r1, #0xc bl FX_Div str r0, [r4, #0x78] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DD110 thumb_func_start MOD16_021DD12C MOD16_021DD12C: ; 0x021DD12C push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 ldr r0, [r1, #4] bl MOD16_021D9EC4 add r2, r0, #0 ldr r0, [r4, #0x78] lsl r2, r2, #0xc asr r1, r0, #0x1f asr r3, r2, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 mov r0, #0x3a lsl r0, r0, #0xc str r1, [sp, #4] add r0, r1, r0 str r0, [sp, #4] mov r0, #0x3e lsl r0, r0, #0xe str r0, [sp] ldr r0, [r4, #0x74] add r1, sp, #0 bl FUN_02020044 add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021DD12C thumb_func_start MOD16_021DD174 MOD16_021DD174: ; 0x021DD174 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r2, #0 sub r0, r1, r5 lsl r2, r3, #0xc asr r1, r0, #0x1f asr r3, r2, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 lsl r1, r4, #0xc bl FX_Div add r0, r0, r5 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DD174 thumb_func_start MOD16_021DD1A0 MOD16_021DD1A0: ; 0x021DD1A0 push {r3, r4, r5, lr} mov r2, #0x52 add r5, r1, #0 mov r1, #0 lsl r2, r2, #2 add r4, r0, #0 bl Call_FillMemWithValue ldr r0, [r5, #4] bl MOD16_021D9EC4 mov r1, #0x51 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DD1A0 thumb_func_start MOD16_021DD1C0 MOD16_021DD1C0: ; 0x021DD1C0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r7, r0, #0 ldr r5, [r7, #0x24] mov r6, #0 _021DD1CA: lsl r0, r5, #2 add r4, r7, r0 ldr r0, [r4, #0x28] cmp r0, #0 beq _021DD20C ldr r0, [r4] add r1, sp, #4 add r2, sp, #0 bl MOD16_021DD220 ldr r0, [r4, #0x28] ldr r1, [sp, #4] ldr r0, [r0] ldr r2, [sp] bl FUN_020118C4 ldr r0, [r4] bl FUN_0202032C add r1, r0, #0 ldr r0, [r4, #0x28] sub r1, r1, #1 ldr r0, [r0] bl FUN_02011A30 ldr r0, [r4] bl FUN_02020300 add r1, r0, #0 ldr r0, [r4, #0x28] ldr r0, [r0] bl FUN_02011A90 _021DD20C: add r0, r5, #1 mov r1, #9 bl _s32_div_f add r6, r6, #1 add r5, r1, #0 cmp r6, #9 blt _021DD1CA add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DD1C0 thumb_func_start MOD16_021DD220 MOD16_021DD220: ; 0x021DD220 push {r3, r4, r5, lr} add r5, r1, #0 add r4, r2, #0 bl FUN_0202011C ldr r1, [r0] asr r1, r1, #0xc str r1, [r5] ldr r0, [r0, #4] asr r0, r0, #0xc str r0, [r4] ldr r0, [r5] sub r0, #0x40 str r0, [r5] ldr r0, [r4] sub r0, #8 str r0, [r4] pop {r3, r4, r5, pc} thumb_func_end MOD16_021DD220 thumb_func_start MOD16_021DD244 MOD16_021DD244: ; 0x021DD244 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r4, r2, #0 add r5, r0, #0 ldr r0, [r4, #4] str r1, [sp, #8] str r3, [sp, #0xc] bl MOD16_021D9EC4 str r0, [sp, #0x14] ldr r0, [r4, #4] bl MOD16_021D9ED0 ldr r1, [r4, #8] str r0, [sp, #0x10] cmp r1, #1 beq _021DD26C cmp r1, #2 beq _021DD276 b _021DD27C _021DD26C: ldr r6, [r5, #0x24] ldr r0, [sp, #0x14] add r6, #8 add r7, r0, #4 b _021DD27C _021DD276: ldr r0, [sp, #0x14] ldr r6, [r5, #0x24] sub r7, r0, #4 _021DD27C: cmp r1, #0 bne _021DD290 ldr r1, [sp, #8] ldr r3, [sp, #0xc] add r0, r5, #0 add r2, r4, #0 bl MOD16_021DCD68 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021DD290: add r0, r6, #0 mov r1, #9 bl _s32_div_f ldr r0, [sp, #0x10] add r6, r1, #0 cmp r7, r0 bge _021DD2DA cmp r7, #0 blt _021DD2DA ldr r0, [r4, #4] add r1, r7, #0 bl MOD16_021D9EDC ldr r1, _021DD2F0 ; =0x000001EE cmp r0, r1 beq _021DD2C6 str r6, [sp] str r0, [sp, #4] ldr r1, [sp, #8] ldr r3, [sp, #0xc] add r0, r5, #0 add r2, r4, #0 bl MOD16_021DD2F4 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021DD2C6: add r0, r7, #1 str r0, [sp] ldr r1, [sp, #8] ldr r2, [sp, #0xc] add r0, r5, #0 add r3, r6, #0 bl MOD16_021DD370 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021DD2DA: lsl r4, r6, #2 add r5, #0x28 ldr r0, [r5, r4] cmp r0, #0 beq _021DD2EC bl MOD16_021DB338 mov r0, #0 str r0, [r5, r4] _021DD2EC: add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DD2F0: .word 0x000001EE thumb_func_end MOD16_021DD244 thumb_func_start MOD16_021DD2F4 MOD16_021DD2F4: ; 0x021DD2F4 push {r4, r5, r6, r7, lr} sub sp, #0x2c add r4, r2, #0 add r5, r0, #0 add r6, r1, #0 ldr r0, [r4, #4] ldr r1, [sp, #0x44] add r7, r3, #0 bl MOD16_021D9E08 str r0, [sp] cmp r0, #0 bne _021DD312 bl ErrorHandling _021DD312: mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r6, r0] mov r1, #0 str r0, [sp, #4] add r0, r5, #0 add r0, #0x98 ldr r0, [r0] ldr r3, [sp] str r0, [sp, #0xc] mov r0, #2 str r0, [sp, #0x1c] mov r0, #1 str r0, [sp, #0x24] str r1, [sp, #0x10] str r1, [sp, #0x14] str r1, [sp, #0x18] str r1, [sp, #0x20] str r7, [sp, #0x28] ldr r1, [r4, #4] ldr r3, [r3] add r0, r6, #0 add r2, r7, #0 bl MOD16_021D7E14 add r6, r0, #0 ldr r0, [sp, #0x40] add r4, r5, #0 add r4, #0x28 lsl r7, r0, #2 ldr r0, [r4, r7] cmp r0, #0 beq _021DD358 bl MOD16_021DB338 _021DD358: str r6, [sp, #8] ldr r1, [r5, #0x4c] add r0, sp, #4 bl MOD16_021DB2D4 str r0, [r4, r7] add r0, r6, #0 bl MOD16_021DB3BC add sp, #0x2c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DD2F4 thumb_func_start MOD16_021DD370 MOD16_021DD370: ; 0x021DD370 push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 add r4, r2, #0 str r0, [sp, #0x10] add r5, r1, #0 mov r0, #0x20 add r1, r4, #0 add r6, r3, #0 bl FUN_020219F4 add r7, r0, #0 ldr r2, _021DD444 ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r4, #0 bl FUN_0200A86C mov r1, #0x15 lsl r1, r1, #4 str r0, [sp, #0x14] ldr r0, [r5, r1] mov r2, #2 str r0, [sp, #0x18] ldr r0, [sp, #0x10] add r0, #0x98 ldr r0, [r0] str r0, [sp, #0x20] mov r0, #0 str r0, [sp, #0x24] str r0, [sp, #0x28] str r0, [sp, #0x2c] str r0, [sp, #0x34] mov r0, #1 str r2, [sp, #0x30] str r4, [sp, #0x3c] str r0, [sp, #0x38] ldr r0, [r5, r1] mov r1, #0xf bl MOD16_021DB388 add r5, r0, #0 mov r0, #1 str r0, [sp] ldr r1, [sp, #0x58] add r0, r7, #0 mov r2, #3 mov r3, #2 bl FUN_02021B04 mov r1, #0 str r1, [sp] mov r0, #0xff str r0, [sp, #4] ldr r0, _021DD448 ; =0x00030201 add r2, r7, #0 str r0, [sp, #8] str r1, [sp, #0xc] add r0, r5, #0 mov r1, #2 mov r3, #0x16 bl FUN_0201BDE0 ldr r0, [sp, #0x14] mov r1, #0x63 add r2, r7, #0 bl FUN_0200A8E0 mov r1, #0 str r1, [sp] mov r0, #0xff str r0, [sp, #4] ldr r0, _021DD448 ; =0x00030201 add r2, r7, #0 str r0, [sp, #8] str r1, [sp, #0xc] add r0, r5, #0 mov r1, #2 mov r3, #0x31 bl FUN_0201BDE0 ldr r4, [sp, #0x10] lsl r6, r6, #2 add r4, #0x28 ldr r0, [r4, r6] cmp r0, #0 beq _021DD420 bl MOD16_021DB338 _021DD420: ldr r1, [sp, #0x10] str r5, [sp, #0x1c] ldr r1, [r1, #0x4c] add r0, sp, #0x18 bl MOD16_021DB2D4 str r0, [r4, r6] add r0, r5, #0 bl MOD16_021DB3BC add r0, r7, #0 bl FUN_02021A20 ldr r0, [sp, #0x14] bl FUN_0200A8B8 add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DD444: .word 0x00000266 _021DD448: .word 0x00030201 thumb_func_end MOD16_021DD370 thumb_func_start MOD16_021DD44C MOD16_021DD44C: ; 0x021DD44C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9EC4 add r5, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9ED0 sub r4, r5, #4 ldr r5, [r6, #0x24] str r0, [sp] mov r7, #0 _021DD468: cmp r4, #0 blt _021DD47E ldr r0, [sp] cmp r4, r0 bge _021DD47E lsl r0, r5, #2 ldr r0, [r6, r0] mov r1, #1 bl FUN_020200A0 b _021DD488 _021DD47E: lsl r0, r5, #2 ldr r0, [r6, r0] mov r1, #0 bl FUN_020200A0 _021DD488: add r0, r5, #1 mov r1, #9 bl _s32_div_f add r7, r7, #1 add r5, r1, #0 add r4, r4, #1 cmp r7, #9 blt _021DD468 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DD44C thumb_func_start MOD16_021DD49C MOD16_021DD49C: ; 0x021DD49C push {r3, r4, r5, lr} add r4, r1, #0 ldr r1, [r2, #0xc] mov r0, #0xa lsl r0, r0, #6 sub r0, r0, r1 lsl r0, r0, #0xc mov r2, #0x1f asr r1, r0, #0x1f lsl r2, r2, #0xc mov r3, #0 bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 mov r1, #0xa lsl r1, r1, #0x12 bl FX_Div add r5, r0, #0 add r0, r4, #0 bl MOD16_021D8700 mov r1, #0x17 asr r2, r5, #0xc bl FUN_02007558 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DD49C thumb_func_start MOD16_021DD4E0 MOD16_021DD4E0: ; 0x021DD4E0 push {r3, lr} bl MOD16_021D8700 mov r1, #0x17 mov r2, #0x1f bl FUN_02007558 pop {r3, pc} thumb_func_end MOD16_021DD4E0 thumb_func_start MOD16_021DD4F0 MOD16_021DD4F0: ; 0x021DD4F0 push {r4, lr} mov r1, #0xa ldr r0, [r0, #0xc] lsl r1, r1, #6 sub r0, r1, r0 lsl r3, r0, #0xc asr r2, r3, #0x1f lsr r0, r3, #0x10 lsl r4, r2, #0x10 orr r4, r0 mov r0, #2 lsl r3, r3, #0x10 mov r2, #0 lsl r0, r0, #0xa add r0, r3, r0 adc r4, r2 lsl r2, r4, #0x14 lsr r0, r0, #0xc orr r0, r2 lsl r1, r1, #0xc bl FX_Div asr r1, r0, #0xc mov r0, #0x10 sub r0, r0, r1 lsl r0, r0, #8 orr r1, r0 ldr r0, _021DD52C ; =0x04000052 strh r1, [r0] pop {r4, pc} .align 2, 0 _021DD52C: .word 0x04000052 thumb_func_end MOD16_021DD4F0 thumb_func_start MOD16_021DD530 MOD16_021DD530: ; 0x021DD530 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 str r0, [sp, #0x14] ldr r0, _021DD5BC ; =0x00000685 add r5, r2, #0 str r1, [sp, #0x18] add r4, r3, #0 bl FUN_020054C8 ldr r0, [r5, #0x10] cmp r0, #0 bne _021DD576 cmp r4, #0 beq _021DD568 ldr r0, [sp, #0x18] mov r6, #3 ldr r0, [r0] mov r4, #0 ldr r0, [r0] mov r1, #1 add r2, r6, #0 mov r3, #0xc0 str r4, [sp, #0x1c] mov r7, #0xe mov r5, #4 bl FUN_020179E0 b _021DD594 _021DD568: mov r0, #3 mov r6, #0 str r0, [sp, #0x1c] mov r4, #0xe add r7, r6, #0 mov r5, #4 b _021DD594 _021DD576: cmp r4, #0 beq _021DD588 mov r0, #0xc str r0, [sp, #0x1c] mov r4, #0x14 mov r6, #3 mov r7, #0xe mov r5, #4 b _021DD594 _021DD588: mov r0, #3 str r0, [sp, #0x1c] mov r4, #0xe mov r6, #0xc mov r7, #0x14 mov r5, #4 _021DD594: ldr r0, [sp, #0x1c] ldr r3, [sp, #0x14] str r0, [sp] str r6, [sp, #4] str r4, [sp, #8] str r7, [sp, #0xc] ldr r1, [sp, #0x18] str r5, [sp, #0x10] ldr r0, [sp, #0x14] ldr r1, [r1] add r3, #0xdc str r3, [sp, #0x14] ldr r1, [r1] ldr r3, [r3] add r0, #0xe0 mov r2, #2 bl MOD16_021D7CA4 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DD5BC: .word 0x00000685 thumb_func_end MOD16_021DD530 thumb_func_start MOD16_021DD5C0 MOD16_021DD5C0: ; 0x021DD5C0 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0xe0 add r4, r1, #0 bl MOD16_021D7CC8 add r6, r0, #0 bne _021DD60A add r0, r5, #0 add r0, #0xf8 ldr r1, [r0] add r0, r5, #0 add r0, #0xfc ldr r0, [r0] sub r0, r0, #1 mul r0, r1 mov r1, #1 lsl r1, r1, #8 ldr r1, [r5, r1] bl _s32_div_f add r5, #0xf0 ldr r1, [r5] add r0, r0, r1 lsl r3, r0, #3 mov r0, #0x2f sub r3, #0x70 mvn r0, r0 cmp r3, r0 bge _021DD5FE add r3, r0, #0 _021DD5FE: ldr r0, [r4] mov r1, #1 ldr r0, [r0] mov r2, #3 bl FUN_0201AEE4 _021DD60A: add r0, r6, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DD5C0 thumb_func_start MOD16_021DD610 MOD16_021DD610: ; 0x021DD610 push {r3, lr} ldr r1, [r1, #0x10] cmp r1, #0 bne _021DD62A cmp r2, #0 bne _021DD62A ldr r0, [r0] mov r1, #1 ldr r0, [r0] mov r2, #3 mov r3, #0 bl FUN_020179E0 _021DD62A: mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] ldr r0, _021DD638 ; =0xFFFF1FFF and r0, r1 str r0, [r2] pop {r3, pc} .align 2, 0 _021DD638: .word 0xFFFF1FFF thumb_func_end MOD16_021DD610 thumb_func_start MOD16_021DD63C MOD16_021DD63C: ; 0x021DD63C push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x15 lsl r1, r1, #4 ldr r0, [r0, r1] mov r1, #0xf mov r2, #2 bl MOD16_021DB388 add r4, r0, #0 mov r1, #1 add r2, r5, #0 bl FUN_02011898 add r5, r0, #0 add r0, r4, #0 bl MOD16_021DB3BC add r0, r5, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DD63C thumb_func_start MOD16_021DD664 MOD16_021DD664: ; 0x021DD664 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #0x74] mov r1, #1 bl FUN_02020398 mov r6, #1 mov r4, #0 add r7, r6, #0 _021DD676: ldr r0, [r5] add r1, r6, #0 bl FUN_02020398 ldr r0, [r5, #0x50] add r1, r7, #0 bl FUN_02020398 ldr r0, [r5, #0x28] cmp r0, #0 beq _021DD694 ldr r0, [r0] mov r1, #1 bl FUN_02011AF0 _021DD694: add r4, r4, #1 add r5, r5, #4 cmp r4, #9 blt _021DD676 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DD664 thumb_func_start MOD16_021DD6A0 MOD16_021DD6A0: ; 0x021DD6A0 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #0x74] mov r1, #0 bl FUN_02020398 mov r4, #0 add r6, r4, #0 add r7, r4, #0 _021DD6B2: ldr r0, [r5] add r1, r6, #0 bl FUN_02020398 ldr r0, [r5, #0x50] add r1, r7, #0 bl FUN_02020398 ldr r0, [r5, #0x28] cmp r0, #0 beq _021DD6D0 ldr r0, [r0] mov r1, #0 bl FUN_02011AF0 _021DD6D0: add r4, r4, #1 add r5, r5, #4 cmp r4, #9 blt _021DD6B2 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DD6A0 thumb_func_start MOD16_021DD6DC MOD16_021DD6DC: ; 0x021DD6DC push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r0, #0 ldr r0, [r4, #0x24] add r6, r1, #0 add r0, r0, #4 mov r1, #9 add r5, r2, #0 add r7, r3, #0 bl _s32_div_f lsl r0, r1, #2 ldr r0, [r4, r0] bl FUN_0202011C add r4, r0, #0 ldr r0, [r5, #4] bl MOD16_021D9D88 add r3, r0, #0 ldr r0, [r4] add r2, r7, #0 str r0, [sp] ldr r0, [r4, #4] str r0, [sp, #4] ldr r1, [r5, #4] add r0, r6, #0 bl MOD16_021D7E9C add r0, r6, #0 mov r1, #0 bl MOD16_021D891C add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DD6DC thumb_func_start MOD16_021DD724 MOD16_021DD724: ; 0x021DD724 push {r3, r4, r5, lr} add r5, r2, #0 add r4, r3, #0 bl MOD16_021DD530 ldr r0, [r5, #0x10] cmp r0, #1 beq _021DD75E cmp r4, #0 beq _021DD74C mov r1, #0 mov r0, #1 add r2, r1, #0 str r0, [sp] mov r0, #4 sub r2, #0x10 mov r3, #0x39 bl FUN_0200A208 pop {r3, r4, r5, pc} _021DD74C: mov r0, #1 str r0, [sp] mov r0, #4 add r1, r0, #0 sub r1, #0x14 mov r2, #0 mov r3, #0x39 bl FUN_0200A208 _021DD75E: pop {r3, r4, r5, pc} thumb_func_end MOD16_021DD724 thumb_func_start MOD16_021DD760 MOD16_021DD760: ; 0x021DD760 push {r3, r4, r5, r6, r7, lr} add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021DD5C0 add r7, r0, #0 ldr r0, [r4, #0x10] cmp r0, #1 beq _021DD77C mov r0, #1 bl FUN_0200A344 b _021DD77E _021DD77C: mov r0, #1 _021DD77E: cmp r7, #1 bne _021DD7BE cmp r0, #1 bne _021DD7BE ldr r0, [r4, #0x10] cmp r0, #1 beq _021DD7B0 cmp r6, #0 bne _021DD7B0 mov r0, #0xf mvn r0, r0 mov r1, #0x3f mov r2, #1 bl FUN_0200A274 ldr r0, [r5] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r5] mov r1, #1 ldr r0, [r0] bl FUN_02018744 _021DD7B0: add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021DD610 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DD7BE: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DD760 thumb_func_start MOD16_021DD7C4 MOD16_021DD7C4: ; 0x021DD7C4 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 add r5, r1, #0 add r7, r2, #0 add r4, r3, #0 bl MOD16_021DD664 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 add r3, r4, #0 bl MOD16_021DD530 cmp r4, #0 bne _021DD7F4 add r0, r6, #0 add r1, r5, #0 bl MOD16_021DD910 add r0, r6, #0 add r1, r5, #0 bl MOD16_021DD96C _021DD7F4: ldr r0, [r7, #0x10] cmp r0, #1 beq _021DD84A cmp r4, #0 beq _021DD826 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x28 str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #4 add r2, r1, #0 sub r2, #0x14 bl MOD16_021D8988 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021DD826: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x28 str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #4 add r3, r1, #0 sub r3, #0x14 bl MOD16_021D8988 _021DD84A: add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DD7C4 thumb_func_start MOD16_021DD850 MOD16_021DD850: ; 0x021DD850 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r4, r2, #0 add r7, r0, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021DD5C0 str r0, [sp, #8] ldr r0, [r4, #0x10] cmp r0, #1 beq _021DD876 mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 str r0, [sp, #0xc] _021DD876: cmp r6, #0 bne _021DD890 add r0, r7, #0 add r1, r5, #0 bl MOD16_021DD944 str r0, [sp, #0x10] add r0, r7, #0 add r1, r5, #0 bl MOD16_021DD9A0 str r0, [sp, #0x14] b _021DD896 _021DD890: mov r0, #1 str r0, [sp, #0x10] str r0, [sp, #0x14] _021DD896: mov r1, #0 add r2, sp, #8 _021DD89A: ldr r0, [r2] cmp r0, #0 beq _021DD8A8 add r1, r1, #1 add r2, r2, #4 cmp r1, #4 blt _021DD89A _021DD8A8: cmp r1, #4 bne _021DD906 cmp r6, #0 bne _021DD8E0 ldr r0, [r4, #0x10] cmp r0, #1 beq _021DD8F6 mov r3, #0 add r0, r3, #0 str r3, [sp] sub r0, #0x10 str r0, [sp, #4] ldr r0, _021DD90C ; =0x04000050 mov r1, #0x2e mov r2, #8 bl G2x_SetBlendBrightnessExt_ ldr r0, [r5] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r5] mov r1, #1 ldr r0, [r0] bl FUN_02018744 b _021DD8F6 _021DD8E0: add r0, r7, #0 bl MOD16_021DD6A0 ldr r0, [r5] mov r1, #0 bl MOD16_021D8950 ldr r0, [r5] mov r1, #0 bl MOD16_021D88F0 _021DD8F6: add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021DD610 add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DD906: mov r0, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DD90C: .word 0x04000050 thumb_func_end MOD16_021DD850 thumb_func_start MOD16_021DD910 MOD16_021DD910: ; 0x021DD910 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 mov r1, #0x48 add r5, r0, #0 str r1, [sp] mov r0, #4 add r1, #0xbc str r0, [sp, #4] add r0, r5, r1 mov r1, #0x38 mov r2, #0x30 mov r3, #0x50 bl MOD16_021D8BD8 mov r2, #0x41 lsl r2, r2, #2 ldr r1, [r5, r2] add r2, r2, #4 ldr r0, [r4] ldr r2, [r5, r2] bl MOD16_021D86F4 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DD910 thumb_func_start MOD16_021DD944 MOD16_021DD944: ; 0x021DD944 push {r4, r5, r6, lr} add r5, r0, #0 mov r0, #0x41 lsl r0, r0, #2 add r0, r5, r0 add r4, r1, #0 bl MOD16_021D8BF4 mov r2, #0x41 lsl r2, r2, #2 ldr r1, [r5, r2] add r2, r2, #4 add r6, r0, #0 ldr r0, [r4] ldr r2, [r5, r2] bl MOD16_021D86F4 add r0, r6, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DD944 thumb_func_start MOD16_021DD96C MOD16_021DD96C: ; 0x021DD96C push {r3, r4, r5, lr} sub sp, #8 add r5, r0, #0 mov r0, #0x20 str r0, [sp] mov r0, #4 str r0, [sp, #4] mov r0, #0x49 lsl r0, r0, #2 add r4, r1, #0 add r0, r5, r0 mov r1, #0xaa mov r2, #0xac mov r3, #0x52 bl MOD16_021D8BD8 mov r2, #0x49 lsl r2, r2, #2 ldr r1, [r5, r2] add r2, r2, #4 ldr r0, [r4] ldr r2, [r5, r2] bl MOD16_021D7F6C add sp, #8 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DD96C thumb_func_start MOD16_021DD9A0 MOD16_021DD9A0: ; 0x021DD9A0 push {r4, r5, r6, lr} add r5, r0, #0 mov r0, #0x49 lsl r0, r0, #2 add r0, r5, r0 add r4, r1, #0 bl MOD16_021D8BF4 mov r2, #0x49 lsl r2, r2, #2 ldr r1, [r5, r2] add r2, r2, #4 add r6, r0, #0 ldr r0, [r4] ldr r2, [r5, r2] bl MOD16_021D7F6C add r0, r6, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DD9A0 thumb_func_start MOD16_021DD9C8 MOD16_021DD9C8: ; 0x021DD9C8 ldr r3, [r0] mov r1, #4 ldr r2, [r3] orr r1, r2 str r1, [r3] mov r1, #0 str r1, [r0, #0x10] str r1, [r0, #0x14] mov r1, #2 str r1, [r0, #0x20] bx lr .align 2, 0 thumb_func_end MOD16_021DD9C8 thumb_func_start MOD16_021DD9E0 MOD16_021DD9E0: ; 0x021DD9E0 ldr r3, [r1] mov r0, #2 ldr r2, [r3] orr r2, r0 str r2, [r3] mov r3, #0 str r3, [r1, #0x10] mov r2, #1 str r2, [r1, #0x14] str r3, [r1, #0xc] str r0, [r1, #0x20] bx lr thumb_func_end MOD16_021DD9E0 thumb_func_start MOD16_021DD9F8 MOD16_021DD9F8: ; 0x021DD9F8 push {r3, lr} mov r1, #0x5d ldr r2, [r0, #4] lsl r1, r1, #6 ldr r1, [r2, r1] cmp r1, #0 bne _021DDA24 ldr r3, [r0] mov r1, #1 ldr r2, [r3] orr r1, r2 str r1, [r3] mov r1, #0 str r1, [r0, #0x10] str r1, [r0, #0x14] mov r1, #2 str r1, [r0, #0x20] ldr r0, _021DDA28 ; =0x000005DD bl FUN_020054C8 mov r0, #1 pop {r3, pc} _021DDA24: mov r0, #0 pop {r3, pc} .align 2, 0 _021DDA28: .word 0x000005DD thumb_func_end MOD16_021DD9F8 thumb_func_start MOD16_021DDA2C MOD16_021DDA2C: ; 0x021DDA2C push {r4, r5, r6, lr} sub sp, #0x10 add r5, r0, #0 add r6, r1, #0 mov r1, #0x5d ldr r0, [r5, #4] lsl r1, r1, #6 ldr r1, [r0, r1] cmp r1, #1 bne _021DDA46 add sp, #0x10 mov r0, #0 pop {r4, r5, r6, pc} _021DDA46: bl MOD16_021D9D04 cmp r0, #0 bne _021DDA52 mov r4, #1 b _021DDA54 _021DDA52: mov r4, #0 _021DDA54: ldr r0, [r5, #4] add r1, r4, #0 bl MOD16_021D9CD0 cmp r0, #0 beq _021DDAA8 ldr r0, [r5, #4] add r1, r4, #0 bl MOD16_021D9CEC ldr r0, _021DDAB0 ; =0x000005DD bl FUN_020054C8 mov r1, #0 str r1, [sp] str r1, [sp, #4] str r4, [sp, #8] str r6, [sp, #0xc] ldr r0, [r5, #4] add r2, r1, #0 add r3, r1, #0 bl MOD16_021D9CB0 ldr r0, [r5, #4] mov r1, #0 bl MOD16_021D9D28 mov r3, #0 str r3, [r5, #0xc] ldr r2, [r5] mov r0, #0x10 ldr r1, [r2] add sp, #0x10 orr r0, r1 str r0, [r2] str r3, [r5, #0x10] str r3, [r5, #0x14] mov r0, #2 str r0, [r5, #0x20] str r3, [r5, #0x1c] mov r0, #1 pop {r4, r5, r6, pc} _021DDAA8: mov r0, #0 add sp, #0x10 pop {r4, r5, r6, pc} nop _021DDAB0: .word 0x000005DD thumb_func_end MOD16_021DDA2C thumb_func_start MOD16_021DDAB4 MOD16_021DDAB4: ; 0x021DDAB4 push {r4, r5, r6, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5, #4] add r4, r1, #0 bl MOD16_021D9DE8 add r6, r0, #0 ldr r0, [r5, #4] bl MOD16_021D9D04 mov r1, #0 str r1, [sp] str r1, [sp, #4] str r0, [sp, #8] str r4, [sp, #0xc] ldr r0, [r5, #4] add r2, r1, #0 add r3, r1, #0 bl MOD16_021D9CB0 ldr r2, [r5] mov r0, #0x10 ldr r1, [r2] orr r0, r1 str r0, [r2] ldr r0, [r5, #4] add r1, r6, #0 bl MOD16_021D9DC0 mov r2, #0 str r2, [r5, #0xc] mov r0, #0x5d ldr r1, [r5, #4] lsl r0, r0, #6 str r2, [r1, r0] str r2, [r5, #0x10] str r2, [r5, #0x14] str r2, [r5, #8] mov r0, #2 str r0, [r5, #0x20] str r2, [r5, #0x1c] add sp, #0x10 pop {r4, r5, r6, pc} thumb_func_end MOD16_021DDAB4 thumb_func_start MOD16_021DDB0C MOD16_021DDB0C: ; 0x021DDB0C push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x18] add r4, r1, #0 sub r0, r0, #1 str r0, [r5, #0x18] bmi _021DDB42 ldr r1, [r5, #0x1c] add r0, r4, #0 bl MOD16_021DC684 cmp r0, #0 beq _021DDB3C ldr r2, [r5, #0x20] add r0, r4, #0 add r1, r5, #0 bl MOD16_021DC678 mov r0, #1 str r0, [r4, #0x20] ldr r0, _021DDB54 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021DDB3C: mov r0, #0 str r0, [r5, #0x18] pop {r3, r4, r5, pc} _021DDB42: add r0, r4, #0 add r1, r5, #0 bl MOD16_021DC4D4 mov r0, #0 str r0, [r5, #0x14] str r0, [r4, #0x20] pop {r3, r4, r5, pc} nop _021DDB54: .word 0x0000068B thumb_func_end MOD16_021DDB0C thumb_func_start MOD16_021DDB58 MOD16_021DDB58: ; 0x021DDB58 push {r3, r4, r5, lr} ldr r2, _021DDC24 ; =0x021C48B8 add r4, r1, #0 ldr r3, [r2, #0x44] add r5, r0, #0 mov r1, #0x40 add r0, r3, #0 tst r0, r1 beq _021DDB9A add r0, r4, #0 sub r1, #0x41 bl MOD16_021DC684 cmp r0, #0 beq _021DDB8C add r0, r4, #0 add r1, r5, #0 mov r2, #2 bl MOD16_021DC678 mov r0, #1 str r0, [r4, #0x20] ldr r0, _021DDC28 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021DDB8C: add r0, r4, #0 add r1, r5, #0 bl MOD16_021DC4D4 mov r0, #0 str r0, [r4, #0x20] pop {r3, r4, r5, pc} _021DDB9A: mov r0, #0x80 tst r0, r3 beq _021DDBD0 add r0, r4, #0 mov r1, #1 bl MOD16_021DC684 cmp r0, #0 beq _021DDBC2 add r0, r4, #0 add r1, r5, #0 mov r2, #1 bl MOD16_021DC678 mov r0, #1 str r0, [r4, #0x20] ldr r0, _021DDC28 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021DDBC2: add r0, r4, #0 add r1, r5, #0 bl MOD16_021DC4D4 mov r0, #0 str r0, [r4, #0x20] pop {r3, r4, r5, pc} _021DDBD0: ldr r1, [r2, #0x48] mov r0, #0x20 tst r0, r1 beq _021DDBF2 mov r0, #1 str r0, [r5, #0x14] mov r0, #5 str r0, [r5, #0x18] sub r0, r0, #6 str r0, [r5, #0x1c] mov r0, #2 str r0, [r5, #0x20] add r0, r4, #0 add r1, r5, #0 bl MOD16_021DC4E8 pop {r3, r4, r5, pc} _021DDBF2: mov r0, #0x10 tst r0, r1 beq _021DDC0E mov r1, #1 str r1, [r5, #0x14] mov r0, #5 str r0, [r5, #0x18] str r1, [r5, #0x1c] str r1, [r5, #0x20] add r0, r4, #0 add r1, r5, #0 bl MOD16_021DC4E8 pop {r3, r4, r5, pc} _021DDC0E: ldr r0, [r4, #0x20] cmp r0, #1 bne _021DDC20 add r0, r4, #0 add r1, r5, #0 bl MOD16_021DC4D4 mov r0, #0 str r0, [r4, #0x20] _021DDC20: pop {r3, r4, r5, pc} nop _021DDC24: .word 0x021C48B8 _021DDC28: .word 0x0000068B thumb_func_end MOD16_021DDB58 thumb_func_start MOD16_021DDC2C MOD16_021DDC2C: ; 0x021DDC2C push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021DDCA4 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021DDCEC add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021DDD14 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021DDD90 str r0, [r5, #0x24] ldr r0, _021DDC74 ; =MOD16_021DDD94 str r0, [r5, #8] ldr r0, _021DDC78 ; =MOD16_021DDDDC str r0, [r5, #0xc] ldr r0, _021DDC7C ; =MOD16_021DDE28 str r0, [r5, #0x10] ldr r0, _021DDC80 ; =MOD16_021DDE3C str r0, [r5, #0x14] ldr r0, _021DDC84 ; =MOD16_021DDECC str r0, [r5, #0x18] ldr r0, _021DDC88 ; =MOD16_021DDF60 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DDC74: .word MOD16_021DDD94 _021DDC78: .word MOD16_021DDDDC _021DDC7C: .word MOD16_021DDE28 _021DDC80: .word MOD16_021DDE3C _021DDC84: .word MOD16_021DDECC _021DDC88: .word MOD16_021DDF60 thumb_func_end MOD16_021DDC2C thumb_func_start MOD16_021DDC8C MOD16_021DDC8C: ; 0x021DDC8C push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021DDD50 ldr r0, [r4] bl MOD16_021DDD64 ldr r0, [r4, #0x20] bl MOD16_021DDD78 pop {r4, pc} thumb_func_end MOD16_021DDC8C thumb_func_start MOD16_021DDCA4 MOD16_021DDCA4: ; 0x021DDCA4 push {r4, r5, r6, lr} add r6, r1, #0 mov r1, #0x28 add r5, r0, #0 bl FUN_02016998 add r4, r0, #0 bne _021DDCB8 bl ErrorHandling _021DDCB8: add r0, r4, #0 mov r1, #0 mov r2, #0x28 bl Call_FillMemWithValue add r0, r6, #0 mov r1, #0 bl MOD16_021D7B5C ldr r0, [r0] mov r1, #0 str r0, [r4, #0x1c] add r2, r4, #0 mov r0, #4 _021DDCD4: add r1, r1, #1 stmia r2!, {r0} cmp r1, #7 blt _021DDCD4 add r0, r6, #0 bl MOD16_021D7AEC str r0, [r4, #0x20] str r5, [r4, #0x24] add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DDCA4 thumb_func_start MOD16_021DDCEC MOD16_021DDCEC: ; 0x021DDCEC push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021DDCFE bl ErrorHandling _021DDCFE: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DDCEC thumb_func_start MOD16_021DDD14 MOD16_021DDD14: ; 0x021DDD14 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 bl MOD16_021DDD90 add r7, r0, #0 mov r1, #0x14 mul r7, r1 add r0, r5, #0 add r1, r7, #0 bl FUN_02016998 add r4, r0, #0 bne _021DDD34 bl ErrorHandling _021DDD34: add r0, r4, #0 mov r1, #0 add r2, r7, #0 bl Call_FillMemWithValue add r0, r4, #0 add r1, r6, #0 add r2, r5, #0 mov r3, #1 bl MOD16_021DAE94 add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DDD14 thumb_func_start MOD16_021DDD50 MOD16_021DDD50: ; 0x021DDD50 push {r4, lr} add r4, r0, #0 bne _021DDD5A bl ErrorHandling _021DDD5A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DDD50 thumb_func_start MOD16_021DDD64 MOD16_021DDD64: ; 0x021DDD64 push {r4, lr} add r4, r0, #0 bne _021DDD6E bl ErrorHandling _021DDD6E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DDD64 thumb_func_start MOD16_021DDD78 MOD16_021DDD78: ; 0x021DDD78 push {r4, lr} add r4, r0, #0 bne _021DDD82 bl ErrorHandling _021DDD82: add r0, r4, #0 bl MOD16_021DAC7C add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_end MOD16_021DDD78 thumb_func_start MOD16_021DDD90 MOD16_021DDD90: ; 0x021DDD90 mov r0, #1 bx lr thumb_func_end MOD16_021DDD90 thumb_func_start MOD16_021DDD94 MOD16_021DDD94: ; 0x021DDD94 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #4] add r4, r1, #0 mov r1, #0x24 bl FUN_02016998 str r0, [r5, #8] cmp r0, #0 bne _021DDDAC bl ErrorHandling _021DDDAC: ldr r0, [r5, #8] mov r1, #0 mov r2, #0x24 bl Call_FillMemWithValue ldr r1, _021DDDD8 ; =0x000004CD ldr r0, [r5, #8] add r2, r4, #0 str r1, [r0, #0x1c] mov r1, #0 mov r0, #4 _021DDDC2: add r1, r1, #1 stmia r2!, {r0} cmp r1, #7 blt _021DDDC2 ldr r0, [r5, #8] ldr r2, [r5, #4] add r1, r4, #0 bl MOD16_021DDFE0 mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 _021DDDD8: .word 0x000004CD thumb_func_end MOD16_021DDD94 thumb_func_start MOD16_021DDDDC MOD16_021DDDDC: ; 0x021DDDDC push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r0, #0xc] ldr r4, [r0, #8] cmp r1, #1 bne _021DDDEC mov r0, #1 pop {r3, r4, r5, pc} _021DDDEC: ldr r0, [r0, #0x10] cmp r0, #1 bne _021DDDF6 mov r0, #0 pop {r3, r4, r5, pc} _021DDDF6: ldr r2, [r5, #0x1c] add r0, r4, #0 ldr r1, [r2, #0xc] ldr r2, [r2, #8] bl MOD16_021DE9B0 add r0, r4, #0 add r1, r5, #0 bl MOD16_021DE09C ldr r0, [r5, #0x1c] ldr r0, [r0, #0x20] cmp r0, #0 bne _021DDE1C add r0, r4, #0 add r1, r5, #0 bl MOD16_021DE824 b _021DDE22 _021DDE1C: mov r0, #0 str r0, [r4, #0xc] str r0, [r4, #0x10] _021DDE22: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DDDDC thumb_func_start MOD16_021DDE28 MOD16_021DDE28: ; 0x021DDE28 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] bl MOD16_021DE0EC ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021DDE28 thumb_func_start MOD16_021DDE3C MOD16_021DDE3C: ; 0x021DDE3C push {r3, r4, r5, lr} add r4, r1, #0 ldr r1, [r4] add r3, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021DDEC8 add r5, r1, r1 add r5, pc ldrh r5, [r5, #6] lsl r5, r5, #0x10 asr r5, r5, #0x10 add pc, r5 _021DDE56: ; jump table .short _021DDE60 - _021DDE56 - 2 ; case 0 .short _021DDE84 - _021DDE56 - 2 ; case 1 .short _021DDE94 - _021DDE56 - 2 ; case 2 .short _021DDEAE - _021DDE56 - 2 ; case 3 .short _021DDEC0 - _021DDE56 - 2 ; case 4 _021DDE60: ldr r0, [r4, #4] mov r1, #0x3c bl FUN_02016998 str r0, [r4, #8] cmp r0, #0 bne _021DDE72 bl ErrorHandling _021DDE72: ldr r0, [r4, #8] mov r1, #0 mov r2, #0x3c bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDEC8 _021DDE84: add r1, r3, #0 ldr r3, [r4, #4] bl MOD16_021DE1E0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDEC8 _021DDE94: mov r1, #0 mov r0, #2 add r2, r1, #0 str r0, [sp] mov r0, #4 sub r2, #0x10 mov r3, #0x3f bl FUN_0200A208 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDEC8 _021DDEAE: mov r0, #2 bl FUN_0200A344 cmp r0, #0 beq _021DDEC8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDEC8 _021DDEC0: add r0, r1, #1 str r0, [r4] mov r0, #1 pop {r3, r4, r5, pc} _021DDEC8: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DDE3C thumb_func_start MOD16_021DDECC MOD16_021DDECC: ; 0x021DDECC push {r3, r4, r5, r6, r7, lr} ldr r4, [r1, #8] add r5, r2, #0 add r7, r0, #0 ldr r0, [r4] ldr r1, [r5] ldr r6, [r3, #8] bl MOD16_021D7B98 ldr r0, [r4, #4] ldr r1, [r5, #4] bl MOD16_021D7B98 ldr r0, [r4, #8] ldr r1, [r5, #8] bl MOD16_021D7B98 ldr r0, [r4, #0x18] ldr r1, [r5, #0xc] bl MOD16_021D7B98 ldr r0, [r4, #0x1c] ldr r1, [r5, #0x10] bl MOD16_021D7B98 mov r2, #5 str r2, [sp] ldr r0, [r4] ldr r1, [r4, #0xc] sub r2, #0x13 mov r3, #3 bl MOD16_021DEA24 mov r2, #5 str r2, [sp] ldr r0, [r4, #4] ldr r1, [r4, #0x10] sub r2, #0x13 mov r3, #3 bl MOD16_021DEA24 mov r2, #5 str r2, [sp] ldr r0, [r4, #8] ldr r1, [r4, #0x14] sub r2, #0x13 mov r3, #2 bl MOD16_021DEA24 ldr r0, [r5, #0x1c] ldr r0, [r0, #0x20] cmp r0, #0 bne _021DDF4E mov r0, #0x83 ldr r1, [r6, #0xc] lsl r0, r0, #2 bl FUN_0201BC84 add r2, r0, #0 ldr r3, [r6, #0x1c] add r0, r4, #0 add r1, r7, #0 bl MOD16_021DE8D0 b _021DDF5C _021DDF4E: cmp r0, #1 bne _021DDF5C add r0, r4, #0 add r1, r7, #0 add r2, r5, #0 bl MOD16_021DE93C _021DDF5C: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DDECC thumb_func_start MOD16_021DDF60 MOD16_021DDF60: ; 0x021DDF60 push {r3, r4, lr} sub sp, #4 add r4, r1, #0 ldr r1, [r4] add r2, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021DDFD8 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DDF7C: ; jump table .short _021DDF86 - _021DDF7C - 2 ; case 0 .short _021DDFA0 - _021DDF7C - 2 ; case 1 .short _021DDFB2 - _021DDF7C - 2 ; case 2 .short _021DDFC2 - _021DDF7C - 2 ; case 3 .short _021DDFD2 - _021DDF7C - 2 ; case 4 _021DDF86: mov r0, #2 str r0, [sp] mov r0, #4 add r1, r0, #0 sub r1, #0x14 mov r2, #0 mov r3, #0x3f bl FUN_0200A208 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDFD8 _021DDFA0: mov r0, #2 bl FUN_0200A344 cmp r0, #0 beq _021DDFD8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDFD8 _021DDFB2: add r1, r2, #0 ldr r2, [r4, #4] bl MOD16_021DE228 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDFD8 _021DDFC2: bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DDFD8 _021DDFD2: add sp, #4 mov r0, #1 pop {r3, r4, pc} _021DDFD8: mov r0, #0 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021DDF60 thumb_func_start MOD16_021DDFE0 MOD16_021DDFE0: ; 0x021DDFE0 push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #0x1c bl FUN_02016998 str r0, [r5, #8] mov r0, #0x60 str r0, [sp] ldr r0, [r5, #8] mov r1, #0x10 mov r2, #0x40 mov r3, #0 bl MOD16_021D7C98 mov r0, #0x60 str r0, [sp] ldr r0, [r5, #8] mov r1, #0x40 add r0, r0, #4 mov r2, #0x70 mov r3, #0 bl MOD16_021D7C98 mov r0, #0x60 str r0, [sp] ldr r0, [r5, #8] mov r1, #0x70 add r0, #8 mov r2, #0xc0 mov r3, #0 bl MOD16_021D7C98 mov r0, #0x84 str r0, [sp] ldr r0, [r5, #8] mov r1, #0x38 add r0, #0xc mov r2, #0x48 mov r3, #0x74 bl MOD16_021D7C98 mov r0, #0x84 str r0, [sp] ldr r0, [r5, #8] mov r1, #0x8a add r0, #0x10 mov r2, #0x9a mov r3, #0x74 bl MOD16_021D7C98 ldr r0, [r5, #8] mov r1, #0xfe strb r1, [r0, #0x14] ldr r0, [r5, #8] mov r1, #0xf8 strb r1, [r0, #0x15] ldr r0, [r5, #8] mov r1, #0x68 strb r1, [r0, #0x16] ldr r0, [r5, #8] mov r2, #0x10 strb r1, [r0, #0x17] mov r0, #0xb4 str r0, [sp] ldr r0, [r5, #8] mov r1, #0 add r0, #0x18 mov r3, #0x74 bl MOD16_021D7C98 add r0, r6, #0 mov r1, #8 bl FUN_02016998 add r3, r0, #0 str r5, [r3] str r4, [r3, #4] str r3, [r5, #4] str r6, [sp] ldr r0, [r5, #8] ldr r2, _021DE098 ; =MOD16_021DE108 mov r1, #7 bl FUN_020220C4 str r0, [r5] add sp, #4 pop {r3, r4, r5, r6, pc} nop _021DE098: .word MOD16_021DE108 thumb_func_end MOD16_021DDFE0 thumb_func_start MOD16_021DE09C MOD16_021DE09C: ; 0x021DE09C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 mov r1, #0 add r2, r4, #0 mov r0, #4 _021DE0A8: add r1, r1, #1 stmia r2!, {r0} cmp r1, #7 blt _021DE0A8 add r0, r4, #0 bl MOD16_021DEA34 ldr r0, [r5] bl FUN_02022144 ldr r1, [r4, #0x1c] add r0, r5, #0 ldr r1, [r1, #4] bl MOD16_021DEA5C cmp r0, #0 bne _021DE0CE mov r0, #0 str r0, [r5, #0xc] _021DE0CE: ldr r0, [r4, #0x14] cmp r0, #4 ldr r0, [r5, #0x1c] beq _021DE0E0 ldr r1, [r5, #0xc] bl MOD16_021DEAFC str r0, [r5, #0x1c] pop {r3, r4, r5, pc} _021DE0E0: mov r1, #0 bl MOD16_021DEAFC str r0, [r5, #0x1c] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DE09C thumb_func_start MOD16_021DE0EC MOD16_021DE0EC: ; 0x021DE0EC push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0202212C ldr r0, [r4, #4] bl FUN_02016A18 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] pop {r4, pc} thumb_func_end MOD16_021DE0EC thumb_func_start MOD16_021DE108 MOD16_021DE108: ; 0x021DE108 push {r4, r5, r6, lr} ldr r5, [r2, #4] add r6, r0, #0 ldr r0, [r5, #0x1c] ldr r4, [r2] ldr r0, [r0, #4] lsl r2, r6, #2 str r1, [r5, r2] cmp r1, #0 beq _021DE122 cmp r1, #2 beq _021DE12E b _021DE1D6 _021DE122: ldr r0, _021DE1DC ; =0x021C48F8 ldrh r1, [r0, #0x1c] str r1, [r4, #0x14] ldrh r0, [r0, #0x1e] str r0, [r4, #0x18] pop {r4, r5, r6, pc} _021DE12E: cmp r6, #6 bhi _021DE1A2 add r1, r6, r6 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DE13E: ; jump table .short _021DE14C - _021DE13E - 2 ; case 0 .short _021DE154 - _021DE13E - 2 ; case 1 .short _021DE15C - _021DE13E - 2 ; case 2 .short _021DE164 - _021DE13E - 2 ; case 3 .short _021DE174 - _021DE13E - 2 ; case 4 .short _021DE1A2 - _021DE13E - 2 ; case 5 .short _021DE18A - _021DE13E - 2 ; case 6 _021DE14C: ldr r0, [r5, #0x1c] mov r1, #1 str r1, [r0, #0x34] b _021DE1A2 _021DE154: ldr r0, [r5, #0x1c] mov r1, #1 str r1, [r0, #0x30] b _021DE1A2 _021DE15C: ldr r0, [r5, #0x1c] mov r1, #1 str r1, [r0, #0x2c] b _021DE1A2 _021DE164: ldr r0, [r4, #0x20] cmp r0, #0 bne _021DE1A2 add r0, r5, #0 mov r1, #0 bl MOD16_021DEAB8 b _021DE1A2 _021DE174: ldr r1, [r4, #0x20] cmp r1, #0 bne _021DE1A2 bl MOD16_021D9D94 add r1, r0, #0 add r0, r5, #0 sub r1, r1, #1 bl MOD16_021DEAB8 b _021DE1A2 _021DE18A: ldr r0, [r5, #0x1c] mov r1, #0x5d ldr r2, [r0, #4] lsl r1, r1, #6 ldr r1, [r2, r1] cmp r1, #0 bne _021DE19E mov r1, #1 str r1, [r0, #0x28] b _021DE1A2 _021DE19E: mov r1, #1 str r1, [r0, #0x24] _021DE1A2: cmp r6, #5 bne _021DE1D0 ldr r0, [r5, #0x1c] ldr r0, [r0, #0x20] cmp r0, #0 bne _021DE1C6 add r0, r4, #0 bl MOD16_021DE8A0 ldr r1, [r4, #0xc] cmp r1, #0x10 bgt _021DE1C6 mov r0, #0xf mvn r0, r0 cmp r1, r0 blt _021DE1C6 mov r0, #0 str r0, [r4, #0xc] _021DE1C6: ldr r0, _021DE1DC ; =0x021C48F8 ldrh r1, [r0, #0x1c] str r1, [r4, #0x14] ldrh r0, [r0, #0x1e] str r0, [r4, #0x18] _021DE1D0: mov r0, #1 str r0, [r4, #0x20] pop {r4, r5, r6, pc} _021DE1D6: mov r0, #0 str r0, [r4, #0x20] pop {r4, r5, r6, pc} .align 2, 0 _021DE1DC: .word 0x021C48F8 thumb_func_end MOD16_021DE108 thumb_func_start MOD16_021DE1E0 MOD16_021DE1E0: ; 0x021DE1E0 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021DE254 add r0, r4, #0 add r1, r7, #0 bl MOD16_021DE788 add r0, r5, #0 add r1, r4, #0 add r2, r7, #0 bl MOD16_021DE308 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 add r3, r7, #0 bl MOD16_021DE3FC add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 add r3, r7, #0 bl MOD16_021DE594 mov r0, #7 mov r1, #3 bl FUN_020178BC pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DE1E0 thumb_func_start MOD16_021DE228 MOD16_021DE228: ; 0x021DE228 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 bl MOD16_021DE768 add r0, r5, #0 bl MOD16_021DE568 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DE3B8 add r0, r4, #0 add r1, r6, #0 bl MOD16_021DE808 mov r0, #7 mov r1, #1 bl FUN_020178BC pop {r4, r5, r6, pc} thumb_func_end MOD16_021DE228 thumb_func_start MOD16_021DE254 MOD16_021DE254: ; 0x021DE254 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r7, r1, #0 ldr r6, [r0] mov r1, #0 add r4, r2, #0 str r1, [sp] str r4, [sp, #4] mov r2, #4 add r3, r1, #0 bl MOD16_021D8CFC ldr r0, [r7, #0x1c] mov r1, #0x5d ldr r0, [r0, #4] lsl r1, r1, #6 ldr r1, [r0, r1] cmp r1, #1 bne _021DE292 mov r0, #0x20 str r0, [sp] str r4, [sp, #4] ldr r0, [r5] mov r1, #1 mov r2, #4 mov r3, #0x60 bl MOD16_021D8CFC b _021DE2AC _021DE292: bl MOD16_021D9D04 cmp r0, #1 bne _021DE2AC mov r0, #0x20 str r0, [sp] str r4, [sp, #4] ldr r0, [r5] mov r1, #0x19 mov r2, #4 mov r3, #0x60 bl MOD16_021D8CFC _021DE2AC: mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] str r4, [sp, #0xc] ldr r0, [r5] mov r1, #0x1d add r2, r6, #0 mov r3, #6 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x29 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r4, r0, #0 ldrh r0, [r2] mov r1, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] add r0, r6, #0 bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 add r0, r6, #0 mov r1, #6 bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DE254 thumb_func_start MOD16_021DE308 MOD16_021DE308: ; 0x021DE308 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021DE3A8 ; =0x0000043C add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x54 mov r3, #1 bl FUN_020091E0 str r0, [r5, #0x2c] bl FUN_02009B04 ldr r0, [r5, #0x2c] bl FUN_02009474 ldr r0, _021DE3AC ; =0x000003EB add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0xc str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #3 mov r3, #0 bl FUN_02009298 str r0, [r5, #0x30] bl FUN_02009D68 ldr r0, [r5, #0x30] bl FUN_02009474 ldr r0, _021DE3B0 ; =0x0000043A add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x52 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x34] ldr r0, _021DE3B4 ; =0x0000043B add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x53 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x38] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021DE3A8: .word 0x0000043C _021DE3AC: .word 0x000003EB _021DE3B0: .word 0x0000043A _021DE3B4: .word 0x0000043B thumb_func_end MOD16_021DE308 thumb_func_start MOD16_021DE3B8 MOD16_021DE3B8: ; 0x021DE3B8 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x2c] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0x30] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x2c] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x30] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x34] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x38] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DE3B8 thumb_func_start MOD16_021DE3FC MOD16_021DE3FC: ; 0x021DE3FC push {r3, r4, r5, r6, r7, lr} sub sp, #0x70 add r7, r3, #0 add r5, r0, #0 mov r0, #0 ldr r4, [r1] ldr r3, _021DE564 ; =0x0000043B add r6, r2, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #5 str r2, [sp, #0x10] lsl r0, r0, #6 ldr r1, [r4, r0] str r1, [sp, #0x14] add r1, r0, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r0, #0 add r1, #8 ldr r1, [r4, r1] add r0, #0xc str r1, [sp, #0x1c] ldr r0, [r4, r0] add r1, r3, #1 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r2, r3, #0 add r0, sp, #0x4c sub r2, #0x50 sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #0xa str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #8 str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] mov r0, #3 lsl r0, r0, #0x10 str r0, [sp, #0x34] lsl r1, r1, #0xe lsl r0, r0, #2 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] str r7, [sp, #0x48] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5] mov r1, #2 bl FUN_02020130 ldr r0, [r6, #0x1c] ldr r1, [r0, #4] mov r0, #0x5d lsl r0, r0, #6 ldr r0, [r1, r0] cmp r0, #1 bne _021DE494 ldr r0, [r5] mov r1, #0 bl FUN_020200A0 _021DE494: mov r0, #3 lsl r0, r0, #0x10 mov r1, #0x16 str r0, [sp, #0x34] lsl r1, r1, #0xe lsl r0, r0, #2 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5, #4] mov r1, #0 bl FUN_02020130 ldr r0, [r6, #0x1c] mov r1, #1 ldr r0, [r0, #4] bl MOD16_021D9CD0 cmp r0, #0 beq _021DE4D0 ldr r0, [r6, #0x1c] ldr r1, [r0, #4] mov r0, #0x5d lsl r0, r0, #6 ldr r0, [r1, r0] cmp r0, #1 bne _021DE4D8 _021DE4D0: ldr r0, [r5, #4] mov r1, #0 bl FUN_020200A0 _021DE4D8: mov r0, #3 lsl r0, r0, #0x10 mov r1, #0x26 str r0, [sp, #0x34] lsl r1, r1, #0xe lsl r0, r0, #2 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 mov r1, #1 str r0, [r5, #8] bl FUN_02020130 mov r0, #0x1f lsl r0, r0, #0xe str r0, [sp, #0x34] mov r1, #1 mov r0, #3 lsl r1, r1, #0x12 lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 mov r1, #3 str r0, [r5, #0x18] bl FUN_02020130 mov r0, #0x1f lsl r0, r0, #0xe str r0, [sp, #0x34] mov r1, #0x92 mov r0, #3 lsl r1, r1, #0xc lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 mov r1, #4 str r0, [r5, #0x1c] bl FUN_02020130 mov r0, #0x1f lsl r0, r0, #0xe str r0, [sp, #0x34] mov r1, #2 mov r0, #3 lsl r1, r1, #0xe lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 mov r1, #5 str r0, [r5, #0x20] bl FUN_02020130 add sp, #0x70 pop {r3, r4, r5, r6, r7, pc} nop _021DE564: .word 0x0000043B thumb_func_end MOD16_021DE3FC thumb_func_start MOD16_021DE568 MOD16_021DE568: ; 0x021DE568 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0201FFC8 ldr r0, [r4, #4] bl FUN_0201FFC8 ldr r0, [r4, #8] bl FUN_0201FFC8 ldr r0, [r4, #0x18] bl FUN_0201FFC8 ldr r0, [r4, #0x1c] bl FUN_0201FFC8 ldr r0, [r4, #0x20] bl FUN_0201FFC8 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DE568 thumb_func_start MOD16_021DE594 MOD16_021DE594: ; 0x021DE594 push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 add r5, r0, #0 ldr r0, [r5] add r6, r2, #0 add r7, r3, #0 ldr r4, [r1] cmp r0, #0 bne _021DE5AA bl ErrorHandling _021DE5AA: mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, _021DE760 ; =0x000003EB bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] mov r1, #0 bl FUN_02009E54 mov r1, #0x27 mvn r1, r1 str r1, [sp, #0x28] add r1, #0x1a str r1, [sp, #0x2c] mov r1, #0 str r1, [sp, #0x30] str r1, [sp, #0x34] mov r1, #2 str r0, [sp, #0x20] str r1, [sp, #0x38] str r7, [sp, #0x3c] bl FUN_0201E28C add r7, r0, #0 mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0xa mov r2, #4 bl MOD16_021DB388 str r0, [sp, #0x10] mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r1, [sp, #0x10] ldr r2, _021DE764 ; =0x00000266 mov r3, #7 bl MOD16_021DB3C8 ldr r0, [sp, #0x10] str r0, [sp, #0x1c] ldr r0, [r5] str r0, [sp, #0x24] add r0, sp, #0x18 bl MOD16_021DB2BC str r0, [r5, #0xc] ldr r0, [r0] add r1, r7, #3 bl FUN_02011A60 ldr r0, [r6, #0x1c] ldr r1, [r0, #4] mov r0, #0x5d lsl r0, r0, #6 ldr r0, [r1, r0] cmp r0, #1 bne _021DE638 ldr r0, [r5, #0xc] mov r1, #0 ldr r0, [r0] bl FUN_020119D0 _021DE638: ldr r0, [sp, #0x10] bl MOD16_021DB3BC mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0xa mov r2, #4 bl MOD16_021DB388 str r0, [sp, #8] mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r1, [sp, #8] ldr r2, _021DE764 ; =0x00000266 mov r3, #5 bl MOD16_021DB3C8 ldr r0, [sp, #8] str r0, [sp, #0x1c] ldr r0, [r5, #4] str r0, [sp, #0x24] add r0, sp, #0x18 bl MOD16_021DB2BC str r0, [r5, #0x10] ldr r0, [r0] add r1, r7, #3 bl FUN_02011A60 ldr r0, [r6, #0x1c] mov r1, #1 ldr r0, [r0, #4] bl MOD16_021D9CD0 cmp r0, #0 beq _021DE698 ldr r0, [r6, #0x1c] ldr r1, [r0, #4] mov r0, #0x5d lsl r0, r0, #6 ldr r0, [r1, r0] cmp r0, #1 bne _021DE6A2 _021DE698: ldr r0, [r5, #0x10] mov r1, #0 ldr r0, [r0] bl FUN_020119D0 _021DE6A2: ldr r0, [sp, #8] bl MOD16_021DB3BC mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0xa mov r2, #4 bl MOD16_021DB388 str r0, [sp, #0x14] mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r1, [sp, #0x14] ldr r2, _021DE764 ; =0x00000266 mov r3, #0x1d bl MOD16_021DB3C8 ldr r0, [sp, #0x14] str r0, [sp, #0x1c] ldr r0, [r5, #8] str r0, [sp, #0x24] add r0, sp, #0x18 bl MOD16_021DB2BC str r0, [r5, #0x14] ldr r0, [r0] add r1, r7, #2 bl FUN_02011A60 ldr r0, [sp, #0x14] bl MOD16_021DB3BC mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0xe mov r2, #2 bl MOD16_021DB388 str r0, [sp, #0xc] ldr r0, [r6, #0x1c] ldr r2, _021DE764 ; =0x00000266 ldr r1, [r0, #4] mov r0, #0x5d lsl r0, r0, #6 ldr r0, [r1, r0] cmp r0, #0 bne _021DE722 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r1, [sp, #0xc] mov r3, #0x6a bl MOD16_021DB3C8 b _021DE736 _021DE722: mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r1, [sp, #0xc] mov r3, #0x6b bl MOD16_021DB3C8 _021DE736: ldr r0, [sp, #0xc] str r0, [sp, #0x1c] ldr r0, [r5, #0x20] str r0, [sp, #0x24] mov r0, #0xa str r0, [sp, #0x28] sub r0, #0x12 str r0, [sp, #0x2c] add r0, sp, #0x18 bl MOD16_021DB2BC str r0, [r5, #0x24] ldr r0, [r0] add r1, r7, #1 bl FUN_02011A60 ldr r0, [sp, #0xc] bl MOD16_021DB3BC add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DE760: .word 0x000003EB _021DE764: .word 0x00000266 thumb_func_end MOD16_021DE594 thumb_func_start MOD16_021DE768 MOD16_021DE768: ; 0x021DE768 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0xc] bl MOD16_021DB338 ldr r0, [r4, #0x10] bl MOD16_021DB338 ldr r0, [r4, #0x14] bl MOD16_021DB338 ldr r0, [r4, #0x24] bl MOD16_021DB338 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DE768 thumb_func_start MOD16_021DE788 MOD16_021DE788: ; 0x021DE788 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r6, r1, #0 ldr r4, [r0] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r6, [sp, #0xc] mov r1, #0x1b add r2, r4, #0 mov r3, #7 bl MOD16_021D8CB4 str r6, [sp] ldr r0, [r5] mov r1, #0x25 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #7 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] add r0, r4, #0 bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 add r0, r4, #0 mov r1, #7 bl FUN_0201AC68 mov r2, #0 add r3, r2, #0 add r0, r4, #0 mov r1, #7 sub r3, #0x78 bl FUN_020179E0 add r0, r4, #0 mov r1, #7 mov r2, #3 mov r3, #0 bl FUN_020179E0 add sp, #0x14 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DE788 thumb_func_start MOD16_021DE808 MOD16_021DE808: ; 0x021DE808 push {r4, lr} ldr r0, [r0] add r3, r1, #0 ldr r4, [r0] mov r0, #7 mov r1, #0x40 mov r2, #0 bl FUN_02017F18 add r0, r4, #0 mov r1, #7 bl FUN_02018744 pop {r4, pc} thumb_func_end MOD16_021DE808 thumb_func_start MOD16_021DE824 MOD16_021DE824: ; 0x021DE824 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4, #0x1c] add r5, r0, #0 ldr r3, [r2, #0xc] ldr r1, [r2, #4] cmp r3, #0 bgt _021DE860 ldr r3, [r5, #0x10] cmp r3, #0 beq _021DE85C bl MOD16_021DEA84 cmp r0, #0 bne _021DE84C add r0, r5, #0 add r1, r4, #0 bl MOD16_021DEAAC b _021DE860 _021DE84C: mov r1, #0xa ldr r0, [r4, #0x1c] lsl r1, r1, #6 str r1, [r0, #0xc] ldr r0, _021DE89C ; =0x0000068B bl FUN_020054C8 b _021DE860 _021DE85C: mov r0, #0 str r0, [r2, #8] _021DE860: ldr r0, [r5, #0x10] cmp r0, #0 bge _021DE86E ldr r0, [r4, #0x1c] mov r1, #1 str r1, [r0, #8] b _021DE876 _021DE86E: ble _021DE876 ldr r0, [r4, #0x1c] mov r1, #2 str r1, [r0, #8] _021DE876: ldr r2, [r4, #0x1c] ldr r0, [r2, #8] cmp r0, #0 beq _021DE898 ldr r1, [r5, #0x10] cmp r1, #0 bge _021DE886 neg r1, r1 _021DE886: ldr r0, [r2, #0xc] sub r0, r0, r1 str r0, [r2, #0xc] ldr r1, [r4, #0x1c] ldr r0, [r1, #0xc] cmp r0, #0 bge _021DE898 mov r0, #0 str r0, [r1, #0xc] _021DE898: pop {r3, r4, r5, pc} nop _021DE89C: .word 0x0000068B thumb_func_end MOD16_021DE824 thumb_func_start MOD16_021DE8A0 MOD16_021DE8A0: ; 0x021DE8A0 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 mov r0, #0x83 lsl r0, r0, #2 str r0, [sp] ldr r3, _021DE8CC ; =0x021C48F8 ldr r0, [r4, #0x14] ldrh r2, [r3, #0x1c] ldrh r3, [r3, #0x1e] ldr r1, [r4, #0x18] sub r0, #0xf8 sub r1, #0x68 sub r2, #0xf8 sub r3, #0x68 bl FUN_0201BBD0 mov r1, #0xa mul r1, r0 str r1, [r4, #0xc] add sp, #4 pop {r3, r4, pc} .align 2, 0 _021DE8CC: .word 0x021C48F8 thumb_func_end MOD16_021DE8A0 thumb_func_start MOD16_021DE8D0 MOD16_021DE8D0: ; 0x021DE8D0 push {r4, r5, r6, lr} add r5, r0, #0 lsl r0, r2, #0xc add r4, r1, #0 asr r6, r3, #0x1f add r2, r3, #0 asr r1, r0, #0x1f add r3, r6, #0 bl _ll_mul mov r3, #2 mov r6, #0 lsl r3, r3, #0xa add r3, r0, r3 adc r1, r6 lsl r0, r1, #0x14 lsr r1, r3, #0xc orr r1, r0 asr r0, r1, #0xc ldrh r2, [r5, #0x28] mov r1, #0xb6 add r0, r2, r0 strh r0, [r5, #0x28] ldrh r0, [r5, #0x28] strh r0, [r5, #0x28] bl _s32_div_f add r3, r0, #0 ldr r0, [r4] lsl r3, r3, #0x10 ldr r0, [r0] mov r1, #7 add r2, r6, #0 lsr r3, r3, #0x10 bl FUN_0201AF08 ldr r0, [r4] mov r1, #7 ldr r0, [r0] mov r2, #9 mov r3, #0x80 bl FUN_0201AF50 ldr r0, [r4] mov r1, #7 ldr r0, [r0] mov r2, #0xc mov r3, #0x68 bl FUN_0201AF50 ldrh r0, [r5, #0x28] strh r0, [r5, #0x2a] pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021DE8D0 thumb_func_start MOD16_021DE93C MOD16_021DE93C: ; 0x021DE93C push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 ldr r6, [r7, #0x1c] add r5, r0, #0 add r4, r1, #0 mov r1, #0xa ldr r0, [r6, #0xc] lsl r1, r1, #6 sub r2, r1, r0 ldr r0, _021DE9AC ; =0x000011C7 mul r0, r2 bl _s32_div_f ldr r1, [r6, #8] cmp r1, #1 bne _021DE95E neg r0, r0 _021DE95E: ldrh r1, [r5, #0x2a] add r0, r1, r0 strh r0, [r5, #0x28] ldrh r0, [r5, #0x28] mov r1, #0xb6 strh r0, [r5, #0x28] bl _s32_div_f add r3, r0, #0 ldr r0, [r4] lsl r3, r3, #0x10 ldr r0, [r0] mov r1, #7 mov r2, #0 lsr r3, r3, #0x10 bl FUN_0201AF08 ldr r0, [r4] mov r1, #7 ldr r0, [r0] mov r2, #9 mov r3, #0x80 bl FUN_0201AF50 ldr r0, [r4] mov r1, #7 ldr r0, [r0] mov r2, #0xc mov r3, #0x68 bl FUN_0201AF50 ldr r0, [r7, #0x1c] ldr r0, [r0, #0xc] cmp r0, #0 bne _021DE9A8 ldrh r0, [r5, #0x28] strh r0, [r5, #0x2a] _021DE9A8: pop {r3, r4, r5, r6, r7, pc} nop _021DE9AC: .word 0x000011C7 thumb_func_end MOD16_021DE93C thumb_func_start MOD16_021DE9B0 MOD16_021DE9B0: ; 0x021DE9B0 push {r3, r4} ldr r3, [r0, #0xc] cmp r3, #0 ble _021DE9C8 sub r3, r3, #2 cmp r3, #4 blt _021DE9C2 str r3, [r0, #0xc] b _021DE9D8 _021DE9C2: mov r3, #4 str r3, [r0, #0xc] b _021DE9D8 _021DE9C8: add r4, r3, #2 mov r3, #3 mvn r3, r3 cmp r4, r3 bgt _021DE9D6 str r4, [r0, #0xc] b _021DE9D8 _021DE9D6: str r3, [r0, #0xc] _021DE9D8: ldr r3, [r0, #0xc] str r3, [r0, #0x10] ldr r4, [r0, #0xc] cmp r4, #0x21 bgt _021DEA1A mov r3, #0x20 mvn r3, r3 cmp r4, r3 blt _021DEA1A cmp r1, #0 bne _021DEA08 mov r3, #0 str r3, [r0, #0x10] ldr r2, [r0, #0xc] cmp r2, #4 bgt _021DEA1A sub r1, r3, #4 cmp r2, r1 blt _021DEA1A ldr r1, _021DEA20 ; =0x000004CD str r3, [r0, #0xc] str r1, [r0, #0x1c] pop {r3, r4} bx lr _021DEA08: cmp r2, #1 bne _021DEA14 str r3, [r0, #0x10] str r3, [r0, #0xc] pop {r3, r4} bx lr _021DEA14: mov r1, #0x21 str r1, [r0, #0x10] str r1, [r0, #0xc] _021DEA1A: pop {r3, r4} bx lr nop _021DEA20: .word 0x000004CD thumb_func_end MOD16_021DE9B0 thumb_func_start MOD16_021DEA24 MOD16_021DEA24: ; 0x021DEA24 push {r3, r4, lr} sub sp, #4 ldr r4, [sp, #0x10] str r4, [sp] bl MOD16_021D7C70 add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021DEA24 thumb_func_start MOD16_021DEA34 MOD16_021DEA34: ; 0x021DEA34 ldr r2, [r0, #0x1c] ldr r1, [r2, #0x2c] cmp r1, #0 beq _021DEA42 mov r1, #2 str r1, [r0, #8] bx lr _021DEA42: ldr r1, [r2, #0x34] cmp r1, #0 beq _021DEA4E mov r1, #2 str r1, [r0] bx lr _021DEA4E: ldr r1, [r2, #0x30] cmp r1, #0 beq _021DEA58 mov r1, #2 str r1, [r0, #4] _021DEA58: bx lr .align 2, 0 thumb_func_end MOD16_021DEA34 thumb_func_start MOD16_021DEA5C MOD16_021DEA5C: ; 0x021DEA5C push {r3, lr} ldr r0, [r0, #0xc] cmp r0, #0 beq _021DEA7E bge _021DEA6A mov r2, #1 b _021DEA6E _021DEA6A: mov r2, #0 mvn r2, r2 _021DEA6E: add r0, r1, #0 add r1, r2, #0 bl MOD16_021D9EA8 cmp r0, #0 bne _021DEA7E mov r0, #0 pop {r3, pc} _021DEA7E: mov r0, #1 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021DEA5C thumb_func_start MOD16_021DEA84 MOD16_021DEA84: ; 0x021DEA84 push {r3, lr} ldr r0, [r0, #0x10] cmp r0, #0 beq _021DEAA6 bge _021DEA92 mov r2, #1 b _021DEA96 _021DEA92: mov r2, #0 mvn r2, r2 _021DEA96: add r0, r1, #0 add r1, r2, #0 bl MOD16_021D9E70 cmp r0, #0 bne _021DEAA6 mov r0, #0 pop {r3, pc} _021DEAA6: mov r0, #1 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021DEA84 thumb_func_start MOD16_021DEAAC MOD16_021DEAAC: ; 0x021DEAAC mov r2, #0 str r2, [r0, #0x10] str r2, [r0, #0xc] ldr r0, [r1, #0x1c] str r2, [r0, #8] bx lr thumb_func_end MOD16_021DEAAC thumb_func_start MOD16_021DEAB8 MOD16_021DEAB8: ; 0x021DEAB8 push {r3, r4, r5, lr} add r4, r0, #0 ldr r0, [r4, #0x1c] add r5, r1, #0 bl MOD16_021DC0E4 cmp r0, #0 beq _021DEAF8 ldr r0, [r4, #0x1c] add r1, r5, #0 ldr r0, [r0, #4] bl MOD16_021D9D28 ldr r1, [r4, #0x20] mov r2, #1 ldr r0, [r1] mov r3, #2 orr r0, r2 str r0, [r1] ldr r1, [r4, #0x1c] mov r0, #0 str r0, [r1, #0xc] ldr r1, [r4, #0x1c] str r3, [r1, #0x20] ldr r1, [r4, #0x1c] str r2, [r1, #0x10] ldr r1, [r4, #0x1c] str r0, [r1, #0x14] ldr r1, [r4, #0x1c] str r0, [r1, #8] ldr r1, [r4, #0x1c] str r0, [r1, #0x1c] _021DEAF8: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DEAB8 thumb_func_start MOD16_021DEAFC MOD16_021DEAFC: ; 0x021DEAFC cmp r1, #0 bge _021DEB02 neg r1, r1 _021DEB02: cmp r1, #0x40 bge _021DEB14 add r2, r0, #0 ldr r1, _021DEB24 ; =0x000004CD sub r2, #0x29 cmp r2, r1 blt _021DEB22 sub r0, #0x29 bx lr _021DEB14: ldr r1, _021DEB28 ; =0x00000333 add r2, r0, r1 mov r1, #1 lsl r1, r1, #0xc cmp r2, r1 bgt _021DEB22 add r0, r2, #0 _021DEB22: bx lr .align 2, 0 _021DEB24: .word 0x000004CD _021DEB28: .word 0x00000333 thumb_func_end MOD16_021DEAFC thumb_func_start MOD16_021DEB2C MOD16_021DEB2C: ; 0x021DEB2C push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021DEC64 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021DECA0 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021DECC8 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021DED44 str r0, [r5, #0x24] ldr r0, _021DEB74 ; =MOD16_021DED48 str r0, [r5, #8] ldr r0, _021DEB78 ; =MOD16_021DED80 str r0, [r5, #0xc] ldr r0, _021DEB7C ; =MOD16_021DEEA4 str r0, [r5, #0x10] ldr r0, _021DEB80 ; =MOD16_021DEEB8 str r0, [r5, #0x14] ldr r0, _021DEB84 ; =MOD16_021DEF34 str r0, [r5, #0x18] ldr r0, _021DEB88 ; =MOD16_021DEF70 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DEB74: .word MOD16_021DED48 _021DEB78: .word MOD16_021DED80 _021DEB7C: .word MOD16_021DEEA4 _021DEB80: .word MOD16_021DEEB8 _021DEB84: .word MOD16_021DEF34 _021DEB88: .word MOD16_021DEF70 thumb_func_end MOD16_021DEB2C thumb_func_start MOD16_021DEB8C MOD16_021DEB8C: ; 0x021DEB8C push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021DED04 ldr r0, [r4, #4] bl MOD16_021DED18 ldr r0, [r4, #0x20] bl MOD16_021DED2C pop {r4, pc} thumb_func_end MOD16_021DEB8C thumb_func_start MOD16_021DEBA4 MOD16_021DEBA4: ; 0x021DEBA4 push {r3, r4, r5, lr} add r5, r1, #0 ldr r4, [r0] cmp r5, #4 blt _021DEBB2 bl ErrorHandling _021DEBB2: str r5, [r4, #0xc] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DEBA4 thumb_func_start MOD16_021DEBB8 MOD16_021DEBB8: ; 0x021DEBB8 ldr r0, [r0] ldr r0, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD16_021DEBB8 thumb_func_start MOD16_021DEBC0 MOD16_021DEBC0: ; 0x021DEBC0 push {r3, r4, r5, lr} add r5, r1, #0 ldr r4, [r0] cmp r5, #6 blt _021DEBCE bl ErrorHandling _021DEBCE: str r5, [r4, #0x10] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DEBC0 thumb_func_start MOD16_021DEBD4 MOD16_021DEBD4: ; 0x021DEBD4 ldr r0, [r0] ldr r0, [r0, #0x10] bx lr .align 2, 0 thumb_func_end MOD16_021DEBD4 thumb_func_start MOD16_021DEBDC MOD16_021DEBDC: ; 0x021DEBDC push {r3, r4, r5, lr} add r5, r1, #0 ldr r4, [r0] cmp r5, #0xa blt _021DEBEA bl ErrorHandling _021DEBEA: str r5, [r4, #0x14] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DEBDC thumb_func_start MOD16_021DEBF0 MOD16_021DEBF0: ; 0x021DEBF0 ldr r0, [r0] ldr r0, [r0, #0x14] bx lr .align 2, 0 thumb_func_end MOD16_021DEBF0 thumb_func_start MOD16_021DEBF8 MOD16_021DEBF8: ; 0x021DEBF8 push {r4, r5, r6, lr} add r5, r1, #0 add r6, r2, #0 ldr r4, [r0] cmp r5, #0x12 blt _021DEC08 bl ErrorHandling _021DEC08: cmp r6, #0 bne _021DEC10 str r5, [r4, #0x18] pop {r4, r5, r6, pc} _021DEC10: str r5, [r4, #0x1c] pop {r4, r5, r6, pc} thumb_func_end MOD16_021DEBF8 thumb_func_start MOD16_021DEC14 MOD16_021DEC14: ; 0x021DEC14 ldr r0, [r0] cmp r1, #0 bne _021DEC1E ldr r0, [r0, #0x18] bx lr _021DEC1E: ldr r0, [r0, #0x1c] bx lr .align 2, 0 thumb_func_end MOD16_021DEC14 thumb_func_start MOD16_021DEC24 MOD16_021DEC24: ; 0x021DEC24 push {r3, r4, r5, lr} add r5, r1, #0 ldr r4, [r0] cmp r5, #0xf blt _021DEC32 bl ErrorHandling _021DEC32: str r5, [r4, #0x20] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DEC24 thumb_func_start MOD16_021DEC38 MOD16_021DEC38: ; 0x021DEC38 ldr r0, [r0] ldr r0, [r0, #0x20] bx lr .align 2, 0 thumb_func_end MOD16_021DEC38 thumb_func_start MOD16_021DEC40 MOD16_021DEC40: ; 0x021DEC40 ldr r2, [r0] mov r0, #1 str r0, [r2, #0x24] str r1, [r2, #0x28] bx lr .align 2, 0 thumb_func_end MOD16_021DEC40 thumb_func_start MOD16_021DEC4C MOD16_021DEC4C: ; 0x021DEC4C ldr r0, [r0] ldr r0, [r0, #0x28] bx lr .align 2, 0 thumb_func_end MOD16_021DEC4C thumb_func_start MOD16_021DEC54 MOD16_021DEC54: ; 0x021DEC54 ldr r0, [r0] ldr r0, [r0, #0x30] bx lr .align 2, 0 thumb_func_end MOD16_021DEC54 thumb_func_start MOD16_021DEC5C MOD16_021DEC5C: ; 0x021DEC5C ldr r0, [r0] ldr r0, [r0, #0x34] bx lr .align 2, 0 thumb_func_end MOD16_021DEC5C thumb_func_start MOD16_021DEC64 MOD16_021DEC64: ; 0x021DEC64 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x38 bl FUN_02016998 add r4, r0, #0 bne _021DEC76 bl ErrorHandling _021DEC76: add r0, r4, #0 mov r1, #0 mov r2, #0x38 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #0 bl MOD16_021D7B5C ldr r0, [r0] str r0, [r4, #8] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DEC64 thumb_func_start MOD16_021DECA0 MOD16_021DECA0: ; 0x021DECA0 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021DECB2 bl ErrorHandling _021DECB2: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DECA0 thumb_func_start MOD16_021DECC8 MOD16_021DECC8: ; 0x021DECC8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 bl MOD16_021DED44 add r7, r0, #0 mov r1, #0x14 mul r7, r1 add r0, r5, #0 add r1, r7, #0 bl FUN_02016998 add r4, r0, #0 bne _021DECE8 bl ErrorHandling _021DECE8: add r0, r4, #0 mov r1, #0 add r2, r7, #0 bl Call_FillMemWithValue add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 mov r3, #2 bl MOD16_021DAE0C add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DECC8 thumb_func_start MOD16_021DED04 MOD16_021DED04: ; 0x021DED04 push {r4, lr} add r4, r0, #0 bne _021DED0E bl ErrorHandling _021DED0E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DED04 thumb_func_start MOD16_021DED18 MOD16_021DED18: ; 0x021DED18 push {r4, lr} add r4, r0, #0 bne _021DED22 bl ErrorHandling _021DED22: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DED18 thumb_func_start MOD16_021DED2C MOD16_021DED2C: ; 0x021DED2C push {r4, lr} add r4, r0, #0 bne _021DED36 bl ErrorHandling _021DED36: add r0, r4, #0 bl MOD16_021DAC7C add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_end MOD16_021DED2C thumb_func_start MOD16_021DED44 MOD16_021DED44: ; 0x021DED44 mov r0, #1 bx lr thumb_func_end MOD16_021DED44 thumb_func_start MOD16_021DED48 MOD16_021DED48: ; 0x021DED48 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] add r4, r1, #0 mov r1, #4 bl FUN_02016998 add r6, r0, #0 bne _021DED5E bl ErrorHandling _021DED5E: mov r0, #0 strb r0, [r6] strb r0, [r6, #1] strb r0, [r6, #2] strb r0, [r6, #3] str r6, [r5, #8] str r0, [r4, #0xc] str r0, [r4, #0x10] str r0, [r4, #0x14] str r0, [r4, #0x18] str r0, [r4, #0x1c] str r0, [r4, #0x20] str r0, [r4, #0x24] str r0, [r4, #0x28] str r0, [r4, #0x30] mov r0, #1 pop {r4, r5, r6, pc} thumb_func_end MOD16_021DED48 thumb_func_start MOD16_021DED80 MOD16_021DED80: ; 0x021DED80 push {r4, r5, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5, #0xc] add r4, r1, #0 cmp r0, #1 bne _021DED94 add sp, #0x14 mov r0, #1 pop {r4, r5, pc} _021DED94: ldr r0, [r5, #0x10] cmp r0, #1 bne _021DEDA0 add sp, #0x14 mov r0, #0 pop {r4, r5, pc} _021DEDA0: ldr r0, [r5] cmp r0, #4 bhi _021DEE96 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DEDB2: ; jump table .short _021DEDBC - _021DEDB2 - 2 ; case 0 .short _021DEDF2 - _021DEDB2 - 2 ; case 1 .short _021DEE10 - _021DEDB2 - 2 ; case 2 .short _021DEE20 - _021DEDB2 - 2 ; case 3 .short _021DEE84 - _021DEDB2 - 2 ; case 4 _021DEDBC: ldr r0, [r4, #0x2c] cmp r0, #0 beq _021DEDC6 mov r0, #0 str r0, [r4, #0x2c] _021DEDC6: ldr r0, [r4, #0x24] cmp r0, #1 bne _021DEE9A ldr r0, [r4, #0x28] cmp r0, #0 bne _021DEDE2 ldr r2, [r4] mov r0, #2 ldr r1, [r2] orr r0, r1 str r0, [r2] mov r0, #4 str r0, [r4, #0x30] b _021DEE9A _021DEDE2: mov r0, #1 str r0, [r4, #0x30] mov r0, #4 str r0, [r4, #0x34] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DEE9A _021DEDF2: ldr r0, [r4, #0x34] sub r0, r0, #1 str r0, [r4, #0x34] bpl _021DEE9A ldr r0, [r5] add r0, r0, #1 str r0, [r5] mov r0, #2 str r0, [r4, #0x30] mov r0, #0x20 str r0, [r4, #0x34] ldr r0, _021DEEA0 ; =0x000005FF bl FUN_020054C8 b _021DEE9A _021DEE10: ldr r0, [r4, #0x34] sub r0, r0, #1 str r0, [r4, #0x34] bpl _021DEE9A ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DEE9A _021DEE20: ldr r0, [r4, #4] bl MOD16_021D9D04 ldr r1, [r4, #0x1c] str r1, [sp] ldr r1, [r4, #0x20] str r1, [sp, #4] str r0, [sp, #8] ldr r0, [r5, #4] str r0, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] ldr r0, [r4, #4] ldr r1, [r4, #0x10] ldr r2, [r4, #0x14] ldr r3, [r4, #0x18] bl MOD16_021D9A90 cmp r0, #1 bne _021DEE6A ldr r2, [r4] mov r0, #2 ldr r1, [r2] orr r0, r1 str r0, [r2] ldr r0, [r4, #4] mov r1, #0 bl MOD16_021D9E3C mov r0, #0x5d ldr r1, [r4, #4] mov r2, #1 lsl r0, r0, #6 str r2, [r1, r0] ldr r0, [r4, #8] str r2, [r0, #0x18] b _021DEE9A _021DEE6A: mov r0, #0 str r0, [r4, #0x28] str r0, [r4, #0x24] mov r0, #1 str r0, [r4, #0x2c] mov r0, #3 str r0, [r4, #0x30] mov r0, #4 str r0, [r4, #0x34] ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DEE9A _021DEE84: ldr r0, [r4, #0x34] sub r0, r0, #1 str r0, [r4, #0x34] bpl _021DEE9A mov r0, #0 str r0, [r4, #0x30] str r0, [r4, #0x34] str r0, [r5] b _021DEE9A _021DEE96: bl ErrorHandling _021DEE9A: mov r0, #0 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 _021DEEA0: .word 0x000005FF thumb_func_end MOD16_021DED80 thumb_func_start MOD16_021DEEA4 MOD16_021DEEA4: ; 0x021DEEA4 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DEEA4 thumb_func_start MOD16_021DEEB8 MOD16_021DEEB8: ; 0x021DEEB8 push {r3, r4, r5, lr} add r4, r1, #0 ldr r1, [r4] add r5, r0, #0 ldr r3, [r3, #8] ldr r0, [r4, #8] cmp r1, #3 bhi _021DEF2E add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DEED4: ; jump table .short _021DEEDC - _021DEED4 - 2 ; case 0 .short _021DEEF6 - _021DEED4 - 2 ; case 1 .short _021DEF18 - _021DEED4 - 2 ; case 2 .short _021DEF2A - _021DEED4 - 2 ; case 3 _021DEEDC: ldr r0, [r4, #4] mov r1, #0x64 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x64 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEF2E _021DEEF6: ldr r1, [r4, #4] str r1, [sp] add r1, r5, #0 bl MOD16_021DEFF8 mov r1, #0 mov r0, #1 add r2, r1, #0 str r0, [sp] sub r2, #0x10 mov r3, #0x3f bl FUN_0200A208 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEF2E _021DEF18: mov r0, #1 bl FUN_0200A344 cmp r0, #0 beq _021DEF2E ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEF2E _021DEF2A: mov r0, #1 pop {r3, r4, r5, pc} _021DEF2E: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DEEB8 thumb_func_start MOD16_021DEF34 MOD16_021DEF34: ; 0x021DEF34 push {r4, lr} add r3, r1, #0 ldr r1, [r2, #0x30] add r4, r0, #0 ldr r0, [r3, #8] cmp r1, #0 bne _021DEF4C ldr r3, [r3, #4] add r1, r4, #0 bl MOD16_021DF450 b _021DEF6A _021DEF4C: cmp r1, #1 beq _021DEF54 cmp r1, #3 bne _021DEF5E _021DEF54: ldr r3, [r3, #4] add r1, r4, #0 bl MOD16_021DF89C b _021DEF6A _021DEF5E: cmp r1, #4 beq _021DEF6A ldr r3, [r3, #4] add r1, r4, #0 bl MOD16_021DF90C _021DEF6A: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DEF34 thumb_func_start MOD16_021DEF70 MOD16_021DEF70: ; 0x021DEF70 push {r3, r4, lr} sub sp, #4 add r4, r1, #0 ldr r1, [r4] add r3, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021DEFF2 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DEF8C: ; jump table .short _021DEF96 - _021DEF8C - 2 ; case 0 .short _021DEFBC - _021DEF8C - 2 ; case 1 .short _021DEFCE - _021DEF8C - 2 ; case 2 .short _021DEFDC - _021DEF8C - 2 ; case 3 .short _021DEFEC - _021DEF8C - 2 ; case 4 _021DEF96: ldr r0, [r2, #0x28] cmp r0, #0 bne _021DEFB6 mov r0, #1 str r0, [sp] mov r0, #6 add r1, r0, #0 sub r1, #0x16 mov r2, #0 mov r3, #0x3f bl FUN_0200A208 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEFF2 _021DEFB6: mov r0, #2 str r0, [r4] b _021DEFF2 _021DEFBC: mov r0, #1 bl FUN_0200A344 cmp r0, #0 beq _021DEFF2 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEFF2 _021DEFCE: add r1, r3, #0 bl MOD16_021DF0BC ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEFF2 _021DEFDC: bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DEFF2 _021DEFEC: add sp, #4 mov r0, #1 pop {r3, r4, pc} _021DEFF2: mov r0, #0 add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021DEF70 thumb_func_start MOD16_021DEFF8 MOD16_021DEFF8: ; 0x021DEFF8 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r7, r0, #0 ldr r0, [r5] mov r1, #2 ldr r0, [r0] add r4, r2, #0 ldr r6, [sp, #0x18] bl FUN_02018744 ldr r0, [r5] mov r1, #1 ldr r0, [r0] bl FUN_02018744 ldr r0, [r5] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r5] mov r1, #7 add r0, r0, #4 bl FUN_0201AB24 add r0, r5, #0 bl MOD16_021DF17C add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021DF108 ldr r0, [r4, #4] bl MOD16_021D9D04 str r0, [sp] add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021DF140 add r0, r7, #0 add r1, r5, #0 add r2, r6, #0 bl MOD16_021DF198 add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021DF288 ldr r1, [r4, #0xc] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF350 ldr r1, [r4, #0xc] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF514 ldr r1, [r4, #0x10] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF5D0 ldr r1, [r4, #0x14] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF630 ldr r1, [r4, #0x18] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF7B0 ldr r1, [r4, #0x1c] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF7BC ldr r1, [r4, #0x20] add r0, r7, #0 bl MOD16_021DF7C8 mov r0, #1 add r1, r0, #0 bl FUN_020178BC mov r0, #2 mov r1, #0 bl FUN_020178BC pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DEFF8 thumb_func_start MOD16_021DF0BC MOD16_021DF0BC: ; 0x021DF0BC push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021DF33C add r0, r5, #0 add r1, r4, #0 bl MOD16_021DF244 add r0, r5, #0 add r1, r4, #0 bl MOD16_021DF168 ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_02018744 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_0201AB24 mov r0, #1 mov r1, #0 bl FUN_020178BC mov r0, #2 mov r1, #1 bl FUN_020178BC pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DF0BC thumb_func_start MOD16_021DF108 MOD16_021DF108: ; 0x021DF108 push {r3, r4, r5, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] add r4, r2, #0 str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x1c mov r3, #3 bl MOD16_021D8CB4 mov r0, #0x20 str r0, [sp] str r4, [sp, #4] mov r2, #0 ldr r0, [r5] mov r1, #5 add r3, r2, #0 bl MOD16_021D8CFC add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DF108 thumb_func_start MOD16_021DF140 MOD16_021DF140: ; 0x021DF140 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 ldr r0, [sp, #0x10] cmp r0, #1 bne _021DF150 mov r2, #0x2a b _021DF152 _021DF150: mov r2, #0x28 _021DF152: str r3, [sp] ldr r0, [r1] add r3, r4, #0 add r1, r2, #0 mov r2, #1 add r3, #0x60 bl MOD16_021D8D48 str r0, [r4, #0x5c] add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021DF140 thumb_func_start MOD16_021DF168 MOD16_021DF168: ; 0x021DF168 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x5c] bl FUN_02016A18 mov r0, #0 str r0, [r4, #0x5c] str r0, [r4, #0x60] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DF168 thumb_func_start MOD16_021DF17C MOD16_021DF17C: ; 0x021DF17C push {r4, lr} ldr r0, [r0] bl MOD16_021D8700 add r4, r0, #0 mov r1, #6 mov r2, #1 bl FUN_02007558 add r0, r4, #0 bl FUN_02007EEC pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DF17C thumb_func_start MOD16_021DF198 MOD16_021DF198: ; 0x021DF198 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021DF234 ; =0x00003AE9 mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x51 bl FUN_020091E0 str r0, [r5, #0x24] bl FUN_02009B04 ldr r0, [r5, #0x24] bl FUN_02009474 ldr r0, _021DF238 ; =0x00003A9B add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #0xc str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #3 mov r3, #0 bl FUN_02009298 str r0, [r5, #0x28] bl FUN_02009D68 ldr r0, [r5, #0x28] bl FUN_02009474 ldr r0, _021DF23C ; =0x00003AE7 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x4f mov r3, #1 bl FUN_02009358 str r0, [r5, #0x2c] ldr r0, _021DF240 ; =0x00003AE8 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x50 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x30] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DF234: .word 0x00003AE9 _021DF238: .word 0x00003A9B _021DF23C: .word 0x00003AE7 _021DF240: .word 0x00003AE8 thumb_func_end MOD16_021DF198 thumb_func_start MOD16_021DF244 MOD16_021DF244: ; 0x021DF244 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x24] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0x28] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x24] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x28] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x2c] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x30] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DF244 thumb_func_start MOD16_021DF288 MOD16_021DF288: ; 0x021DF288 push {r4, r5, r6, lr} sub sp, #0x70 add r6, r3, #0 ldr r4, [r1] ldr r3, _021DF338 ; =0x00003AE8 add r5, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #2 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r2, #0x4d sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x1f str r0, [sp, #0x40] mov r0, #1 str r0, [sp, #0x44] lsl r0, r0, #0x13 str r0, [sp, #0x34] mov r0, #0x29 lsl r0, r0, #0xe str r0, [sp, #0x38] add r0, sp, #0x2c str r6, [sp, #0x48] bl FUN_0201FF84 mov r1, #3 str r0, [r5, #0x20] bl FUN_02020130 mov r0, #2 lsl r0, r0, #0x12 str r0, [sp, #0x34] mov r0, #6 lsl r0, r0, #0x10 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5, #0x58] mov r1, #0x11 bl FUN_02020130 ldr r0, [r5, #0x58] mov r1, #0 bl FUN_020200A0 ldr r0, [r5, #0x58] mov r1, #1 bl FUN_020200EC ldr r0, [r5, #0x58] mov r1, #0 bl FUN_02020238 add sp, #0x70 pop {r4, r5, r6, pc} .align 2, 0 _021DF338: .word 0x00003AE8 thumb_func_end MOD16_021DF288 thumb_func_start MOD16_021DF33C MOD16_021DF33C: ; 0x021DF33C push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x20] bl FUN_0201FFC8 ldr r0, [r4, #0x58] bl FUN_0201FFC8 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DF33C thumb_func_start MOD16_021DF350 MOD16_021DF350: ; 0x021DF350 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r5, [r0] mov r0, #0xd0 str r0, [sp] mov r0, #0x20 add r6, r1, #0 add r7, r2, #0 str r0, [sp, #4] add r0, r5, #4 mov r1, #0 mov r2, #0x18 mov r3, #8 bl FUN_020196F4 cmp r6, #3 bhi _021DF394 add r0, r6, r6 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DF37E: ; jump table .short _021DF386 - _021DF37E - 2 ; case 0 .short _021DF38A - _021DF37E - 2 ; case 1 .short _021DF38E - _021DF37E - 2 ; case 2 .short _021DF392 - _021DF37E - 2 ; case 3 _021DF386: mov r4, #0x5a b _021DF394 _021DF38A: mov r4, #0x57 b _021DF394 _021DF38E: mov r4, #0x58 b _021DF394 _021DF392: mov r4, #0x59 _021DF394: add r0, r4, #0 add r1, r7, #0 bl MOD16_021D8270 add r6, r0, #0 mov r0, #0 add r1, r6, #0 add r2, r0, #0 bl FUN_02002F08 mov r1, #0xd0 sub r0, r1, r0 lsr r4, r0, #1 add r0, r6, #0 add r4, #0x18 bl FUN_02002F90 lsl r1, r0, #4 mov r0, #0x20 sub r0, r0, r1 lsr r0, r0, #1 add r0, #8 str r0, [sp] mov r1, #0 ldr r0, _021DF3E0 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r6, #0 add r3, r4, #0 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r6, #0 bl FUN_02021A20 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DF3E0: .word 0x00020100 thumb_func_end MOD16_021DF350 thumb_func_start MOD16_021DF3E4 MOD16_021DF3E4: ; 0x021DF3E4 push {r4, r5, r6, lr} sub sp, #0x10 ldr r4, [r0] mov r0, #0xd0 str r0, [sp] mov r0, #0x20 add r5, r1, #0 str r0, [sp, #4] add r0, r4, #4 mov r1, #0 mov r2, #0x18 mov r3, #8 bl FUN_020196F4 mov r0, #0x5d add r1, r5, #0 bl MOD16_021D8270 add r6, r0, #0 mov r0, #0 add r1, r6, #0 add r2, r0, #0 bl FUN_02002F08 mov r1, #0xd0 sub r0, r1, r0 lsr r5, r0, #1 add r0, r6, #0 add r5, #0x18 bl FUN_02002F90 lsl r1, r0, #4 mov r0, #0x20 sub r0, r0, r1 lsr r0, r0, #1 add r0, #8 str r0, [sp] mov r1, #0 ldr r0, _021DF44C ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r4, #4 add r2, r6, #0 add r3, r5, #0 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r6, #0 bl FUN_02021A20 add sp, #0x10 pop {r4, r5, r6, pc} .align 2, 0 _021DF44C: .word 0x00020100 thumb_func_end MOD16_021DF3E4 thumb_func_start MOD16_021DF450 MOD16_021DF450: ; 0x021DF450 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r2, #0 add r6, r1, #0 ldr r1, [r4, #0x2c] ldr r0, [r5, #0x18] add r7, r3, #0 cmp r1, r0 beq _021DF474 str r1, [r5, #0x18] cmp r1, #1 bne _021DF474 mov r0, #0x40 str r0, [r5, #0x1c] add r0, r6, #0 add r1, r7, #0 bl MOD16_021DF3E4 _021DF474: ldr r0, [r5, #0x1c] cmp r0, #0 ble _021DF480 sub r0, r0, #1 str r0, [r5, #0x1c] b _021DF492 _021DF480: bne _021DF492 ldr r1, [r4, #0xc] add r0, r6, #0 add r2, r7, #0 bl MOD16_021DF350 ldr r0, [r5, #0x1c] sub r0, r0, #1 str r0, [r5, #0x1c] _021DF492: ldr r1, [r4, #0xc] ldr r0, [r5] cmp r0, r1 beq _021DF4B0 add r0, r6, #0 add r2, r7, #0 bl MOD16_021DF514 ldr r1, [r4, #0xc] add r0, r6, #0 add r2, r7, #0 bl MOD16_021DF350 ldr r0, [r4, #0xc] str r0, [r5] _021DF4B0: ldr r1, [r4, #0x10] ldr r0, [r5, #4] cmp r0, r1 beq _021DF4C4 add r0, r6, #0 add r2, r7, #0 bl MOD16_021DF5D0 ldr r0, [r4, #0x10] str r0, [r5, #4] _021DF4C4: ldr r1, [r4, #0x14] ldr r0, [r5, #8] cmp r0, r1 beq _021DF4D8 add r0, r6, #0 add r2, r7, #0 bl MOD16_021DF630 ldr r0, [r4, #0x14] str r0, [r5, #8] _021DF4D8: ldr r1, [r4, #0x18] ldr r0, [r5, #0xc] cmp r0, r1 beq _021DF4EC add r0, r6, #0 add r2, r7, #0 bl MOD16_021DF7B0 ldr r0, [r4, #0x18] str r0, [r5, #0xc] _021DF4EC: ldr r1, [r4, #0x1c] ldr r0, [r5, #0x10] cmp r0, r1 beq _021DF500 add r0, r6, #0 add r2, r7, #0 bl MOD16_021DF7BC ldr r0, [r4, #0x1c] str r0, [r5, #0x10] _021DF500: ldr r1, [r4, #0x20] ldr r0, [r5, #0x14] cmp r0, r1 beq _021DF512 add r0, r5, #0 bl MOD16_021DF7C8 ldr r0, [r4, #0x20] str r0, [r5, #0x14] _021DF512: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DF450 thumb_func_start MOD16_021DF514 MOD16_021DF514: ; 0x021DF514 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r4, r0, #0 str r2, [sp] add r7, r1, #0 str r2, [sp, #0xc] ldr r0, [r4] mov r1, #0x2b mov r2, #1 add r3, sp, #0x14 bl MOD16_021D8D48 ldr r2, [sp, #0x14] mov r3, #0 str r3, [sp] str r0, [sp, #0x10] ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 ldr r0, [sp, #0x10] bl FUN_02016A18 cmp r7, #3 bhi _021DF584 add r0, r7, r7 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DF566: ; jump table .short _021DF56E - _021DF566 - 2 ; case 0 .short _021DF574 - _021DF566 - 2 ; case 1 .short _021DF57A - _021DF566 - 2 ; case 2 .short _021DF580 - _021DF566 - 2 ; case 3 _021DF56E: mov r5, #6 mov r6, #0x2c b _021DF584 _021DF574: mov r5, #9 mov r6, #0x2d b _021DF584 _021DF57A: mov r5, #0xc mov r6, #0x2e b _021DF584 _021DF580: mov r5, #0x11 mov r6, #0x2f _021DF584: ldr r0, [sp, #0xc] add r1, r6, #0 str r0, [sp] ldr r0, [r4] mov r2, #1 add r3, sp, #0x14 bl MOD16_021D8D48 add r6, r0, #0 lsl r0, r5, #0x18 ldr r2, [sp, #0x14] lsr r0, r0, #0x18 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021DF514 thumb_func_start MOD16_021DF5D0 MOD16_021DF5D0: ; 0x021DF5D0 push {r4, r5, r6, lr} sub sp, #0x10 ldr r4, [r0] mov r0, #0x50 str r0, [sp] mov r0, #0x10 add r5, r1, #0 add r6, r2, #0 str r0, [sp, #4] add r0, r4, #4 mov r1, #0 mov r2, #0x58 mov r3, #0x34 bl FUN_020196F4 add r5, #0x51 add r0, r5, #0 add r1, r6, #0 bl MOD16_021D8270 add r5, r0, #0 mov r0, #0 add r1, r5, #0 add r2, r0, #0 mov r3, #0x50 bl FUN_02002F40 add r3, r0, #0 mov r0, #0x34 str r0, [sp] mov r1, #0 ldr r0, _021DF62C ; =0x00040300 str r1, [sp, #4] str r0, [sp, #8] add r3, #0x58 add r0, r4, #4 add r2, r5, #0 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r5, #0 bl FUN_02021A20 add sp, #0x10 pop {r4, r5, r6, pc} nop _021DF62C: .word 0x00040300 thumb_func_end MOD16_021DF5D0 thumb_func_start MOD16_021DF630 MOD16_021DF630: ; 0x021DF630 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r5, [r0] mov r0, #0x50 str r0, [sp] mov r0, #0x10 add r6, r1, #0 add r7, r2, #0 str r0, [sp, #4] add r0, r5, #4 mov r1, #0 mov r2, #0x58 mov r3, #0x4d bl FUN_020196F4 cmp r6, #9 bhi _021DF698 add r0, r6, r6 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DF65E: ; jump table .short _021DF672 - _021DF65E - 2 ; case 0 .short _021DF676 - _021DF65E - 2 ; case 1 .short _021DF67A - _021DF65E - 2 ; case 2 .short _021DF67E - _021DF65E - 2 ; case 3 .short _021DF682 - _021DF65E - 2 ; case 4 .short _021DF686 - _021DF65E - 2 ; case 5 .short _021DF68A - _021DF65E - 2 ; case 6 .short _021DF68E - _021DF65E - 2 ; case 7 .short _021DF692 - _021DF65E - 2 ; case 8 .short _021DF696 - _021DF65E - 2 ; case 9 _021DF672: mov r4, #0x73 b _021DF698 _021DF676: mov r4, #0x36 b _021DF698 _021DF67A: mov r4, #0x37 b _021DF698 _021DF67E: mov r4, #0x38 b _021DF698 _021DF682: mov r4, #0x39 b _021DF698 _021DF686: mov r4, #0x3a b _021DF698 _021DF68A: mov r4, #0x3b b _021DF698 _021DF68E: mov r4, #0x3c b _021DF698 _021DF692: mov r4, #0x3d b _021DF698 _021DF696: mov r4, #0x3e _021DF698: add r0, r4, #0 add r1, r7, #0 bl MOD16_021D8270 add r4, r0, #0 mov r0, #0 add r1, r4, #0 add r2, r0, #0 mov r3, #0x50 bl FUN_02002F40 add r3, r0, #0 mov r0, #0x4d str r0, [sp] mov r1, #0 ldr r0, _021DF6D4 ; =0x00040300 str r1, [sp, #4] str r0, [sp, #8] add r3, #0x58 add r0, r5, #4 add r2, r4, #0 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021DF6D4: .word 0x00040300 thumb_func_end MOD16_021DF630 thumb_func_start MOD16_021DF6D8 MOD16_021DF6D8: ; 0x021DF6D8 push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r5, [r0] add r7, r3, #0 mov r0, #0x50 str r0, [sp] mov r0, #0x10 lsl r3, r7, #0x10 add r6, r1, #0 str r2, [sp, #0x10] str r0, [sp, #4] add r0, r5, #4 mov r1, #0 mov r2, #0x58 lsr r3, r3, #0x10 bl FUN_020196F4 cmp r6, #0x11 bhi _021DF774 add r0, r6, r6 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DF70A: ; jump table .short _021DF72E - _021DF70A - 2 ; case 0 .short _021DF732 - _021DF70A - 2 ; case 1 .short _021DF736 - _021DF70A - 2 ; case 2 .short _021DF73A - _021DF70A - 2 ; case 3 .short _021DF73E - _021DF70A - 2 ; case 4 .short _021DF742 - _021DF70A - 2 ; case 5 .short _021DF746 - _021DF70A - 2 ; case 6 .short _021DF74A - _021DF70A - 2 ; case 7 .short _021DF74E - _021DF70A - 2 ; case 8 .short _021DF752 - _021DF70A - 2 ; case 9 .short _021DF756 - _021DF70A - 2 ; case 10 .short _021DF75A - _021DF70A - 2 ; case 11 .short _021DF75E - _021DF70A - 2 ; case 12 .short _021DF762 - _021DF70A - 2 ; case 13 .short _021DF766 - _021DF70A - 2 ; case 14 .short _021DF76A - _021DF70A - 2 ; case 15 .short _021DF76E - _021DF70A - 2 ; case 16 .short _021DF772 - _021DF70A - 2 ; case 17 _021DF72E: mov r4, #0x74 b _021DF774 _021DF732: mov r4, #0x40 b _021DF774 _021DF736: mov r4, #0x46 b _021DF774 _021DF73A: mov r4, #0x49 b _021DF774 _021DF73E: mov r4, #0x47 b _021DF774 _021DF742: mov r4, #0x48 b _021DF774 _021DF746: mov r4, #0x4c b _021DF774 _021DF74A: mov r4, #0x4b b _021DF774 _021DF74E: mov r4, #0x4d b _021DF774 _021DF752: mov r4, #0x50 b _021DF774 _021DF756: mov r4, #0x41 b _021DF774 _021DF75A: mov r4, #0x42 b _021DF774 _021DF75E: mov r4, #0x44 b _021DF774 _021DF762: mov r4, #0x43 b _021DF774 _021DF766: mov r4, #0x4a b _021DF774 _021DF76A: mov r4, #0x45 b _021DF774 _021DF76E: mov r4, #0x4e b _021DF774 _021DF772: mov r4, #0x4f _021DF774: ldr r1, [sp, #0x10] add r0, r4, #0 bl MOD16_021D8270 add r4, r0, #0 mov r0, #0 add r1, r4, #0 add r2, r0, #0 mov r3, #0x50 bl FUN_02002F40 add r3, r0, #0 str r7, [sp] mov r1, #0 ldr r0, _021DF7AC ; =0x00040300 str r1, [sp, #4] str r0, [sp, #8] add r3, #0x58 add r0, r5, #4 add r2, r4, #0 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021DF7AC: .word 0x00040300 thumb_func_end MOD16_021DF6D8 thumb_func_start MOD16_021DF7B0 MOD16_021DF7B0: ; 0x021DF7B0 push {r3, lr} mov r3, #0x66 bl MOD16_021DF6D8 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021DF7B0 thumb_func_start MOD16_021DF7BC MOD16_021DF7BC: ; 0x021DF7BC push {r3, lr} mov r3, #0x78 bl MOD16_021DF6D8 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021DF7BC thumb_func_start MOD16_021DF7C8 MOD16_021DF7C8: ; 0x021DF7C8 push {r3, r4, r5, lr} add r4, r0, #0 add r5, r1, #0 ldr r0, [r4, #0x20] bne _021DF7DA mov r1, #0 bl FUN_020200A0 pop {r3, r4, r5, pc} _021DF7DA: mov r1, #1 bl FUN_020200A0 cmp r5, #0xe bhi _021DF898 add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DF7F0: ; jump table .short _021DF898 - _021DF7F0 - 2 ; case 0 .short _021DF80E - _021DF7F0 - 2 ; case 1 .short _021DF818 - _021DF7F0 - 2 ; case 2 .short _021DF822 - _021DF7F0 - 2 ; case 3 .short _021DF82C - _021DF7F0 - 2 ; case 4 .short _021DF836 - _021DF7F0 - 2 ; case 5 .short _021DF840 - _021DF7F0 - 2 ; case 6 .short _021DF84A - _021DF7F0 - 2 ; case 7 .short _021DF854 - _021DF7F0 - 2 ; case 8 .short _021DF85E - _021DF7F0 - 2 ; case 9 .short _021DF868 - _021DF7F0 - 2 ; case 10 .short _021DF872 - _021DF7F0 - 2 ; case 11 .short _021DF87C - _021DF7F0 - 2 ; case 12 .short _021DF886 - _021DF7F0 - 2 ; case 13 .short _021DF890 - _021DF7F0 - 2 ; case 14 _021DF80E: ldr r0, [r4, #0x20] mov r1, #3 bl FUN_02020130 pop {r3, r4, r5, pc} _021DF818: ldr r0, [r4, #0x20] mov r1, #4 bl FUN_02020130 pop {r3, r4, r5, pc} _021DF822: ldr r0, [r4, #0x20] mov r1, #5 bl FUN_02020130 pop {r3, r4, r5, pc} _021DF82C: ldr r0, [r4, #0x20] mov r1, #6 bl FUN_02020130 pop {r3, r4, r5, pc} _021DF836: ldr r0, [r4, #0x20] mov r1, #7 bl FUN_02020130 pop {r3, r4, r5, pc} _021DF840: ldr r0, [r4, #0x20] mov r1, #8 bl FUN_02020130 pop {r3, r4, r5, pc} _021DF84A: ldr r0, [r4, #0x20] mov r1, #9 bl FUN_02020130 pop {r3, r4, r5, pc} _021DF854: ldr r0, [r4, #0x20] mov r1, #0xa bl FUN_02020130 pop {r3, r4, r5, pc} _021DF85E: ldr r0, [r4, #0x20] mov r1, #0xb bl FUN_02020130 pop {r3, r4, r5, pc} _021DF868: ldr r0, [r4, #0x20] mov r1, #0xc bl FUN_02020130 pop {r3, r4, r5, pc} _021DF872: ldr r0, [r4, #0x20] mov r1, #0xd bl FUN_02020130 pop {r3, r4, r5, pc} _021DF87C: ldr r0, [r4, #0x20] mov r1, #0xe bl FUN_02020130 pop {r3, r4, r5, pc} _021DF886: ldr r0, [r4, #0x20] mov r1, #0xf bl FUN_02020130 pop {r3, r4, r5, pc} _021DF890: ldr r0, [r4, #0x20] mov r1, #0x10 bl FUN_02020130 _021DF898: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DF7C8 thumb_func_start MOD16_021DF89C MOD16_021DF89C: ; 0x021DF89C push {r4, r5, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r2, #0x34] add r4, r1, #0 cmp r0, #4 bne _021DF900 ldr r0, [r2, #0x30] cmp r0, #1 bne _021DF8D4 mov r1, #0 str r1, [sp] mov r0, #0xc str r0, [sp, #4] str r1, [sp, #8] mov r0, #0x14 str r0, [sp, #0xc] mov r0, #4 str r0, [sp, #0x10] ldr r1, [r4] add r0, r5, #0 ldr r1, [r1] ldr r3, [r5, #0x60] add r0, #0x34 mov r2, #2 bl MOD16_021D7CA4 b _021DF900 _021DF8D4: add r0, r4, #0 add r1, r5, #0 add r2, r3, #0 bl MOD16_021DF9C0 mov r0, #0xc str r0, [sp] mov r1, #0 str r1, [sp, #4] mov r0, #0x14 str r0, [sp, #8] str r1, [sp, #0xc] mov r0, #4 str r0, [sp, #0x10] ldr r1, [r4] add r0, r5, #0 ldr r1, [r1] ldr r3, [r5, #0x60] add r0, #0x34 mov r2, #2 bl MOD16_021D7CA4 _021DF900: add r5, #0x34 add r0, r5, #0 bl MOD16_021D7CC8 add sp, #0x14 pop {r4, r5, pc} thumb_func_end MOD16_021DF89C thumb_func_start MOD16_021DF90C MOD16_021DF90C: ; 0x021DF90C push {r3, r4, r5, r6, r7, lr} add r6, r2, #0 add r5, r0, #0 ldr r0, [r6, #0x34] add r4, r1, #0 add r7, r3, #0 cmp r0, #0x20 bne _021DF92E ldr r0, [r5, #0x58] mov r1, #1 bl FUN_020200A0 add r0, r4, #0 add r1, r7, #0 bl MOD16_021DF970 b _021DF94C _021DF92E: cmp r0, #0 bne _021DF94C ldr r0, [r5, #0x58] mov r1, #0 bl FUN_020200A0 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r4] add r0, r0, #4 bl FUN_02019220 _021DF94C: ldr r2, [r6, #0x34] mov r1, #4 sub r2, r1, r2 ldr r1, _021DF96C ; =0x00007FFF add r3, r2, #0 mul r3, r1 asr r1, r3, #1 lsr r1, r1, #0x1e add r1, r3, r1 lsl r1, r1, #0xe ldr r0, [r5, #0x58] lsr r1, r1, #0x10 bl FUN_02020088 pop {r3, r4, r5, r6, r7, pc} nop _021DF96C: .word 0x00007FFF thumb_func_end MOD16_021DF90C thumb_func_start MOD16_021DF970 MOD16_021DF970: ; 0x021DF970 push {r3, r4, r5, lr} sub sp, #0x10 ldr r5, [r0] add r4, r1, #0 add r0, r5, #4 mov r1, #0 bl FUN_02019620 mov r0, #0x5e add r1, r4, #0 bl MOD16_021D8270 add r4, r0, #0 mov r0, #0x80 str r0, [sp] mov r1, #0 ldr r0, _021DF9BC ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #4 add r2, r4, #0 mov r3, #0x60 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 mov r0, #1 mov r1, #0 bl FUN_020178BC mov r0, #2 mov r1, #1 bl FUN_020178BC add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _021DF9BC: .word 0x00020100 thumb_func_end MOD16_021DF970 thumb_func_start MOD16_021DF9C0 MOD16_021DF9C0: ; 0x021DF9C0 push {r4, r5, r6, lr} add r5, r0, #0 mov r0, #1 add r4, r1, #0 add r1, r0, #0 add r6, r2, #0 bl FUN_020178BC mov r0, #2 mov r1, #0 bl FUN_020178BC ldr r0, [r5] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r1, [r4] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF514 ldr r1, [r4] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF350 ldr r1, [r4, #4] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF5D0 ldr r1, [r4, #8] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF630 ldr r1, [r4, #0xc] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF7B0 ldr r1, [r4, #0x10] add r0, r5, #0 add r2, r6, #0 bl MOD16_021DF7BC ldr r1, [r4, #0x14] add r0, r4, #0 bl MOD16_021DF7C8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021DF9C0 thumb_func_start MOD16_021DFA28 MOD16_021DFA28: ; 0x021DFA28 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021DFAA0 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021DFAE8 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021DFB20 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021DFB50 str r0, [r5, #0x24] ldr r0, _021DFA70 ; =MOD16_021DFB54 str r0, [r5, #8] ldr r0, _021DFA74 ; =MOD16_021DFBB8 str r0, [r5, #0xc] ldr r0, _021DFA78 ; =MOD16_021DFCEC str r0, [r5, #0x10] ldr r0, _021DFA7C ; =MOD16_021DFD0C str r0, [r5, #0x14] ldr r0, _021DFA80 ; =MOD16_021DFD9C str r0, [r5, #0x18] ldr r0, _021DFA84 ; =MOD16_021DFECC str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021DFA70: .word MOD16_021DFB54 _021DFA74: .word MOD16_021DFBB8 _021DFA78: .word MOD16_021DFCEC _021DFA7C: .word MOD16_021DFD0C _021DFA80: .word MOD16_021DFD9C _021DFA84: .word MOD16_021DFECC thumb_func_end MOD16_021DFA28 thumb_func_start MOD16_021DFA88 MOD16_021DFA88: ; 0x021DFA88 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021DFB24 ldr r0, [r4, #4] bl MOD16_021DFB38 ldr r0, [r4, #0x20] bl MOD16_021DFB4C pop {r4, pc} thumb_func_end MOD16_021DFA88 thumb_func_start MOD16_021DFAA0 MOD16_021DFAA0: ; 0x021DFAA0 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x10 bl FUN_02016998 add r4, r0, #0 bne _021DFAB2 bl ErrorHandling _021DFAB2: add r2, r4, #0 mov r1, #0x10 mov r0, #0 _021DFAB8: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021DFAB8 add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #1 bl MOD16_021D7B5C str r0, [r4, #8] add r0, r5, #0 mov r1, #1 bl MOD16_021D7B7C str r0, [r4, #0xc] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DFAA0 thumb_func_start MOD16_021DFAE8 MOD16_021DFAE8: ; 0x021DFAE8 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0xc bl FUN_02016998 add r4, r0, #0 bne _021DFAFA bl ErrorHandling _021DFAFA: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DFAE8 thumb_func_start MOD16_021DFB20 MOD16_021DFB20: ; 0x021DFB20 mov r0, #0 bx lr thumb_func_end MOD16_021DFB20 thumb_func_start MOD16_021DFB24 MOD16_021DFB24: ; 0x021DFB24 push {r4, lr} add r4, r0, #0 bne _021DFB2E bl ErrorHandling _021DFB2E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DFB24 thumb_func_start MOD16_021DFB38 MOD16_021DFB38: ; 0x021DFB38 push {r4, lr} add r4, r0, #0 bne _021DFB42 bl ErrorHandling _021DFB42: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021DFB38 thumb_func_start MOD16_021DFB4C MOD16_021DFB4C: ; 0x021DFB4C bx lr .align 2, 0 thumb_func_end MOD16_021DFB4C thumb_func_start MOD16_021DFB50 MOD16_021DFB50: ; 0x021DFB50 mov r0, #0 bx lr thumb_func_end MOD16_021DFB50 thumb_func_start MOD16_021DFB54 MOD16_021DFB54: ; 0x021DFB54 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] add r6, r1, #0 mov r1, #0x9c bl FUN_02016998 add r4, r0, #0 bne _021DFB6A bl ErrorHandling _021DFB6A: add r0, r4, #0 mov r1, #0 mov r2, #0x9c bl Call_FillMemWithValue add r0, r4, #0 ldr r1, _021DFBB4 ; =0x0000FFFF str r4, [r5, #8] add r0, #0x80 str r1, [r0] add r0, r4, #0 add r1, r6, #0 bl MOD16_021E2864 ldr r2, [r5, #4] add r0, r4, #0 add r1, r6, #0 bl MOD16_021E0048 ldr r1, [r5, #4] add r0, r4, #0 bl MOD16_021E18E8 add r0, r4, #0 add r1, r6, #0 bl MOD16_021E1930 mov r1, #0 mov r0, #4 _021DFBA4: add r1, r1, #1 str r0, [r4, #0x2c] add r4, r4, #4 cmp r1, #6 blt _021DFBA4 mov r0, #1 pop {r4, r5, r6, pc} nop _021DFBB4: .word 0x0000FFFF thumb_func_end MOD16_021DFB54 thumb_func_start MOD16_021DFBB8 MOD16_021DFBB8: ; 0x021DFBB8 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r6, r1, #0 add r5, r0, #0 ldr r0, [r6, #0xc] ldr r4, [r5, #8] ldr r7, [r0, #4] ldr r0, [r5, #0xc] cmp r0, #1 bne _021DFBD2 add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DFBD2: ldr r0, [r5, #0x10] cmp r0, #1 bne _021DFBDE add sp, #8 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021DFBDE: ldr r0, [r6, #8] bl MOD16_021DEC54 cmp r0, #0 beq _021DFBEE add sp, #8 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021DFBEE: ldr r0, [r6, #8] bl MOD16_021DEBB8 str r0, [sp, #4] ldr r0, [r5] cmp r0, #4 bhi _021DFCE4 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DFC08: ; jump table .short _021DFC12 - _021DFC08 - 2 ; case 0 .short _021DFC6E - _021DFC08 - 2 ; case 1 .short _021DFC7C - _021DFC08 - 2 ; case 2 .short _021DFCD2 - _021DFC08 - 2 ; case 3 .short _021DFCE0 - _021DFC08 - 2 ; case 4 _021DFC12: ldr r1, [r4, #0x24] ldr r0, [sp, #4] cmp r1, r0 bne _021DFC22 ldr r1, [r4, #0x28] ldr r0, [r4, #0x20] cmp r1, r0 beq _021DFC4A _021DFC22: add r0, r4, #0 mov r1, #0 add r0, #0x98 str r1, [r0] mov r0, #2 str r0, [r7, #4] add r0, r4, #0 add r0, #0x98 str r0, [r7, #8] add r0, r4, #0 bl MOD16_021E0214 ldr r1, [sp, #4] add r0, r4, #0 bl MOD16_021E0224 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DFCE4 _021DFC4A: add r0, r4, #0 add r1, r6, #0 bl MOD16_021E0104 ldr r0, [r6, #4] bl MOD16_021D9FB8 cmp r0, #1 bne _021DFC64 add r0, r4, #0 add r1, r6, #0 bl MOD16_021E1804 _021DFC64: add r0, r4, #0 add r1, r6, #0 bl MOD16_021E2870 b _021DFCE4 _021DFC6E: add r4, #0x98 ldr r1, [r4] cmp r1, #0 beq _021DFCE4 add r0, r0, #1 str r0, [r5] b _021DFCE4 _021DFC7C: ldr r0, [r4, #0x24] add r1, r6, #0 str r0, [sp] ldr r0, [sp, #4] str r0, [r4, #0x24] ldr r0, [r4, #0x20] str r0, [r4, #0x28] ldr r2, [r5, #4] add r0, r4, #0 bl MOD16_021E00A0 ldr r1, [r5, #4] add r0, r4, #0 bl MOD16_021E1970 add r0, r4, #0 add r1, r6, #0 bl MOD16_021E2864 ldr r1, [r4, #0x24] ldr r0, [sp] cmp r0, r1 beq _021DFCB2 add r0, r4, #0 add r1, r6, #0 bl MOD16_021E1930 _021DFCB2: add r0, r4, #0 mov r1, #0 add r0, #0x98 str r1, [r0] mov r0, #1 str r0, [r7, #4] add r0, r4, #0 add r0, #0x98 str r0, [r7, #8] add r0, r4, #0 bl MOD16_021E02C4 ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _021DFCE4 _021DFCD2: add r4, #0x98 ldr r1, [r4] cmp r1, #0 beq _021DFCE4 add r0, r0, #1 str r0, [r5] b _021DFCE4 _021DFCE0: mov r0, #0 str r0, [r5] _021DFCE4: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DFBB8 thumb_func_start MOD16_021DFCEC MOD16_021DFCEC: ; 0x021DFCEC push {r3, r4, r5, lr} add r4, r0, #0 ldr r5, [r4, #8] add r0, r5, #0 bl MOD16_021E0090 add r0, r5, #0 bl MOD16_021E18D0 add r0, r5, #0 bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DFCEC thumb_func_start MOD16_021DFD0C MOD16_021DFD0C: ; 0x021DFD0C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 ldr r1, [r4] add r6, r0, #0 add r7, r2, #0 ldr r5, [r3, #8] ldr r0, [r4, #8] cmp r1, #3 bhi _021DFD96 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021DFD2A: ; jump table .short _021DFD32 - _021DFD2A - 2 ; case 0 .short _021DFD50 - _021DFD2A - 2 ; case 1 .short _021DFD80 - _021DFD2A - 2 ; case 2 .short _021DFD92 - _021DFD2A - 2 ; case 3 _021DFD32: mov r1, #0x4e ldr r0, [r4, #4] lsl r1, r1, #2 bl FUN_02016998 mov r2, #0x4e str r0, [r4, #8] mov r1, #0 lsl r2, r2, #2 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFD96 _021DFD50: ldr r1, [r4, #4] add r3, r5, #0 str r1, [sp] add r1, r6, #0 bl MOD16_021DFF74 mov r1, #0 mov r0, #2 add r2, r1, #0 str r0, [sp] mov r0, #1 sub r2, #0x10 mov r3, #0x3f bl FUN_0200A208 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 bl MOD16_021E1988 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFD96 _021DFD80: mov r0, #2 bl FUN_0200A344 cmp r0, #0 beq _021DFD96 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFD96 _021DFD92: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021DFD96: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021DFD0C thumb_func_start MOD16_021DFD9C MOD16_021DFD9C: ; 0x021DFD9C push {r4, r5, r6, r7, lr} sub sp, #0xc add r7, r0, #0 add r0, r2, #0 add r5, r1, #0 ldr r0, [r0, #8] str r2, [sp, #4] ldr r6, [r3, #8] ldr r4, [r5, #8] bl MOD16_021DEC54 cmp r0, #0 beq _021DFDC2 ldr r2, [sp, #4] add r0, r4, #0 add r1, r7, #0 bl MOD16_021E2E74 b _021DFE4C _021DFDC2: add r0, r4, #0 add r1, r7, #0 bl MOD16_021E2CC8 mov r0, #0x41 lsl r0, r0, #2 ldr r2, [r6, #0x24] ldr r3, [r4, r0] cmp r3, r2 bne _021DFDE0 add r0, r0, #4 ldr r1, [r4, r0] ldr r0, [r6, #0x28] cmp r1, r0 beq _021DFE42 _021DFDE0: mov r0, #0x41 lsl r0, r0, #2 str r2, [r4, r0] ldr r1, [r6, #0x28] add r0, r0, #4 str r1, [r4, r0] cmp r3, #3 bne _021DFDFE add r0, r4, #0 add r1, r7, #0 bl MOD16_021E1BD0 add r0, r4, #0 bl MOD16_021E22A8 _021DFDFE: ldr r2, [r5, #4] add r0, r4, #0 add r1, r7, #0 bl MOD16_021E1CA4 ldr r2, [r5, #4] add r0, r4, #0 add r1, r7, #0 bl MOD16_021E2344 mov r0, #0x41 lsl r0, r0, #2 ldr r0, [r4, r0] cmp r0, #3 bne _021DFE30 ldr r2, [r5, #4] add r0, r4, #0 add r1, r7, #0 bl MOD16_021E1B3C ldr r2, [r5, #4] add r0, r4, #0 add r1, r7, #0 bl MOD16_021E20EC _021DFE30: mov r3, #0x41 lsl r3, r3, #2 ldr r2, [r4, r3] add r3, r3, #4 ldr r3, [r4, r3] add r0, r4, #0 mov r1, #1 bl MOD16_021E2DBC _021DFE42: ldr r2, [sp, #4] add r0, r7, #0 add r1, r6, #0 bl MOD16_021E19A4 _021DFE4C: mov r7, #0 str r6, [sp, #8] add r5, r4, #0 _021DFE52: ldr r1, [sp, #8] ldr r0, [r5] ldr r1, [r1, #0x2c] bl MOD16_021D7B98 ldr r1, [r5, #0x18] cmp r1, #0 beq _021DFE7A cmp r7, #5 bne _021DFE6A mov r3, #1 b _021DFE6C _021DFE6A: mov r3, #3 _021DFE6C: mov r0, #5 str r0, [sp] mov r2, #5 ldr r0, [r5] mvn r2, r2 bl MOD16_021D7C70 _021DFE7A: ldr r0, [sp, #8] add r7, r7, #1 add r0, r0, #4 add r5, r5, #4 str r0, [sp, #8] cmp r7, #6 blt _021DFE52 mov r5, #0 mov r7, #6 _021DFE8C: ldr r0, [r4, #0x30] cmp r0, #0 beq _021DFE98 ldr r1, [r6, #0x44] bl MOD16_021D7B98 _021DFE98: ldr r1, [r4, #0x6c] cmp r1, #0 beq _021DFEAC str r7, [sp] mov r2, #5 ldr r0, [r4, #0x30] mvn r2, r2 mov r3, #0xb bl MOD16_021D7C70 _021DFEAC: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] cmp r0, #0 beq _021DFEBC ldr r1, [r6, #0x44] bl MOD16_021D7B98 _021DFEBC: add r5, r5, #1 add r4, r4, #4 add r6, r6, #4 cmp r5, #0xf blt _021DFE8C mov r0, #0 add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021DFD9C thumb_func_start MOD16_021DFECC MOD16_021DFECC: ; 0x021DFECC push {r3, r4, r5, r6, lr} sub sp, #4 add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] ldr r5, [r4, #8] cmp r0, #4 bhi _021DFF6E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021DFEE8: ; jump table .short _021DFEF2 - _021DFEE8 - 2 ; case 0 .short _021DFF1C - _021DFEE8 - 2 ; case 1 .short _021DFF2E - _021DFEE8 - 2 ; case 2 .short _021DFF56 - _021DFEE8 - 2 ; case 3 .short _021DFF68 - _021DFEE8 - 2 ; case 4 _021DFEF2: ldr r0, [r2, #8] bl MOD16_021DEC4C cmp r0, #1 bne _021DFF02 mov r0, #2 str r0, [r4] b _021DFF6E _021DFF02: mov r0, #2 str r0, [sp] mov r0, #6 add r1, r0, #0 sub r1, #0x16 mov r2, #0 mov r3, #0x3f bl FUN_0200A208 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFF6E _021DFF1C: mov r0, #2 bl FUN_0200A344 cmp r0, #0 beq _021DFF6E ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFF6E _021DFF2E: add r0, r5, #0 add r1, r6, #0 bl MOD16_021DFFB8 mov r0, #0x41 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, #3 bne _021DFF4E add r0, r5, #0 add r1, r6, #0 bl MOD16_021E1BD0 add r0, r5, #0 bl MOD16_021E22A8 _021DFF4E: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFF6E _021DFF56: add r0, r5, #0 bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021DFF6E _021DFF68: add sp, #4 mov r0, #1 pop {r3, r4, r5, r6, pc} _021DFF6E: mov r0, #0 add sp, #4 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021DFECC thumb_func_start MOD16_021DFF74 MOD16_021DFF74: ; 0x021DFF74 push {r4, r5, r6, lr} ldr r4, [sp, #0x10] add r6, r1, #0 add r5, r0, #0 add r1, r2, #0 add r0, r6, #0 add r2, r4, #0 bl MOD16_021DFFE0 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E1A14 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E1C10 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E22D0 mov r3, #0x41 lsl r3, r3, #2 ldr r2, [r5, r3] add r3, r3, #4 ldr r3, [r5, r3] add r0, r5, #0 mov r1, #1 bl MOD16_021E2DBC pop {r4, r5, r6, pc} thumb_func_end MOD16_021DFF74 thumb_func_start MOD16_021DFFB8 MOD16_021DFFB8: ; 0x021DFFB8 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E2334 add r0, r5, #0 bl MOD16_021E1C94 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E1AE4 mov r0, #0x79 ldr r1, [r4] lsl r0, r0, #2 add r0, r1, r0 mov r1, #0 bl MOD16_021D8B14 pop {r3, r4, r5, pc} thumb_func_end MOD16_021DFFB8 thumb_func_start MOD16_021DFFE0 MOD16_021DFFE0: ; 0x021DFFE0 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] add r5, r2, #0 str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x1d mov r3, #6 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x4b mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #6 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021DFFE0 thumb_func_start MOD16_021E0048 MOD16_021E0048: ; 0x021E0048 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 bl MOD16_021E0158 ldr r0, [r5, #0x28] add r1, r4, #0 str r0, [sp] ldr r3, [r5, #0x24] add r0, r5, #0 add r2, r6, #0 bl MOD16_021E00C4 add r0, r5, #0 bl MOD16_021E0070 add sp, #4 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021E0048 thumb_func_start MOD16_021E0070 MOD16_021E0070: ; 0x021E0070 mov r2, #0 add r3, r0, #0 mov r1, #3 _021E0076: add r2, r2, #1 str r1, [r3, #0x2c] add r3, r3, #4 cmp r2, #6 blt _021E0076 mov r2, #0 mov r1, #3 _021E0084: add r2, r2, #1 str r1, [r0, #0x44] add r0, r0, #4 cmp r2, #0xf blt _021E0084 bx lr thumb_func_end MOD16_021E0070 thumb_func_start MOD16_021E0090 MOD16_021E0090: ; 0x021E0090 push {r4, lr} add r4, r0, #0 bl MOD16_021E026C add r0, r4, #0 bl MOD16_021E02AC pop {r4, pc} thumb_func_end MOD16_021E0090 thumb_func_start MOD16_021E00A0 MOD16_021E00A0: ; 0x021E00A0 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 bl MOD16_021E02AC ldr r0, [r5, #0x28] add r1, r4, #0 str r0, [sp] ldr r3, [r5, #0x24] add r0, r5, #0 add r2, r6, #0 bl MOD16_021E00C4 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E00A0 thumb_func_start MOD16_021E00C4 MOD16_021E00C4: ; 0x021E00C4 push {r3, lr} cmp r3, #3 bhi _021E0100 add r3, r3, r3 add r3, pc ldrh r3, [r3, #6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _021E00D6: ; jump table .short _021E00DE - _021E00D6 - 2 ; case 0 .short _021E00E4 - _021E00D6 - 2 ; case 1 .short _021E00EA - _021E00D6 - 2 ; case 2 .short _021E00FC - _021E00D6 - 2 ; case 3 _021E00DE: bl MOD16_021E02D4 pop {r3, pc} _021E00E4: bl MOD16_021E0400 pop {r3, pc} _021E00EA: ldr r3, [sp, #8] cmp r3, #0 bne _021E00F6 bl MOD16_021E0558 pop {r3, pc} _021E00F6: bl MOD16_021E06F8 pop {r3, pc} _021E00FC: bl MOD16_021E08A0 _021E0100: pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E00C4 thumb_func_start MOD16_021E0104 MOD16_021E0104: ; 0x021E0104 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E01FC ldr r2, [r5, #0x24] ldr r3, [r5, #0x28] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E011C pop {r3, r4, r5, pc} thumb_func_end MOD16_021E0104 thumb_func_start MOD16_021E011C MOD16_021E011C: ; 0x021E011C push {r3, lr} cmp r2, #3 bhi _021E0156 add r2, r2, r2 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _021E012E: ; jump table .short _021E0136 - _021E012E - 2 ; case 0 .short _021E013C - _021E012E - 2 ; case 1 .short _021E0142 - _021E012E - 2 ; case 2 .short _021E0152 - _021E012E - 2 ; case 3 _021E0136: bl MOD16_021E0364 pop {r3, pc} _021E013C: bl MOD16_021E0490 pop {r3, pc} _021E0142: cmp r3, #0 bne _021E014C bl MOD16_021E05FC pop {r3, pc} _021E014C: bl MOD16_021E07B0 pop {r3, pc} _021E0152: bl MOD16_021E0930 _021E0156: pop {r3, pc} thumb_func_end MOD16_021E011C thumb_func_start MOD16_021E0158 MOD16_021E0158: ; 0x021E0158 push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #0x18 bl FUN_02016998 str r0, [r5, #4] mov r0, #1 lsl r0, r0, #8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x20 add r0, r0, #4 mov r2, #0x40 mov r3, #0xc0 bl MOD16_021D7C98 mov r0, #0xec str r0, [sp] ldr r0, [r5, #4] mov r1, #0 mov r2, #0x20 mov r3, #0xbc bl MOD16_021D7C98 mov r0, #1 lsl r0, r0, #8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x40 add r0, #8 mov r2, #0x60 mov r3, #0xc0 bl MOD16_021D7C98 mov r0, #1 lsl r0, r0, #8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x60 add r0, #0xc mov r2, #0x80 mov r3, #0xc0 bl MOD16_021D7C98 mov r0, #1 lsl r0, r0, #8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x80 add r0, #0x10 mov r2, #0xa0 mov r3, #0xc0 bl MOD16_021D7C98 mov r0, #0xfc str r0, [sp] ldr r0, [r5, #4] mov r1, #0xa0 add r0, #0x14 mov r2, #0xc0 mov r3, #0xac bl MOD16_021D7C98 str r4, [r5, #0x10] str r5, [r5, #0x14] str r6, [sp] add r3, r5, #0 ldr r0, [r5, #4] ldr r2, _021E01F8 ; =MOD16_021E0284 mov r1, #6 add r3, #0x10 bl FUN_020220C4 str r0, [r5] add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _021E01F8: .word MOD16_021E0284 thumb_func_end MOD16_021E0158 thumb_func_start MOD16_021E01FC MOD16_021E01FC: ; 0x021E01FC push {r4, lr} add r4, r0, #0 bl MOD16_021E0214 ldr r0, [r4] bl FUN_02022144 ldr r1, [r4, #0x24] add r0, r4, #0 bl MOD16_021E0224 pop {r4, pc} thumb_func_end MOD16_021E01FC thumb_func_start MOD16_021E0214 MOD16_021E0214: ; 0x021E0214 mov r2, #0 mov r1, #3 _021E0218: add r2, r2, #1 str r1, [r0, #0x2c] add r0, r0, #4 cmp r2, #6 blt _021E0218 bx lr thumb_func_end MOD16_021E0214 thumb_func_start MOD16_021E0224 MOD16_021E0224: ; 0x021E0224 cmp r1, #3 bhi _021E026A add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E0234: ; jump table .short _021E023C - _021E0234 - 2 ; case 0 .short _021E0248 - _021E0234 - 2 ; case 1 .short _021E0254 - _021E0234 - 2 ; case 2 .short _021E0260 - _021E0234 - 2 ; case 3 _021E023C: ldr r1, [r0, #0x30] cmp r1, #2 beq _021E026A mov r1, #1 str r1, [r0, #0x30] bx lr _021E0248: ldr r1, [r0, #0x34] cmp r1, #2 beq _021E026A mov r1, #1 str r1, [r0, #0x34] bx lr _021E0254: ldr r1, [r0, #0x38] cmp r1, #2 beq _021E026A mov r1, #1 str r1, [r0, #0x38] bx lr _021E0260: ldr r1, [r0, #0x3c] cmp r1, #2 beq _021E026A mov r1, #1 str r1, [r0, #0x3c] _021E026A: bx lr thumb_func_end MOD16_021E0224 thumb_func_start MOD16_021E026C MOD16_021E026C: ; 0x021E026C push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0202212C ldr r0, [r4, #4] bl FUN_02016A18 mov r0, #0 str r0, [r4, #4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E026C thumb_func_start MOD16_021E0284 MOD16_021E0284: ; 0x021E0284 ldr r2, [r2, #4] lsl r3, r0, #2 add r3, r2, r3 str r1, [r3, #0x2c] cmp r1, #2 bne _021E02A4 add r1, r2, #0 add r1, #0x80 str r0, [r1] add r0, r2, #0 add r0, #0x94 ldr r0, [r0] add r2, #0x94 add r0, r0, #1 str r0, [r2] bx lr _021E02A4: mov r0, #0 add r2, #0x94 str r0, [r2] bx lr thumb_func_end MOD16_021E0284 thumb_func_start MOD16_021E02AC MOD16_021E02AC: ; 0x021E02AC push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] bl FUN_0202212C ldr r0, [r4, #0xc] bl FUN_02016A18 mov r0, #0 str r0, [r4, #0xc] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E02AC thumb_func_start MOD16_021E02C4 MOD16_021E02C4: ; 0x021E02C4 mov r2, #0 mov r1, #3 _021E02C8: add r2, r2, #1 str r1, [r0, #0x44] add r0, r0, #4 cmp r2, #0xf blt _021E02C8 bx lr thumb_func_end MOD16_021E02C4 thumb_func_start MOD16_021E02D4 MOD16_021E02D4: ; 0x021E02D4 push {r4, r5, r6, r7, lr} sub sp, #0x1c str r0, [sp, #4] str r1, [sp, #8] add r0, r2, #0 mov r1, #0x18 str r2, [sp, #0xc] bl FUN_02016998 ldr r1, [sp, #4] str r0, [r1, #0xc] mov r0, #0 str r0, [sp, #0x14] mov r0, #0x30 ldr r6, [sp, #0x14] str r0, [sp, #0x10] _021E02F4: ldr r0, [sp, #0x10] ldr r7, [sp, #0x10] str r0, [sp, #0x18] add r0, #0x10 mov r4, #0 mov r5, #0x30 sub r7, #0x10 str r0, [sp, #0x18] _021E0304: add r0, r5, #0 add r0, #0x28 str r0, [sp] ldr r0, [sp, #4] add r3, r5, #0 ldr r1, [r0, #0xc] add r0, r4, r6 lsl r0, r0, #2 add r0, r1, r0 ldr r2, [sp, #0x18] add r1, r7, #0 sub r3, #0x28 bl MOD16_021D7C98 add r4, r4, #1 add r5, #0x50 cmp r4, #2 blt _021E0304 ldr r0, [sp, #0x10] add r6, r6, #2 add r0, #0x20 str r0, [sp, #0x10] ldr r0, [sp, #0x14] add r0, r0, #1 str r0, [sp, #0x14] cmp r0, #3 blt _021E02F4 ldr r1, [sp, #8] ldr r0, [sp, #4] ldr r3, [sp, #4] str r1, [r0, #0x10] str r0, [r0, #0x14] ldr r0, [sp, #0xc] ldr r2, _021E0360 ; =MOD16_021E03EC str r0, [sp] ldr r0, [sp, #4] mov r1, #6 ldr r0, [r0, #0xc] add r3, #0x10 bl FUN_020220C4 ldr r1, [sp, #4] str r0, [r1, #8] add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021E0360: .word MOD16_021E03EC thumb_func_end MOD16_021E02D4 thumb_func_start MOD16_021E0364 MOD16_021E0364: ; 0x021E0364 push {r3, r4, r5, lr} add r4, r0, #0 add r5, r1, #0 mov r1, #0 add r2, r4, #0 mov r0, #3 _021E0370: add r1, r1, #1 str r0, [r2, #0x44] add r2, r2, #4 cmp r1, #6 blt _021E0370 ldr r0, [r4, #8] bl FUN_02022144 ldr r0, [r5, #8] bl MOD16_021DEBD4 cmp r0, #5 bhi _021E03E8 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E0396: ; jump table .short _021E03A2 - _021E0396 - 2 ; case 0 .short _021E03AE - _021E0396 - 2 ; case 1 .short _021E03BA - _021E0396 - 2 ; case 2 .short _021E03C6 - _021E0396 - 2 ; case 3 .short _021E03D2 - _021E0396 - 2 ; case 4 .short _021E03DE - _021E0396 - 2 ; case 5 _021E03A2: ldr r0, [r4, #0x44] cmp r0, #2 beq _021E03E8 mov r0, #1 str r0, [r4, #0x44] pop {r3, r4, r5, pc} _021E03AE: ldr r0, [r4, #0x48] cmp r0, #2 beq _021E03E8 mov r0, #1 str r0, [r4, #0x48] pop {r3, r4, r5, pc} _021E03BA: ldr r0, [r4, #0x4c] cmp r0, #2 beq _021E03E8 mov r0, #1 str r0, [r4, #0x4c] pop {r3, r4, r5, pc} _021E03C6: ldr r0, [r4, #0x50] cmp r0, #2 beq _021E03E8 mov r0, #1 str r0, [r4, #0x50] pop {r3, r4, r5, pc} _021E03D2: ldr r0, [r4, #0x54] cmp r0, #2 beq _021E03E8 mov r0, #1 str r0, [r4, #0x54] pop {r3, r4, r5, pc} _021E03DE: ldr r0, [r4, #0x58] cmp r0, #2 beq _021E03E8 mov r0, #1 str r0, [r4, #0x58] _021E03E8: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E0364 thumb_func_start MOD16_021E03EC MOD16_021E03EC: ; 0x021E03EC ldr r3, [r2, #4] lsl r2, r0, #2 add r2, r3, r2 str r1, [r2, #0x44] cmp r1, #2 bne _021E03FC add r3, #0x84 str r0, [r3] _021E03FC: bx lr .align 2, 0 thumb_func_end MOD16_021E03EC thumb_func_start MOD16_021E0400 MOD16_021E0400: ; 0x021E0400 push {r4, r5, r6, r7, lr} sub sp, #0x1c str r0, [sp, #4] str r1, [sp, #8] add r0, r2, #0 mov r1, #0x28 str r2, [sp, #0xc] bl FUN_02016998 ldr r1, [sp, #4] str r0, [r1, #0xc] mov r0, #0 str r0, [sp, #0x14] mov r0, #0x10 ldr r6, [sp, #0x14] str r0, [sp, #0x10] _021E0420: ldr r0, [sp, #0x10] ldr r7, [sp, #0x10] str r0, [sp, #0x18] add r0, #0x10 mov r4, #0 mov r5, #0x30 sub r7, #0x10 str r0, [sp, #0x18] _021E0430: add r0, r5, #0 add r0, #0x28 str r0, [sp] ldr r0, [sp, #4] add r3, r5, #0 ldr r1, [r0, #0xc] add r0, r4, r6 lsl r0, r0, #2 add r0, r1, r0 ldr r2, [sp, #0x18] add r1, r7, #0 sub r3, #0x28 bl MOD16_021D7C98 add r4, r4, #1 add r5, #0x50 cmp r4, #2 blt _021E0430 ldr r0, [sp, #0x10] add r6, r6, #2 add r0, #0x20 str r0, [sp, #0x10] ldr r0, [sp, #0x14] add r0, r0, #1 str r0, [sp, #0x14] cmp r0, #5 blt _021E0420 ldr r1, [sp, #8] ldr r0, [sp, #4] ldr r3, [sp, #4] str r1, [r0, #0x10] str r0, [r0, #0x14] ldr r0, [sp, #0xc] ldr r2, _021E048C ; =MOD16_021E0544 str r0, [sp] ldr r0, [sp, #4] mov r1, #0xa ldr r0, [r0, #0xc] add r3, #0x10 bl FUN_020220C4 ldr r1, [sp, #4] str r0, [r1, #8] add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021E048C: .word MOD16_021E0544 thumb_func_end MOD16_021E0400 thumb_func_start MOD16_021E0490 MOD16_021E0490: ; 0x021E0490 push {r3, r4, r5, lr} add r4, r0, #0 add r5, r1, #0 mov r1, #0 add r2, r4, #0 mov r0, #3 _021E049C: add r1, r1, #1 str r0, [r2, #0x44] add r2, r2, #4 cmp r1, #0xa blt _021E049C ldr r0, [r4, #8] bl FUN_02022144 ldr r0, [r5, #8] bl MOD16_021DEBF0 cmp r0, #9 bhi _021E0540 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E04C2: ; jump table .short _021E0540 - _021E04C2 - 2 ; case 0 .short _021E04D6 - _021E04C2 - 2 ; case 1 .short _021E04E2 - _021E04C2 - 2 ; case 2 .short _021E04EE - _021E04C2 - 2 ; case 3 .short _021E04FA - _021E04C2 - 2 ; case 4 .short _021E0506 - _021E04C2 - 2 ; case 5 .short _021E0512 - _021E04C2 - 2 ; case 6 .short _021E051E - _021E04C2 - 2 ; case 7 .short _021E052A - _021E04C2 - 2 ; case 8 .short _021E0536 - _021E04C2 - 2 ; case 9 _021E04D6: ldr r0, [r4, #0x44] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x44] pop {r3, r4, r5, pc} _021E04E2: ldr r0, [r4, #0x48] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x48] pop {r3, r4, r5, pc} _021E04EE: ldr r0, [r4, #0x4c] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x4c] pop {r3, r4, r5, pc} _021E04FA: ldr r0, [r4, #0x50] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x50] pop {r3, r4, r5, pc} _021E0506: ldr r0, [r4, #0x54] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x54] pop {r3, r4, r5, pc} _021E0512: ldr r0, [r4, #0x58] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x58] pop {r3, r4, r5, pc} _021E051E: ldr r0, [r4, #0x5c] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x5c] pop {r3, r4, r5, pc} _021E052A: ldr r0, [r4, #0x60] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x60] pop {r3, r4, r5, pc} _021E0536: ldr r0, [r4, #0x64] cmp r0, #2 beq _021E0540 mov r0, #1 str r0, [r4, #0x64] _021E0540: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E0490 thumb_func_start MOD16_021E0544 MOD16_021E0544: ; 0x021E0544 ldr r3, [r2, #4] lsl r2, r0, #2 add r2, r3, r2 str r1, [r2, #0x44] cmp r1, #2 bne _021E0554 add r3, #0x84 str r0, [r3] _021E0554: bx lr .align 2, 0 thumb_func_end MOD16_021E0544 thumb_func_start MOD16_021E0558 MOD16_021E0558: ; 0x021E0558 push {r4, r5, r6, r7, lr} sub sp, #0x1c str r0, [sp, #4] str r1, [sp, #8] add r0, r2, #0 mov r1, #0x2c str r2, [sp, #0xc] bl FUN_02016998 ldr r1, [sp, #4] str r0, [r1, #0xc] mov r0, #0 str r0, [sp, #0x14] mov r0, #0x10 ldr r6, [sp, #0x14] str r0, [sp, #0x10] _021E0578: ldr r0, [sp, #0x10] ldr r7, [sp, #0x10] str r0, [sp, #0x18] add r0, #0x10 mov r4, #0 mov r5, #0x30 sub r7, #0x10 str r0, [sp, #0x18] _021E0588: add r0, r5, #0 add r0, #0x28 str r0, [sp] ldr r0, [sp, #4] add r3, r5, #0 ldr r1, [r0, #0xc] add r0, r4, r6 lsl r0, r0, #2 add r0, r1, r0 ldr r2, [sp, #0x18] add r1, r7, #0 sub r3, #0x28 bl MOD16_021D7C98 add r4, r4, #1 add r5, #0x50 cmp r4, #2 blt _021E0588 ldr r0, [sp, #0x10] add r6, r6, #2 add r0, #0x20 str r0, [sp, #0x10] ldr r0, [sp, #0x14] add r0, r0, #1 str r0, [sp, #0x14] cmp r0, #5 blt _021E0578 mov r0, #0x28 str r0, [sp] ldr r0, [sp, #4] mov r1, #0xa0 ldr r0, [r0, #0xc] mov r2, #0xc0 add r0, #0x28 mov r3, #8 bl MOD16_021D7C98 ldr r3, [sp, #4] ldr r1, [sp, #8] ldr r0, [sp, #4] ldr r2, _021E05F8 ; =MOD16_021E06CC str r1, [r0, #0x10] str r0, [r0, #0x14] ldr r0, [sp, #0xc] mov r1, #0xb str r0, [sp] ldr r0, [sp, #4] add r3, #0x10 ldr r0, [r0, #0xc] bl FUN_020220C4 ldr r1, [sp, #4] str r0, [r1, #8] add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021E05F8: .word MOD16_021E06CC thumb_func_end MOD16_021E0558 thumb_func_start MOD16_021E05FC MOD16_021E05FC: ; 0x021E05FC push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 mov r1, #0 add r2, r5, #0 mov r0, #3 _021E0608: add r1, r1, #1 str r0, [r2, #0x44] add r2, r2, #4 cmp r1, #0xb blt _021E0608 ldr r0, [r5, #8] bl FUN_02022144 ldr r0, [r4, #8] mov r1, #0 bl MOD16_021DEC14 add r1, r0, #0 add r0, r5, #0 bl MOD16_021E063C ldr r0, [r4, #8] mov r1, #1 bl MOD16_021DEC14 add r1, r0, #0 add r0, r5, #0 bl MOD16_021E063C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E05FC thumb_func_start MOD16_021E063C MOD16_021E063C: ; 0x021E063C cmp r1, #9 bhi _021E06CA add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E064C: ; jump table .short _021E06CA - _021E064C - 2 ; case 0 .short _021E0660 - _021E064C - 2 ; case 1 .short _021E066C - _021E064C - 2 ; case 2 .short _021E0678 - _021E064C - 2 ; case 3 .short _021E0684 - _021E064C - 2 ; case 4 .short _021E0690 - _021E064C - 2 ; case 5 .short _021E069C - _021E064C - 2 ; case 6 .short _021E06A8 - _021E064C - 2 ; case 7 .short _021E06B4 - _021E064C - 2 ; case 8 .short _021E06C0 - _021E064C - 2 ; case 9 _021E0660: ldr r1, [r0, #0x44] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x44] bx lr _021E066C: ldr r1, [r0, #0x48] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x48] bx lr _021E0678: ldr r1, [r0, #0x4c] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x4c] bx lr _021E0684: ldr r1, [r0, #0x50] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x50] bx lr _021E0690: ldr r1, [r0, #0x54] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x54] bx lr _021E069C: ldr r1, [r0, #0x58] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x58] bx lr _021E06A8: ldr r1, [r0, #0x5c] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x5c] bx lr _021E06B4: ldr r1, [r0, #0x60] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x60] bx lr _021E06C0: ldr r1, [r0, #0x64] cmp r1, #2 beq _021E06CA mov r1, #1 str r1, [r0, #0x64] _021E06CA: bx lr thumb_func_end MOD16_021E063C thumb_func_start MOD16_021E06CC MOD16_021E06CC: ; 0x021E06CC ldr r2, [r2, #4] lsl r3, r0, #2 add r3, r2, r3 str r1, [r3, #0x44] cmp r1, #2 bne _021E06F0 add r1, r2, #0 add r1, #0x90 ldr r1, [r1] cmp r1, #0 bne _021E06F6 add r1, r2, #0 add r1, #0x84 str r0, [r1] mov r0, #1 add r2, #0x90 str r0, [r2] bx lr _021E06F0: mov r0, #0 add r2, #0x90 str r0, [r2] _021E06F6: bx lr thumb_func_end MOD16_021E06CC thumb_func_start MOD16_021E06F8 MOD16_021E06F8: ; 0x021E06F8 push {r4, r5, r6, r7, lr} sub sp, #0x1c str r0, [sp, #4] str r1, [sp, #8] add r0, r2, #0 mov r1, #0x28 str r2, [sp, #0xc] bl FUN_02016998 ldr r1, [sp, #4] str r0, [r1, #0xc] mov r0, #0 str r0, [sp, #0x14] mov r0, #0x10 ldr r6, [sp, #0x14] str r0, [sp, #0x10] _021E0718: ldr r0, [sp, #0x10] ldr r7, [sp, #0x10] str r0, [sp, #0x18] add r0, #0x10 mov r4, #0 mov r5, #0x30 sub r7, #0x10 str r0, [sp, #0x18] _021E0728: add r0, r5, #0 add r0, #0x28 str r0, [sp] ldr r0, [sp, #4] add r3, r5, #0 ldr r1, [r0, #0xc] add r0, r4, r6 lsl r0, r0, #2 add r0, r1, r0 ldr r2, [sp, #0x18] add r1, r7, #0 sub r3, #0x28 bl MOD16_021D7C98 add r4, r4, #1 add r5, #0x50 cmp r4, #2 blt _021E0728 ldr r0, [sp, #0x10] add r6, r6, #2 add r0, #0x20 str r0, [sp, #0x10] ldr r0, [sp, #0x14] add r0, r0, #1 str r0, [sp, #0x14] cmp r0, #4 blt _021E0718 mov r0, #0xa8 str r0, [sp] ldr r0, [sp, #4] mov r1, #0x80 ldr r0, [r0, #0xc] mov r2, #0xa0 add r0, #0x20 mov r3, #0x58 bl MOD16_021D7C98 mov r0, #0x28 str r0, [sp] ldr r0, [sp, #4] mov r1, #0xa0 ldr r0, [r0, #0xc] mov r2, #0xc0 add r0, #0x24 mov r3, #8 bl MOD16_021D7C98 ldr r3, [sp, #4] ldr r1, [sp, #8] ldr r0, [sp, #4] ldr r2, _021E07AC ; =MOD16_021E07F0 str r1, [r0, #0x10] str r0, [r0, #0x14] ldr r0, [sp, #0xc] mov r1, #0xa str r0, [sp] ldr r0, [sp, #4] add r3, #0x10 ldr r0, [r0, #0xc] bl FUN_020220C4 ldr r1, [sp, #4] str r0, [r1, #8] add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021E07AC: .word MOD16_021E07F0 thumb_func_end MOD16_021E06F8 thumb_func_start MOD16_021E07B0 MOD16_021E07B0: ; 0x021E07B0 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 mov r1, #0 add r2, r5, #0 mov r0, #3 _021E07BC: add r1, r1, #1 str r0, [r2, #0x44] add r2, r2, #4 cmp r1, #0xa blt _021E07BC ldr r0, [r5, #8] bl FUN_02022144 ldr r0, [r4, #8] mov r1, #0 bl MOD16_021DEC14 add r1, r0, #0 add r0, r5, #0 bl MOD16_021E081C ldr r0, [r4, #8] mov r1, #1 bl MOD16_021DEC14 add r1, r0, #0 add r0, r5, #0 bl MOD16_021E081C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E07B0 thumb_func_start MOD16_021E07F0 MOD16_021E07F0: ; 0x021E07F0 ldr r2, [r2, #4] lsl r3, r0, #2 add r3, r2, r3 str r1, [r3, #0x44] cmp r1, #2 bne _021E0814 add r1, r2, #0 add r1, #0x90 ldr r1, [r1] cmp r1, #0 bne _021E081A add r1, r2, #0 add r1, #0x84 str r0, [r1] mov r0, #1 add r2, #0x90 str r0, [r2] bx lr _021E0814: mov r0, #0 add r2, #0x90 str r0, [r2] _021E081A: bx lr thumb_func_end MOD16_021E07F0 thumb_func_start MOD16_021E081C MOD16_021E081C: ; 0x021E081C sub r1, #0xa cmp r1, #7 bhi _021E089C add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E082E: ; jump table .short _021E083E - _021E082E - 2 ; case 0 .short _021E084A - _021E082E - 2 ; case 1 .short _021E0856 - _021E082E - 2 ; case 2 .short _021E0862 - _021E082E - 2 ; case 3 .short _021E086E - _021E082E - 2 ; case 4 .short _021E087A - _021E082E - 2 ; case 5 .short _021E0886 - _021E082E - 2 ; case 6 .short _021E0892 - _021E082E - 2 ; case 7 _021E083E: ldr r1, [r0, #0x44] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x44] bx lr _021E084A: ldr r1, [r0, #0x48] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x48] bx lr _021E0856: ldr r1, [r0, #0x4c] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x4c] bx lr _021E0862: ldr r1, [r0, #0x50] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x50] bx lr _021E086E: ldr r1, [r0, #0x54] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x54] bx lr _021E087A: ldr r1, [r0, #0x58] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x58] bx lr _021E0886: ldr r1, [r0, #0x5c] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x5c] bx lr _021E0892: ldr r1, [r0, #0x60] cmp r1, #2 beq _021E089C mov r1, #1 str r1, [r0, #0x60] _021E089C: bx lr .align 2, 0 thumb_func_end MOD16_021E081C thumb_func_start MOD16_021E08A0 MOD16_021E08A0: ; 0x021E08A0 push {r4, r5, r6, r7, lr} sub sp, #0x1c str r0, [sp, #4] str r1, [sp, #8] add r0, r2, #0 mov r1, #0x3c str r2, [sp, #0xc] bl FUN_02016998 ldr r1, [sp, #4] str r0, [r1, #0xc] mov r0, #0 str r0, [sp, #0x14] mov r0, #0x10 ldr r6, [sp, #0x14] str r0, [sp, #0x10] _021E08C0: ldr r0, [sp, #0x10] ldr r7, [sp, #0x10] str r0, [sp, #0x18] add r0, #0x10 mov r4, #0 mov r5, #0x1c sub r7, #0x10 str r0, [sp, #0x18] _021E08D0: add r0, r5, #0 add r0, #0x18 str r0, [sp] ldr r0, [sp, #4] add r3, r5, #0 ldr r1, [r0, #0xc] add r0, r4, r6 lsl r0, r0, #2 add r0, r1, r0 ldr r2, [sp, #0x18] add r1, r7, #0 sub r3, #0x18 bl MOD16_021D7C98 add r4, r4, #1 add r5, #0x38 cmp r4, #3 blt _021E08D0 ldr r0, [sp, #0x10] add r6, r6, #3 add r0, #0x20 str r0, [sp, #0x10] ldr r0, [sp, #0x14] add r0, r0, #1 str r0, [sp, #0x14] cmp r0, #5 blt _021E08C0 ldr r1, [sp, #8] ldr r0, [sp, #4] ldr r3, [sp, #4] str r1, [r0, #0x10] str r0, [r0, #0x14] ldr r0, [sp, #0xc] ldr r2, _021E092C ; =MOD16_021E0A28 str r0, [sp] ldr r0, [sp, #4] mov r1, #0xf ldr r0, [r0, #0xc] add r3, #0x10 bl FUN_020220C4 ldr r1, [sp, #4] str r0, [r1, #8] add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021E092C: .word MOD16_021E0A28 thumb_func_end MOD16_021E08A0 thumb_func_start MOD16_021E0930 MOD16_021E0930: ; 0x021E0930 push {r3, r4, r5, lr} add r4, r0, #0 add r5, r1, #0 mov r1, #0 add r2, r4, #0 mov r0, #3 _021E093C: add r1, r1, #1 str r0, [r2, #0x44] add r2, r2, #4 cmp r1, #0xf blt _021E093C ldr r0, [r4, #8] bl FUN_02022144 ldr r0, [r5, #8] bl MOD16_021DEC38 cmp r0, #0xe bhi _021E0A26 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E0962: ; jump table .short _021E0A26 - _021E0962 - 2 ; case 0 .short _021E0980 - _021E0962 - 2 ; case 1 .short _021E098C - _021E0962 - 2 ; case 2 .short _021E0998 - _021E0962 - 2 ; case 3 .short _021E09A4 - _021E0962 - 2 ; case 4 .short _021E09B0 - _021E0962 - 2 ; case 5 .short _021E09BC - _021E0962 - 2 ; case 6 .short _021E09C8 - _021E0962 - 2 ; case 7 .short _021E09D4 - _021E0962 - 2 ; case 8 .short _021E09E0 - _021E0962 - 2 ; case 9 .short _021E09EC - _021E0962 - 2 ; case 10 .short _021E09F8 - _021E0962 - 2 ; case 11 .short _021E0A04 - _021E0962 - 2 ; case 12 .short _021E0A10 - _021E0962 - 2 ; case 13 .short _021E0A1C - _021E0962 - 2 ; case 14 _021E0980: ldr r0, [r4, #0x60] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x60] pop {r3, r4, r5, pc} _021E098C: ldr r0, [r4, #0x70] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x70] pop {r3, r4, r5, pc} _021E0998: ldr r0, [r4, #0x58] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x58] pop {r3, r4, r5, pc} _021E09A4: ldr r0, [r4, #0x48] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x48] pop {r3, r4, r5, pc} _021E09B0: ldr r0, [r4, #0x74] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x74] pop {r3, r4, r5, pc} _021E09BC: ldr r0, [r4, #0x64] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x64] pop {r3, r4, r5, pc} _021E09C8: ldr r0, [r4, #0x78] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x78] pop {r3, r4, r5, pc} _021E09D4: ldr r0, [r4, #0x54] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x54] pop {r3, r4, r5, pc} _021E09E0: ldr r0, [r4, #0x50] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x50] pop {r3, r4, r5, pc} _021E09EC: ldr r0, [r4, #0x5c] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x5c] pop {r3, r4, r5, pc} _021E09F8: ldr r0, [r4, #0x68] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x68] pop {r3, r4, r5, pc} _021E0A04: ldr r0, [r4, #0x4c] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x4c] pop {r3, r4, r5, pc} _021E0A10: ldr r0, [r4, #0x44] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x44] pop {r3, r4, r5, pc} _021E0A1C: ldr r0, [r4, #0x6c] cmp r0, #2 beq _021E0A26 mov r0, #1 str r0, [r4, #0x6c] _021E0A26: pop {r3, r4, r5, pc} thumb_func_end MOD16_021E0930 thumb_func_start MOD16_021E0A28 MOD16_021E0A28: ; 0x021E0A28 ldr r3, [r2, #4] lsl r2, r0, #2 add r2, r3, r2 str r1, [r2, #0x44] cmp r1, #2 bne _021E0A38 add r3, #0x84 str r0, [r3] _021E0A38: bx lr .align 2, 0 thumb_func_end MOD16_021E0A28 thumb_func_start MOD16_021E0A3C MOD16_021E0A3C: ; 0x021E0A3C push {r4, r5, r6, lr} sub sp, #0x10 add r4, r1, #0 add r6, r0, #0 cmp r4, #5 bhi _021E0A9A add r5, r4, r4 add r5, pc ldrh r5, [r5, #6] lsl r5, r5, #0x10 asr r5, r5, #0x10 add pc, r5 _021E0A54: ; jump table .short _021E0A60 - _021E0A54 - 2 ; case 0 .short _021E0A6A - _021E0A54 - 2 ; case 1 .short _021E0A74 - _021E0A54 - 2 ; case 2 .short _021E0A7E - _021E0A54 - 2 ; case 3 .short _021E0A88 - _021E0A54 - 2 ; case 4 .short _021E0A92 - _021E0A54 - 2 ; case 5 _021E0A60: mov r2, #0x10 mov r1, #0xd4 mov r3, #0x1c add r0, r2, #0 b _021E0A9A _021E0A6A: mov r1, #0xe0 mov r2, #0x30 mov r3, #0x2c mov r0, #0x10 b _021E0A9A _021E0A74: mov r1, #0xe0 mov r2, #0x50 mov r3, #0x2c mov r0, #0x10 b _021E0A9A _021E0A7E: mov r1, #0xe0 mov r2, #0x70 mov r3, #0x2c mov r0, #0x10 b _021E0A9A _021E0A88: mov r1, #0xe0 mov r2, #0x90 mov r3, #0x2c mov r0, #0x10 b _021E0A9A _021E0A92: mov r1, #0xd4 mov r2, #0xb0 mov r3, #0x3c mov r0, #0x10 _021E0A9A: str r0, [sp] mov r0, #0 str r0, [sp, #4] str r0, [sp, #8] add r0, r6, #0 str r4, [sp, #0xc] bl MOD16_021DB590 add sp, #0x10 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E0A3C thumb_func_start MOD16_021E0AB0 MOD16_021E0AB0: ; 0x021E0AB0 push {r4, lr} add r4, r0, #0 ldr r0, _021E0BB4 ; =0x021C48B8 ldr r1, [r0, #0x44] mov r0, #1 tst r0, r1 beq _021E0B86 add r0, r4, #0 add r0, #0x8c ldr r0, [r0] cmp r0, #0 bne _021E0B94 ldr r0, [r4, #0x18] bl MOD16_021DB528 cmp r0, #5 bhi _021E0B76 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E0ADE: ; jump table .short _021E0B60 - _021E0ADE - 2 ; case 0 .short _021E0AEA - _021E0ADE - 2 ; case 1 .short _021E0B02 - _021E0ADE - 2 ; case 2 .short _021E0B18 - _021E0ADE - 2 ; case 3 .short _021E0B30 - _021E0ADE - 2 ; case 4 .short _021E0B48 - _021E0ADE - 2 ; case 5 _021E0AEA: add r0, r4, #0 mov r1, #1 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x2c] b _021E0B76 _021E0B02: add r0, r4, #0 mov r1, #2 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x2c] b _021E0B76 _021E0B18: add r0, r4, #0 mov r1, #3 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x2c] b _021E0B76 _021E0B30: add r0, r4, #0 mov r1, #4 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x2c] b _021E0B76 _021E0B48: add r0, r4, #0 mov r1, #5 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x2c] b _021E0B76 _021E0B60: add r0, r4, #0 mov r1, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x2c] _021E0B76: add r0, r4, #0 add r0, #0x94 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x94 str r1, [r0] b _021E0B94 _021E0B86: add r0, r4, #0 mov r1, #0 add r0, #0x94 str r1, [r0] add r0, r4, #0 add r0, #0x8c str r1, [r0] _021E0B94: ldr r0, _021E0BB4 ; =0x021C48B8 mov r1, #2 ldr r0, [r0, #0x48] tst r0, r1 beq _021E0BB2 add r0, r4, #0 mov r2, #0 add r0, #0x80 str r2, [r0] add r0, r4, #0 add r0, #0x80 ldr r0, [r0] lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x2c] _021E0BB2: pop {r4, pc} .align 2, 0 _021E0BB4: .word 0x021C48B8 thumb_func_end MOD16_021E0AB0 thumb_func_start MOD16_021E0BB8 MOD16_021E0BB8: ; 0x021E0BB8 push {r4, r5, r6, r7, lr} sub sp, #0x24 str r0, [sp, #0x10] str r1, [sp, #0x14] add r0, r1, #0 mov r1, #0x7e lsl r1, r1, #2 bl FUN_02016998 ldr r1, [sp, #0x10] str r0, [r1, #0x1c] mov r0, #0 str r0, [sp, #0x20] mov r0, #0x10 str r0, [sp, #0x1c] mov r0, #6 ldr r7, [sp, #0x20] str r0, [sp, #0x18] _021E0BDC: mov r4, #0 mov r6, #0x30 _021E0BE0: ldr r0, [sp, #0x18] add r1, r4, r0 ldr r0, [sp, #0x20] cmp r0, #5 bhi _021E0C48 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E0BF6: ; jump table .short _021E0C02 - _021E0BF6 - 2 ; case 0 .short _021E0C0E - _021E0BF6 - 2 ; case 1 .short _021E0C1A - _021E0BF6 - 2 ; case 2 .short _021E0C26 - _021E0BF6 - 2 ; case 3 .short _021E0C32 - _021E0BF6 - 2 ; case 4 .short _021E0C3E - _021E0BF6 - 2 ; case 5 _021E0C02: cmp r4, #2 bne _021E0C0A mov r1, #0 b _021E0C48 _021E0C0A: mov r5, #1 b _021E0C48 _021E0C0E: cmp r4, #2 bne _021E0C16 mov r1, #1 b _021E0C48 _021E0C16: mov r5, #0 b _021E0C48 _021E0C1A: cmp r4, #2 bne _021E0C22 mov r1, #2 b _021E0C48 _021E0C22: mov r5, #0 b _021E0C48 _021E0C26: cmp r4, #2 bne _021E0C2E mov r1, #3 b _021E0C48 _021E0C2E: mov r5, #0 b _021E0C48 _021E0C32: cmp r4, #2 bne _021E0C3A mov r1, #4 b _021E0C48 _021E0C3A: mov r5, #1 b _021E0C48 _021E0C3E: cmp r4, #2 bne _021E0C46 mov r1, #5 b _021E0C48 _021E0C46: mov r5, #1 _021E0C48: cmp r4, #2 bge _021E0C6E mov r0, #0x10 str r0, [sp] str r5, [sp, #4] str r5, [sp, #8] str r1, [sp, #0xc] ldr r0, [sp, #0x10] add r2, r4, r7 mov r1, #0x1c mul r1, r2 ldr r0, [r0, #0x1c] ldr r2, [sp, #0x1c] add r0, r0, r1 add r1, r6, #0 mov r3, #0x3c bl MOD16_021DB590 b _021E0C7E _021E0C6E: ldr r0, [sp, #0x10] add r2, r4, r7 ldr r3, [r0, #0x1c] mov r0, #0x1c mul r0, r2 add r0, r3, r0 bl MOD16_021E0A3C _021E0C7E: add r4, r4, #1 add r6, #0x50 cmp r4, #3 blt _021E0BE0 ldr r0, [sp, #0x1c] add r7, r7, #3 add r0, #0x20 str r0, [sp, #0x1c] ldr r0, [sp, #0x18] add r0, r0, #2 str r0, [sp, #0x18] ldr r0, [sp, #0x20] add r0, r0, #1 str r0, [sp, #0x20] cmp r0, #6 blt _021E0BDC ldr r0, [sp, #0x14] bl MOD16_021DB490 ldr r1, [sp, #0x10] mov r2, #3 str r0, [r1, #0x18] ldr r1, [r1, #0x1c] mov r3, #6 bl MOD16_021DB4B0 add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E0BB8 thumb_func_start MOD16_021E0CB8 MOD16_021E0CB8: ; 0x021E0CB8 push {r4, lr} add r4, r0, #0 ldr r0, _021E0D8C ; =0x021C48B8 ldr r1, [r0, #0x44] mov r0, #1 tst r0, r1 beq _021E0D82 add r0, r4, #0 add r0, #0x8c ldr r0, [r0] cmp r0, #0 bne _021E0D88 ldr r0, [r4, #0x18] bl MOD16_021DB528 sub r0, #8 cmp r0, #5 bhi _021E0D88 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E0CE8: ; jump table .short _021E0CF4 - _021E0CE8 - 2 ; case 0 .short _021E0D0C - _021E0CE8 - 2 ; case 1 .short _021E0D24 - _021E0CE8 - 2 ; case 2 .short _021E0D3A - _021E0CE8 - 2 ; case 3 .short _021E0D52 - _021E0CE8 - 2 ; case 4 .short _021E0D6A - _021E0CE8 - 2 ; case 5 _021E0CF4: add r0, r4, #0 mov r1, #0 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0D0C: add r0, r4, #0 mov r1, #1 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0D24: add r0, r4, #0 mov r1, #2 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0D3A: add r0, r4, #0 mov r1, #3 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0D52: add r0, r4, #0 mov r1, #4 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0D6A: add r0, r4, #0 mov r1, #5 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0D82: mov r0, #0 add r4, #0x8c str r0, [r4] _021E0D88: pop {r4, pc} nop _021E0D8C: .word 0x021C48B8 thumb_func_end MOD16_021E0CB8 thumb_func_start MOD16_021E0D90 MOD16_021E0D90: ; 0x021E0D90 push {r4, r5, r6, r7, lr} sub sp, #0x24 str r0, [sp, #0x10] str r1, [sp, #0x14] add r0, r1, #0 mov r1, #0x7e lsl r1, r1, #2 bl FUN_02016998 ldr r1, [sp, #0x10] str r0, [r1, #0x1c] mov r0, #0 str r0, [sp, #0x20] mov r0, #0x10 str r0, [sp, #0x1c] mov r0, #6 ldr r7, [sp, #0x20] str r0, [sp, #0x18] _021E0DB4: mov r4, #0 mov r6, #0x30 _021E0DB8: ldr r0, [sp, #0x18] add r1, r4, r0 ldr r0, [sp, #0x20] cmp r0, #5 bhi _021E0E20 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E0DCE: ; jump table .short _021E0DDA - _021E0DCE - 2 ; case 0 .short _021E0DE6 - _021E0DCE - 2 ; case 1 .short _021E0DF2 - _021E0DCE - 2 ; case 2 .short _021E0DFE - _021E0DCE - 2 ; case 3 .short _021E0E0A - _021E0DCE - 2 ; case 4 .short _021E0E16 - _021E0DCE - 2 ; case 5 _021E0DDA: cmp r4, #2 bne _021E0DE2 mov r1, #0 b _021E0E20 _021E0DE2: mov r5, #0 b _021E0E20 _021E0DE6: cmp r4, #2 bne _021E0DEE mov r1, #1 b _021E0E20 _021E0DEE: mov r5, #0 b _021E0E20 _021E0DF2: cmp r4, #2 bne _021E0DFA mov r1, #2 b _021E0E20 _021E0DFA: mov r5, #0 b _021E0E20 _021E0DFE: cmp r4, #2 bne _021E0E06 mov r1, #3 b _021E0E20 _021E0E06: mov r5, #0 b _021E0E20 _021E0E0A: cmp r4, #2 bne _021E0E12 mov r1, #4 b _021E0E20 _021E0E12: mov r5, #0 b _021E0E20 _021E0E16: cmp r4, #2 bne _021E0E1E mov r1, #5 b _021E0E20 _021E0E1E: mov r5, #1 _021E0E20: cmp r4, #2 bge _021E0E46 mov r0, #0x10 str r0, [sp] str r5, [sp, #4] str r5, [sp, #8] str r1, [sp, #0xc] ldr r0, [sp, #0x10] add r2, r4, r7 mov r1, #0x1c mul r1, r2 ldr r0, [r0, #0x1c] ldr r2, [sp, #0x1c] add r0, r0, r1 add r1, r6, #0 mov r3, #0x3c bl MOD16_021DB590 b _021E0E56 _021E0E46: ldr r0, [sp, #0x10] add r2, r4, r7 ldr r3, [r0, #0x1c] mov r0, #0x1c mul r0, r2 add r0, r3, r0 bl MOD16_021E0A3C _021E0E56: add r4, r4, #1 add r6, #0x50 cmp r4, #3 blt _021E0DB8 ldr r0, [sp, #0x1c] add r7, r7, #3 add r0, #0x20 str r0, [sp, #0x1c] ldr r0, [sp, #0x18] add r0, r0, #2 str r0, [sp, #0x18] ldr r0, [sp, #0x20] add r0, r0, #1 str r0, [sp, #0x20] cmp r0, #6 blt _021E0DB4 ldr r0, [sp, #0x14] bl MOD16_021DB490 ldr r1, [sp, #0x10] mov r2, #3 str r0, [r1, #0x18] ldr r1, [r1, #0x1c] mov r3, #6 bl MOD16_021DB4B0 add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E0D90 thumb_func_start MOD16_021E0E90 MOD16_021E0E90: ; 0x021E0E90 push {r4, lr} add r4, r0, #0 ldr r0, _021E0FD8 ; =0x021C48B8 ldr r1, [r0, #0x44] mov r0, #1 tst r0, r1 bne _021E0EA0 b _021E0FD0 _021E0EA0: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] cmp r0, #0 bne _021E0EB4 ldr r0, [r4, #0x18] bl MOD16_021DB528 cmp r0, #0xf bls _021E0EB6 _021E0EB4: b _021E0FD6 _021E0EB6: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E0EC2: ; jump table .short _021E0FD6 - _021E0EC2 - 2 ; case 0 .short _021E0FD6 - _021E0EC2 - 2 ; case 1 .short _021E0FD6 - _021E0EC2 - 2 ; case 2 .short _021E0FD6 - _021E0EC2 - 2 ; case 3 .short _021E0FD6 - _021E0EC2 - 2 ; case 4 .short _021E0FD6 - _021E0EC2 - 2 ; case 5 .short _021E0EE2 - _021E0EC2 - 2 ; case 6 .short _021E0EFA - _021E0EC2 - 2 ; case 7 .short _021E0F12 - _021E0EC2 - 2 ; case 8 .short _021E0F28 - _021E0EC2 - 2 ; case 9 .short _021E0F40 - _021E0EC2 - 2 ; case 10 .short _021E0F58 - _021E0EC2 - 2 ; case 11 .short _021E0F70 - _021E0EC2 - 2 ; case 12 .short _021E0F88 - _021E0EC2 - 2 ; case 13 .short _021E0FA0 - _021E0EC2 - 2 ; case 14 .short _021E0FB8 - _021E0EC2 - 2 ; case 15 _021E0EE2: add r0, r4, #0 mov r1, #0 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0EFA: add r0, r4, #0 mov r1, #1 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0F12: add r0, r4, #0 mov r1, #2 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0F28: add r0, r4, #0 mov r1, #3 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0F40: add r0, r4, #0 mov r1, #4 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0F58: add r0, r4, #0 mov r1, #5 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0F70: add r0, r4, #0 mov r1, #6 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0F88: add r0, r4, #0 mov r1, #7 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0FA0: add r0, r4, #0 mov r1, #8 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0FB8: add r0, r4, #0 mov r1, #9 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E0FD0: mov r0, #0 add r4, #0x8c str r0, [r4] _021E0FD6: pop {r4, pc} .align 2, 0 _021E0FD8: .word 0x021C48B8 thumb_func_end MOD16_021E0E90 thumb_func_start MOD16_021E0FDC MOD16_021E0FDC: ; 0x021E0FDC push {r4, r5, r6, r7, lr} sub sp, #0x2c str r0, [sp, #0x10] str r1, [sp, #0x14] add r0, r1, #0 mov r1, #0x7e lsl r1, r1, #2 bl FUN_02016998 ldr r1, [sp, #0x10] str r0, [r1, #0x1c] mov r0, #0 str r0, [sp, #0x28] mov r0, #0x10 str r0, [sp, #0x24] mov r0, #6 str r0, [sp, #0x20] ldr r0, [sp, #0x28] str r0, [sp, #0x1c] _021E1002: mov r0, #0x30 mov r4, #0 str r0, [sp, #0x18] _021E1008: ldr r0, [sp, #0x20] ldr r3, [sp, #0x18] add r1, r4, r0 ldr r0, [sp, #0x28] cmp r0, #5 bhi _021E1098 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1020: ; jump table .short _021E102C - _021E1020 - 2 ; case 0 .short _021E103C - _021E1020 - 2 ; case 1 .short _021E104C - _021E1020 - 2 ; case 2 .short _021E105C - _021E1020 - 2 ; case 3 .short _021E106C - _021E1020 - 2 ; case 4 .short _021E107C - _021E1020 - 2 ; case 5 _021E102C: cmp r4, #2 bne _021E1034 mov r1, #0 b _021E1098 _021E1034: mov r5, #0 mov r7, #0x3c mov r6, #0x10 b _021E1098 _021E103C: cmp r4, #2 bne _021E1044 mov r1, #1 b _021E1098 _021E1044: mov r5, #0 mov r7, #0x3c mov r6, #0x10 b _021E1098 _021E104C: cmp r4, #2 bne _021E1054 mov r1, #2 b _021E1098 _021E1054: mov r5, #0 mov r7, #0x3c mov r6, #0x10 b _021E1098 _021E105C: cmp r4, #2 bne _021E1064 mov r1, #3 b _021E1098 _021E1064: mov r5, #0 mov r7, #0x3c mov r6, #0x10 b _021E1098 _021E106C: cmp r4, #2 bne _021E1074 mov r1, #4 b _021E1098 _021E1074: mov r5, #0 mov r7, #0x3c mov r6, #0x10 b _021E1098 _021E107C: cmp r4, #2 bne _021E1084 mov r1, #5 b _021E1098 _021E1084: cmp r4, #0 bne _021E1092 mov r7, #0x10 mov r5, #0 add r6, r7, #0 mov r3, #0x18 b _021E1098 _021E1092: mov r5, #1 mov r7, #0x3c mov r6, #0x10 _021E1098: cmp r4, #2 bge _021E10BE str r6, [sp] str r5, [sp, #4] str r5, [sp, #8] ldr r0, [sp, #0x10] str r1, [sp, #0xc] ldr r2, [r0, #0x1c] ldr r0, [sp, #0x1c] add r1, r4, r0 mov r0, #0x1c mul r0, r1 add r0, r2, r0 add r1, r3, #0 ldr r2, [sp, #0x24] add r3, r7, #0 bl MOD16_021DB590 b _021E10D0 _021E10BE: ldr r0, [sp, #0x10] ldr r3, [r0, #0x1c] ldr r0, [sp, #0x1c] add r2, r4, r0 mov r0, #0x1c mul r0, r2 add r0, r3, r0 bl MOD16_021E0A3C _021E10D0: ldr r0, [sp, #0x18] add r4, r4, #1 add r0, #0x50 str r0, [sp, #0x18] cmp r4, #3 blt _021E1008 ldr r0, [sp, #0x24] add r0, #0x20 str r0, [sp, #0x24] ldr r0, [sp, #0x20] add r0, r0, #2 str r0, [sp, #0x20] ldr r0, [sp, #0x1c] add r0, r0, #3 str r0, [sp, #0x1c] ldr r0, [sp, #0x28] add r0, r0, #1 str r0, [sp, #0x28] cmp r0, #6 blt _021E1002 ldr r0, [sp, #0x14] bl MOD16_021DB490 ldr r1, [sp, #0x10] mov r2, #3 str r0, [r1, #0x18] ldr r1, [r1, #0x1c] mov r3, #6 bl MOD16_021DB4B0 add sp, #0x2c pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E0FDC thumb_func_start MOD16_021E1110 MOD16_021E1110: ; 0x021E1110 push {r4, lr} add r4, r0, #0 ldr r0, _021E1278 ; =0x021C48B8 ldr r1, [r0, #0x44] mov r0, #1 tst r0, r1 bne _021E1120 b _021E1270 _021E1120: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] cmp r0, #0 bne _021E1134 ldr r0, [r4, #0x18] bl MOD16_021DB528 cmp r0, #0x10 bls _021E1136 _021E1134: b _021E1276 _021E1136: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1142: ; jump table .short _021E1276 - _021E1142 - 2 ; case 0 .short _021E1276 - _021E1142 - 2 ; case 1 .short _021E1276 - _021E1142 - 2 ; case 2 .short _021E1276 - _021E1142 - 2 ; case 3 .short _021E1276 - _021E1142 - 2 ; case 4 .short _021E1276 - _021E1142 - 2 ; case 5 .short _021E1164 - _021E1142 - 2 ; case 6 .short _021E117C - _021E1142 - 2 ; case 7 .short _021E1194 - _021E1142 - 2 ; case 8 .short _021E11AA - _021E1142 - 2 ; case 9 .short _021E11C2 - _021E1142 - 2 ; case 10 .short _021E11DA - _021E1142 - 2 ; case 11 .short _021E11F2 - _021E1142 - 2 ; case 12 .short _021E120A - _021E1142 - 2 ; case 13 .short _021E1222 - _021E1142 - 2 ; case 14 .short _021E123A - _021E1142 - 2 ; case 15 .short _021E1258 - _021E1142 - 2 ; case 16 _021E1164: add r0, r4, #0 mov r1, #0 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E117C: add r0, r4, #0 mov r1, #1 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1194: add r0, r4, #0 mov r1, #2 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E11AA: add r0, r4, #0 mov r1, #3 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E11C2: add r0, r4, #0 mov r1, #4 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E11DA: add r0, r4, #0 mov r1, #5 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E11F2: add r0, r4, #0 mov r1, #6 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E120A: add r0, r4, #0 mov r1, #7 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1222: add r0, r4, #0 mov r1, #8 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E123A: add r0, r4, #0 mov r1, #9 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] mov r0, #1 add r4, #0x8c str r0, [r4] pop {r4, pc} _021E1258: add r0, r4, #0 mov r1, #0xa add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1270: mov r0, #0 add r4, #0x8c str r0, [r4] _021E1276: pop {r4, pc} .align 2, 0 _021E1278: .word 0x021C48B8 thumb_func_end MOD16_021E1110 thumb_func_start MOD16_021E127C MOD16_021E127C: ; 0x021E127C push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 str r0, [sp, #0x10] str r1, [sp, #0x14] add r0, r1, #0 mov r1, #0x7e lsl r1, r1, #2 bl FUN_02016998 ldr r1, [sp, #0x10] str r0, [r1, #0x1c] mov r0, #0 str r0, [sp, #0x2c] mov r0, #0x10 str r0, [sp, #0x24] mov r0, #6 str r0, [sp, #0x20] ldr r0, [sp, #0x2c] str r0, [sp, #0x1c] _021E12A2: mov r0, #0x30 mov r4, #0 str r0, [sp, #0x18] _021E12A8: ldr r0, [sp, #0x20] ldr r3, [sp, #0x18] add r1, r4, r0 ldr r0, [sp, #0x2c] cmp r0, #5 bhi _021E1364 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E12C0: ; jump table .short _021E12CC - _021E12C0 - 2 ; case 0 .short _021E12E0 - _021E12C0 - 2 ; case 1 .short _021E12F4 - _021E12C0 - 2 ; case 2 .short _021E1308 - _021E12C0 - 2 ; case 3 .short _021E131C - _021E12C0 - 2 ; case 4 .short _021E1340 - _021E12C0 - 2 ; case 5 _021E12CC: cmp r4, #2 bne _021E12D4 mov r1, #0 b _021E1364 _021E12D4: mov r6, #0 mov r0, #0x3c add r5, r6, #0 str r0, [sp, #0x28] mov r7, #0x10 b _021E1364 _021E12E0: cmp r4, #2 bne _021E12E8 mov r1, #1 b _021E1364 _021E12E8: mov r6, #0 mov r0, #0x3c add r5, r6, #0 str r0, [sp, #0x28] mov r7, #0x10 b _021E1364 _021E12F4: cmp r4, #2 bne _021E12FC mov r1, #2 b _021E1364 _021E12FC: mov r6, #0 mov r0, #0x3c add r5, r6, #0 str r0, [sp, #0x28] mov r7, #0x10 b _021E1364 _021E1308: cmp r4, #2 bne _021E1310 mov r1, #3 b _021E1364 _021E1310: mov r6, #0 mov r0, #0x3c add r5, r6, #0 str r0, [sp, #0x28] mov r7, #0x10 b _021E1364 _021E131C: cmp r4, #2 bne _021E1324 mov r1, #4 b _021E1364 _021E1324: cmp r4, #0 bne _021E1334 mov r0, #0x3c mov r6, #1 mov r5, #2 str r0, [sp, #0x28] mov r7, #0x10 b _021E1364 _021E1334: mov r6, #0 mov r0, #0x3c add r5, r6, #0 str r0, [sp, #0x28] mov r7, #0x10 b _021E1364 _021E1340: cmp r4, #2 bne _021E1348 mov r1, #5 b _021E1364 _021E1348: cmp r4, #0 bne _021E135A mov r0, #0x10 mov r6, #0 add r5, r6, #0 str r0, [sp, #0x28] add r7, r0, #0 mov r3, #0x18 b _021E1364 _021E135A: mov r6, #1 mov r0, #0x3c add r5, r6, #0 str r0, [sp, #0x28] mov r7, #0x10 _021E1364: cmp r4, #2 bge _021E138A str r7, [sp] str r6, [sp, #4] str r5, [sp, #8] ldr r0, [sp, #0x10] str r1, [sp, #0xc] ldr r2, [r0, #0x1c] ldr r0, [sp, #0x1c] add r1, r4, r0 mov r0, #0x1c mul r0, r1 add r0, r2, r0 add r1, r3, #0 ldr r2, [sp, #0x24] ldr r3, [sp, #0x28] bl MOD16_021DB590 b _021E139C _021E138A: ldr r0, [sp, #0x10] ldr r3, [r0, #0x1c] ldr r0, [sp, #0x1c] add r2, r4, r0 mov r0, #0x1c mul r0, r2 add r0, r3, r0 bl MOD16_021E0A3C _021E139C: ldr r0, [sp, #0x18] add r4, r4, #1 add r0, #0x50 str r0, [sp, #0x18] cmp r4, #3 bge _021E13AA b _021E12A8 _021E13AA: ldr r0, [sp, #0x24] add r0, #0x20 str r0, [sp, #0x24] ldr r0, [sp, #0x20] add r0, r0, #2 str r0, [sp, #0x20] ldr r0, [sp, #0x1c] add r0, r0, #3 str r0, [sp, #0x1c] ldr r0, [sp, #0x2c] add r0, r0, #1 str r0, [sp, #0x2c] cmp r0, #6 bge _021E13C8 b _021E12A2 _021E13C8: ldr r0, [sp, #0x14] bl MOD16_021DB490 ldr r1, [sp, #0x10] mov r2, #3 str r0, [r1, #0x18] ldr r1, [r1, #0x1c] mov r3, #6 bl MOD16_021DB4B0 add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E127C thumb_func_start MOD16_021E13E0 MOD16_021E13E0: ; 0x021E13E0 push {r4, lr} add r4, r0, #0 ldr r0, _021E1530 ; =0x021C48B8 ldr r1, [r0, #0x44] mov r0, #1 tst r0, r1 bne _021E13F0 b _021E1528 _021E13F0: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] cmp r0, #0 bne _021E1404 ldr r0, [r4, #0x18] bl MOD16_021DB528 cmp r0, #0x10 bls _021E1406 _021E1404: b _021E152E _021E1406: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1412: ; jump table .short _021E152E - _021E1412 - 2 ; case 0 .short _021E152E - _021E1412 - 2 ; case 1 .short _021E152E - _021E1412 - 2 ; case 2 .short _021E152E - _021E1412 - 2 ; case 3 .short _021E152E - _021E1412 - 2 ; case 4 .short _021E152E - _021E1412 - 2 ; case 5 .short _021E1434 - _021E1412 - 2 ; case 6 .short _021E144C - _021E1412 - 2 ; case 7 .short _021E1464 - _021E1412 - 2 ; case 8 .short _021E147A - _021E1412 - 2 ; case 9 .short _021E1492 - _021E1412 - 2 ; case 10 .short _021E14AA - _021E1412 - 2 ; case 11 .short _021E14C2 - _021E1412 - 2 ; case 12 .short _021E14DA - _021E1412 - 2 ; case 13 .short _021E152E - _021E1412 - 2 ; case 14 .short _021E14F2 - _021E1412 - 2 ; case 15 .short _021E1510 - _021E1412 - 2 ; case 16 _021E1434: add r0, r4, #0 mov r1, #0 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E144C: add r0, r4, #0 mov r1, #1 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1464: add r0, r4, #0 mov r1, #2 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E147A: add r0, r4, #0 mov r1, #3 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1492: add r0, r4, #0 mov r1, #4 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E14AA: add r0, r4, #0 mov r1, #5 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E14C2: add r0, r4, #0 mov r1, #6 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E14DA: add r0, r4, #0 mov r1, #7 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E14F2: add r0, r4, #0 mov r1, #8 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] mov r0, #1 add r4, #0x8c str r0, [r4] pop {r4, pc} _021E1510: add r0, r4, #0 mov r1, #9 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1528: mov r0, #0 add r4, #0x8c str r0, [r4] _021E152E: pop {r4, pc} .align 2, 0 _021E1530: .word 0x021C48B8 thumb_func_end MOD16_021E13E0 thumb_func_start MOD16_021E1534 MOD16_021E1534: ; 0x021E1534 push {r4, r5, r6, r7, lr} sub sp, #0x24 str r0, [sp, #0x10] str r1, [sp, #0x14] add r0, r1, #0 mov r1, #0x2a lsl r1, r1, #4 bl FUN_02016998 ldr r1, [sp, #0x10] str r0, [r1, #0x1c] mov r0, #0 str r0, [sp, #0x20] mov r0, #0x10 str r0, [sp, #0x1c] mov r0, #6 ldr r7, [sp, #0x20] str r0, [sp, #0x18] _021E1558: mov r4, #0 mov r6, #0x1c _021E155C: ldr r0, [sp, #0x18] add r1, r4, r0 ldr r0, [sp, #0x20] cmp r0, #5 bhi _021E15C4 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1572: ; jump table .short _021E157E - _021E1572 - 2 ; case 0 .short _021E158A - _021E1572 - 2 ; case 1 .short _021E1596 - _021E1572 - 2 ; case 2 .short _021E15A2 - _021E1572 - 2 ; case 3 .short _021E15AE - _021E1572 - 2 ; case 4 .short _021E15BA - _021E1572 - 2 ; case 5 _021E157E: cmp r4, #3 bne _021E1586 mov r1, #0 b _021E15C4 _021E1586: mov r5, #0 b _021E15C4 _021E158A: cmp r4, #3 bne _021E1592 mov r1, #1 b _021E15C4 _021E1592: mov r5, #0 b _021E15C4 _021E1596: cmp r4, #3 bne _021E159E mov r1, #2 b _021E15C4 _021E159E: mov r5, #0 b _021E15C4 _021E15A2: cmp r4, #3 bne _021E15AA mov r1, #3 b _021E15C4 _021E15AA: mov r5, #0 b _021E15C4 _021E15AE: cmp r4, #3 bne _021E15B6 mov r1, #4 b _021E15C4 _021E15B6: mov r5, #0 b _021E15C4 _021E15BA: cmp r4, #3 bne _021E15C2 mov r1, #5 b _021E15C4 _021E15C2: mov r5, #1 _021E15C4: cmp r4, #3 bge _021E15EA mov r0, #0x14 str r0, [sp] str r5, [sp, #4] str r5, [sp, #8] str r1, [sp, #0xc] ldr r0, [sp, #0x10] add r2, r4, r7 mov r1, #0x1c mul r1, r2 ldr r0, [r0, #0x1c] ldr r2, [sp, #0x1c] add r0, r0, r1 add r1, r6, #0 mov r3, #0x20 bl MOD16_021DB590 b _021E15FA _021E15EA: ldr r0, [sp, #0x10] add r2, r4, r7 ldr r3, [r0, #0x1c] mov r0, #0x1c mul r0, r2 add r0, r3, r0 bl MOD16_021E0A3C _021E15FA: add r4, r4, #1 add r6, #0x38 cmp r4, #4 blt _021E155C ldr r0, [sp, #0x1c] add r7, r7, #4 add r0, #0x20 str r0, [sp, #0x1c] ldr r0, [sp, #0x18] add r0, r0, #3 str r0, [sp, #0x18] ldr r0, [sp, #0x20] add r0, r0, #1 str r0, [sp, #0x20] cmp r0, #6 blt _021E1558 ldr r0, [sp, #0x14] bl MOD16_021DB490 ldr r1, [sp, #0x10] mov r2, #4 str r0, [r1, #0x18] ldr r1, [r1, #0x1c] mov r3, #6 bl MOD16_021DB4B0 add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E1534 thumb_func_start MOD16_021E1634 MOD16_021E1634: ; 0x021E1634 push {r4, lr} add r4, r0, #0 ldr r0, _021E1800 ; =0x021C48B8 ldr r1, [r0, #0x44] mov r0, #1 tst r0, r1 bne _021E1644 b _021E17F6 _021E1644: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] cmp r0, #0 bne _021E1658 ldr r0, [r4, #0x18] bl MOD16_021DB528 cmp r0, #0x14 bls _021E165A _021E1658: b _021E17FC _021E165A: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1666: ; jump table .short _021E17FC - _021E1666 - 2 ; case 0 .short _021E17FC - _021E1666 - 2 ; case 1 .short _021E17FC - _021E1666 - 2 ; case 2 .short _021E17FC - _021E1666 - 2 ; case 3 .short _021E17FC - _021E1666 - 2 ; case 4 .short _021E17FC - _021E1666 - 2 ; case 5 .short _021E1690 - _021E1666 - 2 ; case 6 .short _021E16A8 - _021E1666 - 2 ; case 7 .short _021E16C0 - _021E1666 - 2 ; case 8 .short _021E16D6 - _021E1666 - 2 ; case 9 .short _021E16EE - _021E1666 - 2 ; case 10 .short _021E1706 - _021E1666 - 2 ; case 11 .short _021E171E - _021E1666 - 2 ; case 12 .short _021E1736 - _021E1666 - 2 ; case 13 .short _021E174E - _021E1666 - 2 ; case 14 .short _021E1766 - _021E1666 - 2 ; case 15 .short _021E177E - _021E1666 - 2 ; case 16 .short _021E1796 - _021E1666 - 2 ; case 17 .short _021E17AE - _021E1666 - 2 ; case 18 .short _021E17C6 - _021E1666 - 2 ; case 19 .short _021E17DE - _021E1666 - 2 ; case 20 _021E1690: add r0, r4, #0 mov r1, #0 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E16A8: add r0, r4, #0 mov r1, #1 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E16C0: add r0, r4, #0 mov r1, #2 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E16D6: add r0, r4, #0 mov r1, #3 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E16EE: add r0, r4, #0 mov r1, #4 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1706: add r0, r4, #0 mov r1, #5 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E171E: add r0, r4, #0 mov r1, #6 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1736: add r0, r4, #0 mov r1, #7 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E174E: add r0, r4, #0 mov r1, #8 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1766: add r0, r4, #0 mov r1, #9 add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E177E: add r0, r4, #0 mov r1, #0xa add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E1796: add r0, r4, #0 mov r1, #0xb add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E17AE: add r0, r4, #0 mov r1, #0xc add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E17C6: add r0, r4, #0 mov r1, #0xd add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E17DE: add r0, r4, #0 mov r1, #0xe add r0, #0x84 str r1, [r0] add r0, r4, #0 add r0, #0x84 ldr r0, [r0] mov r1, #2 lsl r0, r0, #2 add r0, r4, r0 str r1, [r0, #0x44] pop {r4, pc} _021E17F6: mov r0, #0 add r4, #0x8c str r0, [r4] _021E17FC: pop {r4, pc} nop _021E1800: .word 0x021C48B8 thumb_func_end MOD16_021E1634 thumb_func_start MOD16_021E1804 MOD16_021E1804: ; 0x021E1804 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, _021E1890 ; =0x021C48B8 add r4, r1, #0 ldr r1, [r0, #0x48] mov r0, #0x10 tst r0, r1 beq _021E1826 ldr r0, [r5, #0x18] mov r1, #0 mov r2, #1 bl MOD16_021DB4CC add r0, r5, #0 mov r1, #1 add r0, #0x8c str r1, [r0] _021E1826: ldr r0, _021E1890 ; =0x021C48B8 ldr r1, [r0, #0x48] mov r0, #0x20 tst r0, r1 beq _021E1842 mov r1, #0 ldr r0, [r5, #0x18] sub r2, r1, #1 bl MOD16_021DB4CC add r0, r5, #0 mov r1, #1 add r0, #0x8c str r1, [r0] _021E1842: ldr r0, _021E1890 ; =0x021C48B8 ldr r1, [r0, #0x48] mov r0, #0x40 tst r0, r1 beq _021E185E mov r1, #1 ldr r0, [r5, #0x18] sub r2, r1, #2 bl MOD16_021DB4CC add r0, r5, #0 mov r1, #1 add r0, #0x8c str r1, [r0] _021E185E: ldr r0, _021E1890 ; =0x021C48B8 ldr r1, [r0, #0x48] mov r0, #0x80 tst r0, r1 beq _021E187A mov r1, #1 ldr r0, [r5, #0x18] add r2, r1, #0 bl MOD16_021DB4CC add r0, r5, #0 mov r1, #1 add r0, #0x8c str r1, [r0] _021E187A: add r0, r5, #0 add r1, r4, #0 bl MOD16_021E0AB0 ldr r2, [r5, #0x24] ldr r3, [r5, #0x28] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E1894 pop {r3, r4, r5, pc} .align 2, 0 _021E1890: .word 0x021C48B8 thumb_func_end MOD16_021E1804 thumb_func_start MOD16_021E1894 MOD16_021E1894: ; 0x021E1894 push {r3, lr} cmp r2, #3 bhi _021E18CE add r2, r2, r2 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _021E18A6: ; jump table .short _021E18AE - _021E18A6 - 2 ; case 0 .short _021E18B4 - _021E18A6 - 2 ; case 1 .short _021E18BA - _021E18A6 - 2 ; case 2 .short _021E18CA - _021E18A6 - 2 ; case 3 _021E18AE: bl MOD16_021E0CB8 pop {r3, pc} _021E18B4: bl MOD16_021E0E90 pop {r3, pc} _021E18BA: cmp r3, #0 bne _021E18C4 bl MOD16_021E1110 pop {r3, pc} _021E18C4: bl MOD16_021E13E0 pop {r3, pc} _021E18CA: bl MOD16_021E1634 _021E18CE: pop {r3, pc} thumb_func_end MOD16_021E1894 thumb_func_start MOD16_021E18D0 MOD16_021E18D0: ; 0x021E18D0 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x1c] bl FUN_02016A18 ldr r0, [r4, #0x18] bl MOD16_021DB4A8 mov r0, #0 str r0, [r4, #0x18] str r0, [r4, #0x1c] pop {r4, pc} thumb_func_end MOD16_021E18D0 thumb_func_start MOD16_021E18E8 MOD16_021E18E8: ; 0x021E18E8 push {r3, lr} ldr r2, [r0, #0x24] ldr r3, [r0, #0x28] bl MOD16_021E18F4 pop {r3, pc} thumb_func_end MOD16_021E18E8 thumb_func_start MOD16_021E18F4 MOD16_021E18F4: ; 0x021E18F4 push {r3, lr} cmp r2, #3 bhi _021E192E add r2, r2, r2 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _021E1906: ; jump table .short _021E190E - _021E1906 - 2 ; case 0 .short _021E1914 - _021E1906 - 2 ; case 1 .short _021E191A - _021E1906 - 2 ; case 2 .short _021E192A - _021E1906 - 2 ; case 3 _021E190E: bl MOD16_021E0BB8 pop {r3, pc} _021E1914: bl MOD16_021E0D90 pop {r3, pc} _021E191A: cmp r3, #0 bne _021E1924 bl MOD16_021E0FDC pop {r3, pc} _021E1924: bl MOD16_021E127C pop {r3, pc} _021E192A: bl MOD16_021E1534 _021E192E: pop {r3, pc} thumb_func_end MOD16_021E18F4 thumb_func_start MOD16_021E1930 MOD16_021E1930: ; 0x021E1930 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x24] cmp r0, #3 bhi _021E195E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1946: ; jump table .short _021E194E - _021E1946 - 2 ; case 0 .short _021E1952 - _021E1946 - 2 ; case 1 .short _021E1956 - _021E1946 - 2 ; case 2 .short _021E195A - _021E1946 - 2 ; case 3 _021E194E: mov r4, #1 b _021E1962 _021E1952: mov r4, #2 b _021E1962 _021E1956: mov r4, #3 b _021E1962 _021E195A: mov r4, #4 b _021E1962 _021E195E: bl ErrorHandling _021E1962: ldr r0, [r5, #0x18] mov r1, #4 add r2, r4, #0 bl MOD16_021DB4CC pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E1930 thumb_func_start MOD16_021E1970 MOD16_021E1970: ; 0x021E1970 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E18D0 ldr r2, [r5, #0x24] ldr r3, [r5, #0x28] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E18F4 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E1970 thumb_func_start MOD16_021E1988 MOD16_021E1988: ; 0x021E1988 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 ldr r0, [r4, #0x18] ldr r1, [r5] add r6, r2, #0 bl MOD16_021D8B48 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E19A4 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E1988 thumb_func_start MOD16_021E19A4 MOD16_021E19A4: ; 0x021E19A4 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r2, #4] add r4, r1, #0 bl MOD16_021D9FB8 cmp r0, #1 bne _021E19D2 add r0, r5, #0 mov r1, #1 bl MOD16_021E19EC cmp r0, #0 beq _021E19C8 ldr r0, [r4, #0x18] ldr r1, [r5] bl MOD16_021D8B48 _021E19C8: add r0, r5, #0 add r1, r4, #0 bl MOD16_021E19DC pop {r3, r4, r5, pc} _021E19D2: add r0, r5, #0 mov r1, #0 bl MOD16_021E19EC pop {r3, r4, r5, pc} thumb_func_end MOD16_021E19A4 thumb_func_start MOD16_021E19DC MOD16_021E19DC: ; 0x021E19DC ldr r3, _021E19E8 ; =MOD16_021D8AD4 add r2, r0, #0 ldr r0, [r1, #0x18] ldr r1, [r2] bx r3 nop _021E19E8: .word MOD16_021D8AD4 thumb_func_end MOD16_021E19DC thumb_func_start MOD16_021E19EC MOD16_021E19EC: ; 0x021E19EC push {r3, r4, r5, lr} ldr r4, [r0] mov r0, #0x79 lsl r0, r0, #2 add r0, r4, r0 add r5, r1, #0 bl MOD16_021D8B30 cmp r5, r0 beq _021E1A10 mov r0, #0x79 lsl r0, r0, #2 add r0, r4, r0 add r1, r5, #0 bl MOD16_021D8B14 mov r0, #1 pop {r3, r4, r5, pc} _021E1A10: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E19EC thumb_func_start MOD16_021E1A14 MOD16_021E1A14: ; 0x021E1A14 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E1AD4 ; =0x00003EFD add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x7d mov r3, #1 bl FUN_020091E0 add r1, r5, #0 add r1, #0xe4 str r0, [r1] add r0, r5, #0 add r0, #0xe4 ldr r0, [r0] bl FUN_02009B04 add r0, r5, #0 add r0, #0xe4 ldr r0, [r0] bl FUN_02009474 ldr r0, _021E1AD8 ; =0x00003E83 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #6 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #3 mov r3, #0 bl FUN_02009298 add r1, r5, #0 add r1, #0xe8 str r0, [r1] add r0, r5, #0 add r0, #0xe8 ldr r0, [r0] bl FUN_02009D68 add r0, r5, #0 add r0, #0xe8 ldr r0, [r0] bl FUN_02009474 ldr r0, _021E1ADC ; =0x00003EFE add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x7e mov r3, #1 bl FUN_02009358 add r1, r5, #0 add r1, #0xec str r0, [r1] ldr r0, _021E1AE0 ; =0x00003EFC add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x7c mov r3, #1 bl FUN_02009358 add r5, #0xf0 str r0, [r5] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E1AD4: .word 0x00003EFD _021E1AD8: .word 0x00003E83 _021E1ADC: .word 0x00003EFE _021E1AE0: .word 0x00003EFC thumb_func_end MOD16_021E1A14 thumb_func_start MOD16_021E1AE4 MOD16_021E1AE4: ; 0x021E1AE4 push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0xe4 ldr r0, [r0] ldr r4, [r1] bl FUN_02009C0C add r0, r5, #0 add r0, #0xe8 ldr r0, [r0] bl FUN_02009E04 mov r0, #5 add r1, r5, #0 lsl r0, r0, #6 add r1, #0xe4 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x51 add r1, r5, #0 lsl r0, r0, #2 add r1, #0xe8 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x52 add r1, r5, #0 lsl r0, r0, #2 add r1, #0xec ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 add r5, #0xf0 ldr r0, [r4, r0] ldr r1, [r5] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E1AE4 thumb_func_start MOD16_021E1B3C MOD16_021E1B3C: ; 0x021E1B3C push {r4, r5, r6, r7, lr} sub sp, #0xc ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 mov r0, #0x3f lsl r0, r0, #8 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x80 mov r3, #1 bl FUN_020091E0 add r1, r5, #0 add r1, #0xf4 str r0, [r1] add r0, r5, #0 add r0, #0xf4 ldr r0, [r0] bl FUN_02009B04 add r0, r5, #0 add r0, #0xf4 ldr r0, [r0] bl FUN_02009474 ldr r0, _021E1BC8 ; =0x00003F01 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x81 mov r3, #1 bl FUN_02009358 add r1, r5, #0 add r1, #0xfc str r0, [r1] ldr r0, _021E1BCC ; =0x00003EFF add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x7f mov r3, #1 bl FUN_02009358 mov r1, #1 lsl r1, r1, #8 str r0, [r5, r1] add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _021E1BC8: .word 0x00003F01 _021E1BCC: .word 0x00003EFF thumb_func_end MOD16_021E1B3C thumb_func_start MOD16_021E1BD0 MOD16_021E1BD0: ; 0x021E1BD0 push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0xf4 ldr r0, [r0] ldr r4, [r1] bl FUN_02009C0C mov r0, #5 add r1, r5, #0 lsl r0, r0, #6 add r1, #0xf4 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x52 add r1, r5, #0 lsl r0, r0, #2 add r1, #0xfc ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r1, #0x53 lsl r1, r1, #2 ldr r0, [r4, r1] sub r1, #0x4c ldr r1, [r5, r1] bl FUN_02009490 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E1BD0 thumb_func_start MOD16_021E1C10 MOD16_021E1C10: ; 0x021E1C10 push {r4, r5, r6, lr} sub sp, #0x70 ldr r4, [r1] ldr r3, _021E1C90 ; =0x00003EFC add r5, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #5 str r1, [sp, #0x10] lsl r0, r0, #6 add r6, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r2, #0x79 add r3, r3, #2 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] add r1, sp, #0x2c str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x20 str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] add r0, r5, #0 str r6, [sp, #0x48] bl MOD16_021E1D60 mov r3, #0x41 lsl r3, r3, #2 ldr r2, [r5, r3] add r3, r3, #4 ldr r3, [r5, r3] add r0, r5, #0 add r1, sp, #0x2c bl MOD16_021E1D24 add sp, #0x70 pop {r4, r5, r6, pc} nop _021E1C90: .word 0x00003EFC thumb_func_end MOD16_021E1C10 thumb_func_start MOD16_021E1C94 MOD16_021E1C94: ; 0x021E1C94 push {r4, lr} add r4, r0, #0 bl MOD16_021E1E14 add r0, r4, #0 bl MOD16_021E1E2C pop {r4, pc} thumb_func_end MOD16_021E1C94 thumb_func_start MOD16_021E1CA4 MOD16_021E1CA4: ; 0x021E1CA4 push {r4, r5, r6, lr} sub sp, #0x70 ldr r4, [r1] ldr r3, _021E1D20 ; =0x00003EFC add r5, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #5 str r1, [sp, #0x10] lsl r0, r0, #6 add r6, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r2, #0x79 add r3, r3, #2 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x20 str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] add r0, r5, #0 str r6, [sp, #0x48] bl MOD16_021E1E2C mov r3, #0x41 lsl r3, r3, #2 ldr r2, [r5, r3] add r3, r3, #4 ldr r3, [r5, r3] add r0, r5, #0 add r1, sp, #0x2c bl MOD16_021E1D24 add sp, #0x70 pop {r4, r5, r6, pc} .align 2, 0 _021E1D20: .word 0x00003EFC thumb_func_end MOD16_021E1CA4 thumb_func_start MOD16_021E1D24 MOD16_021E1D24: ; 0x021E1D24 push {r3, lr} cmp r2, #3 bhi _021E1D5E add r2, r2, r2 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _021E1D36: ; jump table .short _021E1D3E - _021E1D36 - 2 ; case 0 .short _021E1D44 - _021E1D36 - 2 ; case 1 .short _021E1D4A - _021E1D36 - 2 ; case 2 .short _021E1D5A - _021E1D36 - 2 ; case 3 _021E1D3E: bl MOD16_021E1E4C pop {r3, pc} _021E1D44: bl MOD16_021E1EBC pop {r3, pc} _021E1D4A: cmp r3, #0 bne _021E1D54 bl MOD16_021E1F2C pop {r3, pc} _021E1D54: bl MOD16_021E1FC0 pop {r3, pc} _021E1D5A: bl MOD16_021E207C _021E1D5E: pop {r3, pc} thumb_func_end MOD16_021E1D24 thumb_func_start MOD16_021E1D60 MOD16_021E1D60: ; 0x021E1D60 push {r3, r4, r5, r6, r7, lr} mov r7, #0xe add r6, r0, #0 add r4, r1, #0 mov r5, #0 lsl r7, r7, #0x10 _021E1D6C: cmp r5, #5 bhi _021E1DCA add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1D7C: ; jump table .short _021E1D88 - _021E1D7C - 2 ; case 0 .short _021E1D96 - _021E1D7C - 2 ; case 1 .short _021E1DA0 - _021E1D7C - 2 ; case 2 .short _021E1DAA - _021E1D7C - 2 ; case 3 .short _021E1DB4 - _021E1D7C - 2 ; case 4 .short _021E1DBE - _021E1D7C - 2 ; case 5 _021E1D88: mov r0, #0xd lsl r0, r0, #0x10 str r0, [r4, #0xc] mov r0, #0x35 lsl r0, r0, #0xe str r0, [r4, #8] b _021E1DCA _021E1D96: mov r0, #0xf lsl r0, r0, #0x10 str r0, [r4, #0xc] str r7, [r4, #8] b _021E1DCA _021E1DA0: mov r0, #0x11 lsl r0, r0, #0x10 str r0, [r4, #0xc] str r7, [r4, #8] b _021E1DCA _021E1DAA: mov r0, #0x13 lsl r0, r0, #0x10 str r0, [r4, #0xc] str r7, [r4, #8] b _021E1DCA _021E1DB4: mov r0, #0x15 lsl r0, r0, #0x10 str r0, [r4, #0xc] str r7, [r4, #8] b _021E1DCA _021E1DBE: mov r0, #0x17 lsl r0, r0, #0x10 str r0, [r4, #0xc] mov r0, #0x35 lsl r0, r0, #0xe str r0, [r4, #8] _021E1DCA: add r0, r4, #0 bl FUN_0201FF84 str r0, [r6] cmp r5, #5 bhi _021E1E0A add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E1DE2: ; jump table .short _021E1DEE - _021E1DE2 - 2 ; case 0 .short _021E1DF8 - _021E1DE2 - 2 ; case 1 .short _021E1DF8 - _021E1DE2 - 2 ; case 2 .short _021E1DF8 - _021E1DE2 - 2 ; case 3 .short _021E1DF8 - _021E1DE2 - 2 ; case 4 .short _021E1E02 - _021E1DE2 - 2 ; case 5 _021E1DEE: ldr r0, [r6] mov r1, #3 bl FUN_02020130 b _021E1E0A _021E1DF8: ldr r0, [r6] mov r1, #2 bl FUN_02020130 b _021E1E0A _021E1E02: ldr r0, [r6] mov r1, #1 bl FUN_02020130 _021E1E0A: add r5, r5, #1 add r6, r6, #4 cmp r5, #6 blt _021E1D6C pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E1D60 thumb_func_start MOD16_021E1E14 MOD16_021E1E14: ; 0x021E1E14 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021E1E1A: ldr r0, [r5] bl FUN_0201FFC8 add r4, r4, #1 add r5, r5, #4 cmp r4, #6 blt _021E1E1A pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E1E14 thumb_func_start MOD16_021E1E2C MOD16_021E1E2C: ; 0x021E1E2C push {r4, r5, r6, lr} mov r4, #0 add r5, r0, #0 add r6, r4, #0 _021E1E34: ldr r0, [r5, #0x30] cmp r0, #0 beq _021E1E40 bl FUN_0201FFC8 str r6, [r5, #0x30] _021E1E40: add r4, r4, #1 add r5, r5, #4 cmp r4, #0xf blt _021E1E34 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E1E2C thumb_func_start MOD16_021E1E4C MOD16_021E1E4C: ; 0x021E1E4C push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp] mov r0, #0 str r0, [sp, #0x10] mov r0, #0x30 add r6, r1, #0 str r0, [sp, #8] ldr r0, [sp, #0x10] add r7, r6, #0 str r0, [sp, #4] add r7, #8 _021E1E64: ldr r0, [sp, #8] mov r4, #0x30 lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [r6, #0xc] mov r0, #0 str r0, [sp, #0xc] ldr r0, [sp, #4] lsl r1, r0, #2 ldr r0, [sp] add r5, r0, r1 _021E1E7E: str r4, [r6, #8] ldr r0, [r7] lsl r0, r0, #0xc str r0, [r7] add r0, r6, #0 bl FUN_0201FF84 mov r1, #0 str r0, [r5, #0x30] bl FUN_02020130 ldr r0, [sp, #0xc] add r4, #0x50 add r0, r0, #1 add r5, r5, #4 str r0, [sp, #0xc] cmp r0, #2 blt _021E1E7E ldr r0, [sp, #8] add r0, #0x20 str r0, [sp, #8] ldr r0, [sp, #4] add r0, r0, #2 str r0, [sp, #4] ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] cmp r0, #3 blt _021E1E64 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E1E4C thumb_func_start MOD16_021E1EBC MOD16_021E1EBC: ; 0x021E1EBC push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp] mov r0, #0 str r0, [sp, #0x10] mov r0, #0x10 add r6, r1, #0 str r0, [sp, #8] ldr r0, [sp, #0x10] add r7, r6, #0 str r0, [sp, #4] add r7, #8 _021E1ED4: ldr r0, [sp, #8] mov r4, #0x30 lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [r6, #0xc] mov r0, #0 str r0, [sp, #0xc] ldr r0, [sp, #4] lsl r1, r0, #2 ldr r0, [sp] add r5, r0, r1 _021E1EEE: str r4, [r6, #8] ldr r0, [r7] lsl r0, r0, #0xc str r0, [r7] add r0, r6, #0 bl FUN_0201FF84 mov r1, #0 str r0, [r5, #0x30] bl FUN_02020130 ldr r0, [sp, #0xc] add r4, #0x50 add r0, r0, #1 add r5, r5, #4 str r0, [sp, #0xc] cmp r0, #2 blt _021E1EEE ldr r0, [sp, #8] add r0, #0x20 str r0, [sp, #8] ldr r0, [sp, #4] add r0, r0, #2 str r0, [sp, #4] ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] cmp r0, #5 blt _021E1ED4 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E1EBC thumb_func_start MOD16_021E1F2C MOD16_021E1F2C: ; 0x021E1F2C push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp] mov r0, #0 str r0, [sp, #0x10] mov r0, #0x10 add r6, r1, #0 str r0, [sp, #8] ldr r0, [sp, #0x10] add r7, r6, #0 str r0, [sp, #4] add r7, #8 _021E1F44: ldr r0, [sp, #8] mov r4, #0x30 lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [r6, #0xc] mov r0, #0 str r0, [sp, #0xc] ldr r0, [sp, #4] lsl r1, r0, #2 ldr r0, [sp] add r5, r0, r1 _021E1F5E: str r4, [r6, #8] ldr r0, [r7] lsl r0, r0, #0xc str r0, [r7] add r0, r6, #0 bl FUN_0201FF84 mov r1, #0 str r0, [r5, #0x30] bl FUN_02020130 ldr r0, [sp, #0xc] add r4, #0x50 add r0, r0, #1 add r5, r5, #4 str r0, [sp, #0xc] cmp r0, #2 blt _021E1F5E ldr r0, [sp, #8] add r0, #0x20 str r0, [sp, #8] ldr r0, [sp, #4] add r0, r0, #2 str r0, [sp, #4] ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] cmp r0, #5 blt _021E1F44 mov r0, #0xb0 mov r2, #0x18 str r0, [r6, #0xc] lsl r0, r2, #0xc str r0, [r6, #8] ldr r0, [r6, #0xc] lsl r1, r0, #0xc lsl r0, r2, #0xf add r0, r1, r0 str r0, [r6, #0xc] add r0, r6, #0 bl FUN_0201FF84 ldr r1, [sp] str r0, [r1, #0x58] mov r1, #5 bl FUN_02020130 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E1F2C thumb_func_start MOD16_021E1FC0 MOD16_021E1FC0: ; 0x021E1FC0 push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp] mov r0, #0 str r0, [sp, #0x10] mov r0, #0x10 add r6, r1, #0 str r0, [sp, #8] ldr r0, [sp, #0x10] add r7, r6, #0 str r0, [sp, #4] add r7, #8 _021E1FD8: ldr r0, [sp, #8] mov r4, #0x30 lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [r6, #0xc] mov r0, #0 str r0, [sp, #0xc] ldr r0, [sp, #4] lsl r1, r0, #2 ldr r0, [sp] add r5, r0, r1 _021E1FF2: str r4, [r6, #8] ldr r0, [r7] lsl r0, r0, #0xc str r0, [r7] add r0, r6, #0 bl FUN_0201FF84 mov r1, #0 str r0, [r5, #0x30] bl FUN_02020130 ldr r0, [sp, #0xc] add r4, #0x50 add r0, r0, #1 add r5, r5, #4 str r0, [sp, #0xc] cmp r0, #2 blt _021E1FF2 ldr r0, [sp, #8] add r0, #0x20 str r0, [sp, #8] ldr r0, [sp, #4] add r0, r0, #2 str r0, [sp, #4] ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] cmp r0, #4 blt _021E1FD8 mov r0, #0x90 str r0, [r6, #0xc] mov r0, #0x80 lsl r0, r0, #0xc str r0, [r6, #8] ldr r0, [r6, #0xc] lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [r6, #0xc] add r0, r6, #0 bl FUN_0201FF84 ldr r1, [sp] str r0, [r1, #0x50] mov r1, #0 bl FUN_02020130 mov r0, #0xb0 mov r2, #0x18 str r0, [r6, #0xc] lsl r0, r2, #0xc str r0, [r6, #8] ldr r0, [r6, #0xc] lsl r1, r0, #0xc lsl r0, r2, #0xf add r0, r1, r0 str r0, [r6, #0xc] add r0, r6, #0 bl FUN_0201FF84 ldr r1, [sp] str r0, [r1, #0x54] mov r1, #4 bl FUN_02020130 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E1FC0 thumb_func_start MOD16_021E207C MOD16_021E207C: ; 0x021E207C push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp] mov r0, #0 str r0, [sp, #0x10] mov r0, #0x10 add r6, r1, #0 str r0, [sp, #8] ldr r0, [sp, #0x10] add r7, r6, #0 str r0, [sp, #4] add r7, #8 _021E2094: ldr r0, [sp, #8] mov r4, #0x1c lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [r6, #0xc] mov r0, #0 str r0, [sp, #0xc] ldr r0, [sp, #4] lsl r1, r0, #2 ldr r0, [sp] add r5, r0, r1 _021E20AE: str r4, [r6, #8] ldr r0, [r7] lsl r0, r0, #0xc str r0, [r7] add r0, r6, #0 bl FUN_0201FF84 mov r1, #6 str r0, [r5, #0x30] bl FUN_02020130 ldr r0, [sp, #0xc] add r4, #0x38 add r0, r0, #1 add r5, r5, #4 str r0, [sp, #0xc] cmp r0, #3 blt _021E20AE ldr r0, [sp, #8] add r0, #0x20 str r0, [sp, #8] ldr r0, [sp, #4] add r0, r0, #3 str r0, [sp, #4] ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] cmp r0, #5 blt _021E2094 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E207C thumb_func_start MOD16_021E20EC MOD16_021E20EC: ; 0x021E20EC push {r4, r5, r6, r7, lr} sub sp, #0x7c ldr r4, [r1] ldr r3, _021E22A4 ; =0x00003EFF str r0, [sp, #0x2c] mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #5 str r1, [sp, #0x10] lsl r0, r0, #6 add r5, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x58 sub r2, #0x7c add r3, r3, #2 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x38] add r0, sp, #0x58 str r0, [sp, #0x3c] mov r0, #0xf str r0, [sp, #0x4c] mov r0, #2 str r0, [sp, #0x50] mov r0, #0 str r0, [sp, #0x34] mov r0, #0x10 ldr r7, [sp, #0x34] str r5, [sp, #0x54] str r0, [sp, #0x30] _021E2156: ldr r0, [sp, #0x30] mov r6, #0 str r0, [sp, #0x44] lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 add r0, r1, r0 str r0, [sp, #0x44] ldr r0, [sp, #0x2c] lsl r1, r7, #2 mov r5, #0x1c add r4, r0, r1 _021E216E: str r5, [sp, #0x40] lsl r0, r5, #0xc str r0, [sp, #0x40] add r0, sp, #0x38 bl FUN_0201FF84 add r1, r4, #0 add r1, #0xa8 str r0, [r1] add r0, r6, r7 cmp r0, #0xe bhi _021E2280 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E2192: ; jump table .short _021E21B0 - _021E2192 - 2 ; case 0 .short _021E21BE - _021E2192 - 2 ; case 1 .short _021E21CC - _021E2192 - 2 ; case 2 .short _021E21DA - _021E2192 - 2 ; case 3 .short _021E21E8 - _021E2192 - 2 ; case 4 .short _021E21F6 - _021E2192 - 2 ; case 5 .short _021E2204 - _021E2192 - 2 ; case 6 .short _021E2212 - _021E2192 - 2 ; case 7 .short _021E2220 - _021E2192 - 2 ; case 8 .short _021E222E - _021E2192 - 2 ; case 9 .short _021E223C - _021E2192 - 2 ; case 10 .short _021E224A - _021E2192 - 2 ; case 11 .short _021E2258 - _021E2192 - 2 ; case 12 .short _021E2266 - _021E2192 - 2 ; case 13 .short _021E2274 - _021E2192 - 2 ; case 14 _021E21B0: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #0 bl FUN_02020130 b _021E2280 _021E21BE: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #5 bl FUN_02020130 b _021E2280 _021E21CC: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #0xa bl FUN_02020130 b _021E2280 _021E21DA: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #1 bl FUN_02020130 b _021E2280 _021E21E8: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #6 bl FUN_02020130 b _021E2280 _021E21F6: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #0xb bl FUN_02020130 b _021E2280 _021E2204: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #2 bl FUN_02020130 b _021E2280 _021E2212: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #9 bl FUN_02020130 b _021E2280 _021E2220: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #0xc bl FUN_02020130 b _021E2280 _021E222E: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #3 bl FUN_02020130 b _021E2280 _021E223C: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #8 bl FUN_02020130 b _021E2280 _021E224A: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #0xd bl FUN_02020130 b _021E2280 _021E2258: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #4 bl FUN_02020130 b _021E2280 _021E2266: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #7 bl FUN_02020130 b _021E2280 _021E2274: add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] mov r1, #0 bl FUN_020200A0 _021E2280: add r6, r6, #1 add r5, #0x38 add r4, r4, #4 cmp r6, #3 bge _021E228C b _021E216E _021E228C: ldr r0, [sp, #0x30] add r7, r7, #3 add r0, #0x20 str r0, [sp, #0x30] ldr r0, [sp, #0x34] add r0, r0, #1 str r0, [sp, #0x34] cmp r0, #5 bge _021E22A0 b _021E2156 _021E22A0: add sp, #0x7c pop {r4, r5, r6, r7, pc} .align 2, 0 _021E22A4: .word 0x00003EFF thumb_func_end MOD16_021E20EC thumb_func_start MOD16_021E22A8 MOD16_021E22A8: ; 0x021E22A8 push {r4, r5, r6, lr} mov r4, #0 add r5, r0, #0 add r6, r4, #0 _021E22B0: add r0, r5, #0 add r0, #0xa8 ldr r0, [r0] cmp r0, #0 beq _021E22C4 bl FUN_0201FFC8 add r0, r5, #0 add r0, #0xa8 str r6, [r0] _021E22C4: add r4, r4, #1 add r5, r5, #4 cmp r4, #0xf blt _021E22B0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E22A8 thumb_func_start MOD16_021E22D0 MOD16_021E22D0: ; 0x021E22D0 push {r3, r4, r5, r6, lr} sub sp, #0x2c add r5, r0, #0 ldr r4, [r1] mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, _021E2330 ; =0x00003E83 add r6, r2, #0 bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] str r1, [sp, #4] mov r1, #0 bl FUN_02009E54 str r0, [sp, #0xc] mov r0, #0 mov r2, #0x15 str r0, [sp, #0x1c] str r0, [sp, #0x20] mov r0, #2 str r0, [sp, #0x24] str r6, [sp, #0x28] lsl r2, r2, #4 ldr r2, [r4, r2] add r0, r5, #0 add r1, sp, #4 bl MOD16_021E23D0 mov r3, #0x42 lsl r3, r3, #2 ldr r0, [r5, r3] add r2, r3, #0 str r0, [sp] add r2, #0x48 sub r3, r3, #4 ldr r2, [r4, r2] ldr r3, [r5, r3] add r0, r5, #0 add r1, sp, #4 bl MOD16_021E23A0 add sp, #0x2c pop {r3, r4, r5, r6, pc} nop _021E2330: .word 0x00003E83 thumb_func_end MOD16_021E22D0 thumb_func_start MOD16_021E2334 MOD16_021E2334: ; 0x021E2334 push {r4, lr} add r4, r0, #0 bl MOD16_021E2554 add r0, r4, #0 bl MOD16_021E2570 pop {r4, pc} thumb_func_end MOD16_021E2334 thumb_func_start MOD16_021E2344 MOD16_021E2344: ; 0x021E2344 push {r3, r4, r5, r6, lr} sub sp, #0x2c add r5, r0, #0 ldr r4, [r1] mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, _021E239C ; =0x00003E83 add r6, r2, #0 bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] str r1, [sp, #4] mov r1, #0 bl FUN_02009E54 str r0, [sp, #0xc] mov r0, #0 str r0, [sp, #0x1c] str r0, [sp, #0x20] mov r0, #2 str r0, [sp, #0x24] add r0, r5, #0 str r6, [sp, #0x28] bl MOD16_021E2570 mov r3, #0x42 lsl r3, r3, #2 ldr r0, [r5, r3] add r2, r3, #0 str r0, [sp] add r2, #0x48 sub r3, r3, #4 ldr r2, [r4, r2] ldr r3, [r5, r3] add r0, r5, #0 add r1, sp, #4 bl MOD16_021E23A0 add sp, #0x2c pop {r3, r4, r5, r6, pc} nop _021E239C: .word 0x00003E83 thumb_func_end MOD16_021E2344 thumb_func_start MOD16_021E23A0 MOD16_021E23A0: ; 0x021E23A0 push {r3, lr} cmp r3, #0 beq _021E23B0 cmp r3, #1 beq _021E23B6 cmp r3, #2 beq _021E23BC pop {r3, pc} _021E23B0: bl MOD16_021E2590 pop {r3, pc} _021E23B6: bl MOD16_021E2634 pop {r3, pc} _021E23BC: ldr r3, [sp, #8] cmp r3, #0 bne _021E23C8 bl MOD16_021E26F0 pop {r3, pc} _021E23C8: bl MOD16_021E27AC pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E23A0 thumb_func_start MOD16_021E23D0 MOD16_021E23D0: ; 0x021E23D0 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #8] add r6, r2, #0 mov r1, #2 bl FUN_0201E28C add r7, r0, #0 add r0, r6, #0 mov r1, #8 mov r2, #2 bl MOD16_021DB388 str r0, [sp, #8] mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r1, [sp, #8] ldr r2, _021E2550 ; =0x00000266 add r0, r6, #0 mov r3, #0x32 bl MOD16_021DB3C8 ldr r1, [sp, #8] neg r0, r0 str r1, [r4, #4] ldr r1, [r5, #4] lsr r0, r0, #1 str r1, [r4, #0xc] str r0, [r4, #0x10] mov r0, #5 mvn r0, r0 str r0, [r4, #0x14] add r0, r4, #0 bl MOD16_021DB2BC str r0, [r5, #0x1c] ldr r0, [r0] add r1, r7, #3 bl FUN_02011A60 ldr r0, [sp, #8] bl MOD16_021DB3BC add r0, r6, #0 mov r1, #8 mov r2, #2 bl MOD16_021DB388 str r0, [sp, #0xc] mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r1, [sp, #0xc] ldr r2, _021E2550 ; =0x00000266 add r0, r6, #0 mov r3, #0x2f bl MOD16_021DB3C8 ldr r1, [sp, #0xc] neg r0, r0 str r1, [r4, #4] ldr r1, [r5, #8] lsr r0, r0, #1 str r1, [r4, #0xc] str r0, [r4, #0x10] mov r0, #5 mvn r0, r0 str r0, [r4, #0x14] add r0, r4, #0 bl MOD16_021DB2BC str r0, [r5, #0x20] ldr r0, [r0] add r1, r7, #3 bl FUN_02011A60 ldr r0, [sp, #0xc] bl MOD16_021DB3BC add r0, r6, #0 mov r1, #8 mov r2, #2 bl MOD16_021DB388 str r0, [sp, #0x10] mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r1, [sp, #0x10] ldr r2, _021E2550 ; =0x00000266 add r0, r6, #0 mov r3, #0x30 bl MOD16_021DB3C8 ldr r1, [sp, #0x10] neg r0, r0 str r1, [r4, #4] ldr r1, [r5, #0xc] lsr r0, r0, #1 str r1, [r4, #0xc] str r0, [r4, #0x10] mov r0, #5 mvn r0, r0 str r0, [r4, #0x14] add r0, r4, #0 bl MOD16_021DB2BC str r0, [r5, #0x24] ldr r0, [r0] add r1, r7, #3 bl FUN_02011A60 ldr r0, [sp, #0x10] bl MOD16_021DB3BC add r0, r6, #0 mov r1, #8 mov r2, #2 bl MOD16_021DB388 str r0, [sp, #0x14] mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r1, [sp, #0x14] ldr r2, _021E2550 ; =0x00000266 add r0, r6, #0 mov r3, #0x31 bl MOD16_021DB3C8 ldr r1, [sp, #0x14] neg r0, r0 str r1, [r4, #4] ldr r1, [r5, #0x10] lsr r0, r0, #1 str r1, [r4, #0xc] str r0, [r4, #0x10] mov r0, #5 mvn r0, r0 str r0, [r4, #0x14] add r0, r4, #0 bl MOD16_021DB2BC str r0, [r5, #0x28] ldr r0, [r0] add r1, r7, #3 bl FUN_02011A60 ldr r0, [sp, #0x14] bl MOD16_021DB3BC add r0, r6, #0 mov r1, #8 mov r2, #2 bl MOD16_021DB388 str r0, [sp, #0x18] mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r1, [sp, #0x18] ldr r2, _021E2550 ; =0x00000266 add r0, r6, #0 mov r3, #0x33 bl MOD16_021DB3C8 ldr r1, [sp, #0x18] neg r0, r0 str r1, [r4, #4] ldr r1, [r5, #0x14] lsr r0, r0, #1 str r1, [r4, #0xc] str r0, [r4, #0x10] mov r0, #5 mvn r0, r0 str r0, [r4, #0x14] add r0, r4, #0 bl MOD16_021DB2BC str r0, [r5, #0x2c] ldr r0, [r0] add r1, r7, #1 bl FUN_02011A60 ldr r0, [sp, #0x18] bl MOD16_021DB3BC add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 _021E2550: .word 0x00000266 thumb_func_end MOD16_021E23D0 thumb_func_start MOD16_021E2554 MOD16_021E2554: ; 0x021E2554 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021E255A: ldr r0, [r5, #0x18] cmp r0, #0 beq _021E2564 bl MOD16_021DB338 _021E2564: add r4, r4, #1 add r5, r5, #4 cmp r4, #6 blt _021E255A pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E2554 thumb_func_start MOD16_021E2570 MOD16_021E2570: ; 0x021E2570 push {r4, r5, r6, lr} mov r4, #0 add r5, r0, #0 add r6, r4, #0 _021E2578: ldr r0, [r5, #0x6c] cmp r0, #0 beq _021E2584 bl MOD16_021DB338 str r6, [r5, #0x6c] _021E2584: add r4, r4, #1 add r5, r5, #4 cmp r4, #0xf blt _021E2578 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E2570 thumb_func_start MOD16_021E2590 MOD16_021E2590: ; 0x021E2590 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 add r0, r1, #0 str r1, [sp, #8] ldr r0, [r0, #8] mov r1, #2 str r2, [sp, #0xc] bl FUN_0201E28C str r0, [sp, #0x10] add r0, #0xb mov r5, #0 str r0, [sp, #0x10] _021E25AC: ldr r0, [sp, #0xc] mov r1, #0xa mov r2, #2 bl MOD16_021DB388 add r7, r0, #0 cmp r5, #5 bhi _021E25EA add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E25C8: ; jump table .short _021E25D4 - _021E25C8 - 2 ; case 0 .short _021E25D8 - _021E25C8 - 2 ; case 1 .short _021E25DC - _021E25C8 - 2 ; case 2 .short _021E25E0 - _021E25C8 - 2 ; case 3 .short _021E25E4 - _021E25C8 - 2 ; case 4 .short _021E25E8 - _021E25C8 - 2 ; case 5 _021E25D4: mov r4, #0x51 b _021E25EA _021E25D8: mov r4, #0x52 b _021E25EA _021E25DC: mov r4, #0x53 b _021E25EA _021E25E0: mov r4, #0x54 b _021E25EA _021E25E4: mov r4, #0x55 b _021E25EA _021E25E8: mov r4, #0x56 _021E25EA: mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r0, [sp, #0xc] ldr r2, _021E2630 ; =0x00000266 add r1, r7, #0 add r3, r4, #0 bl MOD16_021DB3C8 neg r0, r0 lsr r1, r0, #1 ldr r0, [sp, #8] str r1, [r0, #0x10] str r7, [r0, #4] ldr r1, [r6, #0x30] str r1, [r0, #0xc] mov r1, #5 mvn r1, r1 str r1, [r0, #0x14] bl MOD16_021DB2BC str r0, [r6, #0x6c] ldr r0, [r0] ldr r1, [sp, #0x10] bl FUN_02011A60 add r0, r7, #0 bl MOD16_021DB3BC add r5, r5, #1 add r6, r6, #4 cmp r5, #6 blt _021E25AC add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021E2630: .word 0x00000266 thumb_func_end MOD16_021E2590 thumb_func_start MOD16_021E2634 MOD16_021E2634: ; 0x021E2634 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 add r0, r1, #0 str r1, [sp, #8] ldr r0, [r0, #8] mov r1, #2 str r2, [sp, #0xc] bl FUN_0201E28C str r0, [sp, #0x10] add r0, #0xb mov r5, #0 str r0, [sp, #0x10] _021E2650: ldr r0, [sp, #0xc] mov r1, #0xa mov r2, #2 bl MOD16_021DB388 add r7, r0, #0 cmp r5, #9 bhi _021E26A6 add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E266C: ; jump table .short _021E2680 - _021E266C - 2 ; case 0 .short _021E2684 - _021E266C - 2 ; case 1 .short _021E2688 - _021E266C - 2 ; case 2 .short _021E268C - _021E266C - 2 ; case 3 .short _021E2690 - _021E266C - 2 ; case 4 .short _021E2694 - _021E266C - 2 ; case 5 .short _021E2698 - _021E266C - 2 ; case 6 .short _021E269C - _021E266C - 2 ; case 7 .short _021E26A0 - _021E266C - 2 ; case 8 .short _021E26A4 - _021E266C - 2 ; case 9 _021E2680: mov r4, #0x36 b _021E26A6 _021E2684: mov r4, #0x37 b _021E26A6 _021E2688: mov r4, #0x38 b _021E26A6 _021E268C: mov r4, #0x39 b _021E26A6 _021E2690: mov r4, #0x3a b _021E26A6 _021E2694: mov r4, #0x3b b _021E26A6 _021E2698: mov r4, #0x3c b _021E26A6 _021E269C: mov r4, #0x3d b _021E26A6 _021E26A0: mov r4, #0x3e b _021E26A6 _021E26A4: mov r4, #0x73 _021E26A6: mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r0, [sp, #0xc] ldr r2, _021E26EC ; =0x00000266 add r1, r7, #0 add r3, r4, #0 bl MOD16_021DB3C8 neg r0, r0 lsr r1, r0, #1 ldr r0, [sp, #8] str r1, [r0, #0x10] str r7, [r0, #4] ldr r1, [r6, #0x30] str r1, [r0, #0xc] mov r1, #5 mvn r1, r1 str r1, [r0, #0x14] bl MOD16_021DB2BC str r0, [r6, #0x6c] ldr r0, [r0] ldr r1, [sp, #0x10] bl FUN_02011A60 add r0, r7, #0 bl MOD16_021DB3BC add r5, r5, #1 add r6, r6, #4 cmp r5, #0xa blt _021E2650 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021E26EC: .word 0x00000266 thumb_func_end MOD16_021E2634 thumb_func_start MOD16_021E26F0 MOD16_021E26F0: ; 0x021E26F0 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 add r0, r1, #0 str r1, [sp, #8] ldr r0, [r0, #8] mov r1, #2 str r2, [sp, #0xc] bl FUN_0201E28C str r0, [sp, #0x10] add r0, #0xb mov r5, #0 str r0, [sp, #0x10] _021E270C: ldr r0, [sp, #0xc] mov r1, #0xa mov r2, #2 bl MOD16_021DB388 add r7, r0, #0 cmp r5, #9 bhi _021E2762 add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E2728: ; jump table .short _021E273C - _021E2728 - 2 ; case 0 .short _021E2740 - _021E2728 - 2 ; case 1 .short _021E2744 - _021E2728 - 2 ; case 2 .short _021E2748 - _021E2728 - 2 ; case 3 .short _021E274C - _021E2728 - 2 ; case 4 .short _021E2750 - _021E2728 - 2 ; case 5 .short _021E2754 - _021E2728 - 2 ; case 6 .short _021E2758 - _021E2728 - 2 ; case 7 .short _021E275C - _021E2728 - 2 ; case 8 .short _021E2760 - _021E2728 - 2 ; case 9 _021E273C: mov r4, #0x40 b _021E2762 _021E2740: mov r4, #0x46 b _021E2762 _021E2744: mov r4, #0x49 b _021E2762 _021E2748: mov r4, #0x47 b _021E2762 _021E274C: mov r4, #0x48 b _021E2762 _021E2750: mov r4, #0x4c b _021E2762 _021E2754: mov r4, #0x4b b _021E2762 _021E2758: mov r4, #0x4d b _021E2762 _021E275C: mov r4, #0x50 b _021E2762 _021E2760: mov r4, #0x74 _021E2762: mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r0, [sp, #0xc] ldr r2, _021E27A8 ; =0x00000266 add r1, r7, #0 add r3, r4, #0 bl MOD16_021DB3C8 neg r0, r0 lsr r1, r0, #1 ldr r0, [sp, #8] str r1, [r0, #0x10] str r7, [r0, #4] ldr r1, [r6, #0x30] str r1, [r0, #0xc] mov r1, #5 mvn r1, r1 str r1, [r0, #0x14] bl MOD16_021DB2BC str r0, [r6, #0x6c] ldr r0, [r0] ldr r1, [sp, #0x10] bl FUN_02011A60 add r0, r7, #0 bl MOD16_021DB3BC add r5, r5, #1 add r6, r6, #4 cmp r5, #0xa blt _021E270C add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021E27A8: .word 0x00000266 thumb_func_end MOD16_021E26F0 thumb_func_start MOD16_021E27AC MOD16_021E27AC: ; 0x021E27AC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 add r0, r1, #0 str r1, [sp, #8] ldr r0, [r0, #8] mov r1, #2 str r2, [sp, #0xc] bl FUN_0201E28C str r0, [sp, #0x10] add r0, #0xb mov r5, #0 str r0, [sp, #0x10] _021E27C8: ldr r0, [sp, #0xc] mov r1, #0xa mov r2, #2 bl MOD16_021DB388 add r7, r0, #0 cmp r5, #8 bhi _021E2818 add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E27E4: ; jump table .short _021E27F6 - _021E27E4 - 2 ; case 0 .short _021E27FA - _021E27E4 - 2 ; case 1 .short _021E27FE - _021E27E4 - 2 ; case 2 .short _021E2802 - _021E27E4 - 2 ; case 3 .short _021E2806 - _021E27E4 - 2 ; case 4 .short _021E280A - _021E27E4 - 2 ; case 5 .short _021E280E - _021E27E4 - 2 ; case 6 .short _021E2812 - _021E27E4 - 2 ; case 7 .short _021E2816 - _021E27E4 - 2 ; case 8 _021E27F6: mov r4, #0x41 b _021E2818 _021E27FA: mov r4, #0x42 b _021E2818 _021E27FE: mov r4, #0x44 b _021E2818 _021E2802: mov r4, #0x43 b _021E2818 _021E2806: mov r4, #0x4a b _021E2818 _021E280A: mov r4, #0x45 b _021E2818 _021E280E: mov r4, #0x4e b _021E2818 _021E2812: mov r4, #0x4f b _021E2818 _021E2816: mov r4, #0x74 _021E2818: mov r0, #0 str r0, [sp] str r0, [sp, #4] ldr r0, [sp, #0xc] ldr r2, _021E2860 ; =0x00000266 add r1, r7, #0 add r3, r4, #0 bl MOD16_021DB3C8 neg r0, r0 lsr r1, r0, #1 ldr r0, [sp, #8] str r1, [r0, #0x10] str r7, [r0, #4] ldr r1, [r6, #0x30] str r1, [r0, #0xc] mov r1, #5 mvn r1, r1 str r1, [r0, #0x14] bl MOD16_021DB2BC str r0, [r6, #0x6c] ldr r0, [r0] ldr r1, [sp, #0x10] bl FUN_02011A60 add r0, r7, #0 bl MOD16_021DB3BC add r5, r5, #1 add r6, r6, #4 cmp r5, #9 blt _021E27C8 add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _021E2860: .word 0x00000266 thumb_func_end MOD16_021E27AC thumb_func_start MOD16_021E2864 MOD16_021E2864: ; 0x021E2864 ldr r1, _021E286C ; =0x0000FFFF add r0, #0x84 str r1, [r0] bx lr .align 2, 0 _021E286C: .word 0x0000FFFF thumb_func_end MOD16_021E2864 thumb_func_start MOD16_021E2870 MOD16_021E2870: ; 0x021E2870 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E28C4 ldr r2, [r5, #0x24] ldr r3, [r5, #0x28] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E2888 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E2870 thumb_func_start MOD16_021E2888 MOD16_021E2888: ; 0x021E2888 push {r3, lr} cmp r2, #3 bhi _021E28C2 add r2, r2, r2 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _021E289A: ; jump table .short _021E28A2 - _021E289A - 2 ; case 0 .short _021E28A8 - _021E289A - 2 ; case 1 .short _021E28AE - _021E289A - 2 ; case 2 .short _021E28BE - _021E289A - 2 ; case 3 _021E28A2: bl MOD16_021E2994 pop {r3, pc} _021E28A8: bl MOD16_021E2A00 pop {r3, pc} _021E28AE: cmp r3, #0 bne _021E28B8 bl MOD16_021E2A84 pop {r3, pc} _021E28B8: bl MOD16_021E2B08 pop {r3, pc} _021E28BE: bl MOD16_021E2C28 _021E28C2: pop {r3, pc} thumb_func_end MOD16_021E2888 thumb_func_start MOD16_021E28C4 MOD16_021E28C4: ; 0x021E28C4 push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0x80 ldr r0, [r0] add r4, r1, #0 cmp r0, #5 bhi _021E2982 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E28DE: ; jump table .short _021E28EA - _021E28DE - 2 ; case 0 .short _021E28FA - _021E28DE - 2 ; case 1 .short _021E2914 - _021E28DE - 2 ; case 2 .short _021E292E - _021E28DE - 2 ; case 3 .short _021E2950 - _021E28DE - 2 ; case 4 .short _021E296A - _021E28DE - 2 ; case 5 _021E28EA: ldr r0, [r4, #8] mov r1, #0 bl MOD16_021DEC40 ldr r0, _021E298C ; =0x000005DD bl FUN_020054C8 b _021E2982 _021E28FA: ldr r0, [r4, #8] bl MOD16_021DEBB8 cmp r0, #0 beq _021E2982 ldr r0, [r4, #8] mov r1, #0 bl MOD16_021DEBA4 ldr r0, _021E298C ; =0x000005DD bl FUN_020054C8 b _021E2982 _021E2914: ldr r0, [r4, #8] bl MOD16_021DEBB8 cmp r0, #1 beq _021E2982 ldr r0, [r4, #8] mov r1, #1 bl MOD16_021DEBA4 ldr r0, _021E298C ; =0x000005DD bl FUN_020054C8 b _021E2982 _021E292E: ldr r0, [r4, #8] bl MOD16_021DEBB8 cmp r0, #2 beq _021E2982 ldr r0, [r4, #8] mov r1, #2 bl MOD16_021DEBA4 ldr r0, _021E298C ; =0x000005DD bl FUN_020054C8 add r0, r5, #0 mov r1, #0 add r0, #0x88 str r1, [r0] b _021E2982 _021E2950: ldr r0, [r4, #8] bl MOD16_021DEBB8 cmp r0, #3 beq _021E2982 ldr r0, [r4, #8] mov r1, #3 bl MOD16_021DEBA4 ldr r0, _021E298C ; =0x000005DD bl FUN_020054C8 b _021E2982 _021E296A: add r0, r5, #0 add r0, #0x94 ldr r0, [r0] cmp r0, #1 bgt _021E2982 ldr r0, [r4, #8] mov r1, #1 bl MOD16_021DEC40 ldr r0, _021E298C ; =0x000005DD bl FUN_020054C8 _021E2982: ldr r0, _021E2990 ; =0x0000FFFF add r5, #0x80 str r0, [r5] pop {r3, r4, r5, pc} nop _021E298C: .word 0x000005DD _021E2990: .word 0x0000FFFF thumb_func_end MOD16_021E28C4 thumb_func_start MOD16_021E2994 MOD16_021E2994: ; 0x021E2994 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0x84 ldr r0, [r0] add r6, r1, #0 mov r4, #0x64 cmp r0, #5 bhi _021E29D2 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E29B0: ; jump table .short _021E29BC - _021E29B0 - 2 ; case 0 .short _021E29C0 - _021E29B0 - 2 ; case 1 .short _021E29C4 - _021E29B0 - 2 ; case 2 .short _021E29C8 - _021E29B0 - 2 ; case 3 .short _021E29CC - _021E29B0 - 2 ; case 4 .short _021E29D0 - _021E29B0 - 2 ; case 5 _021E29BC: mov r4, #0 b _021E29D2 _021E29C0: mov r4, #1 b _021E29D2 _021E29C4: mov r4, #2 b _021E29D2 _021E29C8: mov r4, #3 b _021E29D2 _021E29CC: mov r4, #4 b _021E29D2 _021E29D0: mov r4, #5 _021E29D2: cmp r4, #0x64 beq _021E29EE ldr r0, [r6, #8] bl MOD16_021DEBD4 cmp r4, r0 beq _021E29EE ldr r0, _021E29F8 ; =0x000005DD bl FUN_020054C8 ldr r0, [r6, #8] add r1, r4, #0 bl MOD16_021DEBC0 _021E29EE: ldr r0, _021E29FC ; =0x0000FFFF add r5, #0x84 str r0, [r5] pop {r4, r5, r6, pc} nop _021E29F8: .word 0x000005DD _021E29FC: .word 0x0000FFFF thumb_func_end MOD16_021E2994 thumb_func_start MOD16_021E2A00 MOD16_021E2A00: ; 0x021E2A00 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0x84 ldr r0, [r0] add r6, r1, #0 mov r4, #0x64 cmp r0, #9 bhi _021E2A56 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E2A1C: ; jump table .short _021E2A30 - _021E2A1C - 2 ; case 0 .short _021E2A34 - _021E2A1C - 2 ; case 1 .short _021E2A38 - _021E2A1C - 2 ; case 2 .short _021E2A3C - _021E2A1C - 2 ; case 3 .short _021E2A40 - _021E2A1C - 2 ; case 4 .short _021E2A44 - _021E2A1C - 2 ; case 5 .short _021E2A48 - _021E2A1C - 2 ; case 6 .short _021E2A4C - _021E2A1C - 2 ; case 7 .short _021E2A50 - _021E2A1C - 2 ; case 8 .short _021E2A54 - _021E2A1C - 2 ; case 9 _021E2A30: mov r4, #1 b _021E2A56 _021E2A34: mov r4, #2 b _021E2A56 _021E2A38: mov r4, #3 b _021E2A56 _021E2A3C: mov r4, #4 b _021E2A56 _021E2A40: mov r4, #5 b _021E2A56 _021E2A44: mov r4, #6 b _021E2A56 _021E2A48: mov r4, #7 b _021E2A56 _021E2A4C: mov r4, #8 b _021E2A56 _021E2A50: mov r4, #9 b _021E2A56 _021E2A54: mov r4, #0 _021E2A56: cmp r4, #0x64 beq _021E2A72 ldr r0, [r6, #8] bl MOD16_021DEBF0 cmp r4, r0 beq _021E2A72 ldr r0, _021E2A7C ; =0x000005DD bl FUN_020054C8 ldr r0, [r6, #8] add r1, r4, #0 bl MOD16_021DEBDC _021E2A72: ldr r0, _021E2A80 ; =0x0000FFFF add r5, #0x84 str r0, [r5] pop {r4, r5, r6, pc} nop _021E2A7C: .word 0x000005DD _021E2A80: .word 0x0000FFFF thumb_func_end MOD16_021E2A00 thumb_func_start MOD16_021E2A84 MOD16_021E2A84: ; 0x021E2A84 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0x84 ldr r0, [r0] add r6, r1, #0 mov r4, #0x64 cmp r0, #0xa bhi _021E2AE8 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E2AA0: ; jump table .short _021E2AB6 - _021E2AA0 - 2 ; case 0 .short _021E2ABA - _021E2AA0 - 2 ; case 1 .short _021E2ABE - _021E2AA0 - 2 ; case 2 .short _021E2AC2 - _021E2AA0 - 2 ; case 3 .short _021E2AC6 - _021E2AA0 - 2 ; case 4 .short _021E2ACA - _021E2AA0 - 2 ; case 5 .short _021E2ACE - _021E2AA0 - 2 ; case 6 .short _021E2AD2 - _021E2AA0 - 2 ; case 7 .short _021E2AD6 - _021E2AA0 - 2 ; case 8 .short _021E2ADA - _021E2AA0 - 2 ; case 9 .short _021E2ADE - _021E2AA0 - 2 ; case 10 _021E2AB6: mov r4, #1 b _021E2AE8 _021E2ABA: mov r4, #2 b _021E2AE8 _021E2ABE: mov r4, #3 b _021E2AE8 _021E2AC2: mov r4, #4 b _021E2AE8 _021E2AC6: mov r4, #5 b _021E2AE8 _021E2ACA: mov r4, #6 b _021E2AE8 _021E2ACE: mov r4, #7 b _021E2AE8 _021E2AD2: mov r4, #8 b _021E2AE8 _021E2AD6: mov r4, #9 b _021E2AE8 _021E2ADA: mov r4, #0 b _021E2AE8 _021E2ADE: mov r0, #1 str r0, [r5, #0x20] ldr r0, _021E2B00 ; =0x000005DD bl FUN_020054C8 _021E2AE8: cmp r4, #0x64 beq _021E2AF6 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E2B84 _021E2AF6: ldr r0, _021E2B04 ; =0x0000FFFF add r5, #0x84 str r0, [r5] pop {r4, r5, r6, pc} nop _021E2B00: .word 0x000005DD _021E2B04: .word 0x0000FFFF thumb_func_end MOD16_021E2A84 thumb_func_start MOD16_021E2B08 MOD16_021E2B08: ; 0x021E2B08 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0x84 ldr r0, [r0] add r6, r1, #0 mov r4, #0x64 cmp r0, #9 bhi _021E2B66 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E2B24: ; jump table .short _021E2B38 - _021E2B24 - 2 ; case 0 .short _021E2B3C - _021E2B24 - 2 ; case 1 .short _021E2B40 - _021E2B24 - 2 ; case 2 .short _021E2B44 - _021E2B24 - 2 ; case 3 .short _021E2B48 - _021E2B24 - 2 ; case 4 .short _021E2B4C - _021E2B24 - 2 ; case 5 .short _021E2B50 - _021E2B24 - 2 ; case 6 .short _021E2B54 - _021E2B24 - 2 ; case 7 .short _021E2B58 - _021E2B24 - 2 ; case 8 .short _021E2B5C - _021E2B24 - 2 ; case 9 _021E2B38: mov r4, #0xa b _021E2B66 _021E2B3C: mov r4, #0xb b _021E2B66 _021E2B40: mov r4, #0xc b _021E2B66 _021E2B44: mov r4, #0xd b _021E2B66 _021E2B48: mov r4, #0xe b _021E2B66 _021E2B4C: mov r4, #0xf b _021E2B66 _021E2B50: mov r4, #0x10 b _021E2B66 _021E2B54: mov r4, #0x11 b _021E2B66 _021E2B58: mov r4, #0 b _021E2B66 _021E2B5C: mov r0, #0 str r0, [r5, #0x20] ldr r0, _021E2B7C ; =0x000005DD bl FUN_020054C8 _021E2B66: cmp r4, #0x64 beq _021E2B74 add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E2B84 _021E2B74: ldr r0, _021E2B80 ; =0x0000FFFF add r5, #0x84 str r0, [r5] pop {r4, r5, r6, pc} .align 2, 0 _021E2B7C: .word 0x000005DD _021E2B80: .word 0x0000FFFF thumb_func_end MOD16_021E2B08 thumb_func_start MOD16_021E2B84 MOD16_021E2B84: ; 0x021E2B84 push {r4, r5, r6, lr} add r4, r1, #0 add r5, r0, #0 add r6, r2, #0 ldr r0, [r4, #8] beq _021E2BE4 mov r1, #0 bl MOD16_021DEC14 cmp r6, r0 beq _021E2C20 ldr r0, [r4, #8] mov r1, #1 bl MOD16_021DEC14 cmp r6, r0 beq _021E2C20 add r1, r5, #0 add r1, #0x88 ldr r0, [r4, #8] ldr r1, [r1] bl MOD16_021DEC14 cmp r6, r0 beq _021E2C20 add r2, r5, #0 add r2, #0x88 ldr r0, [r4, #8] ldr r2, [r2] add r1, r6, #0 bl MOD16_021DEBF8 add r0, r5, #0 add r0, #0x88 ldr r0, [r0] add r5, #0x88 add r0, r0, #1 lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 str r0, [r5] ldr r0, _021E2C24 ; =0x000005DD bl FUN_020054C8 pop {r4, r5, r6, pc} _021E2BE4: mov r1, #0 bl MOD16_021DEC14 cmp r0, #0 ldr r0, [r4, #8] beq _021E2C00 add r1, r6, #0 mov r2, #0 bl MOD16_021DEBF8 ldr r0, _021E2C24 ; =0x000005DD bl FUN_020054C8 b _021E2C1A _021E2C00: mov r1, #1 bl MOD16_021DEC14 cmp r0, #0 beq _021E2C1A ldr r0, [r4, #8] add r1, r6, #0 mov r2, #1 bl MOD16_021DEBF8 ldr r0, _021E2C24 ; =0x000005DD bl FUN_020054C8 _021E2C1A: mov r0, #0 add r5, #0x88 str r0, [r5] _021E2C20: pop {r4, r5, r6, pc} nop _021E2C24: .word 0x000005DD thumb_func_end MOD16_021E2B84 thumb_func_start MOD16_021E2C28 MOD16_021E2C28: ; 0x021E2C28 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0x84 ldr r0, [r0] add r6, r1, #0 mov r4, #0x64 cmp r0, #0xe bhi _021E2C9C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E2C44: ; jump table .short _021E2C62 - _021E2C44 - 2 ; case 0 .short _021E2C66 - _021E2C44 - 2 ; case 1 .short _021E2C6A - _021E2C44 - 2 ; case 2 .short _021E2C6E - _021E2C44 - 2 ; case 3 .short _021E2C72 - _021E2C44 - 2 ; case 4 .short _021E2C76 - _021E2C44 - 2 ; case 5 .short _021E2C7A - _021E2C44 - 2 ; case 6 .short _021E2C7E - _021E2C44 - 2 ; case 7 .short _021E2C82 - _021E2C44 - 2 ; case 8 .short _021E2C86 - _021E2C44 - 2 ; case 9 .short _021E2C8A - _021E2C44 - 2 ; case 10 .short _021E2C8E - _021E2C44 - 2 ; case 11 .short _021E2C92 - _021E2C44 - 2 ; case 12 .short _021E2C96 - _021E2C44 - 2 ; case 13 .short _021E2C9A - _021E2C44 - 2 ; case 14 _021E2C62: mov r4, #0xd b _021E2C9C _021E2C66: mov r4, #4 b _021E2C9C _021E2C6A: mov r4, #0xc b _021E2C9C _021E2C6E: mov r4, #9 b _021E2C9C _021E2C72: mov r4, #8 b _021E2C9C _021E2C76: mov r4, #3 b _021E2C9C _021E2C7A: mov r4, #0xa b _021E2C9C _021E2C7E: mov r4, #1 b _021E2C9C _021E2C82: mov r4, #6 b _021E2C9C _021E2C86: mov r4, #0xb b _021E2C9C _021E2C8A: mov r4, #0xe b _021E2C9C _021E2C8E: mov r4, #2 b _021E2C9C _021E2C92: mov r4, #5 b _021E2C9C _021E2C96: mov r4, #7 b _021E2C9C _021E2C9A: mov r4, #0 _021E2C9C: cmp r4, #0x64 beq _021E2CB8 ldr r0, [r6, #8] bl MOD16_021DEC38 cmp r4, r0 beq _021E2CB8 ldr r0, _021E2CC0 ; =0x000005DD bl FUN_020054C8 ldr r0, [r6, #8] add r1, r4, #0 bl MOD16_021DEC24 _021E2CB8: ldr r0, _021E2CC4 ; =0x0000FFFF add r5, #0x84 str r0, [r5] pop {r4, r5, r6, pc} .align 2, 0 _021E2CC0: .word 0x000005DD _021E2CC4: .word 0x0000FFFF thumb_func_end MOD16_021E2C28 thumb_func_start MOD16_021E2CC8 MOD16_021E2CC8: ; 0x021E2CC8 push {r3, r4, r5, lr} mov r3, #0x4b lsl r3, r3, #2 ldr r2, [r0, r3] cmp r2, #0 bne _021E2CF4 ldr r2, [r1, #4] cmp r2, #0 ble _021E2CF8 str r2, [r0, r3] mov r5, #0 add r2, r3, #4 str r5, [r0, r2] add r2, r3, #0 ldr r4, [r1, #8] add r2, #8 add r3, #8 str r4, [r0, r2] ldr r0, [r0, r3] str r5, [r0] str r5, [r1, #4] pop {r3, r4, r5, pc} _021E2CF4: bl MOD16_021E2CFC _021E2CF8: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E2CC8 thumb_func_start MOD16_021E2CFC MOD16_021E2CFC: ; 0x021E2CFC push {r4, lr} sub sp, #8 mov r3, #0x4b add r4, r0, #0 lsl r3, r3, #2 ldr r1, [r4, r3] cmp r1, #0 beq _021E2DAE add r0, r3, #4 ldr r0, [r4, r0] cmp r0, #0 beq _021E2D1C cmp r0, #1 beq _021E2D6E add sp, #8 pop {r4, pc} _021E2D1C: cmp r1, #1 bne _021E2D36 mov r1, #0 str r1, [sp] mov r0, #2 sub r3, #0x20 str r0, [sp, #4] add r0, r4, r3 mov r2, #0x10 add r3, r1, #0 bl MOD16_021D8BD8 b _021E2D4A _021E2D36: mov r2, #0 str r2, [sp] mov r0, #2 sub r3, #0x20 str r0, [sp, #4] add r0, r4, r3 mov r1, #0x10 add r3, r2, #0 bl MOD16_021D8BD8 _021E2D4A: mov r0, #0x43 lsl r0, r0, #2 ldr r3, [r4, r0] mov r0, #0x10 sub r0, r0, r3 str r0, [sp] ldr r0, _021E2DB4 ; =0x04001050 mov r1, #0 mov r2, #4 bl G2x_SetBlendAlpha_ mov r0, #0x13 lsl r0, r0, #4 ldr r1, [r4, r0] add sp, #8 add r1, r1, #1 str r1, [r4, r0] pop {r4, pc} _021E2D6E: sub r3, #0x20 add r0, r4, r3 bl MOD16_021D8BF4 mov r1, #0x43 lsl r1, r1, #2 ldr r3, [r4, r1] mov r2, #0x10 sub r2, r2, r3 lsl r2, r2, #8 orr r3, r2 ldr r2, _021E2DB8 ; =0x04001052 cmp r0, #1 strh r3, [r2] bne _021E2DAE add r1, #0x20 ldr r0, [r4, r1] cmp r0, #1 bne _021E2D9A mov r1, #0 sub r0, r2, #2 strh r1, [r0] _021E2D9A: mov r1, #0x4d lsl r1, r1, #2 ldr r0, [r4, r1] mov r2, #1 str r2, [r0] sub r0, r1, #4 mov r2, #0 str r2, [r4, r0] sub r1, #8 str r2, [r4, r1] _021E2DAE: add sp, #8 pop {r4, pc} nop _021E2DB4: .word 0x04001050 _021E2DB8: .word 0x04001052 thumb_func_end MOD16_021E2CFC thumb_func_start MOD16_021E2DBC MOD16_021E2DBC: ; 0x021E2DBC push {r3, lr} cmp r2, #2 bne _021E2DD2 cmp r3, #0 bne _021E2DCC bl MOD16_021E2E14 pop {r3, pc} _021E2DCC: bl MOD16_021E2E44 pop {r3, pc} _021E2DD2: bl MOD16_021E2DD8 pop {r3, pc} thumb_func_end MOD16_021E2DBC thumb_func_start MOD16_021E2DD8 MOD16_021E2DD8: ; 0x021E2DD8 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 mov r6, #0 _021E2DE0: ldr r0, [r5, #0x30] cmp r0, #0 beq _021E2DEC add r1, r4, #0 bl FUN_02020398 _021E2DEC: ldr r0, [r5, #0x6c] cmp r0, #0 beq _021E2DFA ldr r0, [r0] add r1, r4, #0 bl FUN_02011AF0 _021E2DFA: add r0, r5, #0 add r0, #0xa8 ldr r0, [r0] cmp r0, #0 beq _021E2E0A add r1, r4, #0 bl FUN_02020398 _021E2E0A: add r6, r6, #1 add r5, r5, #4 cmp r6, #0xf blt _021E2DE0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E2DD8 thumb_func_start MOD16_021E2E14 MOD16_021E2E14: ; 0x021E2E14 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 mov r4, #0 _021E2E1C: cmp r4, #0xa beq _021E2E3A ldr r0, [r5, #0x30] cmp r0, #0 beq _021E2E2C add r1, r6, #0 bl FUN_02020398 _021E2E2C: ldr r0, [r5, #0x6c] cmp r0, #0 beq _021E2E3A ldr r0, [r0] add r1, r6, #0 bl FUN_02011AF0 _021E2E3A: add r4, r4, #1 add r5, r5, #4 cmp r4, #0xf blt _021E2E1C pop {r4, r5, r6, pc} thumb_func_end MOD16_021E2E14 thumb_func_start MOD16_021E2E44 MOD16_021E2E44: ; 0x021E2E44 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 mov r4, #0 _021E2E4C: cmp r4, #9 beq _021E2E6A ldr r0, [r5, #0x30] cmp r0, #0 beq _021E2E5C add r1, r6, #0 bl FUN_02020398 _021E2E5C: ldr r0, [r5, #0x6c] cmp r0, #0 beq _021E2E6A ldr r0, [r0] add r1, r6, #0 bl FUN_02011AF0 _021E2E6A: add r4, r4, #1 add r5, r5, #4 cmp r4, #0xf blt _021E2E4C pop {r4, r5, r6, pc} thumb_func_end MOD16_021E2E44 thumb_func_start MOD16_021E2E74 MOD16_021E2E74: ; 0x021E2E74 push {r3, r4, lr} sub sp, #4 add r4, r2, #0 ldr r0, [r4, #8] bl MOD16_021DEC5C cmp r0, #4 bne _021E2EC0 ldr r0, [r4, #8] bl MOD16_021DEC54 cmp r0, #3 bne _021E2EA4 mov r1, #0 mov r0, #2 add r2, r1, #0 str r0, [sp] mov r0, #4 sub r2, #0x10 mov r3, #0x3f bl FUN_0200A208 add sp, #4 pop {r3, r4, pc} _021E2EA4: ldr r0, [r4, #8] bl MOD16_021DEC54 cmp r0, #1 bne _021E2EC0 mov r0, #2 str r0, [sp] mov r0, #4 add r1, r0, #0 sub r1, #0x14 mov r2, #0 mov r3, #0x3f bl FUN_0200A208 _021E2EC0: add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021E2E74 thumb_func_start MOD16_021E2EC4 MOD16_021E2EC4: ; 0x021E2EC4 push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 add r0, r7, #0 bl MOD16_021E2F64 add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021E2FA8 str r4, [r5] str r0, [r5, #4] mov r0, #0 str r0, [r5, #0x20] bl MOD16_021E2FFC str r0, [r5, #0x24] ldr r0, _021E2F04 ; =MOD16_021E3000 str r0, [r5, #8] ldr r0, _021E2F08 ; =MOD16_021E3074 str r0, [r5, #0xc] ldr r0, _021E2F0C ; =MOD16_021E30B0 str r0, [r5, #0x10] ldr r0, _021E2F10 ; =MOD16_021E30E0 str r0, [r5, #0x14] ldr r0, _021E2F14 ; =MOD16_021E31E0 str r0, [r5, #0x18] ldr r0, _021E2F18 ; =MOD16_021E320C str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E2F04: .word MOD16_021E3000 _021E2F08: .word MOD16_021E3074 _021E2F0C: .word MOD16_021E30B0 _021E2F10: .word MOD16_021E30E0 _021E2F14: .word MOD16_021E31E0 _021E2F18: .word MOD16_021E320C thumb_func_end MOD16_021E2EC4 thumb_func_start MOD16_021E2F1C MOD16_021E2F1C: ; 0x021E2F1C push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E2FD4 ldr r0, [r4, #4] bl MOD16_021E2FE8 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E2F1C thumb_func_start MOD16_021E2F30 MOD16_021E2F30: ; 0x021E2F30 ldr r0, [r0] ldr r0, [r0, #4] bx lr .align 2, 0 thumb_func_end MOD16_021E2F30 thumb_func_start MOD16_021E2F38 MOD16_021E2F38: ; 0x021E2F38 push {r3, r4, r5, lr} add r5, r1, #0 ldr r4, [r0] cmp r5, #3 blt _021E2F46 bl ErrorHandling _021E2F46: str r5, [r4, #4] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E2F38 thumb_func_start MOD16_021E2F4C MOD16_021E2F4C: ; 0x021E2F4C ldr r0, [r0, #4] str r1, [r0, #4] str r2, [r0, #8] bx lr thumb_func_end MOD16_021E2F4C thumb_func_start MOD16_021E2F54 MOD16_021E2F54: ; 0x021E2F54 ldr r0, [r0, #4] str r1, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD16_021E2F54 thumb_func_start MOD16_021E2F5C MOD16_021E2F5C: ; 0x021E2F5C ldr r0, [r0, #4] str r1, [r0, #0x10] bx lr .align 2, 0 thumb_func_end MOD16_021E2F5C thumb_func_start MOD16_021E2F64 MOD16_021E2F64: ; 0x021E2F64 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0xc bl FUN_02016998 add r4, r0, #0 bne _021E2F76 bl ErrorHandling _021E2F76: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #8] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E2F64 thumb_func_start MOD16_021E2FA8 MOD16_021E2FA8: ; 0x021E2FA8 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x14 bl FUN_02016998 add r4, r0, #0 bne _021E2FBA bl ErrorHandling _021E2FBA: add r2, r4, #0 mov r1, #0x14 mov r0, #0 _021E2FC0: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021E2FC0 add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E2FA8 thumb_func_start MOD16_021E2FD4 MOD16_021E2FD4: ; 0x021E2FD4 push {r4, lr} add r4, r0, #0 bne _021E2FDE bl ErrorHandling _021E2FDE: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E2FD4 thumb_func_start MOD16_021E2FE8 MOD16_021E2FE8: ; 0x021E2FE8 push {r4, lr} add r4, r0, #0 bne _021E2FF2 bl ErrorHandling _021E2FF2: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E2FE8 thumb_func_start MOD16_021E2FFC MOD16_021E2FFC: ; 0x021E2FFC mov r0, #0 bx lr thumb_func_end MOD16_021E2FFC thumb_func_start MOD16_021E3000 MOD16_021E3000: ; 0x021E3000 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r6, #4] add r5, r1, #0 mov r1, #0x34 bl FUN_02016998 add r4, r0, #0 bne _021E3016 bl ErrorHandling _021E3016: add r0, r4, #0 mov r1, #0 mov r2, #0x34 bl Call_FillMemWithValue str r4, [r6, #8] ldr r1, [r5] ldr r0, _021E3070 ; =0x00001744 ldr r0, [r1, r0] cmp r0, #0 bne _021E3032 mov r0, #0 str r0, [r5, #4] b _021E3042 _021E3032: sub r0, r0, #1 cmp r0, #1 bhi _021E303E mov r0, #1 str r0, [r5, #4] b _021E3042 _021E303E: mov r0, #2 str r0, [r5, #4] _021E3042: add r2, r4, #0 ldr r0, [r6, #4] add r1, r5, #0 add r2, #0xc bl MOD16_021E3E08 str r0, [r4, #4] add r2, r4, #0 ldr r0, [r6, #4] add r1, r5, #0 add r2, #0x10 bl MOD16_021E3E10 str r0, [r4, #8] ldr r2, [r6, #4] add r0, r4, #0 add r1, r5, #0 bl MOD16_021E3FC4 ldr r0, [r5, #4] str r0, [r4] mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 _021E3070: .word 0x00001744 thumb_func_end MOD16_021E3000 thumb_func_start MOD16_021E3074 MOD16_021E3074: ; 0x021E3074 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0xc] add r6, r1, #0 ldr r4, [r5, #8] cmp r0, #1 bne _021E3086 mov r0, #1 pop {r4, r5, r6, pc} _021E3086: ldr r0, [r5, #0x10] cmp r0, #1 bne _021E3090 mov r0, #0 pop {r4, r5, r6, pc} _021E3090: ldr r1, [r4] ldr r0, [r6, #4] cmp r1, r0 beq _021E30AC add r0, r4, #0 bl MOD16_021E4070 ldr r2, [r5, #4] add r0, r4, #0 add r1, r6, #0 bl MOD16_021E3FC4 ldr r0, [r6, #4] str r0, [r4] _021E30AC: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E3074 thumb_func_start MOD16_021E30B0 MOD16_021E30B0: ; 0x021E30B0 push {r3, r4, r5, lr} add r4, r0, #0 ldr r5, [r4, #8] ldr r0, [r5, #4] cmp r0, #0 beq _021E30C0 bl FUN_02016A18 _021E30C0: ldr r0, [r5, #8] cmp r0, #0 beq _021E30CA bl FUN_02016A18 _021E30CA: add r0, r5, #0 bl MOD16_021E4070 add r0, r5, #0 bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E30B0 thumb_func_start MOD16_021E30E0 MOD16_021E30E0: ; 0x021E30E0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r3, #8] add r4, r1, #0 str r0, [sp, #4] ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #3 bhi _021E31CE add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E3102: ; jump table .short _021E310A - _021E3102 - 2 ; case 0 .short _021E3142 - _021E3102 - 2 ; case 1 .short _021E319A - _021E3102 - 2 ; case 2 .short _021E31C2 - _021E3102 - 2 ; case 3 _021E310A: ldr r0, [r4, #4] ldr r1, _021E31D4 ; =0x00000844 bl FUN_02016998 ldr r2, _021E31D4 ; =0x00000844 str r0, [r4, #8] mov r1, #0 bl Call_FillMemWithValue ldr r5, [r4, #8] ldr r0, [r7, #4] mov r1, #0 str r0, [r5] ldr r0, [r4, #4] bl MOD16_021DBDE4 ldr r1, _021E31D8 ; =0x00000804 str r0, [r5, r1] ldr r0, [r4, #4] mov r1, #0 bl MOD16_021DBE0C ldr r1, _021E31DC ; =0x00000808 str r0, [r5, r1] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E31CE _021E3142: ldr r0, [r4, #4] ldr r3, [sp, #4] str r0, [sp] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E32D8 ldr r0, [r4, #8] ldr r2, [sp, #4] ldr r3, [r4, #4] add r1, r7, #0 bl MOD16_021E3C18 ldr r0, [r4, #8] ldr r1, [sp, #4] bl MOD16_021E3EF0 add r0, r6, #0 bl MOD16_021E4094 add r0, r6, #0 add r1, r5, #0 bl MOD16_021E3E6C ldr r0, [r5, #0xc] cmp r0, #0 bne _021E3186 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E3998 b _021E3192 _021E3186: add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E3A5C _021E3192: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E31CE _021E319A: ldr r0, [r5, #0xc] cmp r0, #0 bne _021E31AC add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021E3A10 b _021E31B6 _021E31AC: add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021E3AEC _021E31B6: cmp r0, #0 beq _021E31CE ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E31CE _021E31C2: add r0, r6, #0 bl MOD16_021E40D4 add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E31CE: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E31D4: .word 0x00000844 _021E31D8: .word 0x00000804 _021E31DC: .word 0x00000808 thumb_func_end MOD16_021E30E0 thumb_func_start MOD16_021E31E0 MOD16_021E31E0: ; 0x021E31E0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #8] add r7, r2, #0 ldr r4, [r3, #8] str r0, [sp, #4] bl MOD16_021E411C ldr r0, [r5, #4] add r1, r6, #0 str r0, [sp] ldr r0, [sp, #4] add r2, r7, #0 add r3, r4, #0 bl MOD16_021E3F88 mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E31E0 thumb_func_start MOD16_021E320C MOD16_021E320C: ; 0x021E320C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r5, [r4, #8] cmp r0, #4 bhi _021E32CC add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E3228: ; jump table .short _021E3232 - _021E3228 - 2 ; case 0 .short _021E3260 - _021E3228 - 2 ; case 1 .short _021E3288 - _021E3228 - 2 ; case 2 .short _021E329E - _021E3228 - 2 ; case 3 .short _021E32C8 - _021E3228 - 2 ; case 4 _021E3232: add r0, r5, #0 bl MOD16_021E4094 ldr r0, [r6, #0xc] cmp r0, #0 bne _021E324C add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021E3998 b _021E3258 _021E324C: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021E3A5C _021E3258: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E32CC _021E3260: ldr r0, [r6, #0xc] cmp r0, #0 bne _021E3272 add r0, r5, #0 add r1, r6, #0 mov r3, #0 bl MOD16_021E3A10 b _021E327C _021E3272: add r0, r5, #0 add r1, r6, #0 mov r3, #0 bl MOD16_021E3AEC _021E327C: cmp r0, #0 beq _021E32CC ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E32CC _021E3288: add r0, r5, #0 bl MOD16_021E3DBC add r0, r5, #0 add r1, r6, #0 bl MOD16_021E3328 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E32CC _021E329E: mov r0, #2 mov r1, #1 bl FUN_0201E6E4 ldr r0, _021E32D0 ; =0x00000804 ldr r0, [r5, r0] bl FUN_02016A18 ldr r0, _021E32D4 ; =0x00000808 ldr r0, [r5, r0] bl FUN_02016A18 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E32CC _021E32C8: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E32CC: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E32D0: .word 0x00000804 _021E32D4: .word 0x00000808 thumb_func_end MOD16_021E320C thumb_func_start MOD16_021E32D8 MOD16_021E32D8: ; 0x021E32D8 push {r3, r4, r5, r6, r7, lr} ldr r6, [sp, #0x18] add r7, r2, #0 add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 add r1, r7, #0 add r2, r6, #0 bl MOD16_021E3348 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E3B70 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E34D0 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E36B0 add r0, r5, #0 add r1, r4, #0 add r2, r7, #0 add r3, r6, #0 bl MOD16_021E37E8 ldr r1, [r7, #4] add r0, r5, #0 bl MOD16_021E3F50 add r0, r4, #0 add r1, r7, #0 bl MOD16_021E41FC pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E32D8 thumb_func_start MOD16_021E3328 MOD16_021E3328: ; 0x021E3328 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E3BC8 add r0, r5, #0 bl MOD16_021E3904 add r0, r5, #0 bl MOD16_021E37C0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E361C pop {r3, r4, r5, pc} thumb_func_end MOD16_021E3328 thumb_func_start MOD16_021E3348 MOD16_021E3348: ; 0x021E3348 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r6, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] add r4, r2, #0 str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #3 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x40 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r7, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r7, #0 bl FUN_02016A18 ldr r1, [r6] ldr r0, _021E34C0 ; =0x00001764 ldr r0, [r1, r0] cmp r0, #0 beq _021E33E6 str r4, [sp] ldr r0, [r5] mov r1, #0x41 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r7, r0, #0 ldr r2, [sp, #0x10] mov r0, #8 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0xd lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r7, #0 bl FUN_02016A18 _021E33E6: ldr r1, [r6] ldr r0, _021E34C4 ; =0x0000176C ldr r0, [r1, r0] cmp r0, #0 beq _021E342A str r4, [sp] ldr r0, [r5] mov r1, #0x42 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r7, r0, #0 ldr r2, [sp, #0x10] mov r0, #7 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0x1c lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r7, #0 bl FUN_02016A18 _021E342A: ldr r1, [r6] ldr r0, _021E34C8 ; =0x00001760 ldr r0, [r1, r0] cmp r0, #0 beq _021E346E str r4, [sp] ldr r0, [r5] mov r1, #0x43 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r7, r0, #0 ldr r2, [sp, #0x10] mov r0, #8 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0xb lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r7, #0 bl FUN_02016A18 _021E346E: ldr r1, [r6] ldr r0, _021E34CC ; =0x00001768 ldr r0, [r1, r0] cmp r0, #0 beq _021E34B2 str r4, [sp] ldr r0, [r5] mov r1, #0x44 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r4, r0, #0 ldr r2, [sp, #0x10] mov r0, #0x10 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0x19 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 _021E34B2: ldr r0, [r5] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021E34C0: .word 0x00001764 _021E34C4: .word 0x0000176C _021E34C8: .word 0x00001760 _021E34CC: .word 0x00001768 thumb_func_end MOD16_021E3348 thumb_func_start MOD16_021E34D0 MOD16_021E34D0: ; 0x021E34D0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E3600 ; =0x000017DC mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x6c bl FUN_020091E0 add r1, r5, #0 add r1, #0xb4 str r0, [r1] add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] bl FUN_02009B04 add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] bl FUN_02009474 ldr r0, _021E3604 ; =0x000017DA add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x6a mov r3, #1 bl FUN_02009358 add r1, r5, #0 add r1, #0xbc str r0, [r1] ldr r0, _021E3608 ; =0x000017DB add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x6b mov r3, #1 bl FUN_02009358 add r1, r5, #0 add r1, #0xc0 str r0, [r1] ldr r0, _021E360C ; =0x000017CD mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x5d bl FUN_020091E0 add r1, r5, #0 add r1, #0xd0 str r0, [r1] add r0, r5, #0 add r0, #0xd0 ldr r0, [r0] bl FUN_02009B04 add r0, r5, #0 add r0, #0xd0 ldr r0, [r0] bl FUN_02009474 ldr r0, _021E3610 ; =0x0000177E add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #5 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0xe mov r3, #0 bl FUN_02009298 add r1, r5, #0 add r1, #0xd4 str r0, [r1] add r0, r5, #0 add r0, #0xd4 ldr r0, [r0] bl FUN_02009D68 add r0, r5, #0 add r0, #0xd4 ldr r0, [r0] bl FUN_02009474 ldr r0, _021E3614 ; =0x000017CB add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5b mov r3, #1 bl FUN_02009358 add r1, r5, #0 add r1, #0xd8 str r0, [r1] ldr r0, _021E3618 ; =0x000017CC add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5c mov r3, #1 bl FUN_02009358 add r5, #0xdc str r0, [r5] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E3600: .word 0x000017DC _021E3604: .word 0x000017DA _021E3608: .word 0x000017DB _021E360C: .word 0x000017CD _021E3610: .word 0x0000177E _021E3614: .word 0x000017CB _021E3618: .word 0x000017CC thumb_func_end MOD16_021E34D0 thumb_func_start MOD16_021E361C MOD16_021E361C: ; 0x021E361C push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0xb4 ldr r0, [r0] ldr r4, [r1] bl FUN_02009C0C mov r0, #5 add r1, r5, #0 lsl r0, r0, #6 add r1, #0xb4 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x52 add r1, r5, #0 lsl r0, r0, #2 add r1, #0xbc ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x53 add r1, r5, #0 lsl r0, r0, #2 add r1, #0xc0 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 add r0, r5, #0 add r0, #0xd0 ldr r0, [r0] bl FUN_02009C0C add r0, r5, #0 add r0, #0xd4 ldr r0, [r0] bl FUN_02009E04 mov r0, #5 add r1, r5, #0 lsl r0, r0, #6 add r1, #0xd0 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x51 add r1, r5, #0 lsl r0, r0, #2 add r1, #0xd4 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x52 add r1, r5, #0 lsl r0, r0, #2 add r1, #0xd8 ldr r0, [r4, r0] ldr r1, [r1] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 add r5, #0xdc ldr r0, [r4, r0] ldr r1, [r5] bl FUN_02009490 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E361C thumb_func_start MOD16_021E36B0 MOD16_021E36B0: ; 0x021E36B0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x70 ldr r4, [r1] ldr r3, _021E37B8 ; =0x000017CC add r5, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 add r6, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r2, #0x4e sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x1f str r0, [sp, #0x40] mov r0, #1 str r0, [sp, #0x44] mov r0, #0xa lsl r0, r0, #0x10 str r0, [sp, #0x34] mov r0, #6 lsl r0, r0, #0x10 str r0, [sp, #0x38] add r0, sp, #0x2c str r6, [sp, #0x48] bl FUN_0201FF84 add r1, r5, #0 add r1, #0xc8 str r0, [r1] add r0, r5, #0 add r0, #0xc8 ldr r0, [r0] mov r1, #2 bl FUN_02020130 ldr r3, _021E37BC ; =0x000017DB mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #5 str r1, [sp, #0x10] lsl r0, r0, #6 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r2, #0x5d sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r4, #0 str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x1f str r0, [sp, #0x40] mov r0, #1 str r0, [sp, #0x44] str r6, [sp, #0x48] str r4, [sp, #0x34] str r4, [sp, #0x38] add r6, sp, #0x2c add r7, r4, #0 _021E3796: add r0, r6, #0 bl FUN_0201FF84 str r0, [r5, #4] add r1, r7, #0 bl FUN_020200A0 ldr r0, [r5, #4] mov r1, #1 bl FUN_02020398 add r4, r4, #1 add r5, r5, #4 cmp r4, #0x2c blt _021E3796 add sp, #0x70 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E37B8: .word 0x000017CC _021E37BC: .word 0x000017DB thumb_func_end MOD16_021E36B0 thumb_func_start MOD16_021E37C0 MOD16_021E37C0: ; 0x021E37C0 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0xc8 ldr r0, [r0] bl FUN_0201FFC8 add r0, r5, #0 mov r4, #0 add r0, #0xc8 str r4, [r0] add r6, r4, #0 _021E37D6: ldr r0, [r5, #4] bl FUN_0201FFC8 str r6, [r5, #4] add r4, r4, #1 add r5, r5, #4 cmp r4, #0x2c blt _021E37D6 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E37C0 thumb_func_start MOD16_021E37E8 MOD16_021E37E8: ; 0x021E37E8 push {r4, r5, r6, r7, lr} sub sp, #0x34 add r5, r0, #0 add r0, #0xc8 add r4, r1, #0 ldr r0, [r0] add r6, r3, #0 ldr r7, [r4] cmp r0, #0 bne _021E3800 bl ErrorHandling _021E3800: mov r0, #0x51 ldr r1, [r4] lsl r0, r0, #2 ldr r0, [r1, r0] ldr r1, _021E38FC ; =0x0000177E bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r7, r1] str r1, [sp, #0xc] mov r1, #0 bl FUN_02009E54 mov r1, #1 mov r2, #0x1e str r0, [sp, #0x14] str r1, [sp, #0x24] str r2, [sp, #0x28] str r1, [sp, #0x2c] str r6, [sp, #0x30] bl FUN_0201E28C str r0, [sp, #8] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r7, r0] mov r1, #0x10 mov r2, #2 bl MOD16_021DB388 add r4, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r7, r0] ldr r2, _021E3900 ; =0x00000266 add r1, r4, #0 mov r3, #0x23 bl MOD16_021DB3C8 add r1, r5, #0 lsr r0, r0, #1 str r4, [sp, #0x10] add r1, #0xc8 ldr r1, [r1] neg r0, r0 str r0, [sp, #0x1c] mov r0, #7 mvn r0, r0 str r0, [sp, #0x20] add r0, sp, #0xc str r1, [sp, #0x18] bl MOD16_021DB2BC add r1, r5, #0 add r1, #0xcc str r0, [r1] add r0, r5, #0 add r0, #0xcc ldr r0, [r0] ldr r1, [sp, #8] ldr r0, [r0] add r1, r1, #2 bl FUN_02011A60 add r0, r4, #0 bl MOD16_021DB3BC mov r6, #0 _021E3890: mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r7, r0] mov r1, #9 mov r2, #2 bl MOD16_021DB388 add r4, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 add r3, r6, #0 ldr r0, [r7, r0] ldr r2, _021E3900 ; =0x00000266 add r1, r4, #0 add r3, #0x24 bl MOD16_021DB3C8 mov r1, #0 str r1, [sp, #0x18] mov r1, #0x48 sub r0, r1, r0 lsr r0, r0, #1 add r0, #8 str r0, [sp, #0x1c] mov r0, #0x20 str r0, [sp, #0x20] add r0, sp, #0xc str r4, [sp, #0x10] bl MOD16_021DB2BC add r1, r5, #0 add r1, #0xe0 str r0, [r1] add r0, r5, #0 add r0, #0xe0 ldr r0, [r0] ldr r1, [sp, #8] ldr r0, [r0] add r1, r1, #2 bl FUN_02011A60 add r0, r4, #0 bl MOD16_021DB3BC add r6, r6, #1 add r5, r5, #4 cmp r6, #3 blt _021E3890 add sp, #0x34 pop {r4, r5, r6, r7, pc} nop _021E38FC: .word 0x0000177E _021E3900: .word 0x00000266 thumb_func_end MOD16_021E37E8 thumb_func_start MOD16_021E3904 MOD16_021E3904: ; 0x021E3904 push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0xcc ldr r0, [r0] bl MOD16_021DB338 mov r4, #0 _021E3912: add r0, r5, #0 add r0, #0xe0 ldr r0, [r0] bl MOD16_021DB338 add r4, r4, #1 add r5, r5, #4 cmp r4, #3 blt _021E3912 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E3904 thumb_func_start MOD16_021E3928 MOD16_021E3928: ; 0x021E3928 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0xc8 ldr r0, [r0] mov r1, #1 bl FUN_02020398 add r0, r5, #0 add r0, #0xcc ldr r0, [r0] mov r1, #1 ldr r0, [r0] bl FUN_02011AF0 mov r4, #0 mov r6, #1 _021E3948: add r0, r5, #0 add r0, #0xe0 ldr r0, [r0] add r1, r6, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #3 blt _021E3948 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E3928 thumb_func_start MOD16_021E3960 MOD16_021E3960: ; 0x021E3960 push {r4, r5, r6, lr} add r5, r0, #0 add r0, #0xc8 ldr r0, [r0] mov r1, #0 bl FUN_02020398 add r0, r5, #0 add r0, #0xcc ldr r0, [r0] mov r1, #0 ldr r0, [r0] bl FUN_02011AF0 mov r4, #0 add r6, r4, #0 _021E3980: add r0, r5, #0 add r0, #0xe0 ldr r0, [r0] add r1, r6, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #3 blt _021E3980 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E3960 thumb_func_start MOD16_021E3998 MOD16_021E3998: ; 0x021E3998 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021E3928 ldr r0, [r4, #8] bl MOD16_021E8C68 cmp r0, #0 beq _021E39FE cmp r6, #0 beq _021E39DA mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 b _021E39FE _021E39DA: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E39FE: mov r1, #0x5b ldr r0, [r5] lsl r1, r1, #2 add r1, r0, r1 bl MOD16_021D8A8C add sp, #0x14 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E3998 thumb_func_start MOD16_021E3A10 MOD16_021E3A10: ; 0x021E3A10 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #8] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021E3A30 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 b _021E3A3A _021E3A30: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C _021E3A3A: cmp r0, #0 beq _021E3A4C cmp r4, #0 beq _021E3A48 add r0, r6, #0 bl MOD16_021E3960 _021E3A48: mov r0, #1 pop {r4, r5, r6, pc} _021E3A4C: mov r1, #0x5b ldr r0, [r5] lsl r1, r1, #2 add r1, r0, r1 bl MOD16_021D8A8C mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E3A10 thumb_func_start MOD16_021E3A5C MOD16_021E3A5C: ; 0x021E3A5C push {r4, r5, r6, r7, lr} sub sp, #0x14 add r6, r0, #0 add r5, r1, #0 add r7, r2, #0 add r4, r3, #0 bl MOD16_021E3928 cmp r4, #0 bne _021E3A86 ldr r0, [r5, #8] mov r1, #0x28 str r0, [sp] ldr r0, [r5, #0x10] mov r3, #0x78 str r0, [sp, #4] ldr r0, _021E3AE8 ; =0x00000814 ldr r2, [r5, #4] add r0, r6, r0 bl MOD16_021D8BD8 _021E3A86: ldr r0, [r7, #8] bl MOD16_021E8C68 cmp r0, #0 beq _021E3AE4 cmp r4, #0 beq _021E3ABE mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r2, #0x2f str r2, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 ldr r1, [r5, #0x10] sub r2, #0x3f lsl r1, r1, #0x18 lsr r1, r1, #0x18 bl MOD16_021D8988 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021E3ABE: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r3, #0x2f str r3, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 ldr r1, [r5, #0x10] sub r3, #0x3f lsl r1, r1, #0x18 lsr r1, r1, #0x18 bl MOD16_021D8988 _021E3AE4: add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021E3AE8: .word 0x00000814 thumb_func_end MOD16_021E3A5C thumb_func_start MOD16_021E3AEC MOD16_021E3AEC: ; 0x021E3AEC push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bne _021E3B14 ldr r0, _021E3B6C ; =0x00000814 add r0, r5, r0 bl MOD16_021D8BF4 str r0, [sp] ldr r2, _021E3B6C ; =0x00000814 ldr r0, [r4] ldr r1, [r5, r2] add r2, r2, #4 ldr r2, [r5, r2] bl MOD16_021D86F4 b _021E3B18 _021E3B14: mov r0, #1 str r0, [sp] _021E3B18: ldr r0, [r6, #8] bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r4] beq _021E3B32 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 str r0, [sp, #4] b _021E3B3E _021E3B32: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C str r0, [sp, #4] _021E3B3E: mov r1, #0 add r2, sp, #0 _021E3B42: ldr r0, [r2] cmp r0, #0 beq _021E3B50 add r1, r1, #1 add r2, r2, #4 cmp r1, #2 blt _021E3B42 _021E3B50: cmp r1, #2 bne _021E3B64 cmp r7, #1 bne _021E3B5E add r0, r5, #0 bl MOD16_021E3960 _021E3B5E: add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E3B64: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _021E3B6C: .word 0x00000814 thumb_func_end MOD16_021E3AEC thumb_func_start MOD16_021E3B70 MOD16_021E3B70: ; 0x021E3B70 push {r3, r4, r5, r6, lr} sub sp, #4 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r6, r2, #0 add r0, r0, #4 mov r1, #0 bl FUN_02019620 str r6, [sp] ldr r3, _021E3BBC ; =0x000007F8 ldr r0, [r4] mov r1, #0x1e mov r2, #1 add r3, r5, r3 bl MOD16_021D8D98 ldr r1, _021E3BC0 ; =0x000007F4 mov r2, #1 str r0, [r5, r1] str r6, [sp] lsl r3, r2, #0xb ldr r0, [r4] mov r1, #0x1f add r3, r5, r3 bl MOD16_021D8D98 ldr r1, _021E3BC4 ; =0x000007FC str r0, [r5, r1] ldr r0, [r4] mov r1, #8 add r0, r0, #4 bl FUN_0201AB24 add sp, #4 pop {r3, r4, r5, r6, pc} nop _021E3BBC: .word 0x000007F8 _021E3BC0: .word 0x000007F4 _021E3BC4: .word 0x000007FC thumb_func_end MOD16_021E3B70 thumb_func_start MOD16_021E3BC8 MOD16_021E3BC8: ; 0x021E3BC8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_02018744 ldr r0, _021E3C10 ; =0x000007F4 ldr r0, [r5, r0] bl FUN_02016A18 ldr r1, _021E3C10 ; =0x000007F4 mov r2, #0 str r2, [r5, r1] add r0, r1, #4 add r1, #8 str r2, [r5, r0] ldr r0, [r5, r1] bl FUN_02016A18 ldr r0, _021E3C14 ; =0x000007FC mov r1, #0 str r1, [r5, r0] add r0, r0, #4 str r1, [r5, r0] ldr r0, [r4] add r0, r0, #4 bl FUN_0201AB24 pop {r3, r4, r5, pc} .align 2, 0 _021E3C10: .word 0x000007F4 _021E3C14: .word 0x000007FC thumb_func_end MOD16_021E3BC8 thumb_func_start MOD16_021E3C18 MOD16_021E3C18: ; 0x021E3C18 push {r4, r5, r6, r7, lr} sub sp, #0x3c add r4, r2, #0 add r6, r0, #0 str r1, [sp, #0x28] str r3, [sp, #0x2c] bl MOD16_021E3DBC add r0, r4, #0 add r0, #0x1c str r0, [sp] ldr r0, [r4, #4] mov r1, #0x1e str r0, [sp, #4] ldr r0, [r4, #0xc] ldr r3, _021E3DAC ; =0x00000808 str r0, [sp, #8] add r0, r6, #0 ldr r3, [r6, r3] add r0, #0xec add r2, r1, #0 bl MOD16_021DBEC4 ldr r1, _021E3DB0 ; =0x00000838 str r0, [r6, r1] ldr r0, [r4, #0x20] sub r1, r0, #1 ldr r0, [r4, #0xc] add r7, r1, r0 ldr r0, [sp, #0x2c] add r1, r7, #0 bl FUN_020169D8 add r5, r0, #0 mov r1, #0 cmp r7, #0 ble _021E3C7E _021E3C62: ldr r2, [r4, #0xc] cmp r1, r2 bhs _021E3C6E ldr r0, [r4, #4] ldrb r0, [r0, r1] b _021E3C76 _021E3C6E: sub r2, r1, r2 ldr r0, [r4, #0x1c] lsl r2, r2, #2 ldr r0, [r0, r2] _021E3C76: strb r0, [r5, r1] add r1, r1, #1 cmp r1, r7 blt _021E3C62 _021E3C7E: add r0, r4, #0 add r0, #0x2c str r0, [sp] str r5, [sp, #4] mov r0, #0x47 lsl r0, r0, #4 mov r1, #0x1e ldr r3, _021E3DAC ; =0x00000808 str r7, [sp, #8] ldr r3, [r6, r3] add r0, r6, r0 add r2, r1, #0 bl MOD16_021DBEC4 mov r1, #0x21 lsl r1, r1, #6 str r0, [r6, r1] add r0, r5, #0 bl FUN_02016A18 add r0, r6, #0 mov r1, #0x1e add r0, #0xec add r2, r1, #0 bl MOD16_021DB7C0 mov r0, #0x47 lsl r0, r0, #4 mov r1, #0x1e add r0, r6, r0 add r2, r1, #0 bl MOD16_021DB7C0 ldr r0, [sp, #0x28] ldr r0, [r0] bl MOD16_021D9DE8 ldr r1, _021E3DB4 ; =0x0000015D cmp r0, r1 bne _021E3CDE mov r1, #5 str r1, [sp, #0x38] mov r1, #0x5c str r1, [sp, #0x34] mov r1, #0xe mov r0, #4 str r1, [sp, #0x30] b _021E3CEC _021E3CDE: mov r1, #1 str r1, [sp, #0x38] mov r1, #0x5c str r1, [sp, #0x34] mov r1, #0x20 mov r0, #0 str r1, [sp, #0x30] _021E3CEC: add r1, r6, #0 mov r2, #0 add r1, #0xc4 str r2, [r1] ldr r1, [sp, #0x30] ldr r3, [sp, #0x34] str r1, [sp] mov r1, #5 str r1, [sp, #4] str r1, [sp, #8] ldr r1, _021E3DB8 ; =0x00000804 ldr r2, [r6, r1] add r1, #0x30 str r2, [sp, #0xc] add r2, r4, #0 add r2, #0x14 str r2, [sp, #0x10] mov r2, #2 str r2, [sp, #0x14] str r0, [sp, #0x18] ldr r0, [r4, #8] mov r2, #0x2c str r0, [sp, #0x1c] ldr r0, [r4, #0x10] str r0, [sp, #0x20] add r0, r6, r1 add r1, r6, #0 str r0, [sp, #0x24] add r1, #0xc4 ldr r1, [r1] add r0, r6, #4 bl MOD16_021DBF9C add r1, r6, #0 add r1, #0xc4 str r0, [r1] ldr r0, [r4, #0x18] sub r1, r0, #1 ldr r0, [r4, #0x10] add r7, r1, r0 ldr r0, [sp, #0x2c] add r1, r7, #0 bl FUN_020169D8 add r5, r0, #0 mov r1, #0 cmp r7, #0 ble _021E3D68 _021E3D4C: ldr r2, [r4, #0x10] cmp r1, r2 bhs _021E3D58 ldr r0, [r4, #8] ldrb r0, [r0, r1] b _021E3D60 _021E3D58: sub r2, r1, r2 ldr r0, [r4, #0x14] lsl r2, r2, #2 ldr r0, [r0, r2] _021E3D60: strb r0, [r5, r1] add r1, r1, #1 cmp r1, r7 blt _021E3D4C _021E3D68: ldr r0, [sp, #0x30] ldr r1, _021E3DB8 ; =0x00000804 str r0, [sp] mov r0, #5 str r0, [sp, #4] str r0, [sp, #8] ldr r0, [r6, r1] add r4, #0x24 str r0, [sp, #0xc] str r4, [sp, #0x10] mov r0, #3 str r0, [sp, #0x14] ldr r0, [sp, #0x38] add r1, #0x38 str r0, [sp, #0x18] str r5, [sp, #0x1c] add r0, r6, r1 str r7, [sp, #0x20] add r1, r6, #0 str r0, [sp, #0x24] add r1, #0xc4 ldr r1, [r1] ldr r3, [sp, #0x34] add r0, r6, #4 mov r2, #0x2c bl MOD16_021DBF9C add r6, #0xc4 str r0, [r6] add r0, r5, #0 bl FUN_02016A18 add sp, #0x3c pop {r4, r5, r6, r7, pc} .align 2, 0 _021E3DAC: .word 0x00000808 _021E3DB0: .word 0x00000838 _021E3DB4: .word 0x0000015D _021E3DB8: .word 0x00000804 thumb_func_end MOD16_021E3C18 thumb_func_start MOD16_021E3DBC MOD16_021E3DBC: ; 0x021E3DBC push {r3, r4, r5, r6, r7, lr} mov r2, #0xe1 add r6, r0, #0 add r0, #0xec mov r1, #0 lsl r2, r2, #2 bl Call_FillMemWithValue mov r2, #0x47 lsl r2, r2, #4 add r0, r6, r2 mov r1, #0 sub r2, #0xec bl Call_FillMemWithValue add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] mov r4, #0 cmp r0, #0 ble _021E3E00 add r5, r6, #0 add r7, r4, #0 _021E3DEA: ldr r0, [r5, #4] add r1, r7, #0 bl FUN_020200A0 add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] add r4, r4, #1 add r5, r5, #4 cmp r4, r0 blt _021E3DEA _021E3E00: mov r0, #0 add r6, #0xc4 str r0, [r6] pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E3DBC thumb_func_start MOD16_021E3E08 MOD16_021E3E08: ; 0x021E3E08 mov r0, #0 str r0, [r2] bx lr .align 2, 0 thumb_func_end MOD16_021E3E08 thumb_func_start MOD16_021E3E10 MOD16_021E3E10: ; 0x021E3E10 push {r4, r5, r6, lr} add r5, r1, #0 add r6, r2, #0 ldr r2, [r5] ldr r1, _021E3E60 ; =0x00001768 mov r4, #0 ldr r1, [r2, r1] cmp r1, #0 bne _021E3E30 ldr r3, _021E3E64 ; =0x021FF5D6 ldr r1, _021E3E68 ; =0x0000FFFF _021E3E26: add r3, r3, #2 ldrh r2, [r3] add r4, r4, #1 cmp r2, r1 bne _021E3E26 _021E3E30: cmp r4, #0 beq _021E3E3C add r1, r4, #0 bl FUN_02016998 b _021E3E3E _021E3E3C: mov r0, #0 _021E3E3E: str r4, [r6] ldr r3, [r5] ldr r2, _021E3E60 ; =0x00001768 mov r1, #0 ldr r2, [r3, r2] cmp r2, #0 bne _021E3E5E ldr r4, _021E3E64 ; =0x021FF5D6 ldr r2, _021E3E68 ; =0x0000FFFF _021E3E50: ldrh r3, [r4] add r4, r4, #2 strb r3, [r0, r1] ldrh r3, [r4] add r1, r1, #1 cmp r3, r2 bne _021E3E50 _021E3E5E: pop {r4, r5, r6, pc} .align 2, 0 _021E3E60: .word 0x00001768 _021E3E64: .word 0x021FF5D6 _021E3E68: .word 0x0000FFFF thumb_func_end MOD16_021E3E10 thumb_func_start MOD16_021E3E6C MOD16_021E3E6C: ; 0x021E3E6C push {r3, r4, r5, lr} sub sp, #0x18 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 mov r0, #2 lsl r0, r0, #0xa ldr r3, [r5, r0] mov r0, #5 str r0, [sp] mov r0, #0x47 lsl r0, r0, #4 add r0, r5, r0 str r0, [sp, #4] mov r1, #0x1e str r1, [sp, #8] str r1, [sp, #0xc] mov r0, #0x59 str r0, [sp, #0x10] str r1, [sp, #0x14] ldrh r2, [r3, #2] ldr r1, [r3, #0x14] ldrh r3, [r3] ldr r0, [r4] lsl r2, r2, #0x13 lsl r3, r3, #0x13 add r0, r0, #4 lsr r2, r2, #0x10 lsr r3, r3, #0x10 bl MOD16_021DB728 ldr r0, _021E3EEC ; =0x000007F8 mov r1, #0x1e ldr r3, [r5, r0] mov r0, #5 str r0, [sp] add r5, #0xec str r5, [sp, #4] str r1, [sp, #8] str r1, [sp, #0xc] mov r0, #0x59 str r0, [sp, #0x10] str r1, [sp, #0x14] ldrh r2, [r3, #2] ldr r1, [r3, #0x14] ldrh r3, [r3] ldr r0, [r4] lsl r2, r2, #0x13 lsl r3, r3, #0x13 add r0, r0, #4 lsr r2, r2, #0x10 lsr r3, r3, #0x10 bl MOD16_021DB728 ldr r0, [r4] add r0, r0, #4 bl FUN_020191D0 add sp, #0x18 pop {r3, r4, r5, pc} .align 2, 0 _021E3EEC: .word 0x000007F8 thumb_func_end MOD16_021E3E6C thumb_func_start MOD16_021E3EF0 MOD16_021E3EF0: ; 0x021E3EF0 push {r4, lr} ldr r1, _021E3F4C ; =0x00000834 add r4, r0, #0 ldr r0, [r4, r1] cmp r0, #0 bne _021E3F30 add r0, r1, #4 ldr r0, [r4, r0] cmp r0, #0 bne _021E3F30 add r0, r1, #0 add r0, #8 ldr r0, [r4, r0] cmp r0, #0 bne _021E3F30 add r1, #0xc ldr r0, [r4, r1] cmp r0, #0 bne _021E3F30 add r0, r4, #0 add r0, #0xc8 ldr r0, [r0] mov r1, #1 bl FUN_020200A0 add r4, #0xcc ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_020119D0 pop {r4, pc} _021E3F30: add r0, r4, #0 add r0, #0xc8 ldr r0, [r0] mov r1, #0 bl FUN_020200A0 add r4, #0xcc ldr r0, [r4] mov r1, #0 ldr r0, [r0] bl FUN_020119D0 pop {r4, pc} nop _021E3F4C: .word 0x00000834 thumb_func_end MOD16_021E3EF0 thumb_func_start MOD16_021E3F50 MOD16_021E3F50: ; 0x021E3F50 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 mov r4, #0 mov r7, #1 _021E3F5A: cmp r4, r6 bne _021E3F6E add r0, r5, #0 add r0, #0xe0 ldr r0, [r0] add r1, r7, #0 ldr r0, [r0] bl FUN_020119D0 b _021E3F7C _021E3F6E: add r0, r5, #0 add r0, #0xe0 ldr r0, [r0] mov r1, #0 ldr r0, [r0] bl FUN_020119D0 _021E3F7C: add r4, r4, #1 add r5, r5, #4 cmp r4, #3 blt _021E3F5A pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E3F50 thumb_func_start MOD16_021E3F88 MOD16_021E3F88: ; 0x021E3F88 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r2, #0 add r4, r3, #0 add r7, r1, #0 ldr r2, [r5] ldr r1, [r4] cmp r2, r1 beq _021E3FC0 ldr r3, [sp, #0x18] add r1, r6, #0 add r2, r4, #0 bl MOD16_021E3C18 add r0, r5, #0 add r1, r7, #0 bl MOD16_021E3E6C ldr r1, [r6, #4] add r0, r5, #0 bl MOD16_021E3F50 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E3EF0 ldr r0, [r4] str r0, [r5] _021E3FC0: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E3F88 thumb_func_start MOD16_021E3FC4 MOD16_021E3FC4: ; 0x021E3FC4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r6, r2, #0 bl MOD16_021D9DE8 add r7, r0, #0 ldr r0, [r4, #4] cmp r0, #0 beq _021E3FE6 cmp r0, #1 beq _021E3FF0 cmp r0, #2 beq _021E3FFA b _021E4004 _021E3FE6: mov r0, #0 str r0, [sp, #4] mov r0, #5 str r0, [sp] b _021E4008 _021E3FF0: mov r0, #1 str r0, [sp, #4] mov r0, #6 str r0, [sp] b _021E4008 _021E3FFA: mov r0, #2 str r0, [sp, #4] mov r0, #7 str r0, [sp] b _021E4008 _021E4004: bl ErrorHandling _021E4008: add r0, r5, #0 ldr r2, [sp, #4] add r0, #0x14 add r1, r7, #0 add r3, r6, #0 bl MOD16_021DBD30 add r0, r5, #0 ldr r2, [sp] add r0, #0x1c add r1, r7, #0 add r3, r6, #0 bl MOD16_021DBD30 ldr r0, [r4] bl MOD16_021D9A54 cmp r0, #0 bne _021E404E add r0, r5, #0 add r0, #0x24 add r1, r7, #0 mov r2, #3 add r3, r6, #0 bl MOD16_021DBD30 add r5, #0x2c add r0, r5, #0 add r1, r7, #0 mov r2, #8 add r3, r6, #0 bl MOD16_021DBD30 add sp, #8 pop {r3, r4, r5, r6, r7, pc} _021E404E: add r0, r5, #0 add r0, #0x24 add r1, r7, #0 mov r2, #4 add r3, r6, #0 bl MOD16_021DBD30 add r5, #0x2c add r0, r5, #0 add r1, r7, #0 mov r2, #9 add r3, r6, #0 bl MOD16_021DBD30 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E3FC4 thumb_func_start MOD16_021E4070 MOD16_021E4070: ; 0x021E4070 push {r4, lr} add r4, r0, #0 add r0, #0x14 bl MOD16_021DBDC0 add r0, r4, #0 add r0, #0x1c bl MOD16_021DBDC0 add r0, r4, #0 add r0, #0x24 bl MOD16_021DBDC0 add r4, #0x2c add r0, r4, #0 bl MOD16_021DBDC0 pop {r4, pc} thumb_func_end MOD16_021E4070 thumb_func_start MOD16_021E4094 MOD16_021E4094: ; 0x021E4094 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 ldr r0, _021E40D0 ; =0x0000080C mov r1, #0 str r1, [r6, r0] add r0, r0, #4 str r1, [r6, r0] mov r0, #2 bl FUN_0201E6E4 add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] mov r4, #0 cmp r0, #0 ble _021E40CE add r5, r6, #0 add r7, r4, #0 _021E40B8: ldr r0, [r5, #4] add r1, r7, #0 bl FUN_020200A0 add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] add r4, r4, #1 add r5, r5, #4 cmp r4, r0 blt _021E40B8 _021E40CE: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E40D0: .word 0x0000080C thumb_func_end MOD16_021E4094 thumb_func_start MOD16_021E40D4 MOD16_021E40D4: ; 0x021E40D4 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 mov r0, #0x10 str r0, [sp] ldr r0, _021E4118 ; =0x04000050 mov r1, #0xa mov r2, #8 mov r3, #0 bl G2x_SetBlendAlpha_ mov r0, #2 mov r1, #1 bl FUN_0201E6E4 add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] mov r4, #0 cmp r0, #0 ble _021E4116 add r5, r6, #0 add r7, r4, #0 _021E4100: ldr r0, [r5, #4] add r1, r7, #0 bl FUN_020200A0 add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] add r4, r4, #1 add r5, r5, #4 cmp r4, r0 blt _021E4100 _021E4116: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E4118: .word 0x04000050 thumb_func_end MOD16_021E40D4 thumb_func_start MOD16_021E411C MOD16_021E411C: ; 0x021E411C push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, _021E41F4 ; =0x0000080C ldr r1, [r5, r0] cmp r1, #0x20 blt _021E4172 mov r4, #0 str r4, [r5, r0] add r0, r0, #4 ldr r0, [r5, r0] cmp r0, #0 bne _021E4162 add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0 ble _021E4158 add r6, r5, #0 mov r7, #1 _021E4142: ldr r0, [r6, #4] add r1, r7, #0 bl FUN_020200A0 add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] add r4, r4, #1 add r6, r6, #4 cmp r4, r0 blt _021E4142 _021E4158: mov r0, #0x81 mov r1, #1 lsl r0, r0, #4 str r1, [r5, r0] b _021E4172 _021E4162: mov r0, #2 mov r1, #1 bl FUN_0201E6E4 mov r0, #0x81 add r1, r4, #0 lsl r0, r0, #4 str r1, [r5, r0] _021E4172: ldr r0, _021E41F4 ; =0x0000080C ldr r1, [r5, r0] cmp r1, #0x10 blt _021E417E mov r0, #0x20 sub r1, r0, r1 _021E417E: lsl r2, r1, #0xc asr r1, r2, #0x1f lsr r0, r2, #0x10 lsl r3, r1, #0x10 mov r1, #2 orr r3, r0 lsl r2, r2, #0x10 mov r0, #0 lsl r1, r1, #0xa add r4, r2, r1 adc r3, r0 lsl r2, r3, #0x14 lsr r0, r4, #0xc orr r0, r2 lsl r1, r1, #5 bl FX_Div asr r1, r0, #0xc mov r0, #1 lsl r0, r0, #0xc orr r1, r0 ldr r0, _021E41F8 ; =0x04000052 strh r1, [r0] ldr r0, _021E41F4 ; =0x0000080C ldr r1, [r5, r0] add r1, r1, #1 str r1, [r5, r0] ldr r1, [r5, r0] cmp r1, #0x20 blt _021E41F2 add r0, r0, #4 ldr r0, [r5, r0] cmp r0, #0 bne _021E41CC mov r0, #2 mov r1, #0 bl FUN_0201E6E4 pop {r3, r4, r5, r6, r7, pc} _021E41CC: add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] mov r4, #0 cmp r0, #0 ble _021E41F2 add r6, r5, #0 add r7, r4, #0 _021E41DC: ldr r0, [r6, #4] add r1, r7, #0 bl FUN_020200A0 add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] add r4, r4, #1 add r6, r6, #4 cmp r4, r0 blt _021E41DC _021E41F2: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E41F4: .word 0x0000080C _021E41F8: .word 0x04000052 thumb_func_end MOD16_021E411C thumb_func_start MOD16_021E41FC MOD16_021E41FC: ; 0x021E41FC push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 bl MOD16_021D8700 add r6, r0, #0 ldr r0, [r4] bl MOD16_021D9DE8 add r2, r0, #0 mov r0, #0x28 str r0, [sp] mov r0, #0x78 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r4] mov r3, #2 bl MOD16_021D7FB4 add r0, r6, #0 mov r1, #6 mov r2, #0 bl FUN_02007558 add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E41FC thumb_func_start MOD16_021E4234 MOD16_021E4234: ; 0x021E4234 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021E42AC add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E42E8 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E4310 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021E4340 str r0, [r5, #0x24] ldr r0, _021E427C ; =MOD16_021E4344 str r0, [r5, #8] ldr r0, _021E4280 ; =MOD16_021E437C str r0, [r5, #0xc] ldr r0, _021E4284 ; =MOD16_021E43AC str r0, [r5, #0x10] ldr r0, _021E4288 ; =MOD16_021E43C0 str r0, [r5, #0x14] ldr r0, _021E428C ; =MOD16_021E4478 str r0, [r5, #0x18] ldr r0, _021E4290 ; =MOD16_021E44AC str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E427C: .word MOD16_021E4344 _021E4280: .word MOD16_021E437C _021E4284: .word MOD16_021E43AC _021E4288: .word MOD16_021E43C0 _021E428C: .word MOD16_021E4478 _021E4290: .word MOD16_021E44AC thumb_func_end MOD16_021E4234 thumb_func_start MOD16_021E4294 MOD16_021E4294: ; 0x021E4294 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E4314 ldr r0, [r4, #4] bl MOD16_021E4328 ldr r0, [r4, #0x20] bl MOD16_021E433C pop {r4, pc} thumb_func_end MOD16_021E4294 thumb_func_start MOD16_021E42AC MOD16_021E42AC: ; 0x021E42AC push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #8 bl FUN_02016998 add r4, r0, #0 bne _021E42BE bl ErrorHandling _021E42BE: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] add r0, r5, #0 mov r1, #6 bl MOD16_021D7B5C str r0, [r4] add r0, r5, #0 mov r1, #3 bl MOD16_021D7B7C str r0, [r4, #4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E42AC thumb_func_start MOD16_021E42E8 MOD16_021E42E8: ; 0x021E42E8 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021E42FA bl ErrorHandling _021E42FA: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E42E8 thumb_func_start MOD16_021E4310 MOD16_021E4310: ; 0x021E4310 mov r0, #0 bx lr thumb_func_end MOD16_021E4310 thumb_func_start MOD16_021E4314 MOD16_021E4314: ; 0x021E4314 push {r4, lr} add r4, r0, #0 bne _021E431E bl ErrorHandling _021E431E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E4314 thumb_func_start MOD16_021E4328 MOD16_021E4328: ; 0x021E4328 push {r4, lr} add r4, r0, #0 bne _021E4332 bl ErrorHandling _021E4332: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E4328 thumb_func_start MOD16_021E433C MOD16_021E433C: ; 0x021E433C bx lr .align 2, 0 thumb_func_end MOD16_021E433C thumb_func_start MOD16_021E4340 MOD16_021E4340: ; 0x021E4340 mov r0, #0 bx lr thumb_func_end MOD16_021E4340 thumb_func_start MOD16_021E4344 MOD16_021E4344: ; 0x021E4344 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] add r6, r1, #0 mov r1, #0x28 bl FUN_02016998 add r4, r0, #0 bne _021E435A bl ErrorHandling _021E435A: add r0, r4, #0 mov r1, #0 mov r2, #0x28 bl Call_FillMemWithValue str r4, [r5, #8] add r0, r4, #0 add r1, r6, #0 bl MOD16_021E4A88 ldr r2, [r5, #4] add r0, r4, #0 add r1, r6, #0 bl MOD16_021E47E4 mov r0, #1 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E4344 thumb_func_start MOD16_021E437C MOD16_021E437C: ; 0x021E437C push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r0, #0xc] ldr r4, [r0, #8] cmp r1, #1 bne _021E438C mov r0, #1 pop {r3, r4, r5, pc} _021E438C: ldr r0, [r0, #0x10] cmp r0, #1 bne _021E4396 mov r0, #0 pop {r3, r4, r5, pc} _021E4396: ldr r0, [r5, #4] bl MOD16_021E95C0 cmp r0, #0 beq _021E43A8 add r0, r4, #0 add r1, r5, #0 bl MOD16_021E482C _021E43A8: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E437C thumb_func_start MOD16_021E43AC MOD16_021E43AC: ; 0x021E43AC push {r4, lr} ldr r4, [r0, #8] add r0, r4, #0 bl MOD16_021E4968 add r0, r4, #0 bl FUN_02016A18 mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021E43AC thumb_func_start MOD16_021E43C0 MOD16_021E43C0: ; 0x021E43C0 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r3, #8] add r4, r1, #0 str r0, [sp] ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #3 bhi _021E4474 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E43E0: ; jump table .short _021E43E8 - _021E43E0 - 2 ; case 0 .short _021E4402 - _021E43E0 - 2 ; case 1 .short _021E4436 - _021E43E0 - 2 ; case 2 .short _021E4458 - _021E43E0 - 2 ; case 3 _021E43E8: ldr r0, [r4, #4] mov r1, #0x2c bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x2c bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4474 _021E4402: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E45F8 ldr r2, [sp] add r0, r6, #0 add r1, r7, #0 bl MOD16_021E4980 ldr r3, [r4, #4] add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 bl MOD16_021E49B8 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E4550 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4474 _021E4436: ldr r3, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E49B8 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E45BC cmp r0, #0 beq _021E4474 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4474 _021E4458: ldr r3, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E49B8 mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #0 bl MOD16_021D8B3C mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E4474: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E43C0 thumb_func_start MOD16_021E4478 MOD16_021E4478: ; 0x021E4478 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 ldr r0, [r3, #8] add r5, r1, #0 add r4, r2, #0 str r0, [sp] ldr r7, [r5, #8] ldr r2, [sp] add r0, r7, #0 add r1, r4, #0 bl MOD16_021E4980 ldr r1, [sp] add r0, r6, #0 add r2, r4, #0 bl MOD16_021E4B14 ldr r3, [r5, #4] add r0, r7, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E49B8 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E4478 thumb_func_start MOD16_021E44AC MOD16_021E44AC: ; 0x021E44AC push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r5, [r4, #8] cmp r0, #4 bhi _021E4534 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E44C8: ; jump table .short _021E44D2 - _021E44C8 - 2 ; case 0 .short _021E44F4 - _021E44C8 - 2 ; case 1 .short _021E450A - _021E44C8 - 2 ; case 2 .short _021E451C - _021E44C8 - 2 ; case 3 .short _021E4530 - _021E44C8 - 2 ; case 4 _021E44D2: mov r0, #0x79 ldr r1, [r6] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 bl MOD16_021D8B3C add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021E4550 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4534 _021E44F4: add r0, r5, #0 add r1, r6, #0 mov r3, #0 bl MOD16_021E45BC cmp r0, #0 beq _021E4534 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4534 _021E450A: ldr r2, [r4, #4] add r0, r5, #0 add r1, r6, #0 bl MOD16_021E4620 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4534 _021E451C: ldr r0, [r5, #0x14] bl FUN_02016A18 ldr r0, [r4, #8] bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4534 _021E4530: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E4534: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E44AC thumb_func_start MOD16_021E4538 MOD16_021E4538: ; 0x021E4538 ldr r3, _021E4540 ; =0x02020399 ldr r0, [r0] mov r1, #1 bx r3 .align 2, 0 _021E4540: .word 0x02020399 thumb_func_end MOD16_021E4538 thumb_func_start MOD16_021E4544 MOD16_021E4544: ; 0x021E4544 ldr r3, _021E454C ; =0x02020399 ldr r0, [r0] mov r1, #0 bx r3 .align 2, 0 _021E454C: .word 0x02020399 thumb_func_end MOD16_021E4544 thumb_func_start MOD16_021E4550 MOD16_021E4550: ; 0x021E4550 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021E4538 ldr r0, [r4, #4] bl MOD16_021E95B8 cmp r0, #0 beq _021E45B8 cmp r6, #0 beq _021E4594 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r2, [r5] lsl r0, r0, #4 add r0, r2, r0 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r3, r4, r5, r6, pc} _021E4594: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r3, [r5] lsl r0, r0, #4 add r0, r3, r0 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E45B8: add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021E4550 thumb_func_start MOD16_021E45BC MOD16_021E45BC: ; 0x021E45BC push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #4] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E95B8 cmp r0, #0 beq _021E45DC mov r0, #0x19 ldr r1, [r5] lsl r0, r0, #4 add r0, r1, r0 bl MOD16_021D89B4 b _021E45E2 _021E45DC: mov r0, #2 bl FUN_0200A344 _021E45E2: cmp r0, #0 beq _021E45F4 cmp r4, #0 beq _021E45F0 add r0, r6, #0 bl MOD16_021E4544 _021E45F0: mov r0, #1 pop {r4, r5, r6, pc} _021E45F4: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E45BC thumb_func_start MOD16_021E45F8 MOD16_021E45F8: ; 0x021E45F8 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r2, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD16_021E4634 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E469C add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E4750 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E45F8 thumb_func_start MOD16_021E4620 MOD16_021E4620: ; 0x021E4620 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E47D8 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E471C pop {r3, r4, r5, pc} thumb_func_end MOD16_021E4620 thumb_func_start MOD16_021E4634 MOD16_021E4634: ; 0x021E4634 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] add r5, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x22 mov r3, #6 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x45 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #6 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E4634 thumb_func_start MOD16_021E469C MOD16_021E469C: ; 0x021E469C push {r4, r5, r6, r7, lr} sub sp, #0xc ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E4710 ; =0x000017D9 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x69 mov r3, #1 bl FUN_020091E0 str r0, [r5, #4] bl FUN_02009B04 ldr r0, [r5, #4] bl FUN_02009474 ldr r0, _021E4714 ; =0x000017D7 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x67 mov r3, #1 bl FUN_02009358 str r0, [r5, #0xc] ldr r0, _021E4718 ; =0x000017D8 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x68 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x10] add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _021E4710: .word 0x000017D9 _021E4714: .word 0x000017D7 _021E4718: .word 0x000017D8 thumb_func_end MOD16_021E469C thumb_func_start MOD16_021E471C MOD16_021E471C: ; 0x021E471C push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #4] ldr r4, [r1] bl FUN_02009C0C mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #4] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0xc] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x10] bl FUN_02009490 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E471C thumb_func_start MOD16_021E4750 MOD16_021E4750: ; 0x021E4750 push {r4, r5, r6, lr} sub sp, #0x70 ldr r4, [r1] ldr r3, _021E47D0 ; =0x000017D8 add r5, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 add r6, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] ldr r2, _021E47D4 ; =0x0000083F str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #0 str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x1f str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] mov r0, #3 lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c str r6, [sp, #0x48] str r1, [sp, #0x34] bl FUN_0201FF84 mov r1, #0 str r0, [r5] bl FUN_02020130 add sp, #0x70 pop {r4, r5, r6, pc} .align 2, 0 _021E47D0: .word 0x000017D8 _021E47D4: .word 0x0000083F thumb_func_end MOD16_021E4750 thumb_func_start MOD16_021E47D8 MOD16_021E47D8: ; 0x021E47D8 ldr r3, _021E47E0 ; =0x0201FFC9 ldr r0, [r0] bx r3 nop _021E47E0: .word 0x0201FFC9 thumb_func_end MOD16_021E47D8 thumb_func_start MOD16_021E47E4 MOD16_021E47E4: ; 0x021E47E4 push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #4 bl FUN_02016998 str r0, [r5, #0x14] mov r1, #0xfe strb r1, [r0] ldr r1, [r5] ldr r0, [r5, #0x14] add r3, r5, #0 strb r1, [r0, #1] ldr r1, [r5, #4] ldr r0, [r5, #0x14] ldr r2, _021E4828 ; =MOD16_021E4938 strb r1, [r0, #2] ldr r0, [r5, #0x14] mov r1, #0x20 strb r1, [r0, #3] str r4, [r5, #0x18] str r5, [r5, #0x1c] str r6, [sp] ldr r0, [r5, #0x14] mov r1, #1 add r3, #0x18 bl FUN_020220C4 str r0, [r5, #0x10] add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _021E4828: .word MOD16_021E4938 thumb_func_end MOD16_021E47E4 thumb_func_start MOD16_021E482C MOD16_021E482C: ; 0x021E482C push {r3, r4, r5, lr} add r4, r0, #0 ldr r0, [r4, #0x10] add r5, r1, #0 bl FUN_02022144 add r0, r4, #0 add r1, r5, #0 bl MOD16_021E48BC ldr r1, [r4] ldr r0, [r4, #0x14] strb r1, [r0, #1] ldr r1, [r4, #4] ldr r0, [r4, #0x14] strb r1, [r0, #2] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E482C thumb_func_start MOD16_021E4850 MOD16_021E4850: ; 0x021E4850 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, _021E48B4 ; =0x021C48F8 add r4, r1, #0 ldrh r0, [r0, #0x22] cmp r0, #0 bne _021E48B2 ldr r0, [r4, #4] bl MOD16_021E95C8 cmp r0, #1 bne _021E48B2 ldr r0, [r4] bl MOD16_021E2F30 ldr r1, _021E48B8 ; =0x021C48B8 ldr r2, [r1, #0x48] mov r1, #0x20 tst r1, r2 beq _021E4892 sub r1, r0, #1 bpl _021E487E mov r1, #0 _021E487E: ldr r0, [r4] bl MOD16_021E2F38 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E4A88 mov r0, #1 str r0, [r5, #0x24] pop {r3, r4, r5, pc} _021E4892: mov r1, #0x10 tst r1, r2 beq _021E48B2 add r1, r0, #1 cmp r1, #3 blt _021E48A0 mov r1, #2 _021E48A0: ldr r0, [r4] bl MOD16_021E2F38 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E4A88 mov r0, #1 str r0, [r5, #0x24] _021E48B2: pop {r3, r4, r5, pc} .align 2, 0 _021E48B4: .word 0x021C48F8 _021E48B8: .word 0x021C48B8 thumb_func_end MOD16_021E4850 thumb_func_start MOD16_021E48BC MOD16_021E48BC: ; 0x021E48BC push {r3, r4, r5, lr} add r5, r0, #0 mov r2, #0 str r2, [r5, #0x24] ldr r3, [r5, #0x20] add r4, r1, #0 cmp r3, #0 beq _021E492E ldr r0, _021E4934 ; =0x021C48F8 ldrh r1, [r0, #0x22] cmp r1, #0 beq _021E492A ldrh r2, [r0, #0x1c] ldr r1, [r5, #8] sub r1, r2, r1 str r1, [r5] ldrh r1, [r0, #0x1e] ldr r0, [r5, #0xc] sub r0, r1, r0 str r0, [r5, #4] ldr r0, [r5] cmp r0, #0x18 bge _021E48EE mov r0, #0x18 str r0, [r5] _021E48EE: ldr r0, [r5] cmp r0, #0xf6 ble _021E48F8 mov r0, #0xf6 str r0, [r5] _021E48F8: ldr r0, [r5, #4] cmp r0, #0x40 bge _021E4902 mov r0, #0x40 str r0, [r5, #4] _021E4902: ldr r0, [r5] bl MOD16_021E4AC0 ldr r1, [r5, #4] add r0, #0x84 cmp r1, r0 ble _021E4912 str r0, [r5, #4] _021E4912: ldr r0, [r5] mov r1, #0x55 bl _s32_div_f add r1, r0, #0 cmp r1, #2 ble _021E4922 mov r1, #2 _021E4922: ldr r0, [r4] bl MOD16_021E2F38 pop {r3, r4, r5, pc} _021E492A: str r2, [r5, #0x20] pop {r3, r4, r5, pc} _021E492E: bl MOD16_021E4850 pop {r3, r4, r5, pc} .align 2, 0 _021E4934: .word 0x021C48F8 thumb_func_end MOD16_021E48BC thumb_func_start MOD16_021E4938 MOD16_021E4938: ; 0x021E4938 push {r4, lr} ldr r4, [r2, #4] cmp r1, #0 bne _021E495C ldr r0, _021E4960 ; =0x000005DD bl FUN_020054C8 mov r0, #1 str r0, [r4, #0x20] ldr r0, _021E4964 ; =0x021C48F8 ldr r1, [r4] ldrh r2, [r0, #0x1c] sub r1, r2, r1 str r1, [r4, #8] ldrh r1, [r0, #0x1e] ldr r0, [r4, #4] sub r0, r1, r0 str r0, [r4, #0xc] _021E495C: pop {r4, pc} nop _021E4960: .word 0x000005DD _021E4964: .word 0x021C48F8 thumb_func_end MOD16_021E4938 thumb_func_start MOD16_021E4968 MOD16_021E4968: ; 0x021E4968 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x10] bl FUN_0202212C ldr r0, [r4, #0x14] bl FUN_02016A18 mov r0, #0 str r0, [r4, #0x14] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E4968 thumb_func_start MOD16_021E4980 MOD16_021E4980: ; 0x021E4980 push {r4, r5, lr} sub sp, #0xc add r5, r0, #0 ldr r0, [r2] add r4, r1, #0 lsl r0, r0, #0xc str r0, [sp] ldr r0, [r2, #4] lsl r1, r0, #0xc mov r0, #3 lsl r0, r0, #0x12 str r1, [sp, #4] add r0, r1, r0 str r0, [sp, #4] ldr r0, [r5] add r1, sp, #0 bl FUN_02020044 ldr r0, [r4] bl MOD16_021E2F30 add r1, r0, #0 ldr r0, [r5] bl FUN_02020130 add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E4980 thumb_func_start MOD16_021E49B8 MOD16_021E49B8: ; 0x021E49B8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r2] add r7, r1, #0 str r3, [sp] mov r4, #0 bl MOD16_021E2F30 ldr r1, [r5, #0x18] add r6, r0, #0 cmp r1, r6 bne _021E49DC ldr r0, [r5, #0x14] cmp r0, #0 beq _021E49DC ldr r0, [r5, #0x1c] cmp r0, r1 beq _021E4A86 _021E49DC: ldr r0, [r5, #0x1c] cmp r0, r6 beq _021E49E8 str r0, [r5, #0x18] mov r0, #0 str r0, [r5, #0x24] _021E49E8: ldr r0, [r5, #0x24] cmp r0, #0 beq _021E49F8 cmp r0, #1 beq _021E4A2E cmp r0, #2 beq _021E4A64 b _021E4A6C _021E49F8: str r6, [r5, #0x1c] ldr r0, [r5, #0x14] cmp r0, #0 beq _021E4A04 bl FUN_02016A18 _021E4A04: ldr r1, [r5, #0x18] add r2, r5, #0 ldr r0, [r7] ldr r3, [sp] add r1, #0xf add r2, #0x20 bl MOD16_021D8D70 str r0, [r5, #0x14] mov r0, #0 str r0, [r5, #0x28] ldr r0, [r5, #0x18] cmp r0, r6 ble _021E4A24 mov r4, #1 b _021E4A26 _021E4A24: mov r4, #2 _021E4A26: ldr r0, [r5, #0x24] add r0, r0, #1 str r0, [r5, #0x24] b _021E4A6C _021E4A2E: ldr r0, [r5, #0x14] cmp r0, #0 beq _021E4A38 bl FUN_02016A18 _021E4A38: ldr r1, [r5, #0x1c] add r2, r5, #0 ldr r0, [r7] ldr r3, [sp] add r1, #0xf add r2, #0x20 bl MOD16_021D8D70 str r0, [r5, #0x14] mov r0, #0 str r0, [r5, #0x28] ldr r1, [r5, #0x18] ldr r0, [r5, #0x1c] cmp r1, r0 bge _021E4A5A mov r4, #1 b _021E4A5C _021E4A5A: mov r4, #2 _021E4A5C: ldr r0, [r5, #0x24] add r0, r0, #1 str r0, [r5, #0x24] b _021E4A6C _021E4A64: mov r4, #0 str r4, [r5, #0x24] ldr r0, [r5, #0x1c] str r0, [r5, #0x18] _021E4A6C: ldr r2, [r5, #0x20] mov r0, #0x1f ldr r3, [r2, #0xc] lsl r2, r4, #5 add r2, r3, r2 mov r1, #0x40 mov r3, #0x20 bl FUN_0201C2C8 cmp r0, #0 bne _021E4A86 bl ErrorHandling _021E4A86: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E49B8 thumb_func_start MOD16_021E4A88 MOD16_021E4A88: ; 0x021E4A88 push {r4, lr} add r4, r0, #0 ldr r0, [r1] bl MOD16_021E2F30 cmp r0, #0 beq _021E4AA0 cmp r0, #1 beq _021E4AAA cmp r0, #2 beq _021E4AB4 pop {r4, pc} _021E4AA0: mov r0, #0x20 str r0, [r4] mov r0, #0x80 str r0, [r4, #4] pop {r4, pc} _021E4AAA: mov r0, #0x80 str r0, [r4] mov r0, #0x60 str r0, [r4, #4] pop {r4, pc} _021E4AB4: mov r0, #0xe0 str r0, [r4] mov r0, #0x80 str r0, [r4, #4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E4A88 thumb_func_start MOD16_021E4AC0 MOD16_021E4AC0: ; 0x021E4AC0 push {r3, lr} cmp r0, #0x28 blt _021E4ACA cmp r0, #0xd8 ble _021E4ACE _021E4ACA: mov r0, #0x30 pop {r3, pc} _021E4ACE: ldr r1, _021E4B0C ; =0x00007FFF sub r0, #0x28 mul r1, r0 add r0, r1, #0 mov r1, #0xb0 bl _s32_div_f lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 ldr r0, _021E4B10 ; =0x020FFA38 mov r2, #3 ldrsh r0, [r0, r1] lsl r2, r2, #0x10 mov r3, #0 asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 asr r1, r1, #0xc mov r0, #0x30 sub r0, r0, r1 pop {r3, pc} .align 2, 0 _021E4B0C: .word 0x00007FFF _021E4B10: .word 0x020FFA38 thumb_func_end MOD16_021E4AC0 thumb_func_start MOD16_021E4B14 MOD16_021E4B14: ; 0x021E4B14 push {r3, r4, r5, lr} ldr r4, [r0] ldr r0, [r2, #4] add r5, r1, #0 bl MOD16_021E95C8 cmp r0, #1 bne _021E4B48 ldr r0, [r5, #0x24] cmp r0, #0 bne _021E4B3A mov r3, #0x20 str r3, [sp] ldr r1, [r5] ldr r2, [r5, #4] add r0, r4, #0 bl MOD16_021D8B04 pop {r3, r4, r5, pc} _021E4B3A: mov r3, #0x20 str r3, [sp] ldr r1, [r5] ldr r2, [r5, #4] add r0, r4, #0 bl MOD16_021D8B78 _021E4B48: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E4B14 thumb_func_start MOD16_021E4B4C MOD16_021E4B4C: ; 0x021E4B4C push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 add r0, r7, #0 bl MOD16_021E4BCC add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021E4C08 str r4, [r5] str r0, [r5, #4] mov r0, #0 str r0, [r5, #0x20] bl MOD16_021E4C58 str r0, [r5, #0x24] ldr r0, _021E4B8C ; =MOD16_021E4C5C str r0, [r5, #8] ldr r0, _021E4B90 ; =MOD16_021E4C80 str r0, [r5, #0xc] ldr r0, _021E4B94 ; =MOD16_021E4CD0 str r0, [r5, #0x10] ldr r0, _021E4B98 ; =MOD16_021E4CDC str r0, [r5, #0x14] ldr r0, _021E4B9C ; =MOD16_021E4DBC str r0, [r5, #0x18] ldr r0, _021E4BA0 ; =MOD16_021E4DC0 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E4B8C: .word MOD16_021E4C5C _021E4B90: .word MOD16_021E4C80 _021E4B94: .word MOD16_021E4CD0 _021E4B98: .word MOD16_021E4CDC _021E4B9C: .word MOD16_021E4DBC _021E4BA0: .word MOD16_021E4DC0 thumb_func_end MOD16_021E4B4C thumb_func_start MOD16_021E4BA4 MOD16_021E4BA4: ; 0x021E4BA4 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E4C30 ldr r0, [r4, #4] bl MOD16_021E4C44 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E4BA4 thumb_func_start MOD16_021E4BB8 MOD16_021E4BB8: ; 0x021E4BB8 mov r0, #0 bx lr thumb_func_end MOD16_021E4BB8 thumb_func_start MOD16_021E4BBC MOD16_021E4BBC: ; 0x021E4BBC mov r2, #1 cmp r1, #1 bne _021E4BC6 mov r1, #0 add r2, r1, #0 _021E4BC6: str r1, [r0, #0x18] add r0, r2, #0 bx lr thumb_func_end MOD16_021E4BBC thumb_func_start MOD16_021E4BCC MOD16_021E4BCC: ; 0x021E4BCC push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x20 bl FUN_02016998 add r4, r0, #0 bne _021E4BDE bl ErrorHandling _021E4BDE: add r0, r4, #0 mov r1, #0 mov r2, #0x20 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E4BCC thumb_func_start MOD16_021E4C08 MOD16_021E4C08: ; 0x021E4C08 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021E4C1A bl ErrorHandling _021E4C1A: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E4C08 thumb_func_start MOD16_021E4C30 MOD16_021E4C30: ; 0x021E4C30 push {r4, lr} add r4, r0, #0 bne _021E4C3A bl ErrorHandling _021E4C3A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E4C30 thumb_func_start MOD16_021E4C44 MOD16_021E4C44: ; 0x021E4C44 push {r4, lr} add r4, r0, #0 bne _021E4C4E bl ErrorHandling _021E4C4E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E4C44 thumb_func_start MOD16_021E4C58 MOD16_021E4C58: ; 0x021E4C58 mov r0, #0 bx lr thumb_func_end MOD16_021E4C58 thumb_func_start MOD16_021E4C5C MOD16_021E4C5C: ; 0x021E4C5C push {r4, lr} add r4, r1, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r1, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9A60 ldr r0, [r4, #4] bl MOD16_021D9D04 add r1, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9A78 mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021E4C5C thumb_func_start MOD16_021E4C80 MOD16_021E4C80: ; 0x021E4C80 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0xc] add r4, r1, #0 cmp r0, #1 bne _021E4C90 mov r0, #1 pop {r3, r4, r5, pc} _021E4C90: ldr r0, [r5, #0x10] cmp r0, #1 bne _021E4C9A mov r0, #0 pop {r3, r4, r5, pc} _021E4C9A: ldr r0, [r5] cmp r0, #0 bne _021E4CC8 ldr r0, [r4, #0x1c] cmp r0, #1 bne _021E4CC2 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r1, r0, #0 ldr r2, _021E4CCC ; =0x000001FF lsl r1, r1, #0x10 mov r0, #0xe lsr r1, r1, #0x10 add r3, r2, #0 str r2, [sp] bl FUN_020056AC mov r0, #0 str r0, [r4, #0x1c] _021E4CC2: ldr r0, [r5] add r0, r0, #1 str r0, [r5] _021E4CC8: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 _021E4CCC: .word 0x000001FF thumb_func_end MOD16_021E4C80 thumb_func_start MOD16_021E4CD0 MOD16_021E4CD0: ; 0x021E4CD0 push {r3, lr} mov r0, #0 bl FUN_02005614 mov r0, #1 pop {r3, pc} thumb_func_end MOD16_021E4CD0 thumb_func_start MOD16_021E4CDC MOD16_021E4CDC: ; 0x021E4CDC push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r5, [r4, #8] cmp r0, #3 bhi _021E4DB2 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E4CF8: ; jump table .short _021E4D00 - _021E4CF8 - 2 ; case 0 .short _021E4D1A - _021E4CF8 - 2 ; case 1 .short _021E4D64 - _021E4CF8 - 2 ; case 2 .short _021E4DA8 - _021E4CF8 - 2 ; case 3 _021E4D00: ldr r0, [r4, #4] mov r1, #0x74 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x74 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4DB2 _021E4D1A: ldr r3, [r4, #4] add r0, r5, #0 add r1, r6, #0 bl MOD16_021E4E7C ldr r0, [r7, #0x14] cmp r0, #0 beq _021E4D34 cmp r0, #1 beq _021E4D42 cmp r0, #2 beq _021E4D50 b _021E4D5C _021E4D34: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E5908 b _021E4D5C _021E4D42: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E5830 b _021E4D5C _021E4D50: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E5A04 _021E4D5C: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4DB2 _021E4D64: ldr r0, [r7, #0x14] cmp r0, #0 beq _021E4D74 cmp r0, #1 beq _021E4D82 cmp r0, #2 beq _021E4D90 b _021E4D9C _021E4D74: add r0, r5, #0 add r1, r6, #0 mov r3, #1 bl MOD16_021E598C add r1, r0, #0 b _021E4D9C _021E4D82: add r0, r5, #0 add r1, r6, #0 mov r3, #1 bl MOD16_021E58AC add r1, r0, #0 b _021E4D9C _021E4D90: add r0, r5, #0 add r1, r6, #0 mov r3, #1 bl MOD16_021E5A8C add r1, r0, #0 _021E4D9C: cmp r1, #0 beq _021E4DB2 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4DB2 _021E4DA8: ldr r0, _021E4DB8 ; =0x04000050 mov r1, #0 strh r1, [r0] mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E4DB2: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} nop _021E4DB8: .word 0x04000050 thumb_func_end MOD16_021E4CDC thumb_func_start MOD16_021E4DBC MOD16_021E4DBC: ; 0x021E4DBC mov r0, #0 bx lr thumb_func_end MOD16_021E4DBC thumb_func_start MOD16_021E4DC0 MOD16_021E4DC0: ; 0x021E4DC0 push {r3, r4, r5, lr} add r4, r1, #0 ldr r5, [r4] add r3, r0, #0 add r1, r2, #0 ldr r0, [r4, #8] cmp r5, #4 bhi _021E4E76 add r5, r5, r5 add r5, pc ldrh r5, [r5, #6] lsl r5, r5, #0x10 asr r5, r5, #0x10 add pc, r5 _021E4DDC: ; jump table .short _021E4DE6 - _021E4DDC - 2 ; case 0 .short _021E4E1A - _021E4DDC - 2 ; case 1 .short _021E4E58 - _021E4DDC - 2 ; case 2 .short _021E4E66 - _021E4DDC - 2 ; case 3 .short _021E4E72 - _021E4DDC - 2 ; case 4 _021E4DE6: ldr r1, [r1, #0x14] cmp r1, #0 beq _021E4DF6 cmp r1, #1 beq _021E4E00 cmp r1, #2 beq _021E4E0A b _021E4E12 _021E4DF6: add r1, r3, #0 mov r3, #0 bl MOD16_021E5908 b _021E4E12 _021E4E00: add r1, r3, #0 mov r3, #0 bl MOD16_021E5830 b _021E4E12 _021E4E0A: add r1, r3, #0 mov r3, #0 bl MOD16_021E5A04 _021E4E12: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4E76 _021E4E1A: ldr r1, [r1, #0x14] cmp r1, #0 beq _021E4E2A cmp r1, #1 beq _021E4E36 cmp r1, #2 beq _021E4E42 b _021E4E4C _021E4E2A: add r1, r3, #0 mov r3, #0 bl MOD16_021E598C add r2, r0, #0 b _021E4E4C _021E4E36: add r1, r3, #0 mov r3, #0 bl MOD16_021E58AC add r2, r0, #0 b _021E4E4C _021E4E42: add r1, r3, #0 mov r3, #0 bl MOD16_021E5A8C add r2, r0, #0 _021E4E4C: cmp r2, #0 beq _021E4E76 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4E76 _021E4E58: add r1, r3, #0 bl MOD16_021E4EE4 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4E76 _021E4E66: bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E4E76 _021E4E72: mov r0, #1 pop {r3, r4, r5, pc} _021E4E76: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E4DC0 thumb_func_start MOD16_021E4E7C MOD16_021E4E7C: ; 0x021E4E7C push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r4, r2, #0 add r6, r3, #0 add r7, r0, #0 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E53C4 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E5410 add r0, r7, #0 add r1, r5, #0 add r2, r6, #0 bl MOD16_021E5464 add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021E56D0 add r0, r5, #0 add r1, r6, #0 bl MOD16_021E4F1C add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E5030 ldr r0, [r4, #4] bl MOD16_021D9DF8 cmp r0, #2 bne _021E4EE2 add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021E51FC add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021E5554 _021E4EE2: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E4E7C thumb_func_start MOD16_021E4EE4 MOD16_021E4EE4: ; 0x021E4EE4 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 bl MOD16_021E5818 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E5224 add r0, r5, #0 bl MOD16_021E56B4 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E5510 ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_02018744 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E4EE4 thumb_func_start MOD16_021E4F1C MOD16_021E4F1C: ; 0x021E4F1C push {r3, r4, r5, r6, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #3 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x32 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r6, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x33 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r1, #3 str r1, [sp] add r6, r0, #0 ldrh r0, [r2] mov r3, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x34 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r6, r0, #0 ldr r2, [sp, #0x10] mov r0, #8 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x36 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r4, r0, #0 ldr r2, [sp, #0x10] mov r0, #0x10 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E4F1C thumb_func_start MOD16_021E5030 MOD16_021E5030: ; 0x021E5030 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] add r7, r2, #0 bl MOD16_021D9DE8 add r6, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DF8 cmp r0, #2 beq _021E504C mov r6, #0 _021E504C: ldr r0, _021E5060 ; =0x00020100 add r1, r6, #0 str r0, [sp] ldr r0, [r5] ldr r3, [r4, #0x18] add r0, r0, #4 add r2, r7, #0 bl MOD16_021E5064 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E5060: .word 0x00020100 thumb_func_end MOD16_021E5030 thumb_func_start MOD16_021E5064 MOD16_021E5064: ; 0x021E5064 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r6, r2, #0 add r5, r0, #0 str r1, [sp, #0x10] mov r0, #0x40 add r1, r6, #0 str r3, [sp, #0x14] ldr r4, [sp, #0x30] bl FUN_020219F4 add r7, r0, #0 ldr r2, _021E5100 ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r6, #0 bl FUN_0200A86C mov r1, #9 add r2, r7, #0 str r0, [sp, #0x18] bl FUN_0200A8E0 mov r0, #0x58 str r0, [sp] mov r1, #0 str r1, [sp, #4] str r4, [sp, #8] add r0, r5, #0 add r2, r7, #0 mov r3, #0x98 str r1, [sp, #0xc] bl FUN_0201BDE0 ldr r0, [sp, #0x18] mov r1, #0xa add r2, r7, #0 bl FUN_0200A8E0 mov r0, #0x68 str r0, [sp] mov r1, #0 str r1, [sp, #4] str r4, [sp, #8] add r0, r5, #0 add r2, r7, #0 mov r3, #0x98 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r7, #0 bl FUN_02021A20 ldr r0, [sp, #0x18] bl FUN_0200A8B8 ldr r2, [sp, #0x10] add r0, r5, #0 add r1, r6, #0 add r3, r4, #0 bl MOD16_021E5104 ldr r2, [sp, #0x10] add r0, r5, #0 add r1, r6, #0 add r3, r4, #0 bl MOD16_021E5158 ldr r2, [sp, #0x10] ldr r3, [sp, #0x14] add r0, r5, #0 add r1, r6, #0 str r4, [sp] bl MOD16_021E51AC add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021E5100: .word 0x00000266 thumb_func_end MOD16_021E5064 thumb_func_start MOD16_021E5104 MOD16_021E5104: ; 0x021E5104 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r0, #0 mov r0, #0x40 add r6, r1, #0 str r2, [sp, #0x10] add r5, r3, #0 bl FUN_020219F4 mov r2, #0x9b add r4, r0, #0 mov r0, #0 mov r1, #0x1a lsl r2, r2, #2 add r3, r6, #0 bl FUN_0200A86C ldr r1, [sp, #0x10] add r2, r4, #0 add r6, r0, #0 bl FUN_0200A8E0 mov r0, #0x58 str r0, [sp] mov r1, #0 str r1, [sp, #4] str r5, [sp, #8] add r0, r7, #0 add r2, r4, #0 mov r3, #0xb8 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r6, #0 bl FUN_0200A8B8 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E5104 thumb_func_start MOD16_021E5158 MOD16_021E5158: ; 0x021E5158 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r0, #0 mov r0, #0x40 add r6, r1, #0 str r2, [sp, #0x10] add r5, r3, #0 bl FUN_020219F4 add r4, r0, #0 ldr r2, _021E51A8 ; =0x0000026B mov r0, #0 mov r1, #0x1a add r3, r6, #0 bl FUN_0200A86C ldr r1, [sp, #0x10] add r2, r4, #0 add r6, r0, #0 bl FUN_0200A8E0 mov r0, #0x68 str r0, [sp] mov r1, #0 str r1, [sp, #4] str r5, [sp, #8] add r0, r7, #0 add r2, r4, #0 mov r3, #0xb8 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r6, #0 bl FUN_0200A8B8 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021E51A8: .word 0x0000026B thumb_func_end MOD16_021E5158 thumb_func_start MOD16_021E51AC MOD16_021E51AC: ; 0x021E51AC push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 add r5, r0, #0 add r0, r2, #0 add r2, r3, #0 mov r1, #2 add r3, r4, #0 bl MOD16_021DBC48 add r4, r0, #0 mov r0, #0 add r1, r4, #0 add r2, r0, #0 bl FUN_02002F08 cmp r0, #0xf0 bhs _021E51D8 lsr r1, r0, #1 mov r0, #0x80 sub r3, r0, r1 b _021E51DA _021E51D8: mov r3, #8 _021E51DA: mov r0, #0x88 str r0, [sp] mov r1, #0 ldr r0, [sp, #0x20] str r1, [sp, #4] str r0, [sp, #8] add r0, r5, #0 add r2, r4, #0 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r4, #0 bl MOD16_021DBBAC add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E51AC thumb_func_start MOD16_021E51FC MOD16_021E51FC: ; 0x021E51FC push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r2, #4] add r4, r1, #0 add r6, r3, #0 bl MOD16_021D9DE8 add r3, r0, #0 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E5238 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E533C pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E51FC thumb_func_start MOD16_021E5224 MOD16_021E5224: ; 0x021E5224 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E53B4 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E52F4 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E5224 thumb_func_start MOD16_021E5238 MOD16_021E5238: ; 0x021E5238 push {r4, r5, r6, r7, lr} sub sp, #0x24 str r3, [sp, #0x10] add r5, r0, #0 add r6, r2, #0 ldr r4, [r1] bl MOD16_021D8520 add r7, r0, #0 ldr r0, [sp, #0x10] bl MOD16_021D8524 str r0, [sp, #0x14] bl MOD16_021D8528 str r0, [sp, #0x18] bl MOD16_021D852C str r0, [sp, #0x1c] bl MOD16_021D8530 str r0, [sp, #0x20] mov r0, #0xfa lsl r0, r0, #4 str r0, [sp] mov r3, #1 str r3, [sp, #4] mov r0, #5 str r6, [sp, #8] lsl r0, r0, #6 ldr r0, [r4, r0] ldr r2, [sp, #0x14] add r1, r7, #0 bl FUN_02008F34 str r0, [r5, #0x24] bl FUN_02009B04 ldr r0, [r5, #0x24] bl FUN_02009474 mov r0, #0xfa lsl r0, r0, #4 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x51 str r6, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r4, r0] ldr r2, [sp, #0x18] add r1, r7, #0 mov r3, #0 bl FUN_02008FEC str r0, [r5, #0x28] bl FUN_02009D68 ldr r0, [r5, #0x28] bl FUN_02009474 mov r0, #0xfa lsl r0, r0, #4 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r6, [sp, #8] lsl r0, r0, #2 ldr r0, [r4, r0] ldr r2, [sp, #0x1c] add r1, r7, #0 mov r3, #1 bl FUN_020090AC str r0, [r5, #0x2c] mov r0, #0xfa lsl r0, r0, #4 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r6, [sp, #8] lsl r0, r0, #2 ldr r0, [r4, r0] ldr r2, [sp, #0x20] add r1, r7, #0 mov r3, #1 bl FUN_020090AC str r0, [r5, #0x30] add sp, #0x24 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E5238 thumb_func_start MOD16_021E52F4 MOD16_021E52F4: ; 0x021E52F4 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x24] ldr r4, [r1] cmp r0, #0 beq _021E533A bl FUN_02009C0C ldr r0, [r5, #0x28] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x24] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x28] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x2c] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x30] bl FUN_02009490 _021E533A: pop {r3, r4, r5, pc} thumb_func_end MOD16_021E52F4 thumb_func_start MOD16_021E533C MOD16_021E533C: ; 0x021E533C push {r4, r5, r6, lr} sub sp, #0x70 ldr r4, [r1] mov r1, #0xfa add r5, r0, #0 lsl r1, r1, #4 mov r0, #0 add r6, r2, #0 str r1, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #5 str r2, [sp, #0x10] lsl r0, r0, #6 ldr r3, [r4, r0] str r3, [sp, #0x14] add r3, r0, #4 ldr r3, [r4, r3] str r3, [sp, #0x18] add r3, r0, #0 add r3, #8 ldr r3, [r4, r3] add r0, #0xc str r3, [sp, #0x1c] ldr r0, [r4, r0] add r3, r1, #0 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r0, sp, #0x4c add r2, r1, #0 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x20 str r0, [sp, #0x40] mov r0, #1 str r0, [sp, #0x44] mov r0, #0x16 lsl r0, r0, #0xe str r0, [sp, #0x38] mov r0, #0x1e lsl r0, r0, #0xe str r0, [sp, #0x34] add r0, sp, #0x2c str r6, [sp, #0x48] bl FUN_0201FF84 str r0, [r5] add sp, #0x70 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E533C thumb_func_start MOD16_021E53B4 MOD16_021E53B4: ; 0x021E53B4 push {r3, lr} ldr r0, [r0] cmp r0, #0 beq _021E53C0 bl FUN_0201FFC8 _021E53C0: pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E53B4 thumb_func_start MOD16_021E53C4 MOD16_021E53C4: ; 0x021E53C4 push {r4, r5, r6, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] add r6, r2, #0 bl MOD16_021D9D88 add r3, r0, #0 mov r0, #0x2b lsl r0, r0, #0xe str r0, [sp] mov r0, #2 lsl r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r4, #4] add r2, r6, #0 bl MOD16_021D7E9C ldr r0, [r5] mov r1, #0 bl MOD16_021D891C add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E53C4 thumb_func_start MOD16_021E53F8 MOD16_021E53F8: ; 0x021E53F8 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #0 bl MOD16_021D8950 ldr r0, [r4] mov r1, #0 bl MOD16_021D88F0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E53F8 thumb_func_start MOD16_021E5410 MOD16_021E5410: ; 0x021E5410 push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 bl MOD16_021D8700 add r6, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r2, r0, #0 mov r0, #0x30 str r0, [sp] mov r0, #0x48 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r4, #4] mov r3, #2 bl MOD16_021D7FB4 add r0, r6, #0 mov r1, #6 mov r2, #0 bl FUN_02007558 add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E5410 thumb_func_start MOD16_021E5448 MOD16_021E5448: ; 0x021E5448 push {r4, lr} ldr r0, [r0] bl MOD16_021D8700 add r4, r0, #0 mov r1, #6 mov r2, #1 bl FUN_02007558 add r0, r4, #0 bl FUN_02007EEC pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E5448 thumb_func_start MOD16_021E5464 MOD16_021E5464: ; 0x021E5464 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E5500 ; =0x00000FFA mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x5a bl FUN_020091E0 str r0, [r5, #0x14] bl FUN_02009B04 ldr r0, [r5, #0x14] bl FUN_02009474 ldr r0, _021E5504 ; =0x00000FAD add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #5 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0xd mov r3, #0 bl FUN_02009298 str r0, [r5, #0x18] bl FUN_02009D68 ldr r0, [r5, #0x18] bl FUN_02009474 ldr r0, _021E5508 ; =0x00000FF8 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x58 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x1c] ldr r0, _021E550C ; =0x00000FF9 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x59 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x20] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E5500: .word 0x00000FFA _021E5504: .word 0x00000FAD _021E5508: .word 0x00000FF8 _021E550C: .word 0x00000FF9 thumb_func_end MOD16_021E5464 thumb_func_start MOD16_021E5510 MOD16_021E5510: ; 0x021E5510 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x14] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0x18] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x14] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x18] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x1c] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x20] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E5510 thumb_func_start MOD16_021E5554 MOD16_021E5554: ; 0x021E5554 push {r3, r4, r5, r6, r7, lr} sub sp, #0x78 add r6, r2, #0 add r5, r0, #0 ldr r0, [r6, #4] str r3, [sp, #0x2c] ldr r4, [r1] bl MOD16_021D9DE8 add r7, r0, #0 ldr r0, [r6, #4] add r1, r7, #0 bl MOD16_021D9964 str r0, [sp, #0x30] ldr r1, [sp, #0x30] add r0, r7, #0 mov r2, #6 bl FUN_02068654 add r6, r0, #0 ldr r1, [sp, #0x30] add r0, r7, #0 mov r2, #7 bl FUN_02068654 add r7, r0, #0 add r0, r6, #0 bl MOD16_021E563C add r6, r0, #0 add r0, r7, #0 bl MOD16_021E563C ldr r3, _021E5638 ; =0x00000FF9 add r7, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #5 str r2, [sp, #0x10] lsl r0, r0, #6 ldr r1, [r4, r0] str r1, [sp, #0x14] add r1, r0, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r0, #0 add r1, #8 ldr r1, [r4, r1] add r0, #0xc str r1, [sp, #0x1c] ldr r0, [r4, r0] add r1, r3, #1 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r2, r3, #0 add r0, sp, #0x54 sub r2, #0x4c sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x34] add r0, sp, #0x54 str r0, [sp, #0x38] mov r0, #0x20 str r0, [sp, #0x48] mov r0, #1 str r0, [sp, #0x4c] ldr r0, [sp, #0x2c] str r0, [sp, #0x50] mov r0, #0xaa lsl r0, r0, #0xc str r0, [sp, #0x3c] mov r0, #0x12 lsl r0, r0, #0xe str r0, [sp, #0x40] add r0, sp, #0x34 bl FUN_0201FF84 add r1, r6, #0 str r0, [r5, #4] bl FUN_02020130 cmp r6, r7 beq _021E562E mov r0, #0x37 lsl r0, r0, #0xe str r0, [sp, #0x3c] mov r0, #0x12 lsl r0, r0, #0xe str r0, [sp, #0x40] add r0, sp, #0x34 bl FUN_0201FF84 add r1, r7, #0 str r0, [r5, #8] bl FUN_02020130 add sp, #0x78 pop {r3, r4, r5, r6, r7, pc} _021E562E: mov r0, #0 str r0, [r5, #8] add sp, #0x78 pop {r3, r4, r5, r6, r7, pc} nop _021E5638: .word 0x00000FF9 thumb_func_end MOD16_021E5554 thumb_func_start MOD16_021E563C MOD16_021E563C: ; 0x021E563C cmp r0, #0x11 bhi _021E56B2 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E564C: ; jump table .short _021E5670 - _021E564C - 2 ; case 0 .short _021E5674 - _021E564C - 2 ; case 1 .short _021E5678 - _021E564C - 2 ; case 2 .short _021E567C - _021E564C - 2 ; case 3 .short _021E5680 - _021E564C - 2 ; case 4 .short _021E5684 - _021E564C - 2 ; case 5 .short _021E5688 - _021E564C - 2 ; case 6 .short _021E568C - _021E564C - 2 ; case 7 .short _021E5690 - _021E564C - 2 ; case 8 .short _021E568C - _021E564C - 2 ; case 9 .short _021E5694 - _021E564C - 2 ; case 10 .short _021E5698 - _021E564C - 2 ; case 11 .short _021E569C - _021E564C - 2 ; case 12 .short _021E56A0 - _021E564C - 2 ; case 13 .short _021E56A4 - _021E564C - 2 ; case 14 .short _021E56A8 - _021E564C - 2 ; case 15 .short _021E56AC - _021E564C - 2 ; case 16 .short _021E56B0 - _021E564C - 2 ; case 17 _021E5670: mov r0, #0 bx lr _021E5674: mov r0, #6 bx lr _021E5678: mov r0, #0xe bx lr _021E567C: mov r0, #0xa bx lr _021E5680: mov r0, #8 bx lr _021E5684: mov r0, #5 bx lr _021E5688: mov r0, #0xb bx lr _021E568C: mov r0, #7 bx lr _021E5690: mov r0, #9 bx lr _021E5694: mov r0, #1 bx lr _021E5698: mov r0, #3 bx lr _021E569C: mov r0, #2 bx lr _021E56A0: mov r0, #4 bx lr _021E56A4: mov r0, #0xf bx lr _021E56A8: mov r0, #0xd bx lr _021E56AC: mov r0, #0x10 bx lr _021E56B0: mov r0, #0xc _021E56B2: bx lr thumb_func_end MOD16_021E563C thumb_func_start MOD16_021E56B4 MOD16_021E56B4: ; 0x021E56B4 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #4] cmp r0, #0 beq _021E56C2 bl FUN_0201FFC8 _021E56C2: ldr r0, [r4, #8] cmp r0, #0 beq _021E56CC bl FUN_0201FFC8 _021E56CC: pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E56B4 thumb_func_start MOD16_021E56D0 MOD16_021E56D0: ; 0x021E56D0 push {r3, r4, r5, r6, r7, lr} sub sp, #0xa0 add r6, r0, #0 add r0, r2, #0 add r5, r1, #0 ldr r0, [r0, #4] str r2, [sp, #0x2c] add r7, r3, #0 ldr r4, [r5] bl MOD16_021D9DE8 ldr r3, _021E57C4 ; =0x00000FF9 str r0, [sp, #0x30] mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #5 str r2, [sp, #0x10] lsl r0, r0, #6 ldr r1, [r4, r0] str r1, [sp, #0x14] add r1, r0, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r0, #0 add r1, #8 ldr r1, [r4, r1] add r0, #0xc str r1, [sp, #0x1c] ldr r0, [r4, r0] add r1, r3, #1 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r2, r3, #0 add r0, sp, #0x7c sub r2, #0x4c sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x5c] add r0, sp, #0x7c str r0, [sp, #0x60] mov r0, #0x20 str r0, [sp, #0x70] mov r0, #1 str r0, [sp, #0x74] mov r0, #3 lsl r0, r0, #0x12 str r0, [sp, #0x64] mov r0, #0xd lsl r0, r0, #0xe str r0, [sp, #0x68] add r0, sp, #0x5c str r7, [sp, #0x78] bl FUN_0201FF84 mov r1, #0x11 str r0, [r6, #0xc] bl FUN_02020130 ldr r0, [sp, #0x2c] ldr r0, [r0, #4] bl MOD16_021D9DF8 cmp r0, #2 beq _021E5768 mov r0, #0 str r0, [sp, #0x30] _021E5768: mov r0, #0x15 ldr r1, [r5] lsl r0, r0, #4 ldr r0, [r1, r0] ldr r1, [sp, #0x30] add r2, r7, #0 bl MOD16_021E57C8 add r4, r0, #0 ldr r0, [r5] mov r1, #1 bl MOD16_021D88D4 mov r1, #0x15 ldr r2, [r5] lsl r1, r1, #4 ldr r1, [r2, r1] str r1, [sp, #0x34] mov r1, #0 bl FUN_02009E54 str r0, [sp, #0x3c] ldr r0, [r6, #0xc] str r0, [sp, #0x40] mov r0, #0x4d mvn r0, r0 str r0, [sp, #0x44] add r0, #0x46 str r0, [sp, #0x48] mov r0, #0 str r0, [sp, #0x4c] mov r0, #0x1f str r0, [sp, #0x50] mov r0, #1 str r0, [sp, #0x54] str r7, [sp, #0x58] str r4, [sp, #0x38] add r0, sp, #0x34 bl MOD16_021DB2BC str r0, [r6, #0x10] add r0, r4, #0 bl MOD16_021DB3BC add sp, #0xa0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E57C4: .word 0x00000FF9 thumb_func_end MOD16_021E56D0 thumb_func_start MOD16_021E57C8 MOD16_021E57C8: ; 0x021E57C8 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r6, r2, #0 mov r1, #0x12 mov r2, #2 add r7, r0, #0 bl MOD16_021DB388 add r4, r0, #0 add r0, r5, #0 mov r1, #2 add r2, r6, #0 bl MOD16_021DBC08 add r5, r0, #0 mov r0, #2 add r1, r5, #0 mov r2, #0 bl FUN_02002E14 cmp r0, #0x88 bhs _021E57FC mov r1, #0x88 sub r0, r1, r0 lsr r3, r0, #1 b _021E57FE _021E57FC: mov r3, #0 _021E57FE: mov r0, #0 str r0, [sp] add r0, r7, #0 add r1, r4, #0 add r2, r5, #0 bl MOD16_021DB42C add r0, r5, #0 bl MOD16_021DBBAC add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E57C8 thumb_func_start MOD16_021E5818 MOD16_021E5818: ; 0x021E5818 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0xc] bl FUN_0201FFC8 mov r0, #0 str r0, [r4, #0xc] ldr r0, [r4, #0x10] bl MOD16_021DB338 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E5818 thumb_func_start MOD16_021E5830 MOD16_021E5830: ; 0x021E5830 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r1, #0 add r7, r0, #0 ldr r0, [r5] mov r1, #1 add r4, r2, #0 add r6, r3, #0 bl MOD16_021D88F0 add r0, r7, #0 bl MOD16_021E5B08 ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 beq _021E58A2 cmp r6, #0 beq _021E587E mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2b str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 b _021E58A2 _021E587E: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2b str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E58A2: add r0, r5, #0 bl MOD16_021E5B70 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E5830 thumb_func_start MOD16_021E58AC MOD16_021E58AC: ; 0x021E58AC push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 ldr r0, [r2, #0x10] add r5, r1, #0 add r6, r3, #0 bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021E58CC mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 b _021E58D6 _021E58CC: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C _021E58D6: add r4, r0, #0 cmp r4, #1 bne _021E58FE cmp r6, #1 bne _021E58F0 add r0, r7, #0 bl MOD16_021E5B3C ldr r0, [r5] mov r1, #0 bl MOD16_021D88F0 b _021E5904 _021E58F0: add r0, r5, #0 bl MOD16_021E5448 add r0, r5, #0 bl MOD16_021E53F8 b _021E5904 _021E58FE: add r0, r5, #0 bl MOD16_021E5B70 _021E5904: add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E58AC thumb_func_start MOD16_021E5908 MOD16_021E5908: ; 0x021E5908 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r0, #0 add r5, r1, #0 add r4, r2, #0 add r6, r3, #0 bl MOD16_021E5B08 cmp r6, #0 bne _021E592E ldr r1, [r4, #8] ldr r2, [r4, #0xc] add r0, r7, #0 mov r3, #4 bl MOD16_021E5B80 add r0, r7, #0 bl MOD16_021E5BB8 _021E592E: ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 beq _021E5988 cmp r6, #0 beq _021E5964 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #4 add r2, r1, #0 sub r2, #0x14 bl MOD16_021D8988 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021E5964: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #4 add r3, r1, #0 sub r3, #0x14 bl MOD16_021D8988 _021E5988: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E5908 thumb_func_start MOD16_021E598C MOD16_021E598C: ; 0x021E598C push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bne _021E59AC bl MOD16_021E5B9C str r0, [sp] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E5BD4 str r0, [sp, #4] b _021E59B2 _021E59AC: mov r0, #1 str r0, [sp] str r0, [sp, #4] _021E59B2: ldr r0, [r6, #0x10] bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r4] beq _021E59CC mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 str r0, [sp, #8] b _021E59D8 _021E59CC: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C str r0, [sp, #8] _021E59D8: mov r1, #0 add r2, sp, #0 _021E59DC: ldr r0, [r2] cmp r0, #0 beq _021E59EA add r1, r1, #1 add r2, r2, #4 cmp r1, #3 blt _021E59DC _021E59EA: cmp r1, #3 bne _021E59FE cmp r7, #1 bne _021E59F8 add r0, r5, #0 bl MOD16_021E5B3C _021E59F8: add sp, #0xc mov r0, #1 pop {r4, r5, r6, r7, pc} _021E59FE: mov r0, #0 add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E598C thumb_func_start MOD16_021E5A04 MOD16_021E5A04: ; 0x021E5A04 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r1, #0 add r7, r0, #0 add r4, r2, #0 add r6, r3, #0 bl MOD16_021E5B08 ldr r0, [r5] mov r1, #1 bl MOD16_021D88F0 cmp r6, #0 bne _021E5A2C ldr r1, [r4, #8] ldr r2, [r4, #0xc] add r0, r7, #0 mov r3, #1 bl MOD16_021E5B80 _021E5A2C: ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 beq _021E5A86 cmp r6, #0 beq _021E5A62 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021E5A62: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E5A86: add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E5A04 thumb_func_start MOD16_021E5A8C MOD16_021E5A8C: ; 0x021E5A8C push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r7, r0, #0 add r5, r1, #0 add r4, r2, #0 add r6, r3, #0 bne _021E5AA2 bl MOD16_021E5B9C str r0, [sp] b _021E5AA6 _021E5AA2: mov r0, #1 str r0, [sp] _021E5AA6: ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021E5AC0 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 str r0, [sp, #4] b _021E5ACC _021E5AC0: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C str r0, [sp, #4] _021E5ACC: mov r1, #0 add r2, sp, #0 _021E5AD0: ldr r0, [r2] cmp r0, #0 beq _021E5ADE add r1, r1, #1 add r2, r2, #4 cmp r1, #2 blt _021E5AD0 _021E5ADE: cmp r1, #2 bne _021E5B02 cmp r6, #1 bne _021E5AF6 add r0, r7, #0 bl MOD16_021E5B3C ldr r0, [r5] mov r1, #0 bl MOD16_021D88F0 b _021E5AFC _021E5AF6: add r0, r5, #0 bl MOD16_021E53F8 _021E5AFC: add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E5B02: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E5A8C thumb_func_start MOD16_021E5B08 MOD16_021E5B08: ; 0x021E5B08 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 mov r4, #0 add r5, r7, #0 mov r6, #1 _021E5B12: ldr r0, [r5] cmp r0, #0 beq _021E5B1E add r1, r6, #0 bl FUN_02020398 _021E5B1E: add r4, r4, #1 add r5, r5, #4 cmp r4, #3 blt _021E5B12 ldr r0, [r7, #0xc] mov r1, #1 bl FUN_02020398 ldr r0, [r7, #0x10] mov r1, #1 ldr r0, [r0] bl FUN_02011AF0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E5B08 thumb_func_start MOD16_021E5B3C MOD16_021E5B3C: ; 0x021E5B3C push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 mov r4, #0 add r5, r7, #0 add r6, r4, #0 _021E5B46: ldr r0, [r5] cmp r0, #0 beq _021E5B52 add r1, r6, #0 bl FUN_02020398 _021E5B52: add r4, r4, #1 add r5, r5, #4 cmp r4, #3 blt _021E5B46 ldr r0, [r7, #0xc] mov r1, #0 bl FUN_02020398 ldr r0, [r7, #0x10] mov r1, #0 ldr r0, [r0] bl FUN_02011AF0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E5B3C thumb_func_start MOD16_021E5B70 MOD16_021E5B70: ; 0x021E5B70 mov r1, #0x5b ldr r0, [r0] lsl r1, r1, #2 ldr r3, _021E5B7C ; =MOD16_021D8A8C add r1, r0, r1 bx r3 .align 2, 0 _021E5B7C: .word MOD16_021D8A8C thumb_func_end MOD16_021E5B70 thumb_func_start MOD16_021E5B80 MOD16_021E5B80: ; 0x021E5B80 push {r4, lr} sub sp, #8 add r4, r1, #0 str r2, [sp] str r3, [sp, #4] add r0, #0x34 mov r1, #0x30 add r2, r4, #0 mov r3, #0x48 bl MOD16_021D8BD8 add sp, #8 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E5B80 thumb_func_start MOD16_021E5B9C MOD16_021E5B9C: ; 0x021E5B9C push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r0, #0x34 bl MOD16_021D8BF4 add r6, r0, #0 ldr r0, [r4] ldr r1, [r5, #0x34] ldr r2, [r5, #0x38] bl MOD16_021D86F4 add r0, r6, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E5B9C thumb_func_start MOD16_021E5BB8 MOD16_021E5BB8: ; 0x021E5BB8 push {r3, lr} sub sp, #8 mov r1, #0x52 str r1, [sp] mov r1, #4 str r1, [sp, #4] add r0, #0x54 mov r1, #0xac mov r2, #0xaa mov r3, #0x20 bl MOD16_021D8BD8 add sp, #8 pop {r3, pc} thumb_func_end MOD16_021E5BB8 thumb_func_start MOD16_021E5BD4 MOD16_021E5BD4: ; 0x021E5BD4 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r0, #0x54 bl MOD16_021D8BF4 add r6, r0, #0 ldr r0, [r4] ldr r1, [r5, #0x54] ldr r2, [r5, #0x58] bl MOD16_021D7F6C add r0, r6, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E5BD4 thumb_func_start MOD16_021E5BF0 MOD16_021E5BF0: ; 0x021E5BF0 push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 add r0, r7, #0 bl MOD16_021E5C88 add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021E5CC8 str r4, [r5] str r0, [r5, #4] mov r0, #0 str r0, [r5, #0x20] bl MOD16_021E5D28 str r0, [r5, #0x24] ldr r0, _021E5C30 ; =MOD16_021E5D44 str r0, [r5, #8] ldr r0, _021E5C34 ; =MOD16_021E5D6C str r0, [r5, #0xc] ldr r0, _021E5C38 ; =MOD16_021E5D7C str r0, [r5, #0x10] ldr r0, _021E5C3C ; =MOD16_021E5D80 str r0, [r5, #0x14] ldr r0, _021E5C40 ; =MOD16_021E5E14 str r0, [r5, #0x18] ldr r0, _021E5C44 ; =MOD16_021E5ED4 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E5C30: .word MOD16_021E5D44 _021E5C34: .word MOD16_021E5D6C _021E5C38: .word MOD16_021E5D7C _021E5C3C: .word MOD16_021E5D80 _021E5C40: .word MOD16_021E5E14 _021E5C44: .word MOD16_021E5ED4 thumb_func_end MOD16_021E5BF0 thumb_func_start MOD16_021E5C48 MOD16_021E5C48: ; 0x021E5C48 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E5D00 ldr r0, [r4, #4] bl MOD16_021E5D14 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E5C48 thumb_func_start MOD16_021E5C5C MOD16_021E5C5C: ; 0x021E5C5C push {r3, r4, r5, lr} ldr r4, [r0] ldr r0, [r0, #4] add r2, r1, #0 ldr r0, [r0, #4] cmp r0, #1 bne _021E5C6E mov r0, #0 pop {r3, r4, r5, pc} _021E5C6E: ldr r5, [r4, #0x14] ldr r0, [r4, #0xc] ldr r3, [r4, #0x10] add r1, r5, #0 bl MOD16_021E5D2C str r0, [r4, #0x14] cmp r5, r0 beq _021E5C84 mov r0, #1 pop {r3, r4, r5, pc} _021E5C84: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E5C5C thumb_func_start MOD16_021E5C88 MOD16_021E5C88: ; 0x021E5C88 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x18 bl FUN_02016998 add r4, r0, #0 bne _021E5C9A bl ErrorHandling _021E5C9A: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021E5CA0: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021E5CA0 add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #8] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E5C88 thumb_func_start MOD16_021E5CC8 MOD16_021E5CC8: ; 0x021E5CC8 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0xc bl FUN_02016998 add r4, r0, #0 bne _021E5CDA bl ErrorHandling _021E5CDA: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E5CC8 thumb_func_start MOD16_021E5D00 MOD16_021E5D00: ; 0x021E5D00 push {r4, lr} add r4, r0, #0 bne _021E5D0A bl ErrorHandling _021E5D0A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E5D00 thumb_func_start MOD16_021E5D14 MOD16_021E5D14: ; 0x021E5D14 push {r4, lr} add r4, r0, #0 bne _021E5D1E bl ErrorHandling _021E5D1E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E5D14 thumb_func_start MOD16_021E5D28 MOD16_021E5D28: ; 0x021E5D28 mov r0, #0 bx lr thumb_func_end MOD16_021E5D28 thumb_func_start MOD16_021E5D2C MOD16_021E5D2C: ; 0x021E5D2C cmp r2, #0 ble _021E5D3A add r2, r1, r2 cmp r2, r3 blt _021E5D40 mov r2, #0 b _021E5D40 _021E5D3A: add r0, r1, r2 bpl _021E5D40 sub r2, r3, #1 _021E5D40: add r0, r2, #0 bx lr thumb_func_end MOD16_021E5D2C thumb_func_start MOD16_021E5D44 MOD16_021E5D44: ; 0x021E5D44 push {r3, r4, r5, lr} add r4, r1, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r5, r0, #0 add r1, r4, #0 bl MOD16_021E6648 str r0, [r4, #0xc] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E6690 str r0, [r4, #0x10] mov r0, #0 str r0, [r4, #0x14] mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E5D44 thumb_func_start MOD16_021E5D6C MOD16_021E5D6C: ; 0x021E5D6C ldr r0, [r0, #0xc] cmp r0, #1 bne _021E5D76 mov r0, #1 bx lr _021E5D76: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021E5D6C thumb_func_start MOD16_021E5D7C MOD16_021E5D7C: ; 0x021E5D7C mov r0, #1 bx lr thumb_func_end MOD16_021E5D7C thumb_func_start MOD16_021E5D80 MOD16_021E5D80: ; 0x021E5D80 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #3 bhi _021E5E0A add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E5D9C: ; jump table .short _021E5DA4 - _021E5D9C - 2 ; case 0 .short _021E5DCC - _021E5D9C - 2 ; case 1 .short _021E5DEA - _021E5D9C - 2 ; case 2 .short _021E5E00 - _021E5D9C - 2 ; case 3 _021E5DA4: ldr r0, [r4, #4] mov r1, #0xd0 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0xd0 bl Call_FillMemWithValue ldr r0, [r4, #8] ldr r1, [r7, #0xc] add r0, #0xc8 str r1, [r0] mov r0, #0 str r0, [r5, #4] str r0, [r5, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5E0A _021E5DCC: ldr r3, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E5F40 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E63B4 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5E0A _021E5DEA: add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021E6424 cmp r0, #0 beq _021E5E0A ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5E0A _021E5E00: ldr r0, _021E5E10 ; =0x04000050 mov r1, #0 strh r1, [r0] mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E5E0A: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} nop _021E5E10: .word 0x04000050 thumb_func_end MOD16_021E5D80 thumb_func_start MOD16_021E5E14 MOD16_021E5E14: ; 0x021E5E14 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #0 beq _021E5E30 cmp r0, #1 beq _021E5E7C cmp r0, #2 beq _021E5E94 b _021E5EC0 _021E5E30: add r0, r6, #0 add r0, #0xcc ldr r1, [r7, #0x14] ldr r0, [r0] cmp r1, r0 beq _021E5EC4 add r0, r6, #0 add r0, #0xcc str r1, [r0] add r0, r6, #0 add r0, #0xb8 ldr r0, [r0] add r0, r0, #1 lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r6, #0 add r1, r2, r1 add r0, #0xb8 str r1, [r0] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E6510 add r0, r6, #0 bl MOD16_021E6E24 mov r0, #1 str r0, [r5, #4] ldr r0, _021E5ED0 ; =0x0000068B bl FUN_020054C8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5EC4 _021E5E7C: add r0, r6, #0 add r1, r5, #0 bl MOD16_021E6534 cmp r0, #1 bne _021E5EC4 mov r0, #1 str r0, [r5, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5EC4 _021E5E94: ldr r0, [r5, #8] cmp r0, #1 bne _021E5EC4 ldr r0, [r7, #0xc] add r1, r5, #0 str r0, [sp] ldr r0, [r7, #0x14] str r0, [sp, #4] ldr r3, [r4, #4] add r0, r6, #0 bl MOD16_021E6BA4 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 bl MOD16_021E6070 mov r0, #0 str r0, [r5, #8] str r0, [r5, #4] str r0, [r4] b _021E5EC4 _021E5EC0: bl ErrorHandling _021E5EC4: add r0, r6, #0 bl MOD16_021E6E44 mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E5ED0: .word 0x0000068B thumb_func_end MOD16_021E5E14 thumb_func_start MOD16_021E5ED4 MOD16_021E5ED4: ; 0x021E5ED4 push {r4, lr} add r4, r1, #0 ldr r1, [r4] add r3, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021E5F3A add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E5EEE: ; jump table .short _021E5EF8 - _021E5EEE - 2 ; case 0 .short _021E5F08 - _021E5EEE - 2 ; case 1 .short _021E5F1C - _021E5EEE - 2 ; case 2 .short _021E5F2A - _021E5EEE - 2 ; case 3 .short _021E5F36 - _021E5EEE - 2 ; case 4 _021E5EF8: add r1, r3, #0 mov r3, #0 bl MOD16_021E63B4 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5F3A _021E5F08: add r1, r3, #0 mov r3, #0 bl MOD16_021E6424 cmp r0, #0 beq _021E5F3A ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5F3A _021E5F1C: add r1, r3, #0 bl MOD16_021E5F88 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5F3A _021E5F2A: bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E5F3A _021E5F36: mov r0, #1 pop {r4, pc} _021E5F3A: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E5ED4 thumb_func_start MOD16_021E5F40 MOD16_021E5F40: ; 0x021E5F40 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r7, r0, #0 add r5, r1, #0 add r6, r3, #0 add r4, r2, #0 bl MOD16_021E600C add r0, r7, #0 add r1, r5, #0 add r2, r6, #0 bl MOD16_021E6198 add r0, r5, #0 add r1, r6, #0 bl MOD16_021E5FA4 add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021E6288 ldr r0, [r4, #0xc] add r1, r5, #0 str r0, [sp] ldr r0, [r4, #0x14] add r2, r4, #0 str r0, [sp, #4] add r0, r7, #0 add r3, r6, #0 bl MOD16_021E6B30 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E5F40 thumb_func_start MOD16_021E5F88 MOD16_021E5F88: ; 0x021E5F88 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E6E0C add r0, r5, #0 bl MOD16_021E6394 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E6244 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E5F88 thumb_func_start MOD16_021E5FA4 MOD16_021E5FA4: ; 0x021E5FA4 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] add r5, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #3 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x32 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E5FA4 thumb_func_start MOD16_021E600C MOD16_021E600C: ; 0x021E600C push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r2, #0 add r6, r0, #0 ldr r0, [r4, #4] add r5, r1, #0 bl MOD16_021D9DE8 add r7, r0, #0 ldr r0, [r4, #0xc] add r1, r5, #0 str r0, [sp] ldr r0, [r4, #0x14] add r2, r4, #0 str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] add r0, r6, #0 add r3, r7, #0 bl MOD16_021E60A8 ldr r0, [r4, #0xc] ldr r1, [r4, #0x14] ldr r3, [r4, #0x10] mov r2, #1 bl MOD16_021E5D2C ldr r1, [r4, #0xc] add r2, r4, #0 str r1, [sp] str r0, [sp, #4] mov r0, #2 str r0, [sp, #8] add r0, r6, #0 add r1, r5, #0 add r3, r7, #0 bl MOD16_021E60A8 mov r4, #0 mov r6, #1 _021E605C: ldr r0, [r5] add r1, r6, #0 add r2, r4, #0 bl MOD16_021D8810 add r4, r4, #1 cmp r4, #4 blt _021E605C add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E600C thumb_func_start MOD16_021E6070 MOD16_021E6070: ; 0x021E6070 push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r2, #0 add r5, r0, #0 ldr r0, [r4, #4] add r6, r1, #0 bl MOD16_021D9DE8 add r7, r0, #0 ldr r0, [r4, #0xc] ldr r1, [r4, #0x14] ldr r3, [r4, #0x10] mov r2, #1 bl MOD16_021E5D2C ldr r1, [r4, #0xc] add r2, r4, #0 str r1, [sp] str r0, [sp, #4] mov r0, #2 str r0, [sp, #8] add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD16_021E60A8 add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E6070 thumb_func_start MOD16_021E60A8 MOD16_021E60A8: ; 0x021E60A8 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r5, [sp, #0x30] add r6, r0, #0 add r7, r1, #0 str r2, [sp, #8] str r3, [sp, #0xc] ldr r4, [sp, #0x2c] cmp r5, #2 ble _021E60C0 bl ErrorHandling _021E60C0: ldr r0, [sp, #0x28] cmp r0, #9 bhi _021E6172 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E60D2: ; jump table .short _021E60E6 - _021E60D2 - 2 ; case 0 .short _021E60E6 - _021E60D2 - 2 ; case 1 .short _021E60E6 - _021E60D2 - 2 ; case 2 .short _021E60E6 - _021E60D2 - 2 ; case 3 .short _021E6122 - _021E60D2 - 2 ; case 4 .short _021E6136 - _021E60D2 - 2 ; case 5 .short _021E60FA - _021E60D2 - 2 ; case 6 .short _021E610E - _021E60D2 - 2 ; case 7 .short _021E614A - _021E60D2 - 2 ; case 8 .short _021E615E - _021E60D2 - 2 ; case 9 _021E60E6: ldr r2, [sp, #8] str r4, [sp] ldr r3, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 str r5, [sp, #4] bl MOD16_021E6758 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E60FA: ldr r2, [sp, #8] str r4, [sp] ldr r3, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 str r5, [sp, #4] bl MOD16_021E67F0 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E610E: ldr r2, [sp, #8] str r4, [sp] ldr r3, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 str r5, [sp, #4] bl MOD16_021E687C add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E6122: ldr r2, [sp, #8] str r4, [sp] ldr r3, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 str r5, [sp, #4] bl MOD16_021E6908 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E6136: ldr r2, [sp, #8] str r4, [sp] ldr r3, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 str r5, [sp, #4] bl MOD16_021E6994 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E614A: ldr r2, [sp, #8] str r4, [sp] ldr r3, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 str r5, [sp, #4] bl MOD16_021E6A20 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E615E: ldr r2, [sp, #8] str r4, [sp] ldr r3, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 str r5, [sp, #4] bl MOD16_021E6AAC add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021E6172: bl ErrorHandling add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E60A8 thumb_func_start MOD16_021E617C MOD16_021E617C: ; 0x021E617C push {r4, r5, r6, lr} mov r4, #0 add r5, r0, #0 add r6, r4, #0 _021E6184: ldr r0, [r5] add r1, r6, #0 add r2, r4, #0 bl MOD16_021D8810 add r4, r4, #1 cmp r4, #4 blt _021E6184 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E617C thumb_func_start MOD16_021E6198 MOD16_021E6198: ; 0x021E6198 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E6234 ; =0x0000372A mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x7a bl FUN_020091E0 str r0, [r5, #0x10] bl FUN_02009B04 ldr r0, [r5, #0x10] bl FUN_02009474 ldr r0, _021E6238 ; =0x000036C6 add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x16 mov r3, #0 bl FUN_02009298 str r0, [r5, #0x14] bl FUN_02009D68 ldr r0, [r5, #0x14] bl FUN_02009474 ldr r0, _021E623C ; =0x0000372B add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x7b mov r3, #1 bl FUN_02009358 str r0, [r5, #0x18] ldr r0, _021E6240 ; =0x00003729 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x79 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x1c] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021E6234: .word 0x0000372A _021E6238: .word 0x000036C6 _021E623C: .word 0x0000372B _021E6240: .word 0x00003729 thumb_func_end MOD16_021E6198 thumb_func_start MOD16_021E6244 MOD16_021E6244: ; 0x021E6244 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x10] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0x14] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x10] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x14] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x18] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x1c] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E6244 thumb_func_start MOD16_021E6288 MOD16_021E6288: ; 0x021E6288 push {r4, r5, r6, r7, lr} sub sp, #0x7c add r5, r3, #0 ldr r4, [r1] ldr r3, _021E6390 ; =0x00003729 add r6, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #3 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 str r2, [sp, #0x2c] ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x58 sub r2, #0x63 add r3, r3, #2 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r4, #0 str r0, [sp, #0x38] add r0, sp, #0x58 str r0, [sp, #0x3c] mov r0, #0x20 str r0, [sp, #0x4c] mov r0, #1 str r5, [sp, #0x54] str r0, [sp, #0x50] str r4, [sp, #0x40] str r4, [sp, #0x44] add r5, r6, #0 mov r7, #0x1f _021E62F6: add r0, r4, #0 add r1, sp, #0x34 add r2, sp, #0x30 bl MOD16_021E6D54 ldr r0, [sp, #0x34] lsl r0, r0, #0xc str r0, [sp, #0x40] ldr r0, [sp, #0x30] add r0, #8 lsl r0, r0, #0xc str r0, [sp, #0x44] add r0, sp, #0x38 bl FUN_0201FF84 str r0, [r5] lsr r1, r4, #0x1f lsl r0, r4, #0x1f sub r0, r0, r1 ror r0, r7 add r0, r1, r0 ldr r0, [r5] bne _021E632C mov r1, #0 bl FUN_02020130 b _021E6332 _021E632C: mov r1, #2 bl FUN_02020130 _021E6332: add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _021E62F6 mov r0, #0x3e lsl r0, r0, #0xe str r0, [sp, #0x40] mov r0, #6 lsl r0, r0, #0x10 str r0, [sp, #0x44] mov r0, #0 str r0, [sp, #0x4c] add r0, sp, #0x38 bl FUN_0201FF84 add r1, r6, #0 add r1, #0xbc str r0, [r1] add r0, r6, #0 add r0, #0xbc ldr r0, [r0] mov r1, #1 bl FUN_02020130 add r0, r6, #0 add r0, #0xbc ldr r0, [r0] mov r1, #1 bl FUN_020200BC add r0, r6, #0 add r0, #0xbc ldr r0, [r0] mov r1, #0 bl FUN_02020238 ldr r0, [sp, #0x2c] ldr r0, [r0, #0x10] cmp r0, #1 bgt _021E638C add r6, #0xbc ldr r0, [r6] mov r1, #0 bl FUN_020200A0 _021E638C: add sp, #0x7c pop {r4, r5, r6, r7, pc} .align 2, 0 _021E6390: .word 0x00003729 thumb_func_end MOD16_021E6288 thumb_func_start MOD16_021E6394 MOD16_021E6394: ; 0x021E6394 push {r4, r5, r6, lr} add r6, r0, #0 mov r4, #0 add r5, r6, #0 _021E639C: ldr r0, [r5] bl FUN_0201FFC8 add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _021E639C add r6, #0xbc ldr r0, [r6] bl FUN_0201FFC8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E6394 thumb_func_start MOD16_021E63B4 MOD16_021E63B4: ; 0x021E63B4 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021E6474 ldr r0, [r4, #8] bl MOD16_021E8C68 cmp r0, #0 beq _021E641A cmp r6, #0 beq _021E63F6 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2b str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 b _021E641A _021E63F6: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2b str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E641A: add r0, r5, #0 bl MOD16_021E64F4 add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021E63B4 thumb_func_start MOD16_021E6424 MOD16_021E6424: ; 0x021E6424 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 ldr r0, [r2, #8] add r5, r1, #0 add r6, r3, #0 bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021E6444 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 b _021E644E _021E6444: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C _021E644E: add r4, r0, #0 cmp r4, #1 bne _021E6468 cmp r6, #1 bne _021E6460 add r0, r7, #0 bl MOD16_021E64B4 b _021E646E _021E6460: add r0, r5, #0 bl MOD16_021E617C b _021E646E _021E6468: add r0, r5, #0 bl MOD16_021E64F4 _021E646E: add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E6424 thumb_func_start MOD16_021E6474 MOD16_021E6474: ; 0x021E6474 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 mov r6, #0 add r4, r5, #0 mov r7, #1 _021E647E: ldr r0, [r4] add r1, r7, #0 bl FUN_02020398 add r6, r6, #1 add r4, r4, #4 cmp r6, #4 blt _021E647E add r0, r5, #0 add r0, #0xbc ldr r0, [r0] mov r1, #1 bl FUN_02020398 mov r4, #0 mov r6, #1 _021E649E: ldr r0, [r5, #0x20] add r1, r6, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021E649E pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E6474 thumb_func_start MOD16_021E64B4 MOD16_021E64B4: ; 0x021E64B4 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 mov r6, #0 add r4, r5, #0 add r7, r6, #0 _021E64BE: ldr r0, [r4] add r1, r7, #0 bl FUN_02020398 add r6, r6, #1 add r4, r4, #4 cmp r6, #4 blt _021E64BE add r0, r5, #0 add r0, #0xbc ldr r0, [r0] mov r1, #0 bl FUN_02020398 mov r4, #0 add r6, r4, #0 _021E64DE: ldr r0, [r5, #0x20] add r1, r6, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021E64DE pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E64B4 thumb_func_start MOD16_021E64F4 MOD16_021E64F4: ; 0x021E64F4 push {r4, r5, r6, lr} mov r6, #0x5b add r5, r0, #0 mov r4, #0 lsl r6, r6, #2 _021E64FE: ldr r0, [r5] add r2, r4, #0 add r1, r0, r6 bl MOD16_021D8AAC add r4, r4, #1 cmp r4, #4 blt _021E64FE pop {r4, r5, r6, pc} thumb_func_end MOD16_021E64F4 thumb_func_start MOD16_021E6510 MOD16_021E6510: ; 0x021E6510 push {r3, r4, r5, r6, r7, lr} mov r7, #0xff add r5, r0, #0 add r6, r1, #0 mov r4, #0 mvn r7, r7 _021E651C: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #0 str r4, [sp] bl MOD16_021E6570 add r4, r4, #1 cmp r4, #4 blt _021E651C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E6510 thumb_func_start MOD16_021E6534 MOD16_021E6534: ; 0x021E6534 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r5, r0, #0 ldr r0, [r6, #4] cmp r0, #0 bne _021E6544 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E6544: mov r4, #0 _021E6546: add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E65D8 add r4, r4, #1 add r7, r0, #0 cmp r4, #4 blt _021E6546 mov r4, #0 _021E655A: ldr r0, [r5, #0x20] ldr r0, [r0] bl FUN_02011938 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021E655A add r0, r7, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E6534 thumb_func_start MOD16_021E6570 MOD16_021E6570: ; 0x021E6570 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r6, r0, #0 add r0, #0xb8 ldr r0, [r0] add r7, r1, #0 str r2, [sp, #8] str r3, [sp, #0xc] ldr r5, [sp, #0x38] cmp r0, #0 bne _021E658A add r4, r5, #0 b _021E6590 _021E658A: sub r4, r5, #2 bpl _021E6590 add r4, r4, #4 _021E6590: add r0, r5, #0 add r1, sp, #0x14 add r2, sp, #0x10 bl MOD16_021E6D54 ldr r0, [r7] add r1, sp, #0x1c add r2, sp, #0x18 add r3, r4, #0 bl MOD16_021D87E0 add r1, r6, #0 ldr r3, [sp, #0x10] ldr r2, [sp, #0x14] mov r0, #0x10 str r3, [sp] str r0, [sp, #4] ldr r4, [sp, #0xc] add r1, #0x28 lsl r0, r5, #5 add r0, r1, r0 ldr r1, [sp, #8] add r3, r3, r4 add r1, r2, r1 bl MOD16_021D8BD8 ldr r1, [sp, #0x18] ldr r0, [sp, #0x10] sub r1, r1, r0 lsl r0, r5, #2 add r0, r6, r0 add r0, #0xa8 str r1, [r0] add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E6570 thumb_func_start MOD16_021E65D8 MOD16_021E65D8: ; 0x021E65D8 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r6, r0, #0 add r0, #0xb8 ldr r0, [r0] add r4, r2, #0 str r1, [sp] str r2, [sp, #4] cmp r0, #0 beq _021E65F2 sub r4, r4, #2 bpl _021E65F2 add r4, r4, #4 _021E65F2: ldr r0, [sp, #4] add r7, r6, #0 lsl r5, r0, #5 add r7, #0x28 add r0, r7, r5 bl MOD16_021D8BF4 str r0, [sp, #8] add r0, r6, #0 str r0, [sp, #0xc] add r0, #0x2c str r0, [sp, #0xc] ldr r2, [sp, #0xc] ldr r0, [sp] ldr r3, [r2, r5] ldr r2, [sp, #4] ldr r0, [r0] lsl r2, r2, #2 add r2, r6, r2 add r2, #0xa8 ldr r2, [r2] ldr r1, [r7, r5] add r2, r3, r2 add r3, r4, #0 bl MOD16_021D87BC ldr r0, [r7, r5] add r1, sp, #0x10 lsl r0, r0, #0xc str r0, [sp, #0x10] ldr r0, [sp, #0xc] ldr r0, [r0, r5] add r0, #8 lsl r0, r0, #0xc str r0, [sp, #0x14] lsl r0, r4, #2 ldr r0, [r6, r0] bl FUN_02020044 ldr r0, [sp, #8] add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E65D8 thumb_func_start MOD16_021E6648 MOD16_021E6648: ; 0x021E6648 push {r3, lr} mov r3, #0x67 lsl r3, r3, #2 cmp r0, r3 bne _021E6656 mov r0, #6 pop {r3, pc} _021E6656: add r2, r3, #1 cmp r0, r2 bne _021E6660 mov r0, #7 pop {r3, pc} _021E6660: add r2, r3, #0 add r2, #0xa cmp r0, r2 bne _021E666C mov r0, #4 pop {r3, pc} _021E666C: add r2, r3, #0 add r2, #0xb cmp r0, r2 bne _021E6678 mov r0, #5 pop {r3, pc} _021E6678: cmp r0, #0xc9 bne _021E6680 mov r0, #8 pop {r3, pc} _021E6680: sub r3, #0x1a cmp r0, r3 bne _021E668A mov r0, #9 pop {r3, pc} _021E668A: bl MOD16_021E66F4 pop {r3, pc} thumb_func_end MOD16_021E6648 thumb_func_start MOD16_021E6690 MOD16_021E6690: ; 0x021E6690 push {r3, lr} mov r2, #0x67 add r3, r0, #0 lsl r2, r2, #2 cmp r3, r2 bne _021E66A4 ldr r0, [r1, #4] bl MOD16_021D9A18 pop {r3, pc} _021E66A4: add r0, r2, #1 cmp r3, r0 bne _021E66B2 ldr r0, [r1, #4] bl MOD16_021D9A24 pop {r3, pc} _021E66B2: add r0, r2, #0 add r0, #0xa cmp r3, r0 bne _021E66C2 ldr r0, [r1, #4] bl MOD16_021D9A00 pop {r3, pc} _021E66C2: add r0, r2, #0 add r0, #0xb cmp r3, r0 bne _021E66D2 ldr r0, [r1, #4] bl MOD16_021D9A0C pop {r3, pc} _021E66D2: cmp r3, #0xc9 bne _021E66DE ldr r0, [r1, #4] bl MOD16_021D99F4 pop {r3, pc} _021E66DE: sub r2, #0x1a cmp r3, r2 ldr r0, [r1, #4] bne _021E66EC bl MOD16_021D9A48 pop {r3, pc} _021E66EC: add r1, r3, #0 bl MOD16_021D99DC pop {r3, pc} thumb_func_end MOD16_021E6690 thumb_func_start MOD16_021E66F4 MOD16_021E66F4: ; 0x021E66F4 push {r3, r4, r5, lr} add r4, r1, #0 mov r1, #0x12 add r5, r0, #0 bl FUN_02068678 cmp r0, #0 bne _021E6708 mov r0, #1 pop {r3, r4, r5, pc} _021E6708: cmp r0, #0xfe bne _021E6710 mov r0, #2 pop {r3, r4, r5, pc} _021E6710: cmp r0, #0xff bne _021E6718 mov r0, #3 pop {r3, r4, r5, pc} _021E6718: ldr r0, [r4, #4] add r1, r5, #0 bl MOD16_021D99DC cmp r0, #1 bne _021E6754 ldr r0, [r4, #4] add r1, r5, #0 mov r2, #0 bl MOD16_021D98DC add r4, r0, #0 mov r0, #0 mvn r0, r0 cmp r4, r0 bne _021E673C bl ErrorHandling _021E673C: cmp r4, #0 bne _021E6744 mov r0, #1 pop {r3, r4, r5, pc} _021E6744: cmp r4, #0xfe bne _021E674C mov r0, #2 pop {r3, r4, r5, pc} _021E674C: cmp r4, #0xff bne _021E6754 mov r0, #3 pop {r3, r4, r5, pc} _021E6754: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E66F4 thumb_func_start MOD16_021E6758 MOD16_021E6758: ; 0x021E6758 push {r4, r5, r6, r7, lr} sub sp, #0x1c ldr r4, [sp, #0x34] add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r0, r4, #0 add r1, sp, #0x18 add r2, sp, #0x14 str r3, [sp, #0x10] bl MOD16_021E6D54 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #0 bne _021E677E add r0, r4, #0 b _021E6784 _021E677E: sub r0, r4, #2 bpl _021E6784 add r0, r0, #4 _021E6784: ldr r1, [sp, #0x18] ldr r2, [sp, #0x10] str r1, [sp] ldr r1, [sp, #0x14] mov r3, #2 str r1, [sp, #4] ldr r1, [sp, #0x30] str r1, [sp, #8] str r0, [sp, #0xc] ldr r0, [r6] ldr r1, [r7, #4] bl MOD16_021D8070 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E67AA bl ErrorHandling _021E67AA: add r0, r4, #1 add r1, sp, #0x18 add r2, sp, #0x14 bl MOD16_021E6D54 add r5, #0xb8 ldr r1, [r5] add r0, r4, #1 cmp r1, #0 beq _021E67C4 sub r0, r0, #2 bpl _021E67C4 add r0, r0, #4 _021E67C4: ldr r1, [sp, #0x18] ldr r2, [sp, #0x10] str r1, [sp] ldr r1, [sp, #0x14] mov r3, #0 str r1, [sp, #4] ldr r1, [sp, #0x30] str r1, [sp, #8] str r0, [sp, #0xc] ldr r0, [r6] ldr r1, [r7, #4] bl MOD16_021D8070 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E67EA bl ErrorHandling _021E67EA: add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E6758 thumb_func_start MOD16_021E67F0 MOD16_021E67F0: ; 0x021E67F0 push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r4, [sp, #0x2c] add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r0, r4, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #0 bne _021E6814 add r1, r4, #0 b _021E681A _021E6814: sub r1, r4, #2 bpl _021E681A add r1, r1, #4 _021E681A: ldr r0, [sp, #0xc] mov r2, #2 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D81A0 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E683C bl ErrorHandling _021E683C: add r0, r4, #1 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r5, #0xb8 ldr r0, [r5] add r1, r4, #1 cmp r0, #0 beq _021E6856 sub r1, r1, #2 bpl _021E6856 add r1, r1, #4 _021E6856: ldr r0, [sp, #0xc] mov r2, #0 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D81A0 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E6878 bl ErrorHandling _021E6878: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E67F0 thumb_func_start MOD16_021E687C MOD16_021E687C: ; 0x021E687C push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r4, [sp, #0x2c] add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r0, r4, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #0 bne _021E68A0 add r1, r4, #0 b _021E68A6 _021E68A0: sub r1, r4, #2 bpl _021E68A6 add r1, r1, #4 _021E68A6: ldr r0, [sp, #0xc] mov r2, #2 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D81E4 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E68C8 bl ErrorHandling _021E68C8: add r0, r4, #1 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r5, #0xb8 ldr r0, [r5] add r1, r4, #1 cmp r0, #0 beq _021E68E2 sub r1, r1, #2 bpl _021E68E2 add r1, r1, #4 _021E68E2: ldr r0, [sp, #0xc] mov r2, #0 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D81E4 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E6904 bl ErrorHandling _021E6904: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E687C thumb_func_start MOD16_021E6908 MOD16_021E6908: ; 0x021E6908 push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r4, [sp, #0x2c] add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r0, r4, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #0 bne _021E692C add r1, r4, #0 b _021E6932 _021E692C: sub r1, r4, #2 bpl _021E6932 add r1, r1, #4 _021E6932: ldr r0, [sp, #0xc] mov r2, #2 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D8110 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E6954 bl ErrorHandling _021E6954: add r0, r4, #1 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r5, #0xb8 ldr r0, [r5] add r1, r4, #1 cmp r0, #0 beq _021E696E sub r1, r1, #2 bpl _021E696E add r1, r1, #4 _021E696E: ldr r0, [sp, #0xc] mov r2, #0 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D8110 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E6990 bl ErrorHandling _021E6990: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E6908 thumb_func_start MOD16_021E6994 MOD16_021E6994: ; 0x021E6994 push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r4, [sp, #0x2c] add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r0, r4, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #0 bne _021E69B8 add r1, r4, #0 b _021E69BE _021E69B8: sub r1, r4, #2 bpl _021E69BE add r1, r1, #4 _021E69BE: ldr r0, [sp, #0xc] mov r2, #2 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D8158 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E69E0 bl ErrorHandling _021E69E0: add r0, r4, #1 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r5, #0xb8 ldr r0, [r5] add r1, r4, #1 cmp r0, #0 beq _021E69FA sub r1, r1, #2 bpl _021E69FA add r1, r1, #4 _021E69FA: ldr r0, [sp, #0xc] mov r2, #0 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D8158 mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E6A1C bl ErrorHandling _021E6A1C: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E6994 thumb_func_start MOD16_021E6A20 MOD16_021E6A20: ; 0x021E6A20 push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r4, [sp, #0x2c] add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r0, r4, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #0 bne _021E6A44 add r1, r4, #0 b _021E6A4A _021E6A44: sub r1, r4, #2 bpl _021E6A4A add r1, r1, #4 _021E6A4A: ldr r0, [sp, #0xc] mov r2, #2 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D80CC mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E6A6C bl ErrorHandling _021E6A6C: add r0, r4, #1 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r5, #0xb8 ldr r0, [r5] add r1, r4, #1 cmp r0, #0 beq _021E6A86 sub r1, r1, #2 bpl _021E6A86 add r1, r1, #4 _021E6A86: ldr r0, [sp, #0xc] mov r2, #0 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D80CC mov r1, #0 mvn r1, r1 cmp r0, r1 bne _021E6AA8 bl ErrorHandling _021E6AA8: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E6A20 thumb_func_start MOD16_021E6AAC MOD16_021E6AAC: ; 0x021E6AAC push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r4, [sp, #0x2c] add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r0, r4, #0 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] cmp r0, #0 bne _021E6AD0 add r1, r4, #0 b _021E6AD6 _021E6AD0: sub r1, r4, #2 bpl _021E6AD6 add r1, r1, #4 _021E6AD6: ldr r0, [sp, #0xc] mov r2, #2 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D822C cmp r0, #0xf bne _021E6AF4 bl ErrorHandling _021E6AF4: add r0, r4, #1 add r1, sp, #0x10 add r2, sp, #0xc bl MOD16_021E6D54 add r5, #0xb8 ldr r0, [r5] add r1, r4, #1 cmp r0, #0 beq _021E6B0E sub r1, r1, #2 bpl _021E6B0E add r1, r1, #4 _021E6B0E: ldr r0, [sp, #0xc] mov r2, #0 str r0, [sp] ldr r0, [sp, #0x28] str r0, [sp, #4] str r1, [sp, #8] ldr r0, [r6] ldr r1, [r7, #4] ldr r3, [sp, #0x10] bl MOD16_021D822C cmp r0, #0xf bne _021E6B2C bl ErrorHandling _021E6B2C: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E6AAC thumb_func_start MOD16_021E6B30 MOD16_021E6B30: ; 0x021E6B30 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r0, #0 add r6, r1, #0 add r1, r5, #0 add r1, #0xb8 ldr r1, [r1] add r4, r2, #0 add r7, r3, #0 mov r0, #0 cmp r1, #0 beq _021E6B4E sub r0, r0, #2 bpl _021E6B4E add r0, r0, #4 _021E6B4E: ldr r1, [sp, #0x28] add r2, r4, #0 str r1, [sp] ldr r1, [sp, #0x2c] add r3, r7, #0 str r1, [sp, #4] str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] add r0, r5, #0 add r1, r6, #0 bl MOD16_021E6C04 ldr r0, [sp, #0x28] ldr r1, [sp, #0x2c] ldr r3, [r4, #0x10] mov r2, #1 bl MOD16_021E5D2C add r2, r5, #0 add r2, #0xb8 ldr r2, [r2] mov r1, #2 cmp r2, #0 beq _021E6B86 sub r1, r1, #2 bpl _021E6B86 add r1, r1, #4 _021E6B86: ldr r2, [sp, #0x28] add r3, r7, #0 str r2, [sp] str r0, [sp, #4] str r1, [sp, #8] mov r0, #1 str r0, [sp, #0xc] add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl MOD16_021E6C04 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E6B30 thumb_func_start MOD16_021E6BA4 MOD16_021E6BA4: ; 0x021E6BA4 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r6, r2, #0 add r5, r0, #0 str r1, [sp, #0x10] str r3, [sp, #0x14] ldr r0, [sp, #0x30] ldr r1, [sp, #0x34] ldr r3, [r6, #0x10] mov r2, #1 bl MOD16_021E5D2C str r0, [sp, #0x18] add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] mov r4, #2 cmp r0, #0 beq _021E6BD0 sub r4, r4, #2 bpl _021E6BD0 add r4, r4, #4 _021E6BD0: add r0, r0, #1 lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r7, r2, r1 lsl r0, r7, #2 add r0, r5, r0 ldr r0, [r0, #0x20] bl MOD16_021DB338 ldr r0, [sp, #0x30] ldr r1, [sp, #0x10] str r0, [sp] ldr r0, [sp, #0x18] ldr r3, [sp, #0x14] str r0, [sp, #4] str r4, [sp, #8] add r0, r5, #0 add r2, r6, #0 str r7, [sp, #0xc] bl MOD16_021E6C04 add sp, #0x1c pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E6BA4 thumb_func_start MOD16_021E6C04 MOD16_021E6C04: ; 0x021E6C04 push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 add r4, r0, #0 ldr r0, [sp, #0x60] add r6, r1, #0 lsl r7, r0, #2 ldr r0, [r4, r7] str r2, [sp, #8] str r3, [sp, #0xc] ldr r5, [r6] cmp r0, #0 bne _021E6C20 bl ErrorHandling _021E6C20: ldr r1, [sp, #8] ldr r2, [sp, #0x58] ldr r3, [sp, #0x5c] add r0, r6, #0 bl MOD16_021E6D94 str r0, [sp, #0x10] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0 str r0, [sp, #0x18] ldr r0, [r4, #0x14] bl FUN_02009E54 mov r1, #0x28 str r1, [sp, #0x2c] mov r1, #3 str r1, [sp, #0x30] mov r1, #0 ldr r2, [sp, #0xc] str r1, [sp, #0x34] mov r1, #1 str r0, [sp, #0x20] str r1, [sp, #0x38] str r2, [sp, #0x3c] bl FUN_0201E28C str r0, [sp, #0x14] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0xa mov r2, #2 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r5, r0] ldr r2, _021E6CB0 ; =0x00000266 ldr r3, [sp, #0x10] add r1, r6, #0 bl MOD16_021DB3C8 lsr r0, r0, #1 neg r0, r0 str r6, [sp, #0x1c] str r0, [sp, #0x28] ldr r0, [r4, r7] add r4, #0x20 str r0, [sp, #0x24] ldr r0, [sp, #0x64] lsl r5, r0, #2 add r0, sp, #0x18 bl MOD16_021DB2BC str r0, [r4, r5] ldr r0, [r4, r5] ldr r1, [sp, #0x14] ldr r0, [r0] bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} nop _021E6CB0: .word 0x00000266 thumb_func_end MOD16_021E6C04 thumb_func_start MOD16_021E6CB4 MOD16_021E6CB4: ; 0x021E6CB4 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #4] add r6, r2, #0 bl MOD16_021D9DE8 add r1, r0, #0 ldr r0, [r5, #4] add r2, r6, #0 bl MOD16_021D98DC add r5, r0, #0 mov r0, #0 mvn r0, r0 cmp r5, r0 bne _021E6CD8 bl ErrorHandling _021E6CD8: cmp r5, #0 beq _021E6CE2 cmp r5, #1 beq _021E6CE6 b _021E6CEA _021E6CE2: mov r4, #0xd b _021E6CEE _021E6CE6: mov r4, #0xe b _021E6CEE _021E6CEA: bl ErrorHandling _021E6CEE: add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E6CB4 thumb_func_start MOD16_021E6CF4 MOD16_021E6CF4: ; 0x021E6CF4 mov r0, #0xd bx lr thumb_func_end MOD16_021E6CF4 thumb_func_start MOD16_021E6CF8 MOD16_021E6CF8: ; 0x021E6CF8 mov r0, #0xe bx lr thumb_func_end MOD16_021E6CF8 thumb_func_start MOD16_021E6CFC MOD16_021E6CFC: ; 0x021E6CFC mov r0, #0x15 bx lr thumb_func_end MOD16_021E6CFC thumb_func_start MOD16_021E6D00 MOD16_021E6D00: ; 0x021E6D00 push {r3, lr} ldr r0, [r1, #4] add r1, r2, #0 bl MOD16_021D9934 add r0, #0x11 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E6D00 thumb_func_start MOD16_021E6D10 MOD16_021E6D10: ; 0x021E6D10 push {r3, lr} ldr r0, [r1, #4] add r1, r2, #0 bl MOD16_021D994C add r0, #0x11 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E6D10 thumb_func_start MOD16_021E6D20 MOD16_021E6D20: ; 0x021E6D20 push {r3, lr} ldr r0, [r1, #4] add r1, r2, #0 bl MOD16_021D9904 add r0, #0xf pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E6D20 thumb_func_start MOD16_021E6D30 MOD16_021E6D30: ; 0x021E6D30 push {r3, lr} ldr r0, [r1, #4] add r1, r2, #0 bl MOD16_021D991C add r0, #0xf pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E6D30 thumb_func_start MOD16_021E6D40 MOD16_021E6D40: ; 0x021E6D40 mov r0, #0x14 bx lr thumb_func_end MOD16_021E6D40 thumb_func_start MOD16_021E6D44 MOD16_021E6D44: ; 0x021E6D44 push {r3, lr} ldr r0, [r1, #4] add r1, r2, #0 bl MOD16_021D9A3C add r0, #0x6e pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E6D44 thumb_func_start MOD16_021E6D54 MOD16_021E6D54: ; 0x021E6D54 push {r3, r4, r5, r6, r7, lr} mov r4, #0 add r6, r1, #0 add r7, r2, #0 add r5, r4, #0 cmp r0, #3 bhi _021E6D8A add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E6D6E: ; jump table .short _021E6D78 - _021E6D6E - 2 ; case 0 .short _021E6D76 - _021E6D6E - 2 ; case 1 .short _021E6D80 - _021E6D6E - 2 ; case 2 .short _021E6D7E - _021E6D6E - 2 ; case 3 _021E6D76: mov r4, #0x70 _021E6D78: add r4, #0x48 mov r5, #0x58 b _021E6D8E _021E6D7E: mov r4, #0x70 _021E6D80: mov r0, #0x52 lsl r0, r0, #2 add r4, r4, r0 mov r5, #0x58 b _021E6D8E _021E6D8A: bl ErrorHandling _021E6D8E: str r4, [r6] str r5, [r7] pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E6D54 thumb_func_start MOD16_021E6D94 MOD16_021E6D94: ; 0x021E6D94 push {r3, lr} cmp r2, #9 bhi _021E6E08 add r2, r2, r2 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _021E6DA6: ; jump table .short _021E6DBA - _021E6DA6 - 2 ; case 0 .short _021E6DC2 - _021E6DA6 - 2 ; case 1 .short _021E6DCA - _021E6DA6 - 2 ; case 2 .short _021E6DD2 - _021E6DA6 - 2 ; case 3 .short _021E6DEA - _021E6DA6 - 2 ; case 4 .short _021E6DF2 - _021E6DA6 - 2 ; case 5 .short _021E6DDA - _021E6DA6 - 2 ; case 6 .short _021E6DE2 - _021E6DA6 - 2 ; case 7 .short _021E6DFA - _021E6DA6 - 2 ; case 8 .short _021E6E02 - _021E6DA6 - 2 ; case 9 _021E6DBA: add r2, r3, #0 bl MOD16_021E6CB4 pop {r3, pc} _021E6DC2: add r2, r3, #0 bl MOD16_021E6CF4 pop {r3, pc} _021E6DCA: add r2, r3, #0 bl MOD16_021E6CF8 pop {r3, pc} _021E6DD2: add r2, r3, #0 bl MOD16_021E6CFC pop {r3, pc} _021E6DDA: add r2, r3, #0 bl MOD16_021E6D00 pop {r3, pc} _021E6DE2: add r2, r3, #0 bl MOD16_021E6D10 pop {r3, pc} _021E6DEA: add r2, r3, #0 bl MOD16_021E6D20 pop {r3, pc} _021E6DF2: add r2, r3, #0 bl MOD16_021E6D30 pop {r3, pc} _021E6DFA: add r2, r3, #0 bl MOD16_021E6D40 pop {r3, pc} _021E6E02: add r2, r3, #0 bl MOD16_021E6D44 _021E6E08: pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021E6D94 thumb_func_start MOD16_021E6E0C MOD16_021E6E0C: ; 0x021E6E0C push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021E6E12: ldr r0, [r5, #0x20] bl MOD16_021DB338 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021E6E12 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E6E0C thumb_func_start MOD16_021E6E24 MOD16_021E6E24: ; 0x021E6E24 push {r4, lr} add r4, r0, #0 add r0, #0xbc ldr r0, [r0] mov r1, #0 bl FUN_020200A0 add r0, r4, #0 mov r1, #0x18 add r0, #0xc0 str r1, [r0] mov r0, #1 add r4, #0xc4 str r0, [r4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E6E24 thumb_func_start MOD16_021E6E44 MOD16_021E6E44: ; 0x021E6E44 push {r4, lr} add r4, r0, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0 beq _021E6E7A add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0xc0 str r1, [r0] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] cmp r0, #0 bgt _021E6E7A add r0, r4, #0 add r0, #0xbc ldr r0, [r0] mov r1, #1 bl FUN_020200A0 mov r0, #0 add r4, #0xc4 str r0, [r4] _021E6E7A: pop {r4, pc} thumb_func_end MOD16_021E6E44 thumb_func_start MOD16_021E6E7C MOD16_021E6E7C: ; 0x021E6E7C push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 add r0, r7, #0 bl MOD16_021E6F18 add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021E6F54 str r4, [r5] str r0, [r5, #4] mov r0, #0 str r0, [r5, #0x20] bl MOD16_021E6FA4 str r0, [r5, #0x24] ldr r0, _021E6EBC ; =MOD16_021E6FA8 str r0, [r5, #8] ldr r0, _021E6EC0 ; =MOD16_021E6FAC str r0, [r5, #0xc] ldr r0, _021E6EC4 ; =MOD16_021E6FBC str r0, [r5, #0x10] ldr r0, _021E6EC8 ; =MOD16_021E6FC0 str r0, [r5, #0x14] ldr r0, _021E6ECC ; =MOD16_021E70A0 str r0, [r5, #0x18] ldr r0, _021E6ED0 ; =MOD16_021E70A4 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E6EBC: .word MOD16_021E6FA8 _021E6EC0: .word MOD16_021E6FAC _021E6EC4: .word MOD16_021E6FBC _021E6EC8: .word MOD16_021E6FC0 _021E6ECC: .word MOD16_021E70A0 _021E6ED0: .word MOD16_021E70A4 thumb_func_end MOD16_021E6E7C thumb_func_start MOD16_021E6ED4 MOD16_021E6ED4: ; 0x021E6ED4 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E6F7C ldr r0, [r4, #4] bl MOD16_021E6F90 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E6ED4 thumb_func_start MOD16_021E6EE8 MOD16_021E6EE8: ; 0x021E6EE8 ldr r0, [r0] str r1, [r0, #8] str r2, [r0, #0xc] bx lr thumb_func_end MOD16_021E6EE8 thumb_func_start MOD16_021E6EF0 MOD16_021E6EF0: ; 0x021E6EF0 ldr r0, [r0] str r1, [r0, #0x14] bx lr .align 2, 0 thumb_func_end MOD16_021E6EF0 thumb_func_start MOD16_021E6EF8 MOD16_021E6EF8: ; 0x021E6EF8 mov r0, #0 bx lr thumb_func_end MOD16_021E6EF8 thumb_func_start MOD16_021E6EFC MOD16_021E6EFC: ; 0x021E6EFC ldr r2, [r0] mov r0, #1 cmp r1, #1 bne _021E6F08 mov r1, #0 add r0, r1, #0 _021E6F08: str r1, [r2, #0x1c] bx lr thumb_func_end MOD16_021E6EFC thumb_func_start MOD16_021E6F0C MOD16_021E6F0C: ; 0x021E6F0C ldr r2, [r0] mov r0, #0 str r1, [r2, #0x18] str r0, [r2, #0x1c] bx lr .align 2, 0 thumb_func_end MOD16_021E6F0C thumb_func_start MOD16_021E6F18 MOD16_021E6F18: ; 0x021E6F18 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x20 bl FUN_02016998 add r4, r0, #0 bne _021E6F2A bl ErrorHandling _021E6F2A: add r0, r4, #0 mov r1, #0 mov r2, #0x20 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E6F18 thumb_func_start MOD16_021E6F54 MOD16_021E6F54: ; 0x021E6F54 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021E6F66 bl ErrorHandling _021E6F66: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E6F54 thumb_func_start MOD16_021E6F7C MOD16_021E6F7C: ; 0x021E6F7C push {r4, lr} add r4, r0, #0 bne _021E6F86 bl ErrorHandling _021E6F86: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E6F7C thumb_func_start MOD16_021E6F90 MOD16_021E6F90: ; 0x021E6F90 push {r4, lr} add r4, r0, #0 bne _021E6F9A bl ErrorHandling _021E6F9A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E6F90 thumb_func_start MOD16_021E6FA4 MOD16_021E6FA4: ; 0x021E6FA4 mov r0, #0 bx lr thumb_func_end MOD16_021E6FA4 thumb_func_start MOD16_021E6FA8 MOD16_021E6FA8: ; 0x021E6FA8 mov r0, #1 bx lr thumb_func_end MOD16_021E6FA8 thumb_func_start MOD16_021E6FAC MOD16_021E6FAC: ; 0x021E6FAC ldr r0, [r0, #0xc] cmp r0, #1 bne _021E6FB6 mov r0, #1 bx lr _021E6FB6: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021E6FAC thumb_func_start MOD16_021E6FBC MOD16_021E6FBC: ; 0x021E6FBC mov r0, #1 bx lr thumb_func_end MOD16_021E6FBC thumb_func_start MOD16_021E6FC0 MOD16_021E6FC0: ; 0x021E6FC0 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r5, [r4, #8] cmp r0, #3 bhi _021E7096 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E6FDC: ; jump table .short _021E6FE4 - _021E6FDC - 2 ; case 0 .short _021E6FFE - _021E6FDC - 2 ; case 1 .short _021E7048 - _021E6FDC - 2 ; case 2 .short _021E708C - _021E6FDC - 2 ; case 3 _021E6FE4: ldr r0, [r4, #4] mov r1, #0x58 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x58 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7096 _021E6FFE: ldr r3, [r4, #4] add r0, r5, #0 add r1, r6, #0 bl MOD16_021E7160 ldr r0, [r7, #0x14] cmp r0, #0 beq _021E7018 cmp r0, #1 beq _021E7026 cmp r0, #2 beq _021E7034 b _021E7040 _021E7018: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E77C0 b _021E7040 _021E7026: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E76E8 b _021E7040 _021E7034: add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021E78BC _021E7040: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7096 _021E7048: ldr r0, [r7, #0x14] cmp r0, #0 beq _021E7058 cmp r0, #1 beq _021E7066 cmp r0, #2 beq _021E7074 b _021E7080 _021E7058: add r0, r5, #0 add r1, r6, #0 mov r3, #1 bl MOD16_021E7844 add r1, r0, #0 b _021E7080 _021E7066: add r0, r5, #0 add r1, r6, #0 mov r3, #1 bl MOD16_021E7764 add r1, r0, #0 b _021E7080 _021E7074: add r0, r5, #0 add r1, r6, #0 mov r3, #1 bl MOD16_021E7944 add r1, r0, #0 _021E7080: cmp r1, #0 beq _021E7096 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7096 _021E708C: ldr r0, _021E709C ; =0x04000050 mov r1, #0 strh r1, [r0] mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E7096: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} nop _021E709C: .word 0x04000050 thumb_func_end MOD16_021E6FC0 thumb_func_start MOD16_021E70A0 MOD16_021E70A0: ; 0x021E70A0 mov r0, #0 bx lr thumb_func_end MOD16_021E70A0 thumb_func_start MOD16_021E70A4 MOD16_021E70A4: ; 0x021E70A4 push {r3, r4, r5, lr} add r4, r1, #0 ldr r5, [r4] add r3, r0, #0 add r1, r2, #0 ldr r0, [r4, #8] cmp r5, #4 bhi _021E715A add r5, r5, r5 add r5, pc ldrh r5, [r5, #6] lsl r5, r5, #0x10 asr r5, r5, #0x10 add pc, r5 _021E70C0: ; jump table .short _021E70CA - _021E70C0 - 2 ; case 0 .short _021E70FE - _021E70C0 - 2 ; case 1 .short _021E713C - _021E70C0 - 2 ; case 2 .short _021E714A - _021E70C0 - 2 ; case 3 .short _021E7156 - _021E70C0 - 2 ; case 4 _021E70CA: ldr r1, [r1, #0x14] cmp r1, #0 beq _021E70DA cmp r1, #1 beq _021E70E4 cmp r1, #2 beq _021E70EE b _021E70F6 _021E70DA: add r1, r3, #0 mov r3, #0 bl MOD16_021E77C0 b _021E70F6 _021E70E4: add r1, r3, #0 mov r3, #0 bl MOD16_021E76E8 b _021E70F6 _021E70EE: add r1, r3, #0 mov r3, #0 bl MOD16_021E78BC _021E70F6: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E715A _021E70FE: ldr r1, [r1, #0x14] cmp r1, #0 beq _021E710E cmp r1, #1 beq _021E711A cmp r1, #2 beq _021E7126 b _021E7130 _021E710E: add r1, r3, #0 mov r3, #0 bl MOD16_021E7844 add r2, r0, #0 b _021E7130 _021E711A: add r1, r3, #0 mov r3, #0 bl MOD16_021E7764 add r2, r0, #0 b _021E7130 _021E7126: add r1, r3, #0 mov r3, #0 bl MOD16_021E7944 add r2, r0, #0 _021E7130: cmp r2, #0 beq _021E715A ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E715A _021E713C: add r1, r3, #0 bl MOD16_021E71A8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E715A _021E714A: bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E715A _021E7156: mov r0, #1 pop {r3, r4, r5, pc} _021E715A: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E70A4 thumb_func_start MOD16_021E7160 MOD16_021E7160: ; 0x021E7160 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r4, r2, #0 add r6, r3, #0 add r7, r0, #0 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E73F0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E743C add r0, r7, #0 add r1, r5, #0 add r2, r6, #0 bl MOD16_021E7490 add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD16_021E7580 add r0, r5, #0 add r1, r6, #0 bl MOD16_021E71D0 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E72E4 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E7160 thumb_func_start MOD16_021E71A8 MOD16_021E71A8: ; 0x021E71A8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 bl MOD16_021E76D0 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E753C ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_02018744 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E71A8 thumb_func_start MOD16_021E71D0 MOD16_021E71D0: ; 0x021E71D0 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #3 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x32 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r6, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x33 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r1, #3 str r1, [sp] add r6, r0, #0 ldrh r0, [r2] mov r3, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x37 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r6, r0, #0 ldr r2, [sp, #0x10] mov r0, #0x10 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x38 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r4, r0, #0 ldr r2, [sp, #0x10] mov r0, #8 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0xe lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E71D0 thumb_func_start MOD16_021E72E4 MOD16_021E72E4: ; 0x021E72E4 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r5, r0, #0 add r4, r1, #0 str r2, [sp, #0x10] mov r0, #0x40 add r1, r2, #0 bl FUN_020219F4 str r0, [sp, #0x18] ldr r2, _021E7394 ; =0x00000266 ldr r3, [sp, #0x10] mov r0, #0 mov r1, #0x1a bl FUN_0200A86C str r0, [sp, #0x14] ldr r0, [r4, #4] bl MOD16_021D9DE8 add r7, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DF8 cmp r0, #2 beq _021E731E mov r7, #0 bl ErrorHandling _021E731E: ldr r0, [r4, #0x18] bl MOD16_021E7A70 add r1, r0, #0 ldr r0, [sp, #0x14] ldr r2, [sp, #0x18] bl FUN_0200A8E0 mov r0, #0 ldr r1, [sp, #0x18] add r2, r0, #0 bl FUN_02002E14 add r3, r0, #0 mov r0, #0x48 str r0, [sp] mov r1, #0 lsr r6, r3, #0x1f add r6, r3, r6 ldr r0, _021E7398 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] ldr r2, [sp, #0x18] asr r6, r6, #1 mov r3, #0xb8 add r0, r0, #4 sub r3, r3, r6 bl FUN_0201BDE0 ldr r0, [sp, #0x18] bl FUN_02021A20 ldr r0, [sp, #0x14] bl FUN_0200A8B8 ldr r0, [r4, #0x1c] ldr r1, [sp, #0x10] str r0, [sp] ldr r3, [r4, #0x18] add r0, r5, #0 add r2, r7, #0 bl MOD16_021E739C ldr r1, [sp, #0x10] ldr r3, [r4, #0x18] add r0, r5, #0 add r2, r7, #0 bl MOD16_021E7AB4 ldr r1, [sp, #0x10] ldr r3, [r4, #0x18] add r0, r5, #0 add r2, r7, #0 bl MOD16_021E7AF0 add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 _021E7394: .word 0x00000266 _021E7398: .word 0x00020100 thumb_func_end MOD16_021E72E4 thumb_func_start MOD16_021E739C MOD16_021E739C: ; 0x021E739C push {r3, r4, r5, lr} sub sp, #0x10 add r5, r0, #0 add r4, r1, #0 add r0, r2, #0 add r1, r3, #0 ldr r2, [sp, #0x20] add r3, r4, #0 bl MOD16_021DBC48 add r4, r0, #0 mov r0, #0 add r1, r4, #0 add r2, r0, #0 bl FUN_02002F08 cmp r0, #0xf0 bhs _021E73C8 lsr r1, r0, #1 mov r0, #0x80 sub r3, r0, r1 b _021E73CA _021E73C8: mov r3, #8 _021E73CA: mov r0, #0x88 str r0, [sp] mov r1, #0 ldr r0, _021E73EC ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 add r0, r4, #0 bl MOD16_021DBBAC add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _021E73EC: .word 0x00020100 thumb_func_end MOD16_021E739C thumb_func_start MOD16_021E73F0 MOD16_021E73F0: ; 0x021E73F0 push {r4, r5, r6, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] add r6, r2, #0 bl MOD16_021D9D88 add r3, r0, #0 mov r0, #0x2b lsl r0, r0, #0xe str r0, [sp] mov r0, #2 lsl r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r4, #4] add r2, r6, #0 bl MOD16_021D7E9C ldr r0, [r5] mov r1, #0 bl MOD16_021D891C add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E73F0 thumb_func_start MOD16_021E7424 MOD16_021E7424: ; 0x021E7424 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #0 bl MOD16_021D8950 ldr r0, [r4] mov r1, #0 bl MOD16_021D88F0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E7424 thumb_func_start MOD16_021E743C MOD16_021E743C: ; 0x021E743C push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 bl MOD16_021D8700 add r6, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r2, r0, #0 mov r0, #0x30 str r0, [sp] mov r0, #0x48 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r4, #4] mov r3, #2 bl MOD16_021D7FB4 add r0, r6, #0 mov r1, #6 mov r2, #0 bl FUN_02007558 add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E743C thumb_func_start MOD16_021E7474 MOD16_021E7474: ; 0x021E7474 push {r4, lr} ldr r0, [r0] bl MOD16_021D8700 add r4, r0, #0 mov r1, #6 mov r2, #1 bl FUN_02007558 add r0, r4, #0 bl FUN_02007EEC pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E7474 thumb_func_start MOD16_021E7490 MOD16_021E7490: ; 0x021E7490 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E752C ; =0x00000FFA mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x5a bl FUN_020091E0 str r0, [r5, #8] bl FUN_02009B04 ldr r0, [r5, #8] bl FUN_02009474 ldr r0, _021E7530 ; =0x00000FAD add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #5 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0xd mov r3, #0 bl FUN_02009298 str r0, [r5, #0xc] bl FUN_02009D68 ldr r0, [r5, #0xc] bl FUN_02009474 ldr r0, _021E7534 ; =0x00000FF8 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x58 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x10] ldr r0, _021E7538 ; =0x00000FF9 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x59 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x14] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E752C: .word 0x00000FFA _021E7530: .word 0x00000FAD _021E7534: .word 0x00000FF8 _021E7538: .word 0x00000FF9 thumb_func_end MOD16_021E7490 thumb_func_start MOD16_021E753C MOD16_021E753C: ; 0x021E753C push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #8] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0xc] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #8] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0xc] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x10] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x14] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E753C thumb_func_start MOD16_021E7580 MOD16_021E7580: ; 0x021E7580 push {r3, r4, r5, r6, r7, lr} sub sp, #0xa0 add r6, r0, #0 add r0, r2, #0 add r5, r1, #0 ldr r0, [r0, #4] str r2, [sp, #0x2c] add r7, r3, #0 ldr r4, [r5] bl MOD16_021D9DE8 ldr r3, _021E7670 ; =0x00000FF9 str r0, [sp, #0x30] mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #5 str r2, [sp, #0x10] lsl r0, r0, #6 ldr r1, [r4, r0] str r1, [sp, #0x14] add r1, r0, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r0, #0 add r1, #8 ldr r1, [r4, r1] add r0, #0xc str r1, [sp, #0x1c] ldr r0, [r4, r0] add r1, r3, #1 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r2, r3, #0 add r0, sp, #0x7c sub r2, #0x4c sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x5c] add r0, sp, #0x7c str r0, [sp, #0x60] mov r0, #0x20 str r0, [sp, #0x70] mov r0, #1 str r0, [sp, #0x74] mov r0, #3 lsl r0, r0, #0x12 str r0, [sp, #0x64] mov r0, #0xd lsl r0, r0, #0xe str r0, [sp, #0x68] add r0, sp, #0x5c str r7, [sp, #0x78] bl FUN_0201FF84 mov r1, #0x11 str r0, [r6] bl FUN_02020130 ldr r0, [sp, #0x2c] ldr r0, [r0, #4] bl MOD16_021D9DF8 cmp r0, #2 beq _021E7618 mov r0, #0 str r0, [sp, #0x30] _021E7618: ldr r1, [sp, #0x30] add r0, r5, #0 add r2, r7, #0 bl MOD16_021E7674 add r4, r0, #0 ldr r0, [r5] mov r1, #1 bl MOD16_021D88D4 mov r1, #0x15 ldr r2, [r5] lsl r1, r1, #4 ldr r1, [r2, r1] str r1, [sp, #0x34] mov r1, #0 bl FUN_02009E54 str r0, [sp, #0x3c] ldr r0, [r6] str r0, [sp, #0x40] mov r0, #0x4d mvn r0, r0 str r0, [sp, #0x44] add r0, #0x46 str r0, [sp, #0x48] mov r0, #0 str r0, [sp, #0x4c] mov r0, #0x1f str r0, [sp, #0x50] mov r0, #1 str r0, [sp, #0x54] str r7, [sp, #0x58] str r4, [sp, #0x38] add r0, sp, #0x34 bl MOD16_021DB2BC str r0, [r6, #4] add r0, r4, #0 bl MOD16_021DB3BC add sp, #0xa0 pop {r3, r4, r5, r6, r7, pc} nop _021E7670: .word 0x00000FF9 thumb_func_end MOD16_021E7580 thumb_func_start MOD16_021E7674 MOD16_021E7674: ; 0x021E7674 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 mov r0, #0x15 ldr r1, [r5] lsl r0, r0, #4 ldr r0, [r1, r0] add r7, r2, #0 mov r1, #0x12 mov r2, #2 bl MOD16_021DB388 add r4, r0, #0 add r0, r6, #0 mov r1, #2 add r2, r7, #0 bl MOD16_021DBC08 add r6, r0, #0 mov r0, #2 add r1, r6, #0 mov r2, #0 bl FUN_02002E14 cmp r0, #0x88 bhs _021E76B0 mov r1, #0x88 sub r0, r1, r0 lsr r3, r0, #1 b _021E76B2 _021E76B0: mov r3, #0 _021E76B2: mov r0, #0 str r0, [sp] mov r0, #0x15 ldr r1, [r5] lsl r0, r0, #4 ldr r0, [r1, r0] add r1, r4, #0 add r2, r6, #0 bl MOD16_021DB42C add r0, r6, #0 bl MOD16_021DBBAC add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E7674 thumb_func_start MOD16_021E76D0 MOD16_021E76D0: ; 0x021E76D0 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0201FFC8 mov r0, #0 str r0, [r4] ldr r0, [r4, #4] bl MOD16_021DB338 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E76D0 thumb_func_start MOD16_021E76E8 MOD16_021E76E8: ; 0x021E76E8 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r1, #0 add r7, r0, #0 ldr r0, [r5] mov r1, #1 add r4, r2, #0 add r6, r3, #0 bl MOD16_021D88F0 add r0, r7, #0 bl MOD16_021E79C0 ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 beq _021E775A cmp r6, #0 beq _021E7736 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2b str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 b _021E775A _021E7736: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2b str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E775A: add r0, r5, #0 bl MOD16_021E79F0 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E76E8 thumb_func_start MOD16_021E7764 MOD16_021E7764: ; 0x021E7764 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 ldr r0, [r2, #0x10] add r5, r1, #0 add r6, r3, #0 bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021E7784 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 b _021E778E _021E7784: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C _021E778E: add r4, r0, #0 cmp r4, #1 bne _021E77B6 cmp r6, #1 bne _021E77A8 add r0, r7, #0 bl MOD16_021E79D8 ldr r0, [r5] mov r1, #0 bl MOD16_021D88F0 b _021E77BC _021E77A8: add r0, r5, #0 bl MOD16_021E7474 add r0, r5, #0 bl MOD16_021E7424 b _021E77BC _021E77B6: add r0, r5, #0 bl MOD16_021E79F0 _021E77BC: add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E7764 thumb_func_start MOD16_021E77C0 MOD16_021E77C0: ; 0x021E77C0 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r0, #0 add r5, r1, #0 add r4, r2, #0 add r6, r3, #0 bl MOD16_021E79C0 cmp r6, #0 bne _021E77E6 ldr r1, [r4, #8] ldr r2, [r4, #0xc] add r0, r7, #0 mov r3, #4 bl MOD16_021E7A00 add r0, r7, #0 bl MOD16_021E7A38 _021E77E6: ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 beq _021E7840 cmp r6, #0 beq _021E781C mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021E781C: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E7840: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E77C0 thumb_func_start MOD16_021E7844 MOD16_021E7844: ; 0x021E7844 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bne _021E7864 bl MOD16_021E7A1C str r0, [sp] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E7A54 str r0, [sp, #4] b _021E786A _021E7864: mov r0, #1 str r0, [sp] str r0, [sp, #4] _021E786A: ldr r0, [r6, #0x10] bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r4] beq _021E7884 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 str r0, [sp, #8] b _021E7890 _021E7884: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C str r0, [sp, #8] _021E7890: mov r1, #0 add r2, sp, #0 _021E7894: ldr r0, [r2] cmp r0, #0 beq _021E78A2 add r1, r1, #1 add r2, r2, #4 cmp r1, #3 blt _021E7894 _021E78A2: cmp r1, #3 bne _021E78B6 cmp r7, #1 bne _021E78B0 add r0, r5, #0 bl MOD16_021E79D8 _021E78B0: add sp, #0xc mov r0, #1 pop {r4, r5, r6, r7, pc} _021E78B6: mov r0, #0 add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E7844 thumb_func_start MOD16_021E78BC MOD16_021E78BC: ; 0x021E78BC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r1, #0 add r7, r0, #0 add r4, r2, #0 add r6, r3, #0 bl MOD16_021E79C0 ldr r0, [r5] mov r1, #1 bl MOD16_021D88F0 cmp r6, #0 bne _021E78E4 ldr r1, [r4, #8] ldr r2, [r4, #0xc] add r0, r7, #0 mov r3, #1 bl MOD16_021E7A00 _021E78E4: ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 beq _021E793E cmp r6, #0 beq _021E791A mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021E791A: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E793E: add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E78BC thumb_func_start MOD16_021E7944 MOD16_021E7944: ; 0x021E7944 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r7, r0, #0 add r5, r1, #0 add r4, r2, #0 add r6, r3, #0 bne _021E795A bl MOD16_021E7A1C str r0, [sp] b _021E795E _021E795A: mov r0, #1 str r0, [sp] _021E795E: ldr r0, [r4, #0x10] bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021E7978 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 str r0, [sp, #4] b _021E7984 _021E7978: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C str r0, [sp, #4] _021E7984: mov r1, #0 add r2, sp, #0 _021E7988: ldr r0, [r2] cmp r0, #0 beq _021E7996 add r1, r1, #1 add r2, r2, #4 cmp r1, #2 blt _021E7988 _021E7996: cmp r1, #2 bne _021E79BA cmp r6, #1 bne _021E79AE add r0, r7, #0 bl MOD16_021E79D8 ldr r0, [r5] mov r1, #0 bl MOD16_021D88F0 b _021E79B4 _021E79AE: add r0, r5, #0 bl MOD16_021E7424 _021E79B4: add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E79BA: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E7944 thumb_func_start MOD16_021E79C0 MOD16_021E79C0: ; 0x021E79C0 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #1 bl FUN_02020398 ldr r0, [r4, #4] mov r1, #1 ldr r0, [r0] bl FUN_02011AF0 pop {r4, pc} thumb_func_end MOD16_021E79C0 thumb_func_start MOD16_021E79D8 MOD16_021E79D8: ; 0x021E79D8 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #0 bl FUN_02020398 ldr r0, [r4, #4] mov r1, #0 ldr r0, [r0] bl FUN_02011AF0 pop {r4, pc} thumb_func_end MOD16_021E79D8 thumb_func_start MOD16_021E79F0 MOD16_021E79F0: ; 0x021E79F0 mov r1, #0x5b ldr r0, [r0] lsl r1, r1, #2 ldr r3, _021E79FC ; =MOD16_021D8A8C add r1, r0, r1 bx r3 .align 2, 0 _021E79FC: .word MOD16_021D8A8C thumb_func_end MOD16_021E79F0 thumb_func_start MOD16_021E7A00 MOD16_021E7A00: ; 0x021E7A00 push {r4, lr} sub sp, #8 add r4, r1, #0 str r2, [sp] str r3, [sp, #4] add r0, #0x18 mov r1, #0x30 add r2, r4, #0 mov r3, #0x48 bl MOD16_021D8BD8 add sp, #8 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E7A00 thumb_func_start MOD16_021E7A1C MOD16_021E7A1C: ; 0x021E7A1C push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r0, #0x18 bl MOD16_021D8BF4 add r6, r0, #0 ldr r0, [r4] ldr r1, [r5, #0x18] ldr r2, [r5, #0x1c] bl MOD16_021D86F4 add r0, r6, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E7A1C thumb_func_start MOD16_021E7A38 MOD16_021E7A38: ; 0x021E7A38 push {r3, lr} sub sp, #8 mov r1, #0x52 str r1, [sp] mov r1, #4 str r1, [sp, #4] add r0, #0x38 mov r1, #0xac mov r2, #0xaa mov r3, #0x20 bl MOD16_021D8BD8 add sp, #8 pop {r3, pc} thumb_func_end MOD16_021E7A38 thumb_func_start MOD16_021E7A54 MOD16_021E7A54: ; 0x021E7A54 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r0, #0x38 bl MOD16_021D8BF4 add r6, r0, #0 ldr r0, [r4] ldr r1, [r5, #0x38] ldr r2, [r5, #0x3c] bl MOD16_021D7F6C add r0, r6, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E7A54 thumb_func_start MOD16_021E7A70 MOD16_021E7A70: ; 0x021E7A70 push {r4, lr} cmp r0, #7 bhi _021E7AAA add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E7A82: ; jump table .short _021E7AAA - _021E7A82 - 2 ; case 0 .short _021E7A92 - _021E7A82 - 2 ; case 1 .short _021E7A96 - _021E7A82 - 2 ; case 2 .short _021E7A9A - _021E7A82 - 2 ; case 3 .short _021E7A9E - _021E7A82 - 2 ; case 4 .short _021E7AA2 - _021E7A82 - 2 ; case 5 .short _021E7AAA - _021E7A82 - 2 ; case 6 .short _021E7AA6 - _021E7A82 - 2 ; case 7 _021E7A92: mov r4, #0x72 b _021E7AAE _021E7A96: mov r4, #0x16 b _021E7AAE _021E7A9A: mov r4, #0x17 b _021E7AAE _021E7A9E: mov r4, #0x19 b _021E7AAE _021E7AA2: mov r4, #0x18 b _021E7AAE _021E7AA6: mov r4, #0x1a b _021E7AAE _021E7AAA: bl ErrorHandling _021E7AAE: add r0, r4, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E7A70 thumb_func_start MOD16_021E7AB4 MOD16_021E7AB4: ; 0x021E7AB4 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 add r5, r0, #0 add r0, r2, #0 add r1, r3, #0 add r2, r4, #0 bl MOD16_021DBBC8 add r4, r0, #0 mov r0, #0x60 str r0, [sp] mov r1, #0 ldr r0, _021E7AEC ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 mov r3, #0x80 bl FUN_0201BDE0 add r0, r4, #0 bl MOD16_021DBBAC add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _021E7AEC: .word 0x00020100 thumb_func_end MOD16_021E7AB4 thumb_func_start MOD16_021E7AF0 MOD16_021E7AF0: ; 0x021E7AF0 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 add r5, r0, #0 add r0, r2, #0 add r1, r3, #0 add r2, r4, #0 bl MOD16_021DBC08 add r4, r0, #0 mov r0, #0 add r1, r4, #0 add r2, r0, #0 bl FUN_02002E14 mov r1, #0xf2 sub r3, r1, r0 mov r0, #0x70 str r0, [sp] mov r1, #0 ldr r0, _021E7B34 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 add r0, r4, #0 bl MOD16_021DBBAC add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _021E7B34: .word 0x00020100 thumb_func_end MOD16_021E7AF0 thumb_func_start MOD16_021E7B38 MOD16_021E7B38: ; 0x021E7B38 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021E7BB0 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E7C10 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E7C38 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021E7CE0 str r0, [r5, #0x24] ldr r0, _021E7B80 ; =MOD16_021E7CE4 str r0, [r5, #8] ldr r0, _021E7B84 ; =MOD16_021E7D28 str r0, [r5, #0xc] ldr r0, _021E7B88 ; =MOD16_021E7D68 str r0, [r5, #0x10] ldr r0, _021E7B8C ; =MOD16_021E7D7C str r0, [r5, #0x14] ldr r0, _021E7B90 ; =MOD16_021E7E10 str r0, [r5, #0x18] ldr r0, _021E7B94 ; =MOD16_021E7ECC str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E7B80: .word MOD16_021E7CE4 _021E7B84: .word MOD16_021E7D28 _021E7B88: .word MOD16_021E7D68 _021E7B8C: .word MOD16_021E7D7C _021E7B90: .word MOD16_021E7E10 _021E7B94: .word MOD16_021E7ECC thumb_func_end MOD16_021E7B38 thumb_func_start MOD16_021E7B98 MOD16_021E7B98: ; 0x021E7B98 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E7C90 ldr r0, [r4] bl MOD16_021E7CA4 ldr r0, [r4, #0x20] bl MOD16_021E7CB8 pop {r4, pc} thumb_func_end MOD16_021E7B98 thumb_func_start MOD16_021E7BB0 MOD16_021E7BB0: ; 0x021E7BB0 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x18 bl FUN_02016998 add r4, r0, #0 bne _021E7BC2 bl ErrorHandling _021E7BC2: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021E7BC8: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021E7BC8 add r0, r5, #0 bl MOD16_021D7AEC str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #3 bl MOD16_021D7B7C str r0, [r4, #0x14] add r0, r5, #0 mov r1, #2 bl MOD16_021D7B5C ldr r0, [r0] mov r1, #3 str r0, [r4, #8] add r0, r5, #0 bl MOD16_021D7B5C str r0, [r4, #0xc] add r0, r5, #0 mov r1, #4 bl MOD16_021D7B5C str r0, [r4, #0x10] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E7BB0 thumb_func_start MOD16_021E7C10 MOD16_021E7C10: ; 0x021E7C10 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021E7C22 bl ErrorHandling _021E7C22: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E7C10 thumb_func_start MOD16_021E7C38 MOD16_021E7C38: ; 0x021E7C38 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 bl MOD16_021E7CE0 add r7, r0, #0 mov r1, #0x14 mul r7, r1 add r0, r5, #0 add r1, r7, #0 bl FUN_02016998 add r4, r0, #0 bne _021E7C58 bl ErrorHandling _021E7C58: add r0, r4, #0 mov r1, #0 add r2, r7, #0 bl Call_FillMemWithValue add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 mov r3, #1 bl MOD16_021DB0B0 add r1, r4, #0 add r0, r5, #0 add r1, #0x14 add r2, r6, #0 mov r3, #2 bl MOD16_021DB1D0 add r1, r4, #0 add r0, r5, #0 add r1, #0x28 add r2, r6, #0 mov r3, #4 bl MOD16_021DB114 add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E7C38 thumb_func_start MOD16_021E7C90 MOD16_021E7C90: ; 0x021E7C90 push {r4, lr} add r4, r0, #0 bne _021E7C9A bl ErrorHandling _021E7C9A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E7C90 thumb_func_start MOD16_021E7CA4 MOD16_021E7CA4: ; 0x021E7CA4 push {r4, lr} add r4, r0, #0 bne _021E7CAE bl ErrorHandling _021E7CAE: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E7CA4 thumb_func_start MOD16_021E7CB8 MOD16_021E7CB8: ; 0x021E7CB8 push {r4, lr} add r4, r0, #0 bne _021E7CC2 bl ErrorHandling _021E7CC2: add r0, r4, #0 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x14 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x28 bl MOD16_021DAC7C add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_end MOD16_021E7CB8 thumb_func_start MOD16_021E7CE0 MOD16_021E7CE0: ; 0x021E7CE0 mov r0, #3 bx lr thumb_func_end MOD16_021E7CE0 thumb_func_start MOD16_021E7CE4 MOD16_021E7CE4: ; 0x021E7CE4 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] add r6, r1, #0 mov r1, #0x3c bl FUN_02016998 mov r1, #0 mov r2, #0x3c add r4, r0, #0 bl Call_FillMemWithValue mov r1, #0 add r2, r4, #0 mov r0, #4 _021E7D02: add r1, r1, #1 str r0, [r2, #0x14] add r2, r2, #4 cmp r1, #8 blt _021E7D02 mov r0, #0 str r0, [r4, #0x10] ldr r2, [r5, #4] add r0, r4, #0 add r1, r6, #0 bl MOD16_021E7F54 add r0, r4, #0 add r1, r6, #0 bl MOD16_021E8B7C str r4, [r5, #8] mov r0, #1 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E7CE4 thumb_func_start MOD16_021E7D28 MOD16_021E7D28: ; 0x021E7D28 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r0, #0xc] ldr r4, [r0, #8] cmp r1, #1 bne _021E7D38 mov r0, #1 pop {r3, r4, r5, pc} _021E7D38: ldr r0, [r0, #0x10] cmp r0, #1 bne _021E7D42 mov r0, #0 pop {r3, r4, r5, pc} _021E7D42: ldr r0, [r5, #0x14] bl MOD16_021E95C0 cmp r0, #0 beq _021E7D62 add r0, r4, #0 bl MOD16_021E8ABC add r0, r4, #0 add r1, r5, #0 bl MOD16_021E8014 add r0, r4, #0 add r1, r5, #0 bl MOD16_021E8A78 _021E7D62: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E7D28 thumb_func_start MOD16_021E7D68 MOD16_021E7D68: ; 0x021E7D68 push {r4, lr} ldr r4, [r0, #8] add r0, r4, #0 bl MOD16_021E8088 add r0, r4, #0 bl FUN_02016A18 mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021E7D68 thumb_func_start MOD16_021E7D7C MOD16_021E7D7C: ; 0x021E7D7C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] str r2, [sp] ldr r7, [r3, #8] ldr r6, [r4, #8] cmp r0, #3 bhi _021E7E0A add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E7D9A: ; jump table .short _021E7DA2 - _021E7D9A - 2 ; case 0 .short _021E7DBC - _021E7D9A - 2 ; case 1 .short _021E7DE2 - _021E7D9A - 2 ; case 2 .short _021E7DF8 - _021E7D9A - 2 ; case 3 _021E7DA2: ldr r0, [r4, #4] mov r1, #0xc4 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0xc4 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7E0A _021E7DBC: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E8228 add r0, r6, #0 add r1, r7, #0 bl MOD16_021E8AE4 ldr r2, [sp] add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021E880C ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7E0A _021E7DE2: add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021E8878 cmp r0, #0 beq _021E7E0A ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7E0A _021E7DF8: mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #0 bl MOD16_021D8B3C mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E7E0A: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E7D7C thumb_func_start MOD16_021E7E10 MOD16_021E7E10: ; 0x021E7E10 push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 str r0, [sp, #0x1c] add r0, r1, #0 ldr r7, [r0, #8] ldr r6, [r3, #8] add r0, r7, #0 add r0, #0xc0 str r1, [sp, #0x20] ldr r1, [r0] ldr r0, [r6, #0x38] cmp r1, r0 beq _021E7E3A add r0, r7, #0 add r1, r6, #0 bl MOD16_021E8AE4 add r0, r7, #0 ldr r1, [r6, #0x38] add r0, #0xc0 str r1, [r0] _021E7E3A: mov r0, #0 str r0, [sp, #0x2c] add r0, r7, #0 str r0, [sp, #0x28] add r0, #0xa0 str r0, [sp, #0x28] add r0, r7, #0 str r0, [sp, #0x24] add r0, #0x80 str r0, [sp, #0x24] add r4, r6, #0 add r5, r7, #0 _021E7E52: ldr r0, [sp, #0x2c] cmp r0, #0 bne _021E7E5C mov r1, #4 b _021E7E5E _021E7E5C: mov r1, #5 _021E7E5E: mov r0, #5 mvn r0, r0 str r0, [sp] ldr r0, [sp, #0x24] str r1, [sp, #4] str r0, [sp, #8] ldr r0, [sp, #0x20] ldr r0, [r0, #4] str r0, [sp, #0xc] mov r0, #4 str r0, [sp, #0x10] mov r0, #1 str r0, [sp, #0x14] ldr r0, [sp, #0x28] str r0, [sp, #0x18] ldr r0, [sp, #0x1c] ldr r1, [r5] ldr r2, [r5, #0x20] ldr r3, [r4, #0x14] bl MOD16_021E88B4 ldr r0, [r5, #0x50] ldr r1, [r4, #0x14] bl MOD16_021D7B98 ldr r0, [sp, #0x28] add r4, r4, #4 add r0, r0, #4 str r0, [sp, #0x28] ldr r0, [sp, #0x24] add r5, r5, #4 add r0, r0, #4 str r0, [sp, #0x24] ldr r0, [sp, #0x2c] add r0, r0, #1 str r0, [sp, #0x2c] cmp r0, #1 ble _021E7E52 mov r4, #2 add r6, #8 add r7, #8 _021E7EB0: ldr r0, [r7] ldr r1, [r6, #0x14] add r2, r4, #0 bl MOD16_021E8BB8 add r4, r4, #1 add r6, r6, #4 add r7, r7, #4 cmp r4, #8 blt _021E7EB0 mov r0, #0 add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E7E10 thumb_func_start MOD16_021E7ECC MOD16_021E7ECC: ; 0x021E7ECC push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #4 bhi _021E7F4E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E7EE8: ; jump table .short _021E7EF2 - _021E7EE8 - 2 ; case 0 .short _021E7F14 - _021E7EE8 - 2 ; case 1 .short _021E7F2A - _021E7EE8 - 2 ; case 2 .short _021E7F3C - _021E7EE8 - 2 ; case 3 .short _021E7F4A - _021E7EE8 - 2 ; case 4 _021E7EF2: mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 bl MOD16_021D8B3C add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021E880C ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7F4E _021E7F14: add r0, r6, #0 add r1, r5, #0 mov r3, #0 bl MOD16_021E8878 cmp r0, #0 beq _021E7F4E ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7F4E _021E7F2A: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021E8258 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7F4E _021E7F3C: add r0, r6, #0 bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E7F4E _021E7F4A: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E7F4E: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E7ECC thumb_func_start MOD16_021E7F54 MOD16_021E7F54: ; 0x021E7F54 push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #0x20 bl FUN_02016998 str r0, [r5, #4] mov r0, #0xd0 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x70 mov r2, #0x98 mov r3, #0x30 bl MOD16_021D7C98 mov r0, #0xd0 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x38 add r0, r0, #4 mov r2, #0x60 mov r3, #0x30 bl MOD16_021D7C98 mov r0, #0x30 str r0, [sp] ldr r0, [r5, #4] mov r1, #0xa0 add r0, #8 mov r2, #0xc0 mov r3, #8 bl MOD16_021D7C98 mov r0, #0x58 str r0, [sp] ldr r0, [r5, #4] mov r1, #0xa0 add r0, #0xc mov r2, #0xc0 mov r3, #0x30 bl MOD16_021D7C98 mov r0, #0x80 str r0, [sp] ldr r0, [r5, #4] mov r1, #0xa0 add r0, #0x10 mov r2, #0xc0 mov r3, #0x58 bl MOD16_021D7C98 mov r0, #0xa8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0xa0 add r0, #0x14 mov r2, #0xc0 mov r3, #0x80 bl MOD16_021D7C98 mov r0, #0xd0 str r0, [sp] ldr r0, [r5, #4] mov r1, #0xa0 add r0, #0x18 mov r2, #0xc0 mov r3, #0xa8 bl MOD16_021D7C98 mov r0, #0xf8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0xa0 add r0, #0x1c mov r2, #0xc0 mov r3, #0xd0 bl MOD16_021D7C98 str r4, [r5, #8] str r5, [r5, #0xc] str r6, [sp] add r3, r5, #0 ldr r0, [r5, #4] ldr r2, _021E8010 ; =MOD16_021E80A0 mov r1, #8 add r3, #8 bl FUN_020220C4 str r0, [r5] add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _021E8010: .word MOD16_021E80A0 thumb_func_end MOD16_021E7F54 thumb_func_start MOD16_021E8014 MOD16_021E8014: ; 0x021E8014 push {r4, lr} add r4, r0, #0 mov r1, #0 add r2, r4, #0 mov r0, #3 _021E801E: add r1, r1, #1 str r0, [r2, #0x14] add r2, r2, #4 cmp r1, #8 blt _021E801E ldr r0, [r4] bl FUN_02022144 ldr r0, [r4, #0x10] cmp r0, #5 bhi _021E806E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E8040: ; jump table .short _021E804C - _021E8040 - 2 ; case 0 .short _021E8052 - _021E8040 - 2 ; case 1 .short _021E8058 - _021E8040 - 2 ; case 2 .short _021E805E - _021E8040 - 2 ; case 3 .short _021E8064 - _021E8040 - 2 ; case 4 .short _021E806A - _021E8040 - 2 ; case 5 _021E804C: mov r0, #1 str r0, [r4, #0x1c] b _021E806E _021E8052: mov r0, #1 str r0, [r4, #0x20] b _021E806E _021E8058: mov r0, #1 str r0, [r4, #0x24] b _021E806E _021E805E: mov r0, #1 str r0, [r4, #0x28] b _021E806E _021E8064: mov r0, #1 str r0, [r4, #0x2c] b _021E806E _021E806A: mov r0, #1 str r0, [r4, #0x30] _021E806E: ldr r0, [r4, #0x34] cmp r0, #0 beq _021E807A cmp r0, #1 beq _021E8080 pop {r4, pc} _021E807A: mov r0, #2 str r0, [r4, #0x14] pop {r4, pc} _021E8080: mov r0, #2 str r0, [r4, #0x18] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E8014 thumb_func_start MOD16_021E8088 MOD16_021E8088: ; 0x021E8088 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0202212C ldr r0, [r4, #4] bl FUN_02016A18 mov r0, #0 str r0, [r4, #4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E8088 thumb_func_start MOD16_021E80A0 MOD16_021E80A0: ; 0x021E80A0 push {r3, r4, r5, lr} ldr r4, [r2, #4] ldr r5, [r2] lsl r2, r0, #2 add r2, r4, r2 str r1, [r2, #0x14] cmp r1, #2 bne _021E811A cmp r0, #7 bhi _021E811A add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E80C0: ; jump table .short _021E80D0 - _021E80C0 - 2 ; case 0 .short _021E80D6 - _021E80C0 - 2 ; case 1 .short _021E80DC - _021E80C0 - 2 ; case 2 .short _021E8112 - _021E80C0 - 2 ; case 3 .short _021E814A - _021E80C0 - 2 ; case 4 .short _021E8180 - _021E80C0 - 2 ; case 5 .short _021E81B6 - _021E80C0 - 2 ; case 6 .short _021E81EC - _021E80C0 - 2 ; case 7 _021E80D0: mov r0, #0 str r0, [r4, #0x34] pop {r3, r4, r5, pc} _021E80D6: mov r0, #1 str r0, [r4, #0x34] pop {r3, r4, r5, pc} _021E80DC: ldr r0, [r4, #0x38] mov r1, #1 tst r0, r1 beq _021E811A ldr r0, [r4, #0x10] cmp r0, #0 ldr r0, [r5, #8] bne _021E80F2 bl MOD16_021E4BB8 b _021E80FA _021E80F2: mov r1, #0 bl MOD16_021E4BBC mov r0, #1 _021E80FA: cmp r0, #0 beq _021E811A ldr r2, [r4, #0x10] add r0, r4, #0 add r1, r5, #0 mov r3, #0 bl MOD16_021E89D4 ldr r0, _021E8224 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021E8112: ldr r1, [r4, #0x38] mov r0, #2 tst r0, r1 bne _021E811C _021E811A: b _021E8220 _021E811C: ldr r0, [r4, #0x10] cmp r0, #1 ldr r0, [r5, #0x10] bne _021E812A bl MOD16_021E6EF8 b _021E8132 _021E812A: mov r1, #0 bl MOD16_021E6EFC mov r0, #1 _021E8132: cmp r0, #0 beq _021E8220 ldr r2, [r4, #0x10] add r0, r4, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021E89D4 ldr r0, _021E8224 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021E814A: ldr r1, [r4, #0x38] mov r0, #4 tst r0, r1 beq _021E8220 ldr r0, [r4, #0x10] cmp r0, #2 ldr r0, [r5, #0x10] bne _021E8160 bl MOD16_021E6EF8 b _021E8168 _021E8160: mov r1, #0 bl MOD16_021E6EFC mov r0, #1 _021E8168: cmp r0, #0 beq _021E8220 ldr r2, [r4, #0x10] add r0, r4, #0 add r1, r5, #0 mov r3, #2 bl MOD16_021E89D4 ldr r0, _021E8224 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021E8180: ldr r1, [r4, #0x38] mov r0, #8 tst r0, r1 beq _021E8220 ldr r0, [r4, #0x10] cmp r0, #3 ldr r0, [r5, #0x10] bne _021E8196 bl MOD16_021E6EF8 b _021E819E _021E8196: mov r1, #0 bl MOD16_021E6EFC mov r0, #1 _021E819E: cmp r0, #0 beq _021E8220 ldr r2, [r4, #0x10] add r0, r4, #0 add r1, r5, #0 mov r3, #3 bl MOD16_021E89D4 ldr r0, _021E8224 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021E81B6: ldr r1, [r4, #0x38] mov r0, #0x10 tst r0, r1 beq _021E8220 ldr r0, [r4, #0x10] cmp r0, #4 ldr r0, [r5, #0x10] bne _021E81CC bl MOD16_021E6EF8 b _021E81D4 _021E81CC: mov r1, #0 bl MOD16_021E6EFC mov r0, #1 _021E81D4: cmp r0, #0 beq _021E8220 ldr r2, [r4, #0x10] add r0, r4, #0 add r1, r5, #0 mov r3, #4 bl MOD16_021E89D4 ldr r0, _021E8224 ; =0x0000068B bl FUN_020054C8 pop {r3, r4, r5, pc} _021E81EC: ldr r1, [r4, #0x38] mov r0, #0x20 tst r0, r1 beq _021E8220 ldr r0, [r4, #0x10] cmp r0, #5 ldr r0, [r5, #0x10] bne _021E8202 bl MOD16_021E6EF8 b _021E820A _021E8202: mov r1, #0 bl MOD16_021E6EFC mov r0, #1 _021E820A: cmp r0, #0 beq _021E8220 ldr r2, [r4, #0x10] add r0, r4, #0 add r1, r5, #0 mov r3, #5 bl MOD16_021E89D4 ldr r0, _021E8224 ; =0x0000068B bl FUN_020054C8 _021E8220: pop {r3, r4, r5, pc} nop _021E8224: .word 0x0000068B thumb_func_end MOD16_021E80A0 thumb_func_start MOD16_021E8228 MOD16_021E8228: ; 0x021E8228 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r2, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD16_021E82B8 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E8394 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E84DC add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021E868C pop {r4, r5, r6, pc} thumb_func_end MOD16_021E8228 thumb_func_start MOD16_021E8258 MOD16_021E8258: ; 0x021E8258 push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 mov r0, #0x20 add r6, r2, #0 str r0, [sp] add r4, r1, #0 str r6, [sp, #4] ldr r0, [r4] mov r1, #9 mov r2, #4 mov r3, #0x80 bl MOD16_021D8CFC mov r0, #0x20 str r0, [sp] str r6, [sp, #4] ldr r0, [r4] mov r1, #9 mov r2, #4 mov r3, #0xa0 bl MOD16_021D8CFC add r0, r5, #0 bl MOD16_021E866C add r0, r5, #0 add r1, r4, #0 bl MOD16_021E8780 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E8480 mov r4, #0 _021E829E: add r0, r5, #0 add r0, #0xa0 ldr r0, [r0] cmp r0, #0 beq _021E82AC bl FUN_02016A18 _021E82AC: add r4, r4, #1 add r5, r5, #4 cmp r4, #8 blt _021E829E add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E8258 thumb_func_start MOD16_021E82B8 MOD16_021E82B8: ; 0x021E82B8 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x22 mov r3, #6 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x3e mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r6, r0, #0 ldrh r0, [r2] mov r1, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x3c mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r6, r0, #0 mov r1, #6 ldr r2, [sp, #0x10] mov r0, #0xe str r0, [sp] ldrh r0, [r2] add r3, r1, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] ldr r0, [r5] mov r1, #0x3f mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 add r4, r0, #0 mov r1, #6 ldr r2, [sp, #0x10] mov r0, #7 str r0, [sp] ldrh r0, [r2] add r3, r1, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #6 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E82B8 thumb_func_start MOD16_021E8394 MOD16_021E8394: ; 0x021E8394 push {r4, r5, r6, r7, lr} sub sp, #0xc ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E8468 ; =0x000013EE add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x66 mov r3, #1 bl FUN_020091E0 str r0, [r5, #0x40] bl FUN_02009B04 ldr r0, [r5, #0x40] bl FUN_02009474 ldr r0, _021E846C ; =0x000013EC add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x64 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x48] ldr r0, _021E8470 ; =0x000013ED add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x65 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x4c] ldr r0, _021E8474 ; =0x000013EB add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x63 mov r3, #1 bl FUN_020091E0 str r0, [r5, #0x70] bl FUN_02009B04 ldr r0, [r5, #0x70] bl FUN_02009474 ldr r0, _021E8478 ; =0x000013E9 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x61 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x78] ldr r0, _021E847C ; =0x000013EA add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x62 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x7c] add sp, #0xc pop {r4, r5, r6, r7, pc} nop _021E8468: .word 0x000013EE _021E846C: .word 0x000013EC _021E8470: .word 0x000013ED _021E8474: .word 0x000013EB _021E8478: .word 0x000013E9 _021E847C: .word 0x000013EA thumb_func_end MOD16_021E8394 thumb_func_start MOD16_021E8480 MOD16_021E8480: ; 0x021E8480 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x40] ldr r4, [r1] bl FUN_02009C0C mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x40] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x48] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x4c] bl FUN_02009490 ldr r0, [r5, #0x70] bl FUN_02009C0C mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x70] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x78] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x7c] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E8480 thumb_func_start MOD16_021E84DC MOD16_021E84DC: ; 0x021E84DC push {r4, r5, r6, r7, lr} sub sp, #0x74 ldr r4, [r1] ldr r3, _021E8658 ; =0x000013ED add r7, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #2 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 add r5, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] ldr r2, _021E865C ; =0x0000083F str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x50 sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #0x21 str r0, [sp, #0x30] add r0, sp, #0x50 str r0, [sp, #0x34] mov r0, #0x1f str r0, [sp, #0x44] mov r0, #2 str r0, [sp, #0x48] lsl r0, r0, #0x12 str r0, [sp, #0x38] mov r0, #3 lsl r1, r1, #0xe lsl r0, r0, #0x12 str r1, [sp, #0x3c] add r0, r1, r0 str r0, [sp, #0x3c] add r0, sp, #0x30 str r5, [sp, #0x4c] bl FUN_0201FF84 mov r1, #0 str r0, [r7] bl FUN_02020130 mov r0, #2 lsl r0, r0, #0x12 str r0, [sp, #0x38] mov r1, #0x13 mov r0, #3 lsl r1, r1, #0xe lsl r0, r0, #0x12 str r1, [sp, #0x3c] add r0, r1, r0 str r0, [sp, #0x3c] add r0, sp, #0x30 bl FUN_0201FF84 mov r1, #0 str r0, [r7, #4] bl FUN_02020130 ldr r3, _021E8660 ; =0x000013EA mov r0, #0 mov r2, #5 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r1, #2 lsl r2, r2, #6 str r1, [sp, #0x10] ldr r1, [r4, r2] str r1, [sp, #0x14] add r1, r2, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r2, #0 add r1, #8 ldr r1, [r4, r1] add r2, #0xc str r1, [sp, #0x1c] ldr r1, [r4, r2] ldr r2, _021E865C ; =0x0000083F str r1, [sp, #0x20] str r0, [sp, #0x24] str r0, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x50 sub r3, r3, #1 bl FUN_02008AA4 add r0, sp, #0x50 str r0, [sp, #0x34] mov r1, #0xb mov r0, #3 lsl r1, r1, #0x10 lsl r0, r0, #0x12 str r1, [sp, #0x3c] add r0, r1, r0 str r0, [sp, #0x3c] mov r0, #0 ldr r4, _021E8664 ; =0x021FF5DC ldr r5, _021E8668 ; =0x021FF5F4 str r0, [sp, #0x2c] add r6, r7, #0 _021E85DA: ldr r0, [r4] str r0, [sp, #0x38] add r0, sp, #0x30 bl FUN_0201FF84 str r0, [r6, #8] ldr r1, [r5] bl FUN_02020130 ldr r0, [sp, #0x2c] add r4, r4, #4 add r0, r0, #1 add r6, r6, #4 add r5, r5, #4 str r0, [sp, #0x2c] cmp r0, #6 blt _021E85DA mov r0, #0x1e str r0, [sp, #0x44] mov r0, #0xa lsl r0, r0, #0x10 str r0, [sp, #0x38] mov r1, #0x86 mov r0, #3 lsl r1, r1, #0xc lsl r0, r0, #0x12 str r1, [sp, #0x3c] add r0, r1, r0 str r0, [sp, #0x3c] add r0, sp, #0x30 bl FUN_0201FF84 mov r1, #0xd str r0, [r7, #0x50] bl FUN_02020130 mov r0, #6 lsl r0, r0, #0x10 mov r1, #0x4e str r0, [sp, #0x38] lsl r1, r1, #0xc lsl r0, r0, #1 str r1, [sp, #0x3c] add r0, r1, r0 str r0, [sp, #0x3c] add r0, sp, #0x30 bl FUN_0201FF84 mov r1, #0xc str r0, [r7, #0x54] bl FUN_02020130 mov r1, #2 add r7, #8 mov r0, #0 _021E8648: add r1, r1, #1 str r0, [r7, #0x50] add r7, r7, #4 cmp r1, #8 blt _021E8648 add sp, #0x74 pop {r4, r5, r6, r7, pc} nop _021E8658: .word 0x000013ED _021E865C: .word 0x0000083F _021E8660: .word 0x000013EA _021E8664: .word 0x021FF5DC _021E8668: .word 0x021FF5F4 thumb_func_end MOD16_021E84DC thumb_func_start MOD16_021E866C MOD16_021E866C: ; 0x021E866C push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021E8672: ldr r0, [r5] bl FUN_0201FFC8 ldr r0, [r5, #0x50] cmp r0, #0 beq _021E8682 bl FUN_0201FFC8 _021E8682: add r4, r4, #1 add r5, r5, #4 cmp r4, #8 blt _021E8672 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E866C thumb_func_start MOD16_021E868C MOD16_021E868C: ; 0x021E868C push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 add r5, r0, #0 ldr r0, [r5] add r6, r2, #0 ldr r4, [r1] cmp r0, #0 bne _021E86A0 bl ErrorHandling _021E86A0: mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, _021E8778 ; =0x0000083F bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] str r1, [sp, #8] mov r1, #0 bl FUN_02009E54 mov r1, #5 mvn r1, r1 str r1, [sp, #0x1c] mov r1, #2 mov r2, #0 str r0, [sp, #0x10] str r1, [sp, #0x20] str r2, [sp, #0x24] str r1, [sp, #0x28] str r6, [sp, #0x2c] bl FUN_0201E28C add r7, r0, #0 mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #8 mov r2, #4 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, _021E877C ; =0x00000266 add r1, r6, #0 mov r3, #0x21 bl MOD16_021DB3C8 str r6, [sp, #0xc] ldr r0, [r5] str r0, [sp, #0x14] mov r0, #0x1f mvn r0, r0 str r0, [sp, #0x18] add r0, sp, #8 bl MOD16_021DB2BC str r0, [r5, #0x20] ldr r0, [r0] add r1, r7, #4 bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #8 mov r2, #4 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, _021E877C ; =0x00000266 add r1, r6, #0 mov r3, #0x22 bl MOD16_021DB3C8 mov r1, #0x20 sub r0, r1, r0 str r6, [sp, #0xc] str r0, [sp, #0x18] ldr r0, [r5, #4] str r0, [sp, #0x14] add r0, sp, #8 bl MOD16_021DB2BC str r0, [r5, #0x24] ldr r0, [r0] add r1, r7, #4 bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC mov r1, #2 add r5, #8 mov r0, #0 _021E876A: add r1, r1, #1 str r0, [r5, #0x20] add r5, r5, #4 cmp r1, #8 blt _021E876A add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E8778: .word 0x0000083F _021E877C: .word 0x00000266 thumb_func_end MOD16_021E868C thumb_func_start MOD16_021E8780 MOD16_021E8780: ; 0x021E8780 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021E8786: ldr r0, [r5, #0x20] cmp r0, #0 beq _021E8790 bl MOD16_021DB338 _021E8790: add r4, r4, #1 add r5, r5, #4 cmp r4, #8 blt _021E8786 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E8780 thumb_func_start MOD16_021E879C MOD16_021E879C: ; 0x021E879C push {r3, r4, r5, r6, r7, lr} mov r7, #1 add r5, r0, #0 mov r4, #0 add r6, r7, #0 _021E87A6: ldr r0, [r5] add r1, r6, #0 bl FUN_02020398 ldr r0, [r5, #0x20] cmp r0, #0 beq _021E87BC ldr r0, [r0] add r1, r7, #0 bl FUN_02011AF0 _021E87BC: ldr r0, [r5, #0x50] cmp r0, #0 beq _021E87C8 mov r1, #1 bl FUN_02020398 _021E87C8: add r4, r4, #1 add r5, r5, #4 cmp r4, #8 blt _021E87A6 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E879C thumb_func_start MOD16_021E87D4 MOD16_021E87D4: ; 0x021E87D4 push {r3, r4, r5, r6, r7, lr} mov r4, #0 add r5, r0, #0 add r7, r4, #0 add r6, r4, #0 _021E87DE: ldr r0, [r5] add r1, r6, #0 bl FUN_02020398 ldr r0, [r5, #0x20] cmp r0, #0 beq _021E87F4 ldr r0, [r0] add r1, r7, #0 bl FUN_02011AF0 _021E87F4: ldr r0, [r5, #0x50] cmp r0, #0 beq _021E8800 mov r1, #0 bl FUN_02020398 _021E8800: add r4, r4, #1 add r5, r5, #4 cmp r4, #8 blt _021E87DE pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E87D4 thumb_func_start MOD16_021E880C MOD16_021E880C: ; 0x021E880C push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021E879C ldr r0, [r4, #0x14] bl MOD16_021E95B8 cmp r0, #0 beq _021E8874 cmp r6, #0 beq _021E8850 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r2, [r5] lsl r0, r0, #4 add r0, r2, r0 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r3, r4, r5, r6, pc} _021E8850: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r3, [r5] lsl r0, r0, #4 add r0, r3, r0 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021E8874: add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021E880C thumb_func_start MOD16_021E8878 MOD16_021E8878: ; 0x021E8878 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #0x14] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E95B8 cmp r0, #0 beq _021E8898 mov r0, #0x19 ldr r1, [r5] lsl r0, r0, #4 add r0, r1, r0 bl MOD16_021D89B4 b _021E889E _021E8898: mov r0, #2 bl FUN_0200A344 _021E889E: cmp r0, #0 beq _021E88B0 cmp r4, #0 beq _021E88AC add r0, r6, #0 bl MOD16_021E87D4 _021E88AC: mov r0, #1 pop {r4, r5, r6, pc} _021E88B0: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E8878 thumb_func_start MOD16_021E88B4 MOD16_021E88B4: ; 0x021E88B4 push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp, #4] str r1, [sp, #8] add r0, r1, #0 add r1, r3, #0 str r2, [sp, #0xc] ldr r4, [sp, #0x30] ldr r6, [sp, #0x40] mov r5, #0 bl MOD16_021D7B98 ldr r0, [sp, #0x3c] ldr r1, [sp, #0xc] str r0, [sp] ldr r0, [sp, #8] ldr r2, [sp, #0x28] ldr r3, [sp, #0x38] bl MOD16_021E8960 ldr r0, [sp, #8] bl FUN_0202022C cmp r0, #3 bhi _021E8926 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E88F2: ; jump table .short _021E88FA - _021E88F2 - 2 ; case 0 .short _021E88FA - _021E88F2 - 2 ; case 1 .short _021E890A - _021E88F2 - 2 ; case 2 .short _021E8918 - _021E88F2 - 2 ; case 3 _021E88FA: ldr r0, [r4] cmp r0, #0 beq _021E8926 mov r0, #0 mov r5, #1 mov r7, #9 str r0, [r4] b _021E8926 _021E890A: ldr r0, [r4] cmp r0, #1 beq _021E8926 mov r5, #1 mov r7, #0xa str r5, [r4] b _021E8926 _021E8918: ldr r0, [r4] cmp r0, #2 beq _021E8926 mov r0, #2 mov r5, #1 mov r7, #8 str r0, [r4] _021E8926: cmp r5, #0 beq _021E895C ldr r0, [r6] cmp r0, #0 beq _021E8934 bl FUN_02016A18 _021E8934: ldr r0, [sp, #4] ldr r3, [sp, #0x34] ldr r0, [r0] add r1, r7, #0 add r2, sp, #0x10 bl MOD16_021D8D70 str r0, [r6] ldr r2, [sp, #0x10] ldr r1, [sp, #0x2c] ldr r2, [r2, #0xc] mov r0, #0x1f lsl r1, r1, #5 mov r3, #0x20 bl FUN_0201C2C8 cmp r0, #0 bne _021E895C bl ErrorHandling _021E895C: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E88B4 thumb_func_start MOD16_021E8960 MOD16_021E8960: ; 0x021E8960 push {r3, r4, lr} sub sp, #4 ldr r4, [sp, #0x10] str r4, [sp] bl MOD16_021D7C70 add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021E8960 thumb_func_start MOD16_021E8970 MOD16_021E8970: ; 0x021E8970 push {r4, r5, r6, lr} add r4, r1, #0 ldr r1, [r4, #8] mov r6, #1 str r6, [r1, #0x1c] ldr r3, [r4] add r5, r2, #0 ldr r2, [r3] mov r1, #4 orr r1, r2 str r1, [r3] mov r1, #0 str r1, [r0, #0x10] mov r1, #2 ldr r0, [r4, #8] cmp r5, #5 str r1, [r0, #0x14] bhi _021E89D0 add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E89A0: ; jump table .short _021E89AC - _021E89A0 - 2 ; case 0 .short _021E89BE - _021E89A0 - 2 ; case 1 .short _021E89BE - _021E89A0 - 2 ; case 2 .short _021E89BE - _021E89A0 - 2 ; case 3 .short _021E89BE - _021E89A0 - 2 ; case 4 .short _021E89BE - _021E89A0 - 2 ; case 5 _021E89AC: ldr r0, [r4, #8] mov r1, #0x30 str r1, [r0, #8] ldr r0, [r4, #8] mov r1, #0x48 str r1, [r0, #0xc] ldr r0, [r4, #8] str r6, [r0, #0x14] pop {r4, r5, r6, pc} _021E89BE: ldr r0, [r4, #0x10] mov r1, #0x30 mov r2, #0x48 bl MOD16_021E6EE8 ldr r0, [r4, #0x10] add r1, r6, #0 bl MOD16_021E6EF0 _021E89D0: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E8970 thumb_func_start MOD16_021E89D4 MOD16_021E89D4: ; 0x021E89D4 push {r3, r4, r5, r6, r7, lr} add r5, r3, #0 add r4, r1, #0 str r2, [sp] cmp r5, #5 bhi _021E8A36 add r1, r5, r5 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E89EC: ; jump table .short _021E89F8 - _021E89EC - 2 ; case 0 .short _021E8A12 - _021E89EC - 2 ; case 1 .short _021E8A12 - _021E89EC - 2 ; case 2 .short _021E8A12 - _021E89EC - 2 ; case 3 .short _021E8A12 - _021E89EC - 2 ; case 4 .short _021E8A12 - _021E89EC - 2 ; case 5 _021E89F8: ldr r3, [r4] mov r1, #4 ldr r2, [r3] mov r7, #0x30 orr r1, r2 str r1, [r3] mov r1, #0 str r1, [r0, #0x10] ldr r0, [r4, #8] mov r1, #2 mov r6, #0x48 str r1, [r0, #0x14] b _021E8A36 _021E8A12: ldr r2, [r4] mov r1, #2 ldr r3, [r2] mov r7, #0x30 orr r3, r1 str r3, [r2] str r5, [r0, #0x10] ldr r0, [r4, #0x10] mov r6, #0x48 bl MOD16_021E6EF0 sub r0, r5, #1 bl MOD16_021DBBB4 add r1, r0, #0 ldr r0, [r4, #0x10] bl MOD16_021E6F0C _021E8A36: ldr r0, [sp] cmp r0, #5 bhi _021E8A76 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E8A48: ; jump table .short _021E8A54 - _021E8A48 - 2 ; case 0 .short _021E8A64 - _021E8A48 - 2 ; case 1 .short _021E8A64 - _021E8A48 - 2 ; case 2 .short _021E8A64 - _021E8A48 - 2 ; case 3 .short _021E8A64 - _021E8A48 - 2 ; case 4 .short _021E8A64 - _021E8A48 - 2 ; case 5 _021E8A54: ldr r0, [r4, #8] mov r1, #2 str r7, [r0, #8] ldr r0, [r4, #8] str r6, [r0, #0xc] ldr r0, [r4, #8] str r1, [r0, #0x14] pop {r3, r4, r5, r6, r7, pc} _021E8A64: ldr r0, [r4, #0x10] add r1, r7, #0 add r2, r6, #0 bl MOD16_021E6EE8 ldr r0, [r4, #0x10] mov r1, #2 bl MOD16_021E6EF0 _021E8A76: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E89D4 thumb_func_start MOD16_021E8A78 MOD16_021E8A78: ; 0x021E8A78 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x34] add r4, r1, #0 cmp r0, #8 beq _021E8AB6 cmp r0, #1 ldr r0, [r4, #4] bne _021E8A94 mov r1, #0 mvn r1, r1 bl MOD16_021D9D48 b _021E8A9A _021E8A94: mov r1, #1 bl MOD16_021D9D48 _021E8A9A: cmp r0, #1 bne _021E8AB6 ldr r2, [r5, #0x10] add r0, r5, #0 add r1, r4, #0 bl MOD16_021E8970 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E8B7C ldr r0, _021E8AB8 ; =0x0000068B bl FUN_020054C8 _021E8AB6: pop {r3, r4, r5, pc} .align 2, 0 _021E8AB8: .word 0x0000068B thumb_func_end MOD16_021E8A78 thumb_func_start MOD16_021E8ABC MOD16_021E8ABC: ; 0x021E8ABC ldr r1, _021E8AE0 ; =0x021C48B8 ldr r2, [r1, #0x48] mov r1, #0x40 tst r1, r2 beq _021E8ACC mov r1, #1 str r1, [r0, #0x34] bx lr _021E8ACC: mov r1, #0x80 tst r1, r2 beq _021E8AD8 mov r1, #0 str r1, [r0, #0x34] bx lr _021E8AD8: mov r1, #8 str r1, [r0, #0x34] bx lr nop _021E8AE0: .word 0x021C48B8 thumb_func_end MOD16_021E8ABC thumb_func_start MOD16_021E8AE4 MOD16_021E8AE4: ; 0x021E8AE4 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x38] mov r1, #1 tst r0, r1 ldr r0, [r5, #8] bne _021E8AFC mov r1, #0 bl FUN_020200A0 b _021E8B00 _021E8AFC: bl FUN_020200A0 _021E8B00: ldr r1, [r4, #0x38] mov r0, #2 tst r0, r1 ldr r0, [r5, #0xc] bne _021E8B12 mov r1, #0 bl FUN_020200A0 b _021E8B18 _021E8B12: mov r1, #1 bl FUN_020200A0 _021E8B18: ldr r1, [r4, #0x38] mov r0, #4 tst r0, r1 ldr r0, [r5, #0x10] bne _021E8B2A mov r1, #0 bl FUN_020200A0 b _021E8B30 _021E8B2A: mov r1, #1 bl FUN_020200A0 _021E8B30: ldr r1, [r4, #0x38] mov r0, #8 tst r0, r1 ldr r0, [r5, #0x14] bne _021E8B42 mov r1, #0 bl FUN_020200A0 b _021E8B48 _021E8B42: mov r1, #1 bl FUN_020200A0 _021E8B48: ldr r1, [r4, #0x38] mov r0, #0x10 tst r0, r1 ldr r0, [r5, #0x18] bne _021E8B5A mov r1, #0 bl FUN_020200A0 b _021E8B60 _021E8B5A: mov r1, #1 bl FUN_020200A0 _021E8B60: ldr r1, [r4, #0x38] mov r0, #0x20 tst r0, r1 ldr r0, [r5, #0x1c] bne _021E8B72 mov r1, #0 bl FUN_020200A0 pop {r3, r4, r5, pc} _021E8B72: mov r1, #1 bl FUN_020200A0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E8AE4 thumb_func_start MOD16_021E8B7C MOD16_021E8B7C: ; 0x021E8B7C push {r3, r4, r5, r6, r7, lr} mov r5, #0 add r4, r0, #0 add r6, r1, #0 str r5, [r0, #0x38] add r4, #0x38 mov r7, #1 _021E8B8A: add r0, r5, #0 bl MOD16_021DBBB4 add r1, r0, #0 ldr r0, [r6, #4] bl MOD16_021D9F58 cmp r0, #0 beq _021E8BB0 ldr r1, [r4] mov r0, #1 add r2, r1, #0 orr r2, r0 add r0, r5, #1 add r1, r7, #0 lsl r1, r0 add r0, r2, #0 orr r0, r1 str r0, [r4] _021E8BB0: add r5, r5, #1 cmp r5, #6 blt _021E8B8A pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E8B7C thumb_func_start MOD16_021E8BB8 MOD16_021E8BB8: ; 0x021E8BB8 push {r4, r5, r6, lr} add r4, r2, #0 add r5, r0, #0 add r6, r1, #0 cmp r4, #2 blt _021E8BC8 cmp r4, #8 blt _021E8BCC _021E8BC8: bl ErrorHandling _021E8BCC: sub r0, r4, #2 lsl r1, r0, #2 ldr r0, _021E8BEC ; =0x021FF5F4 cmp r6, #1 ldr r1, [r0, r1] bne _021E8BE2 add r0, r5, #0 add r1, r1, #1 bl FUN_02020130 pop {r4, r5, r6, pc} _021E8BE2: add r0, r5, #0 bl FUN_02020130 pop {r4, r5, r6, pc} nop _021E8BEC: .word 0x021FF5F4 thumb_func_end MOD16_021E8BB8 thumb_func_start MOD16_021E8BF0 MOD16_021E8BF0: ; 0x021E8BF0 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021E8C70 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E8CF4 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E8D1C str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021E8E34 str r0, [r5, #0x24] ldr r0, _021E8C38 ; =MOD16_021E8E38 str r0, [r5, #8] ldr r0, _021E8C3C ; =MOD16_021E8E40 str r0, [r5, #0xc] ldr r0, _021E8C40 ; =MOD16_021E8E70 str r0, [r5, #0x10] ldr r0, _021E8C44 ; =MOD16_021E8E78 str r0, [r5, #0x14] ldr r0, _021E8C48 ; =MOD16_021E8F24 str r0, [r5, #0x18] ldr r0, _021E8C4C ; =MOD16_021E8F4C str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E8C38: .word MOD16_021E8E38 _021E8C3C: .word MOD16_021E8E40 _021E8C40: .word MOD16_021E8E70 _021E8C44: .word MOD16_021E8E78 _021E8C48: .word MOD16_021E8F24 _021E8C4C: .word MOD16_021E8F4C thumb_func_end MOD16_021E8BF0 thumb_func_start MOD16_021E8C50 MOD16_021E8C50: ; 0x021E8C50 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E8DBC ldr r0, [r4, #4] bl MOD16_021E8DD0 ldr r0, [r4, #0x20] bl MOD16_021E8DE4 pop {r4, pc} thumb_func_end MOD16_021E8C50 thumb_func_start MOD16_021E8C68 MOD16_021E8C68: ; 0x021E8C68 ldr r0, [r0] ldr r0, [r0, #0x28] bx lr .align 2, 0 thumb_func_end MOD16_021E8C68 thumb_func_start MOD16_021E8C70 MOD16_021E8C70: ; 0x021E8C70 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x34 bl FUN_02016998 add r4, r0, #0 bne _021E8C82 bl ErrorHandling _021E8C82: add r0, r4, #0 mov r1, #0 mov r2, #0x34 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7B00 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] mov r0, #0 str r0, [r4, #8] add r0, r5, #0 mov r1, #2 bl MOD16_021D7B5C ldr r0, [r0] mov r1, #3 str r0, [r4, #0x10] add r0, r5, #0 bl MOD16_021D7B5C str r0, [r4, #0x14] add r0, r5, #0 mov r1, #4 bl MOD16_021D7B5C str r0, [r4, #0x18] add r0, r5, #0 mov r1, #6 bl MOD16_021D7B5C str r0, [r4, #0x1c] add r0, r5, #0 mov r1, #7 bl MOD16_021D7B5C str r0, [r4, #0x20] add r0, r5, #0 mov r1, #6 bl MOD16_021D7B7C str r0, [r4, #0x24] add r0, r5, #0 mov r1, #0 bl MOD16_021D7B5C ldr r0, [r0] str r0, [r4, #0xc] mov r0, #1 str r0, [r4, #0x2c] str r0, [r4, #0x30] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E8C70 thumb_func_start MOD16_021E8CF4 MOD16_021E8CF4: ; 0x021E8CF4 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021E8D06 bl ErrorHandling _021E8D06: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E8CF4 thumb_func_start MOD16_021E8D1C MOD16_021E8D1C: ; 0x021E8D1C push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 bl MOD16_021E8E34 add r7, r0, #0 mov r1, #0x14 mul r7, r1 add r0, r5, #0 add r1, r7, #0 bl FUN_02016998 add r4, r0, #0 bne _021E8D3C bl ErrorHandling _021E8D3C: add r0, r4, #0 mov r1, #0 add r2, r7, #0 bl Call_FillMemWithValue add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 mov r3, #2 bl MOD16_021DAE0C add r1, r4, #0 add r0, r5, #0 add r1, #0x14 add r2, r6, #0 mov r3, #4 bl MOD16_021DB0B0 add r1, r4, #0 add r0, r5, #0 add r1, #0x28 add r2, r6, #0 mov r3, #8 bl MOD16_021DAED4 add r1, r4, #0 add r0, r5, #0 add r1, #0x3c add r2, r6, #0 mov r3, #0x10 bl MOD16_021DAF38 add r1, r4, #0 add r0, r5, #0 add r1, #0x50 add r2, r6, #0 mov r3, #0x20 bl MOD16_021DAF9C add r1, r4, #0 add r0, r5, #0 add r1, #0x64 add r2, r6, #0 mov r3, #0x40 bl MOD16_021DB000 add r1, r4, #0 add r0, r5, #0 add r1, #0x78 add r2, r6, #0 mov r3, #0x80 bl MOD16_021DB058 add r1, r4, #0 mov r3, #1 add r0, r5, #0 add r1, #0x8c add r2, r6, #0 lsl r3, r3, #8 bl MOD16_021DB16C add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021E8D1C thumb_func_start MOD16_021E8DBC MOD16_021E8DBC: ; 0x021E8DBC push {r4, lr} add r4, r0, #0 bne _021E8DC6 bl ErrorHandling _021E8DC6: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E8DBC thumb_func_start MOD16_021E8DD0 MOD16_021E8DD0: ; 0x021E8DD0 push {r4, lr} add r4, r0, #0 bne _021E8DDA bl ErrorHandling _021E8DDA: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E8DD0 thumb_func_start MOD16_021E8DE4 MOD16_021E8DE4: ; 0x021E8DE4 push {r4, lr} add r4, r0, #0 bne _021E8DEE bl ErrorHandling _021E8DEE: add r0, r4, #0 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x14 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x28 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x3c bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x50 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x64 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x78 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x8c bl MOD16_021DAC7C add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_end MOD16_021E8DE4 thumb_func_start MOD16_021E8E34 MOD16_021E8E34: ; 0x021E8E34 mov r0, #8 bx lr thumb_func_end MOD16_021E8E34 thumb_func_start MOD16_021E8E38 MOD16_021E8E38: ; 0x021E8E38 ldr r1, [r1, #0x10] mov r0, #1 str r0, [r1, #0x1c] bx lr thumb_func_end MOD16_021E8E38 thumb_func_start MOD16_021E8E40 MOD16_021E8E40: ; 0x021E8E40 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0xc] cmp r0, #1 bne _021E8E4E mov r0, #1 pop {r4, pc} _021E8E4E: ldr r0, [r4, #0x10] cmp r0, #1 bne _021E8E58 mov r0, #0 pop {r4, pc} _021E8E58: ldr r0, [r4] cmp r0, #0 bne _021E8E6A add r0, r1, #0 bl MOD16_021E9534 ldr r0, [r4] add r0, r0, #1 str r0, [r4] _021E8E6A: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E8E40 thumb_func_start MOD16_021E8E70 MOD16_021E8E70: ; 0x021E8E70 mov r0, #0 str r0, [r1, #8] mov r0, #1 bx lr thumb_func_end MOD16_021E8E70 thumb_func_start MOD16_021E8E78 MOD16_021E8E78: ; 0x021E8E78 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r4, r1, #0 ldr r1, [r4] add r5, r0, #0 add r7, r2, #0 ldr r6, [r4, #8] cmp r1, #3 bhi _021E8F1A add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E8E96: ; jump table .short _021E8E9E - _021E8E96 - 2 ; case 0 .short _021E8EBE - _021E8E96 - 2 ; case 1 .short _021E8EF6 - _021E8E96 - 2 ; case 2 .short _021E8F0E - _021E8E96 - 2 ; case 3 _021E8E9E: ldr r0, [r4, #4] mov r1, #0x28 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x28 bl Call_FillMemWithValue ldr r1, [r7, #8] ldr r0, [r4, #8] str r1, [r0] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E8F1E _021E8EBE: ldr r3, [r4, #4] add r1, r6, #0 bl MOD16_021E9294 add r0, r6, #0 bl MOD16_021E9DE0 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2f str r0, [sp, #8] str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #4 add r2, r1, #0 sub r2, #0x14 bl MOD16_021D8988 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E8F1E _021E8EF6: mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 cmp r0, #0 beq _021E8F1E ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E8F1E _021E8F0E: add r0, r6, #0 bl MOD16_021E9DFC add sp, #0x14 mov r0, #1 pop {r4, r5, r6, r7, pc} _021E8F1A: bl ErrorHandling _021E8F1E: mov r0, #0 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021E8E78 thumb_func_start MOD16_021E8F24 MOD16_021E8F24: ; 0x021E8F24 push {r3, r4, r5, lr} ldr r4, [r1, #8] add r5, r2, #0 ldr r1, [r5, #8] ldr r0, [r4] cmp r0, r1 beq _021E8F46 add r0, r4, #0 bl MOD16_021E9530 ldr r1, [r5, #8] ldr r2, [r4] add r0, r4, #0 bl MOD16_021EA1B4 ldr r0, [r5, #8] str r0, [r4] _021E8F46: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E8F24 thumb_func_start MOD16_021E8F4C MOD16_021E8F4C: ; 0x021E8F4C push {r4, r5, lr} sub sp, #0x14 add r4, r1, #0 ldr r3, [r4] add r5, r0, #0 ldr r1, [r4, #8] cmp r3, #4 bhi _021E9008 add r3, r3, r3 add r3, pc ldrh r3, [r3, #6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _021E8F68: ; jump table .short _021E8F72 - _021E8F68 - 2 ; case 0 .short _021E8FCC - _021E8F68 - 2 ; case 1 .short _021E8FE4 - _021E8F68 - 2 ; case 2 .short _021E8FF0 - _021E8F68 - 2 ; case 3 .short _021E9002 - _021E8F68 - 2 ; case 4 _021E8F72: ldr r0, [r2, #0x2c] cmp r0, #0 beq _021E8FA2 add r0, r1, #0 bl MOD16_021E9DE0 mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2f str r0, [sp, #8] str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #4 add r3, r1, #0 sub r3, #0x14 bl MOD16_021D8988 b _021E8FC4 _021E8FA2: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x3f str r0, [sp, #8] str r2, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #4 add r3, r1, #0 sub r3, #0x14 bl MOD16_021D8988 _021E8FC4: ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E900C _021E8FCC: mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 cmp r0, #0 beq _021E900C ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E900C _021E8FE4: bl MOD16_021E92D0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E900C _021E8FF0: add r0, r1, #0 bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E900C _021E9002: add sp, #0x14 mov r0, #1 pop {r4, r5, pc} _021E9008: bl ErrorHandling _021E900C: mov r0, #0 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E8F4C thumb_func_start MOD16_021E9014 MOD16_021E9014: ; 0x021E9014 push {r4, lr} add r4, r0, #0 bl MOD16_021E9024 mov r0, #1 str r0, [r4, #0x30] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E9014 thumb_func_start MOD16_021E9024 MOD16_021E9024: ; 0x021E9024 push {r4, lr} add r4, r0, #0 ldr r2, [r4] mov r0, #2 ldr r1, [r2] orr r0, r1 str r0, [r2] mov r1, #0 str r1, [r4, #0x28] ldr r0, [r4, #0x10] str r1, [r0, #0x14] ldr r0, [r4, #0x18] bl MOD16_021E6EF0 ldr r0, [r4, #8] cmp r0, #4 bhi _021E90D2 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E9052: ; jump table .short _021E905C - _021E9052 - 2 ; case 0 .short _021E9078 - _021E9052 - 2 ; case 1 .short _021E909C - _021E9052 - 2 ; case 2 .short _021E90C0 - _021E9052 - 2 ; case 3 .short _021E90CA - _021E9052 - 2 ; case 4 _021E905C: ldr r0, [r4, #0x10] mov r1, #0x38 str r1, [r0, #8] ldr r0, [r4, #0x10] mov r2, #0x50 str r2, [r0, #0xc] ldr r0, [r4, #0x18] bl MOD16_021E6EE8 ldr r0, [r4, #0xc] mov r1, #1 str r1, [r0, #0x14] str r1, [r4, #0x2c] pop {r4, pc} _021E9078: ldr r0, [r4, #0x1c] mov r1, #1 bl MOD16_021E2F54 ldr r0, [r4, #0x1c] mov r1, #4 bl MOD16_021E2F5C ldr r0, [r4, #0x1c] mov r1, #0x38 mov r2, #0x50 bl MOD16_021E2F4C ldr r0, [r4, #0xc] mov r1, #1 str r1, [r0, #0x14] str r1, [r4, #0x2c] pop {r4, pc} _021E909C: ldr r0, [r4, #0x20] mov r1, #1 bl MOD16_021EA264 ldr r0, [r4, #0x20] mov r1, #4 bl MOD16_021EA26C ldr r0, [r4, #0x20] mov r1, #0x38 mov r2, #0x50 bl MOD16_021EA25C ldr r0, [r4, #0xc] mov r1, #1 str r1, [r0, #0x14] str r1, [r4, #0x2c] pop {r4, pc} _021E90C0: ldr r0, [r4, #0xc] mov r1, #0 str r1, [r0, #0x14] str r1, [r4, #0x2c] pop {r4, pc} _021E90CA: ldr r0, [r4, #0xc] mov r1, #0 str r1, [r0, #0x14] str r1, [r4, #0x2c] _021E90D2: pop {r4, pc} thumb_func_end MOD16_021E9024 thumb_func_start MOD16_021E90D4 MOD16_021E90D4: ; 0x021E90D4 mov r0, #0 bx lr thumb_func_end MOD16_021E90D4 thumb_func_start MOD16_021E90D8 MOD16_021E90D8: ; 0x021E90D8 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r0, #0 mov r0, #1 add r7, r1, #0 str r2, [sp] str r0, [sp, #4] cmp r7, #4 bhi _021E91D6 add r0, r7, r7 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E90F6: ; jump table .short _021E9100 - _021E90F6 - 2 ; case 0 .short _021E9128 - _021E90F6 - 2 ; case 1 .short _021E915E - _021E90F6 - 2 ; case 2 .short _021E9194 - _021E90F6 - 2 ; case 3 .short _021E91B4 - _021E90F6 - 2 ; case 4 _021E9100: add r0, r2, #0 bl MOD16_021E90D4 cmp r0, #0 beq _021E910E mov r1, #2 b _021E9110 _021E910E: mov r1, #1 _021E9110: ldr r0, [r4, #0x10] mov r6, #0x30 str r1, [r0, #0x14] ldr r2, [r4] mov r0, #4 ldr r1, [r2] mov r5, #0x48 orr r0, r1 str r0, [r2] mov r0, #0 str r0, [r4, #8] b _021E91DA _021E9128: add r0, r2, #0 bl MOD16_021E90D4 cmp r0, #0 ldr r0, [r4, #0x1c] beq _021E9144 mov r1, #1 bl MOD16_021E2F54 ldr r0, [r4, #0x1c] mov r1, #1 bl MOD16_021E2F5C b _021E914A _021E9144: mov r1, #0 bl MOD16_021E2F54 _021E914A: ldr r2, [r4] mov r0, #8 ldr r1, [r2] mov r6, #0x28 orr r0, r1 str r0, [r2] mov r0, #1 str r0, [r4, #8] mov r5, #0x78 b _021E91DA _021E915E: add r0, r2, #0 bl MOD16_021E90D4 cmp r0, #0 ldr r0, [r4, #0x20] beq _021E917A mov r1, #1 bl MOD16_021EA264 ldr r0, [r4, #0x20] mov r1, #1 bl MOD16_021EA26C b _021E9180 _021E917A: mov r1, #0 bl MOD16_021EA264 _021E9180: ldr r2, [r4] mov r0, #0x10 ldr r1, [r2] mov r6, #0x30 orr r0, r1 str r0, [r2] mov r0, #2 str r0, [r4, #8] mov r5, #0x40 b _021E91DA _021E9194: ldr r0, [r4, #4] bl MOD16_021D9DF8 cmp r0, #2 bne _021E91AE ldr r2, [r4] mov r0, #0x20 ldr r1, [r2] orr r0, r1 str r0, [r2] mov r0, #3 str r0, [r4, #8] b _021E91DA _021E91AE: mov r0, #0 str r0, [sp, #4] b _021E91DA _021E91B4: ldr r0, [r4, #4] bl MOD16_021D9F80 cmp r0, #1 bne _021E91D0 ldr r2, [r4] mov r0, #1 ldr r1, [r2] lsl r0, r0, #8 orr r0, r1 str r0, [r2] mov r0, #4 str r0, [r4, #8] b _021E91DA _021E91D0: mov r0, #0 str r0, [sp, #4] b _021E91DA _021E91D6: bl ErrorHandling _021E91DA: ldr r0, [sp] cmp r0, #4 bhi _021E928A add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E91EC: ; jump table .short _021E91F6 - _021E91EC - 2 ; case 0 .short _021E922E - _021E91EC - 2 ; case 1 .short _021E925C - _021E91EC - 2 ; case 2 .short _021E928E - _021E91EC - 2 ; case 3 .short _021E928E - _021E91EC - 2 ; case 4 _021E91F6: add r0, r7, #0 bl MOD16_021E90D4 cmp r0, #0 beq _021E920E ldr r0, [r4, #0x10] mov r1, #2 str r1, [r0, #0x14] ldr r0, [r4, #0x18] bl MOD16_021E6EF0 b _021E921A _021E920E: ldr r0, [r4, #0x10] mov r1, #1 str r1, [r0, #0x14] ldr r0, [r4, #0x18] bl MOD16_021E6EF0 _021E921A: ldr r0, [r4, #0x10] add r1, r6, #0 str r6, [r0, #8] ldr r0, [r4, #0x10] add r2, r5, #0 str r5, [r0, #0xc] ldr r0, [r4, #0x18] bl MOD16_021E6EE8 b _021E928E _021E922E: add r0, r7, #0 bl MOD16_021E90D4 cmp r0, #0 ldr r0, [r4, #0x1c] beq _021E924A mov r1, #1 bl MOD16_021E2F54 ldr r0, [r4, #0x1c] mov r1, #1 bl MOD16_021E2F5C b _021E9250 _021E924A: mov r1, #0 bl MOD16_021E2F54 _021E9250: ldr r0, [r4, #0x1c] add r1, r6, #0 add r2, r5, #0 bl MOD16_021E2F4C b _021E928E _021E925C: add r0, r7, #0 bl MOD16_021E90D4 cmp r0, #0 ldr r0, [r4, #0x20] beq _021E9278 mov r1, #1 bl MOD16_021EA264 ldr r0, [r4, #0x20] mov r1, #1 bl MOD16_021EA26C b _021E927E _021E9278: mov r1, #0 bl MOD16_021EA264 _021E927E: ldr r0, [r4, #0x20] add r1, r6, #0 add r2, r5, #0 bl MOD16_021EA25C b _021E928E _021E928A: bl ErrorHandling _021E928E: ldr r0, [sp, #4] add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E90D8 thumb_func_start MOD16_021E9294 MOD16_021E9294: ; 0x021E9294 push {r4, r5, r6, lr} add r4, r3, #0 add r5, r1, #0 add r1, r2, #0 add r6, r0, #0 add r2, r4, #0 bl MOD16_021E92F8 add r0, r6, #0 add r1, r5, #0 add r2, r4, #0 bl MOD16_021E938C add r0, r6, #0 add r1, r5, #0 add r2, r4, #0 bl MOD16_021E947C add r0, r6, #0 add r1, r5, #0 add r2, r4, #0 bl MOD16_021E9484 add r0, r5, #0 mov r1, #0 mov r2, #1 bl MOD16_021EA1B4 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E9294 thumb_func_start MOD16_021E92D0 MOD16_021E92D0: ; 0x021E92D0 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 bl MOD16_021E9480 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E9438 add r0, r4, #0 bl MOD16_021E9518 ldr r0, [r5] mov r1, #2 ldr r0, [r0] bl FUN_02018744 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E92D0 thumb_func_start MOD16_021E92F8 MOD16_021E92F8: ; 0x021E92F8 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 mov r2, #0 str r2, [sp] add r5, r0, #0 str r4, [sp, #4] add r6, r1, #0 ldr r0, [r5] mov r1, #6 add r3, r2, #0 bl MOD16_021D8CFC ldr r0, [r6, #4] bl MOD16_021D9D04 cmp r0, #1 bne _021E932E mov r0, #0x20 str r0, [sp] str r4, [sp, #4] mov r2, #0 ldr r0, [r5] mov r1, #0x18 add r3, r2, #0 bl MOD16_021D8CFC _021E932E: ldr r0, [r5] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #2 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x39 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r4, r0, #0 ldrh r0, [r2] mov r1, #2 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #2 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021E92F8 thumb_func_start MOD16_021E938C MOD16_021E938C: ; 0x021E938C push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r0] add r5, r1, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E9428 ; =0x00000827 mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x57 bl FUN_020091E0 str r0, [r5, #0x18] bl FUN_02009B04 ldr r0, [r5, #0x18] bl FUN_02009474 ldr r0, _021E942C ; =0x000007DC add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0xc mov r3, #0 bl FUN_02009298 str r0, [r5, #0x1c] bl FUN_02009D68 ldr r0, [r5, #0x1c] bl FUN_02009474 ldr r0, _021E9430 ; =0x00000825 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x55 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x20] ldr r0, _021E9434 ; =0x00000826 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x56 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x24] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021E9428: .word 0x00000827 _021E942C: .word 0x000007DC _021E9430: .word 0x00000825 _021E9434: .word 0x00000826 thumb_func_end MOD16_021E938C thumb_func_start MOD16_021E9438 MOD16_021E9438: ; 0x021E9438 push {r3, r4, r5, lr} add r5, r1, #0 ldr r4, [r0] ldr r0, [r5, #0x18] bl FUN_02009C0C ldr r0, [r5, #0x1c] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x18] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x1c] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x20] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x24] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E9438 thumb_func_start MOD16_021E947C MOD16_021E947C: ; 0x021E947C bx lr .align 2, 0 thumb_func_end MOD16_021E947C thumb_func_start MOD16_021E9480 MOD16_021E9480: ; 0x021E9480 bx lr .align 2, 0 thumb_func_end MOD16_021E9480 thumb_func_start MOD16_021E9484 MOD16_021E9484: ; 0x021E9484 push {r4, r5, r6, r7, lr} sub sp, #0x34 ldr r7, [r0] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r7, r0] add r5, r1, #0 str r0, [sp, #0xc] ldr r0, [r5, #0x1c] mov r1, #0 add r4, r2, #0 bl FUN_02009E54 mov r1, #0x10 str r1, [sp, #0x1c] mov r1, #0 str r1, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] str r1, [sp, #0x18] mov r1, #1 str r0, [sp, #0x14] str r1, [sp, #0x2c] str r4, [sp, #0x30] bl FUN_0201E28C str r0, [sp, #8] mov r6, #0 _021E94BC: mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r7, r0] mov r1, #8 mov r2, #2 bl MOD16_021DB388 add r4, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 add r3, r6, #0 ldr r0, [r7, r0] ldr r2, _021E9514 ; =0x00000266 add r1, r4, #0 add r3, #0x65 bl MOD16_021DB3C8 str r4, [sp, #0x10] add r0, sp, #0xc bl MOD16_021DB2BC str r0, [r5, #4] ldr r0, [r0] ldr r1, [sp, #8] bl FUN_02011A60 ldr r0, [r5, #4] mov r1, #0 ldr r0, [r0] bl FUN_020119D0 add r0, r4, #0 bl MOD16_021DB3BC add r6, r6, #1 add r5, r5, #4 cmp r6, #5 blt _021E94BC add sp, #0x34 pop {r4, r5, r6, r7, pc} nop _021E9514: .word 0x00000266 thumb_func_end MOD16_021E9484 thumb_func_start MOD16_021E9518 MOD16_021E9518: ; 0x021E9518 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021E951E: ldr r0, [r5, #4] bl MOD16_021DB338 add r4, r4, #1 add r5, r5, #4 cmp r4, #5 blt _021E951E pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E9518 thumb_func_start MOD16_021E9530 MOD16_021E9530: ; 0x021E9530 bx lr .align 2, 0 thumb_func_end MOD16_021E9530 thumb_func_start MOD16_021E9534 MOD16_021E9534: ; 0x021E9534 mov r1, #1 str r1, [r0, #0x28] ldr r0, [r0, #0x10] str r1, [r0, #0x14] bx lr .align 2, 0 thumb_func_end MOD16_021E9534 thumb_func_start MOD16_021E9540 MOD16_021E9540: ; 0x021E9540 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021E95D0 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E960C add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021E9634 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021E9664 str r0, [r5, #0x24] ldr r0, _021E9588 ; =MOD16_021E9668 str r0, [r5, #8] ldr r0, _021E958C ; =MOD16_021E96B8 str r0, [r5, #0xc] ldr r0, _021E9590 ; =MOD16_021E972C str r0, [r5, #0x10] ldr r0, _021E9594 ; =MOD16_021E974C str r0, [r5, #0x14] ldr r0, _021E9598 ; =MOD16_021E97DC str r0, [r5, #0x18] ldr r0, _021E959C ; =MOD16_021E9810 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021E9588: .word MOD16_021E9668 _021E958C: .word MOD16_021E96B8 _021E9590: .word MOD16_021E972C _021E9594: .word MOD16_021E974C _021E9598: .word MOD16_021E97DC _021E959C: .word MOD16_021E9810 thumb_func_end MOD16_021E9540 thumb_func_start MOD16_021E95A0 MOD16_021E95A0: ; 0x021E95A0 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021E9638 ldr r0, [r4, #4] bl MOD16_021E964C ldr r0, [r4, #0x20] bl MOD16_021E9660 pop {r4, pc} thumb_func_end MOD16_021E95A0 thumb_func_start MOD16_021E95B8 MOD16_021E95B8: ; 0x021E95B8 ldr r0, [r0] ldr r0, [r0, #0x24] bx lr .align 2, 0 thumb_func_end MOD16_021E95B8 thumb_func_start MOD16_021E95C0 MOD16_021E95C0: ; 0x021E95C0 ldr r0, [r0] ldr r0, [r0, #0x28] bx lr .align 2, 0 thumb_func_end MOD16_021E95C0 thumb_func_start MOD16_021E95C8 MOD16_021E95C8: ; 0x021E95C8 ldr r0, [r0] ldr r0, [r0, #0x30] bx lr .align 2, 0 thumb_func_end MOD16_021E95C8 thumb_func_start MOD16_021E95D0 MOD16_021E95D0: ; 0x021E95D0 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x34 bl FUN_02016998 add r4, r0, #0 bne _021E95E2 bl ErrorHandling _021E95E2: add r0, r4, #0 mov r1, #0 mov r2, #0x34 bl Call_FillMemWithValue add r0, r5, #0 bl MOD16_021D7B14 str r0, [r4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C ldr r0, [r0] str r0, [r4, #4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #8] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E95D0 thumb_func_start MOD16_021E960C MOD16_021E960C: ; 0x021E960C push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021E961E bl ErrorHandling _021E961E: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E960C thumb_func_start MOD16_021E9634 MOD16_021E9634: ; 0x021E9634 mov r0, #0 bx lr thumb_func_end MOD16_021E9634 thumb_func_start MOD16_021E9638 MOD16_021E9638: ; 0x021E9638 push {r4, lr} add r4, r0, #0 bne _021E9642 bl ErrorHandling _021E9642: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E9638 thumb_func_start MOD16_021E964C MOD16_021E964C: ; 0x021E964C push {r4, lr} add r4, r0, #0 bne _021E9656 bl ErrorHandling _021E9656: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E964C thumb_func_start MOD16_021E9660 MOD16_021E9660: ; 0x021E9660 bx lr .align 2, 0 thumb_func_end MOD16_021E9660 thumb_func_start MOD16_021E9664 MOD16_021E9664: ; 0x021E9664 mov r0, #0 bx lr thumb_func_end MOD16_021E9664 thumb_func_start MOD16_021E9668 MOD16_021E9668: ; 0x021E9668 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] add r4, r1, #0 mov r1, #0x1c bl FUN_02016998 add r6, r0, #0 add r2, r6, #0 mov r1, #0x1c mov r0, #0 _021E967E: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021E967E ldr r2, [r5, #4] add r0, r6, #0 add r1, r4, #0 bl MOD16_021E9894 ldr r2, [r5, #4] add r0, r6, #0 add r1, r4, #0 bl MOD16_021E9E6C add r0, r6, #0 add r1, r4, #0 bl MOD16_021EA08C mov r1, #0 mov r0, #4 _021E96A6: add r1, r1, #1 str r0, [r4, #0xc] add r4, r4, #4 cmp r1, #6 blt _021E96A6 str r6, [r5, #8] mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021E9668 thumb_func_start MOD16_021E96B8 MOD16_021E96B8: ; 0x021E96B8 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r0, #0xc] ldr r4, [r0, #8] cmp r1, #1 bne _021E96CC mov r0, #0 str r0, [r5, #0x24] mov r0, #1 pop {r3, r4, r5, pc} _021E96CC: ldr r1, [r0, #0x10] cmp r1, #1 bne _021E96D6 mov r0, #0 pop {r3, r4, r5, pc} _021E96D6: ldr r1, [r0] cmp r1, #0 bne _021E96F0 mov r3, #1 str r3, [r5, #0x24] ldr r1, [r5, #4] mov r2, #0 str r2, [r1, #0x30] str r3, [r5, #0x28] ldr r1, [r0] add r1, r1, #1 str r1, [r0] b _021E9728 _021E96F0: mov r0, #1 str r0, [r5, #0x28] add r0, r5, #0 bl MOD16_021E9E2C add r0, r4, #0 add r1, r5, #0 bl MOD16_021EA0EC add r0, r5, #0 bl MOD16_021E9930 ldr r0, [r5, #8] bl MOD16_021D9FB8 cmp r0, #1 bne _021E9720 ldr r0, [r5, #0x30] cmp r0, #0 bne _021E9720 add r0, r4, #0 add r1, r5, #0 bl MOD16_021E9F48 _021E9720: add r0, r4, #0 add r1, r5, #0 bl MOD16_021E9940 _021E9728: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E96B8 thumb_func_start MOD16_021E972C MOD16_021E972C: ; 0x021E972C push {r3, r4, r5, lr} add r4, r0, #0 ldr r5, [r4, #8] add r0, r5, #0 bl MOD16_021E99C0 add r0, r5, #0 bl MOD16_021EA074 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E972C thumb_func_start MOD16_021E974C MOD16_021E974C: ; 0x021E974C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 ldr r1, [r4] add r5, r0, #0 add r7, r2, #0 ldr r6, [r3, #8] ldr r0, [r4, #8] cmp r1, #4 bhi _021E97D8 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E976A: ; jump table .short _021E9774 - _021E976A - 2 ; case 0 .short _021E978E - _021E976A - 2 ; case 1 .short _021E979E - _021E976A - 2 ; case 2 .short _021E97C2 - _021E976A - 2 ; case 3 .short _021E97D4 - _021E976A - 2 ; case 4 _021E9774: ldr r0, [r4, #4] mov r1, #0x28 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x28 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E97D8 _021E978E: ldr r3, [r4, #4] add r1, r5, #0 bl MOD16_021E9B00 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E97D8 _021E979E: mov r1, #0 mov r0, #2 add r2, r1, #0 str r0, [sp] mov r0, #4 sub r2, #0x10 mov r3, #0x3f bl FUN_0200A208 add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021EA120 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E97D8 _021E97C2: mov r0, #2 bl FUN_0200A344 cmp r0, #0 beq _021E97D8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E97D8 _021E97D4: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021E97D8: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E974C thumb_func_start MOD16_021E97DC MOD16_021E97DC: ; 0x021E97DC push {r3, r4, r5, r6, r7, lr} sub sp, #8 str r0, [sp] ldr r0, [r3, #8] add r7, r2, #0 ldr r5, [r1, #8] str r0, [sp, #4] mov r6, #0 add r4, r7, #0 _021E97EE: ldr r0, [r5] ldr r1, [r4, #0xc] bl MOD16_021D7B98 add r6, r6, #1 add r4, r4, #4 add r5, r5, #4 cmp r6, #6 blt _021E97EE ldr r0, [sp] ldr r1, [sp, #4] add r2, r7, #0 bl MOD16_021EA13C mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E97DC thumb_func_start MOD16_021E9810 MOD16_021E9810: ; 0x021E9810 push {r3, r4, r5, lr} add r4, r1, #0 ldr r1, [r4] add r5, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021E9890 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021E982A: ; jump table .short _021E9834 - _021E982A - 2 ; case 0 .short _021E984E - _021E982A - 2 ; case 1 .short _021E9860 - _021E982A - 2 ; case 2 .short _021E987C - _021E982A - 2 ; case 3 .short _021E988C - _021E982A - 2 ; case 4 _021E9834: mov r0, #2 str r0, [sp] mov r0, #4 add r1, r0, #0 sub r1, #0x14 mov r2, #0 mov r3, #0x3f bl FUN_0200A208 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E9890 _021E984E: mov r0, #2 bl FUN_0200A344 cmp r0, #0 beq _021E9890 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E9890 _021E9860: add r1, r5, #0 bl MOD16_021E9B3C mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #0 bl MOD16_021D8B14 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E9890 _021E987C: bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021E9890 _021E988C: mov r0, #1 pop {r3, r4, r5, pc} _021E9890: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E9810 thumb_func_start MOD16_021E9894 MOD16_021E9894: ; 0x021E9894 push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #0x18 bl FUN_02016998 str r0, [r5, #4] mov r0, #0x30 str r0, [sp] mov r1, #8 ldr r0, [r5, #4] mov r2, #0x28 add r3, r1, #0 bl MOD16_021D7C98 mov r0, #0xf8 str r0, [sp] ldr r0, [r5, #4] mov r1, #8 add r0, #0x14 mov r2, #0x28 mov r3, #0xd0 bl MOD16_021D7C98 mov r0, #0x58 str r0, [sp] ldr r0, [r5, #4] mov r1, #8 add r0, r0, #4 mov r2, #0x28 mov r3, #0x30 bl MOD16_021D7C98 mov r0, #0x80 str r0, [sp] ldr r0, [r5, #4] mov r1, #8 add r0, #8 mov r2, #0x28 mov r3, #0x58 bl MOD16_021D7C98 mov r0, #0xa8 str r0, [sp] ldr r0, [r5, #4] mov r1, #8 add r0, #0xc mov r2, #0x28 mov r3, #0x80 bl MOD16_021D7C98 mov r0, #0xd0 str r0, [sp] ldr r0, [r5, #4] mov r1, #8 add r0, #0x10 mov r2, #0x28 mov r3, #0xa8 bl MOD16_021D7C98 str r4, [r5, #8] str r5, [r5, #0xc] str r6, [sp] add r3, r5, #0 ldr r0, [r5, #4] ldr r2, _021E992C ; =MOD16_021E99D8 mov r1, #6 add r3, #8 bl FUN_020220C4 str r0, [r5] add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _021E992C: .word MOD16_021E99D8 thumb_func_end MOD16_021E9894 thumb_func_start MOD16_021E9930 MOD16_021E9930: ; 0x021E9930 mov r2, #0 mov r1, #3 _021E9934: add r2, r2, #1 str r1, [r0, #0xc] add r0, r0, #4 cmp r2, #6 blt _021E9934 bx lr thumb_func_end MOD16_021E9930 thumb_func_start MOD16_021E9940 MOD16_021E9940: ; 0x021E9940 push {r4, lr} add r4, r1, #0 ldr r1, [r4, #0x2c] cmp r1, #0 bne _021E9950 ldr r0, [r0] bl FUN_02022144 _021E9950: ldr r0, [r4, #0x2c] cmp r0, #0 beq _021E9960 ldr r0, [r4, #0x20] cmp r0, #2 beq _021E9960 mov r0, #1 str r0, [r4, #0x20] _021E9960: ldr r0, [r4, #4] ldr r0, [r0, #8] cmp r0, #4 bhi _021E99BA add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E9974: ; jump table .short _021E997E - _021E9974 - 2 ; case 0 .short _021E998A - _021E9974 - 2 ; case 1 .short _021E9996 - _021E9974 - 2 ; case 2 .short _021E99A2 - _021E9974 - 2 ; case 3 .short _021E99AE - _021E9974 - 2 ; case 4 _021E997E: ldr r0, [r4, #0xc] cmp r0, #2 beq _021E99BE mov r0, #1 str r0, [r4, #0xc] pop {r4, pc} _021E998A: ldr r0, [r4, #0x10] cmp r0, #2 beq _021E99BE mov r0, #1 str r0, [r4, #0x10] pop {r4, pc} _021E9996: ldr r0, [r4, #0x14] cmp r0, #2 beq _021E99BE mov r0, #1 str r0, [r4, #0x14] pop {r4, pc} _021E99A2: ldr r0, [r4, #0x18] cmp r0, #2 beq _021E99BE mov r0, #1 str r0, [r4, #0x18] pop {r4, pc} _021E99AE: ldr r0, [r4, #0x1c] cmp r0, #2 beq _021E99BE mov r0, #1 str r0, [r4, #0x1c] pop {r4, pc} _021E99BA: bl ErrorHandling _021E99BE: pop {r4, pc} thumb_func_end MOD16_021E9940 thumb_func_start MOD16_021E99C0 MOD16_021E99C0: ; 0x021E99C0 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0202212C ldr r0, [r4, #4] bl FUN_02016A18 mov r0, #0 str r0, [r4, #4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021E99C0 thumb_func_start MOD16_021E99D8 MOD16_021E99D8: ; 0x021E99D8 push {r4, r5, r6, lr} ldr r6, [r2] ldr r5, [r2, #4] lsl r2, r0, #2 add r2, r6, r2 ldr r4, [r6, #4] cmp r1, #0 str r1, [r2, #0xc] beq _021E99F0 cmp r1, #2 beq _021E99F6 pop {r4, r5, r6, pc} _021E99F0: mov r0, #0 str r0, [r5, #0x10] pop {r4, r5, r6, pc} _021E99F6: cmp r0, #5 bhi _021E9AF6 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E9A06: ; jump table .short _021E9A20 - _021E9A06 - 2 ; case 0 .short _021E9A3E - _021E9A06 - 2 ; case 1 .short _021E9A5C - _021E9A06 - 2 ; case 2 .short _021E9A7A - _021E9A06 - 2 ; case 3 .short _021E9AB4 - _021E9A06 - 2 ; case 4 .short _021E9A12 - _021E9A06 - 2 ; case 5 _021E9A12: add r0, r4, #0 bl MOD16_021E9014 ldr r0, _021E9AF8 ; =0x000005DD bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9A20: ldr r2, [r4, #8] cmp r2, #0 beq _021E9AF6 add r0, r6, #0 mov r1, #0 bl MOD16_021E9E18 add r0, r5, #0 add r1, r6, #0 bl MOD16_021EA08C ldr r0, _021E9AFC ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9A3E: ldr r2, [r4, #8] cmp r2, #1 beq _021E9AF6 add r0, r6, #0 mov r1, #1 bl MOD16_021E9E18 add r0, r5, #0 add r1, r6, #0 bl MOD16_021EA08C ldr r0, _021E9AFC ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9A5C: ldr r2, [r4, #8] cmp r2, #2 beq _021E9AF6 add r0, r6, #0 mov r1, #2 bl MOD16_021E9E18 add r0, r5, #0 add r1, r6, #0 bl MOD16_021EA08C ldr r0, _021E9AFC ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9A7A: ldr r2, [r4, #8] cmp r2, #3 beq _021E9AF6 add r0, r6, #0 mov r1, #3 bl MOD16_021E9E18 cmp r0, #0 beq _021E9A9C add r0, r5, #0 add r1, r6, #0 bl MOD16_021EA08C ldr r0, _021E9AFC ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9A9C: ldr r0, [r5, #0x10] cmp r0, #0 bne _021E9AF6 ldr r0, [r4, #8] cmp r0, #2 beq _021E9AAE ldr r0, _021E9AF8 ; =0x000005DD bl FUN_020054C8 _021E9AAE: mov r0, #1 str r0, [r5, #0x10] pop {r4, r5, r6, pc} _021E9AB4: ldr r2, [r4, #8] cmp r2, #4 beq _021E9AF6 add r0, r6, #0 mov r1, #4 bl MOD16_021E9E18 cmp r0, #0 beq _021E9AD6 add r0, r5, #0 add r1, r6, #0 bl MOD16_021EA08C ldr r0, _021E9AFC ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9AD6: ldr r0, [r5, #0x10] cmp r0, #0 bne _021E9AF6 ldr r0, [r4, #4] bl MOD16_021D9F80 cmp r0, #1 bne _021E9AF2 ldr r0, [r4, #8] cmp r0, #2 beq _021E9AF2 ldr r0, _021E9AF8 ; =0x000005DD bl FUN_020054C8 _021E9AF2: mov r0, #0 str r0, [r5, #0x10] _021E9AF6: pop {r4, r5, r6, pc} .align 2, 0 _021E9AF8: .word 0x000005DD _021E9AFC: .word 0x0000068B thumb_func_end MOD16_021E99D8 thumb_func_start MOD16_021E9B00 MOD16_021E9B00: ; 0x021E9B00 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021E9B60 add r0, r5, #0 add r1, r4, #0 add r2, r7, #0 bl MOD16_021E9BFC add r0, r5, #0 add r1, r4, #0 add r2, r7, #0 bl MOD16_021E9CF0 add r0, r5, #0 add r1, r4, #0 add r2, r7, #0 bl MOD16_021E9DD8 add r0, r5, #0 add r1, r6, #0 bl MOD16_021EA1D8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021E9B00 thumb_func_start MOD16_021E9B3C MOD16_021E9B3C: ; 0x021E9B3C push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021E9DDC add r0, r5, #0 bl MOD16_021E9DC0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021E9CAC ldr r0, [r4] mov r1, #5 ldr r0, [r0] bl FUN_02018744 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E9B3C thumb_func_start MOD16_021E9B60 MOD16_021E9B60: ; 0x021E9B60 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r6, r1, #0 add r5, r0, #0 ldr r0, [r6, #4] add r4, r2, #0 ldr r0, [r0, #0x30] cmp r0, #0 beq _021E9B9E mov r3, #0 str r3, [sp] str r4, [sp, #4] ldr r0, [r5] mov r1, #6 mov r2, #4 bl MOD16_021D8CFC ldr r0, [r6, #8] bl MOD16_021D9D04 cmp r0, #1 bne _021E9B9E mov r0, #0x20 str r0, [sp] str r4, [sp, #4] ldr r0, [r5] mov r1, #0x18 mov r2, #4 mov r3, #0 bl MOD16_021D8CFC _021E9B9E: ldr r0, [r5] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x22 mov r3, #5 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x3b mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r4, r0, #0 ldrh r0, [r2] mov r1, #5 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #5 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021E9B60 thumb_func_start MOD16_021E9BFC MOD16_021E9BFC: ; 0x021E9BFC push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021E9C9C ; =0x00000894 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x60 mov r3, #1 bl FUN_020091E0 str r0, [r5, #0x18] bl FUN_02009B04 ldr r0, [r5, #0x18] bl FUN_02009474 ldr r0, _021E9CA0 ; =0x0000083F add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #6 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0xb mov r3, #0 bl FUN_02009298 str r0, [r5, #0x1c] bl FUN_02009D68 ldr r0, [r5, #0x1c] bl FUN_02009474 ldr r0, _021E9CA4 ; =0x00000892 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5e mov r3, #1 bl FUN_02009358 str r0, [r5, #0x20] ldr r0, _021E9CA8 ; =0x00000893 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5f mov r3, #1 bl FUN_02009358 str r0, [r5, #0x24] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021E9C9C: .word 0x00000894 _021E9CA0: .word 0x0000083F _021E9CA4: .word 0x00000892 _021E9CA8: .word 0x00000893 thumb_func_end MOD16_021E9BFC thumb_func_start MOD16_021E9CAC MOD16_021E9CAC: ; 0x021E9CAC push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x18] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0x1c] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x18] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x1c] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x20] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x24] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021E9CAC thumb_func_start MOD16_021E9CF0 MOD16_021E9CF0: ; 0x021E9CF0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x70 ldr r4, [r1] ldr r3, _021E9DBC ; =0x00000893 add r5, r0, #0 mov r0, #0 add r6, r2, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #5 str r2, [sp, #0x10] lsl r0, r0, #6 ldr r1, [r4, r0] str r1, [sp, #0x14] add r1, r0, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r0, #0 add r1, #8 ldr r1, [r4, r1] add r0, #0xc str r1, [sp, #0x1c] ldr r0, [r4, r0] add r1, r3, #1 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r2, r3, #0 add r0, sp, #0x4c sub r2, #0x54 sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r7, #7 str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x20 str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] mov r0, #0x36 str r6, [sp, #0x48] lsl r0, r0, #0xe mov r6, #0x39 str r0, [sp, #0x38] mov r4, #0 lsl r7, r7, #0xe lsl r6, r6, #0xe _021E9D60: cmp r4, #5 bhi _021E9DA2 add r0, r4, r4 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E9D70: ; jump table .short _021E9D80 - _021E9D70 - 2 ; case 0 .short _021E9D84 - _021E9D70 - 2 ; case 1 .short _021E9D8C - _021E9D70 - 2 ; case 2 .short _021E9D94 - _021E9D70 - 2 ; case 3 .short _021E9D9C - _021E9D70 - 2 ; case 4 .short _021E9D7C - _021E9D70 - 2 ; case 5 _021E9D7C: str r6, [sp, #0x34] b _021E9DA2 _021E9D80: str r7, [sp, #0x34] b _021E9DA2 _021E9D84: mov r0, #0x11 lsl r0, r0, #0xe str r0, [sp, #0x34] b _021E9DA2 _021E9D8C: mov r0, #0x1b lsl r0, r0, #0xe str r0, [sp, #0x34] b _021E9DA2 _021E9D94: mov r0, #0x25 lsl r0, r0, #0xe str r0, [sp, #0x34] b _021E9DA2 _021E9D9C: mov r0, #0x2f lsl r0, r0, #0xe str r0, [sp, #0x34] _021E9DA2: add r0, sp, #0x2c bl FUN_0201FF84 add r1, r4, #0 stmia r5!, {r0} bl FUN_02020130 add r4, r4, #1 cmp r4, #6 blt _021E9D60 add sp, #0x70 pop {r3, r4, r5, r6, r7, pc} nop _021E9DBC: .word 0x00000893 thumb_func_end MOD16_021E9CF0 thumb_func_start MOD16_021E9DC0 MOD16_021E9DC0: ; 0x021E9DC0 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021E9DC6: ldr r0, [r5] bl FUN_0201FFC8 add r4, r4, #1 add r5, r5, #4 cmp r4, #6 blt _021E9DC6 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021E9DC0 thumb_func_start MOD16_021E9DD8 MOD16_021E9DD8: ; 0x021E9DD8 bx lr .align 2, 0 thumb_func_end MOD16_021E9DD8 thumb_func_start MOD16_021E9DDC MOD16_021E9DDC: ; 0x021E9DDC bx lr .align 2, 0 thumb_func_end MOD16_021E9DDC thumb_func_start MOD16_021E9DE0 MOD16_021E9DE0: ; 0x021E9DE0 push {r4, r5, r6, lr} add r5, r0, #0 mov r4, #0 mov r6, #1 _021E9DE8: ldr r0, [r5, #4] add r1, r6, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #5 blt _021E9DE8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E9DE0 thumb_func_start MOD16_021E9DFC MOD16_021E9DFC: ; 0x021E9DFC push {r4, r5, r6, lr} mov r4, #0 add r5, r0, #0 add r6, r4, #0 _021E9E04: ldr r0, [r5, #4] add r1, r6, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #5 blt _021E9E04 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E9DFC thumb_func_start MOD16_021E9E18 MOD16_021E9E18: ; 0x021E9E18 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #4] bl MOD16_021E90D8 cmp r0, #1 bne _021E9E2A mov r1, #0 str r1, [r4, #0x28] _021E9E2A: pop {r4, pc} thumb_func_end MOD16_021E9E18 thumb_func_start MOD16_021E9E2C MOD16_021E9E2C: ; 0x021E9E2C ldr r3, _021E9E30 ; =MOD16_021E9E34 bx r3 .align 2, 0 _021E9E30: .word MOD16_021E9E34 thumb_func_end MOD16_021E9E2C thumb_func_start MOD16_021E9E34 MOD16_021E9E34: ; 0x021E9E34 push {r3, r4, r5, lr} add r5, r0, #0 ldr r4, [r5, #4] bl MOD16_021E9E64 ldr r0, _021E9E5C ; =0x021C48B8 ldr r1, [r0, #0x48] mov r0, #2 tst r0, r1 beq _021E9E58 add r0, r4, #0 bl MOD16_021E9014 mov r0, #1 str r0, [r5, #0x2c] ldr r0, _021E9E60 ; =0x000005DD bl FUN_020054C8 _021E9E58: pop {r3, r4, r5, pc} nop _021E9E5C: .word 0x021C48B8 _021E9E60: .word 0x000005DD thumb_func_end MOD16_021E9E34 thumb_func_start MOD16_021E9E64 MOD16_021E9E64: ; 0x021E9E64 mov r1, #0 str r1, [r0, #0x2c] bx lr .align 2, 0 thumb_func_end MOD16_021E9E64 thumb_func_start MOD16_021E9E6C MOD16_021E9E6C: ; 0x021E9E6C push {r4, r5, r6, lr} sub sp, #0x10 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #0xa8 bl FUN_02016998 str r0, [r5, #0x18] mov r0, #0x10 str r0, [sp] mov r0, #0 str r0, [sp, #4] str r0, [sp, #8] str r0, [sp, #0xc] mov r2, #0x18 ldr r0, [r5, #0x18] mov r1, #0x1c add r3, r2, #0 bl MOD16_021DB590 mov r0, #0x10 str r0, [sp] mov r0, #0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #1 str r0, [sp, #0xc] ldr r0, [r5, #0x18] mov r2, #0x18 add r0, #0x1c mov r1, #0x44 add r3, r2, #0 bl MOD16_021DB590 mov r0, #0x10 str r0, [sp] mov r0, #0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #2 str r0, [sp, #0xc] ldr r0, [r5, #0x18] mov r2, #0x18 add r0, #0x38 mov r1, #0x6c add r3, r2, #0 bl MOD16_021DB590 mov r0, #0x10 str r0, [sp] mov r0, #0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #3 str r0, [sp, #0xc] ldr r0, [r5, #0x18] mov r2, #0x18 add r0, #0x54 mov r1, #0x94 add r3, r2, #0 bl MOD16_021DB590 ldr r0, [r4, #8] bl MOD16_021D9F80 cmp r0, #1 bne _021E9EFA mov r1, #0 b _021E9EFC _021E9EFA: mov r1, #2 _021E9EFC: mov r0, #0x10 str r0, [sp] str r1, [sp, #4] str r1, [sp, #8] mov r0, #4 str r0, [sp, #0xc] ldr r0, [r5, #0x18] mov r2, #0x18 add r0, #0x70 mov r1, #0xbc add r3, r2, #0 bl MOD16_021DB590 mov r0, #0x10 str r0, [sp] mov r0, #0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #5 str r0, [sp, #0xc] ldr r0, [r5, #0x18] mov r2, #0x18 add r0, #0x8c mov r1, #0xe4 add r3, r2, #0 bl MOD16_021DB590 add r0, r6, #0 bl MOD16_021DB490 str r0, [r5, #0x14] ldr r1, [r5, #0x18] mov r2, #6 mov r3, #1 bl MOD16_021DB4B0 add sp, #0x10 pop {r4, r5, r6, pc} thumb_func_end MOD16_021E9E6C thumb_func_start MOD16_021E9F48 MOD16_021E9F48: ; 0x021E9F48 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4, #0x2c] ldr r5, [r4, #4] cmp r0, #0 beq _021E9F58 b _021EA066 _021E9F58: ldr r0, _021EA068 ; =0x021C48B8 ldr r1, [r0, #0x48] mov r0, #0x10 tst r0, r1 beq _021E9F6C ldr r0, [r6, #0x14] mov r1, #0 mov r2, #1 bl MOD16_021DB4CC _021E9F6C: ldr r0, _021EA068 ; =0x021C48B8 ldr r1, [r0, #0x48] mov r0, #0x20 tst r0, r1 beq _021E9F80 mov r1, #0 ldr r0, [r6, #0x14] sub r2, r1, #1 bl MOD16_021DB4CC _021E9F80: ldr r0, _021EA068 ; =0x021C48B8 ldr r1, [r0, #0x48] mov r0, #1 tst r0, r1 beq _021EA066 ldr r0, [r6, #0x14] bl MOD16_021DB528 cmp r0, #5 bhi _021EA066 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021E9FA0: ; jump table .short _021E9FAC - _021E9FA0 - 2 ; case 0 .short _021E9FC6 - _021E9FA0 - 2 ; case 1 .short _021E9FE0 - _021E9FA0 - 2 ; case 2 .short _021E9FFA - _021E9FA0 - 2 ; case 3 .short _021EA026 - _021E9FA0 - 2 ; case 4 .short _021EA052 - _021E9FA0 - 2 ; case 5 _021E9FAC: ldr r2, [r5, #8] cmp r2, #0 beq _021EA066 add r0, r4, #0 mov r1, #0 bl MOD16_021E9E18 mov r0, #2 str r0, [r4, #0xc] ldr r0, _021EA06C ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9FC6: ldr r2, [r5, #8] cmp r2, #1 beq _021EA066 add r0, r4, #0 mov r1, #1 bl MOD16_021E9E18 mov r0, #2 str r0, [r4, #0x10] ldr r0, _021EA06C ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9FE0: ldr r2, [r5, #8] cmp r2, #2 beq _021EA066 add r0, r4, #0 mov r1, #2 bl MOD16_021E9E18 mov r0, #2 str r0, [r4, #0x14] ldr r0, _021EA06C ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021E9FFA: ldr r2, [r5, #8] cmp r2, #3 beq _021EA066 add r0, r4, #0 mov r1, #3 bl MOD16_021E9E18 cmp r0, #0 beq _021EA018 mov r0, #2 str r0, [r4, #0x18] ldr r0, _021EA06C ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021EA018: ldr r0, [r5, #8] cmp r0, #2 beq _021EA066 ldr r0, _021EA070 ; =0x000005DD bl FUN_020054C8 pop {r4, r5, r6, pc} _021EA026: ldr r2, [r5, #8] cmp r2, #4 beq _021EA066 add r0, r4, #0 mov r1, #4 bl MOD16_021E9E18 cmp r0, #0 beq _021EA044 mov r0, #2 str r0, [r4, #0x1c] ldr r0, _021EA06C ; =0x0000068B bl FUN_020054C8 pop {r4, r5, r6, pc} _021EA044: ldr r0, [r5, #8] cmp r0, #2 beq _021EA066 ldr r0, _021EA070 ; =0x000005DD bl FUN_020054C8 pop {r4, r5, r6, pc} _021EA052: add r0, r5, #0 bl MOD16_021E9014 mov r0, #1 str r0, [r4, #0x2c] mov r0, #2 str r0, [r4, #0x20] ldr r0, _021EA070 ; =0x000005DD bl FUN_020054C8 _021EA066: pop {r4, r5, r6, pc} .align 2, 0 _021EA068: .word 0x021C48B8 _021EA06C: .word 0x0000068B _021EA070: .word 0x000005DD thumb_func_end MOD16_021E9F48 thumb_func_start MOD16_021EA074 MOD16_021EA074: ; 0x021EA074 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x18] bl FUN_02016A18 ldr r0, [r4, #0x14] bl MOD16_021DB4A8 mov r0, #0 str r0, [r4, #0x14] str r0, [r4, #0x18] pop {r4, pc} thumb_func_end MOD16_021EA074 thumb_func_start MOD16_021EA08C MOD16_021EA08C: ; 0x021EA08C push {r3, lr} ldr r3, [r1, #4] mov r2, #0 str r2, [r1, #0x30] ldr r1, [r3, #8] cmp r1, #4 bhi _021EA0E8 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021EA0A6: ; jump table .short _021EA0B0 - _021EA0A6 - 2 ; case 0 .short _021EA0BA - _021EA0A6 - 2 ; case 1 .short _021EA0C6 - _021EA0A6 - 2 ; case 2 .short _021EA0D2 - _021EA0A6 - 2 ; case 3 .short _021EA0DE - _021EA0A6 - 2 ; case 4 _021EA0B0: ldr r0, [r0, #0x14] mov r1, #4 bl MOD16_021DB4CC pop {r3, pc} _021EA0BA: ldr r0, [r0, #0x14] mov r1, #4 mov r2, #1 bl MOD16_021DB4CC pop {r3, pc} _021EA0C6: ldr r0, [r0, #0x14] mov r1, #4 mov r2, #2 bl MOD16_021DB4CC pop {r3, pc} _021EA0D2: ldr r0, [r0, #0x14] mov r1, #4 mov r2, #3 bl MOD16_021DB4CC pop {r3, pc} _021EA0DE: mov r1, #4 ldr r0, [r0, #0x14] add r2, r1, #0 bl MOD16_021DB4CC _021EA0E8: pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021EA08C thumb_func_start MOD16_021EA0EC MOD16_021EA0EC: ; 0x021EA0EC ldr r0, [r1, #4] ldr r0, [r0, #8] cmp r0, #0 beq _021EA118 ldr r0, [r1, #0x30] cmp r0, #0 bne _021EA10A ldr r0, _021EA11C ; =0x021C48B8 ldr r2, [r0, #0x48] mov r0, #0x80 tst r0, r2 beq _021EA118 mov r0, #1 str r0, [r1, #0x30] bx lr _021EA10A: ldr r0, _021EA11C ; =0x021C48B8 ldr r2, [r0, #0x48] mov r0, #0x40 tst r0, r2 beq _021EA118 mov r0, #0 str r0, [r1, #0x30] _021EA118: bx lr nop _021EA11C: .word 0x021C48B8 thumb_func_end MOD16_021EA0EC thumb_func_start MOD16_021EA120 MOD16_021EA120: ; 0x021EA120 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 ldr r0, [r4, #0x14] ldr r1, [r5] add r6, r2, #0 bl MOD16_021D8B48 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EA13C pop {r4, r5, r6, pc} thumb_func_end MOD16_021EA120 thumb_func_start MOD16_021EA13C MOD16_021EA13C: ; 0x021EA13C push {r4, r5, r6, lr} add r6, r2, #0 add r5, r0, #0 ldr r0, [r6, #8] add r4, r1, #0 bl MOD16_021D9FB8 cmp r0, #1 bne _021EA172 add r0, r5, #0 mov r1, #1 bl MOD16_021EA18C ldr r1, [r6, #0x30] cmp r1, #0 bne _021EA17A cmp r0, #0 beq _021EA168 ldr r0, [r4, #0x14] ldr r1, [r5] bl MOD16_021D8B48 _021EA168: add r0, r5, #0 add r1, r4, #0 bl MOD16_021EA17C pop {r4, r5, r6, pc} _021EA172: add r0, r5, #0 mov r1, #0 bl MOD16_021EA18C _021EA17A: pop {r4, r5, r6, pc} thumb_func_end MOD16_021EA13C thumb_func_start MOD16_021EA17C MOD16_021EA17C: ; 0x021EA17C ldr r3, _021EA188 ; =MOD16_021D8AD4 add r2, r0, #0 ldr r0, [r1, #0x14] ldr r1, [r2] bx r3 nop _021EA188: .word MOD16_021D8AD4 thumb_func_end MOD16_021EA17C thumb_func_start MOD16_021EA18C MOD16_021EA18C: ; 0x021EA18C push {r3, r4, r5, lr} ldr r4, [r0] mov r0, #0x79 lsl r0, r0, #2 add r0, r4, r0 add r5, r1, #0 bl MOD16_021D8B30 cmp r5, r0 beq _021EA1B0 mov r0, #0x79 lsl r0, r0, #2 add r0, r4, r0 add r1, r5, #0 bl MOD16_021D8B14 mov r0, #1 pop {r3, r4, r5, pc} _021EA1B0: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EA18C thumb_func_start MOD16_021EA1B4 MOD16_021EA1B4: ; 0x021EA1B4 push {r3, r4, r5, lr} add r5, r0, #0 lsl r0, r2, #2 add r0, r5, r0 ldr r0, [r0, #4] add r4, r1, #0 ldr r0, [r0] mov r1, #0 bl FUN_020119D0 lsl r0, r4, #2 add r0, r5, r0 ldr r0, [r0, #4] mov r1, #1 ldr r0, [r0] bl FUN_020119D0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EA1B4 thumb_func_start MOD16_021EA1D8 MOD16_021EA1D8: ; 0x021EA1D8 push {r4, lr} add r4, r0, #0 ldr r0, [r1, #8] bl MOD16_021D9F80 cmp r0, #0 bne _021EA1EE ldr r0, [r4, #0x10] mov r1, #0 bl FUN_020200A0 _021EA1EE: pop {r4, pc} thumb_func_end MOD16_021EA1D8 thumb_func_start MOD16_021EA1F0 MOD16_021EA1F0: ; 0x021EA1F0 push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 add r0, r7, #0 bl MOD16_021EA274 add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021EA2BC str r4, [r5] str r0, [r5, #4] mov r0, #0 str r0, [r5, #0x20] bl MOD16_021EA310 str r0, [r5, #0x24] ldr r0, _021EA230 ; =MOD16_021EA314 str r0, [r5, #8] ldr r0, _021EA234 ; =MOD16_021EA35C str r0, [r5, #0xc] ldr r0, _021EA238 ; =MOD16_021EA388 str r0, [r5, #0x10] ldr r0, _021EA23C ; =MOD16_021EA39C str r0, [r5, #0x14] ldr r0, _021EA240 ; =MOD16_021EA45C str r0, [r5, #0x18] ldr r0, _021EA244 ; =MOD16_021EA47C str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EA230: .word MOD16_021EA314 _021EA234: .word MOD16_021EA35C _021EA238: .word MOD16_021EA388 _021EA23C: .word MOD16_021EA39C _021EA240: .word MOD16_021EA45C _021EA244: .word MOD16_021EA47C thumb_func_end MOD16_021EA1F0 thumb_func_start MOD16_021EA248 MOD16_021EA248: ; 0x021EA248 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021EA2E8 ldr r0, [r4, #4] bl MOD16_021EA2FC pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EA248 thumb_func_start MOD16_021EA25C MOD16_021EA25C: ; 0x021EA25C ldr r0, [r0, #4] str r1, [r0, #4] str r2, [r0, #8] bx lr thumb_func_end MOD16_021EA25C thumb_func_start MOD16_021EA264 MOD16_021EA264: ; 0x021EA264 ldr r0, [r0, #4] str r1, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD16_021EA264 thumb_func_start MOD16_021EA26C MOD16_021EA26C: ; 0x021EA26C ldr r0, [r0, #4] str r1, [r0, #0x10] bx lr .align 2, 0 thumb_func_end MOD16_021EA26C thumb_func_start MOD16_021EA274 MOD16_021EA274: ; 0x021EA274 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x10 bl FUN_02016998 add r4, r0, #0 bne _021EA286 bl ErrorHandling _021EA286: add r2, r4, #0 mov r1, #0x10 mov r0, #0 _021EA28C: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021EA28C add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #8] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B7C str r0, [r4, #0xc] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EA274 thumb_func_start MOD16_021EA2BC MOD16_021EA2BC: ; 0x021EA2BC push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x14 bl FUN_02016998 add r4, r0, #0 bne _021EA2CE bl ErrorHandling _021EA2CE: add r2, r4, #0 mov r1, #0x14 mov r0, #0 _021EA2D4: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021EA2D4 add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EA2BC thumb_func_start MOD16_021EA2E8 MOD16_021EA2E8: ; 0x021EA2E8 push {r4, lr} add r4, r0, #0 bne _021EA2F2 bl ErrorHandling _021EA2F2: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EA2E8 thumb_func_start MOD16_021EA2FC MOD16_021EA2FC: ; 0x021EA2FC push {r4, lr} add r4, r0, #0 bne _021EA306 bl ErrorHandling _021EA306: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EA2FC thumb_func_start MOD16_021EA310 MOD16_021EA310: ; 0x021EA310 mov r0, #0 bx lr thumb_func_end MOD16_021EA310 thumb_func_start MOD16_021EA314 MOD16_021EA314: ; 0x021EA314 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r5, r0, #0 ldr r0, [r6, #4] bl MOD16_021D9DE8 add r7, r0, #0 ldr r0, [r5, #4] mov r1, #0x18 bl FUN_02016998 add r4, r0, #0 bne _021EA332 bl ErrorHandling _021EA332: add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021EA338: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021EA338 str r4, [r5, #8] add r0, r7, #0 bl FUN_02004E98 str r0, [r4] bl FUN_02004E8C str r0, [r4, #8] add r0, r4, #0 add r1, r6, #0 bl MOD16_021EAA8C mov r0, #1 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EA314 thumb_func_start MOD16_021EA35C MOD16_021EA35C: ; 0x021EA35C push {r3, r4, r5, lr} ldr r2, [r0, #0xc] add r5, r1, #0 ldr r4, [r0, #8] cmp r2, #1 bne _021EA36C mov r0, #1 pop {r3, r4, r5, pc} _021EA36C: ldr r0, [r0, #0x10] cmp r0, #1 bne _021EA376 mov r0, #0 pop {r3, r4, r5, pc} _021EA376: add r0, r4, #0 bl MOD16_021EAA8C add r0, r4, #0 add r1, r5, #0 bl MOD16_021EAE5C mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EA35C thumb_func_start MOD16_021EA388 MOD16_021EA388: ; 0x021EA388 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EA388 thumb_func_start MOD16_021EA39C MOD16_021EA39C: ; 0x021EA39C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r3, [r3, #8] ldr r6, [r4, #8] cmp r0, #3 bhi _021EA458 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EA3BA: ; jump table .short _021EA3C2 - _021EA3BA - 2 ; case 0 .short _021EA3E0 - _021EA3BA - 2 ; case 1 .short _021EA41C - _021EA3BA - 2 ; case 2 .short _021EA454 - _021EA3BA - 2 ; case 3 _021EA3C2: mov r1, #0x33 ldr r0, [r4, #4] lsl r1, r1, #4 bl FUN_02016998 mov r2, #0x33 str r0, [r4, #8] mov r1, #0 lsl r2, r2, #4 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EA458 _021EA3E0: ldr r0, [r4, #4] add r1, r5, #0 str r0, [sp] add r0, r6, #0 bl MOD16_021EA784 ldr r0, [r5, #0xc] cmp r0, #0 bne _021EA400 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021EA5BC b _021EA40C _021EA400: add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021EA680 _021EA40C: mov r0, #0 mov r1, #3 bl FUN_020053CC ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EA458 _021EA41C: ldr r0, [r5, #0xc] cmp r0, #0 bne _021EA42E add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021EA634 b _021EA438 _021EA42E: add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021EA70C _021EA438: cmp r0, #1 bne _021EA458 bl FUN_02005404 cmp r0, #0 bne _021EA458 mov r0, #1 add r1, r0, #0 bl FUN_020047C8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EA458 _021EA454: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021EA458: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EA39C thumb_func_start MOD16_021EA45C MOD16_021EA45C: ; 0x021EA45C push {r3, r4, r5, lr} ldr r4, [r3, #8] ldr r5, [r1, #8] add r2, r0, #0 add r1, r2, #0 add r0, r5, #0 add r2, r4, #0 bl MOD16_021EAC1C add r0, r5, #0 add r1, r4, #0 bl MOD16_021EAD04 mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EA45C thumb_func_start MOD16_021EA47C MOD16_021EA47C: ; 0x021EA47C push {r4, lr} add r4, r1, #0 ldr r1, [r4] add r3, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021EA518 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021EA496: ; jump table .short _021EA4A0 - _021EA496 - 2 ; case 0 .short _021EA4D2 - _021EA496 - 2 ; case 1 .short _021EA4F6 - _021EA496 - 2 ; case 2 .short _021EA504 - _021EA496 - 2 ; case 3 .short _021EA514 - _021EA496 - 2 ; case 4 _021EA4A0: ldr r1, [r3, #0xc] cmp r1, #0 bne _021EA4B0 add r1, r3, #0 mov r3, #0 bl MOD16_021EA5BC b _021EA4B8 _021EA4B0: add r1, r3, #0 mov r3, #0 bl MOD16_021EA680 _021EA4B8: mov r0, #1 mov r1, #0 bl FUN_020047C8 mov r0, #0x7f mov r1, #3 mov r2, #0 bl FUN_0200538C ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EA518 _021EA4D2: ldr r1, [r3, #0xc] cmp r1, #0 bne _021EA4E2 add r1, r3, #0 mov r3, #0 bl MOD16_021EA634 b _021EA4EA _021EA4E2: add r1, r3, #0 mov r3, #0 bl MOD16_021EA70C _021EA4EA: cmp r0, #0 beq _021EA518 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EA518 _021EA4F6: add r1, r3, #0 bl MOD16_021EA7D0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EA518 _021EA504: bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EA518 _021EA514: mov r0, #1 pop {r4, pc} _021EA518: mov r0, #0 pop {r4, pc} thumb_func_end MOD16_021EA47C thumb_func_start MOD16_021EA51C MOD16_021EA51C: ; 0x021EA51C push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 bl MOD16_021D8700 add r6, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r2, r0, #0 mov r0, #0x30 str r0, [sp] mov r0, #0x40 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r4, #4] mov r3, #2 bl MOD16_021D7FB4 add r0, r6, #0 mov r1, #6 mov r2, #0 bl FUN_02007558 add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EA51C thumb_func_start MOD16_021EA554 MOD16_021EA554: ; 0x021EA554 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 mov r0, #0 str r0, [sp] mov r6, #1 _021EA55E: mov r4, #0 add r5, r7, #0 _021EA562: ldr r0, [r5, #0x20] add r1, r6, #0 bl FUN_02020398 add r4, r4, #1 add r5, #8 cmp r4, #9 blt _021EA562 ldr r0, [r7, #0x68] mov r1, #1 bl FUN_02020398 ldr r0, [sp] add r7, #0x54 add r0, r0, #1 str r0, [sp] cmp r0, #9 blt _021EA55E pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EA554 thumb_func_start MOD16_021EA588 MOD16_021EA588: ; 0x021EA588 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 mov r0, #0 str r0, [sp] add r6, r0, #0 _021EA592: mov r4, #0 add r5, r7, #0 _021EA596: ldr r0, [r5, #0x20] add r1, r6, #0 bl FUN_02020398 add r4, r4, #1 add r5, #8 cmp r4, #9 blt _021EA596 ldr r0, [r7, #0x68] mov r1, #0 bl FUN_02020398 ldr r0, [sp] add r7, #0x54 add r0, r0, #1 str r0, [sp] cmp r0, #9 blt _021EA592 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EA588 thumb_func_start MOD16_021EA5BC MOD16_021EA5BC: ; 0x021EA5BC push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021EA554 ldr r0, [r4, #8] bl MOD16_021E8C68 cmp r0, #0 beq _021EA622 cmp r6, #0 beq _021EA5FE mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #3 add r2, r1, #0 sub r2, #0x13 bl MOD16_021D8988 b _021EA622 _021EA5FE: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #3 add r3, r1, #0 sub r3, #0x13 bl MOD16_021D8988 _021EA622: mov r1, #0x5b ldr r0, [r5] lsl r1, r1, #2 add r1, r0, r1 bl MOD16_021D8A8C add sp, #0x14 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EA5BC thumb_func_start MOD16_021EA634 MOD16_021EA634: ; 0x021EA634 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #8] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021EA654 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 b _021EA65E _021EA654: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C _021EA65E: cmp r0, #0 beq _021EA670 cmp r4, #0 beq _021EA66C add r0, r6, #0 bl MOD16_021EA588 _021EA66C: mov r0, #1 pop {r4, r5, r6, pc} _021EA670: mov r1, #0x5b ldr r0, [r5] lsl r1, r1, #2 add r1, r0, r1 bl MOD16_021D8A8C mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EA634 thumb_func_start MOD16_021EA680 MOD16_021EA680: ; 0x021EA680 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r0, #0 add r5, r1, #0 add r6, r2, #0 add r4, r3, #0 bl MOD16_021EA554 cmp r4, #0 bne _021EA6A8 ldr r0, [r5, #8] mov r1, #0x30 str r0, [sp] ldr r0, [r5, #0x10] mov r3, #0x40 str r0, [sp, #4] ldr r2, [r5, #4] add r0, r7, #0 bl MOD16_021D8BD8 _021EA6A8: ldr r0, [r6, #8] bl MOD16_021E8C68 cmp r0, #0 beq _021EA706 cmp r4, #0 beq _021EA6E0 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r2, #0x2f str r2, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 ldr r1, [r5, #0x10] sub r2, #0x3f lsl r1, r1, #0x18 lsr r1, r1, #0x18 bl MOD16_021D8988 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021EA6E0: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r3, #0x2f str r3, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 ldr r1, [r5, #0x10] sub r3, #0x3f lsl r1, r1, #0x18 lsr r1, r1, #0x18 bl MOD16_021D8988 _021EA706: add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EA680 thumb_func_start MOD16_021EA70C MOD16_021EA70C: ; 0x021EA70C push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bne _021EA72C bl MOD16_021D8BF4 str r0, [sp] ldr r0, [r4] ldr r1, [r5] ldr r2, [r5, #4] bl MOD16_021D86F4 b _021EA730 _021EA72C: mov r0, #1 str r0, [sp] _021EA730: ldr r0, [r6, #8] bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r4] beq _021EA74A mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 str r0, [sp, #4] b _021EA756 _021EA74A: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C str r0, [sp, #4] _021EA756: mov r1, #0 add r2, sp, #0 _021EA75A: ldr r0, [r2] cmp r0, #0 beq _021EA768 add r1, r1, #1 add r2, r2, #4 cmp r1, #2 blt _021EA75A _021EA768: cmp r1, #2 bne _021EA77C cmp r7, #1 bne _021EA776 add r0, r5, #0 bl MOD16_021EA588 _021EA776: add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021EA77C: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EA70C thumb_func_start MOD16_021EA784 MOD16_021EA784: ; 0x021EA784 push {r3, r4, r5, r6, r7, lr} ldr r6, [sp, #0x18] add r7, r2, #0 add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 add r1, r7, #0 add r2, r6, #0 bl MOD16_021EA7F0 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EA89C add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EA9C0 add r0, r5, #0 add r1, r4, #0 add r2, r7, #0 add r3, r6, #0 bl MOD16_021EAA84 add r0, r4, #0 add r1, r7, #0 bl MOD16_021EA51C add r0, r5, #0 add r1, r4, #0 bl MOD16_021EACB0 add r0, r5, #0 bl MOD16_021EACE8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EA784 thumb_func_start MOD16_021EA7D0 MOD16_021EA7D0: ; 0x021EA7D0 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021EAA88 add r0, r5, #0 bl MOD16_021EAA5C add r0, r5, #0 add r1, r4, #0 bl MOD16_021EA964 add r0, r4, #0 bl MOD16_021EA858 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EA7D0 thumb_func_start MOD16_021EA7F0 MOD16_021EA7F0: ; 0x021EA7F0 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] add r5, r2, #0 str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #3 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x46 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EA7F0 thumb_func_start MOD16_021EA858 MOD16_021EA858: ; 0x021EA858 push {r4, lr} sub sp, #8 add r4, r0, #0 ldr r0, [r4] mov r2, #0 ldr r0, [r0] mov r1, #1 add r3, r2, #0 bl FUN_0201AEE4 mov r1, #0 mov r0, #1 lsl r0, r0, #8 str r0, [sp] mov r0, #0xc0 str r0, [sp, #4] ldr r0, [r4] add r2, r1, #0 add r0, r0, #4 add r3, r1, #0 bl FUN_020196F4 ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_02018744 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_0201AB24 add sp, #8 pop {r4, pc} thumb_func_end MOD16_021EA858 thumb_func_start MOD16_021EA89C MOD16_021EA89C: ; 0x021EA89C push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021EA954 ; =0x00002B6C mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x74 bl FUN_020091E0 mov r1, #0xc5 lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r5, r1] bl FUN_02009B04 mov r0, #0xc5 lsl r0, r0, #2 ldr r0, [r5, r0] bl FUN_02009474 ldr r0, _021EA958 ; =0x00002B0B add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x13 mov r3, #0 bl FUN_02009298 mov r1, #0xc6 lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r5, r1] bl FUN_02009D68 mov r0, #0xc6 lsl r0, r0, #2 ldr r0, [r5, r0] bl FUN_02009474 ldr r0, _021EA95C ; =0x00002B6D add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x75 mov r3, #1 bl FUN_02009358 mov r1, #0xc7 lsl r1, r1, #2 str r0, [r5, r1] ldr r0, _021EA960 ; =0x00002B6B add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x73 mov r3, #1 bl FUN_02009358 mov r1, #0x32 lsl r1, r1, #4 str r0, [r5, r1] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021EA954: .word 0x00002B6C _021EA958: .word 0x00002B0B _021EA95C: .word 0x00002B6D _021EA960: .word 0x00002B6B thumb_func_end MOD16_021EA89C thumb_func_start MOD16_021EA964 MOD16_021EA964: ; 0x021EA964 push {r3, r4, r5, lr} add r5, r0, #0 mov r0, #0xc5 lsl r0, r0, #2 ldr r0, [r5, r0] ldr r4, [r1] bl FUN_02009C0C mov r0, #0xc6 lsl r0, r0, #2 ldr r0, [r5, r0] bl FUN_02009E04 mov r0, #5 mov r1, #0xc5 lsl r0, r0, #6 lsl r1, r1, #2 ldr r0, [r4, r0] ldr r1, [r5, r1] bl FUN_02009490 mov r0, #0x51 mov r1, #0xc6 lsl r0, r0, #2 lsl r1, r1, #2 ldr r0, [r4, r0] ldr r1, [r5, r1] bl FUN_02009490 mov r0, #0x52 mov r1, #0xc7 lsl r0, r0, #2 lsl r1, r1, #2 ldr r0, [r4, r0] ldr r1, [r5, r1] bl FUN_02009490 mov r0, #0x53 mov r1, #0x32 lsl r0, r0, #2 lsl r1, r1, #4 ldr r0, [r4, r0] ldr r1, [r5, r1] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EA964 thumb_func_start MOD16_021EA9C0 MOD16_021EA9C0: ; 0x021EA9C0 push {r4, r5, r6, r7, lr} sub sp, #0x74 ldr r4, [r1] ldr r3, _021EAA58 ; =0x00002B6B add r7, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #5 str r1, [sp, #0x10] lsl r0, r0, #6 add r5, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x50 sub r2, #0x60 add r3, r3, #2 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] add r6, sp, #0x30 str r0, [sp, #0x30] add r0, sp, #0x50 str r0, [sp, #0x34] mov r0, #0x11 str r0, [sp, #0x44] mov r0, #1 str r0, [sp, #0x48] mov r0, #0 str r5, [sp, #0x4c] str r0, [sp, #0x2c] str r0, [sp, #0x38] str r0, [sp, #0x3c] _021EAA2A: mov r4, #0 add r5, r7, #0 _021EAA2E: add r0, r6, #0 bl FUN_0201FF84 str r0, [r5, #0x20] add r4, r4, #1 add r5, #8 cmp r4, #9 blt _021EAA2E add r0, r6, #0 bl FUN_0201FF84 str r0, [r7, #0x68] ldr r0, [sp, #0x2c] add r7, #0x54 add r0, r0, #1 str r0, [sp, #0x2c] cmp r0, #9 blt _021EAA2A add sp, #0x74 pop {r4, r5, r6, r7, pc} nop _021EAA58: .word 0x00002B6B thumb_func_end MOD16_021EA9C0 thumb_func_start MOD16_021EAA5C MOD16_021EAA5C: ; 0x021EAA5C push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 mov r7, #0 _021EAA62: mov r4, #0 add r5, r6, #0 _021EAA66: ldr r0, [r5, #0x20] bl FUN_0201FFC8 add r4, r4, #1 add r5, #8 cmp r4, #9 blt _021EAA66 ldr r0, [r6, #0x68] bl FUN_0201FFC8 add r7, r7, #1 add r6, #0x54 cmp r7, #9 blt _021EAA62 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EAA5C thumb_func_start MOD16_021EAA84 MOD16_021EAA84: ; 0x021EAA84 bx lr .align 2, 0 thumb_func_end MOD16_021EAA84 thumb_func_start MOD16_021EAA88 MOD16_021EAA88: ; 0x021EAA88 bx lr .align 2, 0 thumb_func_end MOD16_021EAA88 thumb_func_start MOD16_021EAA8C MOD16_021EAA8C: ; 0x021EAA8C push {r4, lr} add r4, r0, #0 ldr r0, [r1, #0xc] bl MOD16_021EAF10 add r2, r0, #0 ldr r1, [r4] mov r0, #1 bl FUN_02004F28 str r0, [r4, #4] pop {r4, pc} thumb_func_end MOD16_021EAA8C thumb_func_start MOD16_021EAAA4 MOD16_021EAAA4: ; 0x021EAAA4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 ldr r0, [sp, #0x44] ldr r7, [sp, #0x3c] str r0, [sp, #0x44] ldr r0, [sp, #0x48] str r1, [sp, #8] str r0, [sp, #0x48] add r0, r2, #0 str r3, [sp, #0xc] ldr r5, [sp, #0x40] bl FUN_02004E80 str r0, [sp, #0x1c] lsl r0, r7, #0x10 lsr r0, r0, #0x10 str r0, [sp] mov r0, #0x40 str r0, [sp, #4] ldr r0, [sp, #8] ldr r3, [sp, #0x44] ldr r0, [r0] sub r3, #0x20 lsl r2, r5, #0x10 lsl r3, r3, #0x10 add r0, r0, #4 mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x10 bl FUN_020196F4 ldr r1, [sp, #0x38] ldr r0, [sp, #0xc] mov r6, #0 sub r0, r1, r0 cmp r7, #0 ble _021EAB48 lsl r0, r0, #0xc str r0, [sp, #0x14] asr r0, r0, #0x1f str r0, [sp, #0x18] lsl r0, r7, #0xc add r4, r6, #0 str r0, [sp, #0x10] _021EAAFC: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] asr r3, r4, #0x1f add r2, r4, #0 bl _ll_mul mov r2, #2 lsl r2, r2, #0xa add r0, r0, r2 ldr r2, _021EAB4C ; =0x00000000 adc r1, r2 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 ldr r1, [sp, #0x10] bl FX_Div asr r1, r0, #0xc ldr r0, [sp, #0xc] ldr r2, [sp, #0x1c] add r1, r1, r0 ldr r0, [sp, #0x48] ldr r3, [sp, #0x44] str r0, [sp] ldr r0, [sp, #8] ldrb r1, [r2, r1] ldr r0, [r0] add r2, r5, #0 add r0, r0, #4 bl MOD16_021EAB50 mov r0, #1 lsl r0, r0, #0xc add r6, r6, #1 add r5, r5, #1 add r4, r4, r0 cmp r6, r7 blt _021EAAFC _021EAB48: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EAB4C: .word 0x00000000 thumb_func_end MOD16_021EAAA4 thumb_func_start MOD16_021EAB50 MOD16_021EAB50: ; 0x021EAB50 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r1, #0 str r0, [sp, #8] add r6, r2, #0 add r7, r3, #0 ldr r4, [sp, #0x20] cmp r5, #0x7f bls _021EAB64 sub r5, #0xff _021EAB64: cmp r5, #0 beq _021EAB8E lsl r2, r5, #0xc asr r0, r2, #0x1f lsr r1, r2, #0xf lsl r0, r0, #0x11 orr r0, r1 mov r1, #2 lsl r3, r2, #0x11 mov r2, #0 lsl r1, r1, #0xa add r3, r3, r1 adc r0, r2 lsl r1, r0, #0x14 lsr r0, r3, #0xc orr r0, r1 mov r1, #0x7f lsl r1, r1, #0xc bl FX_Div asr r5, r0, #0xc _021EAB8E: ldr r1, [r4] add r0, r7, r5 add r1, r7, r1 cmp r0, r1 ble _021EAB9E add r3, r1, #0 sub r1, r0, r1 b _021EABA2 _021EAB9E: add r3, r0, #0 sub r1, r1, r0 _021EABA2: mov r0, #1 str r0, [sp] add r0, r1, #1 lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #4] lsl r2, r6, #0x10 lsl r3, r3, #0x10 ldr r0, [sp, #8] mov r1, #6 lsr r2, r2, #0x10 lsr r3, r3, #0x10 bl FUN_020196F4 str r5, [r4] add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021EAB50 thumb_func_start MOD16_021EABC4 MOD16_021EABC4: ; 0x021EABC4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r7, r0, #0 ldr r0, [sp, #0x20] add r5, r1, #0 str r0, [sp, #0x20] ldr r0, [sp, #0x24] add r6, r2, #0 add r4, r3, #0 str r0, [sp, #0x24] sub r0, r6, r5 lsl r0, r0, #0x10 lsr r0, r0, #0x10 ldr r3, [sp, #0x20] str r0, [sp] mov r0, #0x40 str r0, [sp, #4] ldr r0, [r7] sub r3, #0x20 lsl r2, r4, #0x10 lsl r3, r3, #0x10 add r0, r0, #4 mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x10 bl FUN_020196F4 cmp r5, r6 bge _021EAC18 _021EABFE: ldr r0, [sp, #0x24] ldr r3, [sp, #0x20] str r0, [sp] ldr r0, [r7] mov r1, #0 add r0, r0, #4 add r2, r4, #0 bl MOD16_021EAB50 add r5, r5, #1 add r4, r4, #1 cmp r5, r6 blt _021EABFE _021EAC18: add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EABC4 thumb_func_start MOD16_021EAC1C MOD16_021EAC1C: ; 0x021EAC1C push {r4, r5, r6, r7, lr} sub sp, #0x14 mov r3, #0xc9 add r5, r0, #0 lsl r3, r3, #2 ldr r0, [r5, r3] add r4, r1, #0 add r0, r0, #4 str r0, [r5, r3] ldr r0, [r5, r3] add r6, r2, #0 lsr r2, r0, #0x1f lsl r1, r0, #0x18 sub r1, r1, r2 mov r0, #0x18 ror r1, r0 add r1, r2, r1 str r1, [r5, r3] ldr r3, [r5, r3] sub r3, #8 bpl _021EAC4A add r0, #0xe8 add r3, r3, r0 _021EAC4A: mov r0, #0xcb lsl r0, r0, #2 ldr r1, [r6, #4] ldr r7, [r5, r0] cmp r7, r1 beq _021EAC76 str r1, [sp] mov r1, #4 str r1, [sp, #4] str r3, [sp, #8] mov r1, #0x97 sub r0, r0, #4 str r1, [sp, #0xc] add r0, r5, r0 str r0, [sp, #0x10] ldr r2, [r6] add r0, r5, #0 add r1, r4, #0 add r3, r7, #0 bl MOD16_021EAAA4 b _021EAC8A _021EAC76: mov r1, #0x97 sub r0, r0, #4 str r1, [sp] add r0, r5, r0 str r0, [sp, #4] add r0, r4, #0 mov r1, #0 mov r2, #4 bl MOD16_021EABC4 _021EAC8A: ldr r0, [r4] mov r3, #0xc9 lsl r3, r3, #2 ldr r0, [r0] ldr r3, [r5, r3] mov r1, #1 mov r2, #0 bl FUN_0201AEE4 ldr r0, [r4] add r0, r0, #4 bl FUN_02019220 mov r0, #0xcb ldr r1, [r6, #4] lsl r0, r0, #2 str r1, [r5, r0] add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021EAC1C thumb_func_start MOD16_021EACB0 MOD16_021EACB0: ; 0x021EACB0 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] mov r1, #9 add r0, r0, #4 bl FUN_0201AB24 mov r0, #0xca mov r2, #0x97 lsl r0, r0, #2 str r2, [sp] add r0, r5, r0 mov r1, #0 str r0, [sp, #4] add r0, r4, #0 add r2, #0x69 add r3, r1, #0 bl MOD16_021EABC4 ldr r0, [r4] add r0, r0, #4 bl FUN_020191D0 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EACB0 thumb_func_start MOD16_021EACE8 MOD16_021EACE8: ; 0x021EACE8 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 add r5, #0x20 _021EACF0: add r0, r5, #0 add r1, r4, #0 bl MOD16_021EAD24 add r4, r4, #1 add r5, #0x54 cmp r4, #9 blt _021EACF0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EACE8 thumb_func_start MOD16_021EAD04 MOD16_021EAD04: ; 0x021EAD04 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 mov r4, #0 add r5, #0x20 _021EAD0E: add r1, r6, r4 ldrb r1, [r1, #0xc] add r0, r5, #0 bl MOD16_021EAD88 add r4, r4, #1 add r5, #0x54 cmp r4, #9 blt _021EAD0E pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EAD04 thumb_func_start MOD16_021EAD24 MOD16_021EAD24: ; 0x021EAD24 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 str r0, [sp] lsl r0, r1, #4 add r0, #0x70 lsl r0, r0, #0xc str r0, [sp, #4] mov r0, #6 lsl r0, r0, #0x10 mov r6, #2 ldr r5, [sp] str r0, [sp, #8] mov r4, #0 add r7, sp, #4 lsl r6, r6, #0xe _021EAD42: ldr r0, [r5] add r1, r7, #0 bl FUN_02020044 ldr r0, [r5] mov r1, #0 bl FUN_020200A0 ldr r0, [sp, #8] mov r1, #1 sub r0, r0, r6 str r0, [sp, #8] ldr r0, [r5] bl FUN_02020130 add r4, r4, #1 add r5, #8 cmp r4, #9 blt _021EAD42 mov r0, #6 lsl r0, r0, #0x10 str r0, [sp, #8] ldr r0, [sp] add r1, sp, #4 ldr r0, [r0, #0x48] bl FUN_02020044 ldr r0, [sp] mov r1, #0 ldr r0, [r0, #0x48] bl FUN_020200A0 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EAD24 thumb_func_start MOD16_021EAD88 MOD16_021EAD88: ; 0x021EAD88 push {r3, r4, r5, r6, r7, lr} mov r4, #0 add r7, r1, #0 add r6, r0, #0 str r4, [sp] cmp r7, #0 ble _021EADAC add r5, r6, #0 _021EAD98: ldr r0, [r5] mov r1, #1 bl FUN_020200A0 add r4, r4, #1 lsl r0, r4, #1 str r0, [r5, #4] add r5, #8 cmp r4, r7 blt _021EAD98 _021EADAC: mov r5, #0 add r4, r6, #0 add r7, r5, #0 _021EADB2: ldr r0, [r4] bl FUN_02020128 cmp r0, #0 beq _021EADD4 ldr r0, [r4, #4] sub r0, r0, #1 cmp r0, #0 ble _021EADCC str r0, [r4, #4] add r0, r5, #1 str r0, [sp] b _021EADD4 _021EADCC: ldr r0, [r4] add r1, r7, #0 bl FUN_020200A0 _021EADD4: add r5, r5, #1 add r4, #8 cmp r5, #9 blt _021EADB2 ldr r1, [r6, #0x4c] ldr r0, [sp] cmp r1, r0 bgt _021EAE04 ldr r0, [r6, #0x48] ldr r1, [sp] bl MOD16_021EAE2C mov r0, #0x10 str r0, [r6, #0x50] ldr r1, [r6, #0x4c] ldr r0, [sp] cmp r1, r0 bge _021EAE00 ldr r0, [r6, #0x48] mov r1, #1 bl FUN_020200A0 _021EAE00: ldr r0, [sp] str r0, [r6, #0x4c] _021EAE04: ldr r1, [r6, #0x4c] cmp r1, #0 ble _021EAE22 ldr r0, [r6, #0x50] cmp r0, #0 bge _021EAE1C sub r1, r1, #1 str r1, [r6, #0x4c] ldr r0, [r6, #0x48] bl MOD16_021EAE2C pop {r3, r4, r5, r6, r7, pc} _021EAE1C: sub r0, r0, #1 str r0, [r6, #0x50] pop {r3, r4, r5, r6, r7, pc} _021EAE22: ldr r0, [r6, #0x48] mov r1, #0 bl FUN_020200A0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EAD88 thumb_func_start MOD16_021EAE2C MOD16_021EAE2C: ; 0x021EAE2C push {r3, r4, r5, r6, lr} sub sp, #0xc add r5, r0, #0 add r4, r1, #0 bl FUN_0202011C add r6, r0, #0 add r3, sp, #0 ldmia r6!, {r0, r1} add r2, r3, #0 stmia r3!, {r0, r1} ldr r0, [r6] add r1, r2, #0 str r0, [r3] lsl r0, r4, #3 neg r0, r0 add r0, #0x60 lsl r0, r0, #0xc str r0, [sp, #4] add r0, r5, #0 bl FUN_02020044 add sp, #0xc pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021EAE2C thumb_func_start MOD16_021EAE5C MOD16_021EAE5C: ; 0x021EAE5C push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r1, #0xc] bl MOD16_021EAF10 add r4, r0, #0 add r1, r5, #0 mov r0, #0 add r1, #0xc strb r0, [r5, #0xc] strb r0, [r1, #1] strb r0, [r1, #2] strb r0, [r1, #3] strb r0, [r1, #4] strb r0, [r1, #5] strb r0, [r1, #6] strb r0, [r1, #7] strb r0, [r1, #8] bl FUN_02005670 cmp r0, #0 beq _021EAE96 ldr r0, [r5] add r5, #0xc add r1, r5, #0 mov r2, #9 add r3, r4, #0 bl FUN_02004F70 _021EAE96: pop {r3, r4, r5, pc} thumb_func_end MOD16_021EAE5C thumb_func_start MOD16_021EAE98 MOD16_021EAE98: ; 0x021EAE98 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021EAF18 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021EAF58 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021EAF80 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021EAFB0 str r0, [r5, #0x24] ldr r0, _021EAEE0 ; =MOD16_021EAFB4 str r0, [r5, #8] ldr r0, _021EAEE4 ; =MOD16_021EAFF4 str r0, [r5, #0xc] ldr r0, _021EAEE8 ; =MOD16_021EB078 str r0, [r5, #0x10] ldr r0, _021EAEEC ; =MOD16_021EB08C str r0, [r5, #0x14] ldr r0, _021EAEF0 ; =MOD16_021EB114 str r0, [r5, #0x18] ldr r0, _021EAEF4 ; =MOD16_021EB16C str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EAEE0: .word MOD16_021EAFB4 _021EAEE4: .word MOD16_021EAFF4 _021EAEE8: .word MOD16_021EB078 _021EAEEC: .word MOD16_021EB08C _021EAEF0: .word MOD16_021EB114 _021EAEF4: .word MOD16_021EB16C thumb_func_end MOD16_021EAE98 thumb_func_start MOD16_021EAEF8 MOD16_021EAEF8: ; 0x021EAEF8 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021EAF84 ldr r0, [r4, #4] bl MOD16_021EAF98 ldr r0, [r4, #0x20] bl MOD16_021EAFAC pop {r4, pc} thumb_func_end MOD16_021EAEF8 thumb_func_start MOD16_021EAF10 MOD16_021EAF10: ; 0x021EAF10 ldr r0, [r0] ldr r0, [r0, #0xc] bx lr .align 2, 0 thumb_func_end MOD16_021EAF10 thumb_func_start MOD16_021EAF18 MOD16_021EAF18: ; 0x021EAF18 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x10 bl FUN_02016998 add r4, r0, #0 bne _021EAF2A bl ErrorHandling _021EAF2A: add r2, r4, #0 mov r1, #0x10 mov r0, #0 _021EAF30: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021EAF30 add r0, r5, #0 bl MOD16_021D7AEC str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #3 bl MOD16_021D7B7C str r0, [r4, #8] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EAF18 thumb_func_start MOD16_021EAF58 MOD16_021EAF58: ; 0x021EAF58 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021EAF6A bl ErrorHandling _021EAF6A: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EAF58 thumb_func_start MOD16_021EAF80 MOD16_021EAF80: ; 0x021EAF80 mov r0, #0 bx lr thumb_func_end MOD16_021EAF80 thumb_func_start MOD16_021EAF84 MOD16_021EAF84: ; 0x021EAF84 push {r4, lr} add r4, r0, #0 bne _021EAF8E bl ErrorHandling _021EAF8E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EAF84 thumb_func_start MOD16_021EAF98 MOD16_021EAF98: ; 0x021EAF98 push {r4, lr} add r4, r0, #0 bne _021EAFA2 bl ErrorHandling _021EAFA2: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EAF98 thumb_func_start MOD16_021EAFAC MOD16_021EAFAC: ; 0x021EAFAC bx lr .align 2, 0 thumb_func_end MOD16_021EAFAC thumb_func_start MOD16_021EAFB0 MOD16_021EAFB0: ; 0x021EAFB0 mov r0, #0 bx lr thumb_func_end MOD16_021EAFB0 thumb_func_start MOD16_021EAFB4 MOD16_021EAFB4: ; 0x021EAFB4 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r5, r0, #0 ldr r0, [r6, #4] bl MOD16_021D9DE8 add r7, r0, #0 ldr r0, [r5, #4] mov r1, #0x70 bl FUN_02016998 mov r1, #0 mov r2, #0x70 add r4, r0, #0 bl Call_FillMemWithValue ldr r2, [r5, #4] add r0, r4, #0 add r1, r6, #0 bl MOD16_021EB31C add r0, r4, #0 add r1, r6, #0 bl MOD16_021EB3D0 add r0, r7, #0 bl FUN_02004E98 str r0, [r4, #0x6c] str r4, [r5, #8] mov r0, #1 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EAFB4 thumb_func_start MOD16_021EAFF4 MOD16_021EAFF4: ; 0x021EAFF4 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r0, #0xc] ldr r4, [r0, #8] cmp r1, #1 bne _021EB010 add r0, r4, #0 bl MOD16_021EC000 add r0, r4, #0 bl MOD16_021EC010 mov r0, #1 pop {r3, r4, r5, pc} _021EB010: ldr r0, [r0, #0x10] cmp r0, #1 bne _021EB01A mov r0, #0 pop {r3, r4, r5, pc} _021EB01A: ldr r0, [r4, #0x3c] str r0, [r5, #0xc] ldr r0, [r5, #8] bl MOD16_021E95C0 cmp r0, #0 beq _021EB074 bl FUN_02005670 cmp r0, #0 bne _021EB03C ldr r0, [r4, #0x64] cmp r0, #0 bne _021EB03C add r0, r4, #0 bl MOD16_021EC000 _021EB03C: add r0, r4, #0 add r1, r5, #0 bl MOD16_021EB3D0 ldr r0, [r5, #8] bl MOD16_021E95C8 cmp r0, #0 beq _021EB060 ldr r0, [r5, #4] bl MOD16_021D9FB8 cmp r0, #0 beq _021EB060 add r0, r4, #0 add r1, r5, #0 bl MOD16_021EC144 _021EB060: ldr r0, [r4, #0x64] cmp r0, #0 beq _021EB074 ldr r0, [r4, #0x2c] cmp r0, #0 beq _021EB074 add r0, r4, #0 add r1, r5, #0 bl MOD16_021EC030 _021EB074: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EAFF4 thumb_func_start MOD16_021EB078 MOD16_021EB078: ; 0x021EB078 push {r4, lr} ldr r4, [r0, #8] add r0, r4, #0 bl MOD16_021EB3F4 add r0, r4, #0 bl FUN_02016A18 mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021EB078 thumb_func_start MOD16_021EB08C MOD16_021EB08C: ; 0x021EB08C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #3 bhi _021EB110 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EB0A8: ; jump table .short _021EB0B0 - _021EB0A8 - 2 ; case 0 .short _021EB0CA - _021EB0A8 - 2 ; case 1 .short _021EB0E8 - _021EB0A8 - 2 ; case 2 .short _021EB0FE - _021EB0A8 - 2 ; case 3 _021EB0B0: ldr r0, [r4, #4] mov r1, #0x74 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x74 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EB110 _021EB0CA: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021EB6C0 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021EB270 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EB110 _021EB0E8: add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021EB2E0 cmp r0, #0 beq _021EB110 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EB110 _021EB0FE: mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #0 bl MOD16_021D8B3C mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021EB110: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EB08C thumb_func_start MOD16_021EB114 MOD16_021EB114: ; 0x021EB114 push {r3, r4, r5, r6, r7, lr} add r6, r2, #0 add r7, r0, #0 ldr r0, [r6, #8] ldr r4, [r3, #8] ldr r5, [r1, #8] bl MOD16_021E95C0 cmp r0, #0 beq _021EB168 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EBBA0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EBBF0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EBC18 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EBD3C add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 bl MOD16_021EBD58 add r0, r5, #0 bl MOD16_021EBE38 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EC120 add r0, r7, #0 add r1, r6, #0 bl MOD16_021EC1B8 _021EB168: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EB114 thumb_func_start MOD16_021EB16C MOD16_021EB16C: ; 0x021EB16C push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r5, [r4, #8] cmp r0, #4 bhi _021EB1F4 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EB188: ; jump table .short _021EB192 - _021EB188 - 2 ; case 0 .short _021EB1BA - _021EB188 - 2 ; case 1 .short _021EB1D0 - _021EB188 - 2 ; case 2 .short _021EB1E2 - _021EB188 - 2 ; case 3 .short _021EB1F0 - _021EB188 - 2 ; case 4 _021EB192: mov r0, #0x79 ldr r1, [r6] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 bl MOD16_021D8B3C add r0, r5, #0 bl MOD16_021EC0A8 add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021EB270 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EB1F4 _021EB1BA: add r0, r5, #0 add r1, r6, #0 mov r3, #0 bl MOD16_021EB2E0 cmp r0, #0 beq _021EB1F4 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EB1F4 _021EB1D0: ldr r2, [r4, #4] add r0, r5, #0 add r1, r6, #0 bl MOD16_021EB6FC ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EB1F4 _021EB1E2: add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EB1F4 _021EB1F0: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021EB1F4: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EB16C thumb_func_start MOD16_021EB1F8 MOD16_021EB1F8: ; 0x021EB1F8 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #1 bl FUN_02020398 ldr r0, [r4, #0x3c] mov r1, #1 bl FUN_02020398 ldr r0, [r4, #4] mov r1, #1 bl FUN_02020398 ldr r0, [r4, #0x20] mov r1, #1 bl FUN_02020398 ldr r0, [r4, #0x50] mov r1, #1 ldr r0, [r0] bl FUN_02011AF0 ldr r0, [r4, #0x54] mov r1, #1 ldr r0, [r0] bl FUN_02011AF0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EB1F8 thumb_func_start MOD16_021EB234 MOD16_021EB234: ; 0x021EB234 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #0 bl FUN_02020398 ldr r0, [r4, #0x3c] mov r1, #0 bl FUN_02020398 ldr r0, [r4, #4] mov r1, #0 bl FUN_02020398 ldr r0, [r4, #0x20] mov r1, #0 bl FUN_02020398 ldr r0, [r4, #0x50] mov r1, #0 ldr r0, [r0] bl FUN_02011AF0 ldr r0, [r4, #0x54] mov r1, #0 ldr r0, [r0] bl FUN_02011AF0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EB234 thumb_func_start MOD16_021EB270 MOD16_021EB270: ; 0x021EB270 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021EB1F8 ldr r0, [r4, #8] bl MOD16_021E95B8 cmp r0, #0 beq _021EB2DC cmp r6, #0 beq _021EB2B6 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] mov r0, #0x19 ldr r1, [r5] lsl r0, r0, #4 add r0, r1, r0 mov r1, #3 add r2, r1, #0 sub r2, #0x13 bl MOD16_021D8988 add sp, #0x14 pop {r3, r4, r5, r6, pc} _021EB2B6: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] mov r0, #0x19 ldr r1, [r5] lsl r0, r0, #4 add r0, r1, r0 mov r1, #3 add r3, r1, #0 sub r3, #0x13 bl MOD16_021D8988 _021EB2DC: add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021EB270 thumb_func_start MOD16_021EB2E0 MOD16_021EB2E0: ; 0x021EB2E0 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #8] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E95B8 cmp r0, #0 beq _021EB300 mov r0, #0x19 ldr r1, [r5] lsl r0, r0, #4 add r0, r1, r0 bl MOD16_021D89B4 b _021EB306 _021EB300: mov r0, #2 bl FUN_0200A344 _021EB306: cmp r0, #0 beq _021EB318 cmp r4, #0 beq _021EB314 add r0, r6, #0 bl MOD16_021EB234 _021EB314: mov r0, #1 pop {r4, r5, r6, pc} _021EB318: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EB2E0 thumb_func_start MOD16_021EB31C MOD16_021EB31C: ; 0x021EB31C push {r3, r4, r5, r6, lr} sub sp, #4 add r4, r2, #0 add r5, r0, #0 add r6, r1, #0 add r0, r4, #0 mov r1, #0xc bl FUN_02016998 str r0, [r5, #4] add r0, r4, #0 mov r1, #8 bl FUN_02016998 str r0, [r5, #0x10] mov r0, #0x6a str r0, [sp] ldr r0, [r5, #4] mov r1, #0x35 mov r2, #0x51 mov r3, #0x16 bl MOD16_021D7C98 ldr r1, [r5, #4] mov r0, #0xfe strb r0, [r1, #4] ldr r1, [r5, #4] mov r2, #0x33 strb r2, [r1, #5] ldr r1, [r5, #4] mov r2, #0x9d strb r2, [r1, #6] ldr r1, [r5, #4] mov r2, #0x20 strb r2, [r1, #7] ldr r1, [r5, #4] mov r2, #0x9b strb r0, [r1, #8] ldr r0, [r5, #4] mov r1, #0xb3 strb r1, [r0, #9] ldr r0, [r5, #4] mov r1, #0x7b strb r1, [r0, #0xa] ldr r0, [r5, #4] mov r1, #0x48 strb r1, [r0, #0xb] mov r0, #0xcc str r0, [sp] ldr r0, [r5, #0x10] mov r1, #0x6b mov r3, #0x9c bl MOD16_021D7C98 mov r0, #0xf6 str r0, [sp] ldr r0, [r5, #0x10] mov r1, #0x96 add r0, r0, #4 mov r2, #0xb6 mov r3, #0xd6 bl MOD16_021D7C98 str r6, [r5, #8] str r5, [r5, #0xc] str r4, [sp] add r3, r5, #0 ldr r0, [r5, #4] ldr r2, _021EB3C8 ; =MOD16_021EB41C mov r1, #3 add r3, #8 bl FUN_020220C4 str r0, [r5] str r4, [sp] add r3, r5, #0 ldr r0, [r5, #0x10] ldr r2, _021EB3CC ; =MOD16_021EB45C mov r1, #2 add r3, #8 bl FUN_020220C4 str r0, [r5, #0x14] add sp, #4 pop {r3, r4, r5, r6, pc} nop _021EB3C8: .word MOD16_021EB41C _021EB3CC: .word MOD16_021EB45C thumb_func_end MOD16_021EB31C thumb_func_start MOD16_021EB3D0 MOD16_021EB3D0: ; 0x021EB3D0 push {r4, lr} add r4, r0, #0 mov r1, #0 add r2, r4, #0 mov r0, #0x64 _021EB3DA: add r1, r1, #1 str r0, [r2, #0x18] add r2, r2, #4 cmp r1, #2 blt _021EB3DA ldr r0, [r4] bl FUN_02022144 ldr r0, [r4, #0x14] bl FUN_02022144 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EB3D0 thumb_func_start MOD16_021EB3F4 MOD16_021EB3F4: ; 0x021EB3F4 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0202212C ldr r0, [r4, #0x14] bl FUN_0202212C ldr r0, [r4, #4] bl FUN_02016A18 mov r0, #0 str r0, [r4, #4] ldr r0, [r4, #0x10] bl FUN_02016A18 mov r0, #0 str r0, [r4, #0x10] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EB3F4 thumb_func_start MOD16_021EB41C MOD16_021EB41C: ; 0x021EB41C push {r3, lr} ldr r3, [r2] ldr r2, [r2, #4] cmp r1, #3 bhi _021EB458 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021EB432: ; jump table .short _021EB43A - _021EB432 - 2 ; case 0 .short _021EB44A - _021EB432 - 2 ; case 1 .short _021EB442 - _021EB432 - 2 ; case 2 .short _021EB452 - _021EB432 - 2 ; case 3 _021EB43A: add r1, r3, #0 bl MOD16_021EB4F8 pop {r3, pc} _021EB442: add r1, r3, #0 bl MOD16_021EB568 pop {r3, pc} _021EB44A: add r1, r3, #0 bl MOD16_021EB648 pop {r3, pc} _021EB452: add r1, r3, #0 bl MOD16_021EB684 _021EB458: pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021EB41C thumb_func_start MOD16_021EB45C MOD16_021EB45C: ; 0x021EB45C push {r3, r4, r5, r6, r7, lr} ldr r7, [r2] add r5, r0, #0 ldr r0, [r7, #4] ldr r4, [r2, #4] add r6, r1, #0 bl MOD16_021D9DE8 str r0, [sp] lsl r0, r5, #2 add r0, r4, r0 str r6, [r0, #0x18] cmp r6, #3 bhi _021EB4F0 add r0, r6, r6 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EB484: ; jump table .short _021EB48C - _021EB484 - 2 ; case 0 .short _021EB4F0 - _021EB484 - 2 ; case 1 .short _021EB492 - _021EB484 - 2 ; case 2 .short _021EB4F0 - _021EB484 - 2 ; case 3 _021EB48C: mov r0, #0 str r0, [r4, #0x24] pop {r3, r4, r5, r6, r7, pc} _021EB492: ldr r0, [r4, #0x24] cmp r0, #0 bne _021EB4F0 mov r2, #1 str r2, [r4, #0x24] cmp r5, #0 beq _021EB4A6 cmp r5, #1 beq _021EB4DC pop {r3, r4, r5, r6, r7, pc} _021EB4A6: ldr r0, [r4, #0x64] cmp r0, #1 ldr r0, [r4, #0x2c] bne _021EB4C6 cmp r0, #0 bne _021EB4BE ldr r2, [sp] add r0, r4, #0 add r1, r7, #0 bl MOD16_021EBFD4 pop {r3, r4, r5, r6, r7, pc} _021EB4BE: add r0, r4, #0 bl MOD16_021EC000 pop {r3, r4, r5, r6, r7, pc} _021EB4C6: cmp r0, #1 bne _021EB4D0 mov r0, #0 bl FUN_02005614 _021EB4D0: ldr r2, [sp] add r0, r4, #0 add r1, r7, #0 bl MOD16_021EBFD4 pop {r3, r4, r5, r6, r7, pc} _021EB4DC: mov r0, #2 str r0, [r4, #0x28] ldr r1, [r4, #0x64] add r0, r4, #0 eor r1, r2 bl MOD16_021EC060 ldr r0, _021EB4F4 ; =0x000005DD bl FUN_020054C8 _021EB4F0: pop {r3, r4, r5, r6, r7, pc} nop _021EB4F4: .word 0x000005DD thumb_func_end MOD16_021EB45C thumb_func_start MOD16_021EB4F8 MOD16_021EB4F8: ; 0x021EB4F8 push {r4, lr} add r4, r2, #0 cmp r0, #0 beq _021EB50A cmp r0, #1 beq _021EB522 cmp r0, #2 beq _021EB53E pop {r4, pc} _021EB50A: ldr r0, [r4, #0x2c] cmp r0, #1 bne _021EB516 add r0, r4, #0 bl MOD16_021EC000 _021EB516: ldr r0, _021EB564 ; =0x021C48F8 ldrh r0, [r0, #0x1c] str r0, [r4, #0x38] mov r0, #1 str r0, [r4, #0x30] pop {r4, pc} _021EB522: ldr r0, [r4, #0x2c] cmp r0, #1 bne _021EB52E add r0, r4, #0 bl MOD16_021EC000 _021EB52E: mov r0, #1 str r0, [r4, #0x4c] ldr r0, _021EB564 ; =0x021C48F8 ldrh r1, [r0, #0x1c] str r1, [r4, #0x54] ldrh r0, [r0, #0x1e] str r0, [r4, #0x58] pop {r4, pc} _021EB53E: ldr r0, [r4, #0x2c] cmp r0, #0 beq _021EB55C ldr r0, [r4, #0x10] bl FUN_02020A40 str r0, [r4, #0x20] ldr r0, [r4, #0x10] add r0, r0, #4 bl FUN_02020A40 ldr r1, [r4, #0x20] orr r0, r1 str r0, [r4, #0x20] pop {r4, pc} _021EB55C: mov r0, #1 str r0, [r4, #0x20] pop {r4, pc} nop _021EB564: .word 0x021C48F8 thumb_func_end MOD16_021EB4F8 thumb_func_start MOD16_021EB568 MOD16_021EB568: ; 0x021EB568 push {r4, lr} add r4, r2, #0 cmp r0, #0 beq _021EB57A cmp r0, #1 beq _021EB5BA cmp r0, #2 beq _021EB5DE pop {r4, pc} _021EB57A: ldr r0, [r4, #0x30] cmp r0, #1 bne _021EB638 ldr r1, _021EB63C ; =0x021C48F8 ldr r0, [r4, #0x38] ldrh r2, [r1, #0x1c] sub r2, r2, r0 ldr r0, [r4, #0x34] cmp r0, #0 bne _021EB5A2 cmp r2, #0xc blt _021EB638 mov r0, #1 str r0, [r4, #0x34] ldrh r0, [r1, #0x1c] str r0, [r4, #0x38] ldr r0, _021EB640 ; =0x000005F7 bl FUN_020054C8 pop {r4, pc} _021EB5A2: mov r0, #0xb mvn r0, r0 cmp r2, r0 bgt _021EB638 mov r0, #0 str r0, [r4, #0x34] ldrh r0, [r1, #0x1c] str r0, [r4, #0x38] ldr r0, _021EB640 ; =0x000005F7 bl FUN_020054C8 pop {r4, pc} _021EB5BA: ldr r0, [r4, #0x4c] cmp r0, #1 bne _021EB638 add r0, r4, #0 bl MOD16_021EBC30 add r0, r4, #0 bl MOD16_021EBC98 add r0, r4, #0 bl MOD16_021EBCC4 ldr r0, _021EB63C ; =0x021C48F8 ldrh r1, [r0, #0x1c] str r1, [r4, #0x54] ldrh r0, [r0, #0x1e] str r0, [r4, #0x58] pop {r4, pc} _021EB5DE: ldr r0, [r4, #0x20] cmp r0, #0 bne _021EB638 ldr r0, [r4, #0x2c] cmp r0, #0 bne _021EB5F8 mov r0, #1 str r0, [r4, #0x20] add r0, r4, #0 mov r1, #0 bl MOD16_021EC0C0 b _021EB632 _021EB5F8: ldr r1, _021EB63C ; =0x021C48F8 ldrh r0, [r1, #0x1e] cmp r0, #0x83 bhs _021EB626 ldr r0, [r4, #0x34] cmp r0, #0 bne _021EB610 ldrh r1, [r1, #0x1c] add r0, r4, #0 bl MOD16_021EBDD0 b _021EB618 _021EB610: ldrh r1, [r1, #0x1c] add r0, r4, #0 bl MOD16_021EBE04 _021EB618: mov r0, #0 str r0, [r4, #0x3c] add r0, r4, #0 mov r1, #1 bl MOD16_021EC0C0 b _021EB632 _021EB626: add r0, r4, #0 mov r1, #0 bl MOD16_021EC0D8 ldr r0, _021EB644 ; =0xFFFFFA00 str r0, [r4, #0x3c] _021EB632: add r0, r4, #0 bl MOD16_021EC0E8 _021EB638: pop {r4, pc} nop _021EB63C: .word 0x021C48F8 _021EB640: .word 0x000005F7 _021EB644: .word 0xFFFFFA00 thumb_func_end MOD16_021EB568 thumb_func_start MOD16_021EB648 MOD16_021EB648: ; 0x021EB648 push {r4, lr} add r4, r2, #0 cmp r0, #0 beq _021EB65A cmp r0, #1 beq _021EB660 cmp r0, #2 beq _021EB66C pop {r4, pc} _021EB65A: mov r0, #0 str r0, [r4, #0x30] pop {r4, pc} _021EB660: ldr r0, [r4, #0x60] lsl r0, r0, #2 str r0, [r4, #0x5c] mov r0, #0 str r0, [r4, #0x4c] pop {r4, pc} _021EB66C: ldr r0, [r4, #0x20] cmp r0, #0 bne _021EB680 add r0, r4, #0 mov r1, #0 bl MOD16_021EC0C0 add r0, r4, #0 bl MOD16_021EC0E8 _021EB680: pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EB648 thumb_func_start MOD16_021EB684 MOD16_021EB684: ; 0x021EB684 push {r4, lr} add r4, r2, #0 cmp r0, #0 beq _021EB696 cmp r0, #1 beq _021EB69C cmp r0, #2 beq _021EB6A8 pop {r4, pc} _021EB696: mov r0, #0 str r0, [r4, #0x30] pop {r4, pc} _021EB69C: ldr r0, [r4, #0x60] lsl r0, r0, #2 str r0, [r4, #0x5c] mov r0, #0 str r0, [r4, #0x4c] pop {r4, pc} _021EB6A8: ldr r0, [r4, #0x20] cmp r0, #0 bne _021EB6BC add r0, r4, #0 mov r1, #0 bl MOD16_021EC0C0 add r0, r4, #0 bl MOD16_021EC0E8 _021EB6BC: pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EB684 thumb_func_start MOD16_021EB6C0 MOD16_021EB6C0: ; 0x021EB6C0 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r2, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD16_021EB724 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EB830 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EB920 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EBAA4 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EC068 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EB6C0 thumb_func_start MOD16_021EB6FC MOD16_021EB6FC: ; 0x021EB6FC push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021EBA84 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EBB88 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EB8DC add r0, r4, #0 bl MOD16_021EB80C add r0, r5, #0 bl MOD16_021EC080 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EB6FC thumb_func_start MOD16_021EB724 MOD16_021EB724: ; 0x021EB724 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x22 mov r3, #6 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x47 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r6, r0, #0 ldrh r0, [r2] mov r1, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #6 ldr r0, [r0] bl FUN_0201AC68 ldr r0, [r5] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r4, [sp, #0xc] ldr r2, [r0] mov r1, #0x23 mov r3, #7 bl MOD16_021D8CB4 str r4, [sp] ldr r0, [r5] mov r1, #0x48 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r4, r0, #0 ldrh r0, [r2] mov r1, #7 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r5] ldr r0, [r0] bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r5] mov r1, #7 ldr r0, [r0] bl FUN_0201AC68 ldr r0, [r5] mov r2, #0 add r3, r2, #0 ldr r0, [r0] mov r1, #7 sub r3, #0x30 bl FUN_020179E0 ldr r0, [r5] mov r2, #3 add r3, r2, #0 ldr r0, [r0] mov r1, #7 sub r3, #0x13 bl FUN_020179E0 mov r0, #7 mov r1, #3 bl FUN_020178BC add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021EB724 thumb_func_start MOD16_021EB80C MOD16_021EB80C: ; 0x021EB80C push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #6 ldr r0, [r0] bl FUN_02018744 ldr r0, [r4] mov r1, #7 ldr r0, [r0] bl FUN_02018744 mov r0, #7 mov r1, #1 bl FUN_020178BC pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EB80C thumb_func_start MOD16_021EB830 MOD16_021EB830: ; 0x021EB830 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021EB8D0 ; =0x00002781 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x71 mov r3, #1 bl FUN_020091E0 str r0, [r5, #0x58] bl FUN_02009B04 ldr r0, [r5, #0x58] bl FUN_02009474 ldr r0, _021EB8D4 ; =0x00002722 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #3 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x12 mov r3, #0 bl FUN_02009298 str r0, [r5, #0x5c] bl FUN_02009D68 ldr r0, [r5, #0x5c] bl FUN_02009474 ldr r0, _021EB8D8 ; =0x00002782 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x72 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x60] mov r0, #0x9e lsl r0, r0, #6 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x70 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x64] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EB8D0: .word 0x00002781 _021EB8D4: .word 0x00002722 _021EB8D8: .word 0x00002782 thumb_func_end MOD16_021EB830 thumb_func_start MOD16_021EB8DC MOD16_021EB8DC: ; 0x021EB8DC push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x58] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0x5c] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x58] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x5c] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x60] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x64] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EB8DC thumb_func_start MOD16_021EB920 MOD16_021EB920: ; 0x021EB920 push {r4, r5, r6, lr} sub sp, #0x70 ldr r4, [r1] mov r3, #0x9e add r5, r0, #0 lsl r3, r3, #6 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #2 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 add r6, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] add r2, r3, #0 str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r2, #0x5e add r3, r3, #2 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #0x43 str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x1f str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] lsl r0, r0, #0x11 str r0, [sp, #0x34] mov r0, #3 lsl r1, r1, #0xc lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] str r6, [sp, #0x48] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5, #0x3c] mov r1, #4 bl FUN_02020130 ldr r0, [r5, #0x3c] mov r1, #1 bl FUN_020200BC mov r1, #2 ldr r0, [r5, #0x3c] lsl r1, r1, #0xc bl FUN_020200D8 ldr r0, [r5, #0x3c] mov r1, #8 bl FUN_02020208 mov r0, #0x33 lsl r0, r0, #0xc str r0, [sp, #0x34] mov r1, #0x9d mov r0, #3 lsl r1, r1, #0xc lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5] mov r1, #1 bl FUN_02020130 ldr r0, [r5] mov r1, #1 bl FUN_020200EC mov r0, #0x2d lsl r0, r0, #0xe str r0, [sp, #0x34] mov r1, #0x83 mov r0, #3 lsl r1, r1, #0xc lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5, #4] mov r1, #3 bl FUN_02020130 ldr r0, [r5, #4] mov r1, #1 bl FUN_020200BC mov r1, #2 ldr r0, [r5, #4] lsl r1, r1, #0xc bl FUN_020200D8 ldr r0, [r5, #4] mov r1, #5 bl FUN_02020208 mov r2, #3 str r2, [r5, #8] mov r1, #2 str r1, [r5, #0xc] str r2, [r5, #0x10] mov r0, #5 str r0, [r5, #0x18] mov r0, #0xe6 str r1, [r5, #0x1c] lsl r0, r0, #0xc mov r1, #0xa6 str r0, [sp, #0x34] lsl r1, r1, #0xc lsl r0, r2, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 str r0, [r5, #0x20] mov r1, #6 bl FUN_02020130 ldr r0, [r5, #0x20] mov r1, #1 bl FUN_020200BC mov r1, #2 ldr r0, [r5, #0x20] lsl r1, r1, #0xc bl FUN_020200D8 ldr r0, [r5, #0x20] mov r1, #5 bl FUN_02020208 mov r1, #6 str r1, [r5, #0x24] mov r0, #5 str r0, [r5, #0x28] str r1, [r5, #0x2c] str r0, [r5, #0x34] mov r0, #2 str r0, [r5, #0x38] add sp, #0x70 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EB920 thumb_func_start MOD16_021EBA84 MOD16_021EBA84: ; 0x021EBA84 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0201FFC8 ldr r0, [r4, #0x3c] bl FUN_0201FFC8 ldr r0, [r4, #4] bl FUN_0201FFC8 ldr r0, [r4, #0x20] bl FUN_0201FFC8 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EBA84 thumb_func_start MOD16_021EBAA4 MOD16_021EBAA4: ; 0x021EBAA4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 add r5, r0, #0 ldr r4, [r1] mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, _021EBB80 ; =0x00002722 add r6, r2, #0 bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] str r1, [sp, #8] mov r1, #0 bl FUN_02009E54 mov r2, #0 mov r1, #0x45 lsl r1, r1, #2 str r1, [sp, #0x1c] mov r1, #2 str r0, [sp, #0x10] str r2, [sp, #0x14] str r1, [sp, #0x20] str r2, [sp, #0x24] str r1, [sp, #0x28] str r6, [sp, #0x2c] bl FUN_0201E28C add r7, r0, #0 mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #8 mov r2, #2 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, _021EBB84 ; =0x00000266 add r1, r6, #0 mov r3, #0x29 bl MOD16_021DB3C8 lsr r1, r0, #1 mov r0, #0x40 sub r0, r0, r1 str r0, [sp, #0x18] str r6, [sp, #0xc] add r0, sp, #8 bl MOD16_021DB2BC str r0, [r5, #0x50] ldr r0, [r0] add r1, r7, #0 bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #8 mov r2, #2 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, _021EBB84 ; =0x00000266 add r1, r6, #0 mov r3, #0x2a bl MOD16_021DB3C8 lsr r1, r0, #1 mov r0, #0x40 sub r0, r0, r1 str r0, [sp, #0x18] str r6, [sp, #0xc] add r0, sp, #8 bl MOD16_021DB2BC str r0, [r5, #0x54] ldr r0, [r0] add r1, r7, #0 bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC ldr r0, [r5, #0x54] mov r1, #0 ldr r0, [r0] bl FUN_020119D0 add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} nop _021EBB80: .word 0x00002722 _021EBB84: .word 0x00000266 thumb_func_end MOD16_021EBAA4 thumb_func_start MOD16_021EBB88 MOD16_021EBB88: ; 0x021EBB88 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021EBB8E: ldr r0, [r5, #0x50] bl MOD16_021DB338 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021EBB8E pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EBB88 thumb_func_start MOD16_021EBBA0 MOD16_021EBBA0: ; 0x021EBBA0 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 ldr r1, [r5, #0x40] ldr r0, [r4, #0x34] cmp r1, r0 beq _021EBBEC ldr r0, [r5, #0x3c] bl FUN_0202022C add r6, r0, #0 ldr r0, [r4, #0x34] cmp r0, #0 ldr r0, [r5, #0x3c] bne _021EBBD4 mov r1, #4 bl FUN_02020130 mov r1, #8 sub r1, r1, r6 lsl r1, r1, #0x10 ldr r0, [r5, #0x3c] lsr r1, r1, #0x10 bl FUN_02020208 b _021EBBE8 _021EBBD4: mov r1, #0 bl FUN_02020130 mov r1, #8 sub r1, r1, r6 lsl r1, r1, #0x10 ldr r0, [r5, #0x3c] lsr r1, r1, #0x10 bl FUN_02020208 _021EBBE8: ldr r0, [r4, #0x34] str r0, [r5, #0x40] _021EBBEC: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EBBA0 thumb_func_start MOD16_021EBBF0 MOD16_021EBBF0: ; 0x021EBBF0 push {r4, lr} add r2, r1, #0 add r4, r0, #0 ldr r0, [r2, #0x64] ldr r3, [r2, #0x18] cmp r0, #0 ldr r0, [r4, #4] bne _021EBC0C add r4, #8 add r1, r4, #0 mov r2, #0 bl MOD16_021EBEE4 pop {r4, pc} _021EBC0C: add r4, #8 ldr r2, [r2, #0x2c] add r1, r4, #0 bl MOD16_021EBE6C pop {r4, pc} thumb_func_end MOD16_021EBBF0 thumb_func_start MOD16_021EBC18 MOD16_021EBC18: ; 0x021EBC18 push {r3, lr} add r2, r0, #0 ldr r0, [r2, #0x20] add r3, r1, #0 add r2, #0x24 add r1, r2, #0 ldr r2, [r3, #0x64] ldr r3, [r3, #0x1c] bl MOD16_021EBE6C pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021EBC18 thumb_func_start MOD16_021EBC30 MOD16_021EBC30: ; 0x021EBC30 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 mov r0, #0 str r0, [sp] ldr r3, _021EBC94 ; =0x021C48F8 ldr r0, [r5, #0x54] ldrh r2, [r3, #0x1c] ldrh r3, [r3, #0x1e] ldr r1, [r5, #0x58] sub r0, #0x33 sub r1, #0x9d sub r2, #0x33 sub r3, #0x9d bl FUN_0201BBD0 add r6, r0, #0 bpl _021EBC56 neg r0, r6 _021EBC56: cmp r0, #1 blt _021EBC90 ldr r0, [r5, #0x5c] add r4, r5, #0 add r4, #0x5c add r0, r0, r6 str r0, [r5, #0x5c] ldr r0, [r4] bpl _021EBC6E add r0, #0x58 str r0, [r4] b _021EBC76 _021EBC6E: mov r1, #0x58 bl _s32_div_f str r1, [r4] _021EBC76: ldr r0, [r5, #0x5c] cmp r0, #0x20 blt _021EBC90 cmp r0, #0x38 bgt _021EBC90 cmp r6, #0 ble _021EBC8C mov r0, #0x20 add sp, #4 str r0, [r5, #0x5c] pop {r3, r4, r5, r6, pc} _021EBC8C: mov r0, #0x38 str r0, [r5, #0x5c] _021EBC90: add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _021EBC94: .word 0x021C48F8 thumb_func_end MOD16_021EBC30 thumb_func_start MOD16_021EBC98 MOD16_021EBC98: ; 0x021EBC98 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #0x5c] asr r0, r1, #1 lsr r0, r0, #0x1e add r0, r1, r0 asr r1, r0, #2 ldr r0, [r4, #0x60] cmp r1, r0 beq _021EBCBE ldr r0, _021EBCC0 ; =0x000005F7 bl FUN_020054C8 ldr r1, [r4, #0x5c] asr r0, r1, #1 lsr r0, r0, #0x1e add r0, r1, r0 asr r0, r0, #2 str r0, [r4, #0x60] _021EBCBE: pop {r4, pc} .align 2, 0 _021EBCC0: .word 0x000005F7 thumb_func_end MOD16_021EBC98 thumb_func_start MOD16_021EBCC4 MOD16_021EBCC4: ; 0x021EBCC4 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #0x5c] cmp r1, #0 bne _021EBCD4 bl MOD16_021EC010 pop {r4, pc} _021EBCD4: ble _021EBD02 cmp r1, #0x2c bgt _021EBD02 ldr r0, [r4, #0x50] cmp r0, #1 bne _021EBCE6 mov r0, #0 bl FUN_02004CA4 _021EBCE6: ldr r0, [r4, #0x50] cmp r0, #2 beq _021EBCF4 bl FUN_02004CB4 mov r0, #2 str r0, [r4, #0x50] _021EBCF4: ldr r0, [r4, #0x60] cmp r0, #0 bne _021EBCFC mov r0, #1 _021EBCFC: bl FUN_02004D04 pop {r4, pc} _021EBD02: ldr r0, [r4, #0x50] cmp r0, #2 bne _021EBD0C bl FUN_02004CFC _021EBD0C: ldr r0, [r4, #0x50] cmp r0, #1 beq _021EBD1C mov r0, #0 bl FUN_02004C80 mov r0, #1 str r0, [r4, #0x50] _021EBD1C: ldr r0, [r4, #0x5c] cmp r0, #0 bne _021EBD26 mov r0, #0x58 str r0, [r4, #0x5c] _021EBD26: ldr r1, [r4, #0x60] mov r0, #0x16 sub r0, r0, r1 lsl r0, r0, #3 cmp r0, #0 ble _021EBD34 sub r0, r0, #1 _021EBD34: mov r1, #0 bl FUN_02004CAC pop {r4, pc} thumb_func_end MOD16_021EBCC4 thumb_func_start MOD16_021EBD3C MOD16_021EBD3C: ; 0x021EBD3C push {r4, lr} ldr r1, [r1, #0x5c] add r4, r0, #0 mov r0, #0xe bl FUN_0201BC84 add r1, r0, #0 lsl r1, r1, #0x10 ldr r0, [r4] lsr r1, r1, #0x10 bl FUN_02020088 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EBD3C thumb_func_start MOD16_021EBD58 MOD16_021EBD58: ; 0x021EBD58 push {r4, r5, r6, lr} add r4, r1, #0 ldr r1, [r2, #0x6c] add r5, r0, #0 ldr r2, [r2, #0x3c] mov r0, #1 bl FUN_02004F28 add r6, r0, #0 bne _021EBD70 mov r0, #0 str r0, [r5, #0x48] _021EBD70: add r0, r5, #0 ldr r1, [r5, #0x48] add r0, #0x4c sub r1, r6, r1 lsl r1, r1, #4 ldrh r0, [r0] neg r1, r1 add r1, r0, r1 add r0, r5, #0 add r0, #0x4c strh r1, [r0] add r0, r5, #0 add r0, #0x4c ldrh r1, [r0] add r0, r5, #0 add r0, #0x4c strh r1, [r0] add r0, r5, #0 add r0, #0x4c ldrh r0, [r0] mov r1, #0xb6 bl _s32_div_f add r3, r0, #0 ldr r0, [r4] lsl r3, r3, #0x10 ldr r0, [r0] mov r1, #7 mov r2, #0 lsr r3, r3, #0x10 bl FUN_0201AF08 ldr r0, [r4] mov r1, #7 ldr r0, [r0] mov r2, #9 mov r3, #0x83 bl FUN_0201AF50 ldr r0, [r4] mov r1, #7 ldr r0, [r0] mov r2, #0xc mov r3, #0x63 bl FUN_0201AF50 str r6, [r5, #0x48] pop {r4, r5, r6, pc} thumb_func_end MOD16_021EBD58 thumb_func_start MOD16_021EBDD0 MOD16_021EBDD0: ; 0x021EBDD0 push {r4, lr} sub r1, #0x6b add r4, r0, #0 lsl r0, r1, #0xc mov r2, #0x7f asr r1, r0, #0x1f lsl r2, r2, #0xc mov r3, #0 bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 mov r1, #9 lsl r1, r1, #0x10 bl FX_Div asr r0, r0, #0xc str r0, [r4, #0x44] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EBDD0 thumb_func_start MOD16_021EBE04 MOD16_021EBE04: ; 0x021EBE04 push {r4, lr} sub r1, #0xb3 add r4, r0, #0 lsl r0, r1, #0xc mov r2, #0x7f asr r1, r0, #0x1f lsl r2, r2, #0xc mov r3, #0 bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 mov r1, #0x12 lsl r1, r1, #0xe bl FX_Div asr r0, r0, #0xc str r0, [r4, #0x40] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EBE04 thumb_func_start MOD16_021EBE38 MOD16_021EBE38: ; 0x021EBE38 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x40] cmp r0, #0 ldr r0, [r4, #0x50] bne _021EBE58 ldr r0, [r0] mov r1, #1 bl FUN_020119D0 ldr r0, [r4, #0x54] mov r1, #0 ldr r0, [r0] bl FUN_020119D0 pop {r4, pc} _021EBE58: ldr r0, [r0] mov r1, #0 bl FUN_020119D0 ldr r0, [r4, #0x54] mov r1, #1 ldr r0, [r0] bl FUN_020119D0 pop {r4, pc} thumb_func_end MOD16_021EBE38 thumb_func_start MOD16_021EBE6C MOD16_021EBE6C: ; 0x021EBE6C push {r3, r4, r5, r6, r7, lr} add r4, r3, #0 add r6, r0, #0 add r5, r1, #0 add r7, r2, #0 cmp r4, #3 bne _021EBE7C mov r4, #1 _021EBE7C: add r0, r6, #0 bl FUN_0202022C str r0, [sp] ldr r0, [r5, #0xc] cmp r0, r7 beq _021EBE96 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 bl MOD16_021EBF7C str r7, [r5, #0xc] _021EBE96: cmp r4, #2 bgt _021EBEAA cmp r4, #0 blt _021EBEE0 beq _021EBEE0 cmp r4, #1 beq _021EBECC cmp r4, #2 beq _021EBEB0 pop {r3, r4, r5, r6, r7, pc} _021EBEAA: cmp r4, #0x64 beq _021EBECC pop {r3, r4, r5, r6, r7, pc} _021EBEB0: ldr r1, [r5, #0x14] ldr r0, [sp] cmp r0, r1 ble _021EBEE0 lsl r1, r1, #0x10 add r0, r6, #0 lsr r1, r1, #0x10 bl FUN_02020208 add r0, r6, #0 mov r1, #0 bl FUN_020200D8 pop {r3, r4, r5, r6, r7, pc} _021EBECC: add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 bl MOD16_021EBF7C mov r1, #2 add r0, r6, #0 lsl r1, r1, #0xc bl FUN_020200D8 _021EBEE0: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EBE6C thumb_func_start MOD16_021EBEE4 MOD16_021EBEE4: ; 0x021EBEE4 push {r3, r4, r5, r6, r7, lr} add r4, r3, #0 add r6, r0, #0 add r5, r1, #0 add r7, r2, #0 cmp r4, #1 bne _021EBEF4 mov r4, #3 _021EBEF4: add r0, r6, #0 bl FUN_0202022C ldr r0, [r5, #0xc] cmp r0, r7 beq _021EBF0C add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 bl MOD16_021EBF7C str r7, [r5, #0xc] _021EBF0C: cmp r4, #3 bgt _021EBF20 cmp r4, #0 blt _021EBF7A beq _021EBF26 cmp r4, #2 beq _021EBF50 cmp r4, #3 beq _021EBF66 pop {r3, r4, r5, r6, r7, pc} _021EBF20: cmp r4, #0x64 beq _021EBF66 pop {r3, r4, r5, r6, r7, pc} _021EBF26: cmp r7, #1 bne _021EBF36 add r0, r6, #0 add r1, r5, #0 mov r2, #0 bl MOD16_021EBF7C b _021EBF40 _021EBF36: add r0, r6, #0 add r1, r5, #0 mov r2, #1 bl MOD16_021EBF7C _021EBF40: ldr r1, [r5, #0x14] add r0, r6, #0 sub r1, r1, #1 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_02020208 pop {r3, r4, r5, r6, r7, pc} _021EBF50: ldr r1, [r5, #0x14] add r0, r6, #0 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_02020208 add r0, r6, #0 mov r1, #0 bl FUN_020200D8 pop {r3, r4, r5, r6, r7, pc} _021EBF66: add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 bl MOD16_021EBF7C mov r1, #2 add r0, r6, #0 lsl r1, r1, #0xc bl FUN_020200D8 _021EBF7A: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EBEE4 thumb_func_start MOD16_021EBF7C MOD16_021EBF7C: ; 0x021EBF7C push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r7, r2, #0 bl FUN_0202022C add r6, r0, #0 cmp r7, #1 ldr r1, [r4, #8] bne _021EBFB2 ldr r0, [r4] cmp r1, r0 bne _021EBFD2 ldr r1, [r4, #4] add r0, r5, #0 bl FUN_02020130 ldr r0, [r4, #4] str r0, [r4, #8] ldr r1, [r4, #0x10] add r0, r5, #0 sub r1, r1, r6 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_02020208 pop {r3, r4, r5, r6, r7, pc} _021EBFB2: ldr r0, [r4, #4] cmp r1, r0 bne _021EBFD2 ldr r1, [r4] add r0, r5, #0 bl FUN_02020130 ldr r0, [r4] str r0, [r4, #8] ldr r1, [r4, #0x10] add r0, r5, #0 sub r1, r1, r6 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_02020208 _021EBFD2: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EBF7C thumb_func_start MOD16_021EBFD4 MOD16_021EBFD4: ; 0x021EBFD4 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 mov r0, #1 lsl r1, r2, #0x10 str r0, [r4, #0x2c] ldr r0, _021EBFFC ; =0x000001FF lsr r1, r1, #0x10 str r0, [sp] mov r0, #0xd mov r2, #0 mov r3, #0x7f bl FUN_020056AC add r0, r4, #0 bl MOD16_021EC0E8 add sp, #4 pop {r3, r4, pc} nop _021EBFFC: .word 0x000001FF thumb_func_end MOD16_021EBFD4 thumb_func_start MOD16_021EC000 MOD16_021EC000: ; 0x021EC000 push {r4, lr} add r4, r0, #0 mov r0, #0 bl FUN_02005614 mov r0, #0 str r0, [r4, #0x2c] pop {r4, pc} thumb_func_end MOD16_021EC000 thumb_func_start MOD16_021EC010 MOD16_021EC010: ; 0x021EC010 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x50] cmp r0, #1 bne _021EC020 mov r0, #0 bl FUN_02004CA4 _021EC020: ldr r0, [r4, #0x50] cmp r0, #2 bne _021EC02A bl FUN_02004CFC _021EC02A: mov r0, #0 str r0, [r4, #0x50] pop {r4, pc} thumb_func_end MOD16_021EC010 thumb_func_start MOD16_021EC030 MOD16_021EC030: ; 0x021EC030 push {r4, r5, r6, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r6, r0, #0 bl FUN_02005670 cmp r0, #0 bne _021EC05C ldr r0, [r5, #0x68] sub r0, r0, #1 str r0, [r5, #0x68] bne _021EC05C add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EBFD4 mov r0, #0xa str r0, [r5, #0x68] _021EC05C: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EC030 thumb_func_start MOD16_021EC060 MOD16_021EC060: ; 0x021EC060 str r1, [r0, #0x64] mov r1, #0xa str r1, [r0, #0x68] bx lr thumb_func_end MOD16_021EC060 thumb_func_start MOD16_021EC068 MOD16_021EC068: ; 0x021EC068 push {r4, lr} add r4, r0, #0 add r3, r2, #0 ldr r0, [r1] add r2, r4, #0 mov r1, #0x14 add r2, #0x6c bl MOD16_021D8D70 str r0, [r4, #0x68] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EC068 thumb_func_start MOD16_021EC080 MOD16_021EC080: ; 0x021EC080 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x68] bl FUN_02016A18 mov r0, #0 str r0, [r4, #0x68] str r0, [r4, #0x6c] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EC080 thumb_func_start MOD16_021EC094 MOD16_021EC094: ; 0x021EC094 push {r3, lr} add r2, r0, #0 ldr r2, [r2, #0x6c] mov r0, #0x1f ldr r2, [r2, #0xc] mov r1, #0xe0 mov r3, #0x20 bl FUN_0201C2C8 pop {r3, pc} thumb_func_end MOD16_021EC094 thumb_func_start MOD16_021EC0A8 MOD16_021EC0A8: ; 0x021EC0A8 push {r3, lr} add r2, r0, #0 ldr r2, [r2, #0x6c] mov r0, #0x1f ldr r2, [r2, #0xc] mov r1, #0xe0 add r2, #0x20 mov r3, #0x20 bl FUN_0201C2C8 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021EC0A8 thumb_func_start MOD16_021EC0C0 MOD16_021EC0C0: ; 0x021EC0C0 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021EC0D8 cmp r4, #0 bne _021EC0D4 add r0, r5, #0 bl MOD16_021EC0DC _021EC0D4: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EC0C0 thumb_func_start MOD16_021EC0D8 MOD16_021EC0D8: ; 0x021EC0D8 str r1, [r0, #0x48] bx lr thumb_func_end MOD16_021EC0D8 thumb_func_start MOD16_021EC0DC MOD16_021EC0DC: ; 0x021EC0DC mov r1, #0 str r1, [r0, #0x3c] str r1, [r0, #0x40] str r1, [r0, #0x44] bx lr .align 2, 0 thumb_func_end MOD16_021EC0DC thumb_func_start MOD16_021EC0E8 MOD16_021EC0E8: ; 0x021EC0E8 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x2c] cmp r0, #0 beq _021EC108 ldr r0, [r4, #0x3c] bl MOD16_021EC1DC ldr r1, _021EC10C ; =0x0000FFFF ldr r2, [r4, #0x40] mov r0, #1 bl FUN_02004D4C ldr r0, [r4, #0x44] bl MOD16_021EC110 _021EC108: pop {r4, pc} nop _021EC10C: .word 0x0000FFFF thumb_func_end MOD16_021EC0E8 thumb_func_start MOD16_021EC110 MOD16_021EC110: ; 0x021EC110 ldr r3, _021EC11C ; =0x02004829 add r1, r0, #0 mov r0, #8 mov r2, #0 bx r3 nop _021EC11C: .word 0x02004829 thumb_func_end MOD16_021EC110 thumb_func_start MOD16_021EC120 MOD16_021EC120: ; 0x021EC120 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r2, [r4, #0x48] ldr r1, [r5, #0x70] cmp r2, r1 beq _021EC140 cmp r2, #1 bne _021EC138 bl MOD16_021EC094 b _021EC13C _021EC138: bl MOD16_021EC0A8 _021EC13C: ldr r0, [r4, #0x48] str r0, [r5, #0x70] _021EC140: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EC120 thumb_func_start MOD16_021EC144 MOD16_021EC144: ; 0x021EC144 push {r4, r5, r6, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r6, r0, #0 ldr r0, _021EC1B4 ; =0x021C48B8 mov r1, #1 ldr r0, [r0, #0x48] tst r0, r1 beq _021EC198 str r1, [r5, #0x28] mov r0, #0 str r0, [r5, #0x18] ldr r1, [r5, #0x64] cmp r1, #0 bne _021EC17E ldr r1, [r5, #0x2c] cmp r1, #1 bne _021EC172 bl FUN_02005614 _021EC172: add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EBFD4 pop {r4, r5, r6, pc} _021EC17E: ldr r0, [r5, #0x2c] cmp r0, #0 bne _021EC190 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EBFD4 pop {r4, r5, r6, pc} _021EC190: add r0, r5, #0 bl MOD16_021EC000 pop {r4, r5, r6, pc} _021EC198: ldr r0, [r5, #0x28] cmp r0, #1 bne _021EC1A6 mov r0, #2 str r0, [r5, #0x28] str r0, [r5, #0x18] pop {r4, r5, r6, pc} _021EC1A6: cmp r0, #2 bne _021EC1B0 mov r0, #0 str r0, [r5, #0x28] str r1, [r5, #0x18] _021EC1B0: pop {r4, r5, r6, pc} nop _021EC1B4: .word 0x021C48B8 thumb_func_end MOD16_021EC144 thumb_func_start MOD16_021EC1B8 MOD16_021EC1B8: ; 0x021EC1B8 push {r3, r4, lr} sub sp, #4 ldr r4, [r0] ldr r0, [r1, #8] bl MOD16_021E95C8 cmp r0, #1 bne _021EC1D6 mov r3, #0x18 add r0, r4, #0 mov r1, #0xb4 mov r2, #0x83 str r3, [sp] bl MOD16_021D8B04 _021EC1D6: add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021EC1B8 thumb_func_start MOD16_021EC1DC MOD16_021EC1DC: ; 0x021EC1DC push {r4, lr} add r4, r0, #0 ldr r1, _021EC1F8 ; =0x0000FFFF mov r0, #1 add r2, r4, #0 bl FUN_02004D20 add r4, #0x14 ldr r1, _021EC1F8 ; =0x0000FFFF mov r0, #8 add r2, r4, #0 bl FUN_02004D20 pop {r4, pc} .align 2, 0 _021EC1F8: .word 0x0000FFFF thumb_func_end MOD16_021EC1DC thumb_func_start MOD16_021EC1FC MOD16_021EC1FC: ; 0x021EC1FC push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021EC274 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021EC2C0 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021EC2E8 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021EC318 str r0, [r5, #0x24] ldr r0, _021EC244 ; =MOD16_021EC31C str r0, [r5, #8] ldr r0, _021EC248 ; =MOD16_021EC340 str r0, [r5, #0xc] ldr r0, _021EC24C ; =MOD16_021EC350 str r0, [r5, #0x10] ldr r0, _021EC250 ; =MOD16_021EC364 str r0, [r5, #0x14] ldr r0, _021EC254 ; =MOD16_021EC3E8 str r0, [r5, #0x18] ldr r0, _021EC258 ; =MOD16_021EC3EC str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EC244: .word MOD16_021EC31C _021EC248: .word MOD16_021EC340 _021EC24C: .word MOD16_021EC350 _021EC250: .word MOD16_021EC364 _021EC254: .word MOD16_021EC3E8 _021EC258: .word MOD16_021EC3EC thumb_func_end MOD16_021EC1FC thumb_func_start MOD16_021EC25C MOD16_021EC25C: ; 0x021EC25C push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021EC2EC ldr r0, [r4, #4] bl MOD16_021EC300 ldr r0, [r4, #0x20] bl MOD16_021EC314 pop {r4, pc} thumb_func_end MOD16_021EC25C thumb_func_start MOD16_021EC274 MOD16_021EC274: ; 0x021EC274 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0xc bl FUN_02016998 add r4, r0, #0 bne _021EC286 bl ErrorHandling _021EC286: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #0xa] strb r0, [r4, #0xb] add r0, r5, #0 bl MOD16_021D7AD8 str r0, [r4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #8] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EC274 thumb_func_start MOD16_021EC2C0 MOD16_021EC2C0: ; 0x021EC2C0 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021EC2D2 bl ErrorHandling _021EC2D2: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EC2C0 thumb_func_start MOD16_021EC2E8 MOD16_021EC2E8: ; 0x021EC2E8 mov r0, #0 bx lr thumb_func_end MOD16_021EC2E8 thumb_func_start MOD16_021EC2EC MOD16_021EC2EC: ; 0x021EC2EC push {r4, lr} add r4, r0, #0 bne _021EC2F6 bl ErrorHandling _021EC2F6: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EC2EC thumb_func_start MOD16_021EC300 MOD16_021EC300: ; 0x021EC300 push {r4, lr} add r4, r0, #0 bne _021EC30A bl ErrorHandling _021EC30A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EC300 thumb_func_start MOD16_021EC314 MOD16_021EC314: ; 0x021EC314 bx lr .align 2, 0 thumb_func_end MOD16_021EC314 thumb_func_start MOD16_021EC318 MOD16_021EC318: ; 0x021EC318 mov r0, #0 bx lr thumb_func_end MOD16_021EC318 thumb_func_start MOD16_021EC31C MOD16_021EC31C: ; 0x021EC31C push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #4] mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021EC330 bl ErrorHandling _021EC330: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] str r4, [r5, #8] mov r0, #1 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EC31C thumb_func_start MOD16_021EC340 MOD16_021EC340: ; 0x021EC340 ldr r0, [r0, #0xc] cmp r0, #1 bne _021EC34A mov r0, #1 bx lr _021EC34A: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021EC340 thumb_func_start MOD16_021EC350 MOD16_021EC350: ; 0x021EC350 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EC350 thumb_func_start MOD16_021EC364 MOD16_021EC364: ; 0x021EC364 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r3, [r3, #8] ldr r5, [r4, #8] cmp r0, #3 bhi _021EC3E2 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EC382: ; jump table .short _021EC38A - _021EC382 - 2 ; case 0 .short _021EC3A8 - _021EC382 - 2 ; case 1 .short _021EC3C8 - _021EC382 - 2 ; case 2 .short _021EC3DE - _021EC382 - 2 ; case 3 _021EC38A: ldr r0, [r4, #4] mov r1, #0x14 bl FUN_02016998 str r0, [r4, #8] mov r2, #0x14 mov r1, #0 _021EC398: strb r1, [r0] add r0, r0, #1 sub r2, r2, #1 bne _021EC398 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EC3E2 _021EC3A8: ldr r0, [r4, #4] add r1, r6, #0 str r0, [sp] add r0, r5, #0 bl MOD16_021EC520 add r0, r5, #0 add r1, r6, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021EC474 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EC3E2 _021EC3C8: add r0, r5, #0 add r1, r6, #0 mov r3, #1 bl MOD16_021EC4E0 cmp r0, #0 beq _021EC3E2 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EC3E2 _021EC3DE: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021EC3E2: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EC364 thumb_func_start MOD16_021EC3E8 MOD16_021EC3E8: ; 0x021EC3E8 mov r0, #0 bx lr thumb_func_end MOD16_021EC3E8 thumb_func_start MOD16_021EC3EC MOD16_021EC3EC: ; 0x021EC3EC push {r4, lr} add r4, r1, #0 ldr r1, [r4] add r3, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021EC456 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021EC406: ; jump table .short _021EC410 - _021EC406 - 2 ; case 0 .short _021EC420 - _021EC406 - 2 ; case 1 .short _021EC434 - _021EC406 - 2 ; case 2 .short _021EC442 - _021EC406 - 2 ; case 3 .short _021EC452 - _021EC406 - 2 ; case 4 _021EC410: add r1, r3, #0 mov r3, #0 bl MOD16_021EC474 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EC456 _021EC420: add r1, r3, #0 mov r3, #0 bl MOD16_021EC4E0 cmp r0, #0 beq _021EC456 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EC456 _021EC434: add r1, r3, #0 bl MOD16_021EC574 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EC456 _021EC442: bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EC456 _021EC452: mov r0, #1 pop {r4, pc} _021EC456: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EC3EC thumb_func_start MOD16_021EC45C MOD16_021EC45C: ; 0x021EC45C ldr r3, _021EC464 ; =0x02020399 ldr r0, [r0, #0x10] mov r1, #1 bx r3 .align 2, 0 _021EC464: .word 0x02020399 thumb_func_end MOD16_021EC45C thumb_func_start MOD16_021EC468 MOD16_021EC468: ; 0x021EC468 ldr r3, _021EC470 ; =0x02020399 ldr r0, [r0, #0x10] mov r1, #0 bx r3 .align 2, 0 _021EC470: .word 0x02020399 thumb_func_end MOD16_021EC468 thumb_func_start MOD16_021EC474 MOD16_021EC474: ; 0x021EC474 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021EC45C ldr r0, [r4, #8] bl MOD16_021E8C68 cmp r0, #0 beq _021EC4DC cmp r6, #0 beq _021EC4B8 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r3, r4, r5, r6, pc} _021EC4B8: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2a str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021EC4DC: add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021EC474 thumb_func_start MOD16_021EC4E0 MOD16_021EC4E0: ; 0x021EC4E0 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #8] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r5] beq _021EC500 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 b _021EC50A _021EC500: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C _021EC50A: cmp r0, #0 beq _021EC51C cmp r4, #0 beq _021EC518 add r0, r6, #0 bl MOD16_021EC468 _021EC518: mov r0, #1 pop {r4, r5, r6, pc} _021EC51C: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EC4E0 thumb_func_start MOD16_021EC520 MOD16_021EC520: ; 0x021EC520 push {r3, r4, r5, r6, r7, lr} ldr r4, [sp, #0x18] add r7, r2, #0 add r5, r1, #0 add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 bl MOD16_021EC5A8 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EC7E8 add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 bl MOD16_021EC898 add r0, r6, #0 add r1, r5, #0 add r2, r4, #0 bl MOD16_021EC610 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 add r3, r4, #0 bl MOD16_021EC700 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 add r3, r4, #0 bl MOD16_021EC7E0 add r0, r5, #0 add r1, r7, #0 bl MOD16_021EC9B0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EC520 thumb_func_start MOD16_021EC574 MOD16_021EC574: ; 0x021EC574 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021EC7E4 add r0, r5, #0 bl MOD16_021EC7D4 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EC6BC ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_02018744 add r0, r4, #0 bl MOD16_021ECA2C pop {r3, r4, r5, pc} thumb_func_end MOD16_021EC574 thumb_func_start MOD16_021EC5A8 MOD16_021EC5A8: ; 0x021EC5A8 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] add r5, r2, #0 str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #3 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x4a mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EC5A8 thumb_func_start MOD16_021EC610 MOD16_021EC610: ; 0x021EC610 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021EC6AC ; =0x00001BB5 mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x5d bl FUN_020091E0 str r0, [r5] bl FUN_02009B04 ldr r0, [r5] bl FUN_02009474 ldr r0, _021EC6B0 ; =0x00001B66 add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #5 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0xe mov r3, #0 bl FUN_02009298 str r0, [r5, #4] bl FUN_02009D68 ldr r0, [r5, #4] bl FUN_02009474 ldr r0, _021EC6B4 ; =0x00001BB3 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5b mov r3, #1 bl FUN_02009358 str r0, [r5, #8] ldr r0, _021EC6B8 ; =0x00001BB4 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5c mov r3, #1 bl FUN_02009358 str r0, [r5, #0xc] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EC6AC: .word 0x00001BB5 _021EC6B0: .word 0x00001B66 _021EC6B4: .word 0x00001BB3 _021EC6B8: .word 0x00001BB4 thumb_func_end MOD16_021EC610 thumb_func_start MOD16_021EC6BC MOD16_021EC6BC: ; 0x021EC6BC push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #4] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #4] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #8] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0xc] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EC6BC thumb_func_start MOD16_021EC700 MOD16_021EC700: ; 0x021EC700 push {r4, r5, r6, r7, lr} sub sp, #0x74 add r6, r2, #0 add r5, r0, #0 ldr r0, [r6, #4] add r7, r3, #0 ldr r4, [r1] bl MOD16_021D9DE8 ldr r3, _021EC7CC ; =0x00001BB4 str r0, [sp, #0x2c] mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 ldr r1, [r4, r0] str r1, [sp, #0x14] add r1, r0, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r0, #0 add r1, #8 ldr r1, [r4, r1] add r0, #0xc str r1, [sp, #0x1c] ldr r0, [r4, r0] add r1, r3, #1 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r2, r3, #0 add r0, sp, #0x50 sub r2, #0x4e sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x30] add r0, sp, #0x50 str r0, [sp, #0x34] mov r0, #0x1f str r0, [sp, #0x44] mov r0, #1 str r0, [sp, #0x48] str r7, [sp, #0x4c] ldr r1, [r6, #4] ldr r0, _021EC7D0 ; =0x00001748 ldr r0, [r1, r0] ldr r1, [sp, #0x2c] bl FUN_02087B98 add r4, r0, #0 ldr r1, [r6, #4] ldr r0, _021EC7D0 ; =0x00001748 ldr r0, [r1, r0] ldr r1, [sp, #0x2c] bl FUN_02087BD8 add r7, r0, #0 mov r0, #0x2a lsl r0, r0, #0xe str r0, [sp, #0x38] add r0, r4, #0 add r0, #0x58 lsl r0, r0, #0xc str r0, [sp, #0x3c] add r0, sp, #0x30 bl FUN_0201FF84 str r0, [r5, #0x10] ldr r0, [r6, #4] bl MOD16_021D9F4C cmp r0, #0 ldr r0, [r5, #0x10] bne _021EC7B2 mov r1, #5 bl FUN_02020130 b _021EC7B8 _021EC7B2: mov r1, #6 bl FUN_02020130 _021EC7B8: ldr r0, [r5, #0x10] add r1, r4, #0 bl MOD16_021ECA48 ldr r0, [r5, #0x10] add r1, r7, #0 bl MOD16_021ECA74 add sp, #0x74 pop {r4, r5, r6, r7, pc} .align 2, 0 _021EC7CC: .word 0x00001BB4 _021EC7D0: .word 0x00001748 thumb_func_end MOD16_021EC700 thumb_func_start MOD16_021EC7D4 MOD16_021EC7D4: ; 0x021EC7D4 ldr r3, _021EC7DC ; =0x0201FFC9 ldr r0, [r0, #0x10] bx r3 nop _021EC7DC: .word 0x0201FFC9 thumb_func_end MOD16_021EC7D4 thumb_func_start MOD16_021EC7E0 MOD16_021EC7E0: ; 0x021EC7E0 bx lr .align 2, 0 thumb_func_end MOD16_021EC7E0 thumb_func_start MOD16_021EC7E4 MOD16_021EC7E4: ; 0x021EC7E4 bx lr .align 2, 0 thumb_func_end MOD16_021EC7E4 thumb_func_start MOD16_021EC7E8 MOD16_021EC7E8: ; 0x021EC7E8 push {r4, r5, r6, lr} sub sp, #0x10 add r5, r0, #0 mov r0, #0x20 add r6, r1, #0 bl FUN_020219F4 add r4, r0, #0 ldr r2, _021EC890 ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r6, #0 bl FUN_0200A86C mov r1, #0x2b add r2, r4, #0 add r6, r0, #0 bl FUN_0200A8E0 mov r0, #0 mov r3, #1 add r1, r4, #0 add r2, r0, #0 lsl r3, r3, #8 bl FUN_02002F40 add r3, r0, #0 mov r0, #0x18 str r0, [sp] mov r1, #0 ldr r0, _021EC894 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 add r0, r6, #0 mov r1, #9 add r2, r4, #0 bl FUN_0200A8E0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EC894 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 mov r3, #0x20 bl FUN_0201BDE0 add r0, r6, #0 mov r1, #9 add r2, r4, #0 bl FUN_0200A8E0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EC894 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 mov r3, #0x98 bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r6, #0 bl FUN_0200A8B8 add sp, #0x10 pop {r4, r5, r6, pc} nop _021EC890: .word 0x00000266 _021EC894: .word 0x00020100 thumb_func_end MOD16_021EC7E8 thumb_func_start MOD16_021EC898 MOD16_021EC898: ; 0x021EC898 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 mov r0, #0x20 add r1, r7, #0 bl FUN_020219F4 mov r2, #0x9b add r4, r0, #0 mov r0, #0 mov r1, #0x1a lsl r2, r2, #2 add r3, r7, #0 bl FUN_0200A86C str r0, [sp, #0x10] ldr r0, [r6, #4] bl MOD16_021D9DE8 add r1, r7, #0 str r0, [sp, #0x14] bl FUN_0200AA50 str r0, [sp, #0x18] mov r0, #0x98 str r0, [sp] mov r1, #0 ldr r0, _021EC9A8 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] ldr r2, [sp, #0x18] add r0, r0, #4 mov r3, #0x1a bl FUN_0201BDE0 ldr r0, [sp, #0x10] ldr r1, [sp, #0x14] add r2, r4, #0 bl FUN_0200A8E0 mov r0, #0 add r1, r4, #0 add r2, r0, #0 bl FUN_02002E14 mov r1, #0x6e sub r3, r1, r0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EC9A8 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 ldr r0, [sp, #0x18] bl FUN_02021A20 ldr r0, [sp, #0x10] bl FUN_0200A8B8 ldr r2, _021EC9AC ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r7, #0 bl FUN_0200A86C add r7, r0, #0 ldr r0, [r6, #4] bl MOD16_021D9F40 add r2, r0, #0 mov r0, #0x98 str r0, [sp] mov r1, #0 ldr r0, _021EC9A8 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] mov r3, #0x92 add r0, r0, #4 bl FUN_0201BDE0 ldr r0, [r6, #4] bl MOD16_021D9F4C cmp r0, #0 bne _021EC966 add r0, r7, #0 mov r1, #0x5f add r2, r4, #0 bl FUN_0200A8E0 b _021EC970 _021EC966: add r0, r7, #0 mov r1, #0x60 add r2, r4, #0 bl FUN_0200A8E0 _021EC970: mov r0, #0 add r1, r4, #0 add r2, r0, #0 bl FUN_02002E14 mov r1, #0xe6 sub r3, r1, r0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EC9A8 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r7, #0 bl FUN_0200A8B8 add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _021EC9A8: .word 0x00020100 _021EC9AC: .word 0x00000266 thumb_func_end MOD16_021EC898 thumb_func_start MOD16_021EC9B0 MOD16_021EC9B0: ; 0x021EC9B0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 bl MOD16_021D8700 add r6, r0, #0 ldr r0, [r4, #4] bl MOD16_021D9DE8 add r7, r0, #0 ldr r1, [r4, #4] ldr r0, _021ECA28 ; =0x00001748 ldr r0, [r1, r0] add r1, r7, #0 bl FUN_02087BB8 str r0, [sp, #8] ldr r1, [r4, #4] ldr r0, _021ECA28 ; =0x00001748 ldr r0, [r1, r0] add r1, r7, #0 bl FUN_02087BF8 str r0, [sp, #0xc] mov r0, #0x58 str r0, [sp] ldr r0, [sp, #8] add r2, r7, #0 add r0, #0x58 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r4, #4] mov r3, #2 bl MOD16_021D7FB4 add r0, r6, #0 mov r1, #6 mov r2, #0 bl FUN_02007558 mov r1, #0xf mov r3, #0 add r0, r6, #0 add r2, r1, #0 str r3, [sp] bl FUN_02007E68 ldr r1, [sp, #8] add r0, r6, #0 bl MOD16_021ECA64 ldr r1, [sp, #0xc] add r0, r6, #0 bl MOD16_021ECA98 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _021ECA28: .word 0x00001748 thumb_func_end MOD16_021EC9B0 thumb_func_start MOD16_021ECA2C MOD16_021ECA2C: ; 0x021ECA2C push {r4, lr} ldr r0, [r0] bl MOD16_021D8700 add r4, r0, #0 mov r1, #6 mov r2, #1 bl FUN_02007558 add r0, r4, #0 bl FUN_02007EEC pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ECA2C thumb_func_start MOD16_021ECA48 MOD16_021ECA48: ; 0x021ECA48 push {lr} sub sp, #0xc add r1, #0x58 mov r2, #0x2a lsl r1, r1, #0xc lsl r2, r2, #0xe str r1, [sp, #4] add r1, sp, #0 str r2, [sp] bl FUN_02020044 add sp, #0xc pop {pc} .align 2, 0 thumb_func_end MOD16_021ECA48 thumb_func_start MOD16_021ECA64 MOD16_021ECA64: ; 0x021ECA64 ldr r3, _021ECA70 ; =0x02007559 add r2, r1, #0 mov r1, #1 add r2, #0x58 bx r3 nop _021ECA70: .word 0x02007559 thumb_func_end MOD16_021ECA64 thumb_func_start MOD16_021ECA74 MOD16_021ECA74: ; 0x021ECA74 push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 mov r0, #1 lsl r0, r0, #0x14 lsl r1, r1, #0xc bl FX_Div str r0, [sp] str r0, [sp, #4] add r0, r4, #0 add r1, sp, #0 mov r2, #2 bl FUN_02020074 add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021ECA74 thumb_func_start MOD16_021ECA98 MOD16_021ECA98: ; 0x021ECA98 push {r3, r4, r5, lr} add r4, r0, #0 mov r0, #1 lsl r0, r0, #0x14 lsl r1, r1, #0xc bl FX_Div asr r2, r0, #0x1f lsl r3, r2, #0x14 lsr r1, r0, #0xc lsl r2, r0, #0x14 mov r0, #2 orr r3, r1 mov r1, #0 lsl r0, r0, #0xa add r2, r2, r0 adc r3, r1 lsl r0, r3, #0x14 lsr r1, r2, #0xc orr r1, r0 lsl r0, r1, #4 asr r5, r0, #0x10 add r0, r4, #0 mov r1, #0xc add r2, r5, #0 bl FUN_02007558 add r0, r4, #0 mov r1, #0xd add r2, r5, #0 bl FUN_02007558 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ECA98 thumb_func_start MOD16_021ECADC MOD16_021ECADC: ; 0x021ECADC push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021ECB54 add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021ECB98 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021ECBC0 str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021ECC50 str r0, [r5, #0x24] ldr r0, _021ECB24 ; =MOD16_021ECC54 str r0, [r5, #8] ldr r0, _021ECB28 ; =MOD16_021ECCA0 str r0, [r5, #0xc] ldr r0, _021ECB2C ; =MOD16_021ECCF4 str r0, [r5, #0x10] ldr r0, _021ECB30 ; =MOD16_021ECD08 str r0, [r5, #0x14] ldr r0, _021ECB34 ; =MOD16_021ECD90 str r0, [r5, #0x18] ldr r0, _021ECB38 ; =MOD16_021ECDC0 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021ECB24: .word MOD16_021ECC54 _021ECB28: .word MOD16_021ECCA0 _021ECB2C: .word MOD16_021ECCF4 _021ECB30: .word MOD16_021ECD08 _021ECB34: .word MOD16_021ECD90 _021ECB38: .word MOD16_021ECDC0 thumb_func_end MOD16_021ECADC thumb_func_start MOD16_021ECB3C MOD16_021ECB3C: ; 0x021ECB3C push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021ECC08 ldr r0, [r4, #4] bl MOD16_021ECC1C ldr r0, [r4, #0x20] bl MOD16_021ECC30 pop {r4, pc} thumb_func_end MOD16_021ECB3C thumb_func_start MOD16_021ECB54 MOD16_021ECB54: ; 0x021ECB54 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x10 bl FUN_02016998 add r4, r0, #0 bne _021ECB66 bl ErrorHandling _021ECB66: add r2, r4, #0 mov r1, #0x10 mov r0, #0 _021ECB6C: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021ECB6C add r0, r5, #0 bl MOD16_021D7AEC str r0, [r4] add r0, r5, #0 mov r1, #3 bl MOD16_021D7B7C str r0, [r4, #0xc] mov r0, #0 str r0, [r4, #4] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #8] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ECB54 thumb_func_start MOD16_021ECB98 MOD16_021ECB98: ; 0x021ECB98 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021ECBAA bl ErrorHandling _021ECBAA: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021ECB98 thumb_func_start MOD16_021ECBC0 MOD16_021ECBC0: ; 0x021ECBC0 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 bl MOD16_021ECC50 add r7, r0, #0 mov r1, #0x14 mul r7, r1 add r0, r5, #0 add r1, r7, #0 bl FUN_02016998 add r4, r0, #0 bne _021ECBE0 bl ErrorHandling _021ECBE0: add r0, r4, #0 mov r1, #0 add r2, r7, #0 bl Call_FillMemWithValue add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 mov r3, #1 bl MOD16_021DB000 add r1, r4, #0 add r0, r5, #0 add r1, #0x14 add r2, r6, #0 mov r3, #2 bl MOD16_021DB058 add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021ECBC0 thumb_func_start MOD16_021ECC08 MOD16_021ECC08: ; 0x021ECC08 push {r4, lr} add r4, r0, #0 bne _021ECC12 bl ErrorHandling _021ECC12: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ECC08 thumb_func_start MOD16_021ECC1C MOD16_021ECC1C: ; 0x021ECC1C push {r4, lr} add r4, r0, #0 bne _021ECC26 bl ErrorHandling _021ECC26: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ECC1C thumb_func_start MOD16_021ECC30 MOD16_021ECC30: ; 0x021ECC30 push {r4, lr} add r4, r0, #0 bne _021ECC3A bl ErrorHandling _021ECC3A: add r0, r4, #0 bl MOD16_021DAC7C add r0, r4, #0 add r0, #0x14 bl MOD16_021DAC7C add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_end MOD16_021ECC30 thumb_func_start MOD16_021ECC50 MOD16_021ECC50: ; 0x021ECC50 mov r0, #2 bx lr thumb_func_end MOD16_021ECC50 thumb_func_start MOD16_021ECC54 MOD16_021ECC54: ; 0x021ECC54 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] add r4, r1, #0 mov r1, #0x18 bl FUN_02016998 add r6, r0, #0 add r2, r6, #0 mov r1, #0x18 mov r0, #0 _021ECC6A: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021ECC6A mov r1, #0 add r2, r6, #0 mov r0, #4 _021ECC78: add r1, r1, #1 str r0, [r2, #0x10] add r2, r2, #4 cmp r1, #2 blt _021ECC78 mov r0, #0 str r0, [r4, #4] ldr r2, [r5, #4] add r0, r6, #0 add r1, r4, #0 bl MOD16_021ECF40 add r0, r6, #0 add r1, r4, #0 bl MOD16_021ECFA4 str r6, [r5, #8] mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021ECC54 thumb_func_start MOD16_021ECCA0 MOD16_021ECCA0: ; 0x021ECCA0 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r0, #0xc] ldr r4, [r0, #8] cmp r1, #1 bne _021ECCB0 mov r0, #1 pop {r3, r4, r5, pc} _021ECCB0: ldr r0, [r0, #0x10] cmp r0, #1 bne _021ECCBA mov r0, #0 pop {r3, r4, r5, pc} _021ECCBA: ldr r0, [r5, #0xc] bl MOD16_021E95C0 cmp r0, #0 beq _021ECCEE add r0, r4, #0 bl MOD16_021ECF94 ldr r0, [r5, #0xc] bl MOD16_021E95C8 cmp r0, #0 beq _021ECCE6 ldr r0, [r5, #8] bl MOD16_021D9FB8 cmp r0, #0 beq _021ECCE6 add r0, r4, #0 add r1, r5, #0 bl MOD16_021ED4C8 _021ECCE6: add r0, r4, #0 add r1, r5, #0 bl MOD16_021ECFA4 _021ECCEE: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ECCA0 thumb_func_start MOD16_021ECCF4 MOD16_021ECCF4: ; 0x021ECCF4 push {r4, lr} ldr r4, [r0, #8] add r0, r4, #0 bl MOD16_021ECFD4 add r0, r4, #0 bl FUN_02016A18 mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021ECCF4 thumb_func_start MOD16_021ECD08 MOD16_021ECD08: ; 0x021ECD08 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #3 bhi _021ECD8C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021ECD24: ; jump table .short _021ECD2C - _021ECD24 - 2 ; case 0 .short _021ECD46 - _021ECD24 - 2 ; case 1 .short _021ECD64 - _021ECD24 - 2 ; case 2 .short _021ECD7A - _021ECD24 - 2 ; case 3 _021ECD2C: ldr r0, [r4, #4] mov r1, #0x40 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x40 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ECD8C _021ECD46: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021ED044 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021ECE98 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ECD8C _021ECD64: add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021ECF04 cmp r0, #0 beq _021ECD8C ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ECD8C _021ECD7A: mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #0 bl MOD16_021D8B3C mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021ECD8C: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021ECD08 thumb_func_start MOD16_021ECD90 MOD16_021ECD90: ; 0x021ECD90 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 ldr r0, [r3, #8] add r4, r2, #0 str r0, [sp] add r5, r1, #0 ldr r0, [r4, #0xc] ldr r7, [r5, #8] bl MOD16_021E95C0 cmp r0, #0 beq _021ECDBC ldr r2, [sp] ldr r3, [r5, #4] add r0, r7, #0 add r1, r6, #0 bl MOD16_021ED46C add r0, r6, #0 add r1, r4, #0 bl MOD16_021ED50C _021ECDBC: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021ECD90 thumb_func_start MOD16_021ECDC0 MOD16_021ECDC0: ; 0x021ECDC0 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #4 bhi _021ECE42 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021ECDDC: ; jump table .short _021ECDE6 - _021ECDDC - 2 ; case 0 .short _021ECE08 - _021ECDDC - 2 ; case 1 .short _021ECE1E - _021ECDDC - 2 ; case 2 .short _021ECE30 - _021ECDDC - 2 ; case 3 .short _021ECE3E - _021ECDDC - 2 ; case 4 _021ECDE6: mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 bl MOD16_021D8B3C add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021ECE98 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ECE42 _021ECE08: add r0, r6, #0 add r1, r5, #0 mov r3, #0 bl MOD16_021ECF04 cmp r0, #0 beq _021ECE42 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ECE42 _021ECE1E: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021ED074 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ECE42 _021ECE30: add r0, r6, #0 bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ECE42 _021ECE3E: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021ECE42: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021ECDC0 thumb_func_start MOD16_021ECE48 MOD16_021ECE48: ; 0x021ECE48 push {r3, r4, r5, r6, r7, lr} mov r6, #1 add r5, r0, #0 mov r4, #0 add r7, r6, #0 _021ECE52: ldr r0, [r5] add r1, r6, #0 bl FUN_02020398 ldr r0, [r5, #8] add r1, r7, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021ECE52 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021ECE48 thumb_func_start MOD16_021ECE70 MOD16_021ECE70: ; 0x021ECE70 push {r3, r4, r5, r6, r7, lr} mov r4, #0 add r5, r0, #0 add r6, r4, #0 add r7, r4, #0 _021ECE7A: ldr r0, [r5] add r1, r6, #0 bl FUN_02020398 ldr r0, [r5, #8] add r1, r7, #0 ldr r0, [r0] bl FUN_02011AF0 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021ECE7A pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021ECE70 thumb_func_start MOD16_021ECE98 MOD16_021ECE98: ; 0x021ECE98 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021ECE48 ldr r0, [r4, #0xc] bl MOD16_021E95B8 cmp r0, #0 beq _021ECF00 cmp r6, #0 beq _021ECEDC mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r2, [r5] lsl r0, r0, #4 add r0, r2, r0 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r3, r4, r5, r6, pc} _021ECEDC: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r3, [r5] lsl r0, r0, #4 add r0, r3, r0 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021ECF00: add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021ECE98 thumb_func_start MOD16_021ECF04 MOD16_021ECF04: ; 0x021ECF04 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #0xc] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E95B8 cmp r0, #0 beq _021ECF24 mov r0, #0x19 ldr r1, [r5] lsl r0, r0, #4 add r0, r1, r0 bl MOD16_021D89B4 b _021ECF2A _021ECF24: mov r0, #2 bl FUN_0200A344 _021ECF2A: cmp r0, #0 beq _021ECF3C cmp r4, #0 beq _021ECF38 add r0, r6, #0 bl MOD16_021ECE70 _021ECF38: mov r0, #1 pop {r4, r5, r6, pc} _021ECF3C: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021ECF04 thumb_func_start MOD16_021ECF40 MOD16_021ECF40: ; 0x021ECF40 push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #8 bl FUN_02016998 str r0, [r5, #4] mov r0, #0x80 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x40 mov r2, #0xb0 mov r3, #8 bl MOD16_021D7C98 mov r0, #0xf8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x40 add r0, r0, #4 mov r2, #0xb0 mov r3, #0x80 bl MOD16_021D7C98 str r4, [r5, #8] str r5, [r5, #0xc] str r6, [sp] add r3, r5, #0 ldr r0, [r5, #4] ldr r2, _021ECF90 ; =MOD16_021ECFEC mov r1, #2 add r3, #8 bl FUN_020220C4 str r0, [r5] add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _021ECF90: .word MOD16_021ECFEC thumb_func_end MOD16_021ECF40 thumb_func_start MOD16_021ECF94 MOD16_021ECF94: ; 0x021ECF94 mov r2, #0 mov r1, #3 _021ECF98: add r2, r2, #1 str r1, [r0, #0x10] add r0, r0, #4 cmp r2, #2 blt _021ECF98 bx lr thumb_func_end MOD16_021ECF94 thumb_func_start MOD16_021ECFA4 MOD16_021ECFA4: ; 0x021ECFA4 push {r3, r4, r5, lr} add r4, r0, #0 ldr r0, [r4] add r5, r1, #0 bl FUN_02022144 ldr r0, [r5, #4] cmp r0, #0 beq _021ECFBC cmp r0, #1 beq _021ECFC8 pop {r3, r4, r5, pc} _021ECFBC: ldr r0, [r4, #0x10] cmp r0, #2 beq _021ECFD2 mov r0, #1 str r0, [r4, #0x10] pop {r3, r4, r5, pc} _021ECFC8: ldr r0, [r4, #0x14] cmp r0, #2 beq _021ECFD2 mov r0, #1 str r0, [r4, #0x14] _021ECFD2: pop {r3, r4, r5, pc} thumb_func_end MOD16_021ECFA4 thumb_func_start MOD16_021ECFD4 MOD16_021ECFD4: ; 0x021ECFD4 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0202212C ldr r0, [r4, #4] bl FUN_02016A18 mov r0, #0 str r0, [r4, #4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ECFD4 thumb_func_start MOD16_021ECFEC MOD16_021ECFEC: ; 0x021ECFEC push {r4, lr} ldr r3, [r2, #4] ldr r4, [r2] lsl r2, r0, #2 add r2, r3, r2 str r1, [r2, #0x10] cmp r1, #2 bne _021ED03C cmp r0, #0 beq _021ED006 cmp r0, #1 beq _021ED022 pop {r4, pc} _021ED006: ldr r0, [r4, #4] cmp r0, #0 beq _021ED03C ldr r0, _021ED040 ; =0x000005DD bl FUN_020054C8 mov r0, #0 str r0, [r4, #4] ldr r2, [r4] mov r0, #1 ldr r1, [r2] orr r0, r1 str r0, [r2] pop {r4, pc} _021ED022: ldr r0, [r4, #4] cmp r0, #1 beq _021ED03C ldr r0, _021ED040 ; =0x000005DD bl FUN_020054C8 mov r0, #1 str r0, [r4, #4] ldr r2, [r4] mov r0, #2 ldr r1, [r2] orr r0, r1 str r0, [r2] _021ED03C: pop {r4, pc} nop _021ED040: .word 0x000005DD thumb_func_end MOD16_021ECFEC thumb_func_start MOD16_021ED044 MOD16_021ED044: ; 0x021ED044 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r2, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD16_021ED0D0 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021ED138 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021ED1EC add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021ED2B4 pop {r4, r5, r6, pc} thumb_func_end MOD16_021ED044 thumb_func_start MOD16_021ED074 MOD16_021ED074: ; 0x021ED074 push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 mov r0, #0x20 add r6, r2, #0 str r0, [sp] add r4, r1, #0 str r6, [sp, #4] ldr r0, [r4] mov r1, #9 mov r2, #4 mov r3, #0x80 bl MOD16_021D8CFC mov r0, #0x20 str r0, [sp] str r6, [sp, #4] ldr r0, [r4] mov r1, #9 mov r2, #4 mov r3, #0xa0 bl MOD16_021D8CFC add r0, r5, #0 bl MOD16_021ED29C add r0, r5, #0 add r1, r4, #0 bl MOD16_021ED398 add r0, r5, #0 add r1, r4, #0 bl MOD16_021ED1B8 mov r4, #0 _021ED0BA: ldr r0, [r5, #0x38] cmp r0, #0 beq _021ED0C4 bl FUN_02016A18 _021ED0C4: add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021ED0BA add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021ED074 thumb_func_start MOD16_021ED0D0 MOD16_021ED0D0: ; 0x021ED0D0 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] add r5, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x22 mov r3, #6 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x3d mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #6 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ED0D0 thumb_func_start MOD16_021ED138 MOD16_021ED138: ; 0x021ED138 push {r4, r5, r6, r7, lr} sub sp, #0xc ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021ED1AC ; =0x0000238E add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x66 mov r3, #1 bl FUN_020091E0 str r0, [r5, #0x10] bl FUN_02009B04 ldr r0, [r5, #0x10] bl FUN_02009474 ldr r0, _021ED1B0 ; =0x0000238C add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x64 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x18] ldr r0, _021ED1B4 ; =0x0000238D add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x65 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x1c] add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _021ED1AC: .word 0x0000238E _021ED1B0: .word 0x0000238C _021ED1B4: .word 0x0000238D thumb_func_end MOD16_021ED138 thumb_func_start MOD16_021ED1B8 MOD16_021ED1B8: ; 0x021ED1B8 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x10] ldr r4, [r1] bl FUN_02009C0C mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x10] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x18] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x1c] bl FUN_02009490 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ED1B8 thumb_func_start MOD16_021ED1EC MOD16_021ED1EC: ; 0x021ED1EC push {r4, r5, r6, lr} sub sp, #0x70 ldr r4, [r1] ldr r3, _021ED294 ; =0x0000238D add r5, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #2 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 add r6, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] ldr r2, _021ED298 ; =0x0000083F str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #0x1e str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x1f str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] mov r0, #0x11 lsl r0, r0, #0xe str r0, [sp, #0x34] mov r0, #3 lsl r1, r1, #0xe lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c str r6, [sp, #0x48] bl FUN_0201FF84 mov r1, #1 str r0, [r5] bl FUN_02020130 mov r0, #0x2f lsl r0, r0, #0xe str r0, [sp, #0x34] mov r1, #0x1e mov r0, #3 lsl r1, r1, #0xe lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 mov r1, #1 str r0, [r5, #4] bl FUN_02020130 add sp, #0x70 pop {r4, r5, r6, pc} .align 2, 0 _021ED294: .word 0x0000238D _021ED298: .word 0x0000083F thumb_func_end MOD16_021ED1EC thumb_func_start MOD16_021ED29C MOD16_021ED29C: ; 0x021ED29C push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021ED2A2: ldr r0, [r5] bl FUN_0201FFC8 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021ED2A2 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ED29C thumb_func_start MOD16_021ED2B4 MOD16_021ED2B4: ; 0x021ED2B4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 add r5, r0, #0 ldr r0, [r5] add r6, r2, #0 ldr r4, [r1] cmp r0, #0 bne _021ED2C8 bl ErrorHandling _021ED2C8: mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, _021ED390 ; =0x0000083F bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] str r1, [sp, #8] mov r1, #0 bl FUN_02009E54 mov r1, #7 mvn r1, r1 str r1, [sp, #0x1c] mov r1, #2 mov r2, #0 str r0, [sp, #0x10] str r1, [sp, #0x20] str r2, [sp, #0x24] str r1, [sp, #0x28] str r6, [sp, #0x2c] bl FUN_0201E28C add r7, r0, #0 mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0xc mov r2, #2 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, _021ED394 ; =0x00000266 add r1, r6, #0 mov r3, #0x2d bl MOD16_021DB3C8 lsr r0, r0, #1 neg r0, r0 str r6, [sp, #0xc] str r0, [sp, #0x18] ldr r0, [r5] str r0, [sp, #0x14] add r0, sp, #8 bl MOD16_021DB2BC str r0, [r5, #8] ldr r0, [r0] add r1, r7, #4 bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0xc mov r2, #2 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, _021ED394 ; =0x00000266 add r1, r6, #0 mov r3, #0x2e bl MOD16_021DB3C8 lsr r0, r0, #1 neg r0, r0 str r6, [sp, #0xc] str r0, [sp, #0x18] ldr r0, [r5, #4] str r0, [sp, #0x14] add r0, sp, #8 bl MOD16_021DB2BC str r0, [r5, #0xc] ldr r0, [r0] add r1, r7, #4 bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021ED390: .word 0x0000083F _021ED394: .word 0x00000266 thumb_func_end MOD16_021ED2B4 thumb_func_start MOD16_021ED398 MOD16_021ED398: ; 0x021ED398 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021ED39E: ldr r0, [r5, #8] bl MOD16_021DB338 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _021ED39E pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ED398 thumb_func_start MOD16_021ED3B0 MOD16_021ED3B0: ; 0x021ED3B0 push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp, #4] str r1, [sp, #8] add r0, r1, #0 add r1, r3, #0 str r2, [sp, #0xc] ldr r4, [sp, #0x30] ldr r6, [sp, #0x40] mov r5, #0 bl MOD16_021D7B98 ldr r0, [sp, #0x3c] ldr r1, [sp, #0xc] str r0, [sp] ldr r0, [sp, #8] ldr r2, [sp, #0x28] ldr r3, [sp, #0x38] bl MOD16_021ED45C ldr r0, [sp, #8] bl FUN_0202022C cmp r0, #3 bhi _021ED422 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021ED3EE: ; jump table .short _021ED3F6 - _021ED3EE - 2 ; case 0 .short _021ED3F6 - _021ED3EE - 2 ; case 1 .short _021ED406 - _021ED3EE - 2 ; case 2 .short _021ED414 - _021ED3EE - 2 ; case 3 _021ED3F6: ldr r0, [r4] cmp r0, #0 beq _021ED422 mov r0, #0 mov r5, #1 mov r7, #9 str r0, [r4] b _021ED422 _021ED406: ldr r0, [r4] cmp r0, #1 beq _021ED422 mov r5, #1 mov r7, #0xa str r5, [r4] b _021ED422 _021ED414: ldr r0, [r4] cmp r0, #2 beq _021ED422 mov r0, #2 mov r5, #1 mov r7, #8 str r0, [r4] _021ED422: cmp r5, #0 beq _021ED458 ldr r0, [r6] cmp r0, #0 beq _021ED430 bl FUN_02016A18 _021ED430: ldr r0, [sp, #4] ldr r3, [sp, #0x34] ldr r0, [r0] add r1, r7, #0 add r2, sp, #0x10 bl MOD16_021D8D70 str r0, [r6] ldr r2, [sp, #0x10] ldr r1, [sp, #0x2c] ldr r2, [r2, #0xc] mov r0, #0x1f lsl r1, r1, #5 mov r3, #0x20 bl FUN_0201C2C8 cmp r0, #0 bne _021ED458 bl ErrorHandling _021ED458: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021ED3B0 thumb_func_start MOD16_021ED45C MOD16_021ED45C: ; 0x021ED45C push {r3, r4, lr} sub sp, #4 ldr r4, [sp, #0x10] str r4, [sp] bl MOD16_021D7C70 add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021ED45C thumb_func_start MOD16_021ED46C MOD16_021ED46C: ; 0x021ED46C push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r5, r0, #0 add r6, r5, #0 add r4, r5, #0 str r1, [sp, #0x1c] str r2, [sp, #0x20] str r3, [sp, #0x24] mov r7, #0 add r6, #0x38 add r4, #0x30 _021ED482: cmp r7, #0 bne _021ED48A mov r1, #4 b _021ED48C _021ED48A: mov r1, #5 _021ED48C: mov r0, #7 mvn r0, r0 str r0, [sp] str r1, [sp, #4] ldr r0, [sp, #0x24] str r4, [sp, #8] str r0, [sp, #0xc] mov r0, #4 str r0, [sp, #0x10] mov r0, #1 str r0, [sp, #0x14] str r6, [sp, #0x18] ldr r3, [sp, #0x20] ldr r0, [sp, #0x1c] ldr r1, [r5] ldr r2, [r5, #8] ldr r3, [r3, #0x10] bl MOD16_021ED3B0 ldr r0, [sp, #0x20] add r7, r7, #1 add r0, r0, #4 add r6, r6, #4 add r4, r4, #4 add r5, r5, #4 str r0, [sp, #0x20] cmp r7, #2 blt _021ED482 add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021ED46C thumb_func_start MOD16_021ED4C8 MOD16_021ED4C8: ; 0x021ED4C8 push {r3, lr} ldr r2, _021ED504 ; =0x021C48B8 ldr r3, [r2, #0x48] mov r2, #1 tst r3, r2 beq _021ED500 ldr r3, [r1, #4] cmp r3, #1 bne _021ED4EC mov r3, #0 str r3, [r1, #4] ldr r3, [r1] ldr r1, [r3] orr r1, r2 str r1, [r3] mov r1, #2 str r1, [r0, #0x10] b _021ED4FA _021ED4EC: str r2, [r1, #4] ldr r3, [r1] mov r1, #2 ldr r2, [r3] orr r2, r1 str r2, [r3] str r1, [r0, #0x14] _021ED4FA: ldr r0, _021ED508 ; =0x000005DD bl FUN_020054C8 _021ED500: pop {r3, pc} nop _021ED504: .word 0x021C48B8 _021ED508: .word 0x000005DD thumb_func_end MOD16_021ED4C8 thumb_func_start MOD16_021ED50C MOD16_021ED50C: ; 0x021ED50C push {r3, r4, r5, lr} add r5, r1, #0 add r4, r0, #0 ldr r0, [r5, #0xc] bl MOD16_021E95C8 cmp r0, #1 bne _021ED544 ldr r0, [r5, #4] cmp r0, #0 bne _021ED534 mov r0, #0x60 str r0, [sp] add r0, r4, #0 mov r1, #0xbc mov r2, #0x78 mov r3, #0x68 bl MOD16_021ED548 pop {r3, r4, r5, pc} _021ED534: mov r0, #0x60 str r0, [sp] add r0, r4, #0 mov r1, #0x44 mov r2, #0x78 mov r3, #0x68 bl MOD16_021ED548 _021ED544: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ED50C thumb_func_start MOD16_021ED548 MOD16_021ED548: ; 0x021ED548 push {r3, r4, lr} sub sp, #4 thumb_func_end MOD16_021ED548 thumb_func_start MOD16_021ED54C MOD16_021ED54C: ; 0x021ED54C ldr r4, [sp, #0x10] str r4, [sp] ldr r0, [r0] bl MOD16_021D8B04 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021ED54C thumb_func_start MOD16_021ED55C MOD16_021ED55C: ; 0x021ED55C push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 add r0, r7, #0 bl MOD16_021ED5C8 add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 bl MOD16_021ED604 str r4, [r5] str r0, [r5, #4] mov r0, #0 str r0, [r5, #0x20] bl MOD16_021ED67C str r0, [r5, #0x24] ldr r0, _021ED59C ; =MOD16_021ED680 str r0, [r5, #8] ldr r0, _021ED5A0 ; =MOD16_021ED6EC str r0, [r5, #0xc] ldr r0, _021ED5A4 ; =MOD16_021ED6FC str r0, [r5, #0x10] ldr r0, _021ED5A8 ; =MOD16_021ED710 str r0, [r5, #0x14] ldr r0, _021ED5AC ; =MOD16_021ED7B4 str r0, [r5, #0x18] ldr r0, _021ED5B0 ; =MOD16_021ED874 str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021ED59C: .word MOD16_021ED680 _021ED5A0: .word MOD16_021ED6EC _021ED5A4: .word MOD16_021ED6FC _021ED5A8: .word MOD16_021ED710 _021ED5AC: .word MOD16_021ED7B4 _021ED5B0: .word MOD16_021ED874 thumb_func_end MOD16_021ED55C thumb_func_start MOD16_021ED5B4 MOD16_021ED5B4: ; 0x021ED5B4 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021ED648 ldr r0, [r4, #4] bl MOD16_021ED65C pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ED5B4 thumb_func_start MOD16_021ED5C8 MOD16_021ED5C8: ; 0x021ED5C8 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #8 bl FUN_02016998 add r4, r0, #0 bne _021ED5DA bl ErrorHandling _021ED5DA: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4] add r0, r5, #0 mov r1, #5 bl MOD16_021D7B5C str r0, [r4, #4] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021ED5C8 thumb_func_start MOD16_021ED604 MOD16_021ED604: ; 0x021ED604 push {r4, r5, r6, lr} add r6, r1, #0 mov r1, #0x20 add r5, r0, #0 bl FUN_02016998 add r4, r0, #0 bne _021ED618 bl ErrorHandling _021ED618: add r0, r4, #0 mov r1, #0 mov r2, #0x20 bl Call_FillMemWithValue add r0, r6, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 add r1, r5, #0 bl MOD16_021EE090 add r0, r4, #0 add r1, r5, #0 bl MOD16_021EE110 ldr r0, [r4, #0xc] mov r1, #0 bl FUN_02013EB0 add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021ED604 thumb_func_start MOD16_021ED648 MOD16_021ED648: ; 0x021ED648 push {r4, lr} add r4, r0, #0 bne _021ED652 bl ErrorHandling _021ED652: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ED648 thumb_func_start MOD16_021ED65C MOD16_021ED65C: ; 0x021ED65C push {r4, lr} add r4, r0, #0 bne _021ED666 bl ErrorHandling _021ED666: add r0, r4, #0 bl MOD16_021EE0F0 add r0, r4, #0 bl MOD16_021EE14C add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ED65C thumb_func_start MOD16_021ED67C MOD16_021ED67C: ; 0x021ED67C mov r0, #0 bx lr thumb_func_end MOD16_021ED67C thumb_func_start MOD16_021ED680 MOD16_021ED680: ; 0x021ED680 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r6, #4] add r5, r1, #0 mov r1, #8 bl FUN_02016998 add r4, r0, #0 bne _021ED696 bl ErrorHandling _021ED696: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] strb r0, [r4, #4] strb r0, [r4, #5] strb r0, [r4, #6] strb r0, [r4, #7] str r4, [r6, #8] ldr r0, [r5] bl MOD16_021D9DE8 add r1, r0, #0 ldr r2, [r5] ldr r0, _021ED6E8 ; =0x00001748 ldr r0, [r2, r0] bl FUN_02087B78 add r6, r0, #0 ldr r0, [r5] bl MOD16_021D9F4C cmp r0, #0 bne _021ED6CC mov r0, #0x5f b _021ED6CE _021ED6CC: mov r0, #0x55 _021ED6CE: lsl r0, r0, #2 cmp r6, r0 blt _021ED6DC sub r0, r6, r0 str r0, [r4] mov r0, #1 b _021ED6E2 _021ED6DC: sub r0, r0, r6 str r0, [r4] mov r0, #0 _021ED6E2: str r0, [r4, #4] mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 _021ED6E8: .word 0x00001748 thumb_func_end MOD16_021ED680 thumb_func_start MOD16_021ED6EC MOD16_021ED6EC: ; 0x021ED6EC ldr r0, [r0, #0xc] cmp r0, #1 bne _021ED6F6 mov r0, #1 bx lr _021ED6F6: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021ED6EC thumb_func_start MOD16_021ED6FC MOD16_021ED6FC: ; 0x021ED6FC push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] mov r0, #1 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021ED6FC thumb_func_start MOD16_021ED710 MOD16_021ED710: ; 0x021ED710 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r1, #0 add r7, r0, #0 ldr r0, [r4] str r2, [sp, #4] ldr r6, [r3, #8] ldr r5, [r4, #8] cmp r0, #3 bhi _021ED7A8 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021ED730: ; jump table .short _021ED738 - _021ED730 - 2 ; case 0 .short _021ED75A - _021ED730 - 2 ; case 1 .short _021ED77C - _021ED730 - 2 ; case 2 .short _021ED792 - _021ED730 - 2 ; case 3 _021ED738: ldr r0, [r4, #4] mov r1, #0xc4 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0xc4 bl Call_FillMemWithValue ldr r0, [r4, #8] mov r1, #1 add r0, #0xb8 str r1, [r0] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED7A8 _021ED75A: ldr r0, [r4, #4] add r1, r7, #0 str r0, [sp] add r0, r5, #0 add r3, r6, #0 bl MOD16_021ED9E0 ldr r2, [sp, #4] add r0, r5, #0 add r1, r7, #0 mov r3, #1 bl MOD16_021ED8FC ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED7A8 _021ED77C: add r0, r5, #0 add r1, r7, #0 mov r3, #1 bl MOD16_021ED984 cmp r0, #0 beq _021ED7A8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED7A8 _021ED792: ldr r0, _021ED7B0 ; =0x021FF60C ldr r2, [r6] mov r1, #0x11 bl MOD16_021EE5A8 str r0, [r5, #0x34] ldr r0, [r6, #4] add sp, #8 str r0, [r5, #0x38] mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021ED7A8: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _021ED7B0: .word 0x021FF60C thumb_func_end MOD16_021ED710 thumb_func_start MOD16_021ED7B4 MOD16_021ED7B4: ; 0x021ED7B4 push {r3, r4, lr} sub sp, #4 add r4, r1, #0 ldr r1, [r4] add r2, r0, #0 ldr r0, [r4, #8] cmp r1, #7 bhi _021ED86C add r3, r1, r1 add r3, pc ldrh r3, [r3, #6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _021ED7D0: ; jump table .short _021ED7E0 - _021ED7D0 - 2 ; case 0 .short _021ED7FA - _021ED7D0 - 2 ; case 1 .short _021ED80A - _021ED7D0 - 2 ; case 2 .short _021ED818 - _021ED7D0 - 2 ; case 3 .short _021ED830 - _021ED7D0 - 2 ; case 4 .short _021ED83E - _021ED7D0 - 2 ; case 5 .short _021ED860 - _021ED7D0 - 2 ; case 6 .short _021ED86C - _021ED7D0 - 2 ; case 7 _021ED7E0: add r1, r0, #0 mov r2, #1 add r1, #0xb8 str r2, [r1] ldr r0, [r0, #0x34] ldr r0, [r0, #4] cmp r0, #0 beq _021ED7F4 str r2, [r4] b _021ED86C _021ED7F4: mov r0, #3 str r0, [r4] b _021ED86C _021ED7FA: add r1, r2, #0 ldr r2, [r0, #0x38] bl MOD16_021EE158 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED86C _021ED80A: add r0, #0xb8 ldr r0, [r0] cmp r0, #1 bne _021ED86C add r0, r1, #1 str r0, [r4] b _021ED86C _021ED818: ldr r3, [r0, #0x34] ldr r1, [r0, #0x38] str r1, [sp] add r1, r2, #0 ldrh r2, [r3, #8] ldrh r3, [r3, #0xa] bl MOD16_021EE358 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED86C _021ED830: add r0, #0xb8 ldr r0, [r0] cmp r0, #1 bne _021ED86C add r0, r1, #1 str r0, [r4] b _021ED86C _021ED83E: ldr r2, [r0, #0x34] ldr r1, [r2, #0xc] cmp r1, #0 beq _021ED85A ldr r1, [r2, #0x10] ldr r2, [r0, #0x38] lsl r1, r1, #0x10 asr r1, r1, #0x10 bl MOD16_021EE428 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED86C _021ED85A: mov r0, #7 str r0, [r4] b _021ED86C _021ED860: add r0, #0xb8 ldr r0, [r0] cmp r0, #1 bne _021ED86C add r0, r1, #1 str r0, [r4] _021ED86C: mov r0, #0 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021ED7B4 thumb_func_start MOD16_021ED874 MOD16_021ED874: ; 0x021ED874 push {r4, lr} add r4, r1, #0 ldr r1, [r4] add r3, r0, #0 ldr r0, [r4, #8] cmp r1, #4 bhi _021ED8F0 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021ED88E: ; jump table .short _021ED898 - _021ED88E - 2 ; case 0 .short _021ED8A8 - _021ED88E - 2 ; case 1 .short _021ED8BC - _021ED88E - 2 ; case 2 .short _021ED8CA - _021ED88E - 2 ; case 3 .short _021ED8EC - _021ED88E - 2 ; case 4 _021ED898: add r1, r3, #0 mov r3, #0 bl MOD16_021ED8FC ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED8F0 _021ED8A8: add r1, r3, #0 mov r3, #0 bl MOD16_021ED984 cmp r0, #0 beq _021ED8F0 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED8F0 _021ED8BC: add r1, r3, #0 bl MOD16_021EDA3C ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED8F0 _021ED8CA: add r1, r0, #0 add r1, #0xb8 ldr r1, [r1] cmp r1, #0 bne _021ED8DA ldr r0, [r0, #0x3c] bl FUN_0200CAB4 _021ED8DA: ldr r0, [r4, #8] bl FUN_02016A18 mov r0, #0 str r0, [r4, #8] ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021ED8F0 _021ED8EC: mov r0, #1 pop {r4, pc} _021ED8F0: mov r0, #0 pop {r4, pc} thumb_func_end MOD16_021ED874 thumb_func_start MOD16_021ED8F4 MOD16_021ED8F4: ; 0x021ED8F4 bx lr .align 2, 0 thumb_func_end MOD16_021ED8F4 thumb_func_start MOD16_021ED8F8 MOD16_021ED8F8: ; 0x021ED8F8 bx lr .align 2, 0 thumb_func_end MOD16_021ED8F8 thumb_func_start MOD16_021ED8FC MOD16_021ED8FC: ; 0x021ED8FC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r4, r2, #0 add r7, r0, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021ED8F4 ldr r0, [r4, #4] bl MOD16_021E8C68 cmp r0, #0 beq _021ED97E cmp r6, #0 beq _021ED95C mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2b str r0, [sp, #8] str r3, [sp, #0xc] str r3, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A48 add r1, r0, #0 neg r1, r1 lsl r1, r1, #0x18 add r0, r7, #0 lsr r1, r1, #0x18 mov r2, #0 bl MOD16_021EE5D0 add sp, #0x14 pop {r4, r5, r6, r7, pc} _021ED95C: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2b str r0, [sp, #8] str r2, [sp, #0xc] str r2, [sp, #0x10] mov r0, #0x5b ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021ED97E: add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021ED8FC thumb_func_start MOD16_021ED984 MOD16_021ED984: ; 0x021ED984 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r2, #4] add r4, r1, #0 add r6, r3, #0 bl MOD16_021E8C68 cmp r0, #0 ldr r1, [r4] beq _021ED9A4 mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D89B4 b _021ED9AE _021ED9A4: mov r0, #0x5b lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A7C _021ED9AE: cmp r0, #0 beq _021ED9C0 cmp r6, #0 beq _021ED9BC add r0, r5, #0 bl MOD16_021ED8F8 _021ED9BC: mov r0, #1 pop {r4, r5, r6, pc} _021ED9C0: mov r0, #0x5b ldr r1, [r4] lsl r0, r0, #2 add r0, r1, r0 bl MOD16_021D8A48 add r1, r0, #0 neg r1, r1 lsl r1, r1, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 mov r2, #0 bl MOD16_021EE5D0 mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021ED984 thumb_func_start MOD16_021ED9E0 MOD16_021ED9E0: ; 0x021ED9E0 push {r3, r4, r5, r6, r7, lr} ldr r4, [sp, #0x18] add r7, r2, #0 add r5, r1, #0 add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 bl MOD16_021EDA7C add r0, r5, #0 add r1, r4, #0 bl MOD16_021EDEC8 add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 bl MOD16_021EDF78 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 add r3, r4, #0 bl MOD16_021EDAE4 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 add r3, r4, #0 bl MOD16_021EDD04 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 add r3, r4, #0 bl MOD16_021EDEC0 ldr r0, [r5, #0xc] mov r1, #0 bl FUN_02013F2C ldr r0, [r5, #0xc] mov r1, #1 bl FUN_02013EB0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021ED9E0 thumb_func_start MOD16_021EDA3C MOD16_021EDA3C: ; 0x021EDA3C push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD16_021EDEC4 add r0, r5, #0 bl MOD16_021EDE9C add r0, r5, #0 add r1, r4, #0 bl MOD16_021EDC70 ldr r0, [r4] mov r1, #0 add r0, r0, #4 bl FUN_02019620 ldr r0, [r4] mov r1, #1 ldr r0, [r0] bl FUN_02018744 ldr r0, [r4, #0xc] mov r1, #0 bl FUN_02013EB0 ldr r0, [r4, #0xc] mov r1, #0 bl FUN_02013F2C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EDA3C thumb_func_start MOD16_021EDA7C MOD16_021EDA7C: ; 0x021EDA7C push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] add r5, r2, #0 str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x21 mov r3, #3 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x49 mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #3 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EDA7C thumb_func_start MOD16_021EDAE4 MOD16_021EDAE4: ; 0x021EDAE4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r5, r0, #0 add r0, r2, #0 add r7, r1, #0 ldr r0, [r0] str r2, [sp, #0x10] add r4, r3, #0 ldr r6, [r7] bl MOD16_021D9DE8 str r0, [sp, #0x1c] ldr r0, [r7] bl MOD16_021D8C70 add r7, r0, #0 ldr r0, [sp, #0x10] ldr r1, [sp, #0x1c] ldr r0, [r0] bl MOD16_021D9964 add r2, r0, #0 ldr r0, [sp, #0x1c] mov r1, #0 bl FUN_0206B6D4 str r0, [sp, #0x20] bl FUN_0206B888 str r0, [sp, #0x24] bl FUN_0206B88C str r0, [sp, #0x18] bl FUN_0206B898 str r0, [sp, #0x14] mov r0, #0x7d lsl r0, r0, #6 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] ldr r2, [sp, #0x20] mov r1, #0x13 mov r3, #0 bl FUN_02008F34 str r0, [r5, #0x14] bl FUN_02009B78 ldr r0, [r5, #0x14] bl FUN_02009474 mov r0, #0x7d lsl r0, r0, #6 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #3 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] ldr r2, [sp, #0x24] mov r1, #0x13 mov r3, #0 bl FUN_02008FEC str r0, [r5, #0x18] bl FUN_02009D68 cmp r0, #0 bne _021EDB82 bl ErrorHandling _021EDB82: add r0, r4, #0 mov r1, #0x60 bl FUN_02016998 add r1, r5, #0 add r1, #0xbc str r0, [r1] mov r0, #0x7d lsl r0, r0, #6 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] ldr r2, [sp, #0x18] mov r1, #0x13 mov r3, #0 bl FUN_020090AC str r0, [r5, #0x1c] mov r0, #0x7d lsl r0, r0, #6 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] ldr r2, [sp, #0x14] mov r1, #0x13 mov r3, #0 bl FUN_020090AC str r0, [r5, #0x20] ldr r0, _021EDC60 ; =0x00001BB5 mov r3, #1 str r0, [sp] str r3, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] add r1, r7, #0 mov r2, #0x5d bl FUN_020091E0 str r0, [r5, #0x24] bl FUN_02009B04 ldr r0, [r5, #0x24] bl FUN_02009474 ldr r0, _021EDC64 ; =0x00001B66 add r1, r7, #0 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #5 str r0, [sp, #8] mov r0, #0x51 str r4, [sp, #0xc] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0xe mov r3, #0 bl FUN_02009298 str r0, [r5, #0x28] bl FUN_02009D68 add r0, r4, #0 mov r1, #0xa0 bl FUN_02016998 add r1, r5, #0 add r1, #0xc0 str r0, [r1] ldr r0, _021EDC68 ; =0x00001BB3 add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5b mov r3, #1 bl FUN_02009358 str r0, [r5, #0x2c] ldr r0, _021EDC6C ; =0x00001BB4 add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x5c mov r3, #1 bl FUN_02009358 str r0, [r5, #0x30] add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} nop _021EDC60: .word 0x00001BB5 _021EDC64: .word 0x00001B66 _021EDC68: .word 0x00001BB3 _021EDC6C: .word 0x00001BB4 thumb_func_end MOD16_021EDAE4 thumb_func_start MOD16_021EDC70 MOD16_021EDC70: ; 0x021EDC70 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x14] ldr r4, [r1] bl FUN_02009C0C ldr r0, [r5, #0x18] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x14] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x18] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x1c] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x20] bl FUN_02009490 ldr r0, [r5, #0x24] bl FUN_02009C0C ldr r0, [r5, #0x28] bl FUN_02009E04 mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #0x24] bl FUN_02009490 mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x28] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x2c] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x30] bl FUN_02009490 add r0, r5, #0 add r0, #0xbc ldr r0, [r0] bl FUN_02016A18 add r5, #0xc0 ldr r0, [r5] bl FUN_02016A18 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EDC70 thumb_func_start MOD16_021EDD04 MOD16_021EDD04: ; 0x021EDD04 push {r3, r4, r5, r6, r7, lr} sub sp, #0x80 add r6, r2, #0 add r5, r0, #0 ldr r0, [r6] add r7, r3, #0 ldr r4, [r1] bl MOD16_021D9DE8 str r0, [sp, #0x2c] ldr r0, [r6] ldr r1, [sp, #0x2c] bl MOD16_021D9964 ldr r3, _021EDE98 ; =0x00001BB4 str r0, [sp, #0x30] mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r2, #0 str r2, [sp, #0xc] mov r0, #3 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 ldr r1, [r4, r0] str r1, [sp, #0x14] add r1, r0, #4 ldr r1, [r4, r1] str r1, [sp, #0x18] add r1, r0, #0 add r1, #8 ldr r1, [r4, r1] add r0, #0xc str r1, [sp, #0x1c] ldr r0, [r4, r0] add r1, r3, #1 str r0, [sp, #0x20] str r2, [sp, #0x24] str r2, [sp, #0x28] add r2, r3, #0 add r0, sp, #0x5c sub r2, #0x4e sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #1 str r0, [sp, #0x3c] add r0, sp, #0x5c str r0, [sp, #0x40] mov r0, #0x1f str r0, [sp, #0x50] mov r0, #0x2e lsl r0, r0, #0xe str r0, [sp, #0x44] lsl r0, r1, #0x12 str r0, [sp, #0x48] str r1, [sp, #0x54] str r7, [sp, #0x58] add r0, sp, #0x3c bl FUN_0201FF84 str r0, [r5] ldr r0, [r6] bl MOD16_021D9F4C cmp r0, #0 ldr r0, [r5] bne _021EDDA0 mov r1, #3 bl FUN_02020130 b _021EDDA6 _021EDDA0: mov r1, #4 bl FUN_02020130 _021EDDA6: mov r0, #2 lsl r0, r0, #0x12 str r0, [sp, #0x44] mov r0, #0x6a lsl r0, r0, #0xc str r0, [sp, #0x48] add r0, sp, #0x3c bl FUN_0201FF84 str r0, [r5, #8] mov r1, #1 bl FUN_02020130 ldr r0, [r5, #8] mov r1, #1 bl FUN_02020238 mov r0, #0x2e lsl r0, r0, #0xe str r0, [sp, #0x44] mov r0, #0x16 lsl r0, r0, #0xe str r0, [sp, #0x48] add r0, sp, #0x3c bl FUN_0201FF84 mov r1, #0 str r0, [r5, #0xc] bl FUN_02020130 mov r0, #0x12 lsl r0, r0, #0xe str r0, [sp, #0x44] mov r0, #0x16 lsl r0, r0, #0xe str r0, [sp, #0x48] add r0, sp, #0x3c bl FUN_0201FF84 str r0, [r5, #0x10] mov r1, #0 bl FUN_02020130 ldr r0, [r5, #0x14] bl FUN_02009530 add r6, r0, #0 ldr r0, [r5, #0x18] bl FUN_02009530 str r0, [sp, #0x34] ldr r0, [r5, #0x1c] bl FUN_02009530 str r0, [sp, #0x38] ldr r0, [r5, #0x20] bl FUN_02009530 str r0, [sp] mov r0, #0 mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #3 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 ldr r2, [r4, r0] ldr r3, [sp, #0x38] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] ldr r2, [sp, #0x34] str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r0, sp, #0x5c add r1, r6, #0 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] str r0, [sp, #0x3c] add r0, sp, #0x5c str r0, [sp, #0x40] mov r0, #0x1f str r0, [sp, #0x50] mov r0, #0x12 mov r1, #1 lsl r0, r0, #0xe str r0, [sp, #0x44] lsl r0, r1, #0x12 str r0, [sp, #0x48] str r1, [sp, #0x54] str r7, [sp, #0x58] add r0, sp, #0x3c bl FUN_0201FF84 str r0, [r5, #4] ldr r0, [sp, #0x2c] ldr r1, [sp, #0x30] mov r2, #0 bl FUN_0206B7BC add r1, r0, #0 ldr r0, [r5, #4] bl FUN_0202027C add sp, #0x80 pop {r3, r4, r5, r6, r7, pc} nop _021EDE98: .word 0x00001BB4 thumb_func_end MOD16_021EDD04 thumb_func_start MOD16_021EDE9C MOD16_021EDE9C: ; 0x021EDE9C push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0201FFC8 ldr r0, [r4, #4] bl FUN_0201FFC8 ldr r0, [r4, #8] bl FUN_0201FFC8 ldr r0, [r4, #0xc] bl FUN_0201FFC8 ldr r0, [r4, #0x10] bl FUN_0201FFC8 pop {r4, pc} thumb_func_end MOD16_021EDE9C thumb_func_start MOD16_021EDEC0 MOD16_021EDEC0: ; 0x021EDEC0 bx lr .align 2, 0 thumb_func_end MOD16_021EDEC0 thumb_func_start MOD16_021EDEC4 MOD16_021EDEC4: ; 0x021EDEC4 bx lr .align 2, 0 thumb_func_end MOD16_021EDEC4 thumb_func_start MOD16_021EDEC8 MOD16_021EDEC8: ; 0x021EDEC8 push {r4, r5, r6, lr} sub sp, #0x10 add r5, r0, #0 mov r0, #0x20 add r6, r1, #0 bl FUN_020219F4 add r4, r0, #0 ldr r2, _021EDF70 ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r6, #0 bl FUN_0200A86C mov r1, #0x2c add r2, r4, #0 add r6, r0, #0 bl FUN_0200A8E0 mov r0, #0 mov r3, #1 add r1, r4, #0 add r2, r0, #0 lsl r3, r3, #8 bl FUN_02002F40 add r3, r0, #0 mov r0, #0x18 str r0, [sp] mov r1, #0 ldr r0, _021EDF74 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 add r0, r6, #0 mov r1, #0xa add r2, r4, #0 bl FUN_0200A8E0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EDF74 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 mov r3, #0x20 bl FUN_0201BDE0 add r0, r6, #0 mov r1, #0xa add r2, r4, #0 bl FUN_0200A8E0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EDF74 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 mov r3, #0x98 bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r6, #0 bl FUN_0200A8B8 add sp, #0x10 pop {r4, r5, r6, pc} nop _021EDF70: .word 0x00000266 _021EDF74: .word 0x00020100 thumb_func_end MOD16_021EDEC8 thumb_func_start MOD16_021EDF78 MOD16_021EDF78: ; 0x021EDF78 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r7, r2, #0 add r5, r0, #0 add r6, r1, #0 mov r0, #0x20 add r1, r7, #0 bl FUN_020219F4 add r4, r0, #0 ldr r2, _021EE084 ; =0x0000026B mov r0, #0 mov r1, #0x1a add r3, r7, #0 bl FUN_0200A86C str r0, [sp, #0x10] ldr r0, [r6] bl MOD16_021D9DE8 add r1, r7, #0 str r0, [sp, #0x14] bl FUN_0200AA50 str r0, [sp, #0x18] mov r0, #0x98 str r0, [sp] mov r1, #0 ldr r0, _021EE088 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] ldr r2, [sp, #0x18] add r0, r0, #4 mov r3, #0x1a bl FUN_0201BDE0 ldr r0, [sp, #0x10] ldr r1, [sp, #0x14] add r2, r4, #0 bl FUN_0200A8E0 mov r0, #0 add r1, r4, #0 add r2, r0, #0 bl FUN_02002E14 mov r1, #0x6e sub r3, r1, r0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EE088 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 ldr r0, [sp, #0x18] bl FUN_02021A20 ldr r0, [sp, #0x10] bl FUN_0200A8B8 ldr r2, _021EE08C ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r7, #0 bl FUN_0200A86C add r7, r0, #0 ldr r0, [r6] bl MOD16_021D9F40 add r2, r0, #0 mov r0, #0x98 str r0, [sp] mov r1, #0 ldr r0, _021EE088 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] mov r3, #0x92 add r0, r0, #4 bl FUN_0201BDE0 ldr r0, [r6] bl MOD16_021D9F4C cmp r0, #0 bne _021EE044 add r0, r7, #0 mov r1, #0x61 add r2, r4, #0 bl FUN_0200A8E0 b _021EE04E _021EE044: add r0, r7, #0 mov r1, #0x62 add r2, r4, #0 bl FUN_0200A8E0 _021EE04E: mov r0, #0 add r1, r4, #0 add r2, r0, #0 bl FUN_02002E14 mov r1, #0xe6 sub r3, r1, r0 mov r0, #0xa8 str r0, [sp] mov r1, #0 ldr r0, _021EE088 ; =0x00020100 str r1, [sp, #4] str r0, [sp, #8] str r1, [sp, #0xc] ldr r0, [r5] add r2, r4, #0 add r0, r0, #4 bl FUN_0201BDE0 add r0, r4, #0 bl FUN_02021A20 add r0, r7, #0 bl FUN_0200A8B8 add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 _021EE084: .word 0x0000026B _021EE088: .word 0x00020100 _021EE08C: .word 0x00000266 thumb_func_end MOD16_021EDF78 thumb_func_start MOD16_021EE090 MOD16_021EE090: ; 0x021EE090 push {r3, r4, r5, lr} sub sp, #0x18 add r5, r1, #0 add r4, r0, #0 str r5, [sp] add r3, r4, #0 ldr r0, [r4] mov r1, #0x24 mov r2, #1 add r3, #0x18 bl MOD16_021D8D98 str r0, [r4, #0x10] add r2, r4, #0 ldr r0, [r4] mov r1, #6 add r2, #0x1c add r3, r5, #0 bl MOD16_021D8D70 str r0, [r4, #0x14] mov r0, #0x5a ldr r1, [r4] lsl r0, r0, #2 ldr r0, [r1, r0] str r0, [sp, #4] ldr r0, [r4, #0x18] str r0, [sp, #8] add r0, sp, #4 bl FUN_02013D98 str r0, [r4, #4] mov r0, #0x5a ldr r1, [r4] lsl r0, r0, #2 ldr r0, [r1, r0] str r0, [sp, #0xc] ldr r0, [r4, #0x1c] str r0, [sp, #0x10] mov r0, #0x10 str r0, [sp, #0x14] add r0, sp, #0xc bl FUN_02013E14 str r0, [r4, #8] add sp, #0x18 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EE090 thumb_func_start MOD16_021EE0F0 MOD16_021EE0F0: ; 0x021EE0F0 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #4] bl FUN_02013DD4 ldr r0, [r4, #8] bl FUN_02013E44 ldr r0, [r4, #0x10] bl FUN_02016A18 ldr r0, [r4, #0x14] bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EE0F0 thumb_func_start MOD16_021EE110 MOD16_021EE110: ; 0x021EE110 push {r4, lr} sub sp, #0x20 add r4, r0, #0 mov r0, #0x5a ldr r1, [r4] lsl r0, r0, #2 ldr r0, [r1, r0] mov r1, #0x40 str r0, [sp] ldr r0, [r4, #4] mov r2, #0 str r0, [sp, #4] ldr r0, [r4, #8] str r0, [sp, #8] add r0, sp, #0 strh r1, [r0, #0xc] mov r1, #0x58 strh r1, [r0, #0xe] strh r2, [r0, #0x10] mov r1, #0x1f str r1, [sp, #0x14] str r2, [sp, #0x18] strh r2, [r0, #0x1c] add r0, sp, #0 bl FUN_02013E84 str r0, [r4, #0xc] add sp, #0x20 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EE110 thumb_func_start MOD16_021EE14C MOD16_021EE14C: ; 0x021EE14C ldr r3, _021EE154 ; =0x02013EA9 ldr r0, [r0, #0xc] bx r3 nop _021EE154: .word 0x02013EA9 thumb_func_end MOD16_021EE14C thumb_func_start MOD16_021EE158 MOD16_021EE158: ; 0x021EE158 push {r4, lr} add r4, r0, #0 ldr r0, [r1, #0xc] mov r1, #0 str r0, [r4, #0x40] ldr r0, [r4, #0xc] str r0, [r4, #0x44] ldr r0, [r4, #0x10] str r0, [r4, #0x48] ldr r0, [r4] str r0, [r4, #0x4c] ldr r0, [r4, #4] str r0, [r4, #0x50] add r0, r4, #0 str r1, [r4, #0x6c] add r0, #0xb8 str r0, [r4, #0x70] add r0, r4, #0 add r0, #0xb8 str r1, [r0] cmp r2, #0 bne _021EE188 sub r0, r1, #1 b _021EE18A _021EE188: mov r0, #1 _021EE18A: str r0, [r4, #0x54] add r1, r4, #0 ldr r0, _021EE19C ; =MOD16_021EE1A0 add r1, #0x40 mov r2, #0 bl FUN_0200CA44 str r0, [r4, #0x3c] pop {r4, pc} .align 2, 0 _021EE19C: .word MOD16_021EE1A0 thumb_func_end MOD16_021EE158 thumb_func_start MOD16_021EE1A0 MOD16_021EE1A0: ; 0x021EE1A0 push {r4, lr} add r4, r1, #0 ldr r1, [r4, #0x2c] cmp r1, #5 bhi _021EE248 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021EE1B6: ; jump table .short _021EE1C2 - _021EE1B6 - 2 ; case 0 .short _021EE1CA - _021EE1B6 - 2 ; case 1 .short _021EE1D2 - _021EE1B6 - 2 ; case 2 .short _021EE1F4 - _021EE1B6 - 2 ; case 3 .short _021EE214 - _021EE1B6 - 2 ; case 4 .short _021EE23E - _021EE1B6 - 2 ; case 5 _021EE1C2: mov r0, #2 str r0, [r4, #0x18] str r0, [r4, #0x2c] pop {r4, pc} _021EE1CA: add r0, r4, #0 bl MOD16_021EE254 pop {r4, pc} _021EE1D2: ldr r1, [r4, #0x14] ldr r0, _021EE24C ; =0xFFFFFDDE mul r0, r1 str r0, [r4, #0x24] mov r0, #0xb5 ldr r1, [r4, #0x14] mvn r0, r0 mul r0, r1 str r0, [r4, #0x20] mov r0, #3 str r0, [r4, #0x28] mov r0, #1 str r0, [r4, #0x2c] add r0, r4, #0 bl MOD16_021EE254 pop {r4, pc} _021EE1F4: ldr r1, [r4, #0x14] ldr r0, _021EE250 ; =0x00000222 mul r0, r1 str r0, [r4, #0x24] ldr r1, [r4, #0x14] mov r0, #0xb6 mul r0, r1 str r0, [r4, #0x20] mov r0, #4 str r0, [r4, #0x28] mov r0, #1 str r0, [r4, #0x2c] add r0, r4, #0 bl MOD16_021EE254 pop {r4, pc} _021EE214: mov r1, #0 str r1, [r4, #0x24] ldr r0, [r4, #0x14] sub r1, #0xb6 mul r1, r0 str r1, [r4, #0x20] mov r0, #1 str r0, [r4, #0x2c] ldr r0, [r4, #0x18] sub r0, r0, #1 str r0, [r4, #0x18] cmp r0, #0 ble _021EE232 mov r0, #2 b _021EE234 _021EE232: mov r0, #5 _021EE234: str r0, [r4, #0x28] add r0, r4, #0 bl MOD16_021EE254 pop {r4, pc} _021EE23E: bl FUN_0200CAB4 ldr r0, [r4, #0x30] mov r1, #1 str r1, [r0] _021EE248: pop {r4, pc} nop _021EE24C: .word 0xFFFFFDDE _021EE250: .word 0x00000222 thumb_func_end MOD16_021EE1A0 thumb_func_start MOD16_021EE254 MOD16_021EE254: ; 0x021EE254 push {r3, lr} sub sp, #8 add r3, r0, #0 ldr r2, [r3, #0x20] ldr r1, [r3, #0x24] cmp r2, #0 bge _021EE276 ldr r0, [r3, #0x1c] add r0, r0, r2 cmp r0, r1 blt _021EE26E str r0, [r3, #0x1c] b _021EE288 _021EE26E: str r1, [r3, #0x1c] ldr r0, [r3, #0x28] str r0, [r3, #0x2c] b _021EE288 _021EE276: ldr r0, [r3, #0x1c] add r0, r0, r2 cmp r0, r1 bgt _021EE282 str r0, [r3, #0x1c] b _021EE288 _021EE282: str r1, [r3, #0x1c] ldr r0, [r3, #0x28] str r0, [r3, #0x2c] _021EE288: ldr r0, [r3, #0x10] str r0, [sp] ldr r0, [r3, #0x1c] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r3] ldr r1, [r3, #4] ldr r2, [r3, #8] ldr r3, [r3, #0xc] bl MOD16_021EE2A4 add sp, #8 pop {r3, pc} thumb_func_end MOD16_021EE254 thumb_func_start MOD16_021EE2A4 MOD16_021EE2A4: ; 0x021EE2A4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r6, r1, #0 add r1, sp, #0x18 ldrh r1, [r1, #0x14] add r7, r2, #0 str r3, [sp] bl FUN_02013F2C add r0, sp, #0x18 ldrh r0, [r0, #0x14] mov r2, #0xe lsl r2, r2, #0xe asr r0, r0, #4 lsl r4, r0, #1 add r0, r4, #1 lsl r1, r0, #1 ldr r0, _021EE354 ; =0x020FFA38 mov r3, #0 ldrsh r0, [r0, r1] asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r5, r2, #0xc orr r5, r0 mov r2, #0xe ldr r0, _021EE354 ; =0x020FFA38 lsl r1, r4, #1 ldrsh r0, [r0, r1] lsl r2, r2, #0xe asr r1, r0, #0x1f bl _ll_mul mov r2, #2 lsl r2, r2, #0xa mov r3, #0 add r0, r0, r2 adc r1, r3 lsr r4, r0, #0xc lsl r0, r2, #8 lsl r1, r1, #0x14 add r0, r5, r0 orr r4, r1 str r0, [sp, #4] lsl r0, r2, #7 add r0, r4, r0 str r0, [sp, #8] ldr r0, [sp] add r1, sp, #4 bl FUN_02020044 mov r0, #6 ldr r1, [sp, #8] lsl r0, r0, #0xe add r0, r1, r0 str r0, [sp, #8] add r0, r6, #0 add r1, sp, #4 bl FUN_02020044 mov r0, #2 lsl r0, r0, #0x12 sub r1, r0, r5 lsr r0, r0, #1 sub r0, r0, r4 str r0, [sp, #8] str r1, [sp, #4] ldr r0, [sp, #0x28] add r1, sp, #4 bl FUN_02020044 mov r0, #6 ldr r1, [sp, #8] lsl r0, r0, #0xe add r0, r1, r0 str r0, [sp, #8] add r0, r7, #0 add r1, sp, #4 bl FUN_02020044 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EE354: .word 0x020FFA38 thumb_func_end MOD16_021EE2A4 thumb_func_start MOD16_021EE358 MOD16_021EE358: ; 0x021EE358 push {r3, r4, r5, lr} add r4, r0, #0 ldr r0, [r1, #0xc] add r5, r4, #0 str r0, [r4, #0x74] ldr r0, [r4, #0xc] add r5, #0xb8 str r0, [r4, #0x78] ldr r0, [r4, #0x10] str r0, [r4, #0x7c] add r0, r4, #0 ldr r1, [r4] add r0, #0x80 str r1, [r0] add r0, r4, #0 ldr r1, [r4, #4] add r0, #0x84 str r1, [r0] add r1, r4, #0 mov r0, #0 add r1, #0x88 str r0, [r1] add r1, r4, #0 add r1, #0x94 str r5, [r1] add r1, r4, #0 add r1, #0xb8 str r0, [r1] ldr r0, [sp, #0x10] cmp r0, #0 bne _021EE3A4 add r0, r4, #0 add r0, #0x8c str r2, [r0] add r0, r4, #0 add r0, #0x90 str r3, [r0] b _021EE3B4 _021EE3A4: add r0, r4, #0 neg r1, r2 add r0, #0x8c str r1, [r0] add r0, r4, #0 neg r1, r3 add r0, #0x90 str r1, [r0] _021EE3B4: add r1, r4, #0 ldr r0, _021EE3C4 ; =MOD16_021EE3C8 add r1, #0x74 mov r2, #0 bl FUN_0200CA44 str r0, [r4, #0x3c] pop {r3, r4, r5, pc} .align 2, 0 _021EE3C4: .word MOD16_021EE3C8 thumb_func_end MOD16_021EE358 thumb_func_start MOD16_021EE3C8 MOD16_021EE3C8: ; 0x021EE3C8 push {r4, r5, r6, lr} sub sp, #8 add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x18] mov r4, #0 cmp r0, #0 ldr r2, [r5, #0x1c] bge _021EE3EC ldr r1, [r5, #0x14] add r0, r1, r0 cmp r0, r2 blt _021EE3E6 str r0, [r5, #0x14] b _021EE3FC _021EE3E6: str r2, [r5, #0x14] mov r4, #1 b _021EE3FC _021EE3EC: ldr r1, [r5, #0x14] add r0, r1, r0 cmp r0, r2 bgt _021EE3F8 str r0, [r5, #0x14] b _021EE3FC _021EE3F8: str r2, [r5, #0x14] mov r4, #1 _021EE3FC: ldr r0, [r5, #0x10] str r0, [sp] ldr r0, [r5, #0x14] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r5] ldr r1, [r5, #4] ldr r2, [r5, #8] ldr r3, [r5, #0xc] bl MOD16_021EE2A4 cmp r4, #1 bne _021EE424 add r0, r6, #0 bl FUN_0200CAB4 ldr r0, [r5, #0x20] mov r1, #1 str r1, [r0] _021EE424: add sp, #8 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EE3C8 thumb_func_start MOD16_021EE428 MOD16_021EE428: ; 0x021EE428 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 cmp r2, #0 bne _021EE436 ldr r1, [r5, #4] b _021EE438 _021EE436: ldr r1, [r5] _021EE438: add r0, #0x98 str r1, [r0] neg r0, r4 lsl r1, r0, #1 add r0, r5, #0 add r0, #0xa8 str r1, [r0] add r0, r5, #0 add r0, #0x98 ldr r0, [r0] bl FUN_0202011C add r1, r5, #0 ldr r2, [r0] add r1, #0x9c str r2, [r1] ldr r1, [r0, #4] add r0, r5, #0 add r0, #0xa0 str r1, [r0] add r0, r5, #0 add r1, r5, #0 mov r2, #0 add r0, #0xac str r2, [r0] add r0, r5, #0 add r0, #0xa4 strh r4, [r0] add r0, r5, #0 add r0, #0xb0 str r2, [r0] add r0, r5, #0 add r1, #0xb8 add r0, #0xb4 str r1, [r0] add r0, r5, #0 add r0, #0xb8 str r2, [r0] add r1, r5, #0 ldr r0, _021EE494 ; =MOD16_021EE498 add r1, #0x98 bl FUN_0200CA44 str r0, [r5, #0x3c] pop {r3, r4, r5, pc} nop _021EE494: .word MOD16_021EE498 thumb_func_end MOD16_021EE428 thumb_func_start MOD16_021EE498 MOD16_021EE498: ; 0x021EE498 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x18] cmp r0, #3 bhi _021EE5A2 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EE4B2: ; jump table .short _021EE4BA - _021EE4B2 - 2 ; case 0 .short _021EE50C - _021EE4B2 - 2 ; case 1 .short _021EE540 - _021EE4B2 - 2 ; case 2 .short _021EE586 - _021EE4B2 - 2 ; case 3 _021EE4BA: ldr r0, [r4, #0x14] add r3, r0, #1 str r3, [r4, #0x14] mov r0, #0xc ldrsh r0, [r4, r0] add r1, r3, #0 mul r1, r3 add r2, r0, #0 lsr r0, r1, #0x1f add r0, r1, r0 mul r2, r3 asr r0, r0, #1 add r2, r2, r0 ldr r0, [r4, #4] str r0, [sp] ldr r1, [r4, #8] lsl r0, r2, #0xc add r0, r1, r0 str r0, [sp, #4] ldr r0, [r4] add r1, sp, #0 bl FUN_02020044 ldr r1, [r4, #0x14] ldr r0, [r4, #0x10] cmp r1, r0 blt _021EE5A2 mov r0, #0 str r0, [r4, #0x14] mov r0, #0xc ldrsh r1, [r4, r0] add sp, #0xc lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 add r0, r0, #1 str r0, [r4, #0x10] ldr r0, [r4, #0x18] add r0, r0, #1 str r0, [r4, #0x18] pop {r4, r5, pc} _021EE50C: ldr r0, [r4, #0x14] cmp r0, #0 bne _021EE528 mov r0, #2 ldr r1, [r4, #4] lsl r0, r0, #0xc add r0, r1, r0 str r0, [sp] ldr r0, [r4, #8] add r1, sp, #0 str r0, [sp, #4] ldr r0, [r4] bl FUN_02020044 _021EE528: ldr r0, [r4, #0x14] add r0, r0, #1 str r0, [r4, #0x14] cmp r0, #1 ble _021EE5A2 mov r0, #0 str r0, [r4, #0x14] ldr r0, [r4, #0x18] add sp, #0xc add r0, r0, #1 str r0, [r4, #0x18] pop {r4, r5, pc} _021EE540: ldr r0, [r4, #0x14] cmp r0, #0 bne _021EE55C mov r0, #2 ldr r1, [r4, #4] lsl r0, r0, #0xc sub r0, r1, r0 str r0, [sp] ldr r0, [r4, #8] add r1, sp, #0 str r0, [sp, #4] ldr r0, [r4] bl FUN_02020044 _021EE55C: ldr r0, [r4, #0x14] add r0, r0, #1 str r0, [r4, #0x14] cmp r0, #1 ble _021EE5A2 ldr r0, [r4, #0x10] sub r0, r0, #1 str r0, [r4, #0x10] cmp r0, #0 ble _021EE57C mov r0, #0 str r0, [r4, #0x14] mov r0, #1 add sp, #0xc str r0, [r4, #0x18] pop {r4, r5, pc} _021EE57C: ldr r0, [r4, #0x18] add sp, #0xc add r0, r0, #1 str r0, [r4, #0x18] pop {r4, r5, pc} _021EE586: ldr r0, [r4, #4] add r1, sp, #0 str r0, [sp] ldr r0, [r4, #8] str r0, [sp, #4] ldr r0, [r4] bl FUN_02020044 add r0, r5, #0 bl FUN_0200CAB4 ldr r0, [r4, #0x1c] mov r1, #1 str r1, [r0] _021EE5A2: add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EE498 thumb_func_start MOD16_021EE5A8 MOD16_021EE5A8: ; 0x021EE5A8 push {r4, r5} mov r4, #0 cmp r1, #0 ble _021EE5CA add r5, r0, #0 _021EE5B2: ldr r3, [r5] cmp r3, r2 blt _021EE5C2 mov r1, #0x14 mul r1, r4 add r0, r0, r1 pop {r4, r5} bx lr _021EE5C2: add r4, r4, #1 add r5, #0x14 cmp r4, r1 blt _021EE5B2 _021EE5CA: mov r0, #0 pop {r4, r5} bx lr thumb_func_end MOD16_021EE5A8 thumb_func_start MOD16_021EE5D0 MOD16_021EE5D0: ; 0x021EE5D0 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r0, #0 ldr r0, [r5, #0x18] add r7, r1, #0 add r4, r2, #0 bl FUN_0200955C add r6, r0, #0 ldr r0, [r5, #0x18] mov r1, #0 bl FUN_02009E54 add r1, r5, #0 str r4, [sp] add r1, #0xbc str r0, [sp, #4] ldr r0, [r6, #0xc] ldr r1, [r1] mov r2, #0x30 add r3, r7, #0 bl FUN_02003974 ldr r0, [sp, #4] mov r1, #1 bl FUN_020B19C4 add r2, r5, #0 add r2, #0xbc add r1, r0, #0 ldr r2, [r2] mov r0, #0xe mov r3, #0x60 bl FUN_0201C2C8 ldr r0, [r5, #0x28] bl FUN_0200955C add r6, r0, #0 ldr r0, [r5, #0x28] mov r1, #0 bl FUN_02009E54 add r1, r5, #0 str r4, [sp] add r1, #0xc0 str r0, [sp, #8] ldr r0, [r6, #0xc] ldr r1, [r1] mov r2, #0x50 add r3, r7, #0 bl FUN_02003974 ldr r0, [sp, #8] mov r1, #1 bl FUN_020B19C4 add r5, #0xc0 add r1, r0, #0 ldr r2, [r5] mov r0, #0xe mov r3, #0xa0 bl FUN_0201C2C8 add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021EE5D0 thumb_func_start MOD16_021EE654 MOD16_021EE654: ; 0x021EE654 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 str r2, [sp] add r0, r2, #0 add r4, r1, #0 bl MOD16_021EE6CC add r6, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021EE714 add r7, r0, #0 ldr r0, [sp] add r1, r4, #0 bl MOD16_021EE73C str r6, [r5] str r7, [r5, #4] str r0, [r5, #0x20] bl MOD16_021EE76C str r0, [r5, #0x24] ldr r0, _021EE69C ; =MOD16_021EE770 str r0, [r5, #8] ldr r0, _021EE6A0 ; =MOD16_021EE7AC str r0, [r5, #0xc] ldr r0, _021EE6A4 ; =MOD16_021EE810 str r0, [r5, #0x10] ldr r0, _021EE6A8 ; =MOD16_021EE824 str r0, [r5, #0x14] ldr r0, _021EE6AC ; =MOD16_021EE8AC str r0, [r5, #0x18] ldr r0, _021EE6B0 ; =MOD16_021EE8DC str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EE69C: .word MOD16_021EE770 _021EE6A0: .word MOD16_021EE7AC _021EE6A4: .word MOD16_021EE810 _021EE6A8: .word MOD16_021EE824 _021EE6AC: .word MOD16_021EE8AC _021EE6B0: .word MOD16_021EE8DC thumb_func_end MOD16_021EE654 thumb_func_start MOD16_021EE6B4 MOD16_021EE6B4: ; 0x021EE6B4 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl MOD16_021EE740 ldr r0, [r4, #4] bl MOD16_021EE754 ldr r0, [r4, #0x20] bl MOD16_021EE768 pop {r4, pc} thumb_func_end MOD16_021EE6B4 thumb_func_start MOD16_021EE6CC MOD16_021EE6CC: ; 0x021EE6CC push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0x10 bl FUN_02016998 add r4, r0, #0 bne _021EE6DE bl ErrorHandling _021EE6DE: add r2, r4, #0 mov r1, #0x10 mov r0, #0 _021EE6E4: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021EE6E4 add r0, r5, #0 bl MOD16_021D7AEC str r0, [r4] add r0, r5, #0 mov r1, #3 bl MOD16_021D7B7C str r0, [r4, #8] add r0, r5, #0 mov r1, #3 bl MOD16_021D7B5C str r0, [r4, #0xc] add r0, r5, #0 bl MOD16_021D7B38 str r0, [r4, #4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EE6CC thumb_func_start MOD16_021EE714 MOD16_021EE714: ; 0x021EE714 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #4 bl FUN_02016998 add r4, r0, #0 bne _021EE726 bl ErrorHandling _021EE726: mov r0, #0 strb r0, [r4] strb r0, [r4, #1] strb r0, [r4, #2] strb r0, [r4, #3] add r0, r5, #0 bl MOD16_021D7B48 str r0, [r4] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EE714 thumb_func_start MOD16_021EE73C MOD16_021EE73C: ; 0x021EE73C mov r0, #0 bx lr thumb_func_end MOD16_021EE73C thumb_func_start MOD16_021EE740 MOD16_021EE740: ; 0x021EE740 push {r4, lr} add r4, r0, #0 bne _021EE74A bl ErrorHandling _021EE74A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EE740 thumb_func_start MOD16_021EE754 MOD16_021EE754: ; 0x021EE754 push {r4, lr} add r4, r0, #0 bne _021EE75E bl ErrorHandling _021EE75E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EE754 thumb_func_start MOD16_021EE768 MOD16_021EE768: ; 0x021EE768 bx lr .align 2, 0 thumb_func_end MOD16_021EE768 thumb_func_start MOD16_021EE76C MOD16_021EE76C: ; 0x021EE76C mov r0, #0 bx lr thumb_func_end MOD16_021EE76C thumb_func_start MOD16_021EE770 MOD16_021EE770: ; 0x021EE770 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] add r6, r1, #0 mov r1, #0x18 bl FUN_02016998 add r4, r0, #0 add r2, r4, #0 mov r1, #0x18 mov r0, #0 _021EE786: strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _021EE786 mov r0, #4 str r0, [r4, #0x10] ldr r2, [r5, #4] add r0, r4, #0 add r1, r6, #0 bl MOD16_021EEA3C add r0, r4, #0 add r1, r6, #0 bl MOD16_021EEA88 str r4, [r5, #8] mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EE770 thumb_func_start MOD16_021EE7AC MOD16_021EE7AC: ; 0x021EE7AC push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r0, #0xc] ldr r4, [r0, #8] cmp r1, #1 bne _021EE7BC mov r0, #1 pop {r3, r4, r5, pc} _021EE7BC: ldr r0, [r0, #0x10] cmp r0, #1 bne _021EE7C6 mov r0, #0 pop {r3, r4, r5, pc} _021EE7C6: ldr r0, [r5, #8] bl MOD16_021E95C0 cmp r0, #0 beq _021EE80A add r0, r4, #0 bl MOD16_021EEA80 ldr r0, [r5, #8] bl MOD16_021E95C8 cmp r0, #0 beq _021EE7F2 ldr r0, [r5, #4] bl MOD16_021D9FB8 cmp r0, #0 beq _021EE7F2 add r0, r4, #0 add r1, r5, #0 bl MOD16_021EEEB4 _021EE7F2: add r0, r4, #0 add r1, r5, #0 bl MOD16_021EEA88 ldr r0, [r4, #0x14] cmp r0, #0 beq _021EE80A add r0, r5, #0 bl MOD16_021EEF00 mov r0, #0 str r0, [r4, #0x14] _021EE80A: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EE7AC thumb_func_start MOD16_021EE810 MOD16_021EE810: ; 0x021EE810 push {r4, lr} ldr r4, [r0, #8] add r0, r4, #0 bl MOD16_021EEAA0 add r0, r4, #0 bl FUN_02016A18 mov r0, #1 pop {r4, pc} thumb_func_end MOD16_021EE810 thumb_func_start MOD16_021EE824 MOD16_021EE824: ; 0x021EE824 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #3 bhi _021EE8A8 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EE840: ; jump table .short _021EE848 - _021EE840 - 2 ; case 0 .short _021EE862 - _021EE840 - 2 ; case 1 .short _021EE880 - _021EE840 - 2 ; case 2 .short _021EE896 - _021EE840 - 2 ; case 3 _021EE848: ldr r0, [r4, #4] mov r1, #0x30 bl FUN_02016998 str r0, [r4, #8] mov r1, #0 mov r2, #0x30 bl Call_FillMemWithValue ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EE8A8 _021EE862: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021EEAE0 add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #1 bl MOD16_021EE994 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EE8A8 _021EE880: add r0, r6, #0 add r1, r5, #0 mov r3, #1 bl MOD16_021EEA00 cmp r0, #0 beq _021EE8A8 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EE8A8 _021EE896: mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #0 bl MOD16_021D8B3C mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021EE8A8: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EE824 thumb_func_start MOD16_021EE8AC MOD16_021EE8AC: ; 0x021EE8AC push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 ldr r0, [r3, #8] add r4, r2, #0 str r0, [sp] add r5, r1, #0 ldr r0, [r4, #8] ldr r7, [r5, #8] bl MOD16_021E95C0 cmp r0, #0 beq _021EE8D8 ldr r2, [sp] ldr r3, [r5, #4] add r0, r6, #0 add r1, r7, #0 bl MOD16_021EEE80 add r0, r6, #0 add r1, r4, #0 bl MOD16_021EEEC8 _021EE8D8: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EE8AC thumb_func_start MOD16_021EE8DC MOD16_021EE8DC: ; 0x021EE8DC push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4] add r7, r2, #0 ldr r6, [r4, #8] cmp r0, #4 bhi _021EE95E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EE8F8: ; jump table .short _021EE902 - _021EE8F8 - 2 ; case 0 .short _021EE924 - _021EE8F8 - 2 ; case 1 .short _021EE93A - _021EE8F8 - 2 ; case 2 .short _021EE94C - _021EE8F8 - 2 ; case 3 .short _021EE95A - _021EE8F8 - 2 ; case 4 _021EE902: mov r0, #0x79 ldr r1, [r5] lsl r0, r0, #2 add r0, r1, r0 mov r1, #1 bl MOD16_021D8B3C add r0, r6, #0 add r1, r5, #0 add r2, r7, #0 mov r3, #0 bl MOD16_021EE994 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EE95E _021EE924: add r0, r6, #0 add r1, r5, #0 mov r3, #0 bl MOD16_021EEA00 cmp r0, #0 beq _021EE95E ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EE95E _021EE93A: ldr r2, [r4, #4] add r0, r6, #0 add r1, r5, #0 bl MOD16_021EEB10 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EE95E _021EE94C: add r0, r6, #0 bl FUN_02016A18 ldr r0, [r4] add r0, r0, #1 str r0, [r4] b _021EE95E _021EE95A: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021EE95E: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EE8DC thumb_func_start MOD16_021EE964 MOD16_021EE964: ; 0x021EE964 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #1 bl FUN_02020398 ldr r0, [r4, #4] mov r1, #1 ldr r0, [r0] bl FUN_02011AF0 pop {r4, pc} thumb_func_end MOD16_021EE964 thumb_func_start MOD16_021EE97C MOD16_021EE97C: ; 0x021EE97C push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #0 bl FUN_02020398 ldr r0, [r4, #4] mov r1, #0 ldr r0, [r0] bl FUN_02011AF0 pop {r4, pc} thumb_func_end MOD16_021EE97C thumb_func_start MOD16_021EE994 MOD16_021EE994: ; 0x021EE994 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r2, #0 add r5, r1, #0 add r6, r3, #0 bl MOD16_021EE964 ldr r0, [r4, #8] bl MOD16_021E95B8 cmp r0, #0 beq _021EE9FC cmp r6, #0 beq _021EE9D8 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r2, [r5] lsl r0, r0, #4 add r0, r2, r0 add r2, r1, #0 sub r2, #0x11 bl MOD16_021D8988 add sp, #0x14 pop {r3, r4, r5, r6, pc} _021EE9D8: mov r0, #0x10 str r0, [sp] mov r2, #0 str r2, [sp, #4] mov r0, #0x2c str r0, [sp, #8] mov r0, #0x2f str r0, [sp, #0xc] mov r1, #1 str r1, [sp, #0x10] mov r0, #0x19 ldr r3, [r5] lsl r0, r0, #4 add r0, r3, r0 add r3, r1, #0 sub r3, #0x11 bl MOD16_021D8988 _021EE9FC: add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021EE994 thumb_func_start MOD16_021EEA00 MOD16_021EEA00: ; 0x021EEA00 push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r2, #8] add r5, r1, #0 add r4, r3, #0 bl MOD16_021E95B8 cmp r0, #0 beq _021EEA20 mov r0, #0x19 ldr r1, [r5] lsl r0, r0, #4 add r0, r1, r0 bl MOD16_021D89B4 b _021EEA26 _021EEA20: mov r0, #2 bl FUN_0200A344 _021EEA26: cmp r0, #0 beq _021EEA38 cmp r4, #0 beq _021EEA34 add r0, r6, #0 bl MOD16_021EE97C _021EEA34: mov r0, #1 pop {r4, r5, r6, pc} _021EEA38: mov r0, #0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EEA00 thumb_func_start MOD16_021EEA3C MOD16_021EEA3C: ; 0x021EEA3C push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r2, #0 add r5, r0, #0 add r4, r1, #0 add r0, r6, #0 mov r1, #4 bl FUN_02016998 str r0, [r5, #4] mov r0, #0xf8 str r0, [sp] ldr r0, [r5, #4] mov r1, #0x68 mov r2, #0xb8 mov r3, #8 bl MOD16_021D7C98 str r4, [r5, #8] str r5, [r5, #0xc] str r6, [sp] add r3, r5, #0 ldr r0, [r5, #4] ldr r2, _021EEA7C ; =MOD16_021EEAB8 mov r1, #1 add r3, #8 bl FUN_020220C4 str r0, [r5] add sp, #4 pop {r3, r4, r5, r6, pc} nop _021EEA7C: .word MOD16_021EEAB8 thumb_func_end MOD16_021EEA3C thumb_func_start MOD16_021EEA80 MOD16_021EEA80: ; 0x021EEA80 mov r1, #3 str r1, [r0, #0x10] bx lr .align 2, 0 thumb_func_end MOD16_021EEA80 thumb_func_start MOD16_021EEA88 MOD16_021EEA88: ; 0x021EEA88 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_02022144 ldr r0, [r4, #0x14] cmp r0, #0 beq _021EEA9C mov r0, #2 str r0, [r4, #0x10] _021EEA9C: pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EEA88 thumb_func_start MOD16_021EEAA0 MOD16_021EEAA0: ; 0x021EEAA0 push {r4, lr} add r4, r0, #0 ldr r0, [r4] bl FUN_0202212C ldr r0, [r4, #4] bl FUN_02016A18 mov r0, #0 str r0, [r4, #4] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EEAA0 thumb_func_start MOD16_021EEAB8 MOD16_021EEAB8: ; 0x021EEAB8 ldr r3, [r2, #4] lsl r2, r0, #2 add r2, r3, r2 str r1, [r2, #0x10] cmp r1, #0 beq _021EEACA cmp r1, #2 beq _021EEAD4 bx lr _021EEACA: cmp r0, #0 bne _021EEADC mov r0, #1 str r0, [r3, #0x14] bx lr _021EEAD4: cmp r0, #0 bne _021EEADC mov r0, #1 str r0, [r3, #0x14] _021EEADC: bx lr .align 2, 0 thumb_func_end MOD16_021EEAB8 thumb_func_start MOD16_021EEAE0 MOD16_021EEAE0: ; 0x021EEAE0 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r2, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD16_021EEB50 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EEBB8 add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EEC6C add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 bl MOD16_021EED04 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EEAE0 thumb_func_start MOD16_021EEB10 MOD16_021EEB10: ; 0x021EEB10 push {r3, r4, r5, lr} sub sp, #8 add r5, r0, #0 mov r0, #0x20 str r0, [sp] add r4, r1, #0 str r2, [sp, #4] ldr r0, [r4] mov r1, #9 mov r2, #4 mov r3, #0x80 bl MOD16_021D8CFC add r0, r5, #0 bl MOD16_021EECF8 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EEDA0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EEC38 ldr r0, [r5, #0x2c] cmp r0, #0 beq _021EEB4A bl FUN_02016A18 _021EEB4A: add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EEB10 thumb_func_start MOD16_021EEB50 MOD16_021EEB50: ; 0x021EEB50 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4] add r5, r1, #0 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r5, [sp, #0xc] ldr r2, [r0] mov r1, #0x22 mov r3, #6 bl MOD16_021D8CB4 str r5, [sp] ldr r0, [r4] mov r1, #0x3a mov r2, #1 add r3, sp, #0x10 bl MOD16_021D8D48 ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #6 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [r4] ldr r0, [r0] bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 ldr r0, [r4] mov r1, #6 ldr r0, [r0] bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EEB50 thumb_func_start MOD16_021EEBB8 MOD16_021EEBB8: ; 0x021EEBB8 push {r4, r5, r6, r7, lr} sub sp, #0xc ldr r6, [r1] add r5, r0, #0 add r0, r6, #0 add r4, r2, #0 bl MOD16_021D8C70 add r7, r0, #0 ldr r0, _021EEC2C ; =0x0000332E add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #5 str r4, [sp, #8] lsl r0, r0, #6 ldr r0, [r6, r0] mov r2, #0x66 mov r3, #1 bl FUN_020091E0 str r0, [r5, #8] bl FUN_02009B04 ldr r0, [r5, #8] bl FUN_02009474 ldr r0, _021EEC30 ; =0x0000332C add r1, r7, #0 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #0x52 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x64 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x10] ldr r0, _021EEC34 ; =0x0000332D add r1, r7, #0 str r0, [sp] mov r0, #3 str r0, [sp, #4] mov r0, #0x53 str r4, [sp, #8] lsl r0, r0, #2 ldr r0, [r6, r0] mov r2, #0x65 mov r3, #1 bl FUN_02009358 str r0, [r5, #0x14] add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _021EEC2C: .word 0x0000332E _021EEC30: .word 0x0000332C _021EEC34: .word 0x0000332D thumb_func_end MOD16_021EEBB8 thumb_func_start MOD16_021EEC38 MOD16_021EEC38: ; 0x021EEC38 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #8] ldr r4, [r1] bl FUN_02009C0C mov r0, #5 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, [r5, #8] bl FUN_02009490 mov r0, #0x52 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x10] bl FUN_02009490 mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, [r5, #0x14] bl FUN_02009490 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EEC38 thumb_func_start MOD16_021EEC6C MOD16_021EEC6C: ; 0x021EEC6C push {r4, r5, r6, lr} sub sp, #0x70 ldr r4, [r1] ldr r3, _021EECF0 ; =0x0000332D add r5, r0, #0 mov r0, #0 str r3, [sp] mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] mov r0, #2 str r0, [sp, #0x10] mov r0, #5 lsl r0, r0, #6 add r6, r2, #0 ldr r2, [r4, r0] str r2, [sp, #0x14] add r2, r0, #4 ldr r2, [r4, r2] str r2, [sp, #0x18] add r2, r0, #0 add r2, #8 ldr r2, [r4, r2] add r0, #0xc str r2, [sp, #0x1c] ldr r0, [r4, r0] ldr r2, _021EECF4 ; =0x0000083F str r0, [sp, #0x20] str r1, [sp, #0x24] str r1, [sp, #0x28] add r1, r3, #1 add r0, sp, #0x4c sub r3, r3, #1 bl FUN_02008AA4 mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #9 str r0, [sp, #0x2c] add r0, sp, #0x4c str r0, [sp, #0x30] mov r0, #0x1f str r0, [sp, #0x40] mov r0, #2 str r0, [sp, #0x44] lsl r0, r0, #0x12 str r0, [sp, #0x34] mov r0, #3 lsl r1, r1, #0x10 lsl r0, r0, #0x12 str r1, [sp, #0x38] add r0, r1, r0 str r0, [sp, #0x38] add r0, sp, #0x2c str r6, [sp, #0x48] bl FUN_0201FF84 mov r1, #2 str r0, [r5] bl FUN_02020130 add sp, #0x70 pop {r4, r5, r6, pc} .align 2, 0 _021EECF0: .word 0x0000332D _021EECF4: .word 0x0000083F thumb_func_end MOD16_021EEC6C thumb_func_start MOD16_021EECF8 MOD16_021EECF8: ; 0x021EECF8 ldr r3, _021EED00 ; =0x0201FFC9 ldr r0, [r0] bx r3 nop _021EED00: .word 0x0201FFC9 thumb_func_end MOD16_021EECF8 thumb_func_start MOD16_021EED04 MOD16_021EED04: ; 0x021EED04 push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 add r5, r0, #0 ldr r0, [r5] add r6, r2, #0 ldr r4, [r1] cmp r0, #0 bne _021EED18 bl ErrorHandling _021EED18: mov r0, #0x51 lsl r0, r0, #2 ldr r0, [r4, r0] ldr r1, _021EED98 ; =0x0000083F bl FUN_020094F0 mov r1, #0x15 lsl r1, r1, #4 ldr r1, [r4, r1] str r1, [sp, #8] mov r1, #0 bl FUN_02009E54 mov r1, #7 mvn r1, r1 str r1, [sp, #0x1c] mov r1, #2 mov r2, #0 str r0, [sp, #0x10] str r1, [sp, #0x20] str r2, [sp, #0x24] str r1, [sp, #0x28] str r6, [sp, #0x2c] bl FUN_0201E28C add r7, r0, #0 mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0x10 mov r2, #2 bl MOD16_021DB388 add r6, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] ldr r2, _021EED9C ; =0x00000266 add r1, r6, #0 mov r3, #0x64 bl MOD16_021DB3C8 lsr r0, r0, #1 neg r0, r0 str r6, [sp, #0xc] str r0, [sp, #0x18] ldr r0, [r5] str r0, [sp, #0x14] add r0, sp, #8 bl MOD16_021DB2BC str r0, [r5, #4] ldr r0, [r0] add r1, r7, #4 bl FUN_02011A60 add r0, r6, #0 bl MOD16_021DB3BC add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EED98: .word 0x0000083F _021EED9C: .word 0x00000266 thumb_func_end MOD16_021EED04 thumb_func_start MOD16_021EEDA0 MOD16_021EEDA0: ; 0x021EEDA0 ldr r3, _021EEDA8 ; =MOD16_021DB338 ldr r0, [r0, #4] bx r3 nop _021EEDA8: .word MOD16_021DB338 thumb_func_end MOD16_021EEDA0 thumb_func_start MOD16_021EEDAC MOD16_021EEDAC: ; 0x021EEDAC push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp, #4] str r1, [sp, #8] add r0, r1, #0 add r1, r3, #0 str r2, [sp, #0xc] ldr r4, [sp, #0x30] ldr r6, [sp, #0x40] mov r5, #0 bl MOD16_021D7B98 ldr r0, [sp, #0x3c] ldr r1, [sp, #0xc] str r0, [sp] ldr r0, [sp, #8] ldr r2, [sp, #0x28] ldr r3, [sp, #0x38] bl MOD16_021EEE58 ldr r0, [sp, #8] bl FUN_0202022C cmp r0, #3 bhi _021EEE1E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EEDEA: ; jump table .short _021EEDF2 - _021EEDEA - 2 ; case 0 .short _021EEDF2 - _021EEDEA - 2 ; case 1 .short _021EEE02 - _021EEDEA - 2 ; case 2 .short _021EEE10 - _021EEDEA - 2 ; case 3 _021EEDF2: ldr r0, [r4] cmp r0, #0 beq _021EEE1E mov r0, #0 mov r5, #1 mov r7, #9 str r0, [r4] b _021EEE1E _021EEE02: ldr r0, [r4] cmp r0, #1 beq _021EEE1E mov r5, #1 mov r7, #0xa str r5, [r4] b _021EEE1E _021EEE10: ldr r0, [r4] cmp r0, #2 beq _021EEE1E mov r0, #2 mov r5, #1 mov r7, #8 str r0, [r4] _021EEE1E: cmp r5, #0 beq _021EEE54 ldr r0, [r6] cmp r0, #0 beq _021EEE2C bl FUN_02016A18 _021EEE2C: ldr r0, [sp, #4] ldr r3, [sp, #0x34] ldr r0, [r0] add r1, r7, #0 add r2, sp, #0x10 bl MOD16_021D8D70 str r0, [r6] ldr r2, [sp, #0x10] ldr r1, [sp, #0x2c] ldr r2, [r2, #0xc] mov r0, #0x1f lsl r1, r1, #5 mov r3, #0x20 bl FUN_0201C2C8 cmp r0, #0 bne _021EEE54 bl ErrorHandling _021EEE54: add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021EEDAC thumb_func_start MOD16_021EEE58 MOD16_021EEE58: ; 0x021EEE58 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r6, r3, #0 bl MOD16_021D7BE4 add r0, r5, #0 bl FUN_0202022C cmp r0, #2 ldr r0, [r4] bge _021EEE78 add r1, r6, #0 bl FUN_02011AC0 pop {r4, r5, r6, pc} _021EEE78: ldr r1, [sp, #0x10] bl FUN_02011AC0 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EEE58 thumb_func_start MOD16_021EEE80 MOD16_021EEE80: ; 0x021EEE80 push {r4, r5, lr} sub sp, #0x1c add r5, r1, #0 mov r1, #7 mvn r1, r1 add r4, r2, #0 str r1, [sp] mov r2, #4 add r1, r5, #0 str r2, [sp, #4] add r1, #0x28 str r1, [sp, #8] str r3, [sp, #0xc] str r2, [sp, #0x10] mov r1, #1 str r1, [sp, #0x14] add r1, r5, #0 add r1, #0x2c str r1, [sp, #0x18] ldr r1, [r5] ldr r2, [r5, #4] ldr r3, [r4, #0x10] bl MOD16_021EEDAC add sp, #0x1c pop {r4, r5, pc} thumb_func_end MOD16_021EEE80 thumb_func_start MOD16_021EEEB4 MOD16_021EEEB4: ; 0x021EEEB4 ldr r1, _021EEEC4 ; =0x021C48B8 ldr r2, [r1, #0x44] mov r1, #1 tst r2, r1 beq _021EEEC0 str r1, [r0, #0x14] _021EEEC0: bx lr nop _021EEEC4: .word 0x021C48B8 thumb_func_end MOD16_021EEEB4 thumb_func_start MOD16_021EEEC8 MOD16_021EEEC8: ; 0x021EEEC8 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 ldr r0, [r1, #8] bl MOD16_021E95C8 cmp r0, #1 bne _021EEEE8 mov r0, #0x40 str r0, [sp] add r0, r4, #0 mov r1, #0x80 mov r2, #0x90 mov r3, #0xe4 bl MOD16_021EEEEC _021EEEE8: add sp, #4 pop {r3, r4, pc} thumb_func_end MOD16_021EEEC8 thumb_func_start MOD16_021EEEEC MOD16_021EEEEC: ; 0x021EEEEC push {r3, r4, lr} sub sp, #4 ldr r4, [sp, #0x10] str r4, [sp] ldr r0, [r0] bl MOD16_021D8B04 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_end MOD16_021EEEEC thumb_func_start MOD16_021EEF00 MOD16_021EEF00: ; 0x021EEF00 ldr r3, _021EEF08 ; =MOD16_021E5C5C ldr r0, [r0, #0xc] mov r1, #1 bx r3 .align 2, 0 _021EEF08: .word MOD16_021E5C5C thumb_func_end MOD16_021EEF00 thumb_func_start MOD16_021EEF0C MOD16_021EEF0C: ; 0x021EEF0C push {r4, r5, lr} sub sp, #0xc add r5, r0, #0 mov r1, #0x7a ldr r0, [r5, #0xc] lsl r1, r1, #2 bl FUN_02016998 mov r2, #0x7a add r4, r0, #0 mov r1, #0 lsl r2, r2, #2 bl Call_FillMemWithValue add r0, r4, #0 add r1, r5, #0 bl MOD16_021EEFA4 ldr r0, [r4, #8] ldr r1, [r4, #0xc] bl MOD16_021EF9B8 mov r0, #0 str r0, [sp] str r0, [sp, #4] str r0, [sp, #8] ldr r0, [r4, #8] ldr r1, [r4, #0xc] mov r2, #0xa mov r3, #0xf bl MOD16_021EF9D8 ldr r0, _021EEF64 ; =MOD16_021EF90C add r1, r4, #0 mov r2, #0 bl FUN_0200CA44 mov r1, #7 lsl r1, r1, #6 str r0, [r4, r1] add r0, r4, #0 add sp, #0xc pop {r4, r5, pc} nop _021EEF64: .word MOD16_021EF90C thumb_func_end MOD16_021EEF0C thumb_func_start MOD16_021EEF68 MOD16_021EEF68: ; 0x021EEF68 push {r4, lr} add r4, r0, #0 bl MOD16_021EF174 mov r0, #7 lsl r0, r0, #6 ldr r0, [r4, r0] bl FUN_0200CAB4 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EEF68 thumb_func_start MOD16_021EEF84 MOD16_021EEF84: ; 0x021EEF84 mov r1, #0x6e lsl r1, r1, #2 ldr r0, [r0, r1] cmp r0, #4 bne _021EEF92 mov r0, #1 bx lr _021EEF92: mov r0, #0 bx lr .align 2, 0 thumb_func_end MOD16_021EEF84 thumb_func_start MOD16_021EEF98 MOD16_021EEF98: ; 0x021EEF98 ldr r0, [r0, #0xc] bx lr thumb_func_end MOD16_021EEF98 thumb_func_start MOD16_021EEF9C MOD16_021EEF9C: ; 0x021EEF9C mov r2, #0x79 lsl r2, r2, #2 str r1, [r0, r2] bx lr thumb_func_end MOD16_021EEF9C thumb_func_start MOD16_021EEFA4 MOD16_021EEFA4: ; 0x021EEFA4 push {r4, r5, lr} sub sp, #0x14 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x10] mov r1, #5 mov r2, #0 bl FUN_020671BC mov r1, #0x6f lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r4] add r1, r5, #0 str r0, [r5] ldr r2, [r4, #0xc] mov r0, #0x20 add r1, #0x10 bl FUN_02008C9C mov r1, #0x4e lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r4, #0xc] bl FUN_020203CC ldr r0, [r4, #0xc] bl MOD16_021EFAEC ldr r0, [r4, #0xc] mov r2, #0x30 str r0, [sp] ldr r0, [r4, #8] ldr r1, [r4, #0x10] mov r3, #0x48 bl MOD16_021EFAC0 str r0, [r5, #0xc] ldr r0, [r4, #4] str r0, [r5, #8] mov r0, #0x4e lsl r0, r0, #2 ldr r0, [r5, r0] str r0, [sp, #4] ldr r0, [r5] str r0, [sp, #8] mov r0, #3 str r0, [sp, #0xc] ldr r0, [r4, #0xc] str r0, [sp, #0x10] add r0, sp, #4 bl MOD16_021DB228 mov r1, #0x53 lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r5] ldr r1, [r4, #0xc] bl MOD16_021EF218 mov r1, #0x3f add r2, r1, #0 ldr r0, _021EF170 ; =0x04000050 sub r2, #0x4f bl G2x_SetBlendBrightness_ ldr r0, [r5] ldr r1, [r4, #0xc] bl MOD16_021EF318 str r0, [r5, #4] mov r0, #0x4f lsl r0, r0, #2 ldr r1, [r4, #0xc] add r0, r5, r0 bl MOD16_021EF370 mov r1, #0x15 lsl r1, r1, #4 add r0, r5, r1 sub r1, #0x14 ldr r2, [r4, #0xc] add r1, r5, r1 bl MOD16_021D9118 mov r2, #0x15 lsl r2, r2, #4 mov r0, #2 str r0, [sp] add r1, r2, #0 sub r1, #0x18 add r0, r5, r2 sub r2, #0x14 ldr r1, [r5, r1] ldr r3, [r4, #0xc] add r2, r5, r2 bl MOD16_021D9318 ldr r0, [r4, #0x14] mov r3, #0x15 lsl r3, r3, #4 str r0, [sp] sub r1, r3, #4 add r0, r5, r3 add r3, #0x6c ldr r1, [r5, r1] ldr r2, [r4, #0xc] ldr r3, [r5, r3] bl MOD16_021EF3A8 mov r0, #0x15 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0xac mov r2, #0x20 bl MOD16_021D7F7C mov r0, #0x15 lsl r0, r0, #4 add r0, r5, r0 mov r1, #1 bl MOD16_021D93D4 mov r2, #6 lsl r2, r2, #6 add r1, r2, #0 add r0, r5, r2 add r2, #0x3c sub r1, #0x44 ldr r2, [r5, r2] ldr r3, [r4, #0xc] add r1, r5, r1 bl MOD16_021EF540 mov r2, #6 lsl r2, r2, #6 add r1, r2, #0 sub r1, #0x48 add r0, r5, r2 sub r2, #0x44 ldr r1, [r5, r1] ldr r3, [r4, #0xc] add r2, r5, r2 bl MOD16_021EF598 mov r2, #0x67 lsl r2, r2, #2 add r1, r2, #0 add r0, r5, r2 add r2, #0x20 sub r1, #0x60 ldr r2, [r5, r2] ldr r3, [r4, #0xc] add r1, r5, r1 bl MOD16_021EF6A4 mov r2, #0x6f lsl r2, r2, #2 ldr r0, [r5, r2] add r1, r2, #0 str r0, [sp] add r0, r2, #0 sub r1, #0x84 sub r0, #0x20 sub r2, #0x80 ldr r1, [r5, r1] ldr r3, [r4, #0xc] add r0, r5, r0 add r2, r5, r2 bl MOD16_021EF6E0 mov r2, #0x69 lsl r2, r2, #2 add r0, r5, r2 str r0, [sp] add r1, r2, #0 add r0, r2, #0 sub r1, #0x6c sub r0, #0x10 sub r2, #0x68 ldr r1, [r5, r1] ldr r3, [r4, #0xc] add r0, r5, r0 add r2, r5, r2 bl MOD16_021EF5EC mov r3, #0x16 lsl r3, r3, #4 ldr r0, [r5, r3] add r1, r3, #0 str r0, [sp] add r0, r3, #0 sub r1, #0x14 add r3, #0x5c add r0, #0x34 ldr r1, [r5, r1] ldr r2, [r4, #0xc] ldr r3, [r5, r3] add r0, r5, r0 bl MOD16_021EF648 ldr r0, [r5] ldr r1, [r4, #0xc] bl MOD16_021EF790 ldr r0, [r5] ldr r1, [r4, #0xc] bl MOD16_021EF8A8 mov r2, #0x6f lsl r2, r2, #2 ldr r0, [r5, #4] ldr r1, [r4, #0xc] ldr r2, [r5, r2] bl MOD16_021EFA48 mov r0, #0x71 lsl r0, r0, #2 ldr r1, [r4, #0xc] ldr r2, [r4, #0x14] add r0, r5, r0 bl MOD16_021EFB20 mov r0, #0x79 mov r1, #1 lsl r0, r0, #2 str r1, [r5, r0] add sp, #0x14 pop {r4, r5, pc} nop _021EF170: .word 0x04000050 thumb_func_end MOD16_021EEFA4 thumb_func_start MOD16_021EF174 MOD16_021EF174: ; 0x021EF174 push {r4, lr} add r4, r0, #0 mov r0, #0x71 lsl r0, r0, #2 add r0, r4, r0 bl MOD16_021EFBA4 mov r0, #0x67 lsl r0, r0, #2 add r0, r4, r0 bl MOD16_021EF774 mov r1, #0x67 lsl r1, r1, #2 add r0, r4, r1 sub r1, #0x60 add r1, r4, r1 bl MOD16_021EF6D4 mov r0, #0x65 lsl r0, r0, #2 add r0, r4, r0 bl MOD16_021EF698 mov r0, #0x65 lsl r0, r0, #2 add r0, r4, r0 bl MOD16_021EF63C mov r0, #6 lsl r0, r0, #6 add r0, r4, r0 bl MOD16_021EF5E0 mov r1, #6 lsl r1, r1, #6 add r0, r4, r1 sub r1, #0x44 add r1, r4, r1 bl MOD16_021EF58C mov r0, #0x15 lsl r0, r0, #4 add r0, r4, r0 bl MOD16_021EF418 mov r0, #0x15 lsl r0, r0, #4 add r0, r4, r0 bl MOD16_021D93AC mov r1, #0x15 lsl r1, r1, #4 add r0, r4, r1 sub r1, #0x14 add r1, r4, r1 bl MOD16_021D91E8 mov r0, #0x4f lsl r0, r0, #2 add r0, r4, r0 bl MOD16_021EF390 mov r0, #0x4e lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0201FD58 ldr r0, [r4, #4] bl MOD16_021EF358 ldr r0, [r4] bl MOD16_021EF2FC mov r0, #0x53 lsl r0, r0, #2 ldr r0, [r4, r0] bl MOD16_021DB288 bl MOD16_021EFB18 pop {r4, pc} thumb_func_end MOD16_021EF174 thumb_func_start MOD16_021EF218 MOD16_021EF218: ; 0x021EF218 push {r4, r5, lr} sub sp, #0x54 ldr r3, _021EF2F0 ; =0x021FF78C add r5, r0, #0 add r4, r1, #0 ldmia r3!, {r0, r1} add r2, sp, #0x38 stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r3] mov r1, #1 str r0, [r2] add r0, r5, #0 bl FUN_020178A0 add r0, r5, #0 mov r1, #1 add r2, sp, #0x38 mov r3, #0 bl FUN_02016C18 mov r0, #1 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #1 bl FUN_02018744 ldr r3, _021EF2F4 ; =0x021FF770 add r2, sp, #0x1c ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r3] mov r1, #2 str r0, [r2] add r0, r5, #0 bl FUN_020178A0 add r0, r5, #0 mov r1, #2 add r2, sp, #0x1c mov r3, #0 bl FUN_02016C18 mov r0, #2 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #2 bl FUN_02018744 mov r0, #0 add r1, r0, #0 bl FUN_020178BC mov r0, #1 add r1, r0, #0 bl FUN_0201E6E4 add r0, r5, #0 mov r1, #0 bl FUN_020178A0 ldr r3, _021EF2F8 ; =0x021FF7A8 add r2, sp, #0 ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r3] mov r1, #3 str r0, [r2] add r0, r5, #0 bl FUN_020178A0 add r0, r5, #0 mov r1, #3 add r2, sp, #0 mov r3, #0 bl FUN_02016C18 mov r0, #3 mov r1, #0x20 mov r2, #0 add r3, r4, #0 bl FUN_02017F18 add r0, r5, #0 mov r1, #3 bl FUN_02018744 add sp, #0x54 pop {r4, r5, pc} .align 2, 0 _021EF2F0: .word 0x021FF78C _021EF2F4: .word 0x021FF770 _021EF2F8: .word 0x021FF7A8 thumb_func_end MOD16_021EF218 thumb_func_start MOD16_021EF2FC MOD16_021EF2FC: ; 0x021EF2FC push {r4, lr} add r4, r0, #0 mov r1, #1 bl FUN_020178A0 add r0, r4, #0 mov r1, #2 bl FUN_020178A0 add r0, r4, #0 mov r1, #3 bl FUN_020178A0 pop {r4, pc} thumb_func_end MOD16_021EF2FC thumb_func_start MOD16_021EF318 MOD16_021EF318: ; 0x021EF318 push {r4, r5, lr} sub sp, #0x14 add r5, r0, #0 add r0, r1, #0 mov r1, #1 bl FUN_02018FF4 add r4, r0, #0 mov r3, #0 str r3, [sp] mov r0, #0x20 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0xc str r0, [sp, #0xc] add r0, r5, #0 add r1, r4, #0 mov r2, #1 str r3, [sp, #0x10] bl FUN_02019064 add r0, r4, #0 mov r1, #0 bl FUN_02019620 add r0, r4, #0 bl FUN_020191D0 add r0, r4, #0 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EF318 thumb_func_start MOD16_021EF358 MOD16_021EF358: ; 0x021EF358 push {r4, lr} add r4, r0, #0 bl FUN_02019570 add r0, r4, #0 bl FUN_02019178 add r0, r4, #0 mov r1, #1 bl FUN_020191A4 pop {r4, pc} thumb_func_end MOD16_021EF358 thumb_func_start MOD16_021EF370 MOD16_021EF370: ; 0x021EF370 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 mov r4, #0 mov r7, #8 _021EF37A: add r0, r7, #0 add r1, r4, #0 add r2, r6, #0 bl FUN_02008DEC add r4, r4, #1 stmia r5!, {r0} cmp r4, #4 blt _021EF37A pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EF370 thumb_func_start MOD16_021EF390 MOD16_021EF390: ; 0x021EF390 push {r4, r5, r6, lr} mov r4, #0 add r5, r0, #0 add r6, r4, #0 _021EF398: ldr r0, [r5] bl FUN_02008E2C add r4, r4, #1 stmia r5!, {r6} cmp r4, #4 blt _021EF398 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EF390 thumb_func_start MOD16_021EF3A8 MOD16_021EF3A8: ; 0x021EF3A8 push {r4, r5, r6, r7, lr} sub sp, #0x2c add r5, r0, #0 ldr r0, [r5, #0x10] add r4, r1, #0 str r4, [sp, #4] mov r1, #0 add r6, r2, #0 add r7, r3, #0 bl FUN_02009E54 str r0, [sp, #0xc] ldr r0, [r5] str r0, [sp, #0x10] mov r0, #0x3f mvn r0, r0 str r0, [sp, #0x14] add r0, #0x38 str r0, [sp, #0x18] mov r0, #2 str r0, [sp, #0x1c] mov r0, #0 str r0, [sp, #0x20] mov r0, #1 str r0, [sp, #0x24] ldr r0, [sp, #0x40] str r6, [sp, #0x28] cmp r0, #0 bne _021EF3EE add r0, r4, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021D7E68 b _021EF3F8 _021EF3EE: add r0, r4, #0 add r1, r6, #0 add r2, r7, #0 bl MOD16_021D7E48 _021EF3F8: add r4, r0, #0 ldr r0, [sp, #0x40] str r4, [sp, #8] str r0, [sp] add r0, r5, #0 add r1, sp, #4 mov r2, #0 add r3, r7, #0 bl MOD16_021D8888 add r0, r4, #0 bl MOD16_021DB3BC add sp, #0x2c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EF3A8 thumb_func_start MOD16_021EF418 MOD16_021EF418: ; 0x021EF418 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _021EF42A bl MOD16_021DB338 mov r0, #0 str r0, [r4, #8] _021EF42A: pop {r4, pc} thumb_func_end MOD16_021EF418 thumb_func_start MOD16_021EF42C MOD16_021EF42C: ; 0x021EF42C push {r4, r5, r6, r7, lr} sub sp, #0x14 ldr r7, [sp, #0x3c] str r3, [sp, #0x10] str r7, [sp] mov r3, #1 add r6, r2, #0 str r3, [sp, #4] add r4, r1, #0 str r6, [sp, #8] add r5, r0, #0 ldr r0, [r4] ldr r1, [sp, #0x10] ldr r2, [sp, #0x28] bl FUN_02008F34 str r0, [r5] bl FUN_02009B04 ldr r0, [r5] bl FUN_02009474 str r7, [sp] mov r0, #1 str r0, [sp, #4] ldr r0, [sp, #0x38] ldr r1, [sp, #0x10] str r0, [sp, #8] str r6, [sp, #0xc] ldr r0, [r4, #4] ldr r2, [sp, #0x2c] mov r3, #0 bl FUN_02008FEC str r0, [r5, #4] bl FUN_02009D68 ldr r0, [r5, #4] bl FUN_02009474 str r7, [sp] mov r0, #2 str r0, [sp, #4] str r6, [sp, #8] ldr r0, [r4, #8] ldr r1, [sp, #0x10] ldr r2, [sp, #0x30] mov r3, #1 bl FUN_020090AC str r0, [r5, #8] str r7, [sp] mov r0, #3 str r0, [sp, #4] str r6, [sp, #8] ldr r0, [r4, #0xc] ldr r1, [sp, #0x10] ldr r2, [sp, #0x34] mov r3, #1 bl FUN_020090AC str r0, [r5, #0xc] add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021EF42C thumb_func_start MOD16_021EF4AC MOD16_021EF4AC: ; 0x021EF4AC push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 bl FUN_02009C0C ldr r0, [r5, #4] bl FUN_02009E04 ldr r0, [r4] ldr r1, [r5] bl FUN_02009490 ldr r0, [r4, #4] ldr r1, [r5, #4] bl FUN_02009490 ldr r0, [r4, #8] ldr r1, [r5, #8] bl FUN_02009490 ldr r0, [r4, #0xc] ldr r1, [r5, #0xc] bl FUN_02009490 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EF4AC thumb_func_start MOD16_021EF4E0 MOD16_021EF4E0: ; 0x021EF4E0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 add r7, r2, #0 add r6, r3, #0 bl FUN_02009530 str r0, [sp, #0x2c] ldr r0, [r5, #4] bl FUN_02009530 str r0, [sp, #0x30] ldr r0, [r5, #8] bl FUN_02009530 str r0, [sp, #0x34] ldr r0, [r5, #0xc] bl FUN_02009530 str r0, [sp] mov r0, #0 mvn r0, r0 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0 str r0, [sp, #0xc] str r6, [sp, #0x10] ldr r1, [r4] ldr r2, [sp, #0x30] str r1, [sp, #0x14] ldr r1, [r4, #4] ldr r3, [sp, #0x34] str r1, [sp, #0x18] ldr r1, [r4, #8] str r1, [sp, #0x1c] ldr r1, [r4, #0xc] str r1, [sp, #0x20] str r0, [sp, #0x24] str r0, [sp, #0x28] ldr r1, [sp, #0x2c] add r0, r7, #0 bl FUN_02008AA4 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021EF4E0 thumb_func_start MOD16_021EF540 MOD16_021EF540: ; 0x021EF540 push {r4, r5, r6, r7, lr} sub sp, #0x24 add r4, r2, #0 add r5, r0, #0 str r1, [sp, #0x18] str r3, [sp, #0x1c] bl MOD16_021D8520 str r0, [sp, #0x20] add r0, r4, #0 bl MOD16_021D8524 add r4, r0, #0 bl MOD16_021D8528 add r6, r0, #0 bl MOD16_021D852C add r7, r0, #0 bl MOD16_021D8530 str r4, [sp] str r6, [sp, #4] str r7, [sp, #8] str r0, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] mov r0, #0xfa lsl r0, r0, #4 str r0, [sp, #0x14] ldr r1, [sp, #0x18] ldr r2, [sp, #0x1c] ldr r3, [sp, #0x20] add r0, r5, #4 bl MOD16_021EF42C add sp, #0x24 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021EF540 thumb_func_start MOD16_021EF58C MOD16_021EF58C: ; 0x021EF58C ldr r3, _021EF594 ; =MOD16_021EF4AC add r0, r0, #4 bx r3 nop _021EF594: .word MOD16_021EF4AC thumb_func_end MOD16_021EF58C thumb_func_start MOD16_021EF598 MOD16_021EF598: ; 0x021EF598 push {r3, r4, r5, r6, lr} sub sp, #0x44 add r5, r0, #0 add r4, r1, #0 add r6, r3, #0 add r1, r2, #0 add r0, r5, #4 add r2, sp, #0 mov r3, #2 bl MOD16_021EF4E0 add r0, sp, #0 str r0, [sp, #0x28] mov r0, #1 str r0, [sp, #0x3c] mov r0, #0x20 str r0, [sp, #0x38] mov r0, #0x1e lsl r0, r0, #0xe str r0, [sp, #0x2c] mov r0, #0x16 lsl r0, r0, #0xe str r0, [sp, #0x30] add r0, sp, #0x24 str r4, [sp, #0x24] str r6, [sp, #0x40] bl FUN_0201FF84 str r0, [r5] cmp r0, #0 bne _021EF5DA bl ErrorHandling _021EF5DA: add sp, #0x44 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EF598 thumb_func_start MOD16_021EF5E0 MOD16_021EF5E0: ; 0x021EF5E0 ldr r3, _021EF5E8 ; =0x0201FFC9 ldr r0, [r0] bx r3 nop _021EF5E8: .word 0x0201FFC9 thumb_func_end MOD16_021EF5E0 thumb_func_start MOD16_021EF5EC MOD16_021EF5EC: ; 0x021EF5EC push {r3, r4, r5, r6, lr} sub sp, #0x44 add r5, r0, #0 add r4, r1, #0 add r6, r3, #0 add r1, r2, #0 ldr r0, [sp, #0x58] add r2, sp, #0 mov r3, #2 bl MOD16_021EF4E0 add r0, sp, #0 str r0, [sp, #0x28] mov r0, #1 str r0, [sp, #0x3c] mov r0, #0x20 str r0, [sp, #0x38] mov r0, #3 lsl r0, r0, #0x12 str r0, [sp, #0x2c] mov r0, #0xd lsl r0, r0, #0xe str r0, [sp, #0x30] add r0, sp, #0x24 str r4, [sp, #0x24] str r6, [sp, #0x40] bl FUN_0201FF84 str r0, [r5] cmp r0, #0 bne _021EF62E bl ErrorHandling _021EF62E: ldr r0, [r5] mov r1, #0x11 bl FUN_02020130 add sp, #0x44 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EF5EC thumb_func_start MOD16_021EF63C MOD16_021EF63C: ; 0x021EF63C ldr r3, _021EF644 ; =0x0201FFC9 ldr r0, [r0] bx r3 nop _021EF644: .word 0x0201FFC9 thumb_func_end MOD16_021EF63C thumb_func_start MOD16_021EF648 MOD16_021EF648: ; 0x021EF648 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r7, r1, #0 add r5, r0, #0 add r0, r7, #0 add r1, r3, #0 add r6, r2, #0 bl MOD16_021E57C8 add r4, r0, #0 ldr r0, [sp, #0x40] str r7, [sp] mov r1, #0 bl FUN_02009E54 str r0, [sp, #8] ldr r0, [r5] str r0, [sp, #0xc] mov r0, #0x4d mvn r0, r0 str r0, [sp, #0x10] add r0, #0x46 str r0, [sp, #0x14] mov r0, #2 str r0, [sp, #0x18] mov r0, #0x1f str r0, [sp, #0x1c] mov r0, #1 str r0, [sp, #0x20] str r6, [sp, #0x24] str r4, [sp, #4] add r0, sp, #0 bl MOD16_021DB2BC str r0, [r5, #4] add r0, r4, #0 bl MOD16_021DB3BC add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021EF648 thumb_func_start MOD16_021EF698 MOD16_021EF698: ; 0x021EF698 ldr r3, _021EF6A0 ; =MOD16_021DB338 ldr r0, [r0, #4] bx r3 nop _021EF6A0: .word MOD16_021DB338 thumb_func_end MOD16_021EF698 thumb_func_start MOD16_021EF6A4 MOD16_021EF6A4: ; 0x021EF6A4 push {r3, lr} sub sp, #0x18 mov r2, #0x5a str r2, [sp] mov r2, #0xd str r2, [sp, #4] mov r2, #0x58 str r2, [sp, #8] mov r2, #0x59 str r2, [sp, #0xc] mov r2, #5 str r2, [sp, #0x10] ldr r2, _021EF6D0 ; =0x00004268 add r0, #8 str r2, [sp, #0x14] add r2, r3, #0 mov r3, #0x45 bl MOD16_021EF42C add sp, #0x18 pop {r3, pc} nop _021EF6D0: .word 0x00004268 thumb_func_end MOD16_021EF6A4 thumb_func_start MOD16_021EF6D4 MOD16_021EF6D4: ; 0x021EF6D4 ldr r3, _021EF6DC ; =MOD16_021EF4AC add r0, #8 bx r3 nop _021EF6DC: .word MOD16_021EF4AC thumb_func_end MOD16_021EF6D4 thumb_func_start MOD16_021EF6E0 MOD16_021EF6E0: ; 0x021EF6E0 push {r4, r5, r6, r7, lr} sub sp, #0x4c add r5, r0, #0 add r7, r1, #0 ldr r0, [sp, #0x60] mov r1, #6 str r2, [sp] str r3, [sp, #4] bl FUN_02068678 add r4, r0, #0 ldr r0, [sp, #0x60] mov r1, #7 bl FUN_02068678 add r6, r0, #0 add r0, r4, #0 bl MOD16_021E563C add r4, r0, #0 add r0, r6, #0 bl MOD16_021E563C add r6, r0, #0 add r0, r5, #0 ldr r1, [sp] add r0, #8 add r2, sp, #8 mov r3, #2 bl MOD16_021EF4E0 add r0, sp, #8 str r0, [sp, #0x30] mov r0, #1 str r0, [sp, #0x44] mov r0, #0x20 str r0, [sp, #0x40] ldr r0, [sp, #4] str r7, [sp, #0x2c] str r0, [sp, #0x48] mov r0, #0xaa lsl r0, r0, #0xc str r0, [sp, #0x34] mov r0, #0x12 lsl r0, r0, #0xe str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 add r1, r4, #0 str r0, [r5] bl FUN_02020130 cmp r4, r6 beq _021EF76C mov r0, #0x37 lsl r0, r0, #0xe str r0, [sp, #0x34] mov r0, #0x12 lsl r0, r0, #0xe str r0, [sp, #0x38] add r0, sp, #0x2c bl FUN_0201FF84 add r1, r6, #0 str r0, [r5, #4] bl FUN_02020130 add sp, #0x4c pop {r4, r5, r6, r7, pc} _021EF76C: mov r0, #0 str r0, [r5, #4] add sp, #0x4c pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021EF6E0 thumb_func_start MOD16_021EF774 MOD16_021EF774: ; 0x021EF774 push {r4, lr} add r4, r0, #0 ldr r0, [r4] cmp r0, #0 beq _021EF782 bl FUN_0201FFC8 _021EF782: ldr r0, [r4, #4] cmp r0, #0 beq _021EF78C bl FUN_0201FFC8 _021EF78C: pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021EF774 thumb_func_start MOD16_021EF790 MOD16_021EF790: ; 0x021EF790 push {r3, r4, r5, r6, lr} sub sp, #0x14 mov r2, #0 add r5, r0, #0 add r4, r1, #0 str r2, [sp] mov r0, #0x45 mov r1, #6 add r3, r2, #0 str r4, [sp, #4] bl FUN_02006930 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] str r4, [sp, #0xc] mov r0, #0x45 mov r1, #0x21 add r2, r5, #0 mov r3, #3 bl FUN_0200687C str r4, [sp] mov r0, #0x45 mov r1, #0x32 mov r2, #1 add r3, sp, #0x10 bl FUN_02006BDC ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r6, r0, #0 ldrh r0, [r2] mov r1, #3 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] add r0, r5, #0 bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] mov r0, #0x45 mov r1, #0x33 mov r2, #1 add r3, sp, #0x10 bl FUN_02006BDC ldr r2, [sp, #0x10] mov r1, #3 str r1, [sp] add r6, r0, #0 ldrh r0, [r2] mov r3, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] add r0, r5, #0 bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] mov r0, #0x45 mov r1, #0x34 mov r2, #1 add r3, sp, #0x10 bl FUN_02006BDC add r6, r0, #0 ldr r2, [sp, #0x10] mov r0, #8 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] add r0, r5, #0 bl FUN_02018148 add r0, r6, #0 bl FUN_02016A18 str r4, [sp] mov r0, #0x45 mov r1, #0x36 mov r2, #1 add r3, sp, #0x10 bl FUN_02006BDC add r4, r0, #0 ldr r2, [sp, #0x10] mov r0, #0x10 str r0, [sp] ldrh r0, [r2] mov r1, #3 mov r3, #0 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] add r0, r5, #0 bl FUN_02018148 add r0, r4, #0 bl FUN_02016A18 add r0, r5, #0 mov r1, #3 bl FUN_0201AC68 add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_end MOD16_021EF790 thumb_func_start MOD16_021EF8A8 MOD16_021EF8A8: ; 0x021EF8A8 push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 add r5, r1, #0 str r0, [sp, #8] str r5, [sp, #0xc] mov r0, #0x45 mov r1, #0x21 add r2, r4, #0 mov r3, #2 bl FUN_0200687C str r5, [sp] mov r0, #0x45 mov r1, #0x39 mov r2, #1 add r3, sp, #0x10 bl FUN_02006BDC ldr r2, [sp, #0x10] mov r3, #0 str r3, [sp] add r5, r0, #0 ldrh r0, [r2] mov r1, #2 lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #4] ldrh r0, [r2, #2] add r2, #0xc lsl r0, r0, #0x15 lsr r0, r0, #0x18 str r0, [sp, #8] add r0, r4, #0 bl FUN_02018148 add r0, r5, #0 bl FUN_02016A18 add r0, r4, #0 mov r1, #2 bl FUN_0201AC68 add sp, #0x14 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EF8A8 thumb_func_start MOD16_021EF90C MOD16_021EF90C: ; 0x021EF90C push {r3, r4, lr} sub sp, #4 add r4, r1, #0 mov r1, #0x6e lsl r1, r1, #2 ldr r0, [r4, r1] cmp r0, #4 bhi _021EF994 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021EF928: ; jump table .short _021EF932 - _021EF928 - 2 ; case 0 .short _021EF940 - _021EF928 - 2 ; case 1 .short _021EF958 - _021EF928 - 2 ; case 2 .short _021EF982 - _021EF928 - 2 ; case 3 .short _021EF994 - _021EF928 - 2 ; case 4 _021EF932: ldr r0, _021EF9B4 ; =0x04000050 mov r2, #0 strh r2, [r0] ldr r0, [r4, r1] add r0, r0, #1 str r0, [r4, r1] b _021EF994 _021EF940: ldr r0, [r4, #8] ldr r1, [r4, #0xc] bl MOD16_021EFA28 cmp r0, #0 beq _021EF994 mov r0, #0x6e lsl r0, r0, #2 ldr r1, [r4, r0] add r1, r1, #1 str r1, [r4, r0] b _021EF994 _021EF958: add r2, r1, #0 add r2, #0x47 str r2, [sp] add r1, r1, #4 ldr r1, [r4, r1] mov r0, #0xe lsl r1, r1, #0x10 lsr r1, r1, #0x10 add r3, r2, #0 bl FUN_020056AC cmp r0, #0 bne _021EF976 bl ErrorHandling _021EF976: mov r0, #0x6e lsl r0, r0, #2 ldr r1, [r4, r0] add r1, r1, #1 str r1, [r4, r0] b _021EF994 _021EF982: bl FUN_02005670 cmp r0, #0 bne _021EF994 mov r0, #0x6e lsl r0, r0, #2 ldr r1, [r4, r0] add r1, r1, #1 str r1, [r4, r0] _021EF994: mov r0, #0x79 lsl r0, r0, #2 ldr r1, [r4, r0] cmp r1, #0 beq _021EF9A6 sub r0, #0x20 add r0, r4, r0 bl MOD16_021EFB78 _021EF9A6: mov r0, #0x4e lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_0201FDEC add sp, #4 pop {r3, r4, pc} .align 2, 0 _021EF9B4: .word 0x04000050 thumb_func_end MOD16_021EF90C thumb_func_start MOD16_021EF9B8 MOD16_021EF9B8: ; 0x021EF9B8 push {r4, lr} mov r1, #0 mov r3, #2 add r2, r1, #0 lsl r3, r3, #8 add r4, r0, #0 bl FUN_02003108 mov r3, #7 add r0, r4, #0 mov r1, #2 mov r2, #0 lsl r3, r3, #6 bl FUN_02003108 pop {r4, pc} thumb_func_end MOD16_021EF9B8 thumb_func_start MOD16_021EF9D8 MOD16_021EF9D8: ; 0x021EF9D8 push {r4, r5, lr} sub sp, #0xc add r5, r0, #0 ldr r0, [sp, #0x20] add r4, r3, #0 str r0, [sp] add r0, r1, #0 add r1, r2, #0 ldr r2, [sp, #0x18] ldr r3, [sp, #0x1c] bl FUN_02007E68 lsl r0, r4, #0x18 lsr r0, r0, #0x18 str r0, [sp] ldr r0, [sp, #0x18] ldr r3, [sp, #0x1c] lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #4] ldr r0, [sp, #0x20] lsl r3, r3, #0x18 lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] ldr r2, _021EFA24 ; =0x0000FFFF add r0, r5, #0 mov r1, #5 asr r3, r3, #0x18 bl FUN_02003210 add r0, r5, #0 mov r1, #0 bl FUN_020038F0 add sp, #0xc pop {r4, r5, pc} nop _021EFA24: .word 0x0000FFFF thumb_func_end MOD16_021EF9D8 thumb_func_start MOD16_021EFA28 MOD16_021EFA28: ; 0x021EFA28 push {r3, r4, r5, lr} add r5, r1, #0 bl FUN_020038E4 add r4, r0, #0 add r0, r5, #0 bl FUN_02007F20 cmp r4, #0 bne _021EFA44 cmp r0, #0 bne _021EFA44 mov r0, #1 pop {r3, r4, r5, pc} _021EFA44: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EFA28 thumb_func_start MOD16_021EFA48 MOD16_021EFA48: ; 0x021EFA48 push {r3, r4, r5, lr} add r4, r1, #0 ldr r1, _021EFA68 ; =0x00020100 add r5, r0, #0 str r1, [sp] add r1, r2, #0 add r2, r4, #0 mov r3, #0 bl MOD16_021E5064 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EFA6C pop {r3, r4, r5, pc} nop _021EFA68: .word 0x00020100 thumb_func_end MOD16_021EFA48 thumb_func_start MOD16_021EFA6C MOD16_021EFA6C: ; 0x021EFA6C push {r4, r5, r6, lr} sub sp, #0x10 add r6, r0, #0 mov r0, #0x40 add r4, r1, #0 bl FUN_020219F4 add r5, r0, #0 ldr r2, _021EFABC ; =0x00000266 mov r0, #0 mov r1, #0x1a add r3, r4, #0 bl FUN_0200A86C mov r1, #0x6d add r2, r5, #0 add r4, r0, #0 bl FUN_0200A8E0 mov r1, #0 str r1, [sp] mov r0, #0xc1 str r1, [sp, #4] lsl r0, r0, #0xa str r0, [sp, #8] add r0, r6, #0 add r2, r5, #0 mov r3, #0x20 str r1, [sp, #0xc] bl FUN_0201BDE0 add r0, r5, #0 bl FUN_02021A20 add r0, r4, #0 bl FUN_0200A8B8 add sp, #0x10 pop {r4, r5, r6, pc} nop _021EFABC: .word 0x00000266 thumb_func_end MOD16_021EFA6C thumb_func_start MOD16_021EFAC0 MOD16_021EFAC0: ; 0x021EFAC0 push {r4, r5, r6, lr} sub sp, #0x20 add r5, r0, #0 add r4, r2, #0 add r0, sp, #0x10 mov r2, #2 add r6, r3, #0 bl FUN_02068B68 mov r0, #0 str r0, [sp] str r0, [sp, #4] str r0, [sp, #8] str r0, [sp, #0xc] add r0, r5, #0 add r1, sp, #0x10 add r2, r4, #0 add r3, r6, #0 bl FUN_020073A0 add sp, #0x20 pop {r4, r5, r6, pc} thumb_func_end MOD16_021EFAC0 thumb_func_start MOD16_021EFAEC MOD16_021EFAEC: ; 0x021EFAEC push {r3, r4, r5, lr} sub sp, #0x10 ldr r4, _021EFB10 ; =0x021FF760 add r3, sp, #0 add r5, r0, #0 add r2, r3, #0 ldmia r4!, {r0, r1} stmia r3!, {r0, r1} ldmia r4!, {r0, r1} stmia r3!, {r0, r1} add r0, r2, #0 ldr r1, _021EFB14 ; =0x00200010 mov r2, #0x10 str r5, [sp, #0xc] bl FUN_0201D060 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _021EFB10: .word 0x021FF760 _021EFB14: .word 0x00200010 thumb_func_end MOD16_021EFAEC thumb_func_start MOD16_021EFB18 MOD16_021EFB18: ; 0x021EFB18 ldr r3, _021EFB1C ; =0x0201D12D bx r3 .align 2, 0 _021EFB1C: .word 0x0201D12D thumb_func_end MOD16_021EFB18 thumb_func_start MOD16_021EFB20 MOD16_021EFB20: ; 0x021EFB20 push {r3, r4, r5, lr} add r4, r0, #0 add r5, r1, #0 cmp r2, #0 bne _021EFB3A add r2, r4, #0 mov r0, #0x45 mov r1, #0x17 add r2, #8 add r3, r5, #0 bl FUN_02006C08 b _021EFB48 _021EFB3A: add r2, r4, #0 mov r0, #0x45 mov r1, #0x18 add r2, #8 add r3, r5, #0 bl FUN_02006C08 _021EFB48: add r2, r4, #0 str r0, [r4] mov r0, #0x45 mov r1, #0x1a add r2, #0xc add r3, r5, #0 bl FUN_02006C08 str r0, [r4, #4] mov r1, #0 str r1, [r4, #0x10] str r1, [r4, #0x1c] add r2, r4, #0 _021EFB62: add r1, r1, #1 lsl r0, r1, #4 str r0, [r2, #0x14] add r2, r2, #4 cmp r1, #2 blt _021EFB62 ldr r1, [r4, #0x1c] add r0, r4, #0 bl MOD16_021EFBC4 pop {r3, r4, r5, pc} thumb_func_end MOD16_021EFB20 thumb_func_start MOD16_021EFB78 MOD16_021EFB78: ; 0x021EFB78 push {r3, lr} ldr r3, [r0, #0x1c] lsl r1, r3, #2 add r1, r0, r1 ldr r2, [r1, #0x14] ldr r1, [r0, #0x10] cmp r2, r1 bgt _021EFB9E add r1, r3, #1 str r1, [r0, #0x1c] cmp r1, #2 blt _021EFB96 mov r1, #0 str r1, [r0, #0x1c] str r1, [r0, #0x10] _021EFB96: ldr r1, [r0, #0x1c] bl MOD16_021EFBD8 pop {r3, pc} _021EFB9E: add r1, r1, #1 str r1, [r0, #0x10] pop {r3, pc} thumb_func_end MOD16_021EFB78 thumb_func_start MOD16_021EFBA4 MOD16_021EFBA4: ; 0x021EFBA4 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _021EFBAA: ldr r0, [r5] bl FUN_02016A18 add r4, r4, #1 cmp r4, #2 blt _021EFBAA add r0, r5, #0 mov r1, #0 mov r2, #0x20 bl Call_FillMemWithValue pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021EFBA4 thumb_func_start MOD16_021EFBC4 MOD16_021EFBC4: ; 0x021EFBC4 lsl r1, r1, #2 add r0, r0, r1 ldr r0, [r0, #8] ldr r3, _021EFBD4 ; =0x020C9550 ldr r0, [r0, #0xc] mov r1, #0 mov r2, #0x20 bx r3 .align 2, 0 _021EFBD4: .word 0x020C9550 thumb_func_end MOD16_021EFBC4 thumb_func_start MOD16_021EFBD8 MOD16_021EFBD8: ; 0x021EFBD8 push {r3, lr} add r2, r1, #0 add r3, r0, #0 lsl r2, r2, #2 add r2, r3, r2 ldr r2, [r2, #8] mov r0, #0xf ldr r2, [r2, #0xc] mov r1, #0 mov r3, #0x20 bl FUN_0201C2C8 pop {r3, pc} .align 2, 0 thumb_func_end MOD16_021EFBD8 thumb_func_start MOD16_021EFBF4 MOD16_021EFBF4: ; 0x021EFBF4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 mov r2, #0xd5 lsl r2, r2, #2 str r1, [sp, #4] add r1, r1, r2 str r0, [sp] ldr r2, _021EFC7C ; =0x00001DE0 mov r0, #0 bl MIi_CpuClear32 ldr r0, [sp] ldr r1, [r0, #0x2c] mov r0, #1 tst r0, r1 beq _021EFC70 mov r0, #0xb9 lsl r0, r0, #2 tst r0, r1 bne _021EFC70 ldr r6, _021EFC80 ; =0x000003CD mov r0, #0 add r7, r6, #0 mov ip, r0 sub r7, #0x31 _021EFC26: mov r1, ip mov r0, #1 tst r0, r1 beq _021EFC60 mov r0, ip asr r4, r0, #1 ldr r0, [sp, #4] lsl r3, r4, #3 ldr r2, [sp] mov r1, #0 add r3, r0, r3 add r4, r0, r4 _021EFC3E: add r0, r2, #0 add r0, #0xb0 ldrh r0, [r0] cmp r0, #0 beq _021EFC58 ldr r5, _021EFC80 ; =0x000003CD ldrb r5, [r4, r5] lsl r5, r5, #1 add r5, r3, r5 strh r0, [r5, r7] ldrb r0, [r4, r6] add r0, r0, #1 strb r0, [r4, r6] _021EFC58: add r1, r1, #1 add r2, r2, #2 cmp r1, #4 blt _021EFC3E _021EFC60: ldr r0, [sp] add r0, #0x34 str r0, [sp] mov r0, ip add r0, r0, #1 mov ip, r0 cmp r0, #4 blt _021EFC26 _021EFC70: ldr r2, _021EFC84 ; =0x021F4E34 ldr r1, _021EFC88 ; =0x00002134 ldr r0, [sp, #4] str r2, [r0, r1] add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021EFC7C: .word 0x00001DE0 _021EFC80: .word 0x000003CD _021EFC84: .word 0x021F4E34 _021EFC88: .word 0x00002134 thumb_func_end MOD16_021EFBF4 thumb_func_start MOD16_021EFC8C MOD16_021EFC8C: ; 0x021EFC8C push {r4, r5, r6, r7, lr} sub sp, #0xc str r0, [sp, #4] mov r0, #0xd5 add r5, r1, #0 lsl r0, r0, #2 add r1, r5, r0 mov r0, #0 str r2, [sp, #8] add r2, r0, #0 _021EFCA0: strb r2, [r1, r0] add r0, r0, #1 cmp r0, #0x1c blo _021EFCA0 mov r0, #0 mov r1, #0x64 mov r7, #1 _021EFCAE: add r4, r3, #0 tst r4, r7 beq _021EFCBE mov r4, #0xd6 add r6, r5, r2 lsl r4, r4, #2 strb r1, [r6, r4] b _021EFCC6 _021EFCBE: mov r4, #0xd6 add r6, r5, r2 lsl r4, r4, #2 strb r0, [r6, r4] _021EFCC6: lsl r3, r3, #0x17 add r2, r2, #1 lsr r3, r3, #0x18 cmp r2, #4 blt _021EFCAE mov r0, #0 mvn r0, r0 str r0, [sp] ldr r0, [sp, #4] ldr r2, [sp, #8] add r1, r5, #0 mov r3, #0 bl MOD11_02245D38 lsl r0, r0, #0x18 mov r4, #0 lsr r6, r0, #0x18 add r7, r4, #0 _021EFCEA: add r0, r4, #0 bl FUN_0206A92C tst r0, r6 beq _021EFCFC mov r0, #0xd6 add r1, r5, r4 lsl r0, r0, #2 strb r7, [r1, r0] _021EFCFC: bl FUN_0201B9EC lsr r1, r0, #0x1f lsl r2, r0, #0x1c sub r2, r2, r1 mov r0, #0x1c ror r2, r0 add r1, r1, r2 mov r0, #0x64 sub r2, r0, r1 mov r0, #0xdb add r1, r5, r4 lsl r0, r0, #2 add r4, r4, #1 strb r2, [r1, r0] cmp r4, #4 blt _021EFCEA mov r1, #0 add r0, #0x60 strb r1, [r5, r0] ldr r1, [sp, #4] mov r3, #0x80 ldr r2, [r1, #0x2c] add r1, r2, #0 tst r1, r3 beq _021EFD38 mov r1, #7 sub r0, #0x6c str r1, [r5, r0] b _021EFD6E _021EFD38: add r1, r3, #0 add r1, #0x80 tst r1, r2 beq _021EFD48 lsl r1, r3, #0x16 sub r0, #0x6c str r1, [r5, r0] b _021EFD6E _021EFD48: ldr r2, _021EFD88 ; =0x00002408 ldr r1, [sp, #4] ldr r2, [r1, r2] mov r1, #1 tst r1, r2 beq _021EFD5C lsl r1, r3, #0x18 sub r0, #0x6c str r1, [r5, r0] b _021EFD6E _021EFD5C: ldr r1, [sp, #8] mov r2, #0x34 mul r2, r1 ldr r1, [sp, #4] sub r0, #0x6c add r1, r1, r2 add r1, #0xb8 ldr r1, [r1] str r1, [r5, r0] _021EFD6E: ldr r0, [sp, #4] ldr r1, [r0, #0x2c] mov r0, #2 tst r0, r1 beq _021EFD84 mov r1, #0x36 lsl r1, r1, #4 ldr r2, [r5, r1] mov r0, #0x80 orr r0, r2 str r0, [r5, r1] _021EFD84: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _021EFD88: .word 0x00002408 thumb_func_end MOD16_021EFC8C thumb_func_start MOD16_021EFD8C MOD16_021EFD8C: ; 0x021EFD8C push {r4, r5, r6, lr} add r5, r0, #0 add r2, r1, #0 mov r1, #0xd9 ldr r4, [r5, #0x30] lsl r1, r1, #2 ldrb r6, [r4, r1] mov r3, #0x10 tst r3, r6 bne _021EFDBE add r1, #0x6b strb r2, [r4, r1] add r1, r4, #0 bl MOD11_022482A4 mov r2, #0x3d lsl r2, r2, #4 strb r0, [r4, r2] sub r2, r2, #1 ldrb r2, [r4, r2] add r0, r5, #0 add r1, r4, #0 mov r3, #0xf bl MOD16_021EFC8C _021EFDBE: ldr r1, [r5, #0x2c] mov r0, #2 tst r0, r1 bne _021EFDD0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021EFDDC pop {r4, r5, r6, pc} _021EFDD0: add r0, r5, #0 add r1, r4, #0 bl MOD16_021EFED0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021EFD8C thumb_func_start MOD16_021EFDDC MOD16_021EFDDC: ; 0x021EFDDC push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r0, #0 add r5, r1, #0 bl MOD16_021F2CEC mov r0, #0x36 lsl r0, r0, #4 ldr r1, [r5, r0] cmp r1, #0 beq _021EFE32 add r7, r0, #0 add r6, r0, #5 _021EFDF6: mov r0, #1 tst r0, r1 beq _021EFE18 mov r0, #0xd9 lsl r0, r0, #2 ldrb r1, [r5, r0] mov r0, #0x10 tst r0, r1 bne _021EFE10 mov r0, #0xd5 mov r1, #0 lsl r0, r0, #2 strb r1, [r5, r0] _021EFE10: add r0, r4, #0 add r1, r5, #0 bl MOD16_021F00F0 _021EFE18: ldr r0, [r5, r7] mov r1, #0 lsr r0, r0, #1 str r0, [r5, r7] ldrb r0, [r5, r6] add r0, r0, #1 strb r0, [r5, r6] ldr r0, _021EFEC8 ; =0x00000355 strb r1, [r5, r0] add r0, #0xb ldr r1, [r5, r0] cmp r1, #0 bne _021EFDF6 _021EFE32: mov r3, #0xd9 lsl r3, r3, #2 ldrb r1, [r5, r3] mov r0, #2 tst r0, r1 beq _021EFE42 mov r0, #4 b _021EFEB2 _021EFE42: mov r0, #4 tst r0, r1 beq _021EFE4C mov r0, #5 b _021EFEB2 _021EFE4C: add r0, r3, #0 sub r0, #0xc ldrsb r0, [r5, r0] add r1, sp, #0 mov r4, #1 strb r0, [r1, #4] mov r0, #0 strb r0, [r1] add r3, #0x6b ldrb r3, [r5, r3] mov r0, #0xc0 add r2, r4, #0 mul r0, r3 add r0, r5, r0 add r3, r0, #2 _021EFE6A: ldr r0, _021EFECC ; =0x00002D4C ldrh r0, [r3, r0] cmp r0, #0 beq _021EFE9C mov r0, #0xd6 add r6, r5, r2 lsl r0, r0, #2 ldrsb r6, [r6, r0] ldrb r0, [r1, #4] cmp r0, r6 bne _021EFE90 add r0, sp, #4 strb r6, [r0, r4] add r0, r4, #1 lsl r0, r0, #0x18 add r7, r4, #0 lsr r4, r0, #0x18 add r0, sp, #0 strb r2, [r0, r7] _021EFE90: ldrb r0, [r1, #4] cmp r0, r6 bge _021EFE9C strb r6, [r1, #4] mov r4, #1 strb r2, [r1] _021EFE9C: add r2, r2, #1 add r3, r3, #2 cmp r2, #4 blt _021EFE6A bl FUN_0201B9EC add r1, r4, #0 bl _s32_div_f add r0, sp, #0 ldrb r0, [r0, r1] _021EFEB2: mov r2, #0x3d lsl r2, r2, #4 sub r1, r2, #1 ldrb r1, [r5, r1] ldrb r3, [r5, r2] add r2, #0xa add r1, r5, r1 strb r3, [r1, r2] add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _021EFEC8: .word 0x00000355 _021EFECC: .word 0x00002D4C thumb_func_end MOD16_021EFDDC thumb_func_start MOD16_021EFED0 MOD16_021EFED0: ; 0x021EFED0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r7, r0, #0 mov r0, #0 str r0, [sp, #0xc] add r0, sp, #0x18 add r5, r1, #0 str r0, [sp, #4] add r0, sp, #0x20 str r5, [sp, #8] str r0, [sp] _021EFEE6: ldr r0, _021F00DC ; =0x000003CF ldrb r2, [r5, r0] ldr r0, [sp, #0xc] cmp r0, r2 beq _021EFEFA ldr r1, _021F00E0 ; =0x00002D8C ldr r0, [sp, #8] ldr r0, [r0, r1] cmp r0, #0 bne _021EFF08 _021EFEFA: mov r1, #0 ldr r0, [sp, #4] mvn r1, r1 strb r1, [r0] ldr r0, [sp] strh r1, [r0] b _021F0026 _021EFF08: add r0, r7, #0 add r1, r5, #0 mov r3, #0xf bl MOD16_021EFC8C mov r1, #0x3d ldr r0, [sp, #0xc] lsl r1, r1, #4 strb r0, [r5, r1] sub r1, r1, #1 mov r2, #1 ldrb r1, [r5, r1] and r0, r2 and r1, r2 cmp r0, r1 beq _021EFF30 add r0, r7, #0 add r1, r5, #0 bl MOD16_021F2CEC _021EFF30: ldr r0, _021F00E4 ; =0x00000365 mov r2, #0 add r1, r0, #0 strb r2, [r5, r0] sub r1, #0x10 strb r2, [r5, r1] sub r0, r0, #5 ldr r4, [r5, r0] cmp r4, #0 beq _021EFF7A ldr r6, _021F00E4 ; =0x00000365 _021EFF46: mov r0, #1 tst r0, r4 beq _021EFF68 mov r0, #0xd9 lsl r0, r0, #2 ldrb r1, [r5, r0] mov r0, #0x10 tst r0, r1 bne _021EFF60 mov r0, #0xd5 mov r1, #0 lsl r0, r0, #2 strb r1, [r5, r0] _021EFF60: add r0, r7, #0 add r1, r5, #0 bl MOD16_021F00F0 _021EFF68: ldrb r0, [r5, r6] asr r4, r4, #1 mov r1, #0 add r0, r0, #1 strb r0, [r5, r6] ldr r0, _021F00E8 ; =0x00000355 cmp r4, #0 strb r1, [r5, r0] bne _021EFF46 _021EFF7A: mov r2, #0xd9 lsl r2, r2, #2 ldrb r1, [r5, r2] mov r0, #2 tst r0, r1 beq _021EFF8E ldr r0, [sp, #4] mov r1, #4 strb r1, [r0] b _021F0026 _021EFF8E: mov r0, #4 tst r0, r1 beq _021EFF9C ldr r0, [sp, #4] mov r1, #5 strb r1, [r0] b _021F0026 _021EFF9C: add r0, r2, #0 sub r0, #0xc ldrsb r1, [r5, r0] add r0, sp, #0x10 add r2, #0x6b strb r1, [r0, #4] mov r1, #0 strb r1, [r0] ldrb r3, [r5, r2] mov r2, #0xc0 mov r4, #1 mul r2, r3 add r2, r5, r2 add r1, r4, #0 add r2, r2, #2 _021EFFBA: ldr r3, _021F00EC ; =0x00002D4C ldrh r3, [r2, r3] cmp r3, #0 beq _021EFFE6 mov r3, #0xd6 add r6, r5, r1 lsl r3, r3, #2 ldrsb r3, [r6, r3] ldrb r6, [r0, #4] cmp r6, r3 bne _021EFFDA add r6, sp, #0x14 strb r3, [r6, r4] add r6, sp, #0x10 strb r1, [r6, r4] add r4, r4, #1 _021EFFDA: ldrb r6, [r0, #4] cmp r6, r3 bge _021EFFE6 strb r3, [r0, #4] strb r1, [r0] mov r4, #1 _021EFFE6: add r1, r1, #1 add r2, r2, #2 cmp r1, #4 blt _021EFFBA bl FUN_0201B9EC add r1, r4, #0 bl _s32_div_f add r0, sp, #0x10 ldrb r1, [r0, r1] ldr r0, [sp, #4] strb r1, [r0] add r0, sp, #0x10 ldrb r1, [r0, #4] ldr r0, [sp] strh r1, [r0] ldr r0, _021F00DC ; =0x000003CF ldrb r1, [r5, r0] mov r0, #2 eor r1, r0 ldr r0, [sp, #0xc] cmp r0, r1 bne _021F0026 ldr r0, [sp] mov r1, #0 ldrsh r0, [r0, r1] cmp r0, #0x64 bge _021F0026 ldr r0, [sp] sub r1, r1, #1 strh r1, [r0] _021F0026: ldr r0, [sp, #8] add r0, #0xc0 str r0, [sp, #8] ldr r0, [sp, #4] add r0, r0, #1 str r0, [sp, #4] ldr r0, [sp] add r0, r0, #2 str r0, [sp] ldr r0, [sp, #0xc] add r0, r0, #1 str r0, [sp, #0xc] cmp r0, #4 bge _021F0044 b _021EFEE6 _021F0044: mov r1, #0x10 add r0, sp, #0x10 ldrsh r1, [r0, r1] mov r2, #0 mov r6, #1 strb r2, [r0, #0xc] add r2, sp, #0x20 add r4, r6, #0 add r2, #2 _021F0056: mov r0, #0 ldrsh r3, [r2, r0] cmp r1, r3 bne _021F0064 add r0, sp, #0x1c strb r4, [r0, r6] add r6, r6, #1 _021F0064: cmp r1, r3 bge _021F0070 add r0, sp, #0x10 add r1, r3, #0 strb r4, [r0, #0xc] mov r6, #1 _021F0070: add r4, r4, #1 add r2, r2, #2 cmp r4, #4 blt _021F0056 bl FUN_0201B9EC add r1, r6, #0 bl _s32_div_f add r0, sp, #0x1c ldrb r3, [r0, r1] ldr r0, _021F00DC ; =0x000003CF ldrb r1, [r5, r0] add r2, r5, r1 add r1, r0, #0 add r1, #0xb strb r3, [r2, r1] ldrb r2, [r5, r0] add r1, r0, #0 add r1, #0xb add r3, r5, r2 ldrb r1, [r3, r1] add r3, sp, #0x18 add r0, #0x17 ldrsb r4, [r3, r1] mov r3, #0xc0 mul r3, r2 add r3, r5, r3 lsl r2, r4, #1 add r3, r3, r2 ldr r2, _021F00EC ; =0x00002D4C ldrh r2, [r3, r2] lsl r2, r2, #4 add r2, r5, r2 ldrh r2, [r2, r0] mov r0, #2 lsl r0, r0, #8 cmp r2, r0 bne _021F00D2 add r0, r7, #0 bl MOD11_02230270 cmp r0, #0 bne _021F00D2 ldr r0, _021F00DC ; =0x000003CF ldrb r2, [r5, r0] add r0, #0xb add r1, r5, r2 strb r2, [r1, r0] _021F00D2: lsl r0, r4, #0x18 lsr r0, r0, #0x18 add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} nop _021F00DC: .word 0x000003CF _021F00E0: .word 0x00002D8C _021F00E4: .word 0x00000365 _021F00E8: .word 0x00000355 _021F00EC: .word 0x00002D4C thumb_func_end MOD16_021EFED0 thumb_func_start MOD16_021F00F0 MOD16_021F00F0: ; 0x021F00F0 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 mov r0, #0xd5 add r5, r1, #0 lsl r0, r0, #2 ldrb r0, [r5, r0] cmp r0, #2 beq _021F01D6 mov r6, #0xd9 lsl r6, r6, #2 add r4, r6, #0 sub r4, #0x10 _021F0108: cmp r0, #0 beq _021F0114 cmp r0, #1 beq _021F0154 cmp r0, #2 b _021F01CC _021F0114: ldr r1, _021F01D8 ; =0x00000365 ldr r0, _021F01DC ; =0x00002134 ldrb r1, [r5, r1] ldr r0, [r5, r0] lsl r1, r1, #2 ldr r1, [r0, r1] ldr r0, _021F01E0 ; =0x00002138 str r1, [r5, r0] ldr r0, _021F01E4 ; =0x000003CF ldrb r1, [r5, r0] mov r0, #0xc0 mul r0, r1 add r3, r5, r0 ldr r0, _021F01E8 ; =0x00000355 ldrb r2, [r5, r0] ldr r0, _021F01EC ; =0x00002D6C add r1, r3, r2 ldrb r0, [r1, r0] cmp r0, #0 bne _021F0140 mov r1, #0 b _021F0148 _021F0140: lsl r0, r2, #1 add r1, r3, r0 ldr r0, _021F01F0 ; =0x00002D4C ldrh r1, [r1, r0] _021F0148: ldr r0, _021F01F4 ; =0x00000356 strh r1, [r5, r0] ldrb r0, [r5, r4] add r0, r0, #1 strb r0, [r5, r4] b _021F01CC _021F0154: ldr r0, _021F01F4 ; =0x00000356 ldrh r0, [r5, r0] cmp r0, #0 beq _021F0176 ldr r3, _021F01E0 ; =0x00002138 ldr r2, _021F01DC ; =0x00002134 ldr r3, [r5, r3] ldr r2, [r5, r2] lsl r3, r3, #2 ldr r2, [r2, r3] add r0, r7, #0 lsl r3, r2, #2 ldr r2, _021F01F8 ; =0x021FF810 add r1, r5, #0 ldr r2, [r2, r3] blx r2 b _021F018C _021F0176: ldr r0, _021F01E8 ; =0x00000355 mov r1, #0 ldrb r0, [r5, r0] add r2, r5, r0 mov r0, #0xd6 lsl r0, r0, #2 strb r1, [r2, r0] ldrb r1, [r5, r6] mov r0, #1 orr r0, r1 strb r0, [r5, r6] _021F018C: mov r0, #0xd9 lsl r0, r0, #2 ldrb r1, [r5, r0] mov r0, #1 tst r0, r1 beq _021F01CC ldr r0, _021F01E8 ; =0x00000355 ldrb r0, [r5, r0] add r1, r0, #1 ldr r0, _021F01E8 ; =0x00000355 strb r1, [r5, r0] ldrb r0, [r5, r0] cmp r0, #4 bhs _021F01BE mov r0, #0xd9 lsl r0, r0, #2 ldrb r1, [r5, r0] mov r0, #8 tst r0, r1 bne _021F01BE mov r0, #0xd5 mov r1, #0 lsl r0, r0, #2 strb r1, [r5, r0] b _021F01C4 _021F01BE: ldrb r0, [r5, r4] add r0, r0, #1 strb r0, [r5, r4] _021F01C4: ldrb r1, [r5, r6] mov r0, #0xfe and r0, r1 strb r0, [r5, r6] _021F01CC: mov r0, #0xd5 lsl r0, r0, #2 ldrb r0, [r5, r0] cmp r0, #2 bne _021F0108 _021F01D6: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F01D8: .word 0x00000365 _021F01DC: .word 0x00002134 _021F01E0: .word 0x00002138 _021F01E4: .word 0x000003CF _021F01E8: .word 0x00000355 _021F01EC: .word 0x00002D6C _021F01F0: .word 0x00002D4C _021F01F4: .word 0x00000356 _021F01F8: .word 0x021FF810 thumb_func_end MOD16_021F00F0 thumb_func_start MOD16_021F01FC MOD16_021F01FC: ; 0x021F01FC push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x18 sub r1, r1, r2 mov r0, #0x18 ror r1, r0 add r0, r2, r1 cmp r0, r4 bge _021F0234 add r0, r5, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F0234: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021F01FC thumb_func_start MOD16_021F0238 MOD16_021F0238: ; 0x021F0238 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x18 sub r1, r1, r2 mov r0, #0x18 ror r1, r0 add r0, r2, r1 cmp r0, r4 ble _021F0270 add r0, r5, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F0270: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021F0238 thumb_func_start MOD16_021F0274 MOD16_021F0274: ; 0x021F0274 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x18 sub r1, r1, r2 mov r0, #0x18 ror r1, r0 add r0, r2, r1 cmp r4, r0 bne _021F02AC add r0, r5, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F02AC: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021F0274 thumb_func_start MOD16_021F02B0 MOD16_021F02B0: ; 0x021F02B0 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x18 sub r1, r1, r2 mov r0, #0x18 ror r1, r0 add r0, r2, r1 cmp r4, r0 beq _021F02E8 add r0, r5, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F02E8: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD16_021F02B0 thumb_func_start MOD16_021F02EC MOD16_021F02EC: ; 0x021F02EC push {r3, r4, r5, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 mov r2, #0xd6 lsl r2, r2, #2 sub r3, r2, #3 ldrb r5, [r4, r3] add r1, r4, r2 ldrsb r3, [r1, r5] add r0, r3, r0 strb r0, [r1, r5] sub r0, r2, #3 ldrb r2, [r4, r0] ldrsb r0, [r1, r2] cmp r0, #0 bge _021F031C mov r0, #0 strb r0, [r1, r2] _021F031C: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F02EC thumb_func_start MOD16_021F0320 MOD16_021F0320: ; 0x021F0320 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r3, _021F0374 ; =0x00002D8C add r2, r5, r1 ldr r1, [r2, r3] mov r0, #0x64 mul r0, r1 add r1, r3, #4 ldr r1, [r2, r1] bl _u32_div_f cmp r0, r6 bhs _021F0370 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F0370: pop {r3, r4, r5, r6, r7, pc} nop _021F0374: .word 0x00002D8C thumb_func_end MOD16_021F0320 thumb_func_start MOD16_021F0378 MOD16_021F0378: ; 0x021F0378 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r3, _021F03CC ; =0x00002D8C add r2, r5, r1 ldr r1, [r2, r3] mov r0, #0x64 mul r0, r1 add r1, r3, #4 ldr r1, [r2, r1] bl _u32_div_f cmp r0, r6 bls _021F03C8 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F03C8: pop {r3, r4, r5, r6, r7, pc} nop _021F03CC: .word 0x00002D8C thumb_func_end MOD16_021F0378 thumb_func_start MOD16_021F03D0 MOD16_021F03D0: ; 0x021F03D0 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r3, _021F0424 ; =0x00002D8C add r2, r5, r1 ldr r1, [r2, r3] mov r0, #0x64 mul r0, r1 add r1, r3, #4 ldr r1, [r2, r1] bl _u32_div_f cmp r0, r6 bne _021F0420 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F0420: pop {r3, r4, r5, r6, r7, pc} nop _021F0424: .word 0x00002D8C thumb_func_end MOD16_021F03D0 thumb_func_start MOD16_021F0428 MOD16_021F0428: ; 0x021F0428 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r3, _021F047C ; =0x00002D8C add r2, r5, r1 ldr r1, [r2, r3] mov r0, #0x64 mul r0, r1 add r1, r3, #4 ldr r1, [r2, r1] bl _u32_div_f cmp r0, r6 beq _021F0478 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F0478: pop {r3, r4, r5, r6, r7, pc} nop _021F047C: .word 0x00002D8C thumb_func_end MOD16_021F0428 thumb_func_start MOD16_021F0480 MOD16_021F0480: ; 0x021F0480 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F04C8 ; =0x00002DAC add r1, r5, r1 ldr r0, [r1, r0] tst r0, r6 beq _021F04C4 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F04C4: pop {r3, r4, r5, r6, r7, pc} nop _021F04C8: .word 0x00002DAC thumb_func_end MOD16_021F0480 thumb_func_start MOD16_021F04CC MOD16_021F04CC: ; 0x021F04CC push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F0514 ; =0x00002DAC add r1, r5, r1 ldr r0, [r1, r0] tst r0, r6 bne _021F0510 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F0510: pop {r3, r4, r5, r6, r7, pc} nop _021F0514: .word 0x00002DAC thumb_func_end MOD16_021F04CC thumb_func_start MOD16_021F0518 MOD16_021F0518: ; 0x021F0518 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F0560 ; =0x00002DB0 add r1, r5, r1 ldr r0, [r1, r0] tst r0, r6 beq _021F055C add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F055C: pop {r3, r4, r5, r6, r7, pc} nop _021F0560: .word 0x00002DB0 thumb_func_end MOD16_021F0518 thumb_func_start MOD16_021F0564 MOD16_021F0564: ; 0x021F0564 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F05AC ; =0x00002DB0 add r1, r5, r1 ldr r0, [r1, r0] tst r0, r6 bne _021F05A8 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F05A8: pop {r3, r4, r5, r6, r7, pc} nop _021F05AC: .word 0x00002DB0 thumb_func_end MOD16_021F0564 thumb_func_start MOD16_021F05B0 MOD16_021F05B0: ; 0x021F05B0 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 mov r0, #0xb7 add r1, r5, r1 lsl r0, r0, #6 ldr r0, [r1, r0] tst r0, r6 beq _021F05F6 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F05F6: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021F05B0 thumb_func_start MOD16_021F05F8 MOD16_021F05F8: ; 0x021F05F8 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 mov r0, #0xb7 add r1, r5, r1 lsl r0, r0, #6 ldr r0, [r1, r0] tst r0, r6 bne _021F063E add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F063E: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021F05F8 thumb_func_start MOD16_021F0640 MOD16_021F0640: ; 0x021F0640 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r7, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 str r0, [sp] add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 add r0, r7, #0 bl MOD11_02230270 lsl r0, r0, #2 add r1, r5, r0 mov r0, #0x6f lsl r0, r0, #2 ldr r0, [r1, r0] tst r0, r6 beq _021F068E ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 _021F068E: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021F0640 thumb_func_start MOD16_021F0690 MOD16_021F0690: ; 0x021F0690 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r7, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 str r0, [sp] add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 add r0, r7, #0 bl MOD11_02230270 lsl r0, r0, #2 add r1, r5, r0 mov r0, #0x6f lsl r0, r0, #2 ldr r0, [r1, r0] tst r0, r6 bne _021F06DE ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 _021F06DE: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021F0690 thumb_func_start MOD16_021F06E0 MOD16_021F06E0: ; 0x021F06E0 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, r4 bge _021F070C add r0, r5, #0 bl MOD16_021F2D88 _021F070C: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F06E0 thumb_func_start MOD16_021F0710 MOD16_021F0710: ; 0x021F0710 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, r4 ble _021F073C add r0, r5, #0 bl MOD16_021F2D88 _021F073C: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F0710 thumb_func_start MOD16_021F0740 MOD16_021F0740: ; 0x021F0740 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, r4 bne _021F076C add r0, r5, #0 bl MOD16_021F2D88 _021F076C: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F0740 thumb_func_start MOD16_021F0770 MOD16_021F0770: ; 0x021F0770 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r0, r4 beq _021F079C add r0, r5, #0 bl MOD16_021F2D88 _021F079C: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F0770 thumb_func_start MOD16_021F07A0 MOD16_021F07A0: ; 0x021F07A0 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] tst r0, r4 beq _021F07CC add r0, r5, #0 bl MOD16_021F2D88 _021F07CC: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F07A0 thumb_func_start MOD16_021F07D0 MOD16_021F07D0: ; 0x021F07D0 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] tst r0, r4 bne _021F07FC add r0, r5, #0 bl MOD16_021F2D88 _021F07FC: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F07D0 thumb_func_start MOD16_021F0800 MOD16_021F0800: ; 0x021F0800 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 ldr r0, _021F082C ; =0x00000356 ldrh r0, [r5, r0] cmp r0, r4 bne _021F082A add r0, r5, #0 bl MOD16_021F2D88 _021F082A: pop {r3, r4, r5, pc} .align 2, 0 _021F082C: .word 0x00000356 thumb_func_end MOD16_021F0800 thumb_func_start MOD16_021F0830 MOD16_021F0830: ; 0x021F0830 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 ldr r0, _021F085C ; =0x00000356 ldrh r0, [r5, r0] cmp r0, r4 beq _021F085A add r0, r5, #0 bl MOD16_021F2D88 _021F085A: pop {r3, r4, r5, pc} .align 2, 0 _021F085C: .word 0x00000356 thumb_func_end MOD16_021F0830 thumb_func_start MOD16_021F0860 MOD16_021F0860: ; 0x021F0860 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 str r0, [sp] add r0, r5, #0 add r1, r4, #0 bl MOD16_021F2D74 mov r1, #0 mvn r1, r1 cmp r0, r1 beq _021F08B0 mov r6, #0xd7 add r7, r1, #0 lsl r6, r6, #2 _021F0892: ldr r1, [r5, r6] cmp r1, r0 bne _021F08A2 ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F08A2: add r4, r4, #1 add r0, r5, #0 add r1, r4, #0 bl MOD16_021F2D74 cmp r0, r7 bne _021F0892 _021F08B0: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021F0860 thumb_func_start MOD16_021F08B4 MOD16_021F08B4: ; 0x021F08B4 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 str r0, [sp] add r0, r5, #0 add r1, r4, #0 bl MOD16_021F2D74 mov r1, #0 mvn r1, r1 cmp r0, r1 beq _021F08FA mov r6, #0xd7 add r7, r1, #0 lsl r6, r6, #2 _021F08E6: ldr r1, [r5, r6] cmp r1, r0 beq _021F0902 add r4, r4, #1 add r0, r5, #0 add r1, r4, #0 bl MOD16_021F2D74 cmp r0, r7 bne _021F08E6 _021F08FA: ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 _021F0902: pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021F08B4 thumb_func_start MOD16_021F0904 MOD16_021F0904: ; 0x021F0904 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r0, r6, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r6, #0 bl MOD16_021F2D54 ldr r1, _021F095C ; =0x000003CF mov ip, r0 ldrb r2, [r6, r1] mov r1, #0xc0 mov r0, #0 mul r1, r2 add r3, r6, r1 ldr r7, _021F0960 ; =0x00002D4C add r1, r3, #0 add r2, r0, #0 _021F092A: ldrh r4, [r1, r7] cmp r4, #0 beq _021F0942 ldr r4, _021F0960 ; =0x00002D4C add r5, r3, r2 ldrh r4, [r5, r4] lsl r4, r4, #4 add r5, r6, r4 ldr r4, _021F0964 ; =0x000003E1 ldrb r4, [r5, r4] cmp r4, #0 bne _021F094C _021F0942: add r0, r0, #1 add r1, r1, #2 add r2, r2, #2 cmp r0, #4 blt _021F092A _021F094C: cmp r0, #4 bge _021F0958 add r0, r6, #0 mov r1, ip bl MOD16_021F2D88 _021F0958: pop {r3, r4, r5, r6, r7, pc} nop _021F095C: .word 0x000003CF _021F0960: .word 0x00002D4C _021F0964: .word 0x000003E1 thumb_func_end MOD16_021F0904 thumb_func_start MOD16_021F0968 MOD16_021F0968: ; 0x021F0968 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r0, r6, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r6, #0 bl MOD16_021F2D54 ldr r1, _021F09C0 ; =0x000003CF mov ip, r0 ldrb r2, [r6, r1] mov r1, #0xc0 mov r0, #0 mul r1, r2 add r3, r6, r1 ldr r7, _021F09C4 ; =0x00002D4C add r1, r3, #0 add r2, r0, #0 _021F098E: ldrh r4, [r1, r7] cmp r4, #0 beq _021F09A6 ldr r4, _021F09C4 ; =0x00002D4C add r5, r3, r2 ldrh r4, [r5, r4] lsl r4, r4, #4 add r5, r6, r4 ldr r4, _021F09C8 ; =0x000003E1 ldrb r4, [r5, r4] cmp r4, #0 bne _021F09B0 _021F09A6: add r0, r0, #1 add r1, r1, #2 add r2, r2, #2 cmp r0, #4 blt _021F098E _021F09B0: cmp r0, #4 bne _021F09BC add r0, r6, #0 mov r1, ip bl MOD16_021F2D88 _021F09BC: pop {r3, r4, r5, r6, r7, pc} nop _021F09C0: .word 0x000003CF _021F09C4: .word 0x00002D4C _021F09C8: .word 0x000003E1 thumb_func_end MOD16_021F0968 thumb_func_start MOD16_021F09CC MOD16_021F09CC: ; 0x021F09CC push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r0, #0x15 lsl r0, r0, #4 ldr r1, [r4, r0] mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021F09CC thumb_func_start MOD16_021F09E8 MOD16_021F09E8: ; 0x021F09E8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 cmp r0, #8 bls _021F0A02 b _021F0B0C _021F0A02: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021F0A0E: ; jump table .short _021F0A36 - _021F0A0E - 2 ; case 0 .short _021F0A20 - _021F0A0E - 2 ; case 1 .short _021F0A64 - _021F0A0E - 2 ; case 2 .short _021F0A4E - _021F0A0E - 2 ; case 3 .short _021F0A7C - _021F0A0E - 2 ; case 4 .short _021F0AAE - _021F0A0E - 2 ; case 5 .short _021F0A90 - _021F0A0E - 2 ; case 6 .short _021F0AEC - _021F0A0E - 2 ; case 7 .short _021F0ACE - _021F0A0E - 2 ; case 8 _021F0A20: ldr r1, _021F0B14 ; =0x000003CF add r0, r4, #0 ldrb r1, [r4, r1] mov r2, #0x1b mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0A36: mov r1, #0x3d lsl r1, r1, #4 ldrb r1, [r4, r1] add r0, r4, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0A4E: ldr r1, _021F0B14 ; =0x000003CF add r0, r4, #0 ldrb r1, [r4, r1] mov r2, #0x1c mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0A64: mov r1, #0x3d lsl r1, r1, #4 ldrb r1, [r4, r1] add r0, r4, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0A7C: ldr r0, _021F0B18 ; =0x00000356 ldrh r1, [r4, r0] lsl r1, r1, #4 add r2, r4, r1 add r1, r0, #0 add r1, #0x8c ldrb r1, [r2, r1] add r0, r0, #6 str r1, [r4, r0] pop {r3, r4, r5, pc} _021F0A90: ldr r1, _021F0B14 ; =0x000003CF add r0, r5, #0 ldrb r1, [r4, r1] bl FUN_022302BC add r1, r0, #0 add r0, r4, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0AAE: mov r1, #0x3d lsl r1, r1, #4 ldrb r1, [r4, r1] add r0, r5, #0 bl FUN_022302BC add r1, r0, #0 add r0, r4, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0ACE: ldr r1, _021F0B14 ; =0x000003CF add r0, r5, #0 ldrb r1, [r4, r1] bl FUN_022302BC add r1, r0, #0 add r0, r4, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0AEC: mov r1, #0x3d lsl r1, r1, #4 ldrb r1, [r4, r1] add r0, r5, #0 bl FUN_022302BC add r1, r0, #0 add r0, r4, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r3, r4, r5, pc} _021F0B0C: bl ErrorHandling pop {r3, r4, r5, pc} nop _021F0B14: .word 0x000003CF _021F0B18: .word 0x00000356 thumb_func_end MOD16_021F09E8 thumb_func_start MOD16_021F0B1C MOD16_021F0B1C: ; 0x021F0B1C push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r4, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 cmp r4, r0 beq _021F0B64 add r0, r5, #0 add r1, r6, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 cmp r4, r0 bne _021F0B6E _021F0B64: mov r0, #0xd7 mov r1, #1 lsl r0, r0, #2 str r1, [r5, r0] pop {r4, r5, r6, pc} _021F0B6E: mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r5, r0] pop {r4, r5, r6, pc} thumb_func_end MOD16_021F0B1C thumb_func_start MOD16_021F0B78 MOD16_021F0B78: ; 0x021F0B78 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, _021F0B98 ; =0x00000356 ldrh r1, [r4, r0] lsl r1, r1, #4 add r2, r4, r1 add r1, r0, #0 add r1, #0x8b ldrb r1, [r2, r1] add r0, r0, #6 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021F0B98: .word 0x00000356 thumb_func_end MOD16_021F0B78 thumb_func_start MOD16_021F0B9C MOD16_021F0B9C: ; 0x021F0B9C push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r6, r1, #0 str r0, [sp, #0x18] add r0, r6, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r6, #0 bl MOD16_021F2D54 ldr r2, _021F0CB8 ; =0x00000356 str r0, [sp, #0x1c] ldrh r3, [r6, r2] add r2, #0x88 ldr r1, _021F0CBC ; =0x021FF7F4 lsl r7, r3, #4 add r3, r6, r7 ldrh r3, [r3, r2] ldr r2, _021F0CC0 ; =0x0000FFFF mov r0, #0 _021F0BC6: ldrh r4, [r1] cmp r3, r4 beq _021F0BD6 add r1, r1, #2 ldrh r4, [r1] add r0, r0, #1 cmp r4, r2 bne _021F0BC6 _021F0BD6: ldr r2, _021F0CC4 ; =0x021FF7DC ldr r4, _021F0CC0 ; =0x0000FFFF mov r1, #0 _021F0BDC: ldrh r5, [r2] cmp r3, r5 beq _021F0BEC add r2, r2, #2 ldrh r5, [r2] add r1, r1, #1 cmp r5, r4 bne _021F0BDC _021F0BEC: lsl r2, r1, #1 ldr r1, _021F0CC4 ; =0x021FF7DC ldrh r1, [r1, r2] ldr r2, _021F0CC0 ; =0x0000FFFF cmp r1, r2 bne _021F0C0C ldr r1, _021F0CC8 ; =0x000003E1 add r3, r6, r7 ldrb r1, [r3, r1] cmp r1, #1 bls _021F0CAA lsl r1, r0, #1 ldr r0, _021F0CBC ; =0x021FF7F4 ldrh r0, [r0, r1] cmp r0, r2 bne _021F0CAA _021F0C0C: ldr r7, _021F0CCC ; =0x000003CF mov r4, #0 add r5, sp, #0x20 _021F0C12: ldrb r1, [r6, r7] add r2, r4, #0 add r0, r6, #0 add r2, #0xa mov r3, #0 bl MOD11_02243420 strb r0, [r5] add r4, r4, #1 add r5, r5, #1 cmp r4, #6 blt _021F0C12 ldr r0, _021F0CCC ; =0x000003CF ldrb r4, [r6, r0] mov r0, #0xc0 add r5, r4, #0 mul r5, r0 add r0, r6, #0 add r1, r4, #0 bl MOD11_02246D1C add r1, sp, #0x28 str r1, [sp] ldr r3, _021F0CD0 ; =0x00002DB8 add r1, r6, r5 ldrh r1, [r1, r3] add r2, r4, #0 str r1, [sp, #4] add r1, sp, #0x20 str r1, [sp, #8] str r0, [sp, #0xc] mov r0, #0xc0 mul r0, r4 add r1, r6, r0 add r0, r3, #0 add r0, #0x14 ldr r0, [r1, r0] sub r3, #0x6c lsl r0, r0, #0xa lsr r0, r0, #0x1d str r0, [sp, #0x10] ldr r0, [sp, #0x1c] add r3, r6, r3 str r0, [sp, #0x14] ldr r0, [sp, #0x18] add r1, r6, #0 add r3, r3, r5 bl MOD16_021F2DE0 ldr r0, _021F0CD4 ; =0x00000355 add r1, sp, #0x28 ldrb r0, [r6, r0] mov r3, #0 lsl r0, r0, #2 ldr r2, [r1, r0] _021F0C80: ldr r0, [r1] cmp r0, r2 bgt _021F0C8E add r3, r3, #1 add r1, r1, #4 cmp r3, #4 blt _021F0C80 _021F0C8E: cmp r3, #4 bne _021F0C9E mov r0, #0xd7 mov r1, #2 lsl r0, r0, #2 add sp, #0x38 str r1, [r6, r0] pop {r3, r4, r5, r6, r7, pc} _021F0C9E: mov r0, #0xd7 mov r1, #1 lsl r0, r0, #2 add sp, #0x38 str r1, [r6, r0] pop {r3, r4, r5, r6, r7, pc} _021F0CAA: mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r6, r0] add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} nop _021F0CB8: .word 0x00000356 _021F0CBC: .word 0x021FF7F4 _021F0CC0: .word 0x0000FFFF _021F0CC4: .word 0x021FF7DC _021F0CC8: .word 0x000003E1 _021F0CCC: .word 0x000003CF _021F0CD0: .word 0x00002DB8 _021F0CD4: .word 0x00000355 thumb_func_end MOD16_021F0B9C thumb_func_start MOD16_021F0CD8 MOD16_021F0CD8: ; 0x021F0CD8 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 lsl r0, r0, #1 add r1, r4, r0 ldr r0, _021F0D08 ; =0x0000307C ldrh r1, [r1, r0] mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} nop _021F0D08: .word 0x0000307C thumb_func_end MOD16_021F0CD8 thumb_func_start MOD16_021F0D0C MOD16_021F0D0C: ; 0x021F0D0C push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r4, r0 bne _021F0D38 add r0, r5, #0 bl MOD16_021F2D88 _021F0D38: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F0D0C thumb_func_start MOD16_021F0D3C MOD16_021F0D3C: ; 0x021F0D3C push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] cmp r4, r0 beq _021F0D68 add r0, r5, #0 bl MOD16_021F2D88 _021F0D68: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F0D3C thumb_func_start MOD16_021F0D6C MOD16_021F0D6C: ; 0x021F0D6C push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r6, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r7, r0, #0 mov r0, #1 str r0, [sp] ldr r3, _021F0DAC ; =0x000003CF add r0, r6, #0 ldrb r2, [r5, r3] add r3, r3, #1 ldrb r3, [r5, r3] add r1, r5, #0 bl MOD11_02244248 cmp r4, r0 bne _021F0DAA add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F0DAA: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F0DAC: .word 0x000003CF thumb_func_end MOD16_021F0D6C thumb_func_start MOD16_021F0DB0 MOD16_021F0DB0: ; 0x021F0DB0 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r6, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r7, r0, #0 mov r0, #1 str r0, [sp] ldr r3, _021F0DF0 ; =0x000003CF add r0, r6, #0 ldrb r2, [r5, r3] add r3, r3, #1 ldrb r3, [r5, r3] add r1, r5, #0 bl MOD11_02244248 cmp r4, r0 beq _021F0DEE add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F0DEE: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F0DF0: .word 0x000003CF thumb_func_end MOD16_021F0DB0 thumb_func_start MOD16_021F0DF4 MOD16_021F0DF4: ; 0x021F0DF4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r1, #0 add r7, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r2, r0, #0 mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r5, r0] lsl r1, r2, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 str r0, [sp] ldr r1, [sp] add r0, r7, #0 bl FUN_0222FF88 str r0, [sp, #0xc] ldr r1, [r7, #0x2c] mov r0, #2 tst r0, r1 beq _021F0E4E ldr r0, [sp] add r1, r5, r0 ldr r0, _021F0EC8 ; =0x0000219C ldrb r0, [r1, r0] ldr r1, [sp] str r0, [sp, #8] add r0, r7, #0 bl FUN_022302BC add r1, r5, r0 ldr r0, _021F0EC8 ; =0x0000219C ldrb r0, [r1, r0] str r0, [sp, #4] b _021F0E5A _021F0E4E: ldr r0, [sp] add r1, r5, r0 ldr r0, _021F0EC8 ; =0x0000219C ldrb r0, [r1, r0] str r0, [sp, #4] str r0, [sp, #8] _021F0E5A: ldr r1, [sp] add r0, r7, #0 mov r4, #0 bl MOD11_0222FFC8 cmp r0, #0 ble _021F0EC4 _021F0E68: ldr r0, [sp, #0xc] add r1, r4, #0 bl FUN_0206B9B0 ldr r1, [sp, #8] add r6, r0, #0 cmp r4, r1 beq _021F0EB6 ldr r1, [sp, #4] cmp r4, r1 beq _021F0EB6 mov r1, #0xa2 mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F0EB6 add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F0EB6 add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F0ECC ; =0x000001EE cmp r0, r1 beq _021F0EB6 mov r0, #0xd7 lsl r0, r0, #2 ldr r0, [r5, r0] add r1, r0, #1 mov r0, #0xd7 lsl r0, r0, #2 str r1, [r5, r0] _021F0EB6: ldr r1, [sp] add r0, r7, #0 add r4, r4, #1 bl MOD11_0222FFC8 cmp r4, r0 blt _021F0E68 _021F0EC4: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F0EC8: .word 0x0000219C _021F0ECC: .word 0x000001EE thumb_func_end MOD16_021F0DF4 thumb_func_start MOD16_021F0ED0 MOD16_021F0ED0: ; 0x021F0ED0 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, _021F0EE8 ; =0x00000356 ldrh r1, [r4, r0] add r0, r0, #6 str r1, [r4, r0] pop {r4, pc} nop _021F0EE8: .word 0x00000356 thumb_func_end MOD16_021F0ED0 thumb_func_start MOD16_021F0EEC MOD16_021F0EEC: ; 0x021F0EEC push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, _021F0F0C ; =0x00000356 ldrh r1, [r4, r0] lsl r1, r1, #4 add r2, r4, r1 add r1, r0, #0 add r1, #0x88 ldrh r1, [r2, r1] add r0, r0, #6 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021F0F0C: .word 0x00000356 thumb_func_end MOD16_021F0EEC thumb_func_start MOD16_021F0F10 MOD16_021F0F10: ; 0x021F0F10 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r7, r0, #0 lsl r1, r7, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 mov r3, #0xb7 mov r2, #2 mov r0, #0xc0 add r6, r1, #0 mul r6, r0 add r0, r5, r6 lsl r3, r3, #6 ldr r4, [r0, r3] lsl r2, r2, #0x14 tst r2, r4 beq _021F0F50 mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F0F50: ldr r2, _021F0FE4 ; =0x000003CF ldrb r4, [r5, r2] cmp r4, r1 beq _021F0FD6 cmp r7, #3 beq _021F0FD6 add r4, r5, r1 add r1, r2, #0 sub r1, #0x3f ldrb r1, [r4, r1] cmp r1, #0 beq _021F0F6E sub r2, #0x73 str r1, [r5, r2] pop {r3, r4, r5, r6, r7, pc} _021F0F6E: add r1, r3, #0 sub r1, #0x59 ldrb r1, [r0, r1] cmp r1, #0x17 beq _021F0F80 cmp r1, #0x2a beq _021F0F80 cmp r1, #0x47 bne _021F0F88 _021F0F80: mov r0, #0xd7 lsl r0, r0, #2 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F0F88: sub r3, #0x80 add r7, r5, r3 ldrh r0, [r7, r6] mov r1, #0x18 bl FUN_02068678 add r4, r0, #0 ldrh r0, [r7, r6] mov r1, #0x19 bl FUN_02068678 add r6, r0, #0 cmp r4, #0 beq _021F0FC2 cmp r6, #0 beq _021F0FC2 bl FUN_0201B9EC mov r1, #1 tst r0, r1 beq _021F0FBA mov r0, #0xd7 lsl r0, r0, #2 str r4, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F0FBA: mov r0, #0xd7 lsl r0, r0, #2 str r6, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F0FC2: cmp r4, #0 beq _021F0FCE mov r0, #0xd7 lsl r0, r0, #2 str r4, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F0FCE: mov r0, #0xd7 lsl r0, r0, #2 str r6, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F0FD6: ldr r0, _021F0FE8 ; =0x00002D67 add r1, r5, r6 ldrb r1, [r1, r0] mov r0, #0xd7 lsl r0, r0, #2 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F0FE4: .word 0x000003CF _021F0FE8: .word 0x00002D67 thumb_func_end MOD16_021F0F10 thumb_func_start MOD16_021F0FEC MOD16_021F0FEC: ; 0x021F0FEC push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 mov r2, #2 mov ip, r1 add r6, r5, r1 mov r1, #0xb7 lsl r1, r1, #6 ldr r3, [r6, r1] lsl r2, r2, #0x14 tst r2, r3 beq _021F102C mov r4, #0 b _021F1098 _021F102C: cmp r4, #0 beq _021F1034 cmp r4, #2 bne _021F1094 _021F1034: mov r1, #0x39 add r2, r5, r0 lsl r1, r1, #4 ldrb r4, [r2, r1] cmp r4, #0 beq _021F1046 sub r1, #0x34 str r4, [r5, r1] b _021F1098 _021F1046: mov r1, ip add r2, r5, r1 ldr r1, _021F10C0 ; =0x00002D67 ldrb r4, [r2, r1] cmp r4, #0x17 beq _021F1098 cmp r4, #0x2a beq _021F1098 cmp r4, #0x47 beq _021F1098 sub r1, #0x27 add r6, r5, r1 mov r1, #0xc0 mul r1, r0 ldrh r0, [r6, r1] str r1, [sp] mov r1, #0x18 bl FUN_02068678 add r4, r0, #0 ldr r0, [sp] mov r1, #0x19 ldrh r0, [r6, r0] bl FUN_02068678 cmp r4, #0 beq _021F108C cmp r0, #0 beq _021F108C cmp r4, r7 beq _021F1088 cmp r0, r7 bne _021F1098 _021F1088: mov r4, #0 b _021F1098 _021F108C: cmp r4, #0 bne _021F1098 add r4, r0, #0 b _021F1098 _021F1094: sub r1, #0x59 ldrb r4, [r6, r1] _021F1098: cmp r4, #0 bne _021F10A6 mov r0, #0xd7 mov r1, #2 lsl r0, r0, #2 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F10A6: cmp r4, r7 bne _021F10B4 mov r0, #0xd7 mov r1, #1 lsl r0, r0, #2 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F10B4: mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} nop _021F10C0: .word 0x00002D67 thumb_func_end MOD16_021F0FEC thumb_func_start MOD16_021F10C4 MOD16_021F10C4: ; 0x021F10C4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r1, #0 add r7, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 mov r0, #0 mov r1, #0xd7 lsl r1, r1, #2 str r0, [sp, #0x10] str r0, [r5, r1] add r4, r0, #0 _021F10E0: mov r0, #0 str r0, [sp, #0x14] ldr r0, _021F116C ; =0x000003CF ldrb r2, [r5, r0] mov r0, #0xc0 mul r0, r2 add r0, r5, r0 add r1, r4, r0 ldr r0, _021F1170 ; =0x00002D4C ldrh r6, [r1, r0] add r0, r7, #0 add r1, r5, #0 add r3, r6, #0 bl MOD16_021F32DC add r3, r0, #0 cmp r6, #0 beq _021F115C ldr r0, _021F116C ; =0x000003CF add r1, r5, #0 ldrb r0, [r5, r0] add r2, r6, #0 str r0, [sp] mov r0, #0x3d lsl r0, r0, #4 ldrb r0, [r5, r0] str r0, [sp, #4] mov r0, #0x28 str r0, [sp, #8] add r0, sp, #0x14 str r0, [sp, #0xc] add r0, r7, #0 bl MOD11_02246274 cmp r0, #0x78 bne _021F112C mov r0, #0x50 b _021F1142 _021F112C: cmp r0, #0xf0 bne _021F1134 mov r0, #0xa0 b _021F1142 _021F1134: cmp r0, #0x1e bne _021F113C mov r0, #0x14 b _021F1142 _021F113C: cmp r0, #0xf bne _021F1142 mov r0, #0xa _021F1142: ldr r2, [sp, #0x14] ldr r1, _021F1174 ; =0x00140808 tst r1, r2 beq _021F114C mov r0, #0 _021F114C: mov r1, #0xd7 lsl r1, r1, #2 ldr r1, [r5, r1] cmp r1, r0 bhs _021F115C mov r1, #0xd7 lsl r1, r1, #2 str r0, [r5, r1] _021F115C: ldr r0, [sp, #0x10] add r4, r4, #2 add r0, r0, #1 str r0, [sp, #0x10] cmp r0, #4 blt _021F10E0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F116C: .word 0x000003CF _021F1170: .word 0x00002D4C _021F1174: .word 0x00140808 thumb_func_end MOD16_021F10C4 thumb_func_start MOD16_021F1178 MOD16_021F1178: ; 0x021F1178 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r7, r0, #0 add r0, r4, #0 bl MOD16_021F2D54 str r0, [sp, #0x10] mov r0, #0 str r0, [sp, #0x14] ldr r3, _021F1208 ; =0x000003CF add r0, r5, #0 ldrb r6, [r4, r3] sub r3, #0x79 ldrh r3, [r4, r3] add r1, r4, #0 add r2, r6, #0 bl MOD16_021F32DC mov r2, #0x3d str r6, [sp] lsl r2, r2, #4 add r3, r0, #0 ldrb r0, [r4, r2] sub r2, #0x7a add r1, r4, #0 str r0, [sp, #4] mov r0, #0x28 str r0, [sp, #8] add r0, sp, #0x14 str r0, [sp, #0xc] ldrh r2, [r4, r2] add r0, r5, #0 bl MOD11_02246274 cmp r0, #0x78 bne _021F11D6 mov r0, #0x50 b _021F11EC _021F11D6: cmp r0, #0xf0 bne _021F11DE mov r0, #0xa0 b _021F11EC _021F11DE: cmp r0, #0x1e bne _021F11E6 mov r0, #0x14 b _021F11EC _021F11E6: cmp r0, #0xf bne _021F11EC mov r0, #0xa _021F11EC: ldr r2, [sp, #0x14] ldr r1, _021F120C ; =0x00140808 tst r1, r2 beq _021F11F6 mov r0, #0 _021F11F6: cmp r0, r7 bne _021F1202 ldr r1, [sp, #0x10] add r0, r4, #0 bl MOD16_021F2D88 _021F1202: add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop _021F1208: .word 0x000003CF _021F120C: .word 0x00140808 thumb_func_end MOD16_021F1178 thumb_func_start MOD16_021F1210 MOD16_021F1210: ; 0x021F1210 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r7, r0, #0 str r1, [sp] add r0, r1, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, [sp] bl MOD16_021F2D54 add r4, r0, #0 ldr r0, [sp] bl MOD16_021F2D54 str r0, [sp, #0x10] ldr r0, [sp] bl MOD16_021F2D54 str r0, [sp, #0xc] lsl r1, r4, #0x18 ldr r0, [sp] lsr r1, r1, #0x18 bl MOD16_021F2D98 add r6, r0, #0 ldr r1, [r7, #0x2c] mov r0, #2 tst r0, r1 beq _021F126A ldr r0, [sp] add r1, r0, r6 ldr r0, _021F12FC ; =0x0000219C ldrb r0, [r1, r0] add r1, r6, #0 str r0, [sp, #8] add r0, r7, #0 bl FUN_022302BC ldr r1, [sp] add r1, r1, r0 ldr r0, _021F12FC ; =0x0000219C ldrb r0, [r1, r0] str r0, [sp, #4] b _021F1276 _021F126A: ldr r0, [sp] add r1, r0, r6 ldr r0, _021F12FC ; =0x0000219C ldrb r0, [r1, r0] str r0, [sp, #4] str r0, [sp, #8] _021F1276: add r0, r7, #0 add r1, r6, #0 bl FUN_0222FF88 str r0, [sp, #0x14] add r0, r7, #0 add r1, r6, #0 mov r5, #0 bl MOD11_0222FFC8 cmp r0, #0 ble _021F12F8 _021F128E: ldr r0, [sp, #0x14] add r1, r5, #0 bl FUN_0206B9B0 ldr r1, [sp, #8] add r4, r0, #0 cmp r5, r1 beq _021F12EA ldr r1, [sp, #4] cmp r5, r1 beq _021F12EA mov r1, #0xa2 mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F12EA add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F12EA add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F1300 ; =0x000001EE cmp r0, r1 beq _021F12EA add r0, r4, #0 mov r1, #0x9f mov r2, #0 bl FUN_020671BC ldr r1, [sp, #0x10] tst r0, r1 beq _021F12EA ldr r0, [sp] ldr r1, [sp, #0xc] bl MOD16_021F2D88 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021F12EA: add r0, r7, #0 add r1, r6, #0 add r5, r5, #1 bl MOD11_0222FFC8 cmp r5, r0 blt _021F128E _021F12F8: add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F12FC: .word 0x0000219C _021F1300: .word 0x000001EE thumb_func_end MOD16_021F1210 thumb_func_start MOD16_021F1304 MOD16_021F1304: ; 0x021F1304 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r7, r0, #0 str r1, [sp] add r0, r1, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, [sp] bl MOD16_021F2D54 add r4, r0, #0 ldr r0, [sp] bl MOD16_021F2D54 str r0, [sp, #0x10] ldr r0, [sp] bl MOD16_021F2D54 str r0, [sp, #0xc] lsl r1, r4, #0x18 ldr r0, [sp] lsr r1, r1, #0x18 bl MOD16_021F2D98 add r6, r0, #0 ldr r1, [r7, #0x2c] mov r0, #2 tst r0, r1 beq _021F135E ldr r0, [sp] add r1, r0, r6 ldr r0, _021F13F0 ; =0x0000219C ldrb r0, [r1, r0] add r1, r6, #0 str r0, [sp, #8] add r0, r7, #0 bl FUN_022302BC ldr r1, [sp] add r1, r1, r0 ldr r0, _021F13F0 ; =0x0000219C ldrb r0, [r1, r0] str r0, [sp, #4] b _021F136A _021F135E: ldr r0, [sp] add r1, r0, r6 ldr r0, _021F13F0 ; =0x0000219C ldrb r0, [r1, r0] str r0, [sp, #4] str r0, [sp, #8] _021F136A: add r0, r7, #0 add r1, r6, #0 bl FUN_0222FF88 str r0, [sp, #0x14] add r0, r7, #0 add r1, r6, #0 mov r5, #0 bl MOD11_0222FFC8 cmp r0, #0 ble _021F13EC _021F1382: ldr r0, [sp, #0x14] add r1, r5, #0 bl FUN_0206B9B0 ldr r1, [sp, #8] add r4, r0, #0 cmp r5, r1 beq _021F13DE ldr r1, [sp, #4] cmp r5, r1 beq _021F13DE mov r1, #0xa2 mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F13DE add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F13DE add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F13F4 ; =0x000001EE cmp r0, r1 beq _021F13DE add r0, r4, #0 mov r1, #0x9f mov r2, #0 bl FUN_020671BC ldr r1, [sp, #0x10] tst r0, r1 bne _021F13DE ldr r0, [sp] ldr r1, [sp, #0xc] bl MOD16_021F2D88 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _021F13DE: add r0, r7, #0 add r1, r6, #0 add r5, r5, #1 bl MOD11_0222FFC8 cmp r5, r0 blt _021F1382 _021F13EC: add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F13F0: .word 0x0000219C _021F13F4: .word 0x000001EE thumb_func_end MOD16_021F1304 thumb_func_start MOD16_021F13F8 MOD16_021F13F8: ; 0x021F13F8 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] mov r1, #6 lsl r1, r1, #6 ldr r2, [r4, r1] mov r1, #3 tst r1, r2 beq _021F141C mov r1, #2 str r1, [r4, r0] _021F141C: mov r0, #6 lsl r0, r0, #6 ldr r1, [r4, r0] mov r0, #0xc tst r0, r1 beq _021F1430 mov r0, #0xd7 mov r1, #3 lsl r0, r0, #2 str r1, [r4, r0] _021F1430: mov r0, #6 lsl r0, r0, #6 ldr r1, [r4, r0] mov r0, #0x30 tst r0, r1 beq _021F1444 mov r0, #0xd7 mov r1, #1 lsl r0, r0, #2 str r1, [r4, r0] _021F1444: mov r0, #6 lsl r0, r0, #6 ldr r1, [r4, r0] mov r0, #0xc0 tst r0, r1 beq _021F1458 mov r0, #0xd7 mov r1, #4 lsl r0, r0, #2 str r1, [r4, r0] _021F1458: mov r0, #6 lsl r0, r0, #6 ldr r1, [r4, r0] mov r0, #2 lsl r0, r0, #0xe tst r0, r1 beq _021F146E mov r0, #0xd7 mov r1, #5 lsl r0, r0, #2 str r1, [r4, r0] _021F146E: pop {r4, pc} thumb_func_end MOD16_021F13F8 thumb_func_start MOD16_021F1470 MOD16_021F1470: ; 0x021F1470 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 ldr r0, _021F14A4 ; =0x00000356 ldrh r2, [r5, r0] add r0, #0x88 lsl r2, r2, #4 add r2, r5, r2 ldrh r0, [r2, r0] cmp r4, r0 bne _021F14A2 add r0, r5, #0 bl MOD16_021F2D88 _021F14A2: pop {r3, r4, r5, pc} .align 2, 0 _021F14A4: .word 0x00000356 thumb_func_end MOD16_021F1470 thumb_func_start MOD16_021F14A8 MOD16_021F14A8: ; 0x021F14A8 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 ldr r0, _021F14DC ; =0x00000356 ldrh r2, [r5, r0] add r0, #0x88 lsl r2, r2, #4 add r2, r5, r2 ldrh r0, [r2, r0] cmp r4, r0 beq _021F14DA add r0, r5, #0 bl MOD16_021F2D88 _021F14DA: pop {r3, r4, r5, pc} .align 2, 0 _021F14DC: .word 0x00000356 thumb_func_end MOD16_021F14A8 thumb_func_start MOD16_021F14E0 MOD16_021F14E0: ; 0x021F14E0 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r7, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 str r0, [sp] add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 add r0, r5, r1 add r1, r0, r6 ldr r0, _021F1530 ; =0x00002D58 ldrsb r0, [r1, r0] cmp r0, r7 bge _021F152E ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 _021F152E: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F1530: .word 0x00002D58 thumb_func_end MOD16_021F14E0 thumb_func_start MOD16_021F1534 MOD16_021F1534: ; 0x021F1534 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r7, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 str r0, [sp] add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 add r0, r5, r1 add r1, r0, r6 ldr r0, _021F1584 ; =0x00002D58 ldrsb r0, [r1, r0] cmp r0, r7 ble _021F1582 ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 _021F1582: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F1584: .word 0x00002D58 thumb_func_end MOD16_021F1534 thumb_func_start MOD16_021F1588 MOD16_021F1588: ; 0x021F1588 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r7, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 str r0, [sp] add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 add r0, r5, r1 add r1, r0, r6 ldr r0, _021F15D8 ; =0x00002D58 ldrsb r0, [r1, r0] cmp r7, r0 bne _021F15D6 ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 _021F15D6: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F15D8: .word 0x00002D58 thumb_func_end MOD16_021F1588 thumb_func_start MOD16_021F15DC MOD16_021F15DC: ; 0x021F15DC push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r7, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 str r0, [sp] add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 add r0, r5, r1 add r1, r0, r6 ldr r0, _021F162C ; =0x00002D58 ldrsb r0, [r1, r0] cmp r7, r0 beq _021F162A ldr r1, [sp] add r0, r5, #0 bl MOD16_021F2D88 _021F162A: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F162C: .word 0x00002D58 thumb_func_end MOD16_021F15DC thumb_func_start MOD16_021F1630 MOD16_021F1630: ; 0x021F1630 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r6, r1, #0 str r0, [sp, #0x14] add r0, r6, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r6, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r6, #0 bl MOD16_021F2D54 str r0, [sp, #0x1c] cmp r4, #1 bne _021F1662 ldr r0, _021F1738 ; =0x00000355 ldrb r1, [r6, r0] add r0, #0x17 add r1, r6, r1 ldrb r0, [r1, r0] str r0, [sp, #0x18] b _021F1666 _021F1662: mov r0, #0x64 str r0, [sp, #0x18] _021F1666: ldr r2, _021F173C ; =0x00000356 ldr r1, _021F1740 ; =0x021FF7F4 ldrh r3, [r6, r2] add r2, #0x88 mov r0, #0 lsl r7, r3, #4 add r3, r6, r7 ldrh r3, [r3, r2] ldr r2, _021F1744 ; =0x0000FFFF _021F1678: ldrh r4, [r1] cmp r3, r4 beq _021F1688 add r1, r1, #2 ldrh r4, [r1] add r0, r0, #1 cmp r4, r2 bne _021F1678 _021F1688: ldr r2, _021F1748 ; =0x021FF7DC ldr r4, _021F1744 ; =0x0000FFFF mov r1, #0 _021F168E: ldrh r5, [r2] cmp r3, r5 beq _021F169E add r2, r2, #2 ldrh r5, [r2] add r1, r1, #1 cmp r5, r4 bne _021F168E _021F169E: lsl r2, r1, #1 ldr r1, _021F1748 ; =0x021FF7DC ldrh r1, [r1, r2] ldr r2, _021F1744 ; =0x0000FFFF cmp r1, r2 bne _021F16BE ldr r1, _021F174C ; =0x000003E1 add r3, r6, r7 ldrb r1, [r3, r1] cmp r1, #1 bls _021F1734 lsl r1, r0, #1 ldr r0, _021F1740 ; =0x021FF7F4 ldrh r0, [r0, r1] cmp r0, r2 bne _021F1734 _021F16BE: ldr r7, _021F1750 ; =0x000003CF mov r4, #0 add r5, sp, #0x20 _021F16C4: ldrb r1, [r6, r7] add r2, r4, #0 add r0, r6, #0 add r2, #0xa mov r3, #0 bl MOD11_02243420 strb r0, [r5] add r4, r4, #1 add r5, r5, #1 cmp r4, #6 blt _021F16C4 ldr r0, _021F1750 ; =0x000003CF ldrb r4, [r6, r0] add r0, r6, #0 add r1, r4, #0 bl MOD11_02246D1C add r1, sp, #0x20 str r1, [sp] str r4, [sp, #4] str r0, [sp, #8] mov r0, #0xc0 mul r0, r4 ldr r3, _021F1754 ; =0x00002DCC add r4, r6, r0 ldr r0, [r4, r3] ldr r2, _021F173C ; =0x00000356 lsl r0, r0, #0xa lsr r0, r0, #0x1d str r0, [sp, #0xc] ldr r0, [sp, #0x18] sub r3, #0x14 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] ldrh r2, [r6, r2] ldrh r3, [r4, r3] ldr r0, [sp, #0x14] add r1, r6, #0 bl MOD16_021F2EE8 mov r1, #0x3d lsl r1, r1, #4 ldrb r2, [r6, r1] mov r1, #0xc0 mul r1, r2 add r2, r6, r1 ldr r1, _021F1758 ; =0x00002D8C ldr r1, [r2, r1] cmp r1, r0 bhi _021F1734 ldr r1, [sp, #0x1c] add r0, r6, #0 bl MOD16_021F2D88 _021F1734: add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F1738: .word 0x00000355 _021F173C: .word 0x00000356 _021F1740: .word 0x021FF7F4 _021F1744: .word 0x0000FFFF _021F1748: .word 0x021FF7DC _021F174C: .word 0x000003E1 _021F1750: .word 0x000003CF _021F1754: .word 0x00002DCC _021F1758: .word 0x00002D8C thumb_func_end MOD16_021F1630 thumb_func_start MOD16_021F175C MOD16_021F175C: ; 0x021F175C push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r6, r1, #0 str r0, [sp, #0x14] add r0, r6, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r6, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r6, #0 bl MOD16_021F2D54 str r0, [sp, #0x1c] cmp r4, #1 bne _021F178E ldr r0, _021F1864 ; =0x00000355 ldrb r1, [r6, r0] add r0, #0x17 add r1, r6, r1 ldrb r0, [r1, r0] str r0, [sp, #0x18] b _021F1792 _021F178E: mov r0, #0x64 str r0, [sp, #0x18] _021F1792: ldr r2, _021F1868 ; =0x00000356 ldr r1, _021F186C ; =0x021FF7F4 ldrh r3, [r6, r2] add r2, #0x88 mov r0, #0 lsl r7, r3, #4 add r3, r6, r7 ldrh r3, [r3, r2] ldr r2, _021F1870 ; =0x0000FFFF _021F17A4: ldrh r4, [r1] cmp r3, r4 beq _021F17B4 add r1, r1, #2 ldrh r4, [r1] add r0, r0, #1 cmp r4, r2 bne _021F17A4 _021F17B4: ldr r2, _021F1874 ; =0x021FF7DC ldr r4, _021F1870 ; =0x0000FFFF mov r1, #0 _021F17BA: ldrh r5, [r2] cmp r3, r5 beq _021F17CA add r2, r2, #2 ldrh r5, [r2] add r1, r1, #1 cmp r5, r4 bne _021F17BA _021F17CA: lsl r2, r1, #1 ldr r1, _021F1874 ; =0x021FF7DC ldrh r1, [r1, r2] ldr r2, _021F1870 ; =0x0000FFFF cmp r1, r2 bne _021F17EA ldr r1, _021F1878 ; =0x000003E1 add r3, r6, r7 ldrb r1, [r3, r1] cmp r1, #1 bls _021F1860 lsl r1, r0, #1 ldr r0, _021F186C ; =0x021FF7F4 ldrh r0, [r0, r1] cmp r0, r2 bne _021F1860 _021F17EA: ldr r7, _021F187C ; =0x000003CF mov r4, #0 add r5, sp, #0x20 _021F17F0: ldrb r1, [r6, r7] add r2, r4, #0 add r0, r6, #0 add r2, #0xa mov r3, #0 bl MOD11_02243420 strb r0, [r5] add r4, r4, #1 add r5, r5, #1 cmp r4, #6 blt _021F17F0 ldr r0, _021F187C ; =0x000003CF ldrb r4, [r6, r0] add r0, r6, #0 add r1, r4, #0 bl MOD11_02246D1C add r1, sp, #0x20 str r1, [sp] str r4, [sp, #4] str r0, [sp, #8] mov r0, #0xc0 mul r0, r4 ldr r3, _021F1880 ; =0x00002DCC add r4, r6, r0 ldr r0, [r4, r3] ldr r2, _021F1868 ; =0x00000356 lsl r0, r0, #0xa lsr r0, r0, #0x1d str r0, [sp, #0xc] ldr r0, [sp, #0x18] sub r3, #0x14 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] ldrh r2, [r6, r2] ldrh r3, [r4, r3] ldr r0, [sp, #0x14] add r1, r6, #0 bl MOD16_021F2EE8 mov r1, #0x3d lsl r1, r1, #4 ldrb r2, [r6, r1] mov r1, #0xc0 mul r1, r2 add r2, r6, r1 ldr r1, _021F1884 ; =0x00002D8C ldr r1, [r2, r1] cmp r1, r0 bls _021F1860 ldr r1, [sp, #0x1c] add r0, r6, #0 bl MOD16_021F2D88 _021F1860: add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F1864: .word 0x00000355 _021F1868: .word 0x00000356 _021F186C: .word 0x021FF7F4 _021F1870: .word 0x0000FFFF _021F1874: .word 0x021FF7DC _021F1878: .word 0x000003E1 _021F187C: .word 0x000003CF _021F1880: .word 0x00002DCC _021F1884: .word 0x00002D8C thumb_func_end MOD16_021F175C thumb_func_start MOD16_021F1888 MOD16_021F1888: ; 0x021F1888 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 cmp r6, #0 beq _021F1918 cmp r6, #1 beq _021F18C4 cmp r6, #3 beq _021F18EA pop {r3, r4, r5, r6, r7, pc} _021F18C4: mov r2, #0xc0 mul r2, r0 ldr r0, _021F1940 ; =0x00002D4C mov r1, #0 add r3, r5, r2 _021F18CE: ldrh r2, [r3, r0] cmp r4, r2 beq _021F18DC add r1, r1, #1 add r3, r3, #2 cmp r1, #4 blt _021F18CE _021F18DC: cmp r1, #4 bge _021F193C add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F18EA: mov r1, #0xc0 mul r1, r0 add r0, r5, r1 ldr r1, _021F1944 ; =0x00002D8C ldr r1, [r0, r1] cmp r1, #0 beq _021F193C ldr r1, _021F1940 ; =0x00002D4C mov r3, #0 _021F18FC: ldrh r2, [r0, r1] cmp r4, r2 beq _021F190A add r3, r3, #1 add r0, r0, #2 cmp r3, #4 blt _021F18FC _021F190A: cmp r3, #4 bge _021F193C add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F1918: lsl r0, r0, #3 add r3, r5, r0 mov r0, #0x37 mov r1, #0 lsl r0, r0, #4 _021F1922: ldrh r2, [r3, r0] cmp r4, r2 beq _021F1930 add r1, r1, #1 add r3, r3, #2 cmp r1, #4 blt _021F1922 _021F1930: cmp r1, #4 bge _021F193C add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F193C: pop {r3, r4, r5, r6, r7, pc} nop _021F1940: .word 0x00002D4C _021F1944: .word 0x00002D8C thumb_func_end MOD16_021F1888 thumb_func_start MOD16_021F1948 MOD16_021F1948: ; 0x021F1948 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 cmp r6, #0 beq _021F19D8 cmp r6, #1 beq _021F1984 cmp r6, #3 beq _021F19AA pop {r3, r4, r5, r6, r7, pc} _021F1984: mov r2, #0xc0 mul r2, r0 ldr r0, _021F1A00 ; =0x00002D4C mov r1, #0 add r3, r5, r2 _021F198E: ldrh r2, [r3, r0] cmp r4, r2 beq _021F199C add r1, r1, #1 add r3, r3, #2 cmp r1, #4 blt _021F198E _021F199C: cmp r1, #4 bne _021F19FC add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F19AA: mov r1, #0xc0 mul r1, r0 add r0, r5, r1 ldr r1, _021F1A04 ; =0x00002D8C ldr r1, [r0, r1] cmp r1, #0 beq _021F19FC ldr r1, _021F1A00 ; =0x00002D4C mov r3, #0 _021F19BC: ldrh r2, [r0, r1] cmp r4, r2 beq _021F19CA add r3, r3, #1 add r0, r0, #2 cmp r3, #4 blt _021F19BC _021F19CA: cmp r3, #4 bne _021F19FC add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F19D8: lsl r0, r0, #3 add r3, r5, r0 mov r0, #0x37 mov r1, #0 lsl r0, r0, #4 _021F19E2: ldrh r2, [r3, r0] cmp r4, r2 beq _021F19F0 add r1, r1, #1 add r3, r3, #2 cmp r1, #4 blt _021F19E2 _021F19F0: cmp r1, #4 bne _021F19FC add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F19FC: pop {r3, r4, r5, r6, r7, pc} nop _021F1A00: .word 0x00002D4C _021F1A04: .word 0x00002D8C thumb_func_end MOD16_021F1948 thumb_func_start MOD16_021F1A08 MOD16_021F1A08: ; 0x021F1A08 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 cmp r6, #0 beq _021F1A70 cmp r6, #1 bne _021F1AA0 mov r2, #0xc0 mul r2, r0 add r0, r5, r2 ldr r2, _021F1AA4 ; =0x000003DE ldr r3, _021F1AA8 ; =0x00002D4C mov r1, #0 _021F1A4A: ldrh r6, [r0, r3] cmp r6, #0 beq _021F1A5A lsl r6, r6, #4 add r6, r5, r6 ldrh r6, [r6, r2] cmp r4, r6 beq _021F1A62 _021F1A5A: add r1, r1, #1 add r0, r0, #2 cmp r1, #4 blt _021F1A4A _021F1A62: cmp r1, #4 bge _021F1AA0 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F1A70: ldr r2, _021F1AA4 ; =0x000003DE lsl r0, r0, #3 add r3, r2, #0 mov r1, #0 add r0, r5, r0 sub r3, #0x6e _021F1A7C: ldrh r6, [r0, r3] cmp r6, #0 beq _021F1A8C lsl r6, r6, #4 add r6, r5, r6 ldrh r6, [r6, r2] cmp r4, r6 beq _021F1A94 _021F1A8C: add r1, r1, #1 add r0, r0, #2 cmp r1, #4 blt _021F1A7C _021F1A94: cmp r1, #4 bge _021F1AA0 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F1AA0: pop {r3, r4, r5, r6, r7, pc} nop _021F1AA4: .word 0x000003DE _021F1AA8: .word 0x00002D4C thumb_func_end MOD16_021F1A08 thumb_func_start MOD16_021F1AAC MOD16_021F1AAC: ; 0x021F1AAC push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 cmp r6, #0 beq _021F1B14 cmp r6, #1 bne _021F1B44 mov r2, #0xc0 mul r2, r0 add r0, r5, r2 ldr r2, _021F1B48 ; =0x000003DE ldr r3, _021F1B4C ; =0x00002D4C mov r1, #0 _021F1AEE: ldrh r6, [r0, r3] cmp r6, #0 beq _021F1AFE lsl r6, r6, #4 add r6, r5, r6 ldrh r6, [r6, r2] cmp r4, r6 beq _021F1B06 _021F1AFE: add r1, r1, #1 add r0, r0, #2 cmp r1, #4 blt _021F1AEE _021F1B06: cmp r1, #4 bne _021F1B44 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F1B14: ldr r2, _021F1B48 ; =0x000003DE lsl r0, r0, #3 add r3, r2, #0 mov r1, #0 add r0, r5, r0 sub r3, #0x6e _021F1B20: ldrh r6, [r0, r3] cmp r6, #0 beq _021F1B30 lsl r6, r6, #4 add r6, r5, r6 ldrh r6, [r6, r2] cmp r4, r6 beq _021F1B38 _021F1B30: add r1, r1, #1 add r0, r0, #2 cmp r1, #4 blt _021F1B20 _021F1B38: cmp r1, #4 bne _021F1B44 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F1B44: pop {r3, r4, r5, r6, r7, pc} nop _021F1B48: .word 0x000003DE _021F1B4C: .word 0x00002D4C thumb_func_end MOD16_021F1AAC thumb_func_start MOD16_021F1B50 MOD16_021F1B50: ; 0x021F1B50 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 cmp r4, #0 beq _021F1B88 cmp r4, #1 beq _021F1BA2 pop {r3, r4, r5, r6, r7, pc} _021F1B88: mov r1, #0xc0 mul r1, r0 ldr r0, _021F1BBC ; =0x00002DC8 add r1, r5, r1 ldr r0, [r1, r0] lsl r0, r0, #0x1d lsr r0, r0, #0x1d beq _021F1BBA add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 pop {r3, r4, r5, r6, r7, pc} _021F1BA2: mov r1, #0xc0 mul r1, r0 ldr r0, _021F1BBC ; =0x00002DC8 add r1, r5, r1 ldr r0, [r1, r0] lsl r0, r0, #0x1a lsr r0, r0, #0x1d beq _021F1BBA add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F1BBA: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F1BBC: .word 0x00002DC8 thumb_func_end MOD16_021F1B50 thumb_func_start MOD16_021F1BC0 MOD16_021F1BC0: ; 0x021F1BC0 push {r3, r4, r5, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r5, r0, #0 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 cmp r5, #0 beq _021F1BE6 cmp r5, #1 beq _021F1C04 pop {r3, r4, r5, pc} _021F1BE6: ldr r2, _021F1C24 ; =0x00000356 ldrh r0, [r4, r2] add r2, #0x79 ldrb r3, [r4, r2] mov r2, #0xc0 mul r2, r3 add r3, r4, r2 ldr r2, _021F1C28 ; =0x00002DE8 ldrh r2, [r3, r2] cmp r0, r2 bne _021F1C20 add r0, r4, #0 bl MOD16_021F2D88 pop {r3, r4, r5, pc} _021F1C04: ldr r2, _021F1C24 ; =0x00000356 ldrh r0, [r4, r2] add r2, #0x79 ldrb r3, [r4, r2] mov r2, #0xc0 mul r2, r3 add r3, r4, r2 ldr r2, _021F1C2C ; =0x00002DEC ldrh r2, [r3, r2] cmp r0, r2 bne _021F1C20 add r0, r4, #0 bl MOD16_021F2D88 _021F1C20: pop {r3, r4, r5, pc} nop _021F1C24: .word 0x00000356 _021F1C28: .word 0x00002DE8 _021F1C2C: .word 0x00002DEC thumb_func_end MOD16_021F1BC0 thumb_func_start MOD16_021F1C30 MOD16_021F1C30: ; 0x021F1C30 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r1, #0xd9 lsl r1, r1, #2 ldrb r2, [r4, r1] mov r0, #0xb orr r0, r2 strb r0, [r4, r1] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021F1C30 thumb_func_start MOD16_021F1C4C MOD16_021F1C4C: ; 0x021F1C4C bx lr .align 2, 0 thumb_func_end MOD16_021F1C4C thumb_func_start MOD16_021F1C50 MOD16_021F1C50: ; 0x021F1C50 bx lr .align 2, 0 thumb_func_end MOD16_021F1C50 thumb_func_start MOD16_021F1C54 MOD16_021F1C54: ; 0x021F1C54 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F1C84 ; =0x00002DB8 add r1, r4, r1 ldrh r1, [r1, r0] mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021F1C84: .word 0x00002DB8 thumb_func_end MOD16_021F1C54 thumb_func_start MOD16_021F1C88 MOD16_021F1C88: ; 0x021F1C88 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 ldr r1, _021F1CE4 ; =0x000003CF add r2, r0, #0 ldrb r0, [r4, r1] cmp r0, r2 beq _021F1CC8 lsl r2, r2, #1 add r2, r4, r2 sub r1, #0x3b ldrh r1, [r2, r1] add r0, r4, #0 mov r2, #1 bl MOD11_0224C12C mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r4, pc} _021F1CC8: mov r1, #0xc0 mul r1, r2 add r2, r4, r1 ldr r1, _021F1CE8 ; =0x00002DB8 add r0, r4, #0 ldrh r1, [r2, r1] mov r2, #1 bl MOD11_0224C12C mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r4, pc} nop _021F1CE4: .word 0x000003CF _021F1CE8: .word 0x00002DB8 thumb_func_end MOD16_021F1C88 thumb_func_start MOD16_021F1CEC MOD16_021F1CEC: ; 0x021F1CEC push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r6, r0, #0 ldr r0, _021F1D4C ; =0x000003CF mov r1, #1 add r3, r6, #0 ldrb r2, [r5, r0] and r3, r1 and r1, r2 cmp r3, r1 bne _021F1D36 mov r0, #0xc0 mul r0, r6 add r1, r5, r0 ldr r0, _021F1D50 ; =0x00002DB8 b _021F1D3C _021F1D36: lsl r1, r6, #1 add r1, r5, r1 sub r0, #0x3b _021F1D3C: ldrh r0, [r1, r0] cmp r0, r4 bne _021F1D4A add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F1D4A: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F1D4C: .word 0x000003CF _021F1D50: .word 0x00002DB8 thumb_func_end MOD16_021F1CEC thumb_func_start MOD16_021F1D54 MOD16_021F1D54: ; 0x021F1D54 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #6 lsl r0, r0, #6 ldr r0, [r5, r0] tst r0, r4 beq _021F1D80 add r0, r5, #0 bl MOD16_021F2D88 _021F1D80: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD16_021F1D54 thumb_func_start MOD16_021F1D84 MOD16_021F1D84: ; 0x021F1D84 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r7, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r4, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 add r0, r7, #0 bl MOD11_02230270 cmp r4, #4 beq _021F1DC2 mov r1, #1 lsl r1, r1, #0xa cmp r4, r1 beq _021F1DD8 pop {r3, r4, r5, r6, r7, pc} _021F1DC2: lsl r0, r0, #3 add r1, r5, r0 mov r0, #0x72 lsl r0, r0, #2 ldr r0, [r1, r0] lsl r0, r0, #0x1e lsr r1, r0, #0x1e mov r0, #0xd7 lsl r0, r0, #2 str r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _021F1DD8: lsl r0, r0, #3 add r2, r5, r0 mov r0, #0x72 lsl r0, r0, #2 ldr r0, [r2, r0] sub r1, #0xa4 lsl r0, r0, #0x1c lsr r0, r0, #0x1e str r0, [r5, r1] pop {r3, r4, r5, r6, r7, pc} thumb_func_end MOD16_021F1D84 thumb_func_start MOD16_021F1DEC MOD16_021F1DEC: ; 0x021F1DEC push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r0, #0 str r1, [sp] add r0, r1, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, [sp] bl MOD16_021F2D54 add r4, r0, #0 ldr r0, [sp] bl MOD16_021F2D54 str r0, [sp, #8] lsl r1, r4, #0x18 ldr r0, [sp] lsr r1, r1, #0x18 bl MOD16_021F2D98 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 mov r4, #0 bl MOD11_0222FFC8 cmp r0, #0 ble _021F1E74 ldr r0, [sp] add r0, r0, r6 str r0, [sp, #4] _021F1E2C: add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 bl FUN_02230014 ldr r2, [sp, #4] ldr r1, _021F1E78 ; =0x0000219C str r0, [sp, #0xc] ldrb r1, [r2, r1] cmp r4, r1 beq _021F1E66 mov r1, #0xa2 mov r2, #0 bl FUN_020671BC add r7, r0, #0 ldr r0, [sp, #0xc] mov r1, #0xa3 mov r2, #0 bl FUN_020671BC cmp r7, r0 beq _021F1E66 ldr r0, [sp] ldr r1, [sp, #8] bl MOD16_021F2D88 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} _021F1E66: add r0, r5, #0 add r1, r6, #0 add r4, r4, #1 bl MOD11_0222FFC8 cmp r4, r0 blt _021F1E2C _021F1E74: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F1E78: .word 0x0000219C thumb_func_end MOD16_021F1DEC thumb_func_start MOD16_021F1E7C MOD16_021F1E7C: ; 0x021F1E7C push {r4, r5, r6, r7, lr} sub sp, #0x14 str r0, [sp] str r1, [sp, #4] add r0, r1, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, [sp, #4] bl MOD16_021F2D54 add r4, r0, #0 ldr r0, [sp, #4] bl MOD16_021F2D54 str r0, [sp, #0x10] lsl r1, r4, #0x18 ldr r0, [sp, #4] lsr r1, r1, #0x18 bl MOD16_021F2D98 str r0, [sp, #8] ldr r0, [sp] ldr r1, [sp, #8] mov r7, #0 bl MOD11_0222FFC8 cmp r0, #0 ble _021F1F16 ldr r1, [sp, #4] ldr r0, [sp, #8] add r0, r1, r0 str r0, [sp, #0xc] _021F1EBE: ldr r0, [sp] ldr r1, [sp, #8] add r2, r7, #0 bl FUN_02230014 add r5, r0, #0 ldr r1, [sp, #0xc] ldr r0, _021F1F1C ; =0x0000219C ldrb r0, [r1, r0] cmp r7, r0 beq _021F1F08 mov r4, #0 _021F1ED6: add r1, r4, #0 add r0, r5, #0 add r1, #0x3a mov r2, #0 bl FUN_020671BC add r1, r4, #0 add r6, r0, #0 add r0, r5, #0 add r1, #0x42 mov r2, #0 bl FUN_020671BC cmp r6, r0 beq _021F1EFE ldr r0, [sp, #4] ldr r1, [sp, #0x10] bl MOD16_021F2D88 b _021F1F04 _021F1EFE: add r4, r4, #1 cmp r4, #4 blt _021F1ED6 _021F1F04: cmp r4, #4 bne _021F1F16 _021F1F08: ldr r0, [sp] ldr r1, [sp, #8] add r7, r7, #1 bl MOD11_0222FFC8 cmp r7, r0 blt _021F1EBE _021F1F16: add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _021F1F1C: .word 0x0000219C thumb_func_end MOD16_021F1E7C thumb_func_start MOD16_021F1F20 MOD16_021F1F20: ; 0x021F1F20 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 add r0, r4, #0 bl MOD11_02249E58 mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021F1F20 thumb_func_start MOD16_021F1F50 MOD16_021F1F50: ; 0x021F1F50 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 ldr r1, _021F1F78 ; =0x000003CF mov r0, #0xc0 ldrb r2, [r4, r1] mul r0, r2 add r2, r4, r0 add r0, r1, #0 sub r0, #0x7a ldrb r0, [r4, r0] sub r1, #0x73 add r2, r2, r0 ldr r0, _021F1F7C ; =0x00002D6C ldrb r0, [r2, r0] str r0, [r4, r1] pop {r4, pc} .align 2, 0 _021F1F78: .word 0x000003CF _021F1F7C: .word 0x00002D6C thumb_func_end MOD16_021F1F50 thumb_func_start MOD16_021F1F80 MOD16_021F1F80: ; 0x021F1F80 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r6, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r5, r0, #0 add r0, r4, #0 bl MOD16_021F2D54 lsl r1, r5, #0x18 add r7, r0, #0 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r5, r0, #0 add r0, r6, #0 add r1, r4, #0 add r2, r5, #0 bl MOD11_022473F8 mov r1, #0xc0 mul r1, r5 add r2, r4, r1 ldr r1, _021F1FD8 ; =0x00002DCC ldr r1, [r2, r1] lsl r1, r1, #0x13 lsr r2, r1, #0x1d sub r1, r0, #1 cmp r2, r1 blo _021F1FD4 cmp r0, #1 ble _021F1FD4 add r0, r4, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F1FD4: pop {r3, r4, r5, r6, r7, pc} nop _021F1FD8: .word 0x00002DCC thumb_func_end MOD16_021F1F80 thumb_func_start MOD16_021F1FDC MOD16_021F1FDC: ; 0x021F1FDC push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, _021F1FFC ; =0x00000356 ldrh r1, [r4, r0] lsl r1, r1, #4 add r2, r4, r1 add r1, r0, #0 add r1, #0x8a ldrb r1, [r2, r1] add r0, r0, #6 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021F1FFC: .word 0x00000356 thumb_func_end MOD16_021F1FDC thumb_func_start MOD16_021F2000 MOD16_021F2000: ; 0x021F2000 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r1, #0x3d lsl r1, r1, #4 ldrb r0, [r4, r1] lsl r0, r0, #1 add r2, r4, r0 ldr r0, _021F202C ; =0x0000307C ldrh r0, [r2, r0] lsl r0, r0, #4 add r2, r4, r0 add r0, r1, #0 add r0, #0x10 ldrb r0, [r2, r0] sub r1, #0x74 str r0, [r4, r1] pop {r4, pc} nop _021F202C: .word 0x0000307C thumb_func_end MOD16_021F2000 thumb_func_start MOD16_021F2030 MOD16_021F2030: ; 0x021F2030 push {r4, r5, r6, r7, lr} sub sp, #0x34 str r0, [sp, #4] str r1, [sp, #8] add r0, r1, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, [sp, #8] bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 ldr r0, [sp, #8] lsr r1, r1, #0x18 bl MOD16_021F2D98 str r0, [sp, #0x10] ldr r0, [sp, #4] bl MOD11_0222FF84 mov r1, #0 str r0, [sp, #0x14] cmp r0, #0 ble _021F206E add r2, sp, #0x24 _021F2064: ldr r0, [sp, #0x14] stmia r2!, {r1} add r1, r1, #1 cmp r1, r0 blt _021F2064 _021F206E: mov r0, #0 str r0, [sp, #0xc] ldr r0, [sp, #0x14] sub r0, r0, #1 str r0, [sp, #0x1c] cmp r0, #0 ble _021F20C8 add r6, sp, #0x24 str r6, [sp, #0x20] _021F2080: ldr r0, [sp, #0xc] add r7, r0, #1 ldr r0, [sp, #0x14] cmp r7, r0 bge _021F20BA ldr r0, [sp, #0x20] lsl r1, r7, #2 add r5, r0, r1 _021F2090: ldr r0, [r6] ldr r4, [r5] str r0, [sp, #0x18] mov r0, #1 str r0, [sp] ldr r0, [sp, #4] ldr r1, [sp, #8] ldr r2, [sp, #0x18] add r3, r4, #0 bl MOD11_02244248 cmp r0, #0 beq _021F20B0 ldr r0, [sp, #0x18] str r4, [r6] str r0, [r5] _021F20B0: ldr r0, [sp, #0x14] add r7, r7, #1 add r5, r5, #4 cmp r7, r0 blt _021F2090 _021F20BA: ldr r0, [sp, #0xc] add r6, r6, #4 add r1, r0, #1 ldr r0, [sp, #0x1c] str r1, [sp, #0xc] cmp r1, r0 blt _021F2080 _021F20C8: ldr r1, [sp, #0x14] mov r0, #0 cmp r1, #0 ble _021F20F0 add r3, sp, #0x24 _021F20D2: ldr r2, [r3] ldr r1, [sp, #0x10] cmp r1, r2 bne _021F20E6 mov r2, #0xd7 ldr r1, [sp, #8] lsl r2, r2, #2 str r0, [r1, r2] add sp, #0x34 pop {r4, r5, r6, r7, pc} _021F20E6: ldr r1, [sp, #0x14] add r0, r0, #1 add r3, r3, #4 cmp r0, r1 blt _021F20D2 _021F20F0: add sp, #0x34 pop {r4, r5, r6, r7, pc} thumb_func_end MOD16_021F2030 thumb_func_start MOD16_021F20F4 MOD16_021F20F4: ; 0x021F20F4 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0x15 lsl r1, r1, #4 ldr r2, [r4, r1] mov r1, #0xc0 mul r1, r0 ldr r0, _021F212C ; =0x00002DD4 add r1, r4, r1 ldr r0, [r1, r0] sub r1, r2, r0 mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021F212C: .word 0x00002DD4 thumb_func_end MOD16_021F20F4 thumb_func_start MOD16_021F2130 MOD16_021F2130: ; 0x021F2130 push {r4, r5, r6, r7, lr} sub sp, #0x54 str r0, [sp, #0x18] str r1, [sp, #0x1c] add r0, r1, #0 mov r1, #1 bl MOD16_021F2D88 ldr r0, [sp, #0x1c] bl MOD16_021F2D54 str r0, [sp, #0x30] ldr r0, [sp, #0x1c] bl MOD16_021F2D54 str r0, [sp, #0x2c] mov r4, #0 ldr r1, _021F22B4 ; =0x000003CF ldr r0, [sp, #0x1c] add r5, sp, #0x34 ldrb r0, [r0, r1] add r6, r4, #0 str r0, [sp, #0x28] _021F215E: add r2, r4, #0 ldr r0, [sp, #0x1c] ldr r1, [sp, #0x28] add r2, #0xa add r3, r6, #0 bl MOD11_02243420 strb r0, [r5] add r4, r4, #1 add r5, r5, #1 cmp r4, #6 blt _021F215E ldr r0, [sp, #0x28] mov r1, #0xc0 add r4, r0, #0 mul r4, r1 ldr r0, [sp, #0x1c] ldr r1, [sp, #0x28] bl MOD11_02246D1C add r1, sp, #0x44 str r1, [sp] ldr r1, [sp, #0x1c] ldr r3, _021F22B8 ; =0x00002DB8 add r2, r1, r4 ldrh r1, [r2, r3] ldr r5, _021F22B4 ; =0x000003CF str r1, [sp, #4] add r1, sp, #0x34 str r1, [sp, #8] str r0, [sp, #0xc] add r0, r3, #0 add r0, #0x14 ldr r0, [r2, r0] ldr r1, [sp, #0x1c] lsl r0, r0, #0xa lsr r0, r0, #0x1d str r0, [sp, #0x10] ldr r0, [sp, #0x30] add r2, r1, #0 str r0, [sp, #0x14] ldrb r2, [r2, r5] sub r3, #0x6c add r5, r1, #0 add r3, r5, r3 ldr r0, [sp, #0x18] add r3, r3, r4 bl MOD16_021F2DE0 str r0, [sp, #0x24] ldr r0, [sp, #0x18] ldr r1, [sp, #0x28] mov r7, #0 bl MOD11_0222FFC8 cmp r0, #0 ble _021F22AE ldr r1, [sp, #0x1c] ldr r0, [sp, #0x28] add r0, r1, r0 str r0, [sp, #0x20] _021F21D8: ldr r1, _021F22BC ; =0x0000219C ldr r0, [sp, #0x20] ldrb r0, [r0, r1] cmp r7, r0 beq _021F22A0 ldr r0, [sp, #0x18] ldr r1, [sp, #0x28] add r2, r7, #0 bl FUN_02230014 mov r1, #0xa2 mov r2, #0 add r6, r0, #0 bl FUN_020671BC cmp r0, #0 beq _021F22A0 add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F22A0 add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F22C0 ; =0x000001EE cmp r0, r1 beq _021F22A0 add r5, sp, #0x38 mov r4, #0 add r5, #2 _021F221E: add r1, r4, #0 add r0, r6, #0 add r1, #0x36 mov r2, #0 bl FUN_020671BC strh r0, [r5] add r4, r4, #1 add r5, r5, #2 cmp r4, #4 blt _021F221E mov r5, #0 add r4, sp, #0x34 _021F2238: add r1, r5, #0 add r0, r6, #0 add r1, #0x46 mov r2, #0 bl FUN_020671BC strb r0, [r4] add r5, r5, #1 add r4, r4, #1 cmp r5, #6 blt _021F2238 add r0, r6, #0 mov r1, #6 mov r2, #0 bl FUN_020671BC add r4, r0, #0 add r0, r6, #0 mov r1, #0xa mov r2, #0 bl FUN_020671BC add r1, sp, #0x44 str r1, [sp] lsl r1, r4, #0x10 lsr r1, r1, #0x10 str r1, [sp, #4] add r1, sp, #0x34 str r1, [sp, #8] str r0, [sp, #0xc] mov r0, #0 str r0, [sp, #0x10] ldr r0, [sp, #0x30] ldr r1, [sp, #0x1c] str r0, [sp, #0x14] ldr r3, _021F22B4 ; =0x000003CF add r2, r1, #0 ldrb r2, [r2, r3] add r3, sp, #0x38 ldr r0, [sp, #0x18] add r3, #2 bl MOD16_021F2DE0 ldr r1, [sp, #0x24] cmp r0, r1 ble _021F22A0 ldr r0, [sp, #0x1c] ldr r1, [sp, #0x2c] bl MOD16_021F2D88 add sp, #0x54 pop {r4, r5, r6, r7, pc} _021F22A0: ldr r0, [sp, #0x18] ldr r1, [sp, #0x28] add r7, r7, #1 bl MOD11_0222FFC8 cmp r7, r0 blt _021F21D8 _021F22AE: add sp, #0x54 pop {r4, r5, r6, r7, pc} nop _021F22B4: .word 0x000003CF _021F22B8: .word 0x00002DB8 _021F22BC: .word 0x0000219C _021F22C0: .word 0x000001EE thumb_func_end MOD16_021F2130 thumb_func_start MOD16_021F22C4 MOD16_021F22C4: ; 0x021F22C4 push {r4, r5, r6, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 ldr r2, _021F22F8 ; =0x000003CF add r6, r0, #0 ldrb r2, [r4, r2] add r0, r5, #0 add r1, r4, #0 mov r3, #1 bl MOD16_021F3D3C cmp r0, #1 bne _021F22F4 add r0, r4, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F22F4: pop {r4, r5, r6, pc} nop _021F22F8: .word 0x000003CF thumb_func_end MOD16_021F22C4 thumb_func_start MOD16_021F22FC MOD16_021F22FC: ; 0x021F22FC push {r4, r5, r6, r7, lr} sub sp, #0x44 add r6, r1, #0 str r0, [sp, #0x18] add r0, r6, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r6, #0 bl MOD16_021F2D54 str r0, [sp, #0x28] add r0, r6, #0 bl MOD16_021F2D54 str r0, [sp, #0x24] add r0, r6, #0 bl MOD16_021F2D54 ldr r7, _021F2400 ; =0x000003CF str r0, [sp, #0x20] mov r4, #0 add r5, sp, #0x2c _021F232A: ldrb r1, [r6, r7] add r2, r4, #0 add r0, r6, #0 add r2, #0xa mov r3, #0 bl MOD11_02243420 strb r0, [r5] add r4, r4, #1 add r5, r5, #1 cmp r4, #6 blt _021F232A ldr r0, _021F2400 ; =0x000003CF ldrb r4, [r6, r0] mov r0, #0xc0 add r5, r4, #0 mul r5, r0 add r0, r6, #0 add r1, r4, #0 bl MOD11_02246D1C add r1, sp, #0x34 str r1, [sp] ldr r3, _021F2404 ; =0x00002DB8 add r1, r6, r5 ldrh r1, [r1, r3] add r2, r4, #0 str r1, [sp, #4] add r1, sp, #0x2c str r1, [sp, #8] str r0, [sp, #0xc] mov r0, #0xc0 mul r0, r4 add r1, r6, r0 add r0, r3, #0 add r0, #0x14 ldr r0, [r1, r0] sub r3, #0x6c lsl r0, r0, #0xa lsr r0, r0, #0x1d str r0, [sp, #0x10] ldr r0, [sp, #0x24] add r3, r6, r3 str r0, [sp, #0x14] ldr r0, [sp, #0x18] add r1, r6, #0 add r3, r3, r5 bl MOD16_021F2DE0 ldr r1, [sp, #0x28] str r0, [sp, #0x1c] lsl r1, r1, #0x18 add r0, r6, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r4, r0, #0 ldr r0, [sp, #0x24] cmp r0, #1 bne _021F23AE ldr r0, _021F2408 ; =0x00000355 ldrb r1, [r6, r0] add r0, #0x17 add r1, r6, r1 ldrb r5, [r1, r0] b _021F23B0 _021F23AE: mov r5, #0x64 _021F23B0: mov r0, #0xc0 add r7, r4, #0 mul r7, r0 add r0, r6, #0 add r1, r4, #0 bl MOD11_02246D1C add r1, sp, #0x2c str r1, [sp] str r4, [sp, #4] lsl r2, r4, #1 add r4, r6, r2 ldr r3, _021F240C ; =0x00002DCC add r7, r6, r7 str r0, [sp, #8] ldr r0, [r7, r3] ldr r2, _021F2410 ; =0x0000307C lsl r0, r0, #0xa lsr r0, r0, #0x1d str r0, [sp, #0xc] lsl r0, r5, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] sub r3, #0x14 ldrh r2, [r4, r2] ldrh r3, [r7, r3] ldr r0, [sp, #0x18] add r1, r6, #0 bl MOD16_021F2EE8 ldr r1, [sp, #0x1c] cmp r0, r1 ble _021F23FA ldr r1, [sp, #0x20] add r0, r6, #0 bl MOD16_021F2D88 _021F23FA: add sp, #0x44 pop {r4, r5, r6, r7, pc} nop _021F2400: .word 0x000003CF _021F2404: .word 0x00002DB8 _021F2408: .word 0x00000355 _021F240C: .word 0x00002DCC _021F2410: .word 0x0000307C thumb_func_end MOD16_021F22FC thumb_func_start MOD16_021F2414 MOD16_021F2414: ; 0x021F2414 push {r4, r5, r6, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r2, #0xd7 mov r3, #0xd7 mov r1, #0 lsl r2, r2, #2 str r1, [r4, r2] mov r2, #0xc0 mul r2, r0 add r0, r4, r2 ldr r2, _021F2460 ; =0x00002D58 lsl r3, r3, #2 _021F2446: ldrsb r5, [r0, r2] cmp r5, #6 ble _021F2454 ldr r6, [r4, r3] sub r5, r5, #6 add r5, r6, r5 str r5, [r4, r3] _021F2454: add r1, r1, #1 add r0, r0, #1 cmp r1, #8 blt _021F2446 pop {r4, r5, r6, pc} nop _021F2460: .word 0x00002D58 thumb_func_end MOD16_021F2414 thumb_func_start MOD16_021F2464 MOD16_021F2464: ; 0x021F2464 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r6, #0x18 add r4, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 ldr r3, _021F24AC ; =0x000003CF mov r1, #0xc0 ldrb r6, [r5, r3] add r2, r0, #0 mul r2, r1 add r0, r5, r2 mul r1, r6 add r1, r5, r1 ldr r2, _021F24B0 ; =0x00002D58 add r0, r0, r4 add r1, r1, r4 ldrsb r0, [r0, r2] ldrsb r1, [r1, r2] sub r3, #0x73 sub r0, r0, r1 str r0, [r5, r3] pop {r4, r5, r6, pc} .align 2, 0 _021F24AC: .word 0x000003CF _021F24B0: .word 0x00002D58 thumb_func_end MOD16_021F2464 thumb_func_start MOD16_021F24B4 MOD16_021F24B4: ; 0x021F24B4 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 str r6, [sp] add r0, r5, #0 add r2, sp, #8 add r3, sp, #4 bl MOD16_021F25B0 ldr r1, [sp, #8] ldr r0, [sp, #4] cmp r1, r0 bge _021F2502 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F2502: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021F24B4 thumb_func_start MOD16_021F2508 MOD16_021F2508: ; 0x021F2508 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 str r6, [sp] add r0, r5, #0 add r2, sp, #8 add r3, sp, #4 bl MOD16_021F25B0 ldr r1, [sp, #8] ldr r0, [sp, #4] cmp r1, r0 ble _021F2556 add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F2556: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021F2508 thumb_func_start MOD16_021F255C MOD16_021F255C: ; 0x021F255C push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r7, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 str r6, [sp] add r0, r5, #0 add r2, sp, #8 add r3, sp, #4 bl MOD16_021F25B0 ldr r1, [sp, #8] ldr r0, [sp, #4] cmp r1, r0 bne _021F25AA add r0, r5, #0 add r1, r7, #0 bl MOD16_021F2D88 _021F25AA: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_end MOD16_021F255C thumb_func_start MOD16_021F25B0 MOD16_021F25B0: ; 0x021F25B0 push {r4, r5, r6, lr} add r4, r1, #0 add r1, r3, #0 ldr r3, [sp, #0x10] cmp r3, #5 bhi _021F2688 add r3, r3, r3 add r3, pc ldrh r3, [r3, #6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _021F25C8: ; jump table .short _021F25D4 - _021F25C8 - 2 ; case 0 .short _021F25F2 - _021F25C8 - 2 ; case 1 .short _021F2610 - _021F25C8 - 2 ; case 2 .short _021F266A - _021F25C8 - 2 ; case 3 .short _021F262E - _021F25C8 - 2 ; case 4 .short _021F264C - _021F25C8 - 2 ; case 5 _021F25D4: ldr r3, _021F2690 ; =0x000003CF ldrb r5, [r0, r3] mov r3, #0xc0 add r6, r5, #0 mul r6, r3 ldr r5, _021F2694 ; =0x00002D8C add r6, r0, r6 ldr r6, [r6, r5] str r6, [r2] add r2, r4, #0 mul r2, r3 add r0, r0, r2 ldr r0, [r0, r5] str r0, [r1] pop {r4, r5, r6, pc} _021F25F2: ldr r3, _021F2690 ; =0x000003CF ldrb r5, [r0, r3] mov r3, #0xc0 add r6, r5, #0 mul r6, r3 ldr r5, _021F2698 ; =0x00002D42 add r6, r0, r6 ldrh r6, [r6, r5] str r6, [r2] add r2, r4, #0 mul r2, r3 add r0, r0, r2 ldrh r0, [r0, r5] str r0, [r1] pop {r4, r5, r6, pc} _021F2610: ldr r3, _021F2690 ; =0x000003CF ldrb r5, [r0, r3] mov r3, #0xc0 add r6, r5, #0 mul r6, r3 ldr r5, _021F269C ; =0x00002D44 add r6, r0, r6 ldrh r6, [r6, r5] str r6, [r2] add r2, r4, #0 mul r2, r3 add r0, r0, r2 ldrh r0, [r0, r5] str r0, [r1] pop {r4, r5, r6, pc} _021F262E: ldr r3, _021F2690 ; =0x000003CF ldrb r5, [r0, r3] mov r3, #0xc0 add r6, r5, #0 mul r6, r3 ldr r5, _021F26A0 ; =0x00002D48 add r6, r0, r6 ldrh r6, [r6, r5] str r6, [r2] add r2, r4, #0 mul r2, r3 add r0, r0, r2 ldrh r0, [r0, r5] str r0, [r1] pop {r4, r5, r6, pc} _021F264C: ldr r3, _021F2690 ; =0x000003CF ldrb r5, [r0, r3] mov r3, #0xc0 add r6, r5, #0 mul r6, r3 ldr r5, _021F26A4 ; =0x00002D4A add r6, r0, r6 ldrh r6, [r6, r5] str r6, [r2] add r2, r4, #0 mul r2, r3 add r0, r0, r2 ldrh r0, [r0, r5] str r0, [r1] pop {r4, r5, r6, pc} _021F266A: ldr r3, _021F2690 ; =0x000003CF ldrb r5, [r0, r3] mov r3, #0xc0 add r6, r5, #0 mul r6, r3 ldr r5, _021F26A8 ; =0x00002D46 add r6, r0, r6 ldrh r6, [r6, r5] str r6, [r2] add r2, r4, #0 mul r2, r3 add r0, r0, r2 ldrh r0, [r0, r5] str r0, [r1] pop {r4, r5, r6, pc} _021F2688: bl ErrorHandling pop {r4, r5, r6, pc} nop _021F2690: .word 0x000003CF _021F2694: .word 0x00002D8C _021F2698: .word 0x00002D42 _021F269C: .word 0x00002D44 _021F26A0: .word 0x00002D48 _021F26A4: .word 0x00002D4A _021F26A8: .word 0x00002D46 thumb_func_end MOD16_021F25B0 thumb_func_start MOD16_021F26AC MOD16_021F26AC: ; 0x021F26AC push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 add r6, r1, #0 str r0, [sp, #0x18] add r0, r6, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r6, #0 bl MOD16_021F2D54 ldr r2, _021F27E8 ; =0x00000356 str r0, [sp, #0x20] ldrh r3, [r6, r2] add r2, #0x88 ldr r1, _021F27EC ; =0x021FF7F4 lsl r7, r3, #4 add r3, r6, r7 ldrh r3, [r3, r2] ldr r2, _021F27F0 ; =0x0000FFFF mov r0, #0 _021F26D6: ldrh r4, [r1] cmp r3, r4 beq _021F26E6 add r1, r1, #2 ldrh r4, [r1] add r0, r0, #1 cmp r4, r2 bne _021F26D6 _021F26E6: ldr r2, _021F27F4 ; =0x021FF7DC ldr r4, _021F27F0 ; =0x0000FFFF mov r1, #0 _021F26EC: ldrh r5, [r2] cmp r3, r5 beq _021F26FC add r2, r2, #2 ldrh r5, [r2] add r1, r1, #1 cmp r5, r4 bne _021F26EC _021F26FC: lsl r2, r1, #1 ldr r1, _021F27F4 ; =0x021FF7DC ldrh r1, [r1, r2] ldr r2, _021F27F0 ; =0x0000FFFF cmp r1, r2 bne _021F271C ldr r1, _021F27F8 ; =0x000003E1 add r3, r6, r7 ldrb r1, [r3, r1] cmp r1, #1 bls _021F27DA lsl r1, r0, #1 ldr r0, _021F27EC ; =0x021FF7F4 ldrh r0, [r0, r1] cmp r0, r2 bne _021F27DA _021F271C: ldr r0, _021F27FC ; =0x000003CF ldrb r7, [r6, r0] mov r0, #0 str r0, [sp, #0x1c] _021F2724: mov r4, #0 add r5, sp, #0x28 _021F2728: add r2, r4, #0 add r0, r6, #0 add r1, r7, #0 add r2, #0xa mov r3, #0 bl MOD11_02243420 strb r0, [r5] add r4, r4, #1 add r5, r5, #1 cmp r4, #6 blt _021F2728 mov r0, #0xc0 add r4, r7, #0 mul r4, r0 add r0, r6, #0 add r1, r7, #0 bl MOD11_02246D1C add r1, sp, #0x30 str r1, [sp] ldr r3, _021F2800 ; =0x00002DB8 add r1, r6, r4 ldrh r2, [r1, r3] str r2, [sp, #4] add r2, sp, #0x28 str r2, [sp, #8] str r0, [sp, #0xc] add r0, r3, #0 add r0, #0x14 ldr r0, [r1, r0] sub r3, #0x6c lsl r0, r0, #0xa lsr r0, r0, #0x1d str r0, [sp, #0x10] ldr r0, [sp, #0x20] add r3, r6, r3 str r0, [sp, #0x14] ldr r0, [sp, #0x18] add r1, r6, #0 add r2, r7, #0 add r3, r3, r4 bl MOD16_021F2DE0 ldr r1, _021F27FC ; =0x000003CF ldr r0, [sp, #0x18] ldrb r1, [r6, r1] bl FUN_022302BC add r7, r0, #0 ldr r0, [sp, #0x1c] cmp r0, #0 bne _021F279E ldr r0, _021F2804 ; =0x00000355 ldrb r0, [r6, r0] lsl r1, r0, #2 add r0, sp, #0x30 ldr r0, [r0, r1] str r0, [sp, #0x24] _021F279E: mov r3, #0 add r2, sp, #0x30 _021F27A2: ldr r1, [r2] ldr r0, [sp, #0x24] cmp r1, r0 bgt _021F27B2 add r3, r3, #1 add r2, r2, #4 cmp r3, #4 blt _021F27A2 _021F27B2: cmp r3, #4 bne _021F27C0 mov r0, #0xd7 mov r1, #2 lsl r0, r0, #2 str r1, [r6, r0] b _021F27CC _021F27C0: mov r0, #0xd7 mov r1, #1 lsl r0, r0, #2 add sp, #0x40 str r1, [r6, r0] pop {r3, r4, r5, r6, r7, pc} _021F27CC: ldr r0, [sp, #0x1c] add r0, r0, #1 str r0, [sp, #0x1c] cmp r0, #2 blt _021F2724 add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} _021F27DA: mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r6, r0] add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} nop _021F27E8: .word 0x00000356 _021F27EC: .word 0x021FF7F4 _021F27F0: .word 0x0000FFFF _021F27F4: .word 0x021FF7DC _021F27F8: .word 0x000003E1 _021F27FC: .word 0x000003CF _021F2800: .word 0x00002DB8 _021F2804: .word 0x00000355 thumb_func_end MOD16_021F26AC thumb_func_start MOD16_021F2808 MOD16_021F2808: ; 0x021F2808 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 cmp r4, #1 bne _021F282C bl ErrorHandling _021F282C: cmp r4, #0 bne _021F2834 bl ErrorHandling _021F2834: lsl r1, r4, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 bl FUN_0206A92C ldr r1, _021F2854 ; =0x00003108 ldrb r1, [r5, r1] tst r0, r1 beq _021F2852 add r0, r5, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F2852: pop {r4, r5, r6, pc} .align 2, 0 _021F2854: .word 0x00003108 thumb_func_end MOD16_021F2808 thumb_func_start MOD16_021F2858 MOD16_021F2858: ; 0x021F2858 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r6, r0, #0 cmp r4, #1 bne _021F287C bl ErrorHandling _021F287C: cmp r4, #0 bne _021F2884 bl ErrorHandling _021F2884: lsl r1, r4, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 bl FUN_0206A92C ldr r1, _021F28A4 ; =0x00003108 ldrb r1, [r5, r1] tst r0, r1 bne _021F28A2 add r0, r5, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F28A2: pop {r4, r5, r6, pc} .align 2, 0 _021F28A4: .word 0x00003108 thumb_func_end MOD16_021F2858 thumb_func_start MOD16_021F28A8 MOD16_021F28A8: ; 0x021F28A8 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F28DC ; =0x00002DBE add r1, r4, r1 ldrb r0, [r1, r0] lsl r0, r0, #0x1c lsr r1, r0, #0x1c mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021F28DC: .word 0x00002DBE thumb_func_end MOD16_021F28A8 thumb_func_start MOD16_021F28E0 MOD16_021F28E0: ; 0x021F28E0 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r2, r0, #0 mov r1, #0xc0 mul r2, r1 ldr r0, _021F2928 ; =0x00002DD4 add r2, r4, r2 add r1, #0x90 ldr r2, [r2, r0] ldr r0, [r4, r1] cmp r2, r0 bge _021F291C mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} _021F291C: mov r1, #1 mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} nop _021F2928: .word 0x00002DD4 thumb_func_end MOD16_021F28E0 thumb_func_start MOD16_021F292C MOD16_021F292C: ; 0x021F292C push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F2960 ; =0x00002DC8 add r1, r4, r1 ldr r0, [r1, r0] lsl r0, r0, #8 lsr r1, r0, #0x1d mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} .align 2, 0 _021F2960: .word 0x00002DC8 thumb_func_end MOD16_021F292C thumb_func_start MOD16_021F2964 MOD16_021F2964: ; 0x021F2964 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r0, #0xd7 ldr r1, [r5, #0x2c] lsl r0, r0, #2 str r1, [r4, r0] pop {r3, r4, r5, pc} thumb_func_end MOD16_021F2964 thumb_func_start MOD16_021F297C MOD16_021F297C: ; 0x021F297C push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 lsl r0, r0, #1 add r1, r4, r0 ldr r0, _021F29AC ; =0x00003124 ldrh r1, [r1, r0] mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} nop _021F29AC: .word 0x00003124 thumb_func_end MOD16_021F297C thumb_func_start MOD16_021F29B0 MOD16_021F29B0: ; 0x021F29B0 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r1, #0xd7 lsl r1, r1, #2 ldr r0, [r4, r1] lsl r0, r0, #4 add r2, r4, r0 add r0, r1, #0 add r0, #0x86 ldrb r0, [r2, r0] str r0, [r4, r1] pop {r4, pc} thumb_func_end MOD16_021F29B0 thumb_func_start MOD16_021F29D0 MOD16_021F29D0: ; 0x021F29D0 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r1, #0xd7 lsl r1, r1, #2 ldr r0, [r4, r1] lsl r0, r0, #4 add r2, r4, r0 add r0, r1, #0 add r0, #0x85 ldrb r0, [r2, r0] str r0, [r4, r1] pop {r4, pc} thumb_func_end MOD16_021F29D0 thumb_func_start MOD16_021F29F0 MOD16_021F29F0: ; 0x021F29F0 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 mov r1, #0xd7 lsl r1, r1, #2 ldr r0, [r4, r1] lsl r0, r0, #4 add r2, r4, r0 add r0, r1, #0 add r0, #0x82 ldrh r0, [r2, r0] str r0, [r4, r1] pop {r4, pc} thumb_func_end MOD16_021F29F0 thumb_func_start MOD16_021F2A10 MOD16_021F2A10: ; 0x021F2A10 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 lsl r1, r0, #1 add r2, r4, r1 ldr r1, _021F2A64 ; =0x0000305C ldrh r1, [r2, r1] cmp r1, #0xb6 beq _021F2A4C cmp r1, #0xc5 beq _021F2A4C cmp r1, #0xcb beq _021F2A4C mov r0, #0xd7 mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} _021F2A4C: mov r1, #0xc0 mul r1, r0 ldr r0, _021F2A68 ; =0x00002DC8 add r1, r4, r1 ldr r0, [r1, r0] lsl r0, r0, #0x13 lsr r1, r0, #0x1e mov r0, #0xd7 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} nop _021F2A64: .word 0x0000305C _021F2A68: .word 0x00002DC8 thumb_func_end MOD16_021F2A10 thumb_func_start MOD16_021F2A6C MOD16_021F2A6C: ; 0x021F2A6C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r2, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD16_021F2C8C pop {r3, r4, r5, pc} thumb_func_end MOD16_021F2A6C thumb_func_start MOD16_021F2A8C MOD16_021F2A8C: ; 0x021F2A8C push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 add r0, r4, #0 bl MOD16_021F2D88 pop {r4, pc} thumb_func_end MOD16_021F2A8C thumb_func_start MOD16_021F2AA8 MOD16_021F2AA8: ; 0x021F2AA8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 add r1, r4, #0 bl MOD16_021F2CC4 cmp r0, #1 beq _021F2ACE mov r1, #0xd9 lsl r1, r1, #2 ldrb r2, [r4, r1] mov r0, #1 orr r0, r2 strb r0, [r4, r1] _021F2ACE: pop {r3, r4, r5, pc} thumb_func_end MOD16_021F2AA8 thumb_func_start MOD16_021F2AD0 MOD16_021F2AD0: ; 0x021F2AD0 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 add r1, r0, #0 cmp r4, #0 beq _021F2AFA cmp r4, #1 beq _021F2B20 cmp r4, #2 beq _021F2B46 pop {r3, r4, r5, pc} _021F2AFA: ldr r2, _021F2B6C ; =0x000003CF mov r3, #0xc0 ldrb r0, [r5, r2] add r2, r2, #1 ldrb r2, [r5, r2] add r4, r0, #0 mul r4, r3 add r0, r5, r4 ldr r4, _021F2B70 ; =0x00002D74 mul r3, r2 add r2, r5, r3 ldrb r0, [r0, r4] ldrb r2, [r2, r4] cmp r0, r2 bls _021F2B6A add r0, r5, #0 bl MOD16_021F2D88 pop {r3, r4, r5, pc} _021F2B20: ldr r2, _021F2B6C ; =0x000003CF mov r3, #0xc0 ldrb r0, [r5, r2] add r2, r2, #1 ldrb r2, [r5, r2] add r4, r0, #0 mul r4, r3 add r0, r5, r4 ldr r4, _021F2B70 ; =0x00002D74 mul r3, r2 add r2, r5, r3 ldrb r0, [r0, r4] ldrb r2, [r2, r4] cmp r0, r2 bhs _021F2B6A add r0, r5, #0 bl MOD16_021F2D88 pop {r3, r4, r5, pc} _021F2B46: ldr r2, _021F2B6C ; =0x000003CF mov r3, #0xc0 ldrb r0, [r5, r2] add r2, r2, #1 ldrb r2, [r5, r2] add r4, r0, #0 mul r4, r3 add r0, r5, r4 ldr r4, _021F2B70 ; =0x00002D74 mul r3, r2 add r2, r5, r3 ldrb r0, [r0, r4] ldrb r2, [r2, r4] cmp r0, r2 bne _021F2B6A add r0, r5, #0 bl MOD16_021F2D88 _021F2B6A: pop {r3, r4, r5, pc} .align 2, 0 _021F2B6C: .word 0x000003CF _021F2B70: .word 0x00002D74 thumb_func_end MOD16_021F2AD0 thumb_func_start MOD16_021F2B74 MOD16_021F2B74: ; 0x021F2B74 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0x3d lsl r0, r0, #4 ldrb r2, [r4, r0] mov r0, #0xc0 mul r0, r2 add r2, r4, r0 ldr r0, _021F2BA8 ; =0x00002DC8 ldr r0, [r2, r0] lsl r0, r0, #0x15 lsr r0, r0, #0x1d beq _021F2BA4 add r0, r4, #0 bl MOD16_021F2D88 _021F2BA4: pop {r4, pc} nop _021F2BA8: .word 0x00002DC8 thumb_func_end MOD16_021F2B74 thumb_func_start MOD16_021F2BAC MOD16_021F2BAC: ; 0x021F2BAC push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 mov r0, #0x3d lsl r0, r0, #4 ldrb r2, [r4, r0] mov r0, #0xc0 mul r0, r2 add r2, r4, r0 ldr r0, _021F2BE0 ; =0x00002DC8 ldr r0, [r2, r0] lsl r0, r0, #0x15 lsr r0, r0, #0x1d bne _021F2BDC add r0, r4, #0 bl MOD16_021F2D88 _021F2BDC: pop {r4, pc} nop _021F2BE0: .word 0x00002DC8 thumb_func_end MOD16_021F2BAC thumb_func_start MOD16_021F2BE4 MOD16_021F2BE4: ; 0x021F2BE4 push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 ldr r2, _021F2C14 ; =0x000003CF add r1, r0, #0 ldrb r0, [r4, r2] add r2, r2, #1 mov r3, #1 ldrb r2, [r4, r2] and r0, r3 and r2, r3 cmp r0, r2 bne _021F2C10 add r0, r4, #0 bl MOD16_021F2D88 _021F2C10: pop {r4, pc} nop _021F2C14: .word 0x000003CF thumb_func_end MOD16_021F2BE4 thumb_func_start MOD16_021F2C18 MOD16_021F2C18: ; 0x021F2C18 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r5, #0 bl MOD16_021F2D54 add r4, r0, #0 add r0, r5, #0 bl MOD16_021F2D54 lsl r1, r4, #0x18 add r6, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 mov r1, #0xc0 mul r1, r0 ldr r0, _021F2C58 ; =0x00002DC8 add r1, r5, r1 ldr r0, [r1, r0] lsr r0, r0, #0x1f beq _021F2C54 add r0, r5, #0 add r1, r6, #0 bl MOD16_021F2D88 _021F2C54: pop {r4, r5, r6, pc} nop _021F2C58: .word 0x00002DC8 thumb_func_end MOD16_021F2C18 thumb_func_start MOD16_021F2C5C MOD16_021F2C5C: ; 0x021F2C5C push {r4, lr} add r4, r1, #0 add r0, r4, #0 mov r1, #1 bl MOD16_021F2D88 add r0, r4, #0 bl MOD16_021F2D54 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl MOD16_021F2D98 add r1, r0, #0 add r0, r4, #0 bl MOD11_02246D1C mov r1, #0xd7 lsl r1, r1, #2 str r0, [r4, r1] pop {r4, pc} .align 2, 0 thumb_func_end MOD16_021F2C5C thumb_func_start MOD16_021F2C8C MOD16_021F2C8C: ; 0x021F2C8C push {r3, r4, r5, lr} add r4, r1, #0 mov r1, #0xf3 lsl r1, r1, #2 ldrb r5, [r4, r1] add r0, r5, #1 strb r0, [r4, r1] ldr r0, _021F2CC0 ; =0x00002138 sub r1, #0x20 ldr r3, [r4, r0] lsl r0, r5, #2 add r0, r4, r0 str r3, [r0, r1] add r0, r4, #0 add r1, r2, #0 bl MOD16_021F2D88 mov r0, #0xf3 lsl r0, r0, #2 ldrb r0, [r4, r0] cmp r0, #8 bls _021F2CBC bl ErrorHandling _021F2CBC: pop {r3, r4, r5, pc} nop _021F2CC0: .word 0x00002138 thumb_func_end MOD16_021F2C8C thumb_func_start MOD16_021F2CC4 MOD16_021F2CC4: ; 0x021F2CC4 mov r0, #0xf3 lsl r0, r0, #2 ldrb r2, [r1, r0] cmp r2, #0 beq _021F2CE4 sub r2, r2, #1 strb r2, [r1, r0] ldrb r2, [r1, r0] sub r0, #0x20 lsl r2, r2, #2 add r2, r1, r2 ldr r2, [r2, r0] ldr r0, _021F2CE8 ; =0x00002138 str r2, [r1, r0] mov r0, #1 bx lr _021F2CE4: mov r0, #0 bx lr .align 2, 0 _021F2CE8: .word 0x00002138 thumb_func_end MOD16_021F2CC4 thumb_func_start MOD16_021F2CEC MOD16_021F2CEC: ; 0x021F2CEC push {r3, r4, r5, r6, r7, lr} mov r2, #0x3d lsl r2, r2, #4 str r1, [sp] ldrb r1, [r1, r2] mov r7, #0x37 lsl r7, r7, #4 mov lr, r1 mov r3, lr lsl r4, r3, #1 ldr r3, [sp] ldr r2, [sp] lsl r1, r1, #3 add r4, r3, r4 ldr r3, _021F2D50 ; =0x0000307C mov r0, #0 add r5, r2, r1 mov ip, r1 ldrh r3, [r4, r3] add r1, r5, #0 add r2, r0, #0 add r6, r7, #0 _021F2D18: ldrh r4, [r1, r6] cmp r3, r4 beq _021F2D4E add r4, r5, r2 ldrh r4, [r4, r7] cmp r4, #0 bne _021F2D44 mov r1, lr lsl r2, r1, #1 ldr r1, [sp] ldr r3, [sp] add r2, r1, r2 ldr r1, _021F2D50 ; =0x0000307C lsl r0, r0, #1 ldrh r1, [r2, r1] mov r2, ip add r2, r3, r2 add r2, r2, r0 mov r0, #0x37 lsl r0, r0, #4 strh r1, [r2, r0] pop {r3, r4, r5, r6, r7, pc} _021F2D44: add r0, r0, #1 add r1, r1, #2 add r2, r2, #2 cmp r0, #4 blt _021F2D18 _021F2D4E: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F2D50: .word 0x0000307C thumb_func_end MOD16_021F2CEC thumb_func_start MOD16_021F2D54 MOD16_021F2D54: ; 0x021F2D54 ldr r1, _021F2D70 ; =0x00002134 add r2, r1, #4 ldr r2, [r0, r2] ldr r3, [r0, r1] lsl r2, r2, #2 ldr r3, [r3, r2] add r2, r1, #4 ldr r2, [r0, r2] add r1, r1, #4 add r2, r2, #1 str r2, [r0, r1] add r0, r3, #0 bx lr nop _021F2D70: .word 0x00002134 thumb_func_end MOD16_021F2D54 thumb_func_start MOD16_021F2D74 MOD16_021F2D74: ; 0x021F2D74 ldr r2, _021F2D84 ; =0x00002134 ldr r3, [r0, r2] add r2, r2, #4 ldr r0, [r0, r2] add r0, r0, r1 lsl r0, r0, #2 ldr r0, [r3, r0] bx lr .align 2, 0 _021F2D84: .word 0x00002134 thumb_func_end MOD16_021F2D74 thumb_func_start MOD16_021F2D88 MOD16_021F2D88: ; 0x021F2D88 ldr r2, _021F2D94 ; =0x00002138 ldr r3, [r0, r2] add r1, r3, r1 str r1, [r0, r2] bx lr nop _021F2D94: .word 0x00002138 thumb_func_end MOD16_021F2D88 thumb_func_start MOD16_021F2D98 MOD16_021F2D98: ; 0x021F2D98 cmp r1, #3 bhi _021F2DB6 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _021F2DA8: ; jump table .short _021F2DB6 - _021F2DA8 - 2 ; case 0 .short _021F2DB0 - _021F2DA8 - 2 ; case 1 .short _021F2DCC - _021F2DA8 - 2 ; case 2 .short _021F2DBE - _021F2DA8 - 2 ; case 3 _021F2DB0: ldr r1, _021F2DDC ; =0x000003CF ldrb r0, [r0, r1] bx lr _021F2DB6: mov r1, #0x3d lsl r1, r1, #4 ldrb r0, [r0, r1] bx lr _021F2DBE: ldr r1, _021F2DDC ; =0x000003CF ldrb r1, [r0, r1] mov r0, #2 eor r0, r1 lsl r0, r0, #0x18 lsr r0, r0, #0x18 bx lr _021F2DCC: mov r1, #0x3d lsl r1, r1, #4 ldrb r1, [r0, r1] mov r0, #2 eor r0, r1 lsl r0, r0, #0x18 lsr r0, r0, #0x18 bx lr .align 2, 0 _021F2DDC: .word 0x000003CF thumb_func_end MOD16_021F2D98 thumb_func_start MOD16_021F2DE0 MOD16_021F2DE0: ; 0x021F2DE0 push {r4, r5, r6, r7, lr} sub sp, #0x2c str r0, [sp, #0x14] ldr r0, [sp, #0x44] ldr r6, [sp, #0x40] str r0, [sp, #0x44] ldr r0, [sp, #0x48] add r7, r1, #0 str r0, [sp, #0x48] ldr r0, [sp, #0x4c] str r2, [sp, #0x18] str r0, [sp, #0x4c] ldr r0, [sp, #0x50] str r3, [sp, #0x1c] str r0, [sp, #0x50] ldr r0, [sp, #0x54] str r0, [sp, #0x54] mov r0, #0 str r0, [sp, #0x24] str r0, [sp, #0x28] _021F2E08: ldr r2, [sp, #0x1c] ldr r3, _021F2ED4 ; =0x000003DE ldrh r2, [r2] ldr r1, _021F2ED8 ; =0x021FF7F4 mov r0, #0 mov ip, r2 lsl r2, r2, #4 add r2, r7, r2 ldrh r3, [r2, r3] str r2, [sp, #0x20] ldr r2, _021F2EDC ; =0x0000FFFF _021F2E1E: ldrh r4, [r1] cmp r4, r3 beq _021F2E2E add r1, r1, #2 ldrh r4, [r1] add r0, r0, #1 cmp r4, r2 bne _021F2E1E _021F2E2E: ldr r2, _021F2EE0 ; =0x021FF7DC ldr r4, _021F2EDC ; =0x0000FFFF mov r1, #0 _021F2E34: ldrh r5, [r2] cmp r5, r3 beq _021F2E44 add r2, r2, #2 ldrh r5, [r2] add r1, r1, #1 cmp r5, r4 bne _021F2E34 _021F2E44: lsl r2, r1, #1 ldr r1, _021F2EE0 ; =0x021FF7DC ldrh r1, [r1, r2] ldr r2, _021F2EDC ; =0x0000FFFF cmp r1, r2 bne _021F2E6A mov r1, ip cmp r1, #0 beq _021F2EA0 lsl r1, r0, #1 ldr r0, _021F2ED8 ; =0x021FF7F4 ldrh r0, [r0, r1] cmp r0, r2 bne _021F2EA0 ldr r1, _021F2EE4 ; =0x000003E1 ldr r0, [sp, #0x20] ldrb r0, [r0, r1] cmp r0, #1 bls _021F2EA0 _021F2E6A: ldr r0, [sp, #0x54] cmp r0, #1 bne _021F2E7C ldr r0, [sp, #0x28] add r1, r7, r0 mov r0, #0xdb lsl r0, r0, #2 ldrb r0, [r1, r0] b _021F2E7E _021F2E7C: mov r0, #0x64 _021F2E7E: ldr r1, [sp, #0x48] mov r2, ip str r1, [sp] ldr r1, [sp, #0x18] str r1, [sp, #4] ldr r1, [sp, #0x4c] str r1, [sp, #8] ldr r1, [sp, #0x50] str r1, [sp, #0xc] str r0, [sp, #0x10] ldr r0, [sp, #0x14] ldr r3, [sp, #0x44] add r1, r7, #0 bl MOD16_021F2EE8 str r0, [r6] b _021F2EA4 _021F2EA0: mov r0, #0 str r0, [r6] _021F2EA4: ldr r0, [sp, #0x1c] add r6, r6, #4 add r0, r0, #2 str r0, [sp, #0x1c] ldr r0, [sp, #0x28] add r0, r0, #1 str r0, [sp, #0x28] cmp r0, #4 blt _021F2E08 ldr r2, [sp, #0x40] mov r3, #0 _021F2EBA: ldr r1, [r2] ldr r0, [sp, #0x24] cmp r0, r1 bge _021F2EC4 str r1, [sp, #0x24] _021F2EC4: add r3, r3, #1 add r2, r2, #4 cmp r3, #4 blt _021F2EBA ldr r0, [sp, #0x24] add sp, #0x2c pop {r4, r5, r6, r7, pc} nop _021F2ED4: .word 0x000003DE _021F2ED8: .word 0x021FF7F4 _021F2EDC: .word 0x0000FFFF _021F2EE0: .word 0x021FF7DC _021F2EE4: .word 0x000003E1 thumb_func_end MOD16_021F2DE0 thumb_func_start MOD16_021F2EE8 MOD16_021F2EE8: ; 0x021F2EE8 push {r4, r5, r6, r7, lr} sub sp, #0x4c add r6, r1, #0 ldr r1, [sp, #0x60] str r3, [sp, #0x1c] str r1, [sp, #0x60] ldr r1, [sp, #0x64] str r0, [sp, #0x18] str r1, [sp, #0x64] mov r1, #0x3d lsl r1, r1, #4 ldrb r1, [r6, r1] add r5, r2, #0 bl MOD11_02230270 mov r4, #0 str r0, [sp, #0x28] add r0, r4, #0 add r7, r4, #0 str r4, [sp, #0x20] str r0, [sp, #0x48] cmp r5, #0xd8 bgt _021F2F4E blt _021F2F1A b _021F3156 _021F2F1A: cmp r5, #0x52 bgt _021F2F3C blt _021F2F22 b _021F311C _021F2F22: cmp r5, #0x31 bgt _021F2F2C bne _021F2F2A b _021F31CE _021F2F2A: b _021F3210 _021F2F2C: cmp r5, #0x45 bgt _021F2F3A cmp r5, #0x43 blt _021F2F3A beq _021F2F84 cmp r5, #0x45 beq _021F2F42 _021F2F3A: b _021F3210 _021F2F3C: cmp r5, #0x65 bgt _021F2F46 bne _021F2F44 _021F2F42: b _021F3122 _021F2F44: b _021F3210 _021F2F46: cmp r5, #0x95 bne _021F2F4C b _021F3132 _021F2F4C: b _021F3210 _021F2F4E: mov r0, #0x5a lsl r0, r0, #2 cmp r5, r0 bgt _021F2F74 blt _021F2F5A b _021F30F2 _021F2F5A: cmp r5, #0xde bgt _021F2F6E cmp r5, #0xda blt _021F2F6C bne _021F2F66 b _021F3170 _021F2F66: cmp r5, #0xde bne _021F2F6C b _021F318E _021F2F6C: b _021F3210 _021F2F6E: cmp r5, #0xed beq _021F304C b _021F3210 _021F2F74: add r1, r0, #0 add r1, #0x57 cmp r5, r1 bgt _021F2F8E add r1, r0, #0 add r1, #0x57 cmp r5, r1 blt _021F2F86 _021F2F84: b _021F31D4 _021F2F86: add r0, r0, #3 cmp r5, r0 beq _021F2F96 b _021F3210 _021F2F8E: add r0, #0x59 cmp r5, r0 beq _021F2FBE b _021F3210 _021F2F96: ldr r0, [sp, #0x68] cmp r0, #0x67 beq _021F2FCA ldr r0, [sp, #0x6c] cmp r0, #0 bne _021F2FCA ldr r1, [sp, #0x1c] add r0, r6, #0 mov r2, #0xb bl MOD11_0224C12C add r4, r0, #0 beq _021F2FCA ldr r1, [sp, #0x1c] add r0, r6, #0 mov r2, #0xc bl MOD11_0224C12C add r7, r0, #0 b _021F3214 _021F2FBE: ldr r0, [sp, #0x68] cmp r0, #0x67 beq _021F2FCA ldr r0, [sp, #0x6c] cmp r0, #0 beq _021F2FCC _021F2FCA: b _021F3214 _021F2FCC: ldr r1, [sp, #0x1c] add r0, r6, #0 mov r2, #1 bl MOD11_0224C12C sub r0, #0x7d cmp r0, #0xf bhi _021F3048 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021F2FE8: ; jump table .short _021F3028 - _021F2FE8 - 2 ; case 0 .short _021F302C - _021F2FE8 - 2 ; case 1 .short _021F3034 - _021F2FE8 - 2 ; case 2 .short _021F3030 - _021F2FE8 - 2 ; case 3 .short _021F303C - _021F2FE8 - 2 ; case 4 .short _021F3008 - _021F2FE8 - 2 ; case 5 .short _021F3010 - _021F2FE8 - 2 ; case 6 .short _021F3014 - _021F2FE8 - 2 ; case 7 .short _021F300C - _021F2FE8 - 2 ; case 8 .short _021F3038 - _021F2FE8 - 2 ; case 9 .short _021F301C - _021F2FE8 - 2 ; case 10 .short _021F3018 - _021F2FE8 - 2 ; case 11 .short _021F3020 - _021F2FE8 - 2 ; case 12 .short _021F3040 - _021F2FE8 - 2 ; case 13 .short _021F3044 - _021F2FE8 - 2 ; case 14 .short _021F3024 - _021F2FE8 - 2 ; case 15 _021F3008: mov r7, #1 b _021F3214 _021F300C: mov r7, #2 b _021F3214 _021F3010: mov r7, #3 b _021F3214 _021F3014: mov r7, #4 b _021F3214 _021F3018: mov r7, #5 b _021F3214 _021F301C: mov r7, #6 b _021F3214 _021F3020: mov r7, #7 b _021F3214 _021F3024: mov r7, #8 b _021F3214 _021F3028: mov r7, #0xa b _021F3214 _021F302C: mov r7, #0xb b _021F3214 _021F3030: mov r7, #0xc b _021F3214 _021F3034: mov r7, #0xd b _021F3214 _021F3038: mov r7, #0xe b _021F3214 _021F303C: mov r7, #0xf b _021F3214 _021F3040: mov r7, #0x10 b _021F3214 _021F3044: mov r7, #0x11 b _021F3214 _021F3048: mov r7, #0 b _021F3214 _021F304C: ldr r0, [sp, #0x60] ldr r1, [sp, #0x60] ldrb r0, [r0, #1] ldrb r3, [r1, #4] ldrb r1, [r1, #5] str r0, [sp, #0x2c] ldr r0, [sp, #0x60] str r1, [sp, #0x34] ldrb r0, [r0] lsl r1, r1, #0x1f lsr r1, r1, #0x1a str r0, [sp, #0x30] ldr r0, [sp, #0x60] str r1, [sp, #0x38] ldrb r2, [r0, #2] lsl r1, r3, #0x1f lsr r1, r1, #0x1b ldrb r0, [r0, #3] str r1, [sp, #0x3c] mov r4, #1 lsl r1, r0, #0x1f lsr r1, r1, #0x1c str r1, [sp, #0x40] lsl r1, r2, #0x1f lsr r7, r1, #0x1d ldr r1, [sp, #0x30] and r1, r4 ldr r4, [sp, #0x2c] lsl r4, r4, #0x1f lsr r4, r4, #0x1e orr r1, r4 add r4, r7, #0 orr r4, r1 ldr r1, [sp, #0x40] orr r4, r1 ldr r1, [sp, #0x3c] orr r4, r1 ldr r1, [sp, #0x38] orr r1, r4 str r1, [sp, #0x24] mov r1, #2 ldr r4, [sp, #0x34] and r3, r1 and r4, r1 lsl r4, r4, #4 str r4, [sp, #0x44] and r0, r1 lsl r4, r3, #3 lsl r3, r0, #2 add r0, r2, #0 and r0, r1 lsl r2, r0, #1 ldr r0, [sp, #0x30] and r0, r1 asr r7, r0, #1 ldr r0, [sp, #0x2c] and r0, r1 orr r0, r7 orr r0, r2 orr r0, r3 add r1, r4, #0 orr r1, r0 ldr r0, [sp, #0x44] orr r1, r0 mov r0, #0x28 mul r0, r1 mov r1, #0x3f bl _s32_div_f add r4, r0, #0 ldr r1, [sp, #0x24] mov r0, #0xf mul r0, r1 mov r1, #0x3f add r4, #0x1e bl _s32_div_f add r7, r0, #1 cmp r7, #9 bge _021F30EE b _021F3214 _021F30EE: add r7, r7, #1 b _021F3214 _021F30F2: mov r0, #0x3d lsl r0, r0, #4 ldrb r0, [r6, r0] ldr r2, _021F32B4 ; =0x000021F0 lsl r0, r0, #2 add r0, r6, r0 ldr r1, [r0, r2] mov r0, #0x19 mul r0, r1 ldr r1, [sp, #0x64] lsl r1, r1, #2 add r1, r6, r1 ldr r1, [r1, r2] bl _u32_div_f add r4, r0, #1 cmp r4, #0x96 ble _021F3118 mov r4, #0x96 _021F3118: mov r7, #0 b _021F3214 _021F311C: mov r0, #0x28 str r0, [sp, #0x20] b _021F3214 _021F3122: ldr r0, [sp, #0x64] mov r1, #0xc0 mul r1, r0 ldr r0, _021F32B8 ; =0x00002D74 add r1, r6, r1 ldrb r0, [r1, r0] str r0, [sp, #0x20] b _021F3214 _021F3132: bl FUN_0201B9EC mov r1, #0xb bl _s32_div_f ldr r0, [sp, #0x64] mov r2, #0xc0 mul r2, r0 ldr r0, _021F32B8 ; =0x00002D74 add r2, r6, r2 ldrb r2, [r2, r0] add r0, r1, #5 mov r1, #0xa mul r0, r2 bl _s32_div_f str r0, [sp, #0x20] b _021F3214 _021F3156: ldr r0, [sp, #0x64] mov r1, #0xc0 mul r1, r0 ldr r0, _021F32BC ; =0x00002D75 add r1, r6, r1 ldrb r1, [r1, r0] mov r0, #0xa mul r0, r1 mov r1, #0x19 bl _s32_div_f add r4, r0, #0 b _021F3214 _021F3170: ldr r0, [sp, #0x64] mov r1, #0xc0 mul r1, r0 ldr r0, _021F32BC ; =0x00002D75 add r1, r6, r1 ldrb r1, [r1, r0] mov r0, #0xff sub r1, r0, r1 mov r0, #0xa mul r0, r1 mov r1, #0x19 bl _s32_div_f add r4, r0, #0 b _021F3214 _021F318E: bl FUN_0201B9EC mov r1, #0x64 bl _s32_div_f cmp r1, #5 bge _021F31A0 mov r4, #0xa b _021F31CA _021F31A0: cmp r1, #0xf bge _021F31A8 mov r4, #0x1e b _021F31CA _021F31A8: cmp r1, #0x23 bge _021F31B0 mov r4, #0x32 b _021F31CA _021F31B0: cmp r1, #0x41 bge _021F31B8 mov r4, #0x46 b _021F31CA _021F31B8: cmp r1, #0x55 bge _021F31C0 mov r4, #0x5a b _021F31CA _021F31C0: cmp r1, #0x5f bge _021F31C8 mov r4, #0x6e b _021F31CA _021F31C8: mov r4, #0x96 _021F31CA: mov r7, #0 b _021F3214 _021F31CE: mov r0, #0x14 str r0, [sp, #0x20] b _021F3214 _021F31D4: mov r2, #0x3d lsl r2, r2, #4 ldrb r3, [r6, r2] mov r2, #0xc0 ldr r1, _021F32C0 ; =0x021FF7C4 mul r2, r3 add r3, r6, r2 ldr r2, _021F32C4 ; =0x00002D60 ldr r4, _021F32C8 ; =0x0000FFFF ldr r2, [r3, r2] mov r0, #0 _021F31EA: ldrh r3, [r1] cmp r3, r2 bge _021F31FA add r1, r1, #4 ldrh r3, [r1] add r0, r0, #1 cmp r3, r4 bne _021F31EA _021F31FA: ldr r1, _021F32C0 ; =0x021FF7C4 lsl r0, r0, #2 ldrh r2, [r1, r0] ldr r1, _021F32C8 ; =0x0000FFFF cmp r2, r1 beq _021F320C ldr r1, _021F32CC ; =0x021FF7C6 ldrh r4, [r1, r0] b _021F3214 _021F320C: mov r4, #0x78 b _021F3214 _021F3210: mov r4, #0 add r7, r4, #0 _021F3214: ldr r0, [sp, #0x20] cmp r0, #0 bne _021F325E mov r0, #6 lsl r0, r0, #6 mov ip, r0 ldr r0, [r6, r0] ldr r3, [sp, #0x28] str r0, [sp] lsl r0, r4, #0x10 lsr r0, r0, #0x10 str r0, [sp, #4] lsl r0, r7, #0x18 lsr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [sp, #0x64] lsl r3, r3, #2 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0xc] mov r0, #0x3d lsl r0, r0, #4 ldrb r0, [r6, r0] add r4, r6, r3 mov r3, ip str r0, [sp, #0x10] mov r0, #1 str r0, [sp, #0x14] add r3, #0x3c ldr r0, [sp, #0x18] ldr r3, [r4, r3] add r1, r6, #0 add r2, r5, #0 bl MOD11_0224B310 str r0, [sp, #0x20] b _021F326A _021F325E: ldr r1, _021F32D0 ; =0x0000213C mov r0, #2 ldr r2, [r6, r1] lsl r0, r0, #0xa orr r0, r2 str r0, [r6, r1] _021F326A: ldr r0, [sp, #0x64] add r1, r6, #0 str r0, [sp] mov r0, #0x3d lsl r0, r0, #4 ldrb r0, [r6, r0] add r2, r5, #0 add r3, r7, #0 str r0, [sp, #4] ldr r0, [sp, #0x20] str r0, [sp, #8] add r0, sp, #0x48 str r0, [sp, #0xc] ldr r0, [sp, #0x18] bl MOD11_02246274 ldr r2, _021F32D0 ; =0x0000213C ldr r1, _021F32D4 ; =0xFFFFF7FF ldr r3, [r6, r2] and r1, r3 str r1, [r6, r2] ldr r2, [sp, #0x48] ldr r1, _021F32D8 ; =0x00140808 tst r1, r2 beq _021F32A2 add sp, #0x4c mov r0, #0 pop {r4, r5, r6, r7, pc} _021F32A2: add r1, sp, #0x70 ldrb r1, [r1] mul r1, r0 add r0, r1, #0 mov r1, #0x64 bl MOD11_022476C0 add sp, #0x4c pop {r4, r5, r6, r7, pc} .align 2, 0 _021F32B4: .word 0x000021F0 _021F32B8: .word 0x00002D74 _021F32BC: .word 0x00002D75 _021F32C0: .word 0x021FF7C4 _021F32C4: .word 0x00002D60 _021F32C8: .word 0x0000FFFF _021F32CC: .word 0x021FF7C6 _021F32D0: .word 0x0000213C _021F32D4: .word 0xFFFFF7FF _021F32D8: .word 0x00140808 thumb_func_end MOD16_021F2EE8 thumb_func_start MOD16_021F32DC MOD16_021F32DC: ; 0x021F32DC push {r3, r4, r5, r6, r7, lr} add r6, r2, #0 ldr r2, _021F3448 ; =0x00000137 add r7, r0, #0 add r4, r1, #0 cmp r3, r2 bgt _021F32F4 blt _021F32EE b _021F33F0 _021F32EE: cmp r3, #0xed beq _021F3396 b _021F3442 _021F32F4: add r0, r2, #0 add r0, #0x34 cmp r3, r0 bgt _021F3304 add r2, #0x34 cmp r3, r2 beq _021F330C b _021F3442 _021F3304: add r2, #0x8a cmp r3, r2 beq _021F3318 b _021F3442 _021F330C: add r0, r4, #0 add r1, r6, #0 bl MOD11_02249E04 add r5, r0, #0 b _021F3444 _021F3318: add r0, r4, #0 add r1, r6, #0 bl MOD11_02249D90 sub r0, #0x7d cmp r0, #0xf bhi _021F3392 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021F3332: ; jump table .short _021F3372 - _021F3332 - 2 ; case 0 .short _021F3376 - _021F3332 - 2 ; case 1 .short _021F337E - _021F3332 - 2 ; case 2 .short _021F337A - _021F3332 - 2 ; case 3 .short _021F3386 - _021F3332 - 2 ; case 4 .short _021F3352 - _021F3332 - 2 ; case 5 .short _021F335A - _021F3332 - 2 ; case 6 .short _021F335E - _021F3332 - 2 ; case 7 .short _021F3356 - _021F3332 - 2 ; case 8 .short _021F3382 - _021F3332 - 2 ; case 9 .short _021F3366 - _021F3332 - 2 ; case 10 .short _021F3362 - _021F3332 - 2 ; case 11 .short _021F336A - _021F3332 - 2 ; case 12 .short _021F338A - _021F3332 - 2 ; case 13 .short _021F338E - _021F3332 - 2 ; case 14 .short _021F336E - _021F3332 - 2 ; case 15 _021F3352: mov r5, #1 b _021F3444 _021F3356: mov r5, #2 b _021F3444 _021F335A: mov r5, #3 b _021F3444 _021F335E: mov r5, #4 b _021F3444 _021F3362: mov r5, #5 b _021F3444 _021F3366: mov r5, #6 b _021F3444 _021F336A: mov r5, #7 b _021F3444 _021F336E: mov r5, #8 b _021F3444 _021F3372: mov r5, #0xa b _021F3444 _021F3376: mov r5, #0xb b _021F3444 _021F337A: mov r5, #0xc b _021F3444 _021F337E: mov r5, #0xd b _021F3444 _021F3382: mov r5, #0xe b _021F3444 _021F3386: mov r5, #0xf b _021F3444 _021F338A: mov r5, #0x10 b _021F3444 _021F338E: mov r5, #0x11 b _021F3444 _021F3392: mov r5, #0 b _021F3444 _021F3396: ldr r0, _021F344C ; =0x00002D54 add r1, r4, r0 mov r0, #0xc0 mul r0, r6 ldr r4, [r1, r0] lsl r0, r4, #2 lsr r0, r0, #0x1b lsl r0, r0, #0x1f lsr r5, r0, #0x1a lsl r0, r4, #7 lsr r0, r0, #0x1b lsl r0, r0, #0x1f lsr r3, r0, #0x1b lsl r0, r4, #0xc lsr r0, r0, #0x1b lsl r0, r0, #0x1f lsr r2, r0, #0x1c lsl r0, r4, #0x11 lsr r0, r0, #0x1b lsl r0, r0, #0x1f lsr r1, r0, #0x1d lsl r0, r4, #0x1b lsl r4, r4, #0x16 lsr r4, r4, #0x1b lsr r6, r0, #0x1b mov r0, #1 lsl r4, r4, #0x1f and r0, r6 lsr r4, r4, #0x1e orr r0, r4 orr r0, r1 orr r0, r2 orr r0, r3 add r1, r5, #0 orr r1, r0 mov r0, #0xf mul r0, r1 mov r1, #0x3f bl _s32_div_f add r5, r0, #1 cmp r5, #9 blt _021F3444 add r5, r5, #1 b _021F3444 _021F33F0: mov r2, #0xd str r2, [sp] mov r2, #8 mov r3, #0 bl MOD11_02246870 cmp r0, #0 bne _021F3444 mov r0, #0x4c str r0, [sp] add r0, r7, #0 add r1, r4, #0 mov r2, #8 mov r3, #0 bl MOD11_02246870 cmp r0, #0 bne _021F3444 mov r0, #6 lsl r0, r0, #6 ldr r0, [r4, r0] ldr r1, _021F3450 ; =0x000080FF tst r1, r0 beq _021F3444 mov r1, #3 tst r1, r0 beq _021F3428 mov r5, #0xb _021F3428: mov r1, #0xc tst r1, r0 beq _021F3430 mov r5, #5 _021F3430: mov r1, #0x30 tst r1, r0 beq _021F3438 mov r5, #0xa _021F3438: mov r1, #0xc0 tst r0, r1 beq _021F3444 mov r5, #0xf b _021F3444 _021F3442: mov r5, #0 _021F3444: add r0, r5, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F3448: .word 0x00000137 _021F344C: .word 0x00002D54 _021F3450: .word 0x000080FF thumb_func_end MOD16_021F32DC thumb_func_start MOD16_021F3454 MOD16_021F3454: ; 0x021F3454 push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r2, #0 ldr r2, _021F360C ; =0x00000137 add r7, r0, #0 add r6, r1, #0 cmp r3, r2 bgt _021F346E blt _021F3468 b _021F35B2 _021F3468: cmp r3, #0xed beq _021F3530 b _021F3604 _021F346E: add r0, r2, #0 add r0, #0x34 cmp r3, r0 bgt _021F347E add r2, #0x34 cmp r3, r2 beq _021F3486 b _021F3604 _021F347E: add r2, #0x8a cmp r3, r2 beq _021F34A2 b _021F3604 _021F3486: add r0, r4, #0 mov r1, #6 mov r2, #0 bl FUN_020671BC add r1, r0, #0 lsl r1, r1, #0x10 add r0, r6, #0 lsr r1, r1, #0x10 mov r2, #0xc bl MOD11_0224C12C add r5, r0, #0 b _021F3606 _021F34A2: add r0, r4, #0 mov r1, #6 mov r2, #0 bl FUN_020671BC add r1, r0, #0 lsl r1, r1, #0x10 add r0, r6, #0 lsr r1, r1, #0x10 mov r2, #1 bl MOD11_0224C12C sub r0, #0x7d cmp r0, #0xf bhi _021F352C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _021F34CC: ; jump table .short _021F350C - _021F34CC - 2 ; case 0 .short _021F3510 - _021F34CC - 2 ; case 1 .short _021F3518 - _021F34CC - 2 ; case 2 .short _021F3514 - _021F34CC - 2 ; case 3 .short _021F3520 - _021F34CC - 2 ; case 4 .short _021F34EC - _021F34CC - 2 ; case 5 .short _021F34F4 - _021F34CC - 2 ; case 6 .short _021F34F8 - _021F34CC - 2 ; case 7 .short _021F34F0 - _021F34CC - 2 ; case 8 .short _021F351C - _021F34CC - 2 ; case 9 .short _021F3500 - _021F34CC - 2 ; case 10 .short _021F34FC - _021F34CC - 2 ; case 11 .short _021F3504 - _021F34CC - 2 ; case 12 .short _021F3524 - _021F34CC - 2 ; case 13 .short _021F3528 - _021F34CC - 2 ; case 14 .short _021F3508 - _021F34CC - 2 ; case 15 _021F34EC: mov r5, #1 b _021F3606 _021F34F0: mov r5, #2 b _021F3606 _021F34F4: mov r5, #3 b _021F3606 _021F34F8: mov r5, #4 b _021F3606 _021F34FC: mov r5, #5 b _021F3606 _021F3500: mov r5, #6 b _021F3606 _021F3504: mov r5, #7 b _021F3606 _021F3508: mov r5, #8 b _021F3606 _021F350C: mov r5, #0xa b _021F3606 _021F3510: mov r5, #0xb b _021F3606 _021F3514: mov r5, #0xc b _021F3606 _021F3518: mov r5, #0xd b _021F3606 _021F351C: mov r5, #0xe b _021F3606 _021F3520: mov r5, #0xf b _021F3606 _021F3524: mov r5, #0x10 b _021F3606 _021F3528: mov r5, #0x11 b _021F3606 _021F352C: mov r5, #0 b _021F3606 _021F3530: add r0, r4, #0 mov r1, #0x4b mov r2, #0 bl FUN_020671BC add r5, r0, #0 add r0, r4, #0 mov r1, #0x4a mov r2, #0 bl FUN_020671BC add r6, r0, #0 add r0, r4, #0 mov r1, #0x49 mov r2, #0 bl FUN_020671BC add r7, r0, #0 add r0, r4, #0 mov r1, #0x48 mov r2, #0 bl FUN_020671BC str r0, [sp, #4] add r0, r4, #0 mov r1, #0x46 mov r2, #0 bl FUN_020671BC str r0, [sp, #8] add r0, r4, #0 mov r1, #0x47 mov r2, #0 bl FUN_020671BC add r1, r0, #0 lsl r2, r6, #0x1f lsl r0, r5, #0x1f lsr r5, r2, #0x1b lsl r2, r7, #0x1f lsr r4, r2, #0x1c ldr r2, [sp, #4] lsl r1, r1, #0x1f lsl r2, r2, #0x1f lsr r3, r2, #0x1d ldr r2, [sp, #8] mov r6, #1 and r2, r6 lsr r1, r1, #0x1e orr r1, r2 orr r1, r3 orr r1, r4 lsr r0, r0, #0x1a orr r1, r5 orr r1, r0 mov r0, #0xf mul r0, r1 mov r1, #0x3f bl _s32_div_f add r5, r0, #1 cmp r5, #9 blt _021F3606 add r5, r5, #1 b _021F3606 _021F35B2: mov r2, #0xd str r2, [sp] mov r2, #8 mov r3, #0 bl MOD11_02246870 cmp r0, #0 bne _021F3606 mov r0, #0x4c str r0, [sp] add r0, r7, #0 add r1, r6, #0 mov r2, #8 mov r3, #0 bl MOD11_02246870 cmp r0, #0 bne _021F3606 mov r0, #6 lsl r0, r0, #6 ldr r0, [r6, r0] ldr r1, _021F3610 ; =0x000080FF tst r1, r0 beq _021F3606 mov r1, #3 tst r1, r0 beq _021F35EA mov r5, #0xb _021F35EA: mov r1, #0xc tst r1, r0 beq _021F35F2 mov r5, #5 _021F35F2: mov r1, #0x30 tst r1, r0 beq _021F35FA mov r5, #0xa _021F35FA: mov r1, #0xc0 tst r0, r1 beq _021F3606 mov r5, #0xf b _021F3606 _021F3604: mov r5, #0 _021F3606: add r0, r5, #0 add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _021F360C: .word 0x00000137 _021F3610: .word 0x000080FF thumb_func_end MOD16_021F3454 thumb_func_start MOD16_021F3614 MOD16_021F3614: ; 0x021F3614 push {r4, r5} mov r2, #0xc0 mul r2, r1 add r5, r0, r2 mov r2, #0xb7 lsl r2, r2, #6 ldr r4, [r5, r2] mov r3, #0x20 tst r3, r4 beq _021F3640 add r2, #8 ldr r2, [r5, r2] lsl r2, r2, #0x11 lsr r2, r2, #0x1e bne _021F3640 add r1, r0, r1 ldr r0, _021F3648 ; =0x000021A4 mov r2, #6 strb r2, [r1, r0] mov r0, #1 pop {r4, r5} bx lr _021F3640: mov r0, #0 pop {r4, r5} bx lr nop _021F3648: .word 0x000021A4 thumb_func_end MOD16_021F3614 thumb_func_start MOD16_021F364C MOD16_021F364C: ; 0x021F364C push {r4, r5, r6, r7, lr} sub sp, #0x44 str r0, [sp, #0x14] add r5, r1, #0 str r2, [sp, #0x18] bl FUN_0222FF74 mov r1, #2 tst r0, r1 beq _021F3666 add sp, #0x44 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F3666: ldr r0, [sp, #0x18] mov r1, #1 add r4, r0, #0 eor r4, r1 mov r1, #0xc0 add r0, r4, #0 mul r0, r1 add r2, r5, r0 ldr r0, _021F37FC ; =0x00002D67 ldrb r0, [r2, r0] cmp r0, #0x19 bne _021F36E4 mov r0, #0 str r0, [sp, #0x28] ldr r0, [sp, #0x18] mul r1, r0 add r6, r5, r1 _021F3688: ldr r0, _021F3800 ; =0x00002D4C ldr r2, [sp, #0x18] ldrh r7, [r6, r0] ldr r0, [sp, #0x14] add r1, r5, #0 add r3, r7, #0 bl MOD16_021F32DC add r3, r0, #0 cmp r7, #0 beq _021F36C8 mov r0, #0 str r0, [sp, #0x40] ldr r0, [sp, #0x18] add r1, r5, #0 str r0, [sp] str r4, [sp, #4] mov r0, #0 str r0, [sp, #8] add r0, sp, #0x40 str r0, [sp, #0xc] ldr r0, [sp, #0x14] add r2, r7, #0 bl MOD11_02246274 ldr r1, [sp, #0x40] mov r0, #2 tst r0, r1 beq _021F36C8 add sp, #0x44 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F36C8: ldr r0, [sp, #0x28] add r6, r6, #2 add r0, r0, #1 str r0, [sp, #0x28] cmp r0, #4 blt _021F3688 mov r0, #0 str r0, [sp, #0x20] ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] bl MOD11_0222FFC8 cmp r0, #0 bgt _021F36E6 _021F36E4: b _021F37F4 _021F36E6: ldr r0, [sp, #0x18] add r0, r5, r0 str r0, [sp, #0x24] _021F36EC: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] ldr r2, [sp, #0x20] bl FUN_02230014 mov r1, #0xa2 mov r2, #0 add r6, r0, #0 bl FUN_020671BC cmp r0, #0 beq _021F37DE add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F37DE add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F3804 ; =0x000001EE cmp r0, r1 beq _021F37DE ldr r1, _021F3808 ; =0x0000219C ldr r0, [sp, #0x24] ldrb r1, [r0, r1] ldr r0, [sp, #0x20] cmp r0, r1 beq _021F37DE mov r7, #0 _021F3730: add r1, r7, #0 add r0, r6, #0 add r1, #0x36 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x1c] ldr r0, [sp, #0x14] ldr r3, [sp, #0x1c] add r1, r5, #0 add r2, r6, #0 bl MOD16_021F3454 str r0, [sp, #0x2c] ldr r0, [sp, #0x1c] cmp r0, #0 beq _021F37D8 mov r0, #0 str r0, [sp, #0x40] add r0, r6, #0 mov r1, #0xa mov r2, #0 bl FUN_020671BC str r0, [sp, #0x30] add r0, r5, #0 add r1, r4, #0 bl MOD11_02246D1C str r0, [sp, #0x34] add r0, r5, #0 add r1, r4, #0 bl MOD11_02249D90 str r0, [sp, #0x38] add r0, r5, #0 add r1, r4, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 str r0, [sp, #0x3c] add r0, r5, #0 add r1, r4, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 ldr r1, [sp, #0x34] ldr r2, [sp, #0x2c] str r1, [sp] ldr r1, [sp, #0x38] ldr r3, [sp, #0x30] str r1, [sp, #4] ldr r1, [sp, #0x3c] str r1, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0x40 str r0, [sp, #0x10] ldr r1, [sp, #0x1c] add r0, r5, #0 bl MOD11_022465A0 ldr r1, [sp, #0x40] mov r0, #2 tst r0, r1 beq _021F37D8 bl FUN_0201B9EC mov r1, #3 bl _s32_div_f cmp r1, #2 bge _021F37D8 ldr r0, [sp, #0x18] ldr r1, _021F380C ; =0x000021A4 add r2, r5, r0 ldr r0, [sp, #0x20] add sp, #0x44 strb r0, [r2, r1] mov r0, #1 pop {r4, r5, r6, r7, pc} _021F37D8: add r7, r7, #1 cmp r7, #4 blt _021F3730 _021F37DE: ldr r0, [sp, #0x20] ldr r1, [sp, #0x18] add r0, r0, #1 str r0, [sp, #0x20] ldr r0, [sp, #0x14] bl MOD11_0222FFC8 ldr r1, [sp, #0x20] cmp r1, r0 bge _021F37F4 b _021F36EC _021F37F4: mov r0, #0 add sp, #0x44 pop {r4, r5, r6, r7, pc} nop _021F37FC: .word 0x00002D67 _021F3800: .word 0x00002D4C _021F3804: .word 0x000001EE _021F3808: .word 0x0000219C _021F380C: .word 0x000021A4 thumb_func_end MOD16_021F364C thumb_func_start MOD16_021F3810 MOD16_021F3810: ; 0x021F3810 push {r4, r5, r6, r7, lr} sub sp, #0xb4 str r0, [sp, #0x14] add r5, r1, #0 str r2, [sp, #0x18] bl FUN_0222FF74 mov r4, #2 tst r0, r4 beq _021F3828 mov r6, #0 b _021F382C _021F3828: mov r6, #0 add r4, r6, #0 _021F382C: mov r0, #0 str r0, [sp, #0x54] str r0, [sp, #0x6c] ldr r0, [sp, #0x18] mov r1, #0xc0 add r2, r0, #0 mul r2, r1 add r0, r5, r2 str r0, [sp, #0x3c] add r0, r6, #0 mul r0, r1 add r0, r5, r0 str r0, [sp, #0x38] add r0, r4, #0 mul r0, r1 add r0, r5, r0 str r0, [sp, #0x34] _021F384E: ldr r1, [sp, #0x3c] ldr r0, _021F3B78 ; =0x00002D4C ldr r2, [sp, #0x18] ldrh r7, [r1, r0] ldr r0, [sp, #0x14] add r1, r5, #0 add r3, r7, #0 bl MOD16_021F32DC str r0, [sp, #0x5c] cmp r7, #0 beq _021F38E4 lsl r0, r7, #4 add r1, r5, r0 ldr r0, _021F3B7C ; =0x000003E1 ldrb r0, [r1, r0] cmp r0, #0 beq _021F38E4 ldr r0, [sp, #0x54] ldr r1, [sp, #0x38] add r0, r0, #1 str r0, [sp, #0x54] mov r0, #0 str r0, [sp, #0xb0] ldr r0, _021F3B80 ; =0x00002D8C ldr r0, [r1, r0] cmp r0, #0 beq _021F38A0 ldr r0, [sp, #0x18] ldr r3, [sp, #0x5c] str r0, [sp] str r6, [sp, #4] mov r0, #0 str r0, [sp, #8] add r0, sp, #0xb0 str r0, [sp, #0xc] ldr r0, [sp, #0x14] add r1, r5, #0 add r2, r7, #0 bl MOD11_02246274 _021F38A0: ldr r1, [sp, #0xb0] mov r0, #8 tst r0, r1 bne _021F38AE add sp, #0xb4 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F38AE: mov r0, #0 str r0, [sp, #0xb0] ldr r1, [sp, #0x34] ldr r0, _021F3B80 ; =0x00002D8C ldr r0, [r1, r0] cmp r0, #0 beq _021F38D6 ldr r0, [sp, #0x18] ldr r3, [sp, #0x5c] str r0, [sp] str r4, [sp, #4] mov r0, #0 str r0, [sp, #8] add r0, sp, #0xb0 str r0, [sp, #0xc] ldr r0, [sp, #0x14] add r1, r5, #0 add r2, r7, #0 bl MOD11_02246274 _021F38D6: ldr r1, [sp, #0xb0] mov r0, #8 tst r0, r1 bne _021F38E4 add sp, #0xb4 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F38E4: ldr r0, [sp, #0x3c] add r0, r0, #2 str r0, [sp, #0x3c] ldr r0, [sp, #0x6c] add r0, r0, #1 str r0, [sp, #0x6c] cmp r0, #4 blt _021F384E ldr r0, [sp, #0x54] cmp r0, #2 bge _021F3900 add sp, #0xb4 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F3900: ldr r0, [sp, #0x18] lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x64] ldr r0, [sp, #0x14] bl FUN_0222FF74 mov r1, #0x10 tst r0, r1 bne _021F3920 ldr r0, [sp, #0x14] bl FUN_0222FF74 mov r1, #8 tst r0, r1 beq _021F3926 _021F3920: ldr r0, [sp, #0x64] str r0, [sp, #0x60] b _021F3934 _021F3926: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] bl FUN_022302BC lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x60] _021F3934: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] bl MOD11_0222FFC8 str r0, [sp, #0x58] mov r0, #0 str r0, [sp, #0x2c] ldr r0, [sp, #0x58] cmp r0, #0 bgt _021F394A b _021F3B24 _021F394A: ldr r0, [sp, #0x64] add r0, r5, r0 str r0, [sp, #0x44] ldr r0, [sp, #0x60] add r0, r5, r0 str r0, [sp, #0x40] _021F3956: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] ldr r2, [sp, #0x2c] bl FUN_02230014 mov r1, #0xa2 mov r2, #0 str r0, [sp, #0x50] bl FUN_020671BC cmp r0, #0 beq _021F39BC ldr r0, [sp, #0x50] mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F39BC ldr r0, [sp, #0x50] mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F3B84 ; =0x000001EE cmp r0, r1 beq _021F39BC ldr r0, _021F3B88 ; =0x0000219C ldr r1, [sp, #0x44] ldrb r2, [r1, r0] ldr r1, [sp, #0x2c] cmp r1, r2 beq _021F39BC ldr r1, [sp, #0x40] ldrb r2, [r1, r0] ldr r1, [sp, #0x2c] cmp r1, r2 beq _021F39BC add r2, r0, #0 ldr r1, [sp, #0x44] add r2, #8 ldrb r2, [r1, r2] ldr r1, [sp, #0x2c] cmp r1, r2 beq _021F39BC ldr r1, [sp, #0x40] add r0, #8 ldrb r1, [r1, r0] ldr r0, [sp, #0x2c] cmp r0, r1 bne _021F39BE _021F39BC: b _021F3B16 _021F39BE: mov r0, #0 str r0, [sp, #0x68] _021F39C2: ldr r1, [sp, #0x68] ldr r0, [sp, #0x50] add r1, #0x36 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x10 lsr r7, r0, #0x10 ldr r0, [sp, #0x14] ldr r2, [sp, #0x50] add r1, r5, #0 add r3, r7, #0 bl MOD16_021F3454 str r0, [sp, #0x24] cmp r7, #0 beq _021F39F0 lsl r0, r7, #4 add r1, r5, r0 ldr r0, _021F3B7C ; =0x000003E1 ldrb r0, [r1, r0] cmp r0, #0 bne _021F39F2 _021F39F0: b _021F3B0A _021F39F2: mov r0, #0 str r0, [sp, #0xb0] ldr r1, [sp, #0x38] ldr r0, _021F3B80 ; =0x00002D8C ldr r0, [r1, r0] cmp r0, #0 beq _021F3A58 ldr r0, [sp, #0x50] mov r1, #0xa mov r2, #0 bl FUN_020671BC str r0, [sp, #0x70] add r0, r5, #0 add r1, r6, #0 bl MOD11_02246D1C str r0, [sp, #0x74] add r0, r5, #0 add r1, r6, #0 bl MOD11_02249D90 str r0, [sp, #0x78] add r0, r5, #0 add r1, r6, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 str r0, [sp, #0x7c] add r0, r5, #0 add r1, r6, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 ldr r1, [sp, #0x74] ldr r2, [sp, #0x24] str r1, [sp] ldr r1, [sp, #0x78] ldr r3, [sp, #0x70] str r1, [sp, #4] ldr r1, [sp, #0x7c] str r1, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0xb0 str r0, [sp, #0x10] add r0, r5, #0 add r1, r7, #0 bl MOD11_022465A0 _021F3A58: ldr r1, [sp, #0xb0] mov r0, #2 tst r0, r1 beq _021F3A7E bl FUN_0201B9EC mov r1, #3 bl _s32_div_f cmp r1, #2 bge _021F3A7E ldr r0, [sp, #0x18] ldr r1, _021F3B8C ; =0x000021A4 add r2, r5, r0 ldr r0, [sp, #0x2c] add sp, #0xb4 strb r0, [r2, r1] mov r0, #1 pop {r4, r5, r6, r7, pc} _021F3A7E: mov r0, #0 str r0, [sp, #0xb0] ldr r1, [sp, #0x34] ldr r0, _021F3B80 ; =0x00002D8C ldr r0, [r1, r0] cmp r0, #0 beq _021F3AE4 ldr r0, [sp, #0x50] mov r1, #0xa mov r2, #0 bl FUN_020671BC str r0, [sp, #0x80] add r0, r5, #0 add r1, r4, #0 bl MOD11_02246D1C str r0, [sp, #0x84] add r0, r5, #0 add r1, r4, #0 bl MOD11_02249D90 str r0, [sp, #0x88] add r0, r5, #0 add r1, r4, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 str r0, [sp, #0x8c] add r0, r5, #0 add r1, r4, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 ldr r1, [sp, #0x84] ldr r2, [sp, #0x24] str r1, [sp] ldr r1, [sp, #0x88] ldr r3, [sp, #0x80] str r1, [sp, #4] ldr r1, [sp, #0x8c] str r1, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0xb0 str r0, [sp, #0x10] add r0, r5, #0 add r1, r7, #0 bl MOD11_022465A0 _021F3AE4: ldr r1, [sp, #0xb0] mov r0, #2 tst r0, r1 beq _021F3B0A bl FUN_0201B9EC mov r1, #3 bl _s32_div_f cmp r1, #2 bge _021F3B0A ldr r0, [sp, #0x18] ldr r1, _021F3B8C ; =0x000021A4 add r2, r5, r0 ldr r0, [sp, #0x2c] add sp, #0xb4 strb r0, [r2, r1] mov r0, #1 pop {r4, r5, r6, r7, pc} _021F3B0A: ldr r0, [sp, #0x68] add r0, r0, #1 str r0, [sp, #0x68] cmp r0, #4 bge _021F3B16 b _021F39C2 _021F3B16: ldr r0, [sp, #0x2c] add r1, r0, #1 ldr r0, [sp, #0x58] str r1, [sp, #0x2c] cmp r1, r0 bge _021F3B24 b _021F3956 _021F3B24: mov r0, #0 str r0, [sp, #0x30] ldr r0, [sp, #0x58] cmp r0, #0 bgt _021F3B30 b _021F3D2A _021F3B30: ldr r0, [sp, #0x64] add r0, r5, r0 str r0, [sp, #0x4c] ldr r0, [sp, #0x60] add r0, r5, r0 str r0, [sp, #0x48] _021F3B3C: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] ldr r2, [sp, #0x30] bl FUN_02230014 mov r1, #0xa2 mov r2, #0 str r0, [sp, #0x20] bl FUN_020671BC cmp r0, #0 beq _021F3BBE ldr r0, [sp, #0x20] mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F3BBE ldr r0, [sp, #0x20] mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F3B84 ; =0x000001EE cmp r0, r1 beq _021F3BBE ldr r0, _021F3B88 ; =0x0000219C b _021F3B90 nop _021F3B78: .word 0x00002D4C _021F3B7C: .word 0x000003E1 _021F3B80: .word 0x00002D8C _021F3B84: .word 0x000001EE _021F3B88: .word 0x0000219C _021F3B8C: .word 0x000021A4 _021F3B90: ldr r1, [sp, #0x4c] ldrb r2, [r1, r0] ldr r1, [sp, #0x30] cmp r1, r2 beq _021F3BBE ldr r1, [sp, #0x48] ldrb r2, [r1, r0] ldr r1, [sp, #0x30] cmp r1, r2 beq _021F3BBE add r2, r0, #0 ldr r1, [sp, #0x4c] add r2, #8 ldrb r2, [r1, r2] ldr r1, [sp, #0x30] cmp r1, r2 beq _021F3BBE ldr r1, [sp, #0x48] add r0, #8 ldrb r1, [r1, r0] ldr r0, [sp, #0x30] cmp r0, r1 bne _021F3BC0 _021F3BBE: b _021F3D1C _021F3BC0: mov r0, #0 str r0, [sp, #0x1c] _021F3BC4: ldr r1, [sp, #0x1c] ldr r0, [sp, #0x20] add r1, #0x36 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x10 lsr r7, r0, #0x10 ldr r0, [sp, #0x14] ldr r2, [sp, #0x20] add r1, r5, #0 add r3, r7, #0 bl MOD16_021F3454 str r0, [sp, #0x28] cmp r7, #0 beq _021F3BF2 lsl r0, r7, #4 add r1, r5, r0 ldr r0, _021F3D30 ; =0x000003E1 ldrb r0, [r1, r0] cmp r0, #0 bne _021F3BF4 _021F3BF2: b _021F3D10 _021F3BF4: mov r0, #0 str r0, [sp, #0xb0] ldr r1, [sp, #0x38] ldr r0, _021F3D34 ; =0x00002D8C ldr r0, [r1, r0] cmp r0, #0 beq _021F3C5A ldr r0, [sp, #0x20] mov r1, #0xa mov r2, #0 bl FUN_020671BC str r0, [sp, #0x90] add r0, r5, #0 add r1, r6, #0 bl MOD11_02246D1C str r0, [sp, #0x94] add r0, r5, #0 add r1, r6, #0 bl MOD11_02249D90 str r0, [sp, #0x98] add r0, r5, #0 add r1, r6, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 str r0, [sp, #0x9c] add r0, r5, #0 add r1, r6, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 ldr r1, [sp, #0x94] ldr r2, [sp, #0x28] str r1, [sp] ldr r1, [sp, #0x98] ldr r3, [sp, #0x90] str r1, [sp, #4] ldr r1, [sp, #0x9c] str r1, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0xb0 str r0, [sp, #0x10] add r0, r5, #0 add r1, r7, #0 bl MOD11_022465A0 _021F3C5A: ldr r0, [sp, #0xb0] cmp r0, #0 bne _021F3C82 bl FUN_0201B9EC lsr r1, r0, #0x1f lsl r2, r0, #0x1f sub r2, r2, r1 mov r0, #0x1f ror r2, r0 add r0, r1, r2 bne _021F3C82 ldr r0, [sp, #0x18] ldr r1, _021F3D38 ; =0x000021A4 add r2, r5, r0 ldr r0, [sp, #0x30] add sp, #0xb4 strb r0, [r2, r1] mov r0, #1 pop {r4, r5, r6, r7, pc} _021F3C82: mov r0, #0 str r0, [sp, #0xb0] ldr r1, [sp, #0x34] ldr r0, _021F3D34 ; =0x00002D8C ldr r0, [r1, r0] cmp r0, #0 beq _021F3CE8 ldr r0, [sp, #0x20] mov r1, #0xa mov r2, #0 bl FUN_020671BC str r0, [sp, #0xa0] add r0, r5, #0 add r1, r4, #0 bl MOD11_02246D1C str r0, [sp, #0xa4] add r0, r5, #0 add r1, r4, #0 bl MOD11_02249D90 str r0, [sp, #0xa8] add r0, r5, #0 add r1, r4, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 str r0, [sp, #0xac] add r0, r5, #0 add r1, r4, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 ldr r1, [sp, #0xa4] ldr r2, [sp, #0x28] str r1, [sp] ldr r1, [sp, #0xa8] ldr r3, [sp, #0xa0] str r1, [sp, #4] ldr r1, [sp, #0xac] str r1, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0xb0 str r0, [sp, #0x10] add r0, r5, #0 add r1, r7, #0 bl MOD11_022465A0 _021F3CE8: ldr r0, [sp, #0xb0] cmp r0, #0 bne _021F3D10 bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 bne _021F3D10 ldr r0, [sp, #0x18] ldr r1, _021F3D38 ; =0x000021A4 add r2, r5, r0 ldr r0, [sp, #0x30] add sp, #0xb4 strb r0, [r2, r1] mov r0, #1 pop {r4, r5, r6, r7, pc} _021F3D10: ldr r0, [sp, #0x1c] add r0, r0, #1 str r0, [sp, #0x1c] cmp r0, #4 bge _021F3D1C b _021F3BC4 _021F3D1C: ldr r0, [sp, #0x30] add r1, r0, #1 ldr r0, [sp, #0x58] str r1, [sp, #0x30] cmp r1, r0 bge _021F3D2A b _021F3B3C _021F3D2A: mov r0, #0 add sp, #0xb4 pop {r4, r5, r6, r7, pc} .align 2, 0 _021F3D30: .word 0x000003E1 _021F3D34: .word 0x00002D8C _021F3D38: .word 0x000021A4 thumb_func_end MOD16_021F3810 thumb_func_start MOD16_021F3D3C MOD16_021F3D3C: ; 0x021F3D3C push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 add r4, r2, #0 add r5, r1, #0 add r1, r4, #0 add r6, r0, #0 str r3, [sp, #0x10] bl FUN_02230260 mov r1, #1 eor r0, r1 lsl r0, r0, #0x18 lsr r1, r0, #0x18 add r0, r6, #0 bl MOD11_0223022C lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x24] bl FUN_0206A92C ldr r1, _021F3E88 ; =0x00003108 ldrb r1, [r5, r1] tst r0, r1 bne _021F3DE2 mov r0, #0 str r0, [sp, #0x28] mov r0, #0xc0 mul r0, r4 add r7, r5, r0 _021F3D78: ldr r0, _021F3E8C ; =0x00002D4C add r1, r5, #0 ldrh r0, [r7, r0] add r2, r4, #0 str r0, [sp, #0x20] ldr r3, [sp, #0x20] add r0, r6, #0 bl MOD16_021F32DC add r3, r0, #0 ldr r0, [sp, #0x20] cmp r0, #0 beq _021F3DD6 mov r0, #0 str r0, [sp, #0x2c] ldr r0, [sp, #0x24] str r4, [sp] str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] add r0, sp, #0x2c str r0, [sp, #0xc] ldr r2, [sp, #0x20] add r0, r6, #0 add r1, r5, #0 bl MOD11_02246274 ldr r1, [sp, #0x2c] mov r0, #2 tst r0, r1 beq _021F3DD6 ldr r0, [sp, #0x10] cmp r0, #0 beq _021F3DC2 add sp, #0x30 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F3DC2: bl FUN_0201B9EC mov r1, #0xa bl _s32_div_f cmp r1, #0 beq _021F3DD6 add sp, #0x30 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F3DD6: ldr r0, [sp, #0x28] add r7, r7, #2 add r0, r0, #1 str r0, [sp, #0x28] cmp r0, #4 blt _021F3D78 _021F3DE2: add r0, r6, #0 bl FUN_0222FF74 mov r1, #2 tst r0, r1 bne _021F3DF4 add sp, #0x30 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F3DF4: ldr r1, [sp, #0x24] add r0, r6, #0 bl FUN_022302BC lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x1c] bl FUN_0206A92C ldr r1, _021F3E88 ; =0x00003108 ldrb r1, [r5, r1] tst r0, r1 bne _021F3E82 mov r0, #0 str r0, [sp, #0x18] mov r0, #0xc0 mul r0, r4 add r7, r5, r0 _021F3E18: ldr r0, _021F3E8C ; =0x00002D4C add r1, r5, #0 ldrh r0, [r7, r0] add r2, r4, #0 str r0, [sp, #0x14] ldr r3, [sp, #0x14] add r0, r6, #0 bl MOD16_021F32DC add r3, r0, #0 ldr r0, [sp, #0x14] cmp r0, #0 beq _021F3E76 mov r0, #0 str r0, [sp, #0x2c] ldr r0, [sp, #0x1c] str r4, [sp] str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] add r0, sp, #0x2c str r0, [sp, #0xc] ldr r2, [sp, #0x14] add r0, r6, #0 add r1, r5, #0 bl MOD11_02246274 ldr r1, [sp, #0x2c] mov r0, #2 tst r0, r1 beq _021F3E76 ldr r0, [sp, #0x10] cmp r0, #0 beq _021F3E62 add sp, #0x30 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F3E62: bl FUN_0201B9EC mov r1, #0xa bl _s32_div_f cmp r1, #0 beq _021F3E76 add sp, #0x30 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F3E76: ldr r0, [sp, #0x18] add r7, r7, #2 add r0, r0, #1 str r0, [sp, #0x18] cmp r0, #4 blt _021F3E18 _021F3E82: mov r0, #0 add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F3E88: .word 0x00003108 _021F3E8C: .word 0x00002D4C thumb_func_end MOD16_021F3D3C thumb_func_start MOD16_021F3E90 MOD16_021F3E90: ; 0x021F3E90 push {r4, r5, r6, r7, lr} sub sp, #0x14 mov r3, #1 str r0, [sp] str r1, [sp, #4] str r2, [sp, #8] bl MOD16_021F3D3C cmp r0, #0 beq _021F3EB8 bl FUN_0201B9EC mov r1, #3 bl _s32_div_f cmp r1, #0 beq _021F3EB8 add sp, #0x14 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F3EB8: ldr r0, [sp, #8] lsl r1, r0, #1 ldr r0, [sp, #4] add r1, r0, r1 ldr r0, _021F3FF4 ; =0x00003064 ldrh r0, [r1, r0] cmp r0, #0 bne _021F3ECE add sp, #0x14 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F3ECE: lsl r1, r0, #4 ldr r0, [sp, #4] add r2, r0, r1 ldr r0, _021F3FF8 ; =0x000003E1 ldrb r1, [r2, r0] cmp r1, #0 bne _021F3EE2 add sp, #0x14 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F3EE2: add r0, r0, #1 ldrb r0, [r2, r0] cmp r0, #0xa bne _021F3EF0 mov r0, #0x12 str r0, [sp, #0x10] b _021F3F0A _021F3EF0: cmp r0, #0xb bne _021F3EFA mov r0, #0xb str r0, [sp, #0x10] b _021F3F0A _021F3EFA: cmp r0, #0xd bne _021F3F04 mov r0, #0xa str r0, [sp, #0x10] b _021F3F0A _021F3F04: add sp, #0x14 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F3F0A: ldr r0, [sp, #4] ldr r1, [sp, #8] bl MOD11_02246D1C ldr r1, [sp, #0x10] cmp r1, r0 bne _021F3F1E add sp, #0x14 mov r0, #0 pop {r4, r5, r6, r7, pc} _021F3F1E: ldr r0, [sp, #8] lsl r0, r0, #0x18 lsr r4, r0, #0x18 ldr r0, [sp] bl FUN_0222FF74 mov r1, #0x10 tst r0, r1 bne _021F3F3C ldr r0, [sp] bl FUN_0222FF74 mov r1, #8 tst r0, r1 beq _021F3F40 _021F3F3C: add r6, r4, #0 b _021F3F4C _021F3F40: ldr r0, [sp] ldr r1, [sp, #8] bl FUN_022302BC lsl r0, r0, #0x18 lsr r6, r0, #0x18 _021F3F4C: ldr r0, [sp] ldr r1, [sp, #8] bl MOD11_0222FFC8 mov r5, #0 str r0, [sp, #0xc] cmp r0, #0 ble _021F3FEE ldr r0, [sp, #4] add r7, r0, r4 add r6, r0, r6 _021F3F62: ldr r0, [sp] ldr r1, [sp, #8] add r2, r5, #0 bl FUN_02230014 mov r1, #0xa2 mov r2, #0 add r4, r0, #0 bl FUN_020671BC cmp r0, #0 beq _021F3FE6 add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F3FE6 add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F3FFC ; =0x000001EE cmp r0, r1 beq _021F3FE6 ldr r0, _021F4000 ; =0x0000219C ldrb r0, [r7, r0] cmp r5, r0 beq _021F3FE6 ldr r0, _021F4000 ; =0x0000219C ldrb r0, [r6, r0] cmp r5, r0 beq _021F3FE6 ldr r0, _021F4004 ; =0x000021A4 ldrb r0, [r7, r0] cmp r5, r0 beq _021F3FE6 ldr r0, _021F4004 ; =0x000021A4 ldrb r0, [r6, r0] cmp r5, r0 beq _021F3FE6 add r0, r4, #0 mov r1, #0xa mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x18 lsr r1, r0, #0x18 ldr r0, [sp, #0x10] cmp r0, r1 bne _021F3FE6 bl FUN_0201B9EC mov r1, #1 tst r0, r1 beq _021F3FE6 ldr r1, [sp, #4] ldr r0, [sp, #8] add sp, #0x14 add r1, r1, r0 ldr r0, _021F4004 ; =0x000021A4 strb r5, [r1, r0] mov r0, #1 pop {r4, r5, r6, r7, pc} _021F3FE6: ldr r0, [sp, #0xc] add r5, r5, #1 cmp r5, r0 blt _021F3F62 _021F3FEE: mov r0, #0 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _021F3FF4: .word 0x00003064 _021F3FF8: .word 0x000003E1 _021F3FFC: .word 0x000001EE _021F4000: .word 0x0000219C _021F4004: .word 0x000021A4 thumb_func_end MOD16_021F3E90 thumb_func_start MOD16_021F4008 MOD16_021F4008: ; 0x021F4008 push {r3, r4, r5, r6, r7, lr} sub sp, #0x60 add r5, r1, #0 add r1, r2, #0 lsl r6, r1, #1 str r3, [sp, #0x1c] ldr r1, _021F424C ; =0x00003064 add r3, r5, r6 str r2, [sp, #0x18] ldrh r2, [r3, r1] str r0, [sp, #0x14] cmp r2, #0 beq _021F402A add r1, #8 ldrh r1, [r3, r1] cmp r1, #0xff bne _021F4030 _021F402A: add sp, #0x60 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F4030: lsl r1, r2, #4 add r2, r5, r1 ldr r1, _021F4250 ; =0x000003E1 ldrb r1, [r2, r1] cmp r1, #0 bne _021F4042 add sp, #0x60 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F4042: ldr r1, [sp, #0x18] lsl r1, r1, #0x18 lsr r4, r1, #0x18 bl FUN_0222FF74 mov r1, #0x10 tst r0, r1 bne _021F405E ldr r0, [sp, #0x14] bl FUN_0222FF74 mov r1, #8 tst r0, r1 beq _021F4062 _021F405E: add r7, r4, #0 b _021F406E _021F4062: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] bl FUN_022302BC lsl r0, r0, #0x18 lsr r7, r0, #0x18 _021F406E: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] bl MOD11_0222FFC8 str r0, [sp, #0x30] mov r0, #0 str r0, [sp, #0x34] ldr r0, [sp, #0x30] cmp r0, #0 bgt _021F4084 b _021F4246 _021F4084: add r0, r5, r4 str r0, [sp, #0x2c] add r0, r5, r7 str r0, [sp, #0x28] add r0, sp, #0x68 ldrb r0, [r0, #0x10] add r4, r5, r6 str r0, [sp, #0x24] _021F4094: ldr r0, [sp, #0x14] ldr r1, [sp, #0x18] ldr r2, [sp, #0x34] bl FUN_02230014 mov r1, #0xa2 mov r2, #0 add r6, r0, #0 bl FUN_020671BC cmp r0, #0 beq _021F40FA add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F40FA add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F4254 ; =0x000001EE cmp r0, r1 beq _021F40FA ldr r0, _021F4258 ; =0x0000219C ldr r1, [sp, #0x2c] ldrb r2, [r1, r0] ldr r1, [sp, #0x34] cmp r1, r2 beq _021F40FA ldr r1, [sp, #0x28] ldrb r2, [r1, r0] ldr r1, [sp, #0x34] cmp r1, r2 beq _021F40FA add r2, r0, #0 ldr r1, [sp, #0x2c] add r2, #8 ldrb r2, [r1, r2] ldr r1, [sp, #0x34] cmp r1, r2 beq _021F40FA ldr r1, [sp, #0x28] add r0, #8 ldrb r1, [r1, r0] ldr r0, [sp, #0x34] cmp r0, r1 bne _021F40FC _021F40FA: b _021F4238 _021F40FC: mov r0, #0 str r0, [sp, #0x5c] ldr r3, _021F425C ; =0x0000306C ldr r0, [sp, #0x14] ldrh r2, [r4, r3] sub r3, #8 ldrh r3, [r4, r3] add r1, r5, #0 bl MOD16_021F32DC ldr r1, _021F425C ; =0x0000306C str r0, [sp, #0x38] ldrh r1, [r4, r1] add r0, r5, #0 bl MOD11_02246D1C str r0, [sp, #0x3c] add r0, r6, #0 mov r1, #0xa mov r2, #0 bl FUN_020671BC str r0, [sp, #0x40] add r0, r6, #0 mov r1, #6 mov r2, #0 bl FUN_020671BC add r1, r0, #0 lsl r1, r1, #0x10 add r0, r5, #0 lsr r1, r1, #0x10 mov r2, #1 bl MOD11_0224C12C str r0, [sp, #0x44] add r0, r6, #0 mov r1, #0xb0 mov r2, #0 bl FUN_020671BC add r7, r0, #0 add r0, r6, #0 mov r1, #0xb1 mov r2, #0 bl FUN_020671BC ldr r1, [sp, #0x40] ldr r2, [sp, #0x38] str r1, [sp] ldr r1, [sp, #0x44] ldr r3, [sp, #0x3c] str r1, [sp, #4] str r7, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0x5c str r0, [sp, #0x10] ldr r1, _021F424C ; =0x00003064 add r0, r5, #0 ldrh r1, [r4, r1] bl MOD11_022465A0 ldr r1, [sp, #0x5c] ldr r0, [sp, #0x1c] tst r0, r1 beq _021F4238 mov r7, #0 _021F4182: add r1, r7, #0 add r0, r6, #0 add r1, #0x36 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x20] ldr r0, [sp, #0x14] ldr r3, [sp, #0x20] add r1, r5, #0 add r2, r6, #0 bl MOD16_021F3454 str r0, [sp, #0x48] ldr r0, [sp, #0x20] cmp r0, #0 beq _021F4232 mov r0, #0 str r0, [sp, #0x5c] add r0, r6, #0 mov r1, #0xa mov r2, #0 bl FUN_020671BC ldr r1, _021F425C ; =0x0000306C str r0, [sp, #0x4c] ldrh r1, [r4, r1] add r0, r5, #0 bl MOD11_02246D1C ldr r1, _021F425C ; =0x0000306C str r0, [sp, #0x50] ldrh r1, [r4, r1] add r0, r5, #0 bl MOD11_02249D90 ldr r1, _021F425C ; =0x0000306C str r0, [sp, #0x54] ldrh r1, [r4, r1] add r0, r5, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 ldr r1, _021F425C ; =0x0000306C str r0, [sp, #0x58] ldrh r1, [r4, r1] add r0, r5, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 ldr r1, [sp, #0x50] ldr r2, [sp, #0x48] str r1, [sp] ldr r1, [sp, #0x54] ldr r3, [sp, #0x4c] str r1, [sp, #4] ldr r1, [sp, #0x58] str r1, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0x5c str r0, [sp, #0x10] ldr r1, [sp, #0x20] add r0, r5, #0 bl MOD11_022465A0 ldr r1, [sp, #0x5c] mov r0, #2 tst r0, r1 beq _021F4232 bl FUN_0201B9EC ldr r1, [sp, #0x24] bl _s32_div_f cmp r1, #0 bne _021F4232 ldr r0, [sp, #0x18] ldr r1, _021F4260 ; =0x000021A4 add r2, r5, r0 ldr r0, [sp, #0x34] add sp, #0x60 strb r0, [r2, r1] mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F4232: add r7, r7, #1 cmp r7, #4 blt _021F4182 _021F4238: ldr r0, [sp, #0x34] add r1, r0, #1 ldr r0, [sp, #0x30] str r1, [sp, #0x34] cmp r1, r0 bge _021F4246 b _021F4094 _021F4246: mov r0, #0 add sp, #0x60 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F424C: .word 0x00003064 _021F4250: .word 0x000003E1 _021F4254: .word 0x000001EE _021F4258: .word 0x0000219C _021F425C: .word 0x0000306C _021F4260: .word 0x000021A4 thumb_func_end MOD16_021F4008 thumb_func_start MOD16_021F4264 MOD16_021F4264: ; 0x021F4264 push {r3, r4, r5, r6, r7, lr} sub sp, #8 str r0, [sp, #4] add r4, r2, #0 mov r0, #0xc0 add r5, r1, #0 mul r0, r4 add r1, r5, r0 ldr r0, _021F4340 ; =0x00002DAC ldr r1, [r1, r0] mov r0, #7 tst r0, r1 beq _021F429E add r0, r5, #0 add r1, r4, #0 bl MOD11_02246D1C cmp r0, #0x1e bne _021F429E mov r0, #0xc0 mul r0, r4 add r2, r5, r0 ldr r0, _021F4344 ; =0x00002D8C ldr r1, [r2, r0] add r0, r0, #4 ldr r0, [r2, r0] lsr r0, r0, #1 cmp r1, r0 bhs _021F42A4 _021F429E: add sp, #8 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F42A4: ldr r0, _021F4348 ; =0x00003064 lsl r7, r4, #1 add r6, r5, r0 ldrh r0, [r6, r7] cmp r0, #0 bne _021F42C8 bl FUN_0201B9EC mov r1, #1 tst r0, r1 beq _021F42C8 ldr r0, _021F434C ; =0x000021A4 mov r3, #6 add r2, r5, r4 strb r3, [r2, r0] add sp, #8 add r0, r1, #0 pop {r3, r4, r5, r6, r7, pc} _021F42C8: ldrh r0, [r6, r7] lsl r0, r0, #4 add r1, r5, r0 ldr r0, _021F4350 ; =0x000003E1 ldrb r0, [r1, r0] cmp r0, #0 bne _021F42EE bl FUN_0201B9EC mov r1, #1 tst r0, r1 beq _021F42EE ldr r0, _021F434C ; =0x000021A4 mov r3, #6 add r2, r5, r4 strb r3, [r2, r0] add sp, #8 add r0, r1, #0 pop {r3, r4, r5, r6, r7, pc} _021F42EE: mov r0, #1 str r0, [sp] ldr r0, [sp, #4] add r1, r5, #0 add r2, r4, #0 mov r3, #8 bl MOD16_021F4008 cmp r0, #0 beq _021F4308 add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F4308: mov r0, #1 str r0, [sp] ldr r0, [sp, #4] add r1, r5, #0 add r2, r4, #0 mov r3, #4 bl MOD16_021F4008 cmp r0, #0 beq _021F4322 add sp, #8 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F4322: bl FUN_0201B9EC mov r1, #1 tst r0, r1 beq _021F433A ldr r0, _021F434C ; =0x000021A4 mov r3, #6 add r2, r5, r4 strb r3, [r2, r0] add sp, #8 add r0, r1, #0 pop {r3, r4, r5, r6, r7, pc} _021F433A: mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _021F4340: .word 0x00002DAC _021F4344: .word 0x00002D8C _021F4348: .word 0x00003064 _021F434C: .word 0x000021A4 _021F4350: .word 0x000003E1 thumb_func_end MOD16_021F4264 thumb_func_start MOD16_021F4354 MOD16_021F4354: ; 0x021F4354 push {r3, r4} mov r4, #0xc0 mul r4, r2 mov r3, #0 ldr r2, _021F4388 ; =0x00002D58 add r0, r3, #0 add r4, r1, r4 _021F4362: ldrsb r1, [r4, r2] cmp r1, #6 ble _021F4370 sub r1, r1, #6 add r1, r3, r1 lsl r1, r1, #0x18 lsr r3, r1, #0x18 _021F4370: add r0, r0, #1 add r4, r4, #1 cmp r0, #8 blt _021F4362 cmp r3, #4 blo _021F4382 mov r0, #1 pop {r3, r4} bx lr _021F4382: mov r0, #0 pop {r3, r4} bx lr .align 2, 0 _021F4388: .word 0x00002D58 thumb_func_end MOD16_021F4354 thumb_func_start MOD16_021F438C MOD16_021F438C: ; 0x021F438C push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r2, #0 mov r2, #0xc0 add r3, r6, #0 mul r3, r2 add r2, r1, #0 add r5, r2, r3 ldr r2, _021F4590 ; =0x00002DB0 ldr r3, _021F4594 ; =0x0400E000 ldr r4, [r5, r2] str r0, [sp, #4] str r1, [sp, #8] tst r4, r3 bne _021F440C add r2, #0x10 ldr r4, [r5, r2] lsr r2, r3, #0x10 tst r2, r4 bne _021F440C mov r2, #0x17 str r2, [sp] mov r2, #2 add r3, r6, #0 bl MOD11_02246870 cmp r0, #0 bne _021F440C mov r0, #0x47 str r0, [sp] ldr r0, [sp, #4] ldr r1, [sp, #8] mov r2, #2 add r3, r6, #0 bl MOD11_02246870 cmp r0, #0 bne _021F440C mov r0, #0x2a str r0, [sp] ldr r0, [sp, #4] ldr r1, [sp, #8] mov r2, #6 add r3, r6, #0 bl MOD11_02246870 cmp r0, #0 beq _021F4412 ldr r0, [sp, #8] add r1, r6, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 cmp r0, #8 beq _021F440C ldr r0, [sp, #8] add r1, r6, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 cmp r0, #8 bne _021F4412 _021F440C: add sp, #0x18 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F4412: mov r0, #0 str r0, [sp, #0x14] lsl r0, r6, #0x18 lsr r4, r0, #0x18 ldr r0, [sp, #4] bl FUN_0222FF74 mov r1, #0x10 tst r0, r1 bne _021F4432 ldr r0, [sp, #4] bl FUN_0222FF74 mov r1, #8 tst r0, r1 beq _021F4436 _021F4432: add r7, r4, #0 b _021F4442 _021F4436: ldr r0, [sp, #4] add r1, r6, #0 bl FUN_022302BC lsl r0, r0, #0x18 lsr r7, r0, #0x18 _021F4442: ldr r0, [sp, #4] add r1, r6, #0 bl MOD11_0222FFC8 mov r5, #0 str r0, [sp, #0x10] cmp r0, #0 ble _021F44C2 ldr r0, [sp, #8] add r0, r0, r4 str r0, [sp, #0xc] ldr r0, [sp, #8] add r7, r0, r7 _021F445C: ldr r0, [sp, #4] add r1, r6, #0 add r2, r5, #0 bl FUN_02230014 mov r1, #0xa2 mov r2, #0 add r4, r0, #0 bl FUN_020671BC cmp r0, #0 beq _021F44BA add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F44BA add r0, r4, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F4598 ; =0x000001EE cmp r0, r1 beq _021F44BA ldr r1, [sp, #0xc] ldr r0, _021F459C ; =0x0000219C ldrb r0, [r1, r0] cmp r5, r0 beq _021F44BA ldr r0, _021F459C ; =0x0000219C ldrb r0, [r7, r0] cmp r5, r0 beq _021F44BA ldr r0, _021F45A0 ; =0x000021A4 ldrb r0, [r1, r0] cmp r5, r0 beq _021F44BA ldr r0, _021F45A0 ; =0x000021A4 ldrb r0, [r7, r0] cmp r5, r0 beq _021F44BA ldr r0, [sp, #0x14] add r0, r0, #1 str r0, [sp, #0x14] _021F44BA: ldr r0, [sp, #0x10] add r5, r5, #1 cmp r5, r0 blt _021F445C _021F44C2: ldr r0, [sp, #0x14] cmp r0, #0 beq _021F4588 ldr r0, [sp, #8] add r1, r6, #0 bl MOD16_021F3614 cmp r0, #0 beq _021F44DA add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F44DA: ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 bl MOD16_021F364C cmp r0, #0 beq _021F44EE add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F44EE: ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 bl MOD16_021F3810 cmp r0, #0 beq _021F4502 add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F4502: ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 bl MOD16_021F3E90 cmp r0, #0 beq _021F4516 add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F4516: ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 bl MOD16_021F4264 cmp r0, #0 beq _021F452A add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F452A: ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 mov r3, #0 bl MOD16_021F3D3C cmp r0, #0 beq _021F4540 add sp, #0x18 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F4540: ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 bl MOD16_021F4354 cmp r0, #0 beq _021F4554 add sp, #0x18 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F4554: mov r0, #2 str r0, [sp] ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 mov r3, #8 bl MOD16_021F4008 cmp r0, #0 beq _021F456E add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F456E: mov r0, #3 str r0, [sp] ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, r6, #0 mov r3, #4 bl MOD16_021F4008 cmp r0, #0 beq _021F4588 add sp, #0x18 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _021F4588: mov r0, #0 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop _021F4590: .word 0x00002DB0 _021F4594: .word 0x0400E000 _021F4598: .word 0x000001EE _021F459C: .word 0x0000219C _021F45A0: .word 0x000021A4 thumb_func_end MOD16_021F438C thumb_func_start MOD16_021F45A4 MOD16_021F45A4: ; 0x021F45A4 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r1, #0 add r1, r0, #0 str r0, [sp] ldr r5, [r1, #0x30] bl FUN_0222FF74 add r6, r0, #0 mov r0, #1 tst r0, r6 bne _021F45C8 ldr r0, [sp] add r1, r7, #0 bl MOD11_02230270 cmp r0, #0 bne _021F4688 _021F45C8: ldr r0, [sp] add r1, r5, #0 add r2, r7, #0 bl MOD16_021F438C cmp r0, #0 beq _021F4676 ldr r0, _021F4690 ; =0x000021A4 add r0, r5, r0 str r0, [sp, #0x10] ldrb r0, [r0, r7] cmp r0, #6 bne _021F4670 ldr r0, [sp] add r1, r7, #0 bl MOD16_021F4698 add r4, r0, #0 cmp r4, #6 bne _021F466C lsl r0, r7, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0xc] mov r0, #0x10 tst r0, r6 bne _021F4602 mov r0, #8 tst r0, r6 beq _021F4608 _021F4602: ldr r0, [sp, #0xc] str r0, [sp, #8] b _021F4616 _021F4608: ldr r0, [sp] add r1, r7, #0 bl FUN_022302BC lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #8] _021F4616: ldr r0, [sp] add r1, r7, #0 bl MOD11_0222FFC8 mov r4, #0 str r0, [sp, #4] cmp r0, #0 ble _021F466C ldr r0, [sp, #0xc] add r6, r5, r0 ldr r0, [sp, #8] add r5, r5, r0 _021F462E: ldr r0, [sp] add r1, r7, #0 add r2, r4, #0 bl FUN_02230014 mov r1, #0xa2 mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F4664 ldr r0, _021F4694 ; =0x0000219C ldrb r0, [r6, r0] cmp r4, r0 beq _021F4664 ldr r0, _021F4694 ; =0x0000219C ldrb r0, [r5, r0] cmp r4, r0 beq _021F4664 ldr r0, _021F4690 ; =0x000021A4 ldrb r0, [r6, r0] cmp r4, r0 beq _021F4664 ldr r0, _021F4690 ; =0x000021A4 ldrb r0, [r5, r0] cmp r4, r0 bne _021F466C _021F4664: ldr r0, [sp, #4] add r4, r4, #1 cmp r4, r0 blt _021F462E _021F466C: ldr r0, [sp, #0x10] strb r4, [r0, r7] _021F4670: add sp, #0x14 mov r0, #3 pop {r4, r5, r6, r7, pc} _021F4676: ldr r0, [sp] add r1, r7, #0 bl MOD16_021F4A40 cmp r0, #0 beq _021F4688 add sp, #0x14 mov r0, #2 pop {r4, r5, r6, r7, pc} _021F4688: mov r0, #1 add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _021F4690: .word 0x000021A4 _021F4694: .word 0x0000219C thumb_func_end MOD16_021F45A4 thumb_func_start MOD16_021F4698 MOD16_021F4698: ; 0x021F4698 push {r4, r5, r6, r7, lr} sub sp, #0x94 add r7, r0, #0 str r1, [sp, #0x18] lsl r1, r1, #0x18 ldr r5, [r7, #0x30] lsr r4, r1, #0x18 bl FUN_0222FF74 mov r1, #0x10 tst r0, r1 bne _021F46BC add r0, r7, #0 bl FUN_0222FF74 mov r1, #8 tst r0, r1 beq _021F46C0 _021F46BC: str r4, [sp, #0x44] b _021F46CE _021F46C0: ldr r1, [sp, #0x18] add r0, r7, #0 bl FUN_022302BC lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x44] _021F46CE: ldr r2, [sp, #0x18] add r0, r7, #0 add r1, r5, #0 bl MOD11_022482A4 lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r1, [sp, #0x18] add r0, r7, #0 bl MOD11_0222FFC8 str r0, [sp, #0x40] mov r0, #0 str r0, [sp, #0x50] add r0, r5, r4 str r0, [sp, #0x34] ldr r0, [sp, #0x44] add r0, r5, r0 str r0, [sp, #0x30] _021F46F4: mov r0, #0 str r0, [sp, #0x48] mov r0, #6 str r0, [sp, #0x38] ldr r0, [sp, #0x40] ldr r4, [sp, #0x48] cmp r0, #0 ble _021F47F8 _021F4704: ldr r1, [sp, #0x18] add r0, r7, #0 add r2, r4, #0 bl FUN_02230014 mov r1, #0xad mov r2, #0 str r0, [sp, #0x68] bl FUN_020671BC lsl r0, r0, #0x10 lsr r1, r0, #0x10 beq _021F47E0 ldr r0, _021F4A1C ; =0x000001EE cmp r1, r0 beq _021F47E0 ldr r0, [sp, #0x68] mov r1, #0xa2 mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F47E0 add r0, r4, #0 bl FUN_0206A92C ldr r1, [sp, #0x50] tst r0, r1 bne _021F47E0 ldr r1, [sp, #0x34] ldr r0, _021F4A20 ; =0x0000219C ldrb r0, [r1, r0] cmp r4, r0 beq _021F47E0 ldr r1, [sp, #0x30] ldr r0, _021F4A20 ; =0x0000219C ldrb r0, [r1, r0] cmp r4, r0 beq _021F47E0 ldr r1, [sp, #0x34] ldr r0, _021F4A24 ; =0x000021A4 ldrb r0, [r1, r0] cmp r4, r0 beq _021F47E0 ldr r1, [sp, #0x30] ldr r0, _021F4A24 ; =0x000021A4 ldrb r0, [r1, r0] cmp r4, r0 beq _021F47E0 add r0, r5, #0 add r1, r6, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x60] add r0, r5, #0 add r1, r6, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x5c] ldr r0, [sp, #0x68] mov r1, #0xb0 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x58] ldr r0, [sp, #0x68] mov r1, #0xb1 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x54] ldr r0, [sp, #0x58] ldr r1, [sp, #0x60] ldr r2, [sp, #0x5c] bl MOD11_02246B9C lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x4c] ldr r0, [sp, #0x54] ldr r1, [sp, #0x60] ldr r2, [sp, #0x5c] bl MOD11_02246B9C ldr r1, [sp, #0x4c] add r0, r1, r0 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x4c] ldr r1, [sp, #0x48] cmp r1, r0 bhs _021F47F0 ldr r0, [sp, #0x4c] str r0, [sp, #0x48] lsl r0, r4, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x38] b _021F47F0 _021F47E0: add r0, r4, #0 bl FUN_0206A92C ldr r1, [sp, #0x50] orr r0, r1 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x50] _021F47F0: ldr r0, [sp, #0x40] add r4, r4, #1 cmp r4, r0 blt _021F4704 _021F47F8: ldr r0, [sp, #0x38] cmp r0, #6 beq _021F48C0 ldr r1, [sp, #0x18] ldr r2, [sp, #0x38] add r0, r7, #0 bl FUN_02230014 add r4, r0, #0 mov r0, #0 str r0, [sp, #0x20] _021F480E: ldr r1, [sp, #0x20] add r0, r4, #0 add r1, #0x36 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x3c] ldr r3, [sp, #0x3c] add r0, r7, #0 add r1, r5, #0 add r2, r4, #0 bl MOD16_021F3454 str r0, [sp, #0x6c] ldr r0, [sp, #0x3c] cmp r0, #0 beq _021F4898 mov r0, #0 str r0, [sp, #0x90] add r0, r4, #0 mov r1, #0xa mov r2, #0 bl FUN_020671BC str r0, [sp, #0x70] add r0, r5, #0 add r1, r6, #0 bl MOD11_02246D1C str r0, [sp, #0x74] add r0, r5, #0 add r1, r6, #0 bl MOD11_02249D90 str r0, [sp, #0x78] add r0, r5, #0 add r1, r6, #0 mov r2, #0x1b mov r3, #0 bl MOD11_02243420 str r0, [sp, #0x7c] add r0, r5, #0 add r1, r6, #0 mov r2, #0x1c mov r3, #0 bl MOD11_02243420 ldr r1, [sp, #0x74] ldr r2, [sp, #0x6c] str r1, [sp] ldr r1, [sp, #0x78] ldr r3, [sp, #0x70] str r1, [sp, #4] ldr r1, [sp, #0x7c] str r1, [sp, #8] str r0, [sp, #0xc] add r0, sp, #0x90 str r0, [sp, #0x10] ldr r1, [sp, #0x3c] add r0, r5, #0 bl MOD11_022465A0 ldr r1, [sp, #0x90] mov r0, #2 tst r0, r1 bne _021F48A2 _021F4898: ldr r0, [sp, #0x20] add r0, r0, #1 str r0, [sp, #0x20] cmp r0, #4 blt _021F480E _021F48A2: ldr r0, [sp, #0x20] cmp r0, #4 bne _021F48BA ldr r0, [sp, #0x38] bl FUN_0206A92C ldr r1, [sp, #0x50] orr r0, r1 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x50] b _021F48C4 _021F48BA: ldr r0, [sp, #0x38] add sp, #0x94 pop {r4, r5, r6, r7, pc} _021F48C0: mov r0, #0x3f str r0, [sp, #0x50] _021F48C4: ldr r0, [sp, #0x50] cmp r0, #0x3f beq _021F48CC b _021F46F4 _021F48CC: mov r0, #0 str r0, [sp, #0x28] mov r0, #6 str r0, [sp, #0x2c] ldr r0, [sp, #0x28] str r0, [sp, #0x24] ldr r0, [sp, #0x40] cmp r0, #0 bgt _021F48E0 b _021F4A14 _021F48E0: ldr r1, [sp, #0x18] ldr r2, [sp, #0x24] add r0, r7, #0 bl FUN_02230014 mov r1, #0xad mov r2, #0 str r0, [sp, #0x1c] bl FUN_020671BC lsl r0, r0, #0x10 lsr r1, r0, #0x10 beq _021F4900 ldr r0, _021F4A1C ; =0x000001EE cmp r1, r0 bne _021F4902 _021F4900: b _021F4A06 _021F4902: ldr r0, [sp, #0x1c] mov r1, #0xa2 mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F4A06 ldr r0, _021F4A20 ; =0x0000219C ldr r1, [sp, #0x34] ldrb r2, [r1, r0] ldr r1, [sp, #0x24] cmp r1, r2 beq _021F4A06 ldr r1, [sp, #0x30] ldrb r2, [r1, r0] ldr r1, [sp, #0x24] cmp r1, r2 beq _021F4A06 add r2, r0, #0 ldr r1, [sp, #0x34] add r2, #8 ldrb r2, [r1, r2] ldr r1, [sp, #0x24] cmp r1, r2 beq _021F4A06 ldr r1, [sp, #0x30] add r0, #8 ldrb r1, [r1, r0] ldr r0, [sp, #0x24] cmp r0, r1 beq _021F4A06 mov r0, #0 str r0, [sp, #0x64] ldr r0, [sp, #0x18] lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x84] ldr r0, [sp, #0x24] lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x88] _021F4954: ldr r1, [sp, #0x64] ldr r0, [sp, #0x1c] add r1, #0x36 mov r2, #0 bl FUN_020671BC lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x8c] ldr r2, [sp, #0x1c] ldr r3, [sp, #0x8c] add r0, r7, #0 add r1, r5, #0 bl MOD16_021F3454 str r0, [sp, #0x80] ldr r0, [sp, #0x8c] cmp r0, #0 beq _021F49EE lsl r0, r0, #4 add r1, r5, r0 ldr r0, _021F4A28 ; =0x000003E1 ldrb r0, [r1, r0] cmp r0, #1 beq _021F49EE add r0, r7, #0 add r1, r6, #0 bl MOD11_02230270 add r3, r0, #0 mov r0, #6 lsl r0, r0, #6 ldr r0, [r5, r0] lsl r3, r3, #2 str r0, [sp] mov r0, #0 str r0, [sp, #4] str r0, [sp, #8] ldr r0, [sp, #0x84] add r4, r5, r3 str r0, [sp, #0xc] mov r3, #0x6f str r6, [sp, #0x10] mov r0, #1 str r0, [sp, #0x14] lsl r3, r3, #2 ldr r2, [sp, #0x8c] ldr r3, [r4, r3] add r0, r7, #0 add r1, r5, #0 bl MOD11_0224B310 lsl r0, r0, #0x18 lsr r1, r0, #0x18 mov r0, #0 str r0, [sp, #0x90] ldr r0, [sp, #0x18] ldr r3, [sp, #0x80] str r0, [sp] str r6, [sp, #4] str r1, [sp, #8] add r0, sp, #0x90 str r0, [sp, #0xc] ldr r2, [sp, #0x8c] add r0, r7, #0 add r1, r5, #0 bl MOD11_02246274 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x4c] ldr r1, [sp, #0x90] ldr r0, _021F4A2C ; =0x00140808 tst r0, r1 beq _021F49EE mov r0, #0 str r0, [sp, #0x4c] _021F49EE: ldr r1, [sp, #0x28] ldr r0, [sp, #0x4c] cmp r1, r0 bhs _021F49FC str r0, [sp, #0x28] ldr r0, [sp, #0x88] str r0, [sp, #0x2c] _021F49FC: ldr r0, [sp, #0x64] add r0, r0, #1 str r0, [sp, #0x64] cmp r0, #4 blt _021F4954 _021F4A06: ldr r0, [sp, #0x24] add r1, r0, #1 ldr r0, [sp, #0x40] str r1, [sp, #0x24] cmp r1, r0 bge _021F4A14 b _021F48E0 _021F4A14: ldr r0, [sp, #0x2c] add sp, #0x94 pop {r4, r5, r6, r7, pc} nop _021F4A1C: .word 0x000001EE _021F4A20: .word 0x0000219C _021F4A24: .word 0x000021A4 _021F4A28: .word 0x000003E1 _021F4A2C: .word 0x00140808 thumb_func_end MOD16_021F4698 thumb_func_start MOD16_021F4A30 MOD16_021F4A30: ; 0x021F4A30 ldr r0, [r0, #0x30] add r1, r0, r1 ldr r0, _021F4A3C ; =0x000021A4 ldrb r0, [r1, r0] bx lr nop _021F4A3C: .word 0x000021A4 thumb_func_end MOD16_021F4A30 thumb_func_start MOD16_021F4A40 MOD16_021F4A40: ; 0x021F4A40 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r5, r0, #0 mov r2, #0 str r2, [sp, #0x14] add r2, r1, #0 asr r2, r2, #1 ldr r4, [r5, #0x30] str r2, [sp, #0xc] add r6, r4, r2 ldr r2, [sp, #0x14] ldr r3, _021F4D6C ; =0x000003D3 str r2, [sp, #0x1c] strb r2, [r6, r3] ldr r3, [r5, #0x2c] mov r2, #0x4b and r2, r3 str r1, [sp] cmp r2, #0x4b bne _021F4A76 bl FUN_02230260 cmp r0, #4 bne _021F4A76 add sp, #0x20 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F4A76: ldr r0, [sp] mov r1, #0xc0 mul r1, r0 mov r0, #0xb7 str r1, [sp, #8] add r1, r4, r1 lsl r0, r0, #6 ldr r1, [r1, r0] mov r0, #1 lsl r0, r0, #0x1a tst r0, r1 beq _021F4A94 add sp, #0x20 mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021F4A94: ldr r1, [sp] add r0, r5, #0 bl FUN_0222FF88 add r7, r0, #0 mov r5, #0 bl FUN_0206B9AC cmp r0, #0 ble _021F4AF2 _021F4AA8: add r0, r7, #0 add r1, r5, #0 bl FUN_0206B9B0 mov r1, #0xa2 mov r2, #0 add r6, r0, #0 bl FUN_020671BC cmp r0, #0 beq _021F4AE6 add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC cmp r0, #0 beq _021F4AE6 add r0, r6, #0 mov r1, #0xad mov r2, #0 bl FUN_020671BC ldr r1, _021F4D70 ; =0x000001EE cmp r0, r1 beq _021F4AE6 ldr r0, [sp, #0x14] add r0, r0, #1 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x14] _021F4AE6: add r0, r7, #0 add r5, r5, #1 bl FUN_0206B9AC cmp r5, r0 blt _021F4AA8 _021F4AF2: mov r0, #0 str r0, [sp, #4] ldr r0, [sp, #0xc] mov r1, #1 lsl r0, r0, #3 add r0, r4, r0 str r0, [sp, #0x18] ldr r0, [sp, #0xc] add r5, r4, r0 ldr r0, [sp, #8] add r7, r4, r0 ldr r0, [sp] bic r0, r1 str r0, [sp] add r0, r4, r0 str r0, [sp, #0x10] _021F4B12: ldr r0, [sp, #4] cmp r0, #0 beq _021F4B28 ldr r0, _021F4D74 ; =0x000003CD ldrb r1, [r5, r0] ldr r0, [sp, #4] sub r0, r1, r0 add r1, r0, #1 ldr r0, [sp, #0x14] cmp r0, r1 bgt _021F4B34 _021F4B28: mov r0, #0xe7 ldr r1, [sp, #0x18] lsl r0, r0, #2 ldrh r6, [r1, r0] cmp r6, #0 bne _021F4B36 _021F4B34: b _021F4E0E _021F4B36: cmp r6, #0x17 bne _021F4B58 ldr r1, _021F4D78 ; =0x00002D90 ldr r0, _021F4D7C ; =0x00002D8C ldr r1, [r7, r1] ldr r0, [r7, r0] lsr r1, r1, #2 cmp r0, r1 bhs _021F4BB2 cmp r0, #0 beq _021F4BB2 ldr r0, _021F4D80 ; =0x000003D1 mov r1, #0 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4B58: add r0, r4, #0 add r1, r6, #0 mov r2, #0x26 bl MOD11_0224C12C cmp r0, #0 beq _021F4B9A add r0, r4, #0 add r1, r6, #0 mov r2, #0x36 bl MOD11_0224C12C lsl r0, r0, #0x18 lsr r2, r0, #0x18 beq _021F4BB2 ldr r0, _021F4D7C ; =0x00002D8C ldr r1, [r7, r0] cmp r1, #0 beq _021F4BB2 add r0, r0, #4 ldr r3, [r7, r0] lsr r0, r3, #2 cmp r1, r0 blo _021F4B8E sub r0, r3, r1 cmp r0, r2 bls _021F4BB2 _021F4B8E: ldr r0, _021F4D80 ; =0x000003D1 mov r1, #1 strb r1, [r5, r0] add r0, r1, #0 str r0, [sp, #0x1c] b _021F4DFA _021F4B9A: add r0, r4, #0 add r1, r6, #0 mov r2, #0xf bl MOD11_0224C12C cmp r0, #0 beq _021F4BD0 ldr r0, _021F4D84 ; =0x00002DAC ldr r1, [r7, r0] mov r0, #7 tst r0, r1 bne _021F4BB4 _021F4BB2: b _021F4DFA _021F4BB4: mov r0, #5 bl FUN_0206A92C ldr r1, _021F4D6C ; =0x000003D3 ldrb r1, [r5, r1] orr r1, r0 ldr r0, _021F4D6C ; =0x000003D3 strb r1, [r5, r0] mov r1, #2 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4BD0: add r0, r4, #0 add r1, r6, #0 mov r2, #0x10 bl MOD11_0224C12C cmp r0, #0 beq _021F4C0A ldr r0, _021F4D84 ; =0x00002DAC mov r1, #8 ldr r0, [r7, r0] tst r1, r0 bne _021F4BEE mov r1, #0x80 tst r0, r1 beq _021F4CBE _021F4BEE: mov r0, #4 bl FUN_0206A92C ldr r1, _021F4D6C ; =0x000003D3 ldrb r1, [r5, r1] orr r1, r0 ldr r0, _021F4D6C ; =0x000003D3 strb r1, [r5, r0] mov r1, #2 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4C0A: add r0, r4, #0 add r1, r6, #0 mov r2, #0x11 bl MOD11_0224C12C cmp r0, #0 beq _021F4C3E ldr r0, _021F4D84 ; =0x00002DAC ldr r1, [r7, r0] mov r0, #0x10 tst r0, r1 beq _021F4CBE mov r0, #3 bl FUN_0206A92C ldr r1, _021F4D6C ; =0x000003D3 ldrb r1, [r5, r1] orr r1, r0 ldr r0, _021F4D6C ; =0x000003D3 strb r1, [r5, r0] mov r1, #2 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4C3E: add r0, r4, #0 add r1, r6, #0 mov r2, #0x12 bl MOD11_0224C12C cmp r0, #0 beq _021F4C72 ldr r0, _021F4D84 ; =0x00002DAC ldr r1, [r7, r0] mov r0, #0x20 tst r0, r1 beq _021F4CBE mov r0, #2 bl FUN_0206A92C ldr r1, _021F4D6C ; =0x000003D3 ldrb r1, [r5, r1] orr r1, r0 ldr r0, _021F4D6C ; =0x000003D3 strb r1, [r5, r0] mov r1, #2 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4C72: add r0, r4, #0 add r1, r6, #0 mov r2, #0x13 bl MOD11_0224C12C cmp r0, #0 beq _021F4CA6 ldr r0, _021F4D84 ; =0x00002DAC ldr r1, [r7, r0] mov r0, #0x40 tst r0, r1 beq _021F4CBE mov r0, #1 bl FUN_0206A92C ldr r1, _021F4D6C ; =0x000003D3 ldrb r1, [r5, r1] orr r1, r0 ldr r0, _021F4D6C ; =0x000003D3 strb r1, [r5, r0] mov r1, #2 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4CA6: add r0, r4, #0 add r1, r6, #0 mov r2, #0x14 bl MOD11_0224C12C cmp r0, #0 beq _021F4CDC ldr r0, _021F4D88 ; =0x00002DB0 ldr r1, [r7, r0] mov r0, #7 tst r0, r1 bne _021F4CC0 _021F4CBE: b _021F4DFA _021F4CC0: mov r0, #0 bl FUN_0206A92C ldr r1, _021F4D6C ; =0x000003D3 ldrb r1, [r5, r1] orr r1, r0 ldr r0, _021F4D6C ; =0x000003D3 strb r1, [r5, r0] mov r1, #2 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4CDC: ldr r0, _021F4D8C ; =0x00002DD4 ldr r1, [r7, r0] mov r0, #0x15 lsl r0, r0, #4 ldr r0, [r4, r0] sub r0, r1, r0 bpl _021F4CEC b _021F4DF4 _021F4CEC: add r0, r4, #0 add r1, r6, #0 mov r2, #0x1b bl MOD11_0224C12C cmp r0, #0 beq _021F4D0C ldr r0, _021F4D6C ; =0x000003D3 mov r1, #1 strb r1, [r5, r0] mov r1, #3 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4D0C: add r0, r4, #0 add r1, r6, #0 mov r2, #0x1c bl MOD11_0224C12C cmp r0, #0 beq _021F4D2C ldr r0, _021F4D6C ; =0x000003D3 mov r1, #2 strb r1, [r5, r0] mov r1, #3 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4D2C: add r0, r4, #0 add r1, r6, #0 mov r2, #0x1d bl MOD11_0224C12C cmp r0, #0 beq _021F4D4C ldr r0, _021F4D6C ; =0x000003D3 mov r1, #4 strb r1, [r5, r0] mov r1, #3 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4D4C: add r0, r4, #0 add r1, r6, #0 mov r2, #0x1e bl MOD11_0224C12C cmp r0, #0 beq _021F4D90 ldr r0, _021F4D6C ; =0x000003D3 mov r1, #5 strb r1, [r5, r0] mov r1, #3 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA .align 2, 0 _021F4D6C: .word 0x000003D3 _021F4D70: .word 0x000001EE _021F4D74: .word 0x000003CD _021F4D78: .word 0x00002D90 _021F4D7C: .word 0x00002D8C _021F4D80: .word 0x000003D1 _021F4D84: .word 0x00002DAC _021F4D88: .word 0x00002DB0 _021F4D8C: .word 0x00002DD4 _021F4D90: add r0, r4, #0 add r1, r6, #0 mov r2, #0x1f bl MOD11_0224C12C cmp r0, #0 beq _021F4DAE ldr r0, _021F4E28 ; =0x000003D3 mov r1, #3 strb r1, [r5, r0] sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4DAE: add r0, r4, #0 add r1, r6, #0 mov r2, #0x20 bl MOD11_0224C12C cmp r0, #0 beq _021F4DCE ldr r0, _021F4E28 ; =0x000003D3 mov r1, #6 strb r1, [r5, r0] mov r1, #3 sub r0, r0, #2 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4DCE: add r0, r4, #0 add r1, r6, #0 mov r2, #0x16 bl MOD11_0224C12C cmp r0, #0 beq _021F4DFA mov r0, #7 lsl r0, r0, #6 ldr r1, [r4, r0] mov r0, #0x40 tst r0, r1 bne _021F4DFA ldr r0, _021F4E2C ; =0x000003D1 mov r1, #4 strb r1, [r5, r0] mov r0, #1 str r0, [sp, #0x1c] b _021F4DFA _021F4DF4: ldr r0, _021F4E2C ; =0x000003D1 mov r1, #5 strb r1, [r5, r0] _021F4DFA: ldr r0, [sp, #0x1c] cmp r0, #1 bne _021F4E0E ldr r1, [sp, #0x10] ldr r0, _021F4E30 ; =0x000003D6 mov r2, #0 strh r6, [r1, r0] ldr r1, [sp, #0x18] sub r0, #0x3a strh r2, [r1, r0] _021F4E0E: ldr r0, [sp, #0x18] add r0, r0, #2 str r0, [sp, #0x18] ldr r0, [sp, #4] add r0, r0, #1 str r0, [sp, #4] cmp r0, #4 bge _021F4E20 b _021F4B12 _021F4E20: ldr r0, [sp, #0x1c] add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} nop _021F4E28: .word 0x000003D3 _021F4E2C: .word 0x000003D1 _021F4E30: .word 0x000003D6 thumb_func_end MOD16_021F4A40 .section .rodata ; 0x021F4E34 .incbin "baserom.nds", 0x259554, 0xAB90