We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

User:Kojin/PS2 Disassembly

From The Cutting Room Floor
< User:Kojin
Revision as of 15:56, 14 September 2018 by Kojin (talk | contribs)
Jump to navigation Jump to search
Hmmm...
To do:
Everything

C Standard Library

string.h

memchr

Signature
 # void	*__cdecl memchr(const void *ptr, int value, unsigned int num)
memchr:
		sltiu	$v0, $a2, 0x10
		bnez	$v0, loc_2E32A8
		andi	$a1, 0xFF
		andi	$v0, $a0, 0xF
		bnez	$v0, loc_2E32A8
		move	$a3, $a0
		dsll	$v1, $a1, 8
		li	$v0, 0x1010101
		dsll	$v0, 16
		ori	$v0, 0x101
		dsll	$v0, 16
		ori	$v0, 0x101
		daddu	$t2, $v1, $a1
		li	$v1, 0x80808080
		dsll	$v1, 16
		ori	$v1, 0x8080
		dsll	$v1, 16
		ori	$v1, 0x8080
		pcpyh	$t0, $t2
		pcpyld	$t1, $t0, $t0
		move	$a0, $v0
		pcpyld	$t0, $v1, $v1

loc_2E3268:				 # CODE	XREF: memchr+94
		lq	$v0, 0($a3)
		pxor	$v0, $t1
		pcpyld	$t2, $a0, $a0
		pnor	$v1, $zero, $v0
		psubb	$v0, $t2
		pand	$v0, $v1
		pand	$v0, $t0
		pcpyud	$v1, $v0, $t1
		or	$v0, $v1
		bnezl	$v0, loc_2E32A8
		move	$a0, $a3
		addiu	$a2, -0x10
		sltiu	$v0, $a2, 0x10
		beqz	$v0, loc_2E3268
		addiu	$a3, 0x10
		move	$a0, $a3

loc_2E32A8:				 # CODE	XREF: memchr+4, 
                                                      memchr+10
		lui	$v0, 0xFFFF
		addiu	$a2, -1
		li	$v0, 0xFFFFFFFF
		beq	$a2, $v0, locret_2E32D8
		nop
		li	$v1, 0xFFFFFFFF

loc_2E32C4:				 # CODE	XREF: memchr+C8
		lbu	$v0, 0($a0)
		beq	$v0, $a1, locret_2E32E0
		addiu	$a2, -1
		bne	$a2, $v1, loc_2E32C4
		addiu	$a0, 1

locret_2E32D8:				 # CODE	XREF: memchr+AC
		jr	$ra
		move	$v0, $zero
 # ---------------------------------------------------------------------------

locret_2E32E0:				 # CODE	XREF: memchr+C0
		jr	$ra
		move	$v0, $a0
 # End of function memchr

memcmp

 # int __cdecl memcmp(const void *ptr1,	const void *ptr2, unsigned int num)
memcmp:
		sltiu	$v0, $a2, 0x10
		bnez	$v0, loc_2E3334
		or	$v0, $a0, $a1
		andi	$v0, 0xF
		bnez	$v0, loc_2E3334
		nop

loc_2E3300:				 # CODE	XREF: memcmp+44
		lq	$v1, 0($a0)
		sltiu	$a3, $a2, 0x20
		lq	$v0, 0($a1)
		addiu	$a0, 0x10
		pxor	$t0, $v0, $v1
		addiu	$v0, $a1, 0x10
		pcpyud	$t2, $t0, $a3
		or	$t1, $t2, $t0
		movz	$a1, $v0, $t1
		bnezl	$t1, loc_2E3334
		addiu	$a0, -0x10
		beqz	$a3, loc_2E3300
		addiu	$a2, -0x10

loc_2E3334:				 # CODE	XREF: memcmp+4,
                                                      memcmp+10,
                                                      memcmp+3C
		lui	$v0, 0xFFFF
		addiu	$a2, -1
		li	$v0, 0xFFFFFFFF
		beq	$a2, $v0, locret_2E3374
		nop
		li	$a3, 0xFFFFFFFF

loc_2E3350:				 # CODE	XREF: memcmp+84
		lbu	$v1, 0($a0)
		lbu	$v0, 0($a1)
		beq	$v1, $v0, loc_2E3368
		addiu	$a0, 1
		jr	$ra
		subu	$v0, $v1, $v0
 # ---------------------------------------------------------------------------

loc_2E3368:				 # CODE	XREF: memcmp+70
		addiu	$a2, -1
		bne	$a2, $a3, loc_2E3350
		addiu	$a1, 1

locret_2E3374:				 # CODE	XREF: memcmp+58
		jr	$ra
		move	$v0, $zero
 # End of function memcmp

memcpy

 # void	*__cdecl memcpy(void *destination, const void *source, unsigned	int num)
