Files
2026-05-23 19:27:33 -07:00

116 lines
2.1 KiB
ArmAsm

.meta name="CallProtectedHandler"
.meta description=""
entry_ptr:
reloc0:
.offsetof start
.versions 3OJT 3OJ2 3OJ3 3OJ4 3OJ5 3OE0 3OE1 3OE2 3OP0
start:
stwu [r1 - 0x10], r1
mflr r0
stw [r1 + 0x14], r0
stw [r1 + 0x08], r31
stw [r1 + 0x0C], r30
b get_data_addr
resume:
mflr r31
lwz r30, [r31]
li r0, 1
stw [r30], r0
addi r3, r31, 0x0C
lwz r4, [r31 + 8]
lwz r0, [r31 + 4]
mtctr r0
bctrl
li r0, 0
stw [r30], r0
lwz r30, [r1 + 0x0C]
lwz r31, [r1 + 0x08]
lwz r0, [r1 + 0x14]
mtlr r0
addi r1, r1, 0x10
blr
get_data_addr:
bl resume
# allow_local_client_commands
.data <VERS 0x8065F458 0x805C4D58 0x805CF320 0x805D67A0 0x805D6540 0x805C5650 0x805CC630 0x805D5E50 0x805D2090>
# RcvPsoData2
.data <VERS 0x80236F24 0x801E3B38 0x801E40BC 0x801E4290 0x801E4008 0x801E3F9C 0x801E3F9C 0x801E405C 0x801E4698>
.versions 4OJB 4OJD 4OJU 4OED 4OEU 4OPD 4OPU
start:
jmp get_data_addr
resume:
xchg ebx, [esp]
mov edx, [ebx]
mov dword [edx], 1
mov edx, [ebx + 4]
lea ecx, [ebx + 0x0C]
mov eax, [ebx + 8]
call edx
mov edx, [ebx]
mov dword [edx], 0
pop ebx
ret
get_data_addr:
call resume
.data <VERS 0x0071E8C8 0x0071EF28 0x00726A68 0x00723F68 0x007237E8 0x00723F68 0x007242E8>
.data <VERS 0x002DBBA0 0x002DC720 0x002DDFE0 0x002DDB00 0x002DE000 0x002DDB30 0x002DE030>
.versions 50YJ 59NJ 59NL
start:
jmp get_data_addr
resume:
xchg ebx, [esp]
mov edx, [ebx]
mov dword [edx], 1
mov edx, [ebx + 4]
push dword [ebx + 8]
lea ecx, [ebx + 0x0C]
push ecx
call edx # RcvPsoData2(data, size)
add esp, 8
mov edx, [ebx]
mov dword [edx], 0
pop ebx
ret
get_data_addr:
call resume
.data <VERS 0x00AA2830 0x00AAC870 0x00AAECF0> # should_allow_protected_commands
.data <VERS 0x007F95E0 0x008015D0 0x00800860> # RcvPsoData2[std](void* data @ [esp + 4], uint32_t size @ [esp + 8])
.all_versions
size:
.data 0x00000000
data: