Label functions from libdwcgsserverbrowsing.a

This commit is contained in:
Nomura 2023-08-31 21:35:47 +02:00
parent 95abe71458
commit 34192c9a8d
10 changed files with 676 additions and 676 deletions

View File

@ -1,4 +1,4 @@
.public _u32_div_f
.public ov4_021FD500
.public ov4_021FD5B4
.public ov4_021FD6C4
.public keyrand
.public GOAHashInit
.public GOADecryptByte

View File

@ -6,19 +6,19 @@
.public closesocket
.public recvfrom
.public sendto
.public ov4_021FD7CC
.public ov4_021FD800
.public ov4_021FD828
.public ov4_021FD85C
.public ov4_021FD8C8
.public ov4_021FD8DC
.public ov4_021FDBFC
.public ov4_021FDCFC
.public ov4_021FDD94
.public ov4_021FDD9C
.public ov4_021FDF30
.public ov4_021FDFC0
.public ov4_021FE1A8
.public ov4_021FE49C
.public ov4_021FE51C
.public ov4_021FF4AC
.public FIFOAddRear
.public FIFOAddFront
.public FIFOGetFirst
.public FIFORemove
.public FIFOClear
.public QEStartQuery
.public ParseSingleQR2Reply
.public ParseSingleGOAReply
.public ParseSingleICMPReply
.public ProcessIncomingReplies
.public TimeoutOldQueries
.public QueueNextQueries
.public SBServerAddKeyValue
.public SBServerParseKeyVals
.public SBServerParseQR2FullKeys
.public NTSLengthSB

View File

@ -13,18 +13,18 @@
.public TableCount
.public TableEnter
.public TableLookup
.public ov4_021FE0AC
.public ov4_021FE0BC
.public ov4_021FE0D0
.public ov4_021FE1A8
.public ov4_021FE220
.public ov4_021FE3D8
.public ov4_021FE438
.public ov4_021FE6F4
.public ov4_021FE74C
.public ov4_021FE770
.public ov4_021FE780
.public ov4_021FE794
.public ov4_021FF3C0
.public ov4_021FF430
.public ov4_021FF4AC
.public RefStringHash
.public RefStringCompare
.public RefStringFree
.public SBServerAddKeyValue
.public SBServerGetStringValueA
.public CheckValidKey
.public mytok
.public StringHash
.public KeyValFree
.public KeyValHashKey
.public KeyValCompareKey
.public SBServerGetPing
.public SBRefStr
.public SBReleaseStr
.public NTSLengthSB

View File

@ -5,29 +5,29 @@
.public ArrayLength
.public msleep
.public inet_addr
.public ov4_021FDABC
.public ov4_021FDB30
.public ov4_021FDB38
.public ov4_021FDB54
.public ov4_021FDB80
.public ov4_021FE000
.public ov4_021FE060
.public ov4_021FE080
.public ov4_021FE890
.public ov4_021FEA48
.public ov4_021FEBE0
.public SBQueryEngineInit
.public SBQueryEngineSetPublicIP
.public SBEngineHaltUpdates
.public SBEngineCleanup
.public SBQueryEngineUpdateServer
.public SBQueryEngineThink
.public SBQueryEngineAddQueryKey
.public SBQueryEngineRemoveServerFromFIFOs
.public ListCallback
.public EngineCallback
.public ServerBrowserBeginUpdate2
.public ServerBrowserThink
.public ov4_021FEE28
.public ov4_021FF0CC
.public ov4_021FF180
.public ov4_021FF278
.public ov4_021FF2C4
.public ov4_021FF2D4
.public ov4_021FF340
.public ov4_021FF4DC
.public ov4_021FFAC8
.public ov4_021FFDE0
.public ov4_021FFE44
.public ov4_022011B4
.public ov4_022012DC
.public ov4_022014B8
.public ServerBrowserHalt
.public SBServerListSort
.public SBServerListFindServer
.public SBServerListRemoveAt
.public SBServerListCount
.public SBServerListNth
.public SBServerListClear
.public SBServerListInit
.public SBServerListConnectAndQuery
.public SBServerListDisconnect
.public SBServerListCleanup
.public SBSendMessageToServer
.public SBSendNatNegotiateCookieToServer
.public SBListThink

View File

@ -40,71 +40,71 @@
.public recvfrom
.public send
.public inet_addr
.public ov4_021FD5FC
.public ov4_021FD790
.public ov4_021FE0E0
.public ov4_021FE144
.public ov4_021FE184
.public ov4_021FE1A8
.public GOACryptInit
.public GOADecrypt
.public SBRefStrHash
.public SBRefStrHashCleanup
.public SBServerFree
.public SBServerAddKeyValue
.public SBServerAddIntKeyValue
.public ov4_021FE220
.public SBServerGetStringValueA
.public SBServerGetIntValueA
.public ov4_021FE31C
.public SBServerGetFloatValueA
.public SBServerGetPublicInetAddress
.public ov4_021FE37C
.public ov4_021FE3C8
.public ov4_021FE3D0
.public ov4_021FE79C
.public ov4_021FE848
.public ov4_021FE850
.public ov4_021FE85C
.public ov4_021FE864
.public ov4_021FE86C
.public ov4_021FE874
.public ov4_021FEEC8
.public ov4_021FEF24
.public ov4_021FEFFC
.public ov4_021FF064
.public ov4_021FF144
.public ov4_021FF1D4
.public ov4_021FF244
.public ov4_021FF278
.public ov4_021FF2D4
.public ov4_021FF2E8
.public ov4_021FF340
.public ov4_021FF398
.public ov4_021FF3C0
.public ov4_021FF430
.public ov4_021FF4AC
.public ov4_021FF608
.public ov4_021FF6C4
.public ov4_021FF71C
.public ov4_021FF848
.public ov4_021FF898
.public ov4_021FF8BC
.public ov4_021FF910
.public ov4_021FF944
.public ov4_021FFA30
.public ov4_021FFAC8
.public ov4_021FFD38
.public ov4_021FFD7C
.public ov4_021FFDE0
.public ov4_021FFE7C
.public ov4_021FFF1C
.public ov4_021FFF48
.public ov4_021FFFCC
.public ov4_022000C8
.public ov4_02200138
.public ov4_02200404
.public ov4_02200534
.public ov4_0220053C
.public ov4_02200968
.public ov4_02200A44
.public ov4_02200C00
.public ov4_02200D84
.public ov4_02200E10
.public ov4_02200F08
.public ov4_022010CC
.public ov4_022011B4
.public ov4_02201394
.public SBServerGetPublicQueryPortNBO
.public SBServerSetNext
.public SBServerGetNext
.public SBAllocServer
.public SBServerSetFlags
.public SBServerSetPrivateAddr
.public SBServerSetICMPIP
.public SBServerSetState
.public SBServerGetState
.public SBIsNullServer
.public IntKeyCompare
.public FloatKeyCompare
.public StrCaseKeyCompare
.public StrNoCaseKeyCompare
.public SBServerListAppendServer
.public SBServerListFindServerByIP
.public AddServerToDeadlist
.public SBServerListRemoveAt
.public SBServerListNth
.public SBFreeDeadList
.public SBServerListClear
.public SBAllocateServerList
.public SBRefStr
.public SBReleaseStr
.public NTSLengthSB
.public ErrorDisconnect
.public StringHash
.public ServerListConnect
.public BufferAddNTS
.public BufferAddByte
.public BufferAddInt
.public BufferAddData
.public SetupListChallenge
.public SendWithRetry
.public SBServerListConnectAndQuery
.public FreePopularValues
.public FreeKeyList
.public SBServerListDisconnect
.public InitCryptKey
.public ServerSizeForFlags
.public FullRulesPresent
.public AllKeysPresent
.public ParseServerIPPort
.public ParseServer
.public IncomingListParseServer
.public SBSetLastListErrorPtr
.public ProcessMainListData
.public ProcessPushKeyList
.public ProcessPlayerSearch
.public ProcessMaploop
.public ProcessDeleteServer
.public ProcessPushServer
.public ProcessAdHocData
.public ProcessIncomingData
.public SBSendMessageToServer
.public ProcessLanData
.public SOC_GetHostByName