memcpy:
		move	$t0, $a0
		sltiu	$v0, $a2, 0x20
		bnez	$v0, loc_2E33FC
		move	$v1, $t0
		or	$v0, $a1, $t0
		andi	$v0, 0xF
		bnezl	$v0, loc_2E3400
		addiu	$a2, -1
		move	$a3, $t0

loc_2E33A4:				 # CODE	XREF: memcpy+48
		lq	$v1, 0($a1)
		addiu	$a2, -0x20
		addiu	$a1, 0x10
		sltiu	$a0, $a2, 0x20
		sq	$v1, 0($a3)
		addiu	$a3, 0x10
		lq	$v0, 0($a1)
		addiu	$a1, 0x10
		sq	$v0, 0($a3)
		beqz	$a0, loc_2E33A4
		addiu	$a3, 0x10
		sltiu	$v0, $a2, 8
		bnez	$v0, loc_2E33FC
		move	$v1, $a3

loc_2E33DC:				 # CODE	XREF: memcpy+70
		ld	$v1, 0($a1)
		addiu	$a2, -8
		addiu	$a1, 8
		sltiu	$v0, $a2, 8
		sd	$v1, 0($a3)
		beqz	$v0, loc_2E33DC
		addiu	$a3, 8
		move	$v1, $a3

loc_2E33FC:				 # CODE	XREF: memcpy+8,
                                                      memcpy+54
		addiu	$a2, -1

loc_2E3400:				 # CODE	XREF: memcpy+18
		dli	$v0, 0xFFFFFFFFFFFFFFFF
		beq	$a2, $v0, return
		move	$a0, $v0

loc_2E340C:				 # CODE	XREF: memcpy+A0
		lbu	$v0, 0($a1)
		addiu	$a2, -1
		addiu	$a1, 1
		sb	$v0, 0($v1)
		addiu	$v1, 1
		bne	$a2, $a0, loc_2E340C
		nop

return:					 # CODE	XREF: memcpy+84
		jr	$ra
		move	$v0, $t0
 # End of function memcpy

memmove

 # void	*__cdecl memmove(void *destination, const void *source,	unsigned int num)
memmove:
		move	$t0, $a0
		sltu	$v0, $a1, $t0
		beqz	$v0, loc_2E3488
		move	$v1, $t0
		addu	$a3, $a1, $a2
		sltu	$v0, $t0, $a3
		beqz	$v0, loc_2E3488
		dli	$v0, 0xFFFFFFFFFFFFFFFF
		addu	$v1, $t0, $a2
		addiu	$a2, -1
		beq	$a2, $v0, locret_2E352C
		move	$a1, $a3
		move	$a0, $v0

loc_2E3464:				 # CODE	XREF: memmove+48
		addiu	$a1, -1
		addiu	$v1, -1
		lbu	$v0, 0($a1)
		addiu	$a2, -1
		sb	$v0, 0($v1)
		bne	$a2, $a0, loc_2E3464
		nop
		jr	$ra
		move	$v0, $t0
 # ---------------------------------------------------------------------------

loc_2E3488:				 # CODE	XREF: memmove+8,
                                                      memmove+18
		sltiu	$v0, $a2, 0x20
		bnezl	$v0, loc_2E3504
		addiu	$a2, -1
		or	$v0, $a1, $v1
		andi	$v0, 0xF
		bnezl	$v0, loc_2E3504
		addiu	$a2, -1
		move	$a3, $v1

loc_2E34A8:				 # CODE	XREF: memmove+9C
		lq	$v1, 0($a1)
		addiu	$a2, -0x20
		addiu	$a1, 0x10
		sltiu	$a0, $a2, 0x20
		sq	$v1, 0($a3)
		addiu	$a3, 0x10
		lq	$v0, 0($a1)
		addiu	$a1, 0x10
		sq	$v0, 0($a3)
		beqz	$a0, loc_2E34A8
		addiu	$a3, 0x10
		sltiu	$v0, $a2, 8
		bnez	$v0, loc_2E3500
		move	$v1, $a3

loc_2E34E0:				 # CODE	XREF: memmove+C4
		ld	$v1, 0($a1)
		addiu	$a2, -8
		addiu	$a1, 8
		sltiu	$v0, $a2, 8
		sd	$v1, 0($a3)
		beqz	$v0, loc_2E34E0
		addiu	$a3, 8
		move	$v1, $a3

loc_2E3500:				 # CODE	XREF: memmove+A8
		addiu	$a2, -1

loc_2E3504:				 # CODE	XREF: memmove+5C,
                                                      memmove+6C
		dli	$v0, 0xFFFFFFFFFFFFFFFF
		beq	$a2, $v0, locret_2E352C
		move	$a0, $v0

loc_2E3510:				 # CODE	XREF: memmove+F4
		lbu	$v0, 0($a1)
		addiu	$a2, -1
		addiu	$a1, 1
		sb	$v0, 0($v1)
		addiu	$v1, 1
		bne	$a2, $a0, loc_2E3510
		nop

