# annotated crash_screen_draw_square
```as
glabel crash_screen_draw_square
/* 004D44 80004144 27BDFFD0 */ addiu $sp, $sp, -0x30 ; 0x30 of stack
/* 004D48 80004148 AFB40028 */ sw $s4, 0x28($sp) ; store s4 to sp at offset 0x28
/* 004D4C 8000414C AFB30024 */ sw $s3, 0x24($sp) ; store s3 to sp at offset 0x24
/* 004D50 80004150 AFB20020 */ sw $s2, 0x20($sp) ; store s2 to sp at offset 0x20
/* 004D54 80004154 AFB00018 */ sw $s0, 0x18($sp) ; store s0 to sp at offset 0x18
/* 004D58 80004158 00809825 */ move $s3, $a0 ; move s3 to first argument
/* 004D5C 8000415C AFBF002C */ sw $ra, 0x2c($sp) ; store return address to sp offset 0x2c
/* 004D60 80004160 AFB1001C */ sw $s1, 0x1c($sp) ; store s1 to sp offset 0x1c
/* 004D64 80004164 2410002E */ li $s0, 46 ; load 46 to s0
/* 004D68 80004168 24120028 */ li $s2, 40 ; load 40 to s2
/* 004D6C 8000416C 2414002C */ li $s4, 44 ; load 44 to s4
; load temps t5-t1
/* 004D70 80004170 240D0006 */ li $t5, 6
/* 004D74 80004174 240C0006 */ li $t4, 6
/* 004D78 80004178 240B0006 */ li $t3, 6
/* 004D7C 8000417C 240A0006 */ li $t2, 6
/* 004D80 80004180 24090006 */ li $t1, 6
/* 004D84 80004184 3407FFFF */ li $a3, 65535 ; load u16 size limit to a3
/* 004D88 80004188 3406F801 */ li $a2, 63489 ; load.. that to a2
; comparisons
.L8000418C:
/* 004D8C 8000418C 0250082A */ slt $at, $s2, $s0 ; set assembler value $at to 1 if $s2 (40?) is less than $s0 (46?)
/* 004D90 80004190 10200032 */ beqz $at, .L8000425C ; if assembler value is equal to 0, jump to the end of the function
/* 004D94 80004194 02408825 */ move $s1, $s2 ; move s1 to s2 (40?)
/* 004D98 80004198 0250082A */ slt $at, $s2, $s0 ; set assembler value $at to 1 if $s2, which is $s1 (40?) is less than $s0 (46?)
.L8000419C:
/* 004D9C 8000419C 1020002C */ beqz $at, .L80004250 ; if assembler value is equal to 0, jump to L80004250
/* 004DA0 800041A0 02401825 */ move $v1, $s2 ; move result v1 to s2 (40?)
/* 004DA4 800041A4 00117080 */ sll $t6, $s1, 2 ; shift t6 to s1, which is s2 (40?) by 2/decimals
/* 004DA8 800041A8 01D17021 */ addu $t6, $t6, $s1 ; add s1 (40?) to t6
/* 004DAC 800041AC 02122023 */ subu $a0, $s0, $s2 ; sub value of s0 (46) - s2 (40) to a0 = 6
/* 004DB0 800041B0 30880003 */ andi $t0, $a0, 3
/* 004DB4 800041B4 000E79C0 */ sll $t7, $t6, 7
/* 004DB8 800041B8 1100000C */ beqz $t0, .L800041EC
/* 004DBC 800041BC 026FF821 */ addu $ra, $s3, $t7
/* 004DC0 800041C0 0003C040 */ sll $t8, $v1, 1
/* 004DC4 800041C4 03F81021 */ addu $v0, $ra, $t8
/* 004DC8 800041C8 01122821 */ addu $a1, $t0, $s2
.L800041CC:
/* 004DCC 800041CC 15240003 */ bne $t1, $a0, .L800041DC
/* 004DD0 800041D0 24630001 */ addiu $v1, $v1, 1
/* 004DD4 800041D4 10000002 */ b .L800041E0
/* 004DD8 800041D8 A4460000 */ sh $a2, ($v0)
.L800041DC:
/* 004DDC 800041DC A4470000 */ sh $a3, ($v0)
.L800041E0:
/* 004DE0 800041E0 14A3FFFA */ bne $a1, $v1, .L800041CC
/* 004DE4 800041E4 24420002 */ addiu $v0, $v0, 2
/* 004DE8 800041E8 10700019 */ beq $v1, $s0, .L80004250
.L800041EC:
/* 004DEC 800041EC 00032840 */ sll $a1, $v1, 1
/* 004DF0 800041F0 03E51021 */ addu $v0, $ra, $a1
/* 004DF4 800041F4 00104040 */ sll $t0, $s0, 1
.L800041F8:
/* 004DF8 800041F8 15440003 */ bne $t2, $a0, .L80004208
/* 004DFC 800041FC 24A50008 */ addiu $a1, $a1, 8
/* 004E00 80004200 10000002 */ b .L8000420C
/* 004E04 80004204 A4460000 */ sh $a2, ($v0)
.L80004208:
/* 004E08 80004208 A4470000 */ sh $a3, ($v0)
.L8000420C:
/* 004E0C 8000420C 55640004 */ bnel $t3, $a0, .L80004220
/* 004E10 80004210 A4470002 */ sh $a3, 2($v0)
/* 004E14 80004214 10000002 */ b .L80004220
/* 004E18 80004218 A4460002 */ sh $a2, 2($v0)
/* 004E1C 8000421C A4470002 */ sh $a3, 2($v0)
.L80004220:
/* 004E20 80004220 55840004 */ bnel $t4, $a0, .L80004234
/* 004E24 80004224 A4470004 */ sh $a3, 4($v0)
/* 004E28 80004228 10000002 */ b .L80004234
/* 004E2C 8000422C A4460004 */ sh $a2, 4($v0)
/* 004E30 80004230 A4470004 */ sh $a3, 4($v0)
.L80004234:
/* 004E34 80004234 55A40004 */ bnel $t5, $a0, .L80004248
/* 004E38 80004238 A4470006 */ sh $a3, 6($v0)
/* 004E3C 8000423C 10000002 */ b .L80004248
/* 004E40 80004240 A4460006 */ sh $a2, 6($v0)
/* 004E44 80004244 A4470006 */ sh $a3, 6($v0)
.L80004248:
/* 004E48 80004248 14A8FFEB */ bne $a1, $t0, .L800041F8
/* 004E4C 8000424C 24420008 */ addiu $v0, $v0, 8
.L80004250:
/* 004E50 80004250 26310001 */ addiu $s1, $s1, 1
/* 004E54 80004254 5630FFD1 */ bnel $s1, $s0, .L8000419C
/* 004E58 80004258 0250082A */ slt $at, $s2, $s0
.L8000425C: ; end
/* 004E5C 8000425C 2610FFFF */ addiu $s0, $s0, -1
/* 004E60 80004260 1690FFCA */ bne $s4, $s0, .L8000418C
/* 004E64 80004264 26520001 */ addiu $s2, $s2, 1
/* 004E68 80004268 0C033624 */ jal osWritebackDCacheAll
/* 004E6C 8000426C 00000000 */ nop
/* 004E70 80004270 0C033684 */ jal osViSwapBuffer
/* 004E74 80004274 02602025 */ move $a0, $s3
/* 004E78 80004278 8FBF002C */ lw $ra, 0x2c($sp)
/* 004E7C 8000427C 8FB00018 */ lw $s0, 0x18($sp)
/* 004E80 80004280 8FB1001C */ lw $s1, 0x1c($sp)
/* 004E84 80004284 8FB20020 */ lw $s2, 0x20($sp)
/* 004E88 80004288 8FB30024 */ lw $s3, 0x24($sp)
/* 004E8C 8000428C 8FB40028 */ lw $s4, 0x28($sp)
/* 004E90 80004290 03E00008 */ jr $ra
/* 004E94 80004294 27BD0030 */ addiu $sp, $sp, 0x30
``