mirror of https://github.com/zeldaret/oot.git
107 lines
5.0 KiB
ArmAsm
107 lines
5.0 KiB
ArmAsm
glabel func_80040FA4
|
|
/* AB8144 80040FA4 27BDFF88 */ addiu $sp, $sp, -0x78
|
|
/* AB8148 80040FA8 AFBF003C */ sw $ra, 0x3c($sp)
|
|
/* AB814C 80040FAC AFB50038 */ sw $s5, 0x38($sp)
|
|
/* AB8150 80040FB0 AFB40034 */ sw $s4, 0x34($sp)
|
|
/* AB8154 80040FB4 AFB30030 */ sw $s3, 0x30($sp)
|
|
/* AB8158 80040FB8 AFB2002C */ sw $s2, 0x2c($sp)
|
|
/* AB815C 80040FBC AFB10028 */ sw $s1, 0x28($sp)
|
|
/* AB8160 80040FC0 AFB00024 */ sw $s0, 0x24($sp)
|
|
/* AB8164 80040FC4 8C8E000C */ lw $t6, 0xc($a0)
|
|
/* AB8168 80040FC8 3414FFFF */ li $s4, 65535
|
|
/* AB816C 80040FCC 00808025 */ move $s0, $a0
|
|
/* AB8170 80040FD0 95C20000 */ lhu $v0, ($t6)
|
|
/* AB8174 80040FD4 0000A825 */ move $s5, $zero
|
|
/* AB8178 80040FD8 16820003 */ bne $s4, $v0, .L80040FE8
|
|
/* AB817C 80040FDC 00027880 */ sll $t7, $v0, 2
|
|
/* AB8180 80040FE0 10000048 */ b .L80041104
|
|
/* AB8184 80040FE4 00001025 */ move $v0, $zero
|
|
.L80040FE8:
|
|
/* AB8188 80040FE8 8E030008 */ lw $v1, 8($s0)
|
|
/* AB818C 80040FEC 96060004 */ lhu $a2, 4($s0)
|
|
/* AB8190 80040FF0 27B3005C */ addiu $s3, $sp, 0x5c
|
|
/* AB8194 80040FF4 8C6413F8 */ lw $a0, 0x13f8($v1)
|
|
/* AB8198 80040FF8 30C60007 */ andi $a2, $a2, 7
|
|
/* AB819C 80040FFC 00063340 */ sll $a2, $a2, 0xd
|
|
/* AB81A0 80041000 8C6513F0 */ lw $a1, 0x13f0($v1)
|
|
/* AB81A4 80041004 008F9021 */ addu $s2, $a0, $t7
|
|
.L80041008:
|
|
/* AB81A8 80041008 86420000 */ lh $v0, ($s2)
|
|
/* AB81AC 8004100C 0002C100 */ sll $t8, $v0, 4
|
|
/* AB81B0 80041010 00B88821 */ addu $s1, $a1, $t8
|
|
/* AB81B4 80041014 96390002 */ lhu $t9, 2($s1)
|
|
/* AB81B8 80041018 03264024 */ and $t0, $t9, $a2
|
|
/* AB81BC 8004101C 51000007 */ beql $t0, $zero, .L8004103C
|
|
/* AB81C0 80041020 8C6513F4 */ lw $a1, 0x13f4($v1)
|
|
/* AB81C4 80041024 96420002 */ lhu $v0, 2($s2)
|
|
/* AB81C8 80041028 12820035 */ beq $s4, $v0, .L80041100
|
|
/* AB81CC 8004102C 00024880 */ sll $t1, $v0, 2
|
|
/* AB81D0 80041030 1000FFF5 */ b .L80041008
|
|
/* AB81D4 80041034 00899021 */ addu $s2, $a0, $t1
|
|
/* AB81D8 80041038 8C6513F4 */ lw $a1, 0x13f4($v1)
|
|
.L8004103C:
|
|
/* AB81DC 8004103C 8E060010 */ lw $a2, 0x10($s0)
|
|
/* AB81E0 80041040 8E070014 */ lw $a3, 0x14($s0)
|
|
/* AB81E4 80041044 AFB30010 */ sw $s3, 0x10($sp)
|
|
/* AB81E8 80041048 8E0A0020 */ lw $t2, 0x20($s0)
|
|
/* AB81EC 8004104C 02202025 */ move $a0, $s1
|
|
/* AB81F0 80041050 AFAA0014 */ sw $t2, 0x14($sp)
|
|
/* AB81F4 80041054 C6040028 */ lwc1 $f4, 0x28($s0)
|
|
/* AB81F8 80041058 0C00E428 */ jal func_800390A0
|
|
/* AB81FC 8004105C E7A40018 */ swc1 $f4, 0x18($sp)
|
|
/* AB8200 80041060 1040001B */ beqz $v0, .L800410D0
|
|
/* AB8204 80041064 02602825 */ move $a1, $s3
|
|
/* AB8208 80041068 0C032D94 */ jal Math3D_Vec3fDistSq
|
|
/* AB820C 8004106C 8E040010 */ lw $a0, 0x10($s0)
|
|
/* AB8210 80041070 8E020024 */ lw $v0, 0x24($s0)
|
|
/* AB8214 80041074 C4460000 */ lwc1 $f6, ($v0)
|
|
/* AB8218 80041078 4606003C */ c.lt.s $f0, $f6
|
|
/* AB821C 8004107C 00000000 */ nop
|
|
/* AB8220 80041080 45020014 */ bc1fl .L800410D4
|
|
/* AB8224 80041084 96420002 */ lhu $v0, 2($s2)
|
|
/* AB8228 80041088 E4400000 */ swc1 $f0, ($v0)
|
|
/* AB822C 8004108C 8E6D0000 */ lw $t5, ($s3)
|
|
/* AB8230 80041090 8E0B0018 */ lw $t3, 0x18($s0)
|
|
/* AB8234 80041094 24150001 */ li $s5, 1
|
|
/* AB8238 80041098 AD6D0000 */ sw $t5, ($t3)
|
|
/* AB823C 8004109C 8E6C0004 */ lw $t4, 4($s3)
|
|
/* AB8240 800410A0 AD6C0004 */ sw $t4, 4($t3)
|
|
/* AB8244 800410A4 8E6D0008 */ lw $t5, 8($s3)
|
|
/* AB8248 800410A8 AD6D0008 */ sw $t5, 8($t3)
|
|
/* AB824C 800410AC 8E780000 */ lw $t8, ($s3)
|
|
/* AB8250 800410B0 8E0E0014 */ lw $t6, 0x14($s0)
|
|
/* AB8254 800410B4 ADD80000 */ sw $t8, ($t6)
|
|
/* AB8258 800410B8 8E6F0004 */ lw $t7, 4($s3)
|
|
/* AB825C 800410BC ADCF0004 */ sw $t7, 4($t6)
|
|
/* AB8260 800410C0 8E780008 */ lw $t8, 8($s3)
|
|
/* AB8264 800410C4 ADD80008 */ sw $t8, 8($t6)
|
|
/* AB8268 800410C8 8E19001C */ lw $t9, 0x1c($s0)
|
|
/* AB826C 800410CC AF310000 */ sw $s1, ($t9)
|
|
.L800410D0:
|
|
/* AB8270 800410D0 96420002 */ lhu $v0, 2($s2)
|
|
.L800410D4:
|
|
/* AB8274 800410D4 5282000B */ beql $s4, $v0, .L80041104
|
|
/* AB8278 800410D8 02A01025 */ move $v0, $s5
|
|
/* AB827C 800410DC 8E030008 */ lw $v1, 8($s0)
|
|
/* AB8280 800410E0 96060004 */ lhu $a2, 4($s0)
|
|
/* AB8284 800410E4 00024080 */ sll $t0, $v0, 2
|
|
/* AB8288 800410E8 8C6413F8 */ lw $a0, 0x13f8($v1)
|
|
/* AB828C 800410EC 30C60007 */ andi $a2, $a2, 7
|
|
/* AB8290 800410F0 00063340 */ sll $a2, $a2, 0xd
|
|
/* AB8294 800410F4 8C6513F0 */ lw $a1, 0x13f0($v1)
|
|
/* AB8298 800410F8 1000FFC3 */ b .L80041008
|
|
/* AB829C 800410FC 00889021 */ addu $s2, $a0, $t0
|
|
.L80041100:
|
|
/* AB82A0 80041100 02A01025 */ move $v0, $s5
|
|
.L80041104:
|
|
/* AB82A4 80041104 8FBF003C */ lw $ra, 0x3c($sp)
|
|
/* AB82A8 80041108 8FB00024 */ lw $s0, 0x24($sp)
|
|
/* AB82AC 8004110C 8FB10028 */ lw $s1, 0x28($sp)
|
|
/* AB82B0 80041110 8FB2002C */ lw $s2, 0x2c($sp)
|
|
/* AB82B4 80041114 8FB30030 */ lw $s3, 0x30($sp)
|
|
/* AB82B8 80041118 8FB40034 */ lw $s4, 0x34($sp)
|
|
/* AB82BC 8004111C 8FB50038 */ lw $s5, 0x38($sp)
|
|
/* AB82C0 80041120 03E00008 */ jr $ra
|
|
/* AB82C4 80041124 27BD0078 */ addiu $sp, $sp, 0x78
|
|
|