locret_2E352C:				 # CODE	XREF: memmove+28,
                                                      memmove+D8
		jr	$ra
		move	$v0, $t0
 # End of function memmove

memset

 # void *__cdecl memset(void *ptr, int value, size_t num)
memset:
                sltiu   $v0, $a2, 8
                bnez    $v0, loc_2E35B8
                move    $v1, $a0
                andi    $v0, $a0, 0xF
                bnez    $v0, loc_2E35B8
                move    $a3, $a0
                andi    $t1, $a1, 0xFF
                sltiu   $t2, $a2, 0x20
                move    $t0, $t1
                dsll    $v1, $t0, 8
                or      $t0, $v1, $t1
                pcpyh   $v1, $t0
                bnez    $t2, loc_2E35A4
                sltiu   $v0, $a2, 8
                pcpyld  $t0, $v1, $v1
loc_2E3574:                              # CODE XREF: memset+50
                sq      $t0, 0($a3)
                addiu   $a2, -0x20
                addiu   $a3, 0x10
                sltiu   $v0, $a2, 0x20
                sq      $t0, 0($a3)
                beqz    $v0, loc_2E3574
                addiu   $a3, 0x10
                b       loc_2E35A4
                sltiu   $v0, $a2, 8
 # ---------------------------------------------------------------------------
loc_2E3598:                              # CODE XREF: memset+74
                addiu   $a2, -8
                addiu   $a3, 8
                sltiu   $v0, $a2, 8
loc_2E35A4:                              # CODE XREF: memset+30,
                                                      memset+58
                nop
                nop
                beqzl   $v0, loc_2E3598
                sd      $v1, 0($a3)
                move    $v1, $a3
loc_2E35B8:                              # CODE XREF: memset+4,
                                                      memset+10
                lui     $v0, 0xFFFF
                addiu   $a2, -1
                li      $v0, 0xFFFFFFFF
                beq     $a2, $v0, locret_2E35F0
                nop
                li      $v0, 0xFFFFFFFF
loc_2E35D4:                              # CODE XREF: memset+B0
                sb      $a1, 0($v1)
                addiu   $a2, -1
                addiu   $v1, 1
                nop
                nop
                bne     $a2, $v0, loc_2E35D4
                nop
locret_2E35F0:                           # CODE XREF: memset+8C
                jr      $ra
                move    $v0, $a0
 # End of function memset

Sony

SCE Library

sceAdrDrive

sceAddDrv:					# 
	addiu		sp, sp, $ff70		# 00115940:27bdff70	
	sd		s1, $0050(sp)		# 00115944:ffb10050	
	daddu		s1, a0, zero		# 00115948:0080882d	
	sd		s3, $0070(sp)		# 0011594c:ffb30070	
	sd		s0, $0040(sp)		# 00115950:ffb00040	
	addiu		a0, zero, $000f		# 00115954:2404000f	a0=$0000000f
	sd		ra, $0080(sp)		# 00115958:ffbf0080	
	lui		s3, $0037		# 0011595c:3c130037	s3=rbuf
	sd		s2, $0060(sp)		# 00115960:ffb20060	
	jal		$00113f08		# 00115964:0c044fc2	£_sceFsWaitS
	addiu		s0, s3, $1cc0		# 00115968:26701cc0	s0=_send_data
	lui		v1, $0033		# 0011596c:3c030033	v1=$00330000
	lw		v0, $8d20(v1)		# 00115970:8c628d20	v0=_fs_init
	bnel		v0, zero, $00115988	# 00115974:54400004	¥__00115988
	sw		s1, $000c(s0)		# 00115978:ae11000c	[00371ccc]
	jal		$00114008		# 0011597c:0c045002	£sceFsInit
	nop					# 00115980:00000000	
	sw		s1, $000c(s0)		# 00115984:ae11000c	[00371ccc]
__00115988:					# 
	addiu		v0, zero, $0001		# 00115988:24020001	v0=$00000001
	sw		v0, $0014(sp)		# 0011598c:afa20014	
	addiu		a0, sp, $0010		# 00115990:27a40010	
	sw		zero, $0018(sp)		# 00115994:afa00018	
	jal		$001100e0		# 00115998:0c044038	£CreateSema
	sw		zero, $0024(sp)		# 0011599c:afa00024	
	daddu		s1, v0, zero		# 001159a0:0040882d	s1=$00000001
	addiu		v1, sp, $0030		# 001159a4:27a30030	
	lui		v0, $0037		# 001159a8:3c020037	v0=rbuf
	sw		s1, $1cc0(s3)		# 001159ac:ae711cc0	_send_data
	addiu		s2, v0, $2900		# 001159b0:24522900	s2=_rcv_data_rpc
	lui		a0, $0037		# 001159b4:3c040037	a0=rbuf
	addiu		v0, zero, $0004		# 001159b8:24020004	v0=$00000004
	sw		v1, $0004(s0)		# 001159bc:ae030004	[00371cc4]
	sw		v0, $0008(s0)		# 001159c0:ae020008	[00371cc8]
	addiu		a0, a0, $2f80		# 001159c4:24842f80	a0=_cd
	daddu		a3, s0, zero		# 001159c8:0200382d	a3=_send_data
	addiu		a1, zero, $000f		# 001159cc:2405000f	a1=$0000000f
	sw		zero, $0000(sp)		# 001159d0:afa00000	
	daddu		a2, zero, zero		# 001159d4:0000302d	
	addiu		t0, zero, $0010		# 001159d8:24080010	t0=$00000010
	daddu		t1, s2, zero		# 001159dc:0240482d	t1=_rcv_data_rpc
	addiu		t2, zero, $0004		# 001159e0:240a0004	t2=$00000004
	jal		$00113280		# 001159e4:0c044ca0	£sceSifCallRpc
	daddu		t3, zero, zero		# 001159e8:0000582d	
	bgez		v0, $00115a0c		# 001159ec:04410007	¥__00115a0c
	lui		v0, $2000		# 001159f0:3c022000	v0=$20000000
	jal		$001100f0		# 001159f4:0c04403c	£DeleteSema
	daddu		a0, s1, zero		# 001159f8:0220202d	a0=$00000001
	jal		$00113f38		# 001159fc:0c044fce	£_sceFsSigSema
	nop					# 00115a00:00000000	
	beq		zero, zero, $00115a44	# 00115a04:1000000f	¥__00115a44
	addiu		v0, zero, $ffff		# 00115a08:2402ffff	v0=_heap_size
__00115a0c:					# 
	or		v0, s2, v0		# 00115a0c:02421025	v0=_heap_size
	jal		$00113f38		# 00115a10:0c044fce	£_sceFsSigSema
	lw		s0, $0000(v0)		# 00115a14:8c500000	s0=_heap_size
	bne		s0, zero, $00115a30	# 00115a18:16000005	¥__00115a30
	nop					# 00115a1c:00000000	
	jal		$001100f0		# 00115a20:0c04403c	£DeleteSema
	daddu		a0, s1, zero		# 00115a24:0220202d	a0=$00000001
	beq		zero, zero, $00115a44	# 00115a28:10000006	¥__00115a44
	addiu		v0, zero, $ffff		# 00115a2c:2402ffff	v0=_heap_size
__00115a30:					# 
	jal		$00110120		# 00115a30:0c044048	£WaitSema
	daddu		a0, s1, zero		# 00115a34:0220202d	
	jal		$001100f0		# 00115a38:0c04403c	£DeleteSema
	daddu		a0, s1, zero		# 00115a3c:0220202d	
	lw		v0, $0030(sp)		# 00115a40:8fa20030	
__00115a44:					# 
	ld		ra, $0080(sp)		# 00115a44:dfbf0080	
	ld		s3, $0070(sp)		# 00115a48:dfb30070	
	ld		s2, $0060(sp)		# 00115a4c:dfb20060	
	ld		s1, $0050(sp)		# 00115a50:dfb10050	
	ld		s0, $0040(sp)		# 00115a54:dfb00040	
	jr		ra			# 00115a58:03e00008	
	addiu		sp, sp, $0090		# 00115a5c:27bd0090	

sceCDBreak

sceCdBreak:					# 
	addiu		sp, sp, $ffc0		# 00120a78:27bdffc0	
	addiu		a0, zero, $001e		# 00120a7c:2404001e	a0=$0000001e
	sd		ra, $0030(sp)		# 00120a80:ffbf0030	
	sd		s1, $0020(sp)		# 00120a84:ffb10020	
	jal		$00120020		# 00120a88:0c048008	£_sceCd_scmd_prechk
	sd		s0, $0010(sp)		# 00120a8c:ffb00010	
	bne		v0, zero, $00120aa0	# 00120a90:14400003	¥__00120aa0
	lui		v0, $0033		# 00120a94:3c020033	v0=$00330000
	beq		zero, zero, $00120b1c	# 00120a98:10000020	¥__00120b1c
	daddu		v0, zero, zero		# 00120a9c:0000102d	
