summaryrefslogtreecommitdiff
path: root/asm/script.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/script.s')
-rw-r--r--asm/script.s879
1 files changed, 879 insertions, 0 deletions
diff --git a/asm/script.s b/asm/script.s
new file mode 100644
index 000000000..8889510fd
--- /dev/null
+++ b/asm/script.s
@@ -0,0 +1,879 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start script_env_init
+@ void script_env_init(script_env *env, int a2, int a3)
+script_env_init: @ 8098CB8
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0
+ strb r0, [r3, 0x1]
+ str r0, [r3, 0x8]
+ strb r0, [r3]
+ str r0, [r3, 0x4]
+ str r1, [r3, 0x5C]
+ str r2, [r3, 0x60]
+ movs r2, 0
+ movs r1, 0x3
+ adds r0, r3, 0
+ adds r0, 0x70
+_08098CD2:
+ str r2, [r0]
+ subs r0, 0x4
+ subs r1, 0x1
+ cmp r1, 0
+ bge _08098CD2
+ adds r1, r3, 0
+ adds r1, 0xC
+ movs r2, 0
+ adds r0, r3, 0
+ adds r0, 0x58
+_08098CE6:
+ str r2, [r0]
+ subs r0, 0x4
+ cmp r0, r1
+ bge _08098CE6
+ pop {r0}
+ bx r0
+ thumb_func_end script_env_init
+
+ thumb_func_start script_setup_bytecode_script
+@ int script_setup_bytecode_script(script_env *env, void *script_ptr)
+script_setup_bytecode_script: @ 8098CF4
+ str r1, [r0, 0x8]
+ movs r1, 0x1
+ strb r1, [r0, 0x1]
+ movs r0, 0x1
+ bx lr
+ thumb_func_end script_setup_bytecode_script
+
+ thumb_func_start script_setup_asm_script
+script_setup_asm_script: @ 8098D00
+ movs r2, 0x2
+ strb r2, [r0, 0x1]
+ str r1, [r0, 0x4]
+ bx lr
+ thumb_func_end script_setup_asm_script
+
+ thumb_func_start script_stop
+@ void script_stop(script_env *env)
+script_stop: @ 8098D08
+ movs r1, 0
+ strb r1, [r0, 0x1]
+ str r1, [r0, 0x8]
+ bx lr
+ thumb_func_end script_stop
+
+ thumb_func_start script_main_handler
+@ int script_main_handler(script_env *env)
+script_main_handler: @ 8098D10
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0
+ bne _08098D1E
+_08098D1A:
+ movs r0, 0
+ b _08098D90
+_08098D1E:
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0x1
+ beq _08098D56
+ cmp r0, 0x1
+ bgt _08098D2E
+ cmp r0, 0
+ beq _08098D1A
+ b _08098D8E
+_08098D2E:
+ cmp r0, 0x2
+ bne _08098D8E
+ ldr r0, [r4, 0x4]
+ cmp r0, 0
+ beq _08098D52
+ bl _call_via_r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08098D8E
+ strb r0, [r4, 0x1]
+ b _08098D8E
+_08098D48:
+ strb r2, [r4, 0x1]
+ b _08098D1A
+_08098D4C:
+ movs r0, 0
+ strb r0, [r4, 0x1]
+ b _08098D90
+_08098D52:
+ movs r0, 0x1
+ strb r0, [r4, 0x1]
+_08098D56:
+ ldr r2, [r4, 0x8]
+ cmp r2, 0
+ beq _08098D48
+ ldr r0, =gUnknown_085102BC
+ ldr r0, [r0]
+ cmp r2, r0
+ bne _08098D6C
+_08098D64:
+ swi 0x2
+ b _08098D64
+ .pool
+_08098D6C:
+ ldrb r1, [r2]
+ adds r0, r2, 0x1
+ str r0, [r4, 0x8]
+ lsls r1, 2
+ ldr r0, [r4, 0x5C]
+ adds r1, r0, r1
+ ldr r0, [r4, 0x60]
+ cmp r1, r0
+ bcs _08098D4C
+ ldr r1, [r1]
+ adds r0, r4, 0
+ bl _call_via_r1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08098D56
+_08098D8E:
+ movs r0, 0x1
+_08098D90:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end script_main_handler
+
+ thumb_func_start script_stack_push
+@ int script_stack_push(script_env *env, int value)
+script_stack_push: @ 8098D98
+ push {lr}
+ adds r2, r0, 0
+ adds r3, r1, 0
+ ldrb r1, [r2]
+ adds r0, r1, 0x1
+ cmp r0, 0x13
+ bgt _08098DBA
+ lsls r0, r1, 2
+ adds r1, r2, 0
+ adds r1, 0xC
+ adds r1, r0
+ str r3, [r1]
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ movs r0, 0
+ b _08098DBC
+_08098DBA:
+ movs r0, 0x1
+_08098DBC:
+ pop {r1}
+ bx r1
+ thumb_func_end script_stack_push
+
+ thumb_func_start script_stack_pop
+@ int script_stack_pop(script_env *env)
+script_stack_pop: @ 8098DC0
+ push {lr}
+ adds r2, r0, 0
+ ldrb r0, [r2]
+ cmp r0, 0
+ beq _08098DDC
+ subs r0, 0x1
+ strb r0, [r2]
+ ldrb r1, [r2]
+ lsls r1, 2
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1
+ ldr r0, [r0]
+ b _08098DDE
+_08098DDC:
+ movs r0, 0
+_08098DDE:
+ pop {r1}
+ bx r1
+ thumb_func_end script_stack_pop
+
+ thumb_func_start script_jump
+@ void script_jump(script_env *env, int address)
+script_jump: @ 8098DE4
+ str r1, [r0, 0x8]
+ bx lr
+ thumb_func_end script_jump
+
+ thumb_func_start script_call
+@ void script_call(script_env *env, int address)
+script_call: @ 8098DE8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, [r4, 0x8]
+ bl script_stack_push
+ str r5, [r4, 0x8]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end script_call
+
+ thumb_func_start script_return
+@ void script_return(script_env *env)
+script_return: @ 8098DFC
+ push {r4,lr}
+ adds r4, r0, 0
+ bl script_stack_pop
+ str r0, [r4, 0x8]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end script_return
+
+ thumb_func_start script_read_halfword
+@ int script_read_halfword(script_env *env)
+script_read_halfword: @ 8098E0C
+ adds r3, r0, 0
+ ldr r2, [r3, 0x8]
+ ldrb r0, [r2]
+ adds r2, 0x1
+ str r2, [r3, 0x8]
+ ldrb r1, [r2]
+ lsls r1, 8
+ orrs r0, r1
+ adds r2, 0x1
+ str r2, [r3, 0x8]
+ bx lr
+ thumb_func_end script_read_halfword
+
+ thumb_func_start script_read_word
+@ int script_read_word(script_env *env)
+script_read_word: @ 8098E24
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ ldr r0, [r3, 0x8]
+ ldrb r6, [r0]
+ adds r0, 0x1
+ str r0, [r3, 0x8]
+ ldrb r5, [r0]
+ adds r2, r0, 0x1
+ str r2, [r3, 0x8]
+ ldrb r4, [r0, 0x1]
+ adds r1, r2, 0x1
+ str r1, [r3, 0x8]
+ ldrb r0, [r2, 0x1]
+ adds r1, 0x1
+ str r1, [r3, 0x8]
+ lsls r0, 8
+ adds r0, r4
+ lsls r0, 8
+ adds r0, r5
+ lsls r0, 8
+ adds r0, r6
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end script_read_word
+
+ thumb_func_start script_env_2_enable
+script_env_2_enable: @ 8098E54
+ ldr r1, =0x03000f2c
+ movs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end script_env_2_enable
+
+ thumb_func_start script_env_2_disable
+@ void script_env_2_disable()
+script_env_2_disable: @ 8098E60
+ ldr r1, =0x03000f2c
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end script_env_2_disable
+
+ thumb_func_start script_env_2_is_enabled
+@ int script_env_2_is_enabled()
+script_env_2_is_enabled: @ 8098E6C
+ ldr r0, =0x03000f2c
+ ldrb r0, [r0]
+ bx lr
+ .pool
+ thumb_func_end script_env_2_is_enabled
+
+ thumb_func_start script_env_context_is_running
+@ int script_env_context_is_running()
+script_env_context_is_running: @ 8098E78
+ push {lr}
+ ldr r0, =0x03000e38
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08098E8C
+ movs r0, 0
+ b _08098E8E
+ .pool
+_08098E8C:
+ movs r0, 0x1
+_08098E8E:
+ pop {r1}
+ bx r1
+ thumb_func_end script_env_context_is_running
+
+ thumb_func_start script_env_1_init
+script_env_1_init: @ 8098E94
+ push {lr}
+ ldr r0, =0x03000e40
+ ldr r1, =gEventScriptCommandFunctionTable
+ ldr r2, =gUnknown_081DBA08
+ bl script_env_init
+ ldr r1, =0x03000e38
+ movs r0, 0x2
+ strb r0, [r1]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end script_env_1_init
+
+ thumb_func_start script_env_2_run_current_script
+script_env_2_run_current_script: @ 8098EBC
+ push {r4,lr}
+ ldr r4, =0x03000e38
+ ldrb r0, [r4]
+ cmp r0, 0x2
+ beq _08098EF0
+ cmp r0, 0x1
+ beq _08098EF0
+ bl script_env_2_enable
+ ldr r0, =0x03000e40
+ bl script_main_handler
+ lsls r0, 24
+ cmp r0, 0
+ beq _08098EE8
+ movs r0, 0x1
+ b _08098EF2
+ .pool
+_08098EE8:
+ movs r0, 0x2
+ strb r0, [r4]
+ bl script_env_2_disable
+_08098EF0:
+ movs r0, 0
+_08098EF2:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end script_env_2_run_current_script
+
+ thumb_func_start script_env_1_execute_new_script
+script_env_1_execute_new_script: @ 8098EF8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, =0x03000e40
+ ldr r1, =gEventScriptCommandFunctionTable
+ ldr r2, =gUnknown_081DBA08
+ adds r0, r4, 0
+ bl script_env_init
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl script_setup_bytecode_script
+ bl script_env_2_enable
+ ldr r1, =0x03000e38
+ movs r0, 0
+ strb r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end script_env_1_execute_new_script
+
+ thumb_func_start script_env_2_set_ctx_paused
+script_env_2_set_ctx_paused: @ 8098F30
+ ldr r1, =0x03000e38
+ movs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end script_env_2_set_ctx_paused
+
+ thumb_func_start script_env_2_enable_and_set_ctx_running
+script_env_2_enable_and_set_ctx_running: @ 8098F3C
+ push {lr}
+ ldr r1, =0x03000e38
+ movs r0, 0
+ strb r0, [r1]
+ bl script_env_2_enable
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end script_env_2_enable_and_set_ctx_running
+
+ thumb_func_start script_env_2_execute_new_script
+@ void script_env_2_execute_new_script(void *script_ptr)
+script_env_2_execute_new_script: @ 8098F50
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, =0x03000eb8
+ ldr r1, =gEventScriptCommandFunctionTable
+ ldr r2, =gUnknown_081DBA08
+ adds r0, r4, 0
+ bl script_env_init
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl script_setup_bytecode_script
+_08098F68:
+ ldr r0, =0x03000eb8
+ bl script_main_handler
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08098F68
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end script_env_2_execute_new_script
+
+ thumb_func_start mapheader_get_tagged_pointer
+mapheader_get_tagged_pointer: @ 8098F88
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r0, =0x02037318
+ ldr r2, [r0, 0x8]
+ cmp r2, 0
+ beq _08098F9C
+_08098F96:
+ ldrb r0, [r2]
+ cmp r0, 0
+ bne _08098FA4
+_08098F9C:
+ movs r0, 0
+ b _08098FC2
+ .pool
+_08098FA4:
+ cmp r0, r1
+ beq _08098FAC
+ adds r2, 0x5
+ b _08098F96
+_08098FAC:
+ adds r2, 0x1
+ ldrb r0, [r2]
+ ldrb r1, [r2, 0x1]
+ lsls r1, 8
+ adds r0, r1
+ ldrb r1, [r2, 0x2]
+ lsls r1, 16
+ adds r0, r1
+ ldrb r1, [r2, 0x3]
+ lsls r1, 24
+ adds r0, r1
+_08098FC2:
+ pop {r1}
+ bx r1
+ thumb_func_end mapheader_get_tagged_pointer
+
+ thumb_func_start mapheader_run_script_by_tag
+mapheader_run_script_by_tag: @ 8098FC8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl mapheader_get_tagged_pointer
+ cmp r0, 0
+ beq _08098FDA
+ bl script_env_2_execute_new_script
+_08098FDA:
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_run_script_by_tag
+
+ thumb_func_start mapheader_get_first_match_from_tagged_ptr_list
+@ int mapheader_get_first_match_from_tagged_ptr_list(int tag)
+mapheader_get_first_match_from_tagged_ptr_list: @ 8098FE0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl mapheader_get_tagged_pointer
+ adds r6, r0, 0
+ cmp r6, 0
+ beq _08098FFC
+_08098FF0:
+ ldrb r1, [r6]
+ ldrb r0, [r6, 0x1]
+ lsls r0, 8
+ orrs r1, r0
+ cmp r1, 0
+ bne _08099000
+_08098FFC:
+ movs r0, 0
+ b _0809903A
+_08099000:
+ adds r6, 0x2
+ ldrb r5, [r6]
+ ldrb r0, [r6, 0x1]
+ lsls r0, 8
+ orrs r5, r0
+ adds r6, 0x2
+ adds r0, r1, 0
+ bl VarGet
+ adds r4, r0, 0
+ adds r0, r5, 0
+ bl VarGet
+ lsls r4, 16
+ lsls r0, 16
+ cmp r4, r0
+ beq _08099026
+ adds r6, 0x4
+ b _08098FF0
+_08099026:
+ ldrb r0, [r6]
+ ldrb r1, [r6, 0x1]
+ lsls r1, 8
+ adds r0, r1
+ ldrb r1, [r6, 0x2]
+ lsls r1, 16
+ adds r0, r1
+ ldrb r1, [r6, 0x3]
+ lsls r1, 24
+ adds r0, r1
+_0809903A:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end mapheader_get_first_match_from_tagged_ptr_list
+
+ thumb_func_start mapheader_run_script_with_tag_x1
+mapheader_run_script_with_tag_x1: @ 8099040
+ push {lr}
+ movs r0, 0x1
+ bl mapheader_run_script_by_tag
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_run_script_with_tag_x1
+
+ thumb_func_start mapheader_run_script_with_tag_x3
+mapheader_run_script_with_tag_x3: @ 809904C
+ push {lr}
+ movs r0, 0x3
+ bl mapheader_run_script_by_tag
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_run_script_with_tag_x3
+
+ thumb_func_start mapheader_run_script_with_tag_x5
+mapheader_run_script_with_tag_x5: @ 8099058
+ push {lr}
+ movs r0, 0x5
+ bl mapheader_run_script_by_tag
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_run_script_with_tag_x5
+
+ thumb_func_start mapheader_run_script_with_tag_x7
+mapheader_run_script_with_tag_x7: @ 8099064
+ push {lr}
+ movs r0, 0x7
+ bl mapheader_run_script_by_tag
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_run_script_with_tag_x7
+
+ thumb_func_start mapheader_run_script_with_tag_x6
+mapheader_run_script_with_tag_x6: @ 8099070
+ push {lr}
+ movs r0, 0x6
+ bl mapheader_run_script_by_tag
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_run_script_with_tag_x6
+
+ thumb_func_start mapheader_run_first_tag2_script_list_match
+@ int mapheader_run_first_tag2_script_list_match()
+mapheader_run_first_tag2_script_list_match: @ 809907C
+ push {lr}
+ movs r0, 0x2
+ bl mapheader_get_first_match_from_tagged_ptr_list
+ cmp r0, 0
+ beq _08099090
+ bl script_env_1_execute_new_script
+ movs r0, 0x1
+ b _08099092
+_08099090:
+ movs r0, 0
+_08099092:
+ pop {r1}
+ bx r1
+ thumb_func_end mapheader_run_first_tag2_script_list_match
+
+ thumb_func_start mapheader_run_first_tag4_script_list_match
+@ void mapheader_run_first_tag4_script_list_match()
+mapheader_run_first_tag4_script_list_match: @ 8099098
+ push {lr}
+ movs r0, 0x4
+ bl mapheader_get_first_match_from_tagged_ptr_list
+ cmp r0, 0
+ beq _080990A8
+ bl script_env_2_execute_new_script
+_080990A8:
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_run_first_tag4_script_list_match
+
+ thumb_func_start sub_80990AC
+sub_80990AC: @ 80990AC
+ push {lr}
+ ldr r0, =0x03005d8c
+ ldr r0, [r0]
+ ldr r1, =0x0000372c
+ adds r0, r1
+ movs r1, 0xFA
+ lsls r1, 2
+ bl sub_806F928
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80990AC
+
+ thumb_func_start killram
+killram: @ 80990D0
+ push {lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ ldr r0, =0x00003728
+ adds r1, r0
+ ldr r2, =0x050000fb
+ mov r0, sp
+ bl CpuSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end killram
+
+ thumb_func_start sub_80990FC
+sub_80990FC: @ 80990FC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ str r0, [sp]
+ ldr r0, [sp, 0x24]
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ lsls r3, 24
+ lsrs r7, r3, 24
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, =0x03005d8c
+ mov r10, r0
+ ldr r5, [r0]
+ ldr r1, =0x0000372c
+ adds r4, r5, r1
+ bl killram
+ ldr r0, =0x000003e3
+ cmp r8, r0
+ bhi _08099174
+ movs r0, 0x33
+ strb r0, [r4]
+ mov r2, r9
+ strb r2, [r4, 0x1]
+ strb r7, [r4, 0x2]
+ strb r6, [r4, 0x3]
+ ldr r1, =0x00003730
+ adds r0, r5, r1
+ ldr r1, [sp]
+ mov r2, r8
+ bl memcpy
+ bl sub_80990AC
+ mov r2, r10
+ ldr r1, [r2]
+ ldr r2, =0x00003728
+ adds r1, r2
+ str r0, [r1]
+ movs r0, 0x1
+ b _08099176
+ .pool
+_08099174:
+ movs r0, 0
+_08099176:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80990FC
+
+ thumb_func_start sub_8099188
+@ u32 sub_8099188(u8 a1, u32 script)
+sub_8099188: @ 8099188
+ push {r4-r7,lr}
+ adds r4, r1, 0
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r6, =0x03005d8c
+ ldr r5, [r6]
+ ldr r0, =0x0000372c
+ adds r2, r5, r0
+ ldr r7, =0x020375c0
+ movs r0, 0
+ str r0, [r7]
+ ldrb r0, [r2]
+ cmp r0, 0x33
+ bne _080991F0
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x4
+ ldrsb r0, [r5, r0]
+ cmp r1, r0
+ bne _080991F0
+ ldrb r1, [r2, 0x2]
+ movs r0, 0x5
+ ldrsb r0, [r5, r0]
+ cmp r1, r0
+ bne _080991F0
+ ldrb r0, [r2, 0x3]
+ cmp r0, r3
+ bne _080991F0
+ bl sub_80990AC
+ ldr r1, [r6]
+ ldr r2, =0x00003728
+ adds r1, r2
+ ldr r1, [r1]
+ cmp r0, r1
+ bne _080991EC
+ str r4, [r7]
+ ldr r1, =0x00003730
+ adds r0, r5, r1
+ b _080991F2
+ .pool
+_080991EC:
+ bl killram
+_080991F0:
+ adds r0, r4, 0
+_080991F2:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8099188
+
+ thumb_func_start sub_80991F8
+sub_80991F8: @ 80991F8
+ push {r4,lr}
+ ldr r4, =0x03005d8c
+ ldr r0, [r4]
+ ldr r2, =0x0000372c
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0x33
+ bne _0809923C
+ ldrb r0, [r1, 0x1]
+ cmp r0, 0xFF
+ bne _0809923C
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0xFF
+ bne _0809923C
+ ldrb r0, [r1, 0x3]
+ cmp r0, 0xFF
+ bne _0809923C
+ bl sub_80990AC
+ ldr r1, [r4]
+ ldr r2, =0x00003728
+ adds r1, r2
+ ldr r1, [r1]
+ cmp r0, r1
+ bne _0809923C
+ movs r0, 0x1
+ b _0809923E
+ .pool
+_0809923C:
+ movs r0, 0
+_0809923E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80991F8
+
+ thumb_func_start sub_8099244
+sub_8099244: @ 8099244
+ push {r4-r6,lr}
+ ldr r6, =0x03005d8c
+ ldr r5, [r6]
+ ldr r0, =0x0000372c
+ adds r4, r5, r0
+ bl sub_801B27C
+ cmp r0, 0
+ beq _08099298
+ ldrb r0, [r4]
+ cmp r0, 0x33
+ bne _08099298
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0xFF
+ bne _08099298
+ ldrb r0, [r4, 0x2]
+ cmp r0, 0xFF
+ bne _08099298
+ ldrb r0, [r4, 0x3]
+ cmp r0, 0xFF
+ bne _08099298
+ bl sub_80990AC
+ ldr r1, [r6]
+ ldr r2, =0x00003728
+ adds r1, r2
+ ldr r1, [r1]
+ cmp r0, r1
+ bne _08099294
+ ldr r1, =0x00003730
+ adds r0, r5, r1
+ b _0809929A
+ .pool
+_08099294:
+ bl killram
+_08099298:
+ movs r0, 0
+_0809929A:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8099244
+
+ thumb_func_start sub_80992A0
+sub_80992A0: @ 80992A0
+ push {lr}
+ sub sp, 0x4
+ adds r2, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r0, =0x000003e3
+ cmp r1, r0
+ bls _080992B2
+ adds r1, r0, 0
+_080992B2:
+ movs r0, 0xFF
+ str r0, [sp]
+ adds r0, r2, 0
+ movs r2, 0xFF
+ movs r3, 0xFF
+ bl sub_80990FC
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80992A0
+
+ .align 2, 0 @ Don't pad with nop.