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
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

Signature
 # 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

Signature
 # 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

Signature
 # 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

Signature
 # 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

Signature
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

Signature
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

Signature
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

Signature
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

Signature
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

Signature
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	

sceCdInit

Signature
sceCdInit:					# 
	addiu		sp, sp, $ff50		# 00120190:27bdff50	
	sd		s3, $0040(sp)		# 00120194:ffb30040	
	daddu		s3, a0, zero		# 00120198:0080982d	
	sd		ra, $00a0(sp)		# 0012019c:ffbf00a0	
	sd		fp, $0090(sp)		# 001201a0:ffbe0090	
	addiu		a0, zero, $0001		# 001201a4:24040001	a0=$00000001
	sd		s7, $0080(sp)		# 001201a8:ffb70080	
	sd		s6, $0070(sp)		# 001201ac:ffb60070	
	sd		s5, $0060(sp)		# 001201b0:ffb50060	
	sd		s4, $0050(sp)		# 001201b4:ffb40050	
	sd		s2, $0030(sp)		# 001201b8:ffb20030	
	sd		s1, $0020(sp)		# 001201bc:ffb10020	
	jal		$0011ffb0		# 001201c0:0c047fec	£sceCdSyncS
	sd		s0, $0010(sp)		# 001201c4:ffb00010	
	bne		v0, zero, $00120440	# 001201c8:1440009d	¥__00120440
	daddu		v0, zero, zero		# 001201cc:0000102d	
	daddu		a0, zero, zero		# 001201d0:0000202d	
	jal		$00112a40		# 001201d4:0c044a90	£sceSifInitRpc
	lui		s5, $0033		# 001201d8:3c150033	s5=$00330000
	jal		$0010ffd0		# 001201dc:0c043ff4	£GetThreadId
	lui		s4, $0033		# 001201e0:3c140033	s4=$00330000
	lui		s0, $0037		# 001201e4:3c100037	s0=rbuf
	lw		a1, $9c10(s5)		# 001201e8:8ea59c10	a1=c_cnt.57
	addiu		v1, zero, $0001		# 001201ec:24030001	v1=$00000001
	lui		a0, $0033		# 001201f0:3c040033	a0=$00330000
	lui		a2, $0037		# 001201f4:3c060037	a2=rbuf
	sw		v1, $9be4(a0)		# 001201f8:ac839be4	Init_seq
	addiu		a1, a1, $0001		# 001201fc:24a50001	
	addiu		a0, zero, $ffff		# 00120200:2404ffff	a0=_heap_size
	lui		a3, $0033		# 00120204:3c070033	a3=$00330000
	lui		t0, $0033		# 00120208:3c080033	t0=$00330000
	lui		t1, $0033		# 0012020c:3c090033	t1=$00330000
	lui		t3, $0033		# 00120210:3c0b0033	t3=$00330000
	lui		v1, $0033		# 00120214:3c030033	v1=$00330000
	lui		t2, $0033		# 00120218:3c0a0033	t2=$00330000
	sw		v0, $48d0(a2)		# 0012021c:acc248d0	my_thid
	lui		v0, $0037		# 00120220:3c020037	v0=rbuf
	sw		a0, $9bfc(v1)		# 00120224:ac649bfc	_icmd_bind
	sw		a0, $9c00(a3)		# 00120228:ace49c00	_sf_bind
	addiu		s1, v0, $4ae8		# 0012022c:24514ae8	s1=cdit
	sw		a0, $9bf8(t0)		# 00120230:ad049bf8	_ncmd_bind
	addiu		s2, s0, $4b40		# 00120234:26124b40	s2=_i_mode
	sw		a0, $9c08(t1)		# 00120238:ad249c08	_scmd_bind
	lui		fp, $0033		# 0012023c:3c1e0033	fp=$00330000
	sw		a0, $9c04(t3)		# 00120240:ad649c04	_scmd_dr_bind
	lui		s7, $0033		# 00120244:3c170033	s7=$00330000
	sw		zero, $9bf4(t2)		# 00120248:ad409bf4	_sceCd_ee_read_mode
	lui		s6, $0036		# 0012024c:3c160036	s6=$00360000
	sw		a1, $9c10(s5)		# 00120250:aea59c10	c_cnt.57
	sw		a0, $9c0c(s4)		# 00120254:ae849c0c	_it_bind