__00120aa0:					# 
	lui		s0, $0033		# 00120aa0:3c100033	s0=$00330000
	addiu		s1, v0, $adc0		# 00120aa4:2451adc0	s1=$ffffadc0
	addiu		v1, zero, $0008		# 00120aa8:24030008	v1=$00000008
	lui		a0, $0033		# 00120aac:3c040033	a0=$00330000
	sw		v1, $9c14(s0)		# 00120ab0:ae039c14	sceCdCbfunc_num
	addiu		a0, a0, $b608		# 00120ab4:2484b608	a0=_sceCd_cd_scmd
	sw		zero, $0000(sp)		# 00120ab8:afa00000	
	addiu		a1, zero, $0016		# 00120abc:24050016	a1=$00000016
	daddu		a2, zero, zero		# 00120ac0:0000302d	
	daddu		a3, zero, zero		# 00120ac4:0000382d	
	daddu		t0, zero, zero		# 00120ac8:0000402d	
	daddu		t1, s1, zero		# 00120acc:0220482d	t1=$ffffadc0
	addiu		t2, zero, $0004		# 00120ad0:240a0004	t2=$00000004
	jal		$00113280		# 00120ad4:0c044ca0	£sceSifCallRpc
	daddu		t3, zero, zero		# 00120ad8:0000582d	
	bgez		v0, $00120afc		# 00120adc:04410007	¥__00120afc
	lui		v0, $0033		# 00120ae0:3c020033	v0=$00330000
	lw		a0, $9bec(v0)		# 00120ae4:8c449bec	a0=_sceCd_scmd_semid
	jal		$00110100		# 00120ae8:0c044040	£SignalSema
	nop					# 00120aec:00000000	
	sw		zero, $9c14(s0)		# 00120af0:ae009c14	sceCdCbfunc_num
	beq		zero, zero, $00120b1c	# 00120af4:10000009	¥__00120b1c
	daddu		v0, zero, zero		# 00120af8:0000102d	
__00120afc:					# 
	sw		zero, $9c14(s0)		# 00120afc:ae009c14	sceCdCbfunc_num
	lui		v1, $0033		# 00120b00:3c030033	v1=$00330000
	lui		v0, $2000		# 00120b04:3c022000	v0=$20000000
	or		v0, s1, v0		# 00120b08:02221025	v0=$ffffadc0
	lw		a0, $9bec(v1)		# 00120b0c:8c649bec	a0=_sceCd_scmd_semid
	jal		$00110100		# 00120b10:0c044040	£SignalSema
	lw		s0, $0000(v0)		# 00120b14:8c500000	s0=$ffffadc0
	daddu		v0, s0, zero		# 00120b18:0200102d	
__00120b1c:					# 
	ld		ra, $0030(sp)		# 00120b1c:dfbf0030	
	ld		s1, $0020(sp)		# 00120b20:dfb10020	
	ld		s0, $0010(sp)		# 00120b24:dfb00010	
	jr		ra			# 00120b28:03e00008	
	addiu		sp, sp, $0040		# 00120b2c:27bd0040	

sceCdDriveCallback

sceCdCallback:					# 
	addiu		sp, sp, $ffd0		# 0011f4a8:27bdffd0	
	sd		s1, $0010(sp)		# 0011f4ac:ffb10010	
	daddu		s1, a0, zero		# 0011f4b0:0080882d	
	sd		ra, $0020(sp)		# 0011f4b4:ffbf0020	
	sd		s0, $0000(sp)		# 0011f4b8:ffb00000	
	jal		$0011ff10		# 0011f4bc:0c047fc4	¥sceCdSync
	addiu		a0, zero, $0001		# 0011f4c0:24040001	a0=$00000001
	bne		v0, zero, $0011f4e8	# 0011f4c4:14400008	¥__0011f4e8
	daddu		v0, zero, zero		# 0011f4c8:0000102d	
	jal		$00118be0		# 0011f4cc:0c0462f8	£DIntr
	nop					# 0011f4d0:00000000	
	lui		v1, $0037		# 0011f4d4:3c030037	v1=rbuf
	lw		s0, $48c0(v1)		# 0011f4d8:8c7048c0	s0=sceCdCbfunc
	jal		$00118c28		# 0011f4dc:0c04630a	£EIntr
	sw		s1, $48c0(v1)		# 0011f4e0:ac7148c0	sceCdCbfunc
	daddu		v0, s0, zero		# 0011f4e4:0200102d	
__0011f4e8:					# 
	ld		ra, $0020(sp)		# 0011f4e8:dfbf0020	
	ld		s1, $0010(sp)		# 0011f4ec:dfb10010	
	ld		s0, $0000(sp)		# 0011f4f0:dfb00000	
	jr		ra			# 0011f4f4:03e00008	
	addiu		sp, sp, $0030		# 0011f4f8:27bd0030	
	nop					# 0011f4fc:00000000	

sceCdDelayThread

