1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
.include "asm/macros.inc"
.include "global.inc"
.bss
.global signal_funcs
signal_funcs: ; 0x021D74AC
.space 0x1c
.size signal_funcs,.-signal_funcs
.text
arm_func_start raise
raise: ; 0x020E2D7C
stmdb sp!, {r3-r5,lr}
mov r5, r0
cmp r5, #0x1
blt _020E2D94
cmp r5, #0x7
ble _020E2D9C
_020E2D94:
mvn r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E2D9C:
ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_TryLockMutex
cmp r0, #0x0
bne _020E2DD0
ldr r0, _020E2E9C ; =OSi_ThreadInfo
ldr r1, _020E2EA0 ; =__cs_id
ldr r2, [r0, #0x4]
ldr r0, _020E2EA4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0x1c]
str r2, [r0, #0x1c]
b _020E2E28
_020E2DD0:
ldr r0, _020E2E9C ; =OSi_ThreadInfo
ldr r1, _020E2EA0 ; =__cs_id
ldr r0, [r0, #0x4]
ldr r1, [r1, #0x1c]
ldr r0, [r0, #0x6c]
cmp r1, r0
bne _020E2E00
ldr r0, _020E2EA4 ; =__cs_ref
ldr r1, [r0, #0x1c]
add r1, r1, #0x1
str r1, [r0, #0x1c]
b _020E2E28
_020E2E00:
ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_LockMutex
ldr r0, _020E2E9C ; =OSi_ThreadInfo
ldr r1, _020E2EA0 ; =__cs_id
ldr r2, [r0, #0x4]
ldr r0, _020E2EA4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0x1c]
str r2, [r0, #0x1c]
_020E2E28:
ldr r1, _020E2EA8 ; =signal_funcs
sub r2, r5, #0x1
ldr r4, [r1, r2, lsl #0x2]
cmp r4, #0x1
movne r0, #0x0
strne r0, [r1, r2, lsl #0x2]
ldr r0, _020E2EA4 ; =__cs_ref
ldr r1, [r0, #0x1c]
subs r1, r1, #0x1
str r1, [r0, #0x1c]
bne _020E2E5C
ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_UnlockMutex
_020E2E5C:
cmp r4, #0x1
beq _020E2E70
cmp r4, #0x0
cmpeq r5, #0x1
bne _020E2E78
_020E2E70:
mov r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E2E78:
cmp r4, #0x0
bne _020E2E88
mov r0, #0x0
bl exit
_020E2E88:
mov r0, r5
blx r4
mov r0, #0x0
ldmia sp!, {r3-r5,pc}
.balign 4
_020E2E98: .word __cs + 0xA8
_020E2E9C: .word OSi_ThreadInfo
_020E2EA0: .word __cs_id
_020E2EA4: .word __cs_ref
_020E2EA8: .word signal_funcs
arm_func_end raise
exception raise, 305, 0x00200300
|