__00120258:					# 
	lui		a1, $8000		# 00120258:3c058000	a1=$80000000
	daddu		a0, s1, zero		# 0012025c:0220202d	a0=cdit
	ori		a1, a1, $0592		# 00120260:34a50592	a1=$80000592
	jal		$001130b0		# 00120264:0c044c2c	£sceSifBindRpc
	daddu		a2, zero, zero		# 00120268:0000302d	
	daddu		a1, v0, zero		# 0012026c:0040282d	a1=rbuf
	bgezl		a1, $001202bc		# 00120270:04a30012	¥__001202bc
	lw		v0, $0024(s1)		# 00120274:8e220024	v0=$00374b0c
	lw		v0, $9bd0(s7)		# 00120278:8ee29bd0	v0=SCE_CD_debug
	blez		v0, $0012028c		# 0012027c:18400003	¥__0012028c
	lw		a2, $9c10(s5)		# 00120280:8ea69c10	
	jal		$00112298		# 00120284:0c0448a6	£scePrintf
	addiu		a0, s6, $8d60		# 00120288:26c48d60	a0="Libcdvd bind err %d CD_Init %d\n"
__0012028c:					# 
	lui		v0, $0010		# 0012028c:3c020010	v0=.text
	addiu		v1, zero, $ffff		# 00120290:2403ffff	v1=_heap_size
	nop					# 00120294:00000000	
__00120298:					# 
	addiu		v0, v0, $ffff		# 00120298:2442ffff	v0=$000fffff
	nop					# 0012029c:00000000	
	nop					# 001202a0:00000000	
	nop					# 001202a4:00000000	
	nop					# 001202a8:00000000	
	bne		v0, v1, $00120298	# 001202ac:1443fffa	£__00120298
	nop					# 001202b0:00000000	
	beq		zero, zero, $00120258	# 001202b4:1000ffe8	£__00120258
	nop					# 001202b8:00000000	
__001202bc:					# 
	beq		v0, zero, $00120314	# 001202bc:10400015	¥__00120314
	daddu		a0, s2, zero		# 001202c0:0240202d	
	sw		s3, $4b40(s0)		# 001202c4:ae134b40	
	sw		zero, $9c0c(s4)		# 001202c8:ae809c0c	
	jal		$00112990		# 001202cc:0c044a64	£sceSifWriteBackDCache
	addiu		a1, zero, $0004		# 001202d0:24050004	a1=$00000004
	addiu		s0, fp, $adc0		# 001202d4:27d0adc0	s0=_sceCd_scmdrdata
	daddu		a0, s1, zero		# 001202d8:0220202d	
	daddu		a3, s2, zero		# 001202dc:0240382d	
	sw		zero, $0000(sp)		# 001202e0:afa00000	
	daddu		a1, zero, zero		# 001202e4:0000282d	
	daddu		a2, zero, zero		# 001202e8:0000302d	
	addiu		t0, zero, $0004		# 001202ec:24080004	t0=$00000004
	daddu		t1, s0, zero		# 001202f0:0200482d	t1=_sceCd_scmdrdata
	addiu		t2, zero, $0010		# 001202f4:240a0010	t2=$00000010
	jal		$00113280		# 001202f8:0c044ca0	£sceSifCallRpc
	daddu		t3, zero, zero		# 001202fc:0000582d	
	bgez		v0, $00120344		# 00120300:04410010	¥__00120344
	lui		v0, $0033		# 00120304:3c020033	v0=$00330000
	sw		zero, $9be4(v0)		# 00120308:ac409be4	Init_seq
	beq		zero, zero, $00120440	# 0012030c:1000004c	¥__00120440
	daddu		v0, zero, zero		# 00120310:0000102d	