sceCdDelayThread:				# 
	addiu		sp, sp, $ffb0		# 0011f440:27bdffb0	
	addiu		v0, zero, $0001		# 0011f444:24020001	v0=$00000001
	sd		s1, $0030(sp)		# 0011f448:ffb10030	
	andi		s1, a0, $ffff		# 0011f44c:3091ffff	
	sd		s0, $0020(sp)		# 0011f450:ffb00020	
	sw		v0, $0004(sp)		# 0011f454:afa20004	
	sw		zero, $0008(sp)		# 0011f458:afa00008	
	sw		zero, $0014(sp)		# 0011f45c:afa00014	
	sd		ra, $0040(sp)		# 0011f460:ffbf0040	
	jal		$001100e0		# 0011f464:0c044038	£CreateSema
	daddu		a0, sp, zero		# 0011f468:03a0202d	
	daddu		s0, v0, zero		# 0011f46c:0040802d	s0=$00000001
	lui		a1, $0012		# 0011f470:3c050012	a1=$00120000
	daddu		a2, s0, zero		# 0011f474:0200302d	a2=$00000001
	daddu		a0, s1, zero		# 0011f478:0220202d	
	jal		$0010fe60		# 0011f47c:0c043f98	£SetAlarm
	addiu		a1, a1, $f418		# 0011f480:24a5f418	a1=gcc2_compiled.
	jal		$00110120		# 0011f484:0c044048	£WaitSema
	daddu		a0, s0, zero		# 0011f488:0200202d	a0=$00000001
	jal		$001100f0		# 0011f48c:0c04403c	£DeleteSema
	daddu		a0, s0, zero		# 0011f490:0200202d	a0=$00000001
	ld		ra, $0040(sp)		# 0011f494:dfbf0040	
	ld		s1, $0030(sp)		# 0011f498:dfb10030	
	ld		s0, $0020(sp)		# 0011f49c:dfb00020	
	jr		ra			# 0011f4a0:03e00008	
	addiu		sp, sp, $0050		# 0011f4a4:27bd0050	

sceCdDiskReady

sceCdDiskReady:					# 
	addiu		sp, sp, $ff60		# 00120470:27bdff60	
	sd		s6, $0070(sp)		# 00120474:ffb60070	
	lui		s6, $0033		# 00120478:3c160033	s6=$00330000
	sd		s2, $0030(sp)		# 0012047c:ffb20030	
	lw		v0, $9bd0(s6)		# 00120480:8ec29bd0	v0=SCE_CD_debug
	daddu		s2, a0, zero		# 00120484:0080902d	
	sd		ra, $0090(sp)		# 00120488:ffbf0090	
	sd		s7, $0080(sp)		# 0012048c:ffb70080	
	sd		s5, $0060(sp)		# 00120490:ffb50060	
	sd		s4, $0050(sp)		# 00120494:ffb40050	
	sd		s3, $0040(sp)		# 00120498:ffb30040	
	sd		s1, $0020(sp)		# 0012049c:ffb10020	
	blez		v0, $001204b4		# 001204a0:18400004	¥__001204b4
	sd		s0, $0010(sp)		# 001204a4:ffb00010	
	lui		a0, $0036		# 001204a8:3c040036	a0=$00360000
	jal		$00112298		# 001204ac:0c0448a6	£scePrintf
	addiu		a0, a0, $8d90		# 001204b0:24848d90	a0="DiskReady 0\n"
__001204b4:					# 
	jal		$0011f7d8		# 001204b4:0c047df6	£cmd_sem_init
	lui		s3, $0033		# 001204b8:3c130033	s3=$00330000
	lw		a0, $9bec(s3)		# 001204bc:8e649bec	a0=_sceCd_scmd_semid
	jal		$00110130		# 001204c0:0c04404c	£PollSema
	nop					# 001204c4:00000000	
	lw		v1, $9bec(s3)		# 001204c8:8e639bec	v1=_sceCd_scmd_semid
	bne		v1, v0, $0012063c	# 001204cc:1462005b	¥__0012063c
	addiu		v0, zero, $0006		# 001204d0:24020006	v0=$00000006
	jal		$0011ffb0		# 001204d4:0c047fec	£sceCdSyncS
	addiu		a0, zero, $0001		# 001204d8:24040001	a0=$00000001
	bne		v0, zero, $001205f4	# 001204dc:14400045	¥__001205f4
	daddu		a0, zero, zero		# 001204e0:0000202d	
	jal		$00112a40		# 001204e4:0c044a90	£sceSifInitRpc
	lui		s1, $0033		# 001204e8:3c110033	s1=$00330000
	lw		v0, $9c04(s1)		# 001204ec:8e229c04	v0=_scmd_dr_bind
	bgez		v0, $001205a4		# 001204f0:0441002c	¥__001205a4
	lui		s5, $0037		# 001204f4:3c150037	s5=rbuf
	lui		s4, $0037		# 001204f8:3c140037	s4=rbuf
	beq		zero, zero, $0012052c	# 001204fc:1000000b	¥__0012052c
	lui		s7, $0033		# 00120500:3c170033	s7=$00330000
	nop					# 00120504:00000000	
__00120508:					# 
	addiu		v1, zero, $ffff		# 00120508:2403ffff	v1=_heap_size
	nop					# 0012050c:00000000	
__00120510:					# 
	addiu		v0, v0, $ffff		# 00120510:2442ffff	v0=$fffffffe
	nop					# 00120514:00000000	
	nop					# 00120518:00000000	
	nop					# 0012051c:00000000	
	nop					# 00120520:00000000	
	bne		v0, v1, $00120510	# 00120524:1443fffa	£__00120510
	nop					# 00120528:00000000	
