.nds
.open "overlay_0029.bin", 0x22DC240  
	.org 0x230aaec
	.area 0x4
		mov r0, #0
	.endarea

	.org 0x230ac58
	.area 0x8
		push r3-r8, lr
		bl setRegisters
	.endarea

	.org 0x230ac84
	.area 0x10
		beq GhostInteractions ; suite
		cmp r5, #0xb
		beq applyNeutralPsychic
		bne GhostInteractions
	.endarea

	.org 0x230ac9c
	.area 0x4
		popeq r3-r8, pc
	.endarea

	.org 0x230aca0
    .area 0x4
        b GhostInteractions
    .endarea

	.org 0x230acc8
	.area 0x4
		pop r3-r8, pc
	.endarea

	.org 0x230acdc
	.area 0x4
		popne r3-r8, pc
	.endarea

	.org 0x230acf4
	.area 0xC
		ldrb r0, [r1, r0]
		nop
		pop r3-r8, pc
	.endarea
	
	.org 0x230aef8
	.area 0x4
		mov r0, #0
	.endarea
.close

.open "overlay_0036.bin", 0x23A7080
.orga 0x35B80
.area 0x35C00 - 0x35B80

setRegisters:
	mov r8, r0
	mov r7, r1
	bx lr

applyNeutralPsychic:
    add r0, r4, r6
    ldrb r0, [r0, #0x5e]
    cmp r0, #16
    moveq r0, #2
    popeq r3-r8, pc

GhostInteractions:
	; r8: attacker pointer
	; r7: defender pointer
	; r5: attack type
	; r4: defender struct
	ldrb r1, [r4,#+0xFE]
	cmp r1, #1
	beq getNormalEffectiveness
	mov r0, r8
	mov r1, #0x57
	bl 0x2301D10
	cmp r0, #1
	beq getNormalEffectiveness
	mov r0, r8
	mov r1, #0x45
	bl 0x230a9b8
	cmp r0, #1
	bne normalReturn

getNormalEffectiveness:
	cmp r5, #1
	beq applyNeutralNormal
	cmp r5, #7
	bne normalReturn

applyNeutralNormal:
    add r0, r4, r6
    ldrb r0, [r0, #0x5e]
    cmp r0, #14
    moveq r0, #2
    popeq r3-r8, pc

normalReturn: 
	cmp r5, 9h
	b 0x230aca4

.pool
.endarea
.close