mirror of https://github.com/zeldaret/oot.git
221 lines
10 KiB
ArmAsm
221 lines
10 KiB
ArmAsm
glabel func_800DD6CC
|
|
/* B5486C 800DD6CC 27BDFF98 */ addiu $sp, $sp, -0x68
|
|
/* B54870 800DD6D0 AFBF0024 */ sw $ra, 0x24($sp)
|
|
/* B54874 800DD6D4 AFB10020 */ sw $s1, 0x20($sp)
|
|
/* B54878 800DD6D8 AFB0001C */ sw $s0, 0x1c($sp)
|
|
/* B5487C 800DD6DC AFA70074 */ sw $a3, 0x74($sp)
|
|
/* B54880 800DD6E0 94A20008 */ lhu $v0, 8($a1)
|
|
/* B54884 800DD6E4 94A3000A */ lhu $v1, 0xa($a1)
|
|
/* B54888 800DD6E8 94CD0010 */ lhu $t5, 0x10($a2)
|
|
/* B5488C 800DD6EC 00021100 */ sll $v0, $v0, 4
|
|
/* B54890 800DD6F0 3048FFFF */ andi $t0, $v0, 0xffff
|
|
/* B54894 800DD6F4 00031900 */ sll $v1, $v1, 4
|
|
/* B54898 800DD6F8 00808025 */ move $s0, $a0
|
|
/* B5489C 800DD6FC 00A08825 */ move $s1, $a1
|
|
/* B548A0 800DD700 90AA0005 */ lbu $t2, 5($a1)
|
|
/* B548A4 800DD704 94DF0012 */ lhu $ra, 0x12($a2)
|
|
/* B548A8 800DD708 3063FFFF */ andi $v1, $v1, 0xffff
|
|
/* B548AC 800DD70C 11A80012 */ beq $t5, $t0, .L800DD758
|
|
/* B548B0 800DD710 01A04825 */ move $t1, $t5
|
|
/* B548B4 800DD714 000710C3 */ sra $v0, $a3, 3
|
|
/* B548B8 800DD718 01097023 */ subu $t6, $t0, $t1
|
|
/* B548BC 800DD71C 01C2001A */ div $zero, $t6, $v0
|
|
/* B548C0 800DD720 00003812 */ mflo $a3
|
|
/* B548C4 800DD724 00073C00 */ sll $a3, $a3, 0x10
|
|
/* B548C8 800DD728 14400002 */ bnez $v0, .L800DD734
|
|
/* B548CC 800DD72C 00000000 */ nop
|
|
/* B548D0 800DD730 0007000D */ break 7
|
|
.L800DD734:
|
|
/* B548D4 800DD734 2401FFFF */ li $at, -1
|
|
/* B548D8 800DD738 14410004 */ bne $v0, $at, .L800DD74C
|
|
/* B548DC 800DD73C 3C018000 */ lui $at, 0x8000
|
|
/* B548E0 800DD740 15C10002 */ bne $t6, $at, .L800DD74C
|
|
/* B548E4 800DD744 00000000 */ nop
|
|
/* B548E8 800DD748 0006000D */ break 6
|
|
.L800DD74C:
|
|
/* B548EC 800DD74C 00073C03 */ sra $a3, $a3, 0x10
|
|
/* B548F0 800DD750 10000005 */ b .L800DD768
|
|
/* B548F4 800DD754 03E05825 */ move $t3, $ra
|
|
.L800DD758:
|
|
/* B548F8 800DD758 8FA20074 */ lw $v0, 0x74($sp)
|
|
/* B548FC 800DD75C 00003825 */ move $a3, $zero
|
|
/* B54900 800DD760 000210C3 */ sra $v0, $v0, 3
|
|
/* B54904 800DD764 03E05825 */ move $t3, $ra
|
|
.L800DD768:
|
|
/* B54908 800DD768 13E30011 */ beq $ra, $v1, .L800DD7B0
|
|
/* B5490C 800DD76C 00602025 */ move $a0, $v1
|
|
/* B54910 800DD770 008B7823 */ subu $t7, $a0, $t3
|
|
/* B54914 800DD774 01E2001A */ div $zero, $t7, $v0
|
|
/* B54918 800DD778 00004012 */ mflo $t0
|
|
/* B5491C 800DD77C 00084400 */ sll $t0, $t0, 0x10
|
|
/* B54920 800DD780 14400002 */ bnez $v0, .L800DD78C
|
|
/* B54924 800DD784 00000000 */ nop
|
|
/* B54928 800DD788 0007000D */ break 7
|
|
.L800DD78C:
|
|
/* B5492C 800DD78C 2401FFFF */ li $at, -1
|
|
/* B54930 800DD790 14410004 */ bne $v0, $at, .L800DD7A4
|
|
/* B54934 800DD794 3C018000 */ lui $at, 0x8000
|
|
/* B54938 800DD798 15E10002 */ bne $t7, $at, .L800DD7A4
|
|
/* B5493C 800DD79C 00000000 */ nop
|
|
/* B54940 800DD7A0 0006000D */ break 6
|
|
.L800DD7A4:
|
|
/* B54944 800DD7A4 00084403 */ sra $t0, $t0, 0x10
|
|
/* B54948 800DD7A8 10000003 */ b .L800DD7B8
|
|
/* B5494C 800DD7AC 90CC0004 */ lbu $t4, 4($a2)
|
|
.L800DD7B0:
|
|
/* B54950 800DD7B0 00004025 */ move $t0, $zero
|
|
/* B54954 800DD7B4 90CC0004 */ lbu $t4, 4($a2)
|
|
.L800DD7B8:
|
|
/* B54958 800DD7B8 AFA90030 */ sw $t1, 0x30($sp)
|
|
/* B5495C 800DD7BC 3158007F */ andi $t8, $t2, 0x7f
|
|
/* B54960 800DD7C0 118A0013 */ beq $t4, $t2, .L800DD810
|
|
/* B54964 800DD7C4 3189007F */ andi $t1, $t4, 0x7f
|
|
/* B54968 800DD7C8 3189007F */ andi $t1, $t4, 0x7f
|
|
/* B5496C 800DD7CC 0309C823 */ subu $t9, $t8, $t1
|
|
/* B54970 800DD7D0 00197240 */ sll $t6, $t9, 9
|
|
/* B54974 800DD7D4 01C2001A */ div $zero, $t6, $v0
|
|
/* B54978 800DD7D8 00007812 */ mflo $t7
|
|
/* B5497C 800DD7DC A7AF0052 */ sh $t7, 0x52($sp)
|
|
/* B54980 800DD7E0 14400002 */ bnez $v0, .L800DD7EC
|
|
/* B54984 800DD7E4 00000000 */ nop
|
|
/* B54988 800DD7E8 0007000D */ break 7
|
|
.L800DD7EC:
|
|
/* B5498C 800DD7EC 2401FFFF */ li $at, -1
|
|
/* B54990 800DD7F0 14410004 */ bne $v0, $at, .L800DD804
|
|
/* B54994 800DD7F4 3C018000 */ lui $at, 0x8000
|
|
/* B54998 800DD7F8 15C10002 */ bne $t6, $at, .L800DD804
|
|
/* B5499C 800DD7FC 00000000 */ nop
|
|
/* B549A0 800DD800 0006000D */ break 6
|
|
.L800DD804:
|
|
/* B549A4 800DD804 A0CA0004 */ sb $t2, 4($a2)
|
|
/* B549A8 800DD808 10000002 */ b .L800DD814
|
|
/* B549AC 800DD80C 00000000 */ nop
|
|
.L800DD810:
|
|
/* B549B0 800DD810 A7A00052 */ sh $zero, 0x52($sp)
|
|
.L800DD814:
|
|
/* B549B4 800DD814 00E20019 */ multu $a3, $v0
|
|
/* B549B8 800DD818 8FB80030 */ lw $t8, 0x30($sp)
|
|
/* B549BC 800DD81C 02002025 */ move $a0, $s0
|
|
/* B549C0 800DD820 3C011200 */ lui $at, 0x1200
|
|
/* B549C4 800DD824 3C058013 */ lui $a1, %hi(D_801304AC) # $a1, 0x8013
|
|
/* B549C8 800DD828 0000C812 */ mflo $t9
|
|
/* B549CC 800DD82C 03197021 */ addu $t6, $t8, $t9
|
|
/* B549D0 800DD830 A4CE0010 */ sh $t6, 0x10($a2)
|
|
/* B549D4 800DD834 01020019 */ multu $t0, $v0
|
|
/* B549D8 800DD838 02001025 */ move $v0, $s0
|
|
/* B549DC 800DD83C 00007812 */ mflo $t7
|
|
/* B549E0 800DD840 016FC021 */ addu $t8, $t3, $t7
|
|
/* B549E4 800DD844 A4D80012 */ sh $t8, 0x12($a2)
|
|
/* B549E8 800DD848 96390000 */ lhu $t9, ($s1)
|
|
/* B549EC 800DD84C 00097840 */ sll $t7, $t1, 1
|
|
/* B549F0 800DD850 31F800FF */ andi $t8, $t7, 0xff
|
|
/* B549F4 800DD854 332E0001 */ andi $t6, $t9, 1
|
|
/* B549F8 800DD858 11C00027 */ beqz $t6, .L800DD8F8
|
|
/* B549FC 800DD85C 0018CC00 */ sll $t9, $t8, 0x10
|
|
/* B54A00 800DD860 240505C0 */ li $a1, 1472
|
|
/* B54A04 800DD864 240601A0 */ li $a2, 416
|
|
/* B54A08 800DD868 26100008 */ addiu $s0, $s0, 8
|
|
/* B54A0C 800DD86C A7A70056 */ sh $a3, 0x56($sp)
|
|
/* B54A10 800DD870 A7A80054 */ sh $t0, 0x54($sp)
|
|
/* B54A14 800DD874 AFA90034 */ sw $t1, 0x34($sp)
|
|
/* B54A18 800DD878 AFAB0028 */ sw $t3, 0x28($sp)
|
|
/* B54A1C 800DD87C 0C036EE7 */ jal func_800DBB9C
|
|
/* B54A20 800DD880 A7AC0050 */ sh $t4, 0x50($sp)
|
|
/* B54A24 800DD884 87A80054 */ lh $t0, 0x54($sp)
|
|
/* B54A28 800DD888 8FA90034 */ lw $t1, 0x34($sp)
|
|
/* B54A2C 800DD88C 02002025 */ move $a0, $s0
|
|
/* B54A30 800DD890 87A70056 */ lh $a3, 0x56($sp)
|
|
/* B54A34 800DD894 26100008 */ addiu $s0, $s0, 8
|
|
/* B54A38 800DD898 87A60052 */ lh $a2, 0x52($sp)
|
|
/* B54A3C 800DD89C AFA80010 */ sw $t0, 0x10($sp)
|
|
/* B54A40 800DD8A0 0C036F35 */ jal func_800DBCD4
|
|
/* B54A44 800DD8A4 00092840 */ sll $a1, $t1, 1
|
|
/* B54A48 800DD8A8 02002025 */ move $a0, $s0
|
|
/* B54A4C 800DD8AC 26100008 */ addiu $s0, $s0, 8
|
|
/* B54A50 800DD8B0 8FA50030 */ lw $a1, 0x30($sp)
|
|
/* B54A54 800DD8B4 0C036F58 */ jal func_800DBD60
|
|
/* B54A58 800DD8B8 8FA60028 */ lw $a2, 0x28($sp)
|
|
/* B54A5C 800DD8BC 8FA2007C */ lw $v0, 0x7c($sp)
|
|
/* B54A60 800DD8C0 24010001 */ li $at, 1
|
|
/* B54A64 800DD8C4 87AC0050 */ lh $t4, 0x50($sp)
|
|
/* B54A68 800DD8C8 10410007 */ beq $v0, $at, .L800DD8E8
|
|
/* B54A6C 800DD8CC 3C058013 */ lui $a1, %hi(D_801304A4) # $a1, 0x8013
|
|
/* B54A70 800DD8D0 24010002 */ li $at, 2
|
|
/* B54A74 800DD8D4 10410006 */ beq $v0, $at, .L800DD8F0
|
|
/* B54A78 800DD8D8 3C058013 */ lui $a1, %hi(D_801304A8) # $a1, 0x8013
|
|
/* B54A7C 800DD8DC 3C058013 */ lui $a1, %hi(D_801304AC) # $a1, 0x8013
|
|
/* B54A80 800DD8E0 10000018 */ b .L800DD944
|
|
/* B54A84 800DD8E4 8CA504AC */ lw $a1, %lo(D_801304AC)($a1)
|
|
.L800DD8E8:
|
|
/* B54A88 800DD8E8 10000016 */ b .L800DD944
|
|
/* B54A8C 800DD8EC 8CA504A4 */ lw $a1, %lo(D_801304A4)($a1)
|
|
.L800DD8F0:
|
|
/* B54A90 800DD8F0 10000014 */ b .L800DD944
|
|
/* B54A94 800DD8F4 8CA504A8 */ lw $a1, %lo(D_801304A8)($a1)
|
|
.L800DD8F8:
|
|
/* B54A98 800DD8F8 87AF0052 */ lh $t7, 0x52($sp)
|
|
/* B54A9C 800DD8FC 03217025 */ or $t6, $t9, $at
|
|
/* B54AA0 800DD900 26100008 */ addiu $s0, $s0, 8
|
|
/* B54AA4 800DD904 31F8FFFF */ andi $t8, $t7, 0xffff
|
|
/* B54AA8 800DD908 01D8C825 */ or $t9, $t6, $t8
|
|
/* B54AAC 800DD90C AC590000 */ sw $t9, ($v0)
|
|
/* B54AB0 800DD910 3118FFFF */ andi $t8, $t0, 0xffff
|
|
/* B54AB4 800DD914 00077400 */ sll $t6, $a3, 0x10
|
|
/* B54AB8 800DD918 01D8C825 */ or $t9, $t6, $t8
|
|
/* B54ABC 800DD91C AC590004 */ sw $t9, 4($v0)
|
|
/* B54AC0 800DD920 3C0F1600 */ lui $t7, 0x1600
|
|
/* B54AC4 800DD924 02001825 */ move $v1, $s0
|
|
/* B54AC8 800DD928 AC6F0000 */ sw $t7, ($v1)
|
|
/* B54ACC 800DD92C 33F9FFFF */ andi $t9, $ra, 0xffff
|
|
/* B54AD0 800DD930 000DC400 */ sll $t8, $t5, 0x10
|
|
/* B54AD4 800DD934 03197825 */ or $t7, $t8, $t9
|
|
/* B54AD8 800DD938 AC6F0004 */ sw $t7, 4($v1)
|
|
/* B54ADC 800DD93C 26100008 */ addiu $s0, $s0, 8
|
|
/* B54AE0 800DD940 8CA504AC */ lw $a1, %lo(D_801304AC)($a1)
|
|
.L800DD944:
|
|
/* B54AE4 800DD944 97AE007A */ lhu $t6, 0x7a($sp)
|
|
/* B54AE8 800DD948 8E230000 */ lw $v1, ($s1)
|
|
/* B54AEC 800DD94C 02002025 */ move $a0, $s0
|
|
/* B54AF0 800DD950 000EC103 */ sra $t8, $t6, 4
|
|
/* B54AF4 800DD954 331900FF */ andi $t9, $t8, 0xff
|
|
/* B54AF8 800DD958 3C0E8013 */ lui $t6, %hi(D_801304A0) # $t6, 0x8013
|
|
/* B54AFC 800DD95C 8DCE04A0 */ lw $t6, %lo(D_801304A0)($t6)
|
|
/* B54B00 800DD960 00197C00 */ sll $t7, $t9, 0x10
|
|
/* B54B04 800DD964 8FB90074 */ lw $t9, 0x74($sp)
|
|
/* B54B08 800DD968 01EEC025 */ or $t8, $t7, $t6
|
|
/* B54B0C 800DD96C 26020008 */ addiu $v0, $s0, 8
|
|
/* B54B10 800DD970 332F00FF */ andi $t7, $t9, 0xff
|
|
/* B54B14 800DD974 000F7200 */ sll $t6, $t7, 8
|
|
/* B54B18 800DD978 030EC825 */ or $t9, $t8, $t6
|
|
/* B54B1C 800DD97C 318F0080 */ andi $t7, $t4, 0x80
|
|
/* B54B20 800DD980 000FC1C3 */ sra $t8, $t7, 7
|
|
/* B54B24 800DD984 330E0001 */ andi $t6, $t8, 1
|
|
/* B54B28 800DD988 000E7900 */ sll $t7, $t6, 4
|
|
/* B54B2C 800DD98C 032FC025 */ or $t8, $t9, $t7
|
|
/* B54B30 800DD990 00037180 */ sll $t6, $v1, 6
|
|
/* B54B34 800DD994 000ECFC2 */ srl $t9, $t6, 0x1f
|
|
/* B54B38 800DD998 332F0001 */ andi $t7, $t9, 1
|
|
/* B54B3C 800DD99C 000F70C0 */ sll $t6, $t7, 3
|
|
/* B54B40 800DD9A0 030EC825 */ or $t9, $t8, $t6
|
|
/* B54B44 800DD9A4 92380000 */ lbu $t8, ($s1)
|
|
/* B54B48 800DD9A8 AC850004 */ sw $a1, 4($a0)
|
|
/* B54B4C 800DD9AC 330E0001 */ andi $t6, $t8, 1
|
|
/* B54B50 800DD9B0 000E7880 */ sll $t7, $t6, 2
|
|
/* B54B54 800DD9B4 032FC025 */ or $t8, $t9, $t7
|
|
/* B54B58 800DD9B8 00037100 */ sll $t6, $v1, 4
|
|
/* B54B5C 800DD9BC 000ECFC2 */ srl $t9, $t6, 0x1f
|
|
/* B54B60 800DD9C0 332F0001 */ andi $t7, $t9, 1
|
|
/* B54B64 800DD9C4 000F7040 */ sll $t6, $t7, 1
|
|
/* B54B68 800DD9C8 030EC825 */ or $t9, $t8, $t6
|
|
/* B54B6C 800DD9CC 00037940 */ sll $t7, $v1, 5
|
|
/* B54B70 800DD9D0 000FC7C2 */ srl $t8, $t7, 0x1f
|
|
/* B54B74 800DD9D4 330E0001 */ andi $t6, $t8, 1
|
|
/* B54B78 800DD9D8 032E7825 */ or $t7, $t9, $t6
|
|
/* B54B7C 800DD9DC AC8F0000 */ sw $t7, ($a0)
|
|
/* B54B80 800DD9E0 8FBF0024 */ lw $ra, 0x24($sp)
|
|
/* B54B84 800DD9E4 8FB10020 */ lw $s1, 0x20($sp)
|
|
/* B54B88 800DD9E8 8FB0001C */ lw $s0, 0x1c($sp)
|
|
/* B54B8C 800DD9EC 03E00008 */ jr $ra
|
|
/* B54B90 800DD9F0 27BD0068 */ addiu $sp, $sp, 0x68
|
|
|