__0012052c:					# 
	addiu		s0, s5, $4b10		# 0012052c:26b04b10	s0=cddr
__00120530:					# 
	lui		a1, $8000		# 00120530:3c058000	a1=$80000000
	daddu		a0, s0, zero		# 00120534:0200202d	a0=cddr
	ori		a1, a1, $059a		# 00120538:34a5059a	a1=$8000059a
	jal		$001130b0		# 0012053c:0c044c2c	£sceSifBindRpc
	daddu		a2, zero, zero		# 00120540:0000302d	
	bgezl		v0, $00120594		# 00120544:04430013	¥__00120594
	lw		v0, $0024(s0)		# 00120548:8e020024	v0=$00374b34
	lw		v0, $9bd0(s6)		# 0012054c:8ec29bd0	
	blez		v0, $00120568		# 00120550:18400005	¥__00120568
	lui		v0, $0010		# 00120554:3c020010	v0=.text
	lui		a0, $0036		# 00120558:3c040036	a0=$00360000
	jal		$00112298		# 0012055c:0c0448a6	£scePrintf
	addiu		a0, a0, $8da0		# 00120560:24848da0	a0="Libcdvd bind err CdDiskReady\n"
	lui		v0, $0010		# 00120564:3c020010	v0=.text
__00120568:					# 
	addiu		v1, zero, $ffff		# 00120568:2403ffff	v1=_heap_size
	nop					# 0012056c:00000000	
__00120570:					# 
	addiu		v0, v0, $ffff		# 00120570:2442ffff	v0=$000fffff
	nop					# 00120574:00000000	
	nop					# 00120578:00000000	
	nop					# 0012057c:00000000	
	nop					# 00120580:00000000	
	bne		v0, v1, $00120570	# 00120584:1443fffa	£__00120570
	nop					# 00120588:00000000	
	beq		zero, zero, $00120530	# 0012058c:1000ffe8	£__00120530
	addiu		s0, s5, $4b10		# 00120590:26b04b10	s0=cddr
__00120594:					# 
	beq		v0, zero, $00120508	# 00120594:1040ffdc	£__00120508
	lui		v0, $0010		# 00120598:3c020010	v0=.text
	beq		zero, zero, $001205ac	# 0012059c:10000003	¥__001205ac
	sw		zero, $9c04(s1)		# 001205a0:ae209c04	
__001205a4:					# 
	lui		s4, $0037		# 001205a4:3c140037	s4=rbuf
	lui		s7, $0033		# 001205a8:3c170033	s7=$00330000
__001205ac:					# 
	addiu		s0, s4, $4b50		# 001205ac:26904b50	s0=_dr_mode
	sw		s2, $4b50(s4)		# 001205b0:ae924b50	_dr_mode
	daddu		a0, s0, zero		# 001205b4:0200202d	a0=_dr_mode
	jal		$00112990		# 001205b8:0c044a64	£sceSifWriteBackDCache
	addiu		a1, zero, $0004		# 001205bc:24050004	a1=$00000004
	addiu		s1, s7, $adc0		# 001205c0:26f1adc0	s1=_sceCd_scmdrdata
	addiu		a0, s5, $4b10		# 001205c4:26a44b10	
	daddu		a3, s0, zero		# 001205c8:0200382d	a3=_dr_mode
	sw		zero, $0000(sp)		# 001205cc:afa00000	
	daddu		a1, zero, zero		# 001205d0:0000282d	
	daddu		a2, zero, zero		# 001205d4:0000302d	
	addiu		t0, zero, $0004		# 001205d8:24080004	t0=$00000004
	daddu		t1, s1, zero		# 001205dc:0220482d	t1=_sceCd_scmdrdata
	addiu		t2, zero, $0004		# 001205e0:240a0004	t2=$00000004
	jal		$00113280		# 001205e4:0c044ca0	£sceSifCallRpc
	daddu		t3, zero, zero		# 001205e8:0000582d	
	bgezl		v0, $00120614		# 001205ec:04430009	¥__00120614
	lw		v0, $9bd0(s6)		# 001205f0:8ec29bd0	
__001205f4:					# 
	lw		a0, $9bec(s3)		# 001205f4:8e649bec	
	jal		$00110100		# 001205f8:0c044040	£SignalSema
	nop					# 001205fc:00000000	
	xori		a0, s2, $0008		# 00120600:3a440008	
	addiu		v1, zero, $ffff		# 00120604:2403ffff	v1=_heap_size
	addiu		v0, zero, $0006		# 00120608:24020006	v0=$00000006
	beq		zero, zero, $0012063c	# 0012060c:1000000b	¥__0012063c
	movz		v0, v1, a0		# 00120610:0064100a	