__00120314:					# 
	lui		v0, $0010		# 00120314:3c020010	v0=.text
	addiu		v1, zero, $ffff		# 00120318:2403ffff	v1=_heap_size
	nop					# 0012031c:00000000	
__00120320:					# 
	addiu		v0, v0, $ffff		# 00120320:2442ffff	v0=$000fffff
	nop					# 00120324:00000000	
	nop					# 00120328:00000000	
	nop					# 0012032c:00000000	
	nop					# 00120330:00000000	
	bne		v0, v1, $00120320	# 00120334:1443fffa	£__00120320
	nop					# 00120338:00000000	
	beq		zero, zero, $00120258	# 0012033c:1000ffc6	£__00120258
	nop					# 00120340:00000000	
__00120344:					# 
	lui		a1, $2000		# 00120344:3c052000	a1=$20000000
	addiu		v0, s0, $000c		# 00120348:2602000c	v0=$0032adcc
	or		v0, v0, a1		# 0012034c:00451025	v0=$2032adcc
	addiu		v1, s0, $0004		# 00120350:26030004	v1=$0032adc4
	addiu		a0, s0, $0008		# 00120354:26040008	a0=$0032adc8
	lw		a2, $0000(v0)		# 00120358:8c460000	a2=$2032adcc
	or		a0, a0, a1		# 0012035c:00852025	a0=$2032adc8
	or		v1, v1, a1		# 00120360:00651825	v1=$2032adc4
	lw		a1, $0000(v1)		# 00120364:8c650000	a1=$2032adc4
	addiu		s0, zero, $0001		# 00120368:24100001	s0=$00000001
	addiu		v0, zero, $00ff		# 0012036c:240200ff	v0=$000000ff
	beq		a2, v0, $001203cc	# 00120370:10c20016	¥__001203cc
	lw		a0, $0000(a0)		# 00120374:8c840000	a0=$2032adc8
	addiu		v0, zero, $00fe		# 00120378:240200fe	v0=$000000fe
	bne		a2, v0, $00120390	# 0012037c:14c20004	¥__00120390
	addiu		a2, zero, $ffff		# 00120380:2406ffff	a2=_heap_size
	lui		v0, $0033		# 00120384:3c020033	v0=$00330000
	beq		zero, zero, $001203cc	# 00120388:10000010	¥__001203cc
	sw		s0, $9bd0(v0)		# 0012038c:ac509bd0	SCE_CD_debug
__00120390:					# 
	addiu		v0, a1, $00ff		# 00120390:24a200ff	
	slt		v1, a2, a1		# 00120394:00c5182a	
	movn		v0, a1, v1		# 00120398:00a3100b	
	sra		v0, v0, 8		# 0012039c:00021203	
	slti		v0, v0, $0002		# 001203a0:28420002	
	bnel		v0, zero, $001203cc	# 001203a4:54400009	¥__001203cc
	addiu		s0, zero, $0002		# 001203a8:24100002	s0=$00000002
	slt		v1, a2, a0		# 001203ac:00c4182a	
	addiu		v0, a0, $00ff		# 001203b0:248200ff	
	movn		v0, a0, v1		# 001203b4:0083100b	
	sra		v0, v0, 8		# 001203b8:00021203	
	slti		v0, v0, $0002		# 001203bc:28420002	
	beq		v0, zero, $001203d0	# 001203c0:10400003	¥__001203d0
	lui		a0, $0033		# 001203c4:3c040033	a0=$00330000
	addiu		s0, zero, $0002		# 001203c8:24100002	s0=$00000002
__001203cc:					# 
	lui		a0, $0033		# 001203cc:3c040033	a0=$00330000
