mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-26 00:32:20 -05:00
516 lines
10 KiB
ArmAsm
516 lines
10 KiB
ArmAsm
.include "macros/function.inc"
|
|
.include "include/dwc_svl.inc"
|
|
|
|
.extern OSi_ThreadInfo
|
|
.extern errno
|
|
|
|
.extern Unk_ov4_02215EA0
|
|
.text
|
|
|
|
|
|
arm_func_start DWC_Svl_Init
|
|
DWC_Svl_Init: ; 0x021D6CA4
|
|
stmfd sp!, {r3, r4, r5, lr}
|
|
ldr r2, _021D6D2C ; =0x0221A4C8
|
|
mov r5, r0
|
|
ldr r0, [r2, #0]
|
|
mov r4, r1
|
|
cmp r0, #0
|
|
beq _021D6CD4
|
|
ldr r1, _021D6D30 ; =0xFFFFA1DC
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_021D6CD4:
|
|
ldr r0, _021D6D34 ; =0x02216590
|
|
ldr r1, _021D6D38 ; =0x00001C20
|
|
blx r5
|
|
ldr r1, _021D6D2C ; =0x0221A4C8
|
|
cmp r0, #0
|
|
str r0, [r1, #0]
|
|
bne _021D6D04
|
|
ldr r1, _021D6D30 ; =0xFFFFA1DC
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_021D6D04:
|
|
ldr r2, _021D6D38 ; =0x00001C20
|
|
mov r1, #0
|
|
bl MI_CpuFill8
|
|
ldr r1, _021D6D2C ; =0x0221A4C8
|
|
mov r0, #1
|
|
ldr r2, [r1, #0]
|
|
str r5, [r2, #0]
|
|
ldr r1, [r1, #0]
|
|
str r4, [r1, #4]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
; .align 2, 0
|
|
_021D6D2C: .word Unk_ov4_0221A4C8
|
|
_021D6D30: .word 0xFFFFA1DC
|
|
_021D6D34: .word Unk_ov4_02216590
|
|
_021D6D38: .word 0x00001C20
|
|
arm_func_end DWC_Svl_Init
|
|
|
|
arm_func_start DWC_Svl_Cleanup
|
|
DWC_Svl_Cleanup: ; 0x021D6D3C
|
|
stmfd sp!, {r3, lr}
|
|
ldr r0, _021D6D80 ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
add r0, r0, #8
|
|
bl DWC_Http_Destroy
|
|
ldr r1, _021D6D80 ; =0x0221A4C8
|
|
ldr r0, _021D6D84 ; =0x022165A0
|
|
ldr r1, [r1, #0]
|
|
mov r2, #0
|
|
ldr r3, [r1, #4]
|
|
blx r3
|
|
ldr r0, _021D6D80 ; =0x0221A4C8
|
|
mov r1, #0
|
|
str r1, [r0, #0]
|
|
ldmia sp!, {r3, pc}
|
|
; .align 2, 0
|
|
_021D6D80: .word Unk_ov4_0221A4C8
|
|
_021D6D84: .word Unk_ov4_022165A0
|
|
arm_func_end DWC_Svl_Cleanup
|
|
|
|
arm_func_start DWC_Svl_GetTokenAsync
|
|
DWC_Svl_GetTokenAsync: ; 0x021D6D88
|
|
stmfd sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #0xb0
|
|
ldr r2, _021D6FCC ; =0x0221A4C8
|
|
mov r5, r0
|
|
ldr r2, [r2, #0]
|
|
mov r0, r1
|
|
add r2, r2, #0x1000
|
|
str r1, [r2, #0xc1c]
|
|
mov r1, #0
|
|
mov r2, #0x174
|
|
bl MI_CpuFill8
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r1, [r0, #0]
|
|
add r0, r1, #0x1000
|
|
ldr r0, [r0, #0xbac]
|
|
cmp r0, #0
|
|
beq _021D6DE0
|
|
add r0, r1, #0x1b40
|
|
bl OS_IsThreadTerminated
|
|
cmp r0, #0
|
|
bne _021D6DE0
|
|
bl OS_Terminate
|
|
_021D6DE0:
|
|
ldr r0, _021D6FD0 ; =0x02215EA0
|
|
ldr r1, _021D6FCC ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
mov r3, #0
|
|
ldr r4, [r1, #0]
|
|
mov r2, #0x1000
|
|
str r0, [sp]
|
|
str r3, [sp, #4]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r4, #0]
|
|
ldr r1, _021D6FD4 ; =0x022165B0
|
|
str r2, [sp, #0xc]
|
|
ldr r2, [r4, #4]
|
|
str r2, [sp, #0x10]
|
|
bl strcmp
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
strne r0, [sp, #0x14]
|
|
moveq r0, #0
|
|
ldr r2, _021D6FD8 ; =0x00004E20
|
|
streq r0, [sp, #0x14]
|
|
add r1, sp, #0
|
|
add r0, r4, #8
|
|
str r2, [sp, #0x18]
|
|
bl DWC_Http_Create
|
|
cmp r0, #0
|
|
beq _021D6E64
|
|
ldr r1, _021D6FDC ; =0xFFFFA1DC
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
add sp, sp, #0xb0
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_021D6E64:
|
|
add r0, sp, #0x1c
|
|
bl DWC_Auth_GetCalInfoFromNVRAM
|
|
cmp r0, #0
|
|
beq _021D6E94
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
add r1, sp, #0x1c
|
|
ldr r0, [r0, #0]
|
|
mov r2, #0
|
|
add r0, r0, #8
|
|
bl DWC_Auth_SetCalInfoToHttp
|
|
cmp r0, #0
|
|
bne _021D6EBC
|
|
_021D6E94:
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #8
|
|
bl DWC_Http_Destroy
|
|
ldr r1, _021D6FDC ; =0xFFFFA1DC
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
add sp, sp, #0xb0
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_021D6EBC:
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r1, _021D6FE0 ; =0x022165D0
|
|
ldr r0, [r0, #0]
|
|
ldr r2, _021D6FE4 ; =0x022165D8
|
|
add r0, r0, #8
|
|
mov r3, #6
|
|
bl DWC_Http_Add_PostBase64Item
|
|
cmp r0, #0
|
|
bne _021D6F04
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r1, _021D6FE8 ; =0x022165E0
|
|
ldr r0, [r0, #0]
|
|
mov r2, r5
|
|
add r0, r0, #8
|
|
mov r3, #4
|
|
bl DWC_Http_Add_PostBase64Item
|
|
cmp r0, #0
|
|
beq _021D6F2C
|
|
_021D6F04:
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #8
|
|
bl DWC_Http_Destroy
|
|
ldr r1, _021D6FDC ; =0xFFFFA1DC
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
add sp, sp, #0xb0
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_021D6F2C:
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #8
|
|
bl DWC_Http_FinishHeader
|
|
cmp r0, #0
|
|
beq _021D6F6C
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #8
|
|
bl DWC_Http_Destroy
|
|
ldr r1, _021D6FDC ; =0xFFFFA1DC
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
add sp, sp, #0xb0
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_021D6F6C:
|
|
ldr r0, _021D6FEC ; =0x021CCC80
|
|
ldr r0, [r0, #4]
|
|
bl OS_GetThreadPriority
|
|
ldr r1, _021D6FCC ; =0x0221A4C8
|
|
ldr r2, [r1, #0]
|
|
sub r1, r0, #1
|
|
add r0, r2, #8
|
|
bl DWC_Http_StartThread
|
|
ldr r0, _021D6FCC ; =0x0221A4C8
|
|
ldr r1, [r0, #0]
|
|
add r0, r1, #0x1000
|
|
ldr r0, [r0, #0xbac]
|
|
cmp r0, #0
|
|
addne sp, sp, #0xb0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
add r0, r1, #8
|
|
bl DWC_Http_Destroy
|
|
ldr r1, _021D6FDC ; =0xFFFFA1DC
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
mov r0, #0
|
|
add sp, sp, #0xb0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
; .align 2, 0
|
|
_021D6FCC: .word Unk_ov4_0221A4C8
|
|
_021D6FD0: .word Unk_ov4_02215EA0
|
|
_021D6FD4: .word Unk_ov4_022165B0
|
|
_021D6FD8: .word 0x00004E20
|
|
_021D6FDC: .word 0xFFFFA1DC
|
|
_021D6FE0: .word Unk_ov4_022165D0
|
|
_021D6FE4: .word Unk_ov4_022165D8
|
|
_021D6FE8: .word Unk_ov4_022165E0
|
|
_021D6FEC: .word OSi_ThreadInfo
|
|
arm_func_end DWC_Svl_GetTokenAsync
|
|
|
|
arm_func_start DWC_Svl_Process
|
|
DWC_Svl_Process: ; 0x021D6FF0
|
|
stmfd sp!, {r3, lr}
|
|
ldr r0, _021D70BC ; =0x0221A4C8
|
|
ldr r1, [r0, #0]
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
add r0, r1, #0x1000
|
|
ldr r0, [r0, #0xbac]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, pc}
|
|
add r0, r1, #0x1b40
|
|
bl OS_IsThreadTerminated
|
|
cmp r0, #1
|
|
bne _021D70B4
|
|
ldr r0, _021D70BC ; =0x0221A4C8
|
|
ldr r1, [r0, #0]
|
|
add r0, r1, #0x1000
|
|
ldr r0, [r0, #0x28]
|
|
cmp r0, #7
|
|
beq _021D7088
|
|
cmp r0, #8
|
|
bne _021D7098
|
|
bl ov4_021D70C4
|
|
cmp r0, #0
|
|
bne _021D7070
|
|
ldr r0, _021D70BC ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #8
|
|
bl DWC_Http_Destroy
|
|
mov r0, #4
|
|
ldmia sp!, {r3, pc}
|
|
_021D7070:
|
|
ldr r0, _021D70BC ; =0x0221A4C8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #8
|
|
bl DWC_Http_Destroy
|
|
mov r0, #3
|
|
ldmia sp!, {r3, pc}
|
|
_021D7088:
|
|
add r0, r1, #8
|
|
bl DWC_Http_Destroy
|
|
mov r0, #5
|
|
ldmia sp!, {r3, pc}
|
|
_021D7098:
|
|
add r0, r1, #8
|
|
bl DWC_Http_Destroy
|
|
ldr r1, _021D70C0 ; =0xFFFFA1DB
|
|
mov r0, #0x11
|
|
bl ov4_021D7724
|
|
mov r0, #4
|
|
ldmia sp!, {r3, pc}
|
|
_021D70B4:
|
|
mov r0, #2
|
|
ldmia sp!, {r3, pc}
|
|
; .align 2, 0
|
|
_021D70BC: .word Unk_ov4_0221A4C8
|
|
_021D70C0: .word 0xFFFFA1DB
|
|
arm_func_end DWC_Svl_Process
|
|
|
|
arm_func_start ov4_021D70C4
|
|
ov4_021D70C4: ; 0x021D70C4
|
|
stmfd sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
ldr r0, _021D72B4 ; =0x0221A4C8
|
|
mov r1, #0
|
|
ldr r4, [r0, #0]
|
|
add r0, r4, #8
|
|
bl DWC_Http_ParseResult
|
|
cmp r0, #0
|
|
bne _021D7100
|
|
ldr r1, _021D72B8 ; =0xFFFF9DF3
|
|
mov r0, #0x10
|
|
bl ov4_021D7724
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, pc}
|
|
_021D7100:
|
|
ldr r1, _021D72BC ; =0x022165E4
|
|
add r0, r4, #8
|
|
bl DWC_Http_GetResult
|
|
cmp r0, #0
|
|
beq _021D7118
|
|
bl DWC_Auth_SetNasTimeDiff
|
|
_021D7118:
|
|
ldr r1, _021D72C0 ; =0x022165EC
|
|
add r0, r4, #8
|
|
bl DWC_Http_GetResult
|
|
cmp r0, #0
|
|
bne _021D7144
|
|
ldr r1, _021D72B8 ; =0xFFFF9DF3
|
|
mov r0, #0x10
|
|
bl ov4_021D7724
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, pc}
|
|
_021D7144:
|
|
bl atoi
|
|
ldr r1, _021D72C4 ; =0x021D0D40
|
|
mov r2, r0
|
|
ldr r0, [r1, #0]
|
|
cmp r0, #0x22
|
|
bne _021D7174
|
|
ldr r1, _021D72B8 ; =0xFFFF9DF3
|
|
mov r0, #0x10
|
|
bl ov4_021D7724
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, pc}
|
|
_021D7174:
|
|
cmp r2, #0xc8
|
|
beq _021D7198
|
|
ldr r1, _021D72C8 ; =0xFFFF9E58
|
|
mov r0, #0x10
|
|
sub r1, r1, r2
|
|
bl ov4_021D7724
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, pc}
|
|
_021D7198:
|
|
ldr r1, _021D72CC ; =0x022165F8
|
|
add r2, sp, #0
|
|
add r0, r4, #8
|
|
mov r3, #4
|
|
bl DWC_Http_GetBase64DecodedResult
|
|
cmp r0, #0
|
|
bgt _021D71CC
|
|
ldr r1, _021D72B8 ; =0xFFFF9DF3
|
|
mov r0, #0x10
|
|
bl ov4_021D7724
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, pc}
|
|
_021D71CC:
|
|
add r0, sp, #0
|
|
bl atoi
|
|
ldr r1, _021D72C4 ; =0x021D0D40
|
|
mov r2, r0
|
|
ldr r0, [r1, #0]
|
|
cmp r0, #0x22
|
|
bne _021D7200
|
|
ldr r1, _021D72B8 ; =0xFFFF9DF3
|
|
mov r0, #0x10
|
|
bl ov4_021D7724
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, pc}
|
|
_021D7200:
|
|
cmp r2, #0x64
|
|
blt _021D7224
|
|
ldr r1, _021D72D0 ; =0xFFFFA240
|
|
mov r0, #0x10
|
|
sub r1, r1, r2
|
|
bl ov4_021D7724
|
|
add sp, sp, #4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, pc}
|
|
_021D7224:
|
|
ldr r0, _021D72B4 ; =0x0221A4C8
|
|
ldr r1, _021D72D4 ; =0x02216604
|
|
ldr r2, [r0, #0]
|
|
add r0, r4, #8
|
|
add r2, r2, #0x1000
|
|
ldr r2, [r2, #0xc1c]
|
|
mov r3, #0x40
|
|
add r2, r2, #4
|
|
bl DWC_Http_GetBase64DecodedResult
|
|
ldr r0, _021D72B4 ; =0x0221A4C8
|
|
ldr r1, _021D72D8 ; =0x0221660C
|
|
ldr r2, [r0, #0]
|
|
add r0, r4, #8
|
|
add r2, r2, #0x1000
|
|
ldr r2, [r2, #0xc1c]
|
|
mov r3, #0x12c
|
|
add r2, r2, #0x45
|
|
bl DWC_Http_GetBase64DecodedResult
|
|
ldr r1, _021D72DC ; =0x0221661C
|
|
add r2, sp, #0
|
|
add r0, r4, #8
|
|
mov r3, #1
|
|
bl DWC_Http_GetBase64DecodedResult
|
|
ldrsb r0, [sp]
|
|
cmp r0, #0x59
|
|
ldreq r0, _021D72B4 ; =0x0221A4C8
|
|
moveq r1, #1
|
|
ldrne r0, _021D72B4 ; =0x0221A4C8
|
|
movne r1, #0
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0xc1c]
|
|
str r1, [r0, #0]
|
|
mov r0, #1
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
; .align 2, 0
|
|
_021D72B4: .word Unk_ov4_0221A4C8
|
|
_021D72B8: .word 0xFFFF9DF3
|
|
_021D72BC: .word Unk_ov4_022165E4
|
|
_021D72C0: .word Unk_ov4_022165EC
|
|
_021D72C4: .word errno
|
|
_021D72C8: .word 0xFFFF9E58
|
|
_021D72CC: .word Unk_ov4_022165F8
|
|
_021D72D0: .word 0xFFFFA240
|
|
_021D72D4: .word Unk_ov4_02216604
|
|
_021D72D8: .word Unk_ov4_0221660C
|
|
_021D72DC: .word Unk_ov4_0221661C
|
|
arm_func_end ov4_021D70C4
|
|
|
|
.data
|
|
|
|
|
|
.global Unk_ov4_02216590
|
|
Unk_ov4_02216590: ; 0x02216590
|
|
.incbin "incbin/overlay4_data.bin", 0x710, 0x720 - 0x710
|
|
|
|
.global Unk_ov4_022165A0
|
|
Unk_ov4_022165A0: ; 0x022165A0
|
|
.incbin "incbin/overlay4_data.bin", 0x720, 0x730 - 0x720
|
|
|
|
.global Unk_ov4_022165B0
|
|
Unk_ov4_022165B0: ; 0x022165B0
|
|
.incbin "incbin/overlay4_data.bin", 0x730, 0x750 - 0x730
|
|
|
|
.global Unk_ov4_022165D0
|
|
Unk_ov4_022165D0: ; 0x022165D0
|
|
.incbin "incbin/overlay4_data.bin", 0x750, 0x758 - 0x750
|
|
|
|
.global Unk_ov4_022165D8
|
|
Unk_ov4_022165D8: ; 0x022165D8
|
|
.incbin "incbin/overlay4_data.bin", 0x758, 0x760 - 0x758
|
|
|
|
.global Unk_ov4_022165E0
|
|
Unk_ov4_022165E0: ; 0x022165E0
|
|
.incbin "incbin/overlay4_data.bin", 0x760, 0x764 - 0x760
|
|
|
|
.global Unk_ov4_022165E4
|
|
Unk_ov4_022165E4: ; 0x022165E4
|
|
.incbin "incbin/overlay4_data.bin", 0x764, 0x76C - 0x764
|
|
|
|
.global Unk_ov4_022165EC
|
|
Unk_ov4_022165EC: ; 0x022165EC
|
|
.incbin "incbin/overlay4_data.bin", 0x76C, 0x778 - 0x76C
|
|
|
|
.global Unk_ov4_022165F8
|
|
Unk_ov4_022165F8: ; 0x022165F8
|
|
.incbin "incbin/overlay4_data.bin", 0x778, 0x784 - 0x778
|
|
|
|
.global Unk_ov4_02216604
|
|
Unk_ov4_02216604: ; 0x02216604
|
|
.incbin "incbin/overlay4_data.bin", 0x784, 0x78C - 0x784
|
|
|
|
.global Unk_ov4_0221660C
|
|
Unk_ov4_0221660C: ; 0x0221660C
|
|
.incbin "incbin/overlay4_data.bin", 0x78C, 0x79C - 0x78C
|
|
|
|
.global Unk_ov4_0221661C
|
|
Unk_ov4_0221661C: ; 0x0221661C
|
|
.incbin "incbin/overlay4_data.bin", 0x79C, 0xB
|
|
|
|
|
|
|
|
.bss
|
|
|
|
|
|
.global Unk_ov4_0221A4C8
|
|
Unk_ov4_0221A4C8: ; 0x0221A4C8
|
|
.space 0x4
|
|
|