__00120614:					# 
	blez		v0, $00120624		# 00120614:18400003	¥__00120624
	lui		a0, $0036		# 00120618:3c040036	a0=$00360000
	jal		$00112298		# 0012061c:0c0448a6	£scePrintf
	addiu		a0, a0, $8dc0		# 00120620:24848dc0	a0="DiskReady ended\n"
__00120624:					# 
	lui		v0, $2000		# 00120624:3c022000	v0=$20000000
	lw		a0, $9bec(s3)		# 00120628:8e649bec	
	or		v0, s1, v0		# 0012062c:02221025	v0=$2032adc0
	jal		$00110100		# 00120630:0c044040	£SignalSema
	lw		s0, $0000(v0)		# 00120634:8c500000	s0=$2032adc0
	daddu		v0, s0, zero		# 00120638:0200102d	
__0012063c:					# 
	ld		ra, $0090(sp)		# 0012063c:dfbf0090	
	ld		s7, $0080(sp)		# 00120640:dfb70080	
	ld		s6, $0070(sp)		# 00120644:dfb60070	
	ld		s5, $0060(sp)		# 00120648:dfb50060	
	ld		s4, $0050(sp)		# 0012064c:dfb40050	
	ld		s3, $0040(sp)		# 00120650:dfb30040	
	ld		s2, $0030(sp)		# 00120654:dfb20030	
	ld		s1, $0020(sp)		# 00120658:dfb10020	
	ld		s0, $0010(sp)		# 0012065c:dfb00010	
	jr		ra			# 00120660:03e00008	
	addiu		sp, sp, $00a0		# 00120664:27bd00a0	

sceCdGetError

sceCdGetError:					# 
	addiu		sp, sp, $ffd0		# 001209e0:27bdffd0	
	addiu		a0, zero, $0003		# 001209e4:24040003	a0=$00000003
	sd		ra, $0020(sp)		# 001209e8:ffbf0020	
	jal		$00120020		# 001209ec:0c048008	£_sceCd_scmd_prechk
	sd		s0, $0010(sp)		# 001209f0:ffb00010	
	bne		v0, zero, $00120a04	# 001209f4:14400003	¥__00120a04
	lui		v0, $0033		# 001209f8:3c020033	v0=$00330000
	beq		zero, zero, $00120a68	# 001209fc:1000001a	¥__00120a68
	addiu		v0, zero, $ffff		# 00120a00:2402ffff	v0=_heap_size
__00120a04:					# 
	lui		a0, $0033		# 00120a04:3c040033	a0=$00330000
	addiu		s0, v0, $adc0		# 00120a08:2450adc0	s0=$ffffadbf
	addiu		a0, a0, $b608		# 00120a0c:2484b608	a0=_sceCd_cd_scmd
	sw		zero, $0000(sp)		# 00120a10:afa00000	
	addiu		a1, zero, $0004		# 00120a14:24050004	a1=$00000004
	daddu		a2, zero, zero		# 00120a18:0000302d	
	daddu		a3, zero, zero		# 00120a1c:0000382d	
	daddu		t0, zero, zero		# 00120a20:0000402d	
	daddu		t1, s0, zero		# 00120a24:0200482d	t1=$ffffadbf
	addiu		t2, zero, $0004		# 00120a28:240a0004	t2=$00000004
	jal		$00113280		# 00120a2c:0c044ca0	£sceSifCallRpc
	daddu		t3, zero, zero		# 00120a30:0000582d	
	bgez		v0, $00120a50		# 00120a34:04410006	¥__00120a50
	lui		v1, $0033		# 00120a38:3c030033	v1=$00330000
	lui		v0, $0033		# 00120a3c:3c020033	v0=$00330000
	jal		$00110100		# 00120a40:0c044040	£SignalSema
	lw		a0, $9bec(v0)		# 00120a44:8c449bec	a0=_sceCd_scmd_semid
	beq		zero, zero, $00120a68	# 00120a48:10000007	¥__00120a68
	addiu		v0, zero, $ffff		# 00120a4c:2402ffff	v0=_heap_size
__00120a50:					# 
	lui		v0, $2000		# 00120a50:3c022000	v0=$20000000
	or		v0, s0, v0		# 00120a54:02021025	v0=$ffffadbf
	lw		a0, $9bec(v1)		# 00120a58:8c649bec	a0=_sceCd_scmd_semid
	jal		$00110100		# 00120a5c:0c044040	£SignalSema
	lw		s0, $0000(v0)		# 00120a60:8c500000	s0=$ffffadbf
	daddu		v0, s0, zero		# 00120a64:0200102d	
__00120a68:					# 
	ld		ra, $0020(sp)		# 00120a68:dfbf0020	
	ld		s0, $0010(sp)		# 00120a6c:dfb00010	
	jr		ra			# 00120a70:03e00008	
	addiu		sp, sp, $0030		# 00120a74:27bd0030