__001203d0:					# 
	sw		zero, $9be4(a0)		# 001203d0:ac809be4	Init_seq
	bltz		s3, $0012042c		# 001203d4:06600015	¥__0012042c
	slti		v0, s3, $0002		# 001203d8:2a620002	
	bne		v0, zero, $0012042c	# 001203dc:14400013	¥__0012042c
	addiu		v0, zero, $0005		# 001203e0:24020005	v0=$00000005
	bne		s3, v0, $0012042c	# 001203e4:16620011	¥__0012042c
	lui		v0, $0033		# 001203e8:3c020033	v0=$00330000
	lw		v1, $9bd0(v0)		# 001203ec:8c439bd0	v1=SCE_CD_debug
	blez		v1, $00120400		# 001203f0:18600003	¥__00120400
	lui		a0, $0036		# 001203f4:3c040036	a0=$00360000
	jal		$00112298		# 001203f8:0c0448a6	£scePrintf
	addiu		a0, a0, $8d80		# 001203fc:24848d80	a0="Libcdvd Exit\n"
__00120400:					# 
	jal		$0011f870		# 00120400:0c047e1c	£cdvd_exit
	nop					# 00120404:00000000	
	addiu		a0, zero, $ffff		# 00120408:2404ffff	a0=_heap_size
	lui		v0, $0033		# 0012040c:3c020033	v0=$00330000
	sw		a0, $9be8(v0)		# 00120410:ac449be8	_sceCd_ncmd_semid
	lui		v1, $0033		# 00120414:3c030033	v1=$00330000
	sw		a0, $9bec(v1)		# 00120418:ac649bec	_sceCd_scmd_semid
	lui		v0, $0033		# 0012041c:3c020033	v0=$00330000
	sw		a0, $9be0(v0)		# 00120420:ac449be0	cb_semid
	beq		zero, zero, $00120440	# 00120424:10000006	¥__00120440
	daddu		v0, s0, zero		# 00120428:0200102d	v0=$00000002
__0012042c:					# 
	jal		$0011f7d8		# 0012042c:0c047df6	£cmd_sem_init
	nop					# 00120430:00000000	
	jal		$0011f9a0		# 00120434:0c047e68	£PowerOffCB
	nop					# 00120438:00000000	
	daddu		v0, s0, zero		# 0012043c:0200102d	v0=$00000002
__00120440:					# 
	ld		ra, $00a0(sp)		# 00120440:dfbf00a0	
	ld		fp, $0090(sp)		# 00120444:dfbe0090	
	ld		s7, $0080(sp)		# 00120448:dfb70080	
	ld		s6, $0070(sp)		# 0012044c:dfb60070	
	ld		s5, $0060(sp)		# 00120450:dfb50060	
	ld		s4, $0050(sp)		# 00120454:dfb40050	
	ld		s3, $0040(sp)		# 00120458:dfb30040	
	ld		s2, $0030(sp)		# 0012045c:dfb20030	
	ld		s1, $0020(sp)		# 00120460:dfb10020	
	ld		s0, $0010(sp)		# 00120464:dfb00010	
	jr		ra			# 00120468:03e00008	
	addiu		sp, sp, $00b0		# 0012046c:27bd00b0	

sceCdInitEeCB

