Function at 0x5b0220
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x5eb4
call fcn.004ad330
mov ecx, dword [0x95bd58]
mov eax, dword [ecx]
push ebx
xor edx, edx
test eax, eax
push esi
push edi
mov dword [esp + 0x18], edx
je 0x5b0252
mov eax, dword [eax]
add edx, 1
test eax, eax
jne 0x5b0245
mov dword [esp + 0x18], edx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov ebx, ecx
sub ebx, 0x95bd5c
neg ebx
sbb ebx, ebx
add eax, 0x2d0
and ebx, ecx
test byte [0xb2dda0], 1
mov dword [esp + 0x10], eax
jne 0x5b0291
or dword [0xb2dda0], 1
call fcn.00590b60
push 0x681770
call fcn.004a9213
add esp, 4
push 0x7f
lea ecx, [esp + 0x25]
push 0
push ecx
mov byte [esp + 0x2c], 0
call fcn.004ae0b0
add esp, 0xc
call fcn.00666170
cmp eax, 2
mov eax, 0x6cc484
je 0x5b02bb
mov eax, 0x6cc4a8
mov ecx, dword [0x9cdbf8]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x10]
call eax
mov ecx, dword [0x9cdbf8]
mov edx, dword [ecx]
mov edi, eax
mov eax, dword [edx + 0x10]
push str.LANG_ID_PLAYER_PROFILE_SUBTITLE
call eax
mov ecx, dword [0x9cdbf8]
mov edx, dword [ecx]
mov esi, eax
mov eax, dword [edx + 0x10]
push str.LANG_ID_SAVE_FILE_DETAILS
call eax
mov dword [esp + 0x14], eax
mov eax, esi
mov dword [esp + 0x1c], 0
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x5b0302
sub eax, ecx
push 0xffffffffffffffff
sar eax, 1
push esi
add eax, 1
push eax
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004ac70c
xor eax, eax
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb8], eax
mov dword [esp + 0x240], eax
push 0x5c90
push eax
mov dword [esp + 0x244], 0x6cc508
mov ecx, 0x20
lea esi, [esp + 0x3c]
lea edi, [esp + 0xc4]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x30]
lea eax, [esp + 0x24c]
mov ecx, 0x40
lea edi, [esp + 0x144]
push eax
rep movsd dword es:[edi], dword [esi]
call fcn.004ae0b0
mov esi, dword [esp + 0x30]
mov ecx, dword [esi + 0x10]
add esp, 0x20
push ecx
mov eax, 0xb1763c
mov dword [esp + 0x234], 0x1a
call fcn.00590750
test byte [0xb2dd94], 1
mov edi, dword [eax + 0x30]
jne 0x5b03c0
or dword [0xb2dd94], 1
push 0x681bd0
call fcn.004a9213
add esp, 4
cmp dword [0x93dca8], 0
jne 0x5b03d3
mov dword [0x93dca8], 0x7831c6
test byte [0xb2dd94], 1
movss xmm0, dword [0x710644]
movss dword [esp + 0x250], xmm0
jne 0x5b0401
or dword [0xb2dd94], 1
push 0x681bd0
call fcn.004a9213
add esp, 4
cmp dword [0x93dca8], 0
jne 0x5b0414
mov dword [0x93dca8], 0x7831c6
test byte [0xb2dd94], 1
movss xmm0, dword [0x7106c8]
movss dword [esp + 0x248], xmm0
jne 0x5b0442
or dword [0xb2dd94], 1
push 0x681bd0
call fcn.004a9213
add esp, 4
cmp dword [0x93dca8], 0
jne 0x5b0455
mov dword [0x93dca8], 0x7831c6
cmp dword [ebp + 0xc], 0
movss xmm0, dword [0x7106cc]
movss dword [esp + 0x24c], xmm0
je 0x5b0485
mov eax, 0x80
mov dword [esp + 0x23c], 3
mov dword [esp + 0x240], eax
jmp 0x5b04ab
mov edx, dword [ebp + 8]
mov eax, dword [edx + 8]
mov ecx, dword [eax + 0x820]
mov edx, dword [eax + 0x818]
mov eax, dword [eax + 0x81c]
mov dword [esp + 0x23c], ecx
mov dword [esp + 0x240], edx
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 8]
mov ecx, dword [esi]
mov dword [esp + 0x244], eax
mov eax, dword [edx + 0xd18]
mov dword [esp + 0x238], eax
mov eax, edi
mov dword [esp + 0x258], ecx
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x5b04d3
sub eax, edx
push 1
mov ecx, edi
call fcn.00582ed0
mov edx, dword [esi + 4]
mov dword [esp + 0x258], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x264], eax
mov eax, dword [esp + 0x1c]
add esp, 4
test eax, eax
mov dword [esp + 0x25c], edx
jbe 0x5b0538
lea esi, [esp + 0x268]
mov edi, eax
xor eax, eax
test ebx, ebx
je 0x5b0523
cmp dword [ebx], eax
je 0x5b0523
mov eax, dword [ebx + 0xc]
push eax
mov eax, esi
call fcn.00615900
mov ebx, dword [ebx]
add esi, 0x1dc8
sub edi, 1
jne 0x5b0516
test byte [0xb2f0b4], 1
jne 0x5b054d
or dword [0xb2f0b4], 1
call fcn.005ada90
mov ecx, dword [0xb2ddb8]
mov edx, dword [0xb2dde0]
mov eax, dword [0xb2ddbc]
mov dword [esp + 0x5bc0], ecx
mov ecx, dword [0xb2dde4]
mov dword [esp + 0x5be8], edx
mov edx, dword [0xb2ddc0]
mov dword [esp + 0x5bc4], eax
mov eax, dword [0xb2dde8]
mov dword [esp + 0x5bec], ecx
mov ecx, dword [0xb2ddc4]
mov dword [esp + 0x5bc8], edx
mov edx, dword [0xb2ddec]
mov dword [esp + 0x5bf0], eax
mov eax, dword [0xb2ddc8]
mov dword [esp + 0x5bcc], ecx
mov ecx, dword [0xb2ddf0]
mov dword [esp + 0x5bf4], edx
mov edx, dword [0xb2ddcc]
mov dword [esp + 0x5bd0], eax
mov eax, dword [0xb2ddf4]
mov dword [esp + 0x5bf8], ecx
mov ecx, dword [0xb2ddd0]
mov dword [esp + 0x5bd4], edx
mov edx, dword [0xb2ddf8]
mov dword [esp + 0x5bfc], eax
mov eax, dword [0xb2ddd4]
mov dword [esp + 0x5bd8], ecx
mov ecx, dword [0xb2ddfc]
mov dword [esp + 0x5c00], edx
mov edx, dword [0xb2ddd8]
mov dword [esp + 0x5bdc], eax
mov eax, dword [0xb2de00]
mov dword [esp + 0x5c04], ecx
mov ecx, dword [0xb2dddc]
mov dword [esp + 0x5be0], edx
mov edx, dword [0xb2de04]
mov dword [esp + 0x5c08], eax
mov eax, dword [0xb2ea38]
mov dword [esp + 0x5be4], ecx
mov ecx, dword [0xb2ea60]
mov dword [esp + 0x5c0c], edx
mov edx, dword [0xb2ea3c]
mov dword [esp + 0x5c10], eax
mov eax, dword [0xb2ea64]
mov dword [esp + 0x5c38], ecx
mov ecx, dword [0xb2ea40]
mov dword [esp + 0x5c14], edx
mov edx, dword [0xb2ea68]
mov dword [esp + 0x5c3c], eax
mov eax, dword [0xb2ea44]
mov dword [esp + 0x5c18], ecx
mov ecx, dword [0xb2ea6c]
mov dword [esp + 0x5c40], edx
mov edx, dword [0xb2ea48]
mov dword [esp + 0x5c1c], eax
mov eax, dword [0xb2ea70]
mov dword [esp + 0x5c44], ecx
mov ecx, dword [0xb2ea4c]
mov dword [esp + 0x5c20], edx
mov edx, dword [0xb2ea74]
mov dword [esp + 0x5c48], eax
mov eax, dword [0xb2ea50]
mov dword [esp + 0x5c24], ecx
mov ecx, dword [0xb2ea78]
mov dword [esp + 0x5c4c], edx
mov edx, dword [0xb2ea54]
mov dword [esp + 0x5c28], eax
mov eax, dword [0xb2ea7c]
mov dword [esp + 0x5c50], ecx
mov ecx, dword [0xb2ea58]
mov dword [esp + 0x5c2c], edx
mov edx, dword [0xb2ea80]
mov dword [esp + 0x5c54], eax
mov eax, dword [0xb2ea5c]
mov dword [esp + 0x5c30], ecx
mov ecx, dword [0xb2ea84]
mov dword [esp + 0x5c58], edx
mov edx, dword [0xb2eb78]
mov dword [esp + 0x5c34], eax
mov dword [esp + 0x5c5c], ecx
mov eax, dword [0xb2eba0]
mov ecx, dword [0xb2eb7c]
mov dword [esp + 0x5c60], edx
mov edx, dword [0xb2eba4]
mov dword [esp + 0x5c88], eax
mov eax, dword [0xb2eb80]
mov dword [esp + 0x5c64], ecx
mov ecx, dword [0xb2eba8]
mov dword [esp + 0x5c8c], edx
mov edx, dword [0xb2eb84]
mov dword [esp + 0x5c68], eax
mov eax, dword [0xb2ebac]
mov dword [esp + 0x5c90], ecx
mov ecx, dword [0xb2eb88]
mov dword [esp + 0x5c6c], edx
mov edx, dword [0xb2ebb0]
mov dword [esp + 0x5c94], eax
mov eax, dword [0xb2eb8c]
mov dword [esp + 0x5c70], ecx
mov ecx, dword [0xb2ebb4]
mov dword [esp + 0x5c98], edx
mov edx, dword [0xb2eb90]
mov dword [esp + 0x5c74], eax
mov eax, dword [0xb2ebb8]
mov dword [esp + 0x5c9c], ecx
mov ecx, dword [0xb2eb94]
mov dword [esp + 0x5c78], edx
mov edx, dword [0xb2ebbc]
mov dword [esp + 0x5ca0], eax
mov eax, dword [0xb2eb98]
mov dword [esp + 0x5c7c], ecx
mov ecx, dword [0xb2ebc0]
mov dword [esp + 0x5ca4], edx
mov edx, dword [0xb2eb9c]
mov dword [esp + 0x5c80], eax
mov eax, dword [0xb2ebc4]
mov dword [esp + 0x5ca8], ecx
mov ecx, dword [0xb2ecb8]
mov dword [esp + 0x5c84], edx
mov edx, dword [0xb2ece0]
mov dword [esp + 0x5cac], eax
mov eax, dword [0xb2ecbc]
mov dword [esp + 0x5cb0], ecx
mov ecx, dword [0xb2ece4]
mov dword [esp + 0x5cd8], edx
mov edx, dword [0xb2ecc0]
mov dword [esp + 0x5cb4], eax
mov eax, dword [0xb2ece8]
mov dword [esp + 0x5cdc], ecx
mov ecx, dword [0xb2ecc4]
mov dword [esp + 0x5cb8], edx
mov edx, dword [0xb2ecec]
mov dword [esp + 0x5ce0], eax
mov eax, dword [0xb2ecc8]
mov dword [esp + 0x5cbc], ecx
mov ecx, dword [0xb2ecf0]
mov dword [esp + 0x5ce4], edx
mov edx, dword [0xb2eccc]
mov dword [esp + 0x5cc0], eax
mov eax, dword [0xb2ecf4]
mov dword [esp + 0x5ce8], ecx
mov ecx, dword [0xb2ecd0]
mov dword [esp + 0x5cc4], edx
mov edx, dword [0xb2ecf8]
mov dword [esp + 0x5cec], eax
mov eax, dword [0xb2ecd4]
mov dword [esp + 0x5cc8], ecx
mov ecx, dword [0xb2ecfc]
mov dword [esp + 0x5cf0], edx
mov edx, dword [0xb2ecd8]
mov dword [esp + 0x5ccc], eax
mov eax, dword [0xb2ed00]
mov dword [esp + 0x5cf4], ecx
mov ecx, dword [0xb2ecdc]
mov dword [esp + 0x5cd0], edx
mov edx, dword [0xb2ed04]
mov dword [esp + 0x5cf8], eax
mov dword [esp + 0x5cd4], ecx
mov dword [esp + 0x5cfc], edx
xor ebx, ebx
jmp 0x5b0950
mov edi, ebx
mov eax, 0xb1763c
call fcn.005912c0
test eax, eax
je 0x5b09c1
mov edi, dword [eax + 0x14]
mov esi, edi
mov edx, 0xb1763c
call fcn.00591310
test eax, eax
je 0x5b09c1
test byte [0xb2dda0], 1
mov eax, dword [ebp + 8]
mov esi, dword [eax + 8]
jne 0x5b099b
or dword [0xb2dda0], 1
call fcn.00590b60
push 0x681770
call fcn.004a9213
add esp, 4
mov ecx, 0xb1763c
call fcn.00591270
movss xmm0, dword [esi + eax*4 + 0x87c]
movss dword [esp + 0x10], xmm0
cvttss2si eax, dword [esp + 0x10]
mov dword [esp + ebx*4 + 0x5d00], eax
add ebx, 1
cmp ebx, 0x2a
jb 0x5b0950
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 8]
mov edx, dword [eax + 0x868]
mov ecx, dword [eax + 0x86c]
movss xmm0, dword [eax + 0xd1c]
mov dword [esp + 0x5da8], edx
mov edx, dword [eax + 0x870]
mov dword [esp + 0x5dac], ecx
mov ecx, dword [eax + 0x874]
mov dword [esp + 0x5db0], edx
mov edx, dword [eax + 0x878]
mov dword [esp + 0x5db4], ecx
mov dword [esp + 0x5db8], edx
mov edx, dword [eax + 0xd24]
lea esi, [eax + 0xdac]
mov ecx, 0x3e
lea edi, [esp + 0x5dbc]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 0xd28]
mov esi, dword [0x9cdc68]
and ecx, 1
and edx, 1
add ecx, ecx
or ecx, edx
mov edx, dword [eax + 0xd20]
mov eax, dword [eax + 0x2f4]
and edx, 1
add ecx, ecx
or ecx, edx
mov edx, dword [esp + 0x5eb8]
and edx, 0xfffffff8
or ecx, edx
cmp dword [0x9d3e94], 0
mov dword [esp + 0x5eb8], ecx
movss dword [esp + 0x5eb4], xmm0
mov dword [esp + 0x5ebc], eax
jne 0x5b0a8e
xor ebx, ebx
jmp 0x5b0b26
test byte [esi + 0xc4], 1
lea eax, [esi + 0xc4]
mov dword [esp + 0x10], eax
jne 0x5b0ab4
push str..CodeSega_LL_Heap.cpp:256___Heap_is_out_of_core_n
call fcn.00408d10
add esp, 4
call dword [sym.imp.KERNEL32.dll_DebugBreak]
lea edi, [esi + 0x34]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea ecx, [esp + 0x14]
push ecx
push 0x5c90
lea ecx, [esi + 0x4c]
mov eax, 0x1000
call fcn.0057ad70
mov ebx, eax
test ebx, ebx
jne 0x5b0af8
mov edx, dword [esp + 0x10]
test byte [edx], 2
jne 0x5b0aed
push 1
mov eax, esi
call fcn.00589670
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ebx, ebx
jmp 0x5b0b26
mov eax, dword [esp + 0x14]
mov dword [eax], 0x6e9a20
mov dword [eax + 4], 0x14a
add dword [esi + 0x2c], 0x5c90
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x30]
cmp ecx, eax
jbe 0x5b0b1c
mov eax, ecx
push edi
mov dword [esi + 0x30], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x5c90
lea eax, [esp + 0x234]
push eax
push ebx
call fcn.004ad5c0
lea ecx, [ebx + 8]
add esp, 0xc
or eax, 0xffffffff
test ecx, ecx
je 0x5b0b71
mov edx, 0x5c88
jmp 0x5b0b50
movzx edi, byte [ecx]
mov esi, eax
and esi, 0xff
xor esi, edi
shr eax, 8
xor eax, dword [esi*4 + 0x710748]
add ecx, 1
sub edx, 1
jne 0x5b0b50
not eax
mov edx, dword [ebp + 8]
lea ecx, [esp + 0xa0]
push ecx
push ebx
push edx
mov dword [ebx + 4], eax
call fcn.005aee60
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8