diff options
Diffstat (limited to 'asm/math_util.s')
-rw-r--r-- | asm/math_util.s | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/asm/math_util.s b/asm/math_util.s new file mode 100644 index 000000000..906706d61 --- /dev/null +++ b/asm/math_util.s @@ -0,0 +1,202 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8151534 +sub_8151534: @ 8151534 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + muls r0, r1 + adds r1, r0, 0 + cmp r0, 0 + bge _08151548 + adds r1, 0xFF +_08151548: + lsls r0, r1, 8 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8151534 + + thumb_func_start sub_8151550 +sub_8151550: @ 8151550 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + asrs r3, 16 + lsls r2, 16 + asrs r2, 16 + muls r3, r2 + movs r1, 0x1 + lsls r1, r0 + adds r0, r3, 0 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8151550 + + thumb_func_start sub_8151574 +sub_8151574: @ 8151574 + push {r4-r7,lr} + adds r2, r1, 0 + adds r4, r0, 0 + asrs r5, r0, 31 + asrs r3, r2, 31 + adds r1, r5, 0 + adds r0, r4, 0 + bl __muldi3 + adds r5, r1, 0 + adds r4, r0, 0 + adds r7, r5, 0 + adds r6, r4, 0 + cmp r5, 0 + bge _0815159A + movs r6, 0xFF + movs r7, 0 + adds r6, r4 + adcs r7, r5 +_0815159A: + lsls r3, r7, 24 + lsrs r2, r6, 8 + adds r0, r3, 0 + orrs r0, r2 + asrs r1, r7, 8 + adds r5, r1, 0 + adds r4, r0, 0 + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8151574 + + thumb_func_start sub_81515B0 +sub_81515B0: @ 81515B0 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + asrs r1, 16 + cmp r1, 0 + beq _081515CC + lsls r0, 16 + asrs r0, 8 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + b _081515CE +_081515CC: + movs r0, 0 +_081515CE: + pop {r1} + bx r1 + thumb_func_end sub_81515B0 + + thumb_func_start sub_81515D4 +sub_81515D4: @ 81515D4 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r0, r1, 16 + lsls r2, 16 + asrs r1, r2, 16 + cmp r1, 0 + beq _081515F6 + lsls r0, 16 + asrs r0, 16 + lsls r0, r3 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + b _081515F8 +_081515F6: + movs r0, 0 +_081515F8: + pop {r1} + bx r1 + thumb_func_end sub_81515D4 + + thumb_func_start sub_81515FC +sub_81515FC: @ 81515FC + push {r4-r6,lr} + adds r6, r1, 0 + cmp r6, 0 + beq _0815161C + adds r2, r0, 0 + asrs r3, r0, 31 + lsrs r5, r2, 24 + lsls r4, r3, 8 + adds r1, r5, 0 + orrs r1, r4 + lsls r0, r2, 8 + adds r2, r6, 0 + asrs r3, r6, 31 + bl __divdi3 + b _0815161E +_0815161C: + movs r0, 0 +_0815161E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81515FC + + thumb_func_start sub_8151624 +sub_8151624: @ 8151624 + push {lr} + adds r1, r0, 0 + movs r0, 0x80 + lsls r0, 9 + lsls r1, 16 + asrs r1, 16 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8151624 + + thumb_func_start sub_815163C +sub_815163C: @ 815163C + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + lsls r2, r0 + lsls r1, 16 + asrs r1, 16 + adds r0, r2, 0 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_815163C + + thumb_func_start sub_815165C +sub_815165C: @ 815165C + push {lr} + adds r2, r0, 0 + ldr r1, _08151674 + ldr r0, _08151670 + asrs r3, r2, 31 + bl __divdi3 + pop {r1} + bx r1 + .align 2, 0 +_08151670: .4byte 0x00010000 +_08151674: .4byte 0x00000000 + thumb_func_end sub_815165C + + .align 2, 0 @ Don't pad with nop. |