Signature
sceCdInitEeCB:					# 
	addiu		sp, sp, $ffa0		# 0011f660:27bdffa0	
	sd		s4, $0040(sp)		# 0011f664:ffb40040	
	sd		s1, $0010(sp)		# 0011f668:ffb10010	
	lui		s4, $0033		# 0011f66c:3c140033	s4=$00330000
	daddu		s1, a0, zero		# 0011f670:0080882d	
	sd		s3, $0030(sp)		# 0011f674:ffb30030	
	sd		s2, $0020(sp)		# 0011f678:ffb20020	
	addiu		s3, zero, $0001		# 0011f67c:24130001	s3=$00000001
	sd		s0, $0000(sp)		# 0011f680:ffb00000	
	daddu		s2, a1, zero		# 0011f684:00a0902d	
	lw		a0, $9bd4(s4)		# 0011f688:8e849bd4	a0=cb_thid
	daddu		s0, a2, zero		# 0011f68c:00c0802d	
	bne		a0, zero, $0011f704	# 0011f690:1480001c	¥__0011f704
	sd		ra, $0050(sp)		# 0011f694:ffbf0050	
	jal		$0010ffd0		# 0011f698:0c043ff4	£GetThreadId
	nop					# 0011f69c:00000000	
	lui		v1, $0037		# 0011f6a0:3c030037	v1=rbuf
	lui		a1, $0037		# 0011f6a4:3c050037	a1=rbuf
	sw		v0, $48d0(v1)		# 0011f6a8:ac6248d0	my_thid
	daddu		a0, v0, zero		# 0011f6ac:0040202d	
	jal		$0010ffe0		# 0011f6b0:0c043ff8	£ReferThreadStatus
	addiu		a1, a1, $48d8		# 0011f6b4:24a548d8	a1=my_th_info
	lui		v1, $0037		# 0011f6b8:3c030037	v1=rbuf
	lui		v0, $0037		# 0011f6bc:3c020037	v0=rbuf
	lui		a1, $0012		# 0011f6c0:3c050012	a1=$00120000
	addiu		v1, v1, $4908		# 0011f6c4:24634908	v1=cb_tp
	addiu		v0, v0, $4c70		# 0011f6c8:24424c70	v0=_gp
	addiu		a1, a1, $f5a0		# 0011f6cc:24a5f5a0	a1=_Cdvd_cbLoop
	sw		s0, $000c(v1)		# 0011f6d0:ac70000c	[00374914]
	daddu		a0, v1, zero		# 0011f6d4:0060202d	a0=cb_tp
	sw		v0, $0010(v1)		# 0011f6d8:ac620010	[00374918]
	sw		a1, $0004(v1)		# 0011f6dc:ac650004	[0037490c]
	sw		s2, $0008(v1)		# 0011f6e0:ac720008	[00374910]
	jal		$0010fee0		# 0011f6e4:0c043fb8	£CreateThread
	sw		s1, $0014(v1)		# 0011f6e8:ac710014	[0037491c]
	daddu		a1, zero, zero		# 0011f6ec:0000282d	
	sw		v0, $9bd4(s4)		# 0011f6f0:ae829bd4	cb_thid
	jal		$0010ff00		# 0011f6f4:0c043fc0	£StartThread
	daddu		a0, v0, zero		# 0011f6f8:0040202d	a0=_gp
	beq		zero, zero, $0011f714	# 0011f6fc:10000005	¥__0011f714
	daddu		v0, s3, zero		# 0011f700:0260102d	v0=$00000001
__0011f704:					# 
	daddu		a1, s1, zero		# 0011f704:0220282d	
	jal		$0010ff70		# 0011f708:0c043fdc	£ChangeThreadPriority
	daddu		s3, zero, zero		# 0011f70c:0000982d	
	daddu		v0, s3, zero		# 0011f710:0260102d	
__0011f714:					# 
	ld		ra, $0050(sp)		# 0011f714:dfbf0050	
	ld		s4, $0040(sp)		# 0011f718:dfb40040	
	ld		s3, $0030(sp)		# 0011f71c:dfb30030	
	ld		s2, $0020(sp)		# 0011f720:dfb20020	
	ld		s1, $0010(sp)		# 0011f724:dfb10010	
	ld		s0, $0000(sp)		# 0011f728:dfb00000	
	jr		ra			# 0011f72c:03e00008	
	addiu		sp, sp, $0060		# 0011f730:27bd0060	
	nop					# 0011f734:00000000	

sceCdMmode