View File

@ -6,8 +6,8 @@
.text
arm_func_start ov4_021FD500
ov4_021FD500: ; 0x021FD500
arm_func_start keyrand
keyrand: ; 0x021FD500
stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r7, [sp, #0x28]
ldr r6, [sp, #0x2c]
@ -57,10 +57,10 @@ _021FD5A4:
bhi _021FD544
and r0, r0, #0xff
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end ov4_021FD500
arm_func_end keyrand
arm_func_start ov4_021FD5B4
ov4_021FD5B4: ; 0x021FD5B4
arm_func_start GOAHashInit
GOAHashInit: ; 0x021FD5B4
mov r1, #1
strb r1, [r0, #0x100]
mov r1, #3
@ -80,10 +80,10 @@ _021FD5E4:
sub r2, r2, #1
blt _021FD5E4
bx lr
arm_func_end ov4_021FD5B4
arm_func_end GOAHashInit
arm_func_start ov4_021FD5FC
ov4_021FD5FC: ; 0x021FD5FC
arm_func_start GOACryptInit
GOACryptInit: ; 0x021FD5FC
stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x10
mov r7, r2
@ -91,7 +91,7 @@ ov4_021FD5FC: ; 0x021FD5FC
mov r8, r1
cmp r7, #1
bhs _021FD624
bl ov4_021FD5B4
bl GOAHashInit
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_021FD624:
@ -114,7 +114,7 @@ _021FD650:
mov r2, r8
mov r3, r7
str r4, [sp, #4]
bl ov4_021FD500
bl keyrand
ldrb r2, [sb, r6]
ldrb r1, [sb, r0]
strb r1, [sb, r6]
@ -137,10 +137,10 @@ _021FD650:
str r0, [sp, #0xc]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end ov4_021FD5FC
arm_func_end GOACryptInit
arm_func_start ov4_021FD6C4
ov4_021FD6C4: ; 0x021FD6C4
arm_func_start GOADecryptByte
GOADecryptByte: ; 0x021FD6C4
stmfd sp!, {r4, lr}
ldrb r4, [r0, #0x100]
add r2, r4, #1
@ -192,10 +192,10 @@ ov4_021FD6C4: ; 0x021FD6C4
strb r1, [r0, #0x104]
ldrb r0, [r0, #0x103]
ldmia sp!, {r4, pc}
arm_func_end ov4_021FD6C4
arm_func_end GOADecryptByte
arm_func_start ov4_021FD790
ov4_021FD790: ; 0x021FD790
arm_func_start GOADecrypt
GOADecrypt: ; 0x021FD790
stmfd sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r2
mov r7, r0
@ -206,10 +206,10 @@ ov4_021FD790: ; 0x021FD790
_021FD7AC:
ldrb r1, [r6, r4]
mov r0, r7
bl ov4_021FD6C4
bl GOADecryptByte
strb r0, [r6, r4]
add r4, r4, #1
cmp r4, r5
blt _021FD7AC
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ov4_021FD790
arm_func_end GOADecrypt

View File

@ -7,8 +7,8 @@
.text
arm_func_start ov4_021FD7CC
ov4_021FD7CC: ; 0x021FD7CC
arm_func_start FIFOAddRear
FIFOAddRear: ; 0x021FD7CC
ldr r2, [r0, #4]
cmp r2, #0
strne r1, [r2, #0x20]
@ -22,10 +22,10 @@ ov4_021FD7CC: ; 0x021FD7CC
add r1, r1, #1
str r1, [r0, #8]
bx lr
arm_func_end ov4_021FD7CC
arm_func_end FIFOAddRear
arm_func_start ov4_021FD800
ov4_021FD800: ; 0x021FD800
arm_func_start FIFOAddFront
FIFOAddFront: ; 0x021FD800
ldr r2, [r0, #0]
str r2, [r1, #0x20]
str r1, [r0, #0]
@ -36,10 +36,10 @@ ov4_021FD800: ; 0x021FD800
add r1, r1, #1
str r1, [r0, #8]
bx lr
arm_func_end ov4_021FD800
arm_func_end FIFOAddFront
arm_func_start ov4_021FD828
ov4_021FD828: ; 0x021FD828
arm_func_start FIFOGetFirst
FIFOGetFirst: ; 0x021FD828
ldr r2, [r0, #0]
cmp r2, #0
beq _021FD854
@ -54,10 +54,10 @@ ov4_021FD828: ; 0x021FD828
_021FD854:
mov r0, r2
bx lr
arm_func_end ov4_021FD828
arm_func_end FIFOGetFirst
arm_func_start ov4_021FD85C
ov4_021FD85C: ; 0x021FD85C
arm_func_start FIFORemove
FIFORemove: ; 0x021FD85C
ldr r2, [r0, #0]
mov r3, #0
cmp r2, #0
@ -88,25 +88,25 @@ _021FD8B0:
_021FD8C0:
mov r0, #0
bx lr
arm_func_end ov4_021FD85C
arm_func_end FIFORemove
arm_func_start ov4_021FD8C8
ov4_021FD8C8: ; 0x021FD8C8
arm_func_start FIFOClear
FIFOClear: ; 0x021FD8C8
mov r1, #0
str r1, [r0, #4]
str r1, [r0, #0]
str r1, [r0, #8]
bx lr
arm_func_end ov4_021FD8C8
arm_func_end FIFOClear
arm_func_start ov4_021FD8DC
ov4_021FD8DC: ; 0x021FD8DC
arm_func_start QEStartQuery
QEStartQuery: ; 0x021FD8DC
stmfd sp!, {r3, r4, r5, lr}
sub sp, sp, #0x110
mov r5, r0
mov r4, r1
add r0, r5, #8
bl ov4_021FD7CC
bl FIFOAddRear
bl current_time
str r0, [r4, #0x1c]
mov r0, #2
@ -232,10 +232,10 @@ _021FDA8C:
; .align 2, 0
_021FDAB4: .word Unk_ov4_02219F30
_021FDAB8: .word Unk_ov4_02219F40
arm_func_end ov4_021FD8DC
arm_func_end QEStartQuery
arm_func_start ov4_021FDABC
ov4_021FDABC: ; 0x021FDABC
arm_func_start SBQueryEngineInit
SBQueryEngineInit: ; 0x021FDABC
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
@ -261,33 +261,33 @@ _021FDAE4:
bl socket
str r0, [r6, #0x20]
add r0, r6, #0x14
bl ov4_021FD8C8
bl FIFOClear
add r0, r6, #8
bl ov4_021FD8C8
bl FIFOClear
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021FDB2C: .word Unk_ov4_0221AE50
arm_func_end ov4_021FDABC
arm_func_end SBQueryEngineInit
arm_func_start ov4_021FDB30
ov4_021FDB30: ; 0x021FDB30
arm_func_start SBQueryEngineSetPublicIP
SBQueryEngineSetPublicIP: ; 0x021FDB30
str r1, [r0, #0x28]
bx lr
arm_func_end ov4_021FDB30
arm_func_end SBQueryEngineSetPublicIP
arm_func_start ov4_021FDB38
ov4_021FDB38: ; 0x021FDB38
arm_func_start SBEngineHaltUpdates
SBEngineHaltUpdates: ; 0x021FDB38
stmfd sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x14
bl ov4_021FD8C8
bl FIFOClear
add r0, r4, #8
bl ov4_021FD8C8
bl FIFOClear
ldmia sp!, {r4, pc}
arm_func_end ov4_021FDB38
arm_func_end SBEngineHaltUpdates
arm_func_start ov4_021FDB54
ov4_021FDB54: ; 0x021FDB54
arm_func_start SBEngineCleanup
SBEngineCleanup: ; 0x021FDB54
stmfd sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x20]
@ -295,14 +295,14 @@ ov4_021FDB54: ; 0x021FDB54
mvn r1, #0
add r0, r4, #0x14
str r1, [r4, #0x20]
bl ov4_021FD8C8
bl FIFOClear
add r0, r4, #8
bl ov4_021FD8C8
bl FIFOClear
ldmia sp!, {r4, pc}
arm_func_end ov4_021FDB54
arm_func_end SBEngineCleanup
arm_func_start ov4_021FDB80
ov4_021FDB80: ; 0x021FDB80
arm_func_start SBQueryEngineUpdateServer
SBQueryEngineUpdateServer: ; 0x021FDB80
stmfd sp!, {r3, lr}
ldrb ip, [r1, #0x14]
cmp r3, #0
@ -328,21 +328,21 @@ _021FDBC8:
ldr r3, [r0, #4]
cmp ip, r3
bge _021FDBE0
bl ov4_021FD8DC
bl QEStartQuery
ldmia sp!, {r3, pc}
_021FDBE0:
cmp r2, #0
add r0, r0, #0x14
beq _021FDBF4
bl ov4_021FD800
bl FIFOAddFront
ldmia sp!, {r3, pc}
_021FDBF4:
bl ov4_021FD7CC
bl FIFOAddRear
ldmia sp!, {r3, pc}
arm_func_end ov4_021FDB80
arm_func_end SBQueryEngineUpdateServer
arm_func_start ov4_021FDBFC
ov4_021FDBFC: ; 0x021FDBFC
arm_func_start ParseSingleQR2Reply
ParseSingleQR2Reply: ; 0x021FDBFC
stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r8, r2
ldrsb r2, [r8]
@ -364,7 +364,7 @@ ov4_021FDBFC: ; 0x021FDBFC
_021FDC44:
mov r0, r8
mov r1, r7
bl ov4_021FF4AC
bl NTSLengthSB
movs r5, r0
bmi _021FDC88
add r0, sl, r6
@ -372,7 +372,7 @@ _021FDC44:
mov r0, sb
mov r2, r8
ldr r1, [r4, r1, lsl #2]
bl ov4_021FE1A8
bl SBServerAddKeyValue
ldr r0, [sl, #0x40]
add r6, r6, #1
cmp r6, r0
@ -388,7 +388,7 @@ _021FDC98:
mov r0, sb
mov r1, r8
mov r2, r7
bl ov4_021FE51C
bl SBServerParseQR2FullKeys
ldrb r0, [sb, #0x14]
orr r0, r0, #0x43
strb r0, [sb, #0x14]
@ -402,7 +402,7 @@ _021FDCB4:
sub r0, r0, r2
str r0, [sb, #0x1c]
add r0, sl, #8
bl ov4_021FD85C
bl FIFORemove
ldr r3, [sl, #0x48]
ldr r4, [sl, #0x44]
mov r0, sl
@ -412,10 +412,10 @@ _021FDCB4:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
; .align 2, 0
_021FDCF8: .word Unk_ov4_02219B38
arm_func_end ov4_021FDBFC
arm_func_end ParseSingleQR2Reply
arm_func_start ov4_021FDCFC
ov4_021FDCFC: ; 0x021FDCFC
arm_func_start ParseSingleGOAReply
ParseSingleGOAReply: ; 0x021FDCFC
stmfd sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r1
mov r7, r2
@ -428,7 +428,7 @@ ov4_021FDCFC: ; 0x021FDCFC
moveq r6, #0
mov r0, r4
mov r1, r7
bl ov4_021FE49C
bl SBServerParseKeyVals
cmp r6, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldrb r0, [r4, #0x14]
@ -445,7 +445,7 @@ ov4_021FDCFC: ; 0x021FDCFC
sub r0, r0, r2
str r0, [r4, #0x1c]
add r0, r5, #8
bl ov4_021FD85C
bl FIFORemove
ldr r3, [r5, #0x48]
ldr ip, [r5, #0x44]
mov r0, r5
@ -455,16 +455,16 @@ ov4_021FDCFC: ; 0x021FDCFC
ldmia sp!, {r3, r4, r5, r6, r7, pc}
; .align 2, 0
_021FDD90: .word Unk_ov4_02219F4C
arm_func_end ov4_021FDCFC
arm_func_end ParseSingleGOAReply
arm_func_start ov4_021FDD94
ov4_021FDD94: ; 0x021FDD94
arm_func_start ParseSingleICMPReply
ParseSingleICMPReply: ; 0x021FDD94
mov r0, #1
bx lr
arm_func_end ov4_021FDD94
arm_func_end ParseSingleICMPReply
arm_func_start ov4_021FDD9C
ov4_021FDD9C: ; 0x021FDD9C
arm_func_start ProcessIncomingReplies
ProcessIncomingReplies: ; 0x021FDD9C
stmfd sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
sub sp, sp, #0x800
@ -543,7 +543,7 @@ _021FDEA8:
mov r1, r6
mov r2, r4
mov r3, r5
bl ov4_021FDD94
bl ParseSingleICMPReply
cmp r0, #0
bne _021FDF10
b _021FDF04
@ -555,12 +555,12 @@ _021FDED0:
bne _021FDEF4
mov r1, r6
mov r3, r5
bl ov4_021FDBFC
bl ParseSingleQR2Reply
b _021FDF10
_021FDEF4:
mov r1, r6
mov r3, r5
bl ov4_021FDCFC
bl ParseSingleGOAReply
b _021FDF10
_021FDF04:
ldr r6, [r6, #0x20]
@ -576,10 +576,10 @@ _021FDF10:
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
; .align 2, 0
_021FDF2C: .word 0x000007FF
arm_func_end ov4_021FDD9C
arm_func_end ProcessIncomingReplies
arm_func_start ov4_021FDF30
ov4_021FDF30: ; 0x021FDF30
arm_func_start TimeoutOldQueries
TimeoutOldQueries: ; 0x021FDF30
stmfd sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
bl current_time
@ -611,26 +611,26 @@ _021FDF54:
ldr ip, [r6, #0x44]
blx ip
add r0, r6, #8
bl ov4_021FD828
bl FIFOGetFirst
ldr r3, [r6, #8]
cmp r3, #0
bne _021FDF54
ldmia sp!, {r3, r4, r5, r6, r7, pc}
; .align 2, 0
_021FDFBC: .word 0x000009C4
arm_func_end ov4_021FDF30
arm_func_end TimeoutOldQueries
arm_func_start ov4_021FDFC0
ov4_021FDFC0: ; 0x021FDFC0
arm_func_start QueueNextQueries
QueueNextQueries: ; 0x021FDFC0
stmfd sp!, {r4, lr}
mov r4, r0
b _021FDFE0
_021FDFCC:
add r0, r4, #0x14
bl ov4_021FD828
bl FIFOGetFirst
mov r1, r0
mov r0, r4
bl ov4_021FD8DC
bl QEStartQuery
_021FDFE0:
ldr r1, [r4, #0x10]
ldr r0, [r4, #4]
@ -640,24 +640,24 @@ _021FDFE0:
cmp r0, #0
bgt _021FDFCC
ldmia sp!, {r4, pc}
arm_func_end ov4_021FDFC0
arm_func_end QueueNextQueries
arm_func_start ov4_021FE000
ov4_021FE000: ; 0x021FE000
arm_func_start SBQueryEngineThink
SBQueryEngineThink: ; 0x021FE000
stmfd sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x10]
cmp r1, #0
ldmeqia sp!, {r4, pc}
mov r1, #0
bl ov4_021FDD9C
bl ProcessIncomingReplies
mov r0, r4
bl ov4_021FDF30
bl TimeoutOldQueries
ldr r0, [r4, #0x1c]
cmp r0, #0
ble _021FE038
mov r0, r4
bl ov4_021FDFC0
bl QueueNextQueries
_021FE038:
ldr r0, [r4, #0x10]
cmp r0, #0
@ -669,10 +669,10 @@ _021FE038:
mov r2, #0
blx ip
ldmia sp!, {r4, pc}
arm_func_end ov4_021FE000
arm_func_end SBQueryEngineThink
arm_func_start ov4_021FE060
ov4_021FE060: ; 0x021FE060
arm_func_start SBQueryEngineAddQueryKey
SBQueryEngineAddQueryKey: ; 0x021FE060
ldr r3, [r0, #0x40]
cmp r3, #0x14
bxge lr
@ -681,22 +681,22 @@ ov4_021FE060: ; 0x021FE060
add r0, r0, r3
strb r1, [r0, #0x2c]
bx lr
arm_func_end ov4_021FE060
arm_func_end SBQueryEngineAddQueryKey
arm_func_start ov4_021FE080
ov4_021FE080: ; 0x021FE080
arm_func_start SBQueryEngineRemoveServerFromFIFOs
SBQueryEngineRemoveServerFromFIFOs: ; 0x021FE080
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
add r0, r5, #8
mov r4, r1
bl ov4_021FD85C
bl FIFORemove
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, r4
add r0, r5, #0x14
bl ov4_021FD85C
bl FIFORemove
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021FE080
arm_func_end SBQueryEngineRemoveServerFromFIFOs
.data

View File

@ -6,46 +6,46 @@
.text
arm_func_start ov4_021FE0AC
ov4_021FE0AC: ; 0x021FE0AC
ldr ip, _021FE0B8 ; =ov4_021FE6F4
arm_func_start RefStringHash
RefStringHash: ; 0x021FE0AC
ldr ip, _021FE0B8 ; =StringHash
ldr r0, [r0, #0]
bx ip
; .align 2, 0
_021FE0B8: .word ov4_021FE6F4
arm_func_end ov4_021FE0AC
_021FE0B8: .word StringHash
arm_func_end RefStringHash
arm_func_start ov4_021FE0BC
ov4_021FE0BC: ; 0x021FE0BC
arm_func_start RefStringCompare
RefStringCompare: ; 0x021FE0BC
ldr ip, _021FE0CC ; =strcasecmp
ldr r0, [r0, #0]
ldr r1, [r1, #0]
bx ip
; .align 2, 0
_021FE0CC: .word strcasecmp
arm_func_end ov4_021FE0BC
arm_func_end RefStringCompare
arm_func_start ov4_021FE0D0
ov4_021FE0D0: ; 0x021FE0D0
arm_func_start RefStringFree
RefStringFree: ; 0x021FE0D0
ldr ip, _021FE0DC ; =DWCi_GsFree
ldr r0, [r0, #0]
bx ip
; .align 2, 0
_021FE0DC: .word DWCi_GsFree
arm_func_end ov4_021FE0D0
arm_func_end RefStringFree
arm_func_start ov4_021FE0E0
ov4_021FE0E0: ; 0x021FE0E0
arm_func_start SBRefStrHash
SBRefStrHash: ; 0x021FE0E0
stmfd sp!, {r3, lr}
sub sp, sp, #8
ldr r0, _021FE134 ; =0x0221B750
ldr r0, [r0, #8]
cmp r0, #0
bne _021FE124
ldr r0, _021FE138 ; =ov4_021FE0BC
ldr ip, _021FE13C ; =ov4_021FE0D0
ldr r0, _021FE138 ; =RefStringCompare
ldr ip, _021FE13C ; =RefStringFree
str r0, [sp]
ldr r3, _021FE140 ; =ov4_021FE0AC
ldr r3, _021FE140 ; =RefStringHash
mov r0, #8
mov r1, #0x64
mov r2, #2
@ -60,13 +60,13 @@ _021FE124:
ldmia sp!, {r3, pc}
; .align 2, 0
_021FE134: .word Unk_ov4_0221B750
_021FE138: .word ov4_021FE0BC
_021FE13C: .word ov4_021FE0D0
_021FE140: .word ov4_021FE0AC
arm_func_end ov4_021FE0E0
_021FE138: .word RefStringCompare
_021FE13C: .word RefStringFree
_021FE140: .word RefStringHash
arm_func_end SBRefStrHash
arm_func_start ov4_021FE144
ov4_021FE144: ; 0x021FE144
arm_func_start SBRefStrHashCleanup
SBRefStrHashCleanup: ; 0x021FE144
stmfd sp!, {r3, lr}
ldr r0, _021FE180 ; =0x0221B750
ldr r0, [r0, #8]
@ -84,10 +84,10 @@ ov4_021FE144: ; 0x021FE144
ldmia sp!, {r3, pc}
; .align 2, 0
_021FE180: .word Unk_ov4_0221B750
arm_func_end ov4_021FE144
arm_func_end SBRefStrHashCleanup
arm_func_start ov4_021FE184
ov4_021FE184: ; 0x021FE184
arm_func_start SBServerFree
SBServerFree: ; 0x021FE184
stmfd sp!, {r4, lr}
ldr r4, [r0, #0]
ldr r0, [r4, #0x18]
@ -97,27 +97,27 @@ ov4_021FE184: ; 0x021FE184
str r1, [r4, #0x18]
bl DWCi_GsFree
ldmia sp!, {r4, pc}
arm_func_end ov4_021FE184
arm_func_end SBServerFree
arm_func_start ov4_021FE1A8
ov4_021FE1A8: ; 0x021FE1A8
arm_func_start SBServerAddKeyValue
SBServerAddKeyValue: ; 0x021FE1A8
stmfd sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r0
mov r4, r2
mov r0, #0
bl ov4_021FF3C0
bl SBRefStr
str r0, [sp]
mov r1, r4
mov r0, #0
bl ov4_021FF3C0
bl SBRefStr
str r0, [sp, #4]
ldr r0, [r5, #0x18]
add r1, sp, #0
bl TableEnter
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021FE1A8
arm_func_end SBServerAddKeyValue
arm_func_start SBServerAddIntKeyValue
SBServerAddIntKeyValue: ; 0x021FE1E8
@ -131,15 +131,15 @@ SBServerAddIntKeyValue: ; 0x021FE1E8
add r2, sp, #0
mov r0, r5
mov r1, r4
bl ov4_021FE1A8
bl SBServerAddKeyValue
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
; .align 2, 0
_021FE21C: .word Unk_ov4_02219F7C
arm_func_end SBServerAddIntKeyValue
arm_func_start ov4_021FE220
ov4_021FE220: ; 0x021FE220
arm_func_start SBServerGetStringValueA
SBServerGetStringValueA: ; 0x021FE220
stmfd sp!, {r4, r5, r6, lr}
sub sp, sp, #8
movs r6, r0
@ -169,7 +169,7 @@ _021FE24C:
_021FE280: .word Unk_ov4_02219F80
_021FE284: .word Unk_ov4_02219F88
_021FE288: .word Unk_ov4_02219F64
arm_func_end ov4_021FE220
arm_func_end SBServerGetStringValueA
arm_func_start SBServerGetIntValueA
SBServerGetIntValueA: ; 0x021FE28C
@ -183,12 +183,12 @@ SBServerGetIntValueA: ; 0x021FE28C
cmp r0, #0
mov r0, r6
bne _021FE2BC
bl ov4_021FE794
bl SBServerGetPing
ldmia sp!, {r4, r5, r6, pc}
_021FE2BC:
mov r1, r5
mov r2, #0
bl ov4_021FE220
bl SBServerGetStringValueA
cmp r0, #0
beq _021FE304
ldrb r2, [r0]
@ -218,13 +218,13 @@ _021FE314: .word Unk_ov4_02219F94
_021FE318: .word 0x020FE864
arm_func_end SBServerGetIntValueA
arm_func_start ov4_021FE31C
ov4_021FE31C: ; 0x021FE31C
arm_func_start SBServerGetFloatValueA
SBServerGetFloatValueA: ; 0x021FE31C
stmfd sp!, {r3, r4, r5, lr}
mov r5, r2
mov r2, #0
mov r4, r3
bl ov4_021FE220
bl SBServerGetStringValueA
cmp r0, #0
beq _021FE344
bl atof
@ -234,7 +234,7 @@ _021FE344:
mov r0, r5
mov r1, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021FE31C
arm_func_end SBServerGetFloatValueA
arm_func_start SBServerGetPublicInetAddress
SBServerGetPublicInetAddress: ; 0x021FE350
@ -255,11 +255,11 @@ SBServerGetPublicQueryPort: ; 0x021FE358
bx lr
arm_func_end SBServerGetPublicQueryPort
arm_func_start ov4_021FE37C
ov4_021FE37C: ; 0x021FE37C
arm_func_start SBServerGetPublicQueryPortNBO
SBServerGetPublicQueryPortNBO: ; 0x021FE37C
ldrh r0, [r0, #4]
bx lr
arm_func_end ov4_021FE37C
arm_func_end SBServerGetPublicQueryPortNBO
arm_func_start SBServerHasPrivateAddress
SBServerHasPrivateAddress: ; 0x021FE384
@ -290,20 +290,20 @@ SBServerGetPrivateQueryPort: ; 0x021FE3A4
bx lr
arm_func_end SBServerGetPrivateQueryPort
arm_func_start ov4_021FE3C8
ov4_021FE3C8: ; 0x021FE3C8
arm_func_start SBServerSetNext
SBServerSetNext: ; 0x021FE3C8
str r1, [r0, #0x20]
bx lr
arm_func_end ov4_021FE3C8
arm_func_end SBServerSetNext
arm_func_start ov4_021FE3D0
ov4_021FE3D0: ; 0x021FE3D0
arm_func_start SBServerGetNext
SBServerGetNext: ; 0x021FE3D0
ldr r0, [r0, #0x20]
bx lr
arm_func_end ov4_021FE3D0
arm_func_end SBServerGetNext
arm_func_start ov4_021FE3D8
ov4_021FE3D8: ; 0x021FE3D8
arm_func_start CheckValidKey
CheckValidKey: ; 0x021FE3D8
stmfd sp!, {r4, r5, r6, lr}
sub sp, sp, #8
ldr r1, _021FE434 ; =0x02215C30
@ -330,10 +330,10 @@ _021FE400:
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021FE434: .word Unk_ov4_02215C30
arm_func_end ov4_021FE3D8
arm_func_end CheckValidKey
arm_func_start ov4_021FE438
ov4_021FE438: ; 0x021FE438
arm_func_start mytok
mytok: ; 0x021FE438
cmp r0, #0
ldrne r2, _021FE498 ; =0x0221B750
strne r0, [r2]
@ -362,15 +362,15 @@ _021FE45C:
bx lr
; .align 2, 0
_021FE498: .word Unk_ov4_0221B750
arm_func_end ov4_021FE438
arm_func_end mytok
arm_func_start ov4_021FE49C
ov4_021FE49C: ; 0x021FE49C
arm_func_start SBServerParseKeyVals
SBServerParseKeyVals: ; 0x021FE49C
stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
add r0, r1, #1
mov r1, #0x5c
bl ov4_021FE438
bl mytok
movs r8, r0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r4, #0
@ -381,30 +381,30 @@ ov4_021FE49C: ; 0x021FE49C
_021FE4CC:
mov r0, r7
mov r1, r6
bl ov4_021FE438
bl mytok
movs sb, r0
mov r0, r8
moveq sb, r5
bl ov4_021FE3D8
bl CheckValidKey
cmp r0, #0
beq _021FE500
mov r0, sl
mov r1, r8
mov r2, sb
bl ov4_021FE1A8
bl SBServerAddKeyValue
_021FE500:
mov r0, r4
mov r1, fp
bl ov4_021FE438
bl mytok
movs r8, r0
bne _021FE4CC
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
; .align 2, 0
_021FE518: .word Unk_ov4_02219F9C
arm_func_end ov4_021FE49C
arm_func_end SBServerParseKeyVals
arm_func_start ov4_021FE51C
ov4_021FE51C: ; 0x021FE51C
arm_func_start SBServerParseQR2FullKeys
SBServerParseQR2FullKeys: ; 0x021FE51C
stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x8c
mov sl, r1
@ -416,7 +416,7 @@ ov4_021FE51C: ; 0x021FE51C
_021FE53C:
mov r0, sl
mov r1, sb
bl ov4_021FF4AC
bl NTSLengthSB
cmp r0, #0
addlt sp, sp, #0x8c
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@ -425,7 +425,7 @@ _021FE53C:
add sl, sl, r0
mov r0, sl
mov r1, sb
bl ov4_021FF4AC
bl NTSLengthSB
cmp r0, #0
addlt sp, sp, #0x8c
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@ -434,7 +434,7 @@ _021FE53C:
add sl, sl, r0
sub sb, sb, r0
mov r0, fp
bl ov4_021FE1A8
bl SBServerAddKeyValue
ldrsb r0, [sl]
cmp r0, #0
bne _021FE53C
@ -469,7 +469,7 @@ _021FE5AC:
_021FE604:
mov r0, sl
mov r1, sb
bl ov4_021FF4AC
bl NTSLengthSB
cmp r0, #0
addlt sp, sp, #0x8c
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@ -496,7 +496,7 @@ _021FE654:
_021FE664:
mov r0, sl
mov r1, sb
bl ov4_021FF4AC
bl NTSLengthSB
movs r4, r0
addmi sp, sp, #0x8c
ldmmiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@ -508,7 +508,7 @@ _021FE664:
mov r0, fp
add r1, sp, #0xa
mov r2, sl
bl ov4_021FE1A8
bl SBServerAddKeyValue
mov r0, r8
add sl, sl, r4
sub sb, sb, r4
@ -533,10 +533,10 @@ _021FE6D4:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
; .align 2, 0
_021FE6F0: .word Unk_ov4_02219FA0
arm_func_end ov4_021FE51C
arm_func_end SBServerParseQR2FullKeys
arm_func_start ov4_021FE6F4
ov4_021FE6F4: ; 0x021FE6F4
arm_func_start StringHash
StringHash: ; 0x021FE6F4
stmfd sp!, {r3, lr}
ldrsb lr, [r0]
mov ip, #0
@ -563,48 +563,48 @@ _021FE734:
; .align 2, 0
_021FE744: .word __lower_mapC
_021FE748: .word 0x9CCF9319
arm_func_end ov4_021FE6F4
arm_func_end StringHash
arm_func_start ov4_021FE74C
ov4_021FE74C: ; 0x021FE74C
arm_func_start KeyValFree
KeyValFree: ; 0x021FE74C
stmfd sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0]
mov r0, #0
bl ov4_021FF430
bl SBReleaseStr
ldr r1, [r4, #4]
mov r0, #0
bl ov4_021FF430
bl SBReleaseStr
ldmia sp!, {r4, pc}
arm_func_end ov4_021FE74C
arm_func_end KeyValFree
arm_func_start ov4_021FE770
ov4_021FE770: ; 0x021FE770
ldr ip, _021FE77C ; =ov4_021FE6F4
arm_func_start KeyValHashKey
KeyValHashKey: ; 0x021FE770
ldr ip, _021FE77C ; =StringHash
ldr r0, [r0, #0]
bx ip
; .align 2, 0
_021FE77C: .word ov4_021FE6F4
arm_func_end ov4_021FE770
_021FE77C: .word StringHash
arm_func_end KeyValHashKey
arm_func_start ov4_021FE780
ov4_021FE780: ; 0x021FE780
arm_func_start KeyValCompareKey
KeyValCompareKey: ; 0x021FE780
ldr ip, _021FE790 ; =strcasecmp
ldr r0, [r0, #0]
ldr r1, [r1, #0]
bx ip
; .align 2, 0
_021FE790: .word strcasecmp
arm_func_end ov4_021FE780
arm_func_end KeyValCompareKey
arm_func_start ov4_021FE794
ov4_021FE794: ; 0x021FE794
arm_func_start SBServerGetPing
SBServerGetPing: ; 0x021FE794
ldr r0, [r0, #0x1c]
bx lr
arm_func_end ov4_021FE794
arm_func_end SBServerGetPing
arm_func_start ov4_021FE79C
ov4_021FE79C: ; 0x021FE79C
arm_func_start SBAllocServer
SBAllocServer: ; 0x021FE79C
stmfd sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r0, #0x24
@ -615,11 +615,11 @@ ov4_021FE79C: ; 0x021FE79C
addeq sp, sp, #8
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldr r1, _021FE83C ; =ov4_021FE780
ldr ip, _021FE840 ; =ov4_021FE74C
ldr r1, _021FE83C ; =KeyValCompareKey
ldr ip, _021FE840 ; =KeyValFree
str r1, [sp]
mov r0, #8
ldr r3, _021FE844 ; =ov4_021FE770
ldr r3, _021FE844 ; =KeyValHashKey
mov r1, r0
mov r2, #4
str ip, [sp, #4]
@ -647,44 +647,44 @@ _021FE808:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021FE83C: .word ov4_021FE780
_021FE840: .word ov4_021FE74C
_021FE844: .word ov4_021FE770
arm_func_end ov4_021FE79C
_021FE83C: .word KeyValCompareKey
_021FE840: .word KeyValFree
_021FE844: .word KeyValHashKey
arm_func_end SBAllocServer
arm_func_start ov4_021FE848
ov4_021FE848: ; 0x021FE848
arm_func_start SBServerSetFlags
SBServerSetFlags: ; 0x021FE848
strb r1, [r0, #0x15]
bx lr
arm_func_end ov4_021FE848
arm_func_end SBServerSetFlags
arm_func_start ov4_021FE850
ov4_021FE850: ; 0x021FE850
arm_func_start SBServerSetPrivateAddr
SBServerSetPrivateAddr: ; 0x021FE850
str r1, [r0, #8]
strh r2, [r0, #0xc]
bx lr
arm_func_end ov4_021FE850
arm_func_end SBServerSetPrivateAddr
arm_func_start ov4_021FE85C
ov4_021FE85C: ; 0x021FE85C
arm_func_start SBServerSetICMPIP
SBServerSetICMPIP: ; 0x021FE85C
str r1, [r0, #0x10]
bx lr
arm_func_end ov4_021FE85C
arm_func_end SBServerSetICMPIP
arm_func_start ov4_021FE864
ov4_021FE864: ; 0x021FE864
arm_func_start SBServerSetState
SBServerSetState: ; 0x021FE864
strb r1, [r0, #0x14]
bx lr
arm_func_end ov4_021FE864
arm_func_end SBServerSetState
arm_func_start ov4_021FE86C
ov4_021FE86C: ; 0x021FE86C
arm_func_start SBServerGetState
SBServerGetState: ; 0x021FE86C
ldrb r0, [r0, #0x14]
bx lr
arm_func_end ov4_021FE86C
arm_func_end SBServerGetState
arm_func_start ov4_021FE874
ov4_021FE874: ; 0x021FE874
arm_func_start SBIsNullServer
SBIsNullServer: ; 0x021FE874
ldr r1, _021FE88C ; =0x0221B750
ldr r1, [r1, #4]
cmp r0, r1
@ -693,7 +693,7 @@ ov4_021FE874: ; 0x021FE874
bx lr
; .align 2, 0
_021FE88C: .word Unk_ov4_0221B750
arm_func_end ov4_021FE874
arm_func_end SBIsNullServer
.rodata

View File

@ -8,8 +8,8 @@
.text
arm_func_start ov4_021FE890
ov4_021FE890: ; 0x021FE890
arm_func_start ListCallback
ListCallback: ; 0x021FE890
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r2
@ -57,7 +57,7 @@ _021FE92C:
mov r0, r4
mov r1, r5
mov r2, #0
bl ov4_021FDB80
bl SBQueryEngineUpdateServer
b _021FEA14
_021FE940:
ldrb r0, [r5, #0x14]
@ -80,7 +80,7 @@ _021FE974:
beq _021FE98C
mov r0, r4
mov r1, r5
bl ov4_021FE080
bl SBQueryEngineRemoveServerFromFIFOs
_021FE98C:
ldr r3, [r4, #0x634]
ldr ip, [r4, #0x630]
@ -93,7 +93,7 @@ _021FE9A8:
ldr r1, [r4, #0x620]
cmp r1, #0
beq _021FE9B8
bl ov4_021FFDE0
bl SBServerListDisconnect
_021FE9B8:
ldr r0, [r6, #4]
bl ArrayLength
@ -119,7 +119,7 @@ _021FE9EC:
_021FEA08:
ldr r1, [r4, #0x4ec]
mov r0, r4
bl ov4_021FDB30
bl SBQueryEngineSetPublicIP
_021FEA14:
cmp r5, #0
ldmeqia sp!, {r4, r5, r6, pc}
@ -134,10 +134,10 @@ _021FEA14:
moveq r0, #0
streq r0, [r4, #0x628]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov4_021FE890
arm_func_end ListCallback
arm_func_start ov4_021FEA48
ov4_021FEA48: ; 0x021FEA48
arm_func_start EngineCallback
EngineCallback: ; 0x021FEA48
stmfd sp!, {r3, r4, r5, lr}
mov r5, r2
mov r4, r3
@ -182,7 +182,7 @@ _021FEAB4:
moveq r0, #0
streq r0, [r4, #0x628]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021FEA48
arm_func_end EngineCallback
arm_func_start ServerBrowserNewA
ServerBrowserNewA: ; 0x021FEAE8
@ -216,7 +216,7 @@ _021FEB24:
str r0, [r4, #0x624]
ldr r1, [sp, #0x30]
str r5, [sp]
ldr r0, _021FEBB4 ; =ov4_021FE890
ldr r0, _021FEBB4 ; =ListCallback
str r1, [sp, #4]
str r0, [sp, #8]
mov r1, r8
@ -224,23 +224,23 @@ _021FEB24:
mov r3, r6
add r0, r4, #0x4c
str r4, [sp, #0xc]
bl ov4_021FF4DC
ldr r0, _021FEBB8 ; =ov4_021FEA48
bl SBServerListInit
ldr r0, _021FEBB8 ; =EngineCallback
ldr r1, [sp, #0x28]
str r0, [sp]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
mov r0, r4
str r4, [sp, #4]
bl ov4_021FDABC
bl SBQueryEngineInit
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
; .align 2, 0
_021FEBAC: .word Unk_ov4_0221AE50
_021FEBB0: .word 0x00000638
_021FEBB4: .word ov4_021FE890
_021FEBB8: .word ov4_021FEA48
_021FEBB4: .word ListCallback
_021FEBB8: .word EngineCallback
arm_func_end ServerBrowserNewA
arm_func_start ServerBrowserFree
@ -248,16 +248,16 @@ ServerBrowserFree: ; 0x021FEBBC
stmfd sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x4c
bl ov4_021FFE44
bl SBServerListCleanup
mov r0, r4
bl ov4_021FDB54
bl SBEngineCleanup
mov r0, r4
bl DWCi_GsFree
ldmia sp!, {r4, pc}
arm_func_end ServerBrowserFree
arm_func_start ov4_021FEBE0
ov4_021FEBE0: ; 0x021FEBE0
arm_func_start ServerBrowserBeginUpdate2
ServerBrowserBeginUpdate2: ; 0x021FEBE0
stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x108
ldr r8, [sp, #0x130]
@ -299,7 +299,7 @@ _021FEC40:
add r5, r5, r0
ldrb r1, [sb, r6]
mov r0, sl
bl ov4_021FE060
bl SBQueryEngineAddQueryKey
add r6, r6, #1
cmp r6, r8
blt _021FEC40
@ -310,7 +310,7 @@ _021FEC8C:
add r1, sp, #8
add r0, sl, #0x4c
str r4, [sp]
bl ov4_021FFAC8
bl SBServerListConnectAndQuery
cmp r0, #0
addne sp, sp, #0x108
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
@ -340,7 +340,7 @@ _021FECDC:
; .align 2, 0
_021FED08: .word Unk_ov4_02219B38
_021FED0C: .word Unk_ov4_02219FA8
arm_func_end ov4_021FEBE0
arm_func_end ServerBrowserBeginUpdate2
arm_func_start ServerBrowserLimitUpdateA
ServerBrowserLimitUpdateA: ; 0x021FED10
@ -354,7 +354,7 @@ ServerBrowserLimitUpdateA: ; 0x021FED10
ldr ip, [sp, #0x20]
str lr, [sp, #8]
str ip, [sp, #0xc]
bl ov4_021FEBE0
bl ServerBrowserBeginUpdate2
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end ServerBrowserLimitUpdateA
@ -380,7 +380,7 @@ ServerBrowserSendMessageToServerA: ; 0x021FED44
mov r3, r4
add r0, r5, #0x4c
mov r2, r2, lsr #0x10
bl ov4_022011B4
bl SBSendMessageToServer
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end ServerBrowserSendMessageToServerA
@ -403,7 +403,7 @@ ServerBrowserSendNatNegotiateCookieToServerA: ; 0x021FED9C
mov r3, r4
add r0, r5, #0x4c
mov r2, r2, lsr #0x10
bl ov4_022012DC
bl SBSendNatNegotiateCookieToServer
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ServerBrowserSendNatNegotiateCookieToServerA
@ -412,13 +412,13 @@ ServerBrowserRemoveServer: ; 0x021FEDE4
stmfd sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x4c
bl ov4_021FF180
bl SBServerListFindServer
mov r1, r0
mvn r0, #0
cmp r1, r0
ldmeqia sp!, {r4, pc}
add r0, r4, #0x4c
bl ov4_021FF278
bl SBServerListRemoveAt
ldmia sp!, {r4, pc}
arm_func_end ServerBrowserRemoveServer
@ -426,30 +426,30 @@ ServerBrowserRemoveServer: ; 0x021FEDE4
ServerBrowserThink: ; 0x021FEE10
stmfd sp!, {r4, lr}
mov r4, r0
bl ov4_021FE000
bl SBQueryEngineThink
add r0, r4, #0x4c
bl ov4_022014B8
bl SBListThink
ldmia sp!, {r4, pc}
arm_func_end ServerBrowserThink
arm_func_start ov4_021FEE28
ov4_021FEE28: ; 0x021FEE28
arm_func_start ServerBrowserHalt
ServerBrowserHalt: ; 0x021FEE28
stmfd sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x4c
bl ov4_021FFDE0
bl SBServerListDisconnect
mov r0, r4
bl ov4_021FDB38
bl SBEngineHaltUpdates
ldmia sp!, {r4, pc}
arm_func_end ov4_021FEE28
arm_func_end ServerBrowserHalt
arm_func_start ServerBrowserClear
ServerBrowserClear: ; 0x021FEE44
stmfd sp!, {r4, lr}
mov r4, r0
bl ov4_021FEE28
bl ServerBrowserHalt
add r0, r4, #0x4c
bl ov4_021FF340
bl SBServerListClear
ldmia sp!, {r4, pc}
arm_func_end ServerBrowserClear
@ -472,29 +472,29 @@ ServerBrowserState: ; 0x021FEE5C
arm_func_start ServerBrowserGetServer
ServerBrowserGetServer: ; 0x021FEE90
ldr ip, _021FEE9C ; =ov4_021FF2D4
ldr ip, _021FEE9C ; =SBServerListNth
add r0, r0, #0x4c
bx ip
; .align 2, 0
_021FEE9C: .word ov4_021FF2D4
_021FEE9C: .word SBServerListNth
arm_func_end ServerBrowserGetServer
arm_func_start ServerBrowserCount
ServerBrowserCount: ; 0x021FEEA0
ldr ip, _021FEEAC ; =ov4_021FF2C4
ldr ip, _021FEEAC ; =SBServerListCount
add r0, r0, #0x4c
bx ip
; .align 2, 0
_021FEEAC: .word ov4_021FF2C4
_021FEEAC: .word SBServerListCount
arm_func_end ServerBrowserCount
arm_func_start ServerBrowserSortA
ServerBrowserSortA: ; 0x021FEEB0
ldr ip, _021FEEBC ; =ov4_021FF0CC
ldr ip, _021FEEBC ; =SBServerListSort
add r0, r0, #0x4c
bx ip
; .align 2, 0
_021FEEBC: .word ov4_021FF0CC
_021FEEBC: .word SBServerListSort
arm_func_end ServerBrowserSortA
arm_func_start ServerBrowserGetMyPublicIPAddr