Signature
sceCdMmode:					# 
	addiu		sp, sp, $ffb0		# 00120668:27bdffb0	
	sd		s1, $0020(sp)		# 0012066c:ffb10020	
	sd		s0, $0010(sp)		# 00120670:ffb00010	
	lui		s1, $0033		# 00120674:3c110033	s1=$00330000
	sd		s2, $0030(sp)		# 00120678:ffb20030	
	daddu		s0, a0, zero		# 0012067c:0080802d	
	sd		ra, $0040(sp)		# 00120680:ffbf0040	
	addiu		s2, s1, $b200		# 00120684:2632b200	s2=_sceCd_scmdsdata
	jal		$00120020		# 00120688:0c048008	£_sceCd_scmd_prechk
	addiu		a0, zero, $0022		# 0012068c:24040022	a0=$00000022
	bnel		v0, zero, $001206a0	# 00120690:54400003	¥__001206a0
	sw		s0, $b200(s1)		# 00120694:ae30b200	_sceCd_scmdsdata
	beq		zero, zero, $00120714	# 00120698:1000001e	¥__00120714
	daddu		v0, zero, zero		# 0012069c:0000102d	
__001206a0:					# 
	daddu		a0, s2, zero		# 001206a0:0240202d	a0=_sceCd_scmdsdata
	jal		$00112990		# 001206a4:0c044a64	£sceSifWriteBackDCache
	addiu		a1, zero, $0004		# 001206a8:24050004	a1=$00000004
	lui		v0, $0033		# 001206ac:3c020033	v0=$00330000
	lui		a0, $0033		# 001206b0:3c040033	a0=$00330000
	addiu		s0, v0, $adc0		# 001206b4:2450adc0	s0=_sceCd_scmdrdata
	addiu		a0, a0, $b608		# 001206b8:2484b608	a0=_sceCd_cd_scmd
	daddu		a3, s2, zero		# 001206bc:0240382d	a3=_sceCd_scmdsdata
	sw		zero, $0000(sp)		# 001206c0:afa00000	
	addiu		a1, zero, $0022		# 001206c4:24050022	a1=$00000022
	daddu		a2, zero, zero		# 001206c8:0000302d	
	addiu		t0, zero, $0004		# 001206cc:24080004	t0=$00000004
	daddu		t1, s0, zero		# 001206d0:0200482d	t1=_sceCd_scmdrdata
	addiu		t2, zero, $0004		# 001206d4:240a0004	t2=$00000004
	jal		$00113280		# 001206d8:0c044ca0	£sceSifCallRpc
	daddu		t3, zero, zero		# 001206dc:0000582d	
	bgez		v0, $001206fc		# 001206e0:04410006	¥__001206fc
	lui		v1, $0033		# 001206e4:3c030033	v1=$00330000
	lui		v0, $0033		# 001206e8:3c020033	v0=$00330000
	jal		$00110100		# 001206ec:0c044040	£SignalSema
	lw		a0, $9bec(v0)		# 001206f0:8c449bec	a0=_sceCd_scmd_semid
	beq		zero, zero, $00120714	# 001206f4:10000007	¥__00120714
	daddu		v0, zero, zero		# 001206f8:0000102d	
__001206fc:					# 
	lui		v0, $2000		# 001206fc:3c022000	v0=$20000000
	or		v0, s0, v0		# 00120700:02021025	v0=$2032adc0
	lw		a0, $9bec(v1)		# 00120704:8c649bec	a0=_sceCd_scmd_semid
	jal		$00110100		# 00120708:0c044040	£SignalSema
	lw		s0, $0000(v0)		# 0012070c:8c500000	s0=$2032adc0
	daddu		v0, s0, zero		# 00120710:0200102d	
__00120714:					# 
	ld		ra, $0040(sp)		# 00120714:dfbf0040	
	ld		s2, $0030(sp)		# 00120718:dfb20030	
	ld		s1, $0020(sp)		# 0012071c:dfb10020	
	ld		s0, $0010(sp)		# 00120720:dfb00010	
	jr		ra			# 00120724:03e00008	
	addiu		sp, sp, $0050		# 00120728:27bd0050	
	nop					# 0012072c:00000000