Function at 0x5b1200
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x5cac
call fcn.004ad330
mov ecx, dword [0x95bd58]
mov eax, dword [ecx]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [esi + 8]
add edi, 0x2d0
xor edx, edx
test eax, eax
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edx
je 0x5b1245
mov eax, dword [eax]
add edx, 1
test eax, eax
jne 0x5b1238
mov dword [esp + 0x14], edx
mov eax, ecx
sub eax, 0x95bd5c
neg eax
sbb eax, eax
and eax, ecx
test byte [0xb2dda0], 1
mov dword [esp + 0xc], eax
jne 0x5b1278
or dword [0xb2dda0], 1
call fcn.00590b60
push 0x681770
call fcn.004a9213
add esp, 4
lea ecx, [ebx + 8]
or eax, 0xffffffff
test ecx, ecx
je 0x5b12b8
mov edx, 0x5c88
jmp 0x5b1290
movzx ebx, byte [ecx]
mov edi, eax
and edi, 0xff
xor edi, ebx
shr eax, 8
xor eax, dword [edi*4 + 0x710748]
add ecx, 1
sub edx, 1
jne 0x5b1290
mov edi, dword [esp + 0x10]
mov ebx, dword [ebp + 0xc]
not eax
cmp eax, dword [ebx + 4]
je 0x5b12c8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 0x5c90
lea eax, [esp + 0x2c]
push ebx
push eax
call fcn.004ad5c0
add esp, 0xc
test byte [0xb2dd94], 1
jne 0x5b12f8
or dword [0xb2dd94], 1
push 0x681bd0
call fcn.004a9213
add esp, 4
cmp dword [0x93dca8], 0
mov ebx, 0x7831c6
jne 0x5b130c
mov dword [0x93dca8], ebx
fld dword [esp + 0x40]
push ecx
fstp dword [esp]
call fcn.005736f0
test byte [0xb2dd94], 1
jne 0x5b1336
or dword [0xb2dd94], 1
push 0x681bd0
call fcn.004a9213
add esp, 4
cmp dword [0x93dca8], 0
jne 0x5b1345
mov dword [0x93dca8], ebx
fld dword [esp + 0x48]
push ecx
fstp dword [esp]
call fcn.005735f0
test byte [0xb2dd94], 1
jne 0x5b136f
or dword [0xb2dd94], 1
push 0x681bd0
call fcn.004a9213
add esp, 4
cmp dword [0x93dca8], 0
jne 0x5b137e
mov dword [0x93dca8], ebx
fld dword [esp + 0x44]
push ecx
fstp dword [esp]
call fcn.005734f0
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x5ba0]
mov edx, dword [esp + 0x5ba4]
mov dword [eax + 0x868], ecx
mov ecx, dword [esp + 0x5ba8]
mov dword [eax + 0x86c], edx
mov eax, dword [esi + 8]
mov dword [eax + 0x870], ecx
mov edx, dword [esi + 8]
mov eax, dword [esp + 0x5bac]
mov dword [edx + 0x874], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esi + 8]
mov dword [ecx + 0x820], eax
mov edx, dword [esi + 8]
push eax
push str.Player_Nationality_Choice:__d_n
mov dword [edx + 0x2f0], eax
call fcn.00408d10
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x40]
mov dword [eax + 0x818], ecx
mov edx, dword [esi + 8]
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x58]
mov dword [edx + 0x81c], eax
add esp, 8
mov edx, 0xb1763c
mov ebx, esi
call fcn.00591310
test eax, eax
jne 0x5b1435
push 0xffffffffffffffff
push 0xb1763c
call fcn.005926c0
push str.CSR_PlayerProfile___Player_has_invalid_car___resetting_to_default_n
mov ebx, eax
call fcn.00408d10
add esp, 4
mov eax, ebx
call fcn.005aef10
mov ecx, dword [esp + 0x4c]
push ecx
mov ecx, 0xb1763c
call fcn.00591120
mov edi, eax
mov ecx, 0xb17630
call fcn.005919b0
test eax, eax
jne 0x5b1474
mov ecx, 0xb1763c
call fcn.00591080
push str.CSR_PlayerProfile___Player_has_invalid_track___resetting_to_default_n
mov edi, eax
call fcn.00408d10
add esp, 4
mov edx, dword [esp + 0x10]
push edx
call fcn.005ae130
mov esi, dword [esp + 0x54]
push esi
mov eax, ebx
mov ecx, 0xb17630
call fcn.00592490
test eax, eax
jne 0x5b14dd
mov esi, ebx
mov edx, 0xb1763c
call fcn.00591310
xor ecx, ecx
test eax, eax
je 0x5b14c2
cmp dword [eax + 0x24], ecx
je 0x5b14af
mov ecx, 1
cmp dword [eax + 0x28], 0
je 0x5b14b8
add ecx, 1
cmp ecx, 1
jne 0x5b14c2
lea esi, [ecx + 3]
jmp 0x5b14d0
mov eax, ebx
mov edx, 0xb17630
call fcn.00592400
mov esi, eax
push str.CSR_PlayerProfile___Player_has_invalid_variant___resetting_to_default_n
call fcn.00408d10
add esp, 4
mov eax, dword [esp + 0x10]
mov ecx, esi
call fcn.005ae0d0
mov edi, dword [esp + 0x58]
test edi, edi
mov dword [esp + 0x18], edi
je 0x5b1504
mov eax, ebx
mov edx, 0xb1763c
call fcn.00591dc0
test eax, eax
jne 0x5b153c
mov esi, ebx
mov edx, 0xb1763c
call fcn.00591310
mov edx, dword [eax + 0x40]
xor ecx, ecx
test edx, edx
jbe 0x5b153c
lea esi, [eax + 0x44]
mov eax, esi
mov edi, edi
mov edi, dword [eax]
cmp dword [edi + 8], 0
jne 0x5b1534
add ecx, 1
add eax, 4
cmp ecx, edx
jb 0x5b1520
jmp 0x5b153c
mov eax, dword [esi]
mov ecx, dword [eax]
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
push 0x955050
mov dword [eax + 0xc], edx
call fcn.005955a0
cmp dword [0x95bd64], 0
jne 0x5b1564
push 0x95bd54
call fcn.00627570
test byte [0xb2dda0], 1
jne 0x5b1586
or dword [0xb2dda0], 1
call fcn.00590b60
push 0x681770
call fcn.004a9213
add esp, 4
mov ecx, 0xb1763c
call fcn.00591220
mov dword [0x954f80], eax
mov eax, dword [esp + 0x14]
test eax, eax
jbe 0x5b15ec
lea ebx, [esp + 0x60]
mov dword [esp + 0x14], eax
mov edi, dword [esp + 0xc]
xor esi, esi
test edi, edi
je 0x5b15b6
cmp dword [edi], esi
je 0x5b15b6
mov esi, dword [edi + 0xc]
push ebx
mov eax, esi
call fcn.0061c620
push 0
push esi
call fcn.00613ec0
push eax
push esi
call fcn.006259e0
push 0
push 0x95bd54
call fcn.00627390
mov ecx, dword [edi]
add ebx, 0x1dc8
sub dword [esp + 0x14], 1
mov dword [esp + 0xc], ecx
jne 0x5b15a5
xor edi, edi
mov dword [esp + 0x10], edi
mov eax, 0xb1763c
call fcn.005912c0
mov ebx, eax
test ebx, ebx
je 0x5b1679
mov esi, dword [ebx + 0x14]
mov edx, 0xb1763c
mov dword [esp + 0xc], esi
call fcn.00591310
test eax, eax
je 0x5b1679
test byte [0xb2dda0], 1
mov edx, dword [esp + 0x10]
mov eax, dword [ebp + 8]
mov edi, dword [esp + edx*4 + 0x5af8]
mov esi, dword [eax + 8]
jne 0x5b164a
or dword [0xb2dda0], 1
call fcn.00590b60
push 0x681770
call fcn.004a9213
add esp, 4
test edi, edi
mov dword [esp + 0x14], edi
fild dword [esp + 0x14]
jge 0x5b165c
fadd dword [0x6f9a18]
mov edi, dword [esp + 0xc]
mov ecx, 0xb1763c
call fcn.00591270
fstp dword [esi + eax*4 + 0x87c]
mov eax, dword [ebx + 0x14]
call fcn.00591ec0
mov edi, dword [esp + 0x10]
add edi, 1
cmp edi, 0x2a
mov dword [esp + 0x10], edi
jb 0x5b15f2
test byte [0xb2f0b4], 1
jne 0x5b16a2
or dword [0xb2f0b4], 1
call fcn.005ada90
mov ecx, dword [esp + 0x59b8]
mov edx, dword [esp + 0x59e0]
mov eax, dword [esp + 0x59bc]
mov dword [0xb2ddb8], ecx
mov ecx, dword [esp + 0x59e4]
mov dword [0xb2dde0], edx
mov edx, dword [esp + 0x59c0]
mov dword [0xb2ddbc], eax
mov eax, dword [esp + 0x59e8]
mov dword [0xb2dde4], ecx
mov ecx, dword [esp + 0x59c4]
mov dword [0xb2ddc0], edx
mov edx, dword [esp + 0x59ec]
mov dword [0xb2dde8], eax
mov eax, dword [esp + 0x59c8]
mov dword [0xb2ddc4], ecx
mov ecx, dword [esp + 0x59f0]
mov dword [0xb2ddec], edx
mov edx, dword [esp + 0x59cc]
mov dword [0xb2ddc8], eax
mov eax, dword [esp + 0x59f4]
mov dword [0xb2ddf0], ecx
mov ecx, dword [esp + 0x59d0]
mov dword [0xb2ddcc], edx
mov edx, dword [esp + 0x59f8]
mov dword [0xb2ddf4], eax
mov eax, dword [esp + 0x59d4]
mov dword [0xb2ddd0], ecx
mov ecx, dword [esp + 0x59fc]
mov dword [0xb2ddf8], edx
mov edx, dword [esp + 0x59d8]
mov dword [0xb2ddd4], eax
mov eax, dword [esp + 0x5a00]
mov dword [0xb2ddfc], ecx
mov ecx, dword [esp + 0x59dc]
mov dword [0xb2ddd8], edx
mov edx, dword [esp + 0x5a04]
mov dword [0xb2de00], eax
mov eax, dword [esp + 0x5a08]
mov dword [0xb2dddc], ecx
mov ecx, dword [esp + 0x5a30]
mov dword [0xb2de04], edx
mov edx, dword [esp + 0x5a0c]
mov dword [0xb2ea38], eax
mov eax, dword [esp + 0x5a34]
mov dword [0xb2ea60], ecx
mov ecx, dword [esp + 0x5a10]
mov dword [0xb2ea3c], edx
mov edx, dword [esp + 0x5a38]
mov dword [0xb2ea64], eax
mov eax, dword [esp + 0x5a14]
mov dword [0xb2ea40], ecx
mov ecx, dword [esp + 0x5a3c]
mov dword [0xb2ea68], edx
mov edx, dword [esp + 0x5a18]
mov dword [0xb2ea44], eax
mov eax, dword [esp + 0x5a40]
mov dword [0xb2ea6c], ecx
mov ecx, dword [esp + 0x5a1c]
mov dword [0xb2ea48], edx
mov edx, dword [esp + 0x5a44]
mov dword [0xb2ea70], eax
mov eax, dword [esp + 0x5a20]
mov dword [0xb2ea4c], ecx
mov ecx, dword [esp + 0x5a48]
mov dword [0xb2ea74], edx
mov edx, dword [esp + 0x5a24]
mov dword [0xb2ea50], eax
mov eax, dword [esp + 0x5a4c]
mov dword [0xb2ea78], ecx
mov ecx, dword [esp + 0x5a28]
mov dword [0xb2ea54], edx
mov edx, dword [esp + 0x5a50]
mov dword [0xb2ea7c], eax
mov eax, dword [esp + 0x5a2c]
mov dword [0xb2ea58], ecx
mov ecx, dword [esp + 0x5a54]
mov dword [0xb2ea80], edx
mov edx, dword [0x7d5f7c]
mov dword [0xb2ea5c], eax
mov dword [0xb2ea84], ecx
push edx
xor eax, eax
call fcn.0066c5a0
mov eax, dword [esp + 0x5a5c]
mov ecx, dword [esp + 0x5a84]
mov edx, dword [esp + 0x5a60]
mov dword [0xb2eb78], eax
mov eax, dword [esp + 0x5a88]
mov dword [0xb2eba0], ecx
mov ecx, dword [esp + 0x5a64]
mov dword [0xb2eb7c], edx
mov edx, dword [esp + 0x5a8c]
mov dword [0xb2eba4], eax
mov eax, dword [esp + 0x5a68]
mov dword [0xb2eb80], ecx
mov ecx, dword [esp + 0x5a90]
mov dword [0xb2eba8], edx
mov edx, dword [esp + 0x5a6c]
mov dword [0xb2eb84], eax
mov eax, dword [esp + 0x5a94]
mov dword [0xb2ebac], ecx
mov ecx, dword [esp + 0x5a70]
mov dword [0xb2eb88], edx
mov edx, dword [esp + 0x5a98]
mov dword [0xb2ebb0], eax
mov eax, dword [esp + 0x5a74]
mov dword [0xb2eb8c], ecx
mov ecx, dword [esp + 0x5a9c]
mov dword [0xb2ebb4], edx
mov edx, dword [esp + 0x5a78]
mov dword [0xb2eb90], eax
mov eax, dword [esp + 0x5aa0]
mov dword [0xb2ebb8], ecx
mov ecx, dword [esp + 0x5a7c]
mov dword [0xb2eb94], edx
mov edx, dword [esp + 0x5aa4]
mov dword [0xb2ebbc], eax
mov eax, dword [esp + 0x5a80]
mov dword [0xb2eb98], ecx
mov ecx, dword [esp + 0x5aa8]
mov dword [0xb2ebc0], edx
mov edx, dword [esp + 0x5aac]
mov dword [0xb2eb9c], eax
mov eax, dword [esp + 0x5ad4]
mov dword [0xb2ebc4], ecx
mov ecx, dword [esp + 0x5ab0]
mov dword [0xb2ecb8], edx
mov edx, dword [esp + 0x5ad8]
mov dword [0xb2ece0], eax
mov eax, dword [esp + 0x5ab4]
mov dword [0xb2ecbc], ecx
mov ecx, dword [esp + 0x5adc]
mov dword [0xb2ece4], edx
mov edx, dword [esp + 0x5ab8]
mov dword [0xb2ecc0], eax
mov eax, dword [esp + 0x5ae0]
mov dword [0xb2ece8], ecx
mov ecx, dword [esp + 0x5abc]
mov dword [0xb2ecc4], edx
mov edx, dword [esp + 0x5ae4]
mov dword [0xb2ecec], eax
mov eax, dword [esp + 0x5ac0]
mov dword [0xb2ecc8], ecx
mov ecx, dword [esp + 0x5ae8]
mov dword [0xb2ecf0], edx
mov edx, dword [esp + 0x5ac4]
mov dword [0xb2eccc], eax
mov eax, dword [esp + 0x5aec]
mov dword [0xb2ecf4], ecx
mov ecx, dword [esp + 0x5ac8]
mov dword [0xb2ecd0], edx
mov edx, dword [esp + 0x5af0]
mov dword [0xb2ecf8], eax
mov eax, dword [esp + 0x5acc]
mov dword [0xb2ecd4], ecx
mov ecx, dword [esp + 0x5af4]
mov dword [0xb2ecfc], edx
mov edx, dword [esp + 0x5ad0]
add esp, 4
mov dword [0xb2ecd8], eax
mov dword [0xb2ed00], ecx
mov eax, dword [esp + 0x5af4]
fld dword [esp + 0x5cac]
mov ebx, dword [ebp + 8]
fsubr qword [0x6fa920]
mov dword [0xb2ecdc], edx
mov edx, dword [esp + 0x5cb0]
mov dword [0xb2ed04], eax
fstp dword [esp + 0xc]
mov edi, dword [ebx + 8]
fldz
fld dword [esp + 0xc]
add edi, 0xdac
mov ecx, 0x3e
lea esi, [esp + 0x5bb4]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x30]
mov eax, edx
mov ecx, edx
shl eax, 0x1f
sar eax, 0x1f
shl ecx, 0x1e
sar ecx, 0x1f
shl edx, 0x1d
sar edx, 0x1f
fcompi st(1)
mov dword [0x955428], eax
mov dword [0x95542c], ecx
mov dword [0x955430], edx
mov dword [0x955420], esi
mov dword [0x9562f0], eax
mov dword [0x9562f4], ecx
mov dword [0x9562f8], edx
mov dword [0x9562e8], esi
mov dword [0x9571b8], eax
mov dword [0x9571bc], ecx
mov dword [0x9571c0], edx
mov dword [0x9571b0], esi
mov dword [0x958080], eax
mov dword [0x958084], ecx
mov dword [0x958088], edx
mov dword [0x958078], esi
mov dword [0x958f48], eax
mov dword [0x958f4c], ecx
mov dword [0x958f50], edx
mov dword [0x958f40], esi
mov dword [0x959e10], eax
mov dword [0x959e14], ecx
mov dword [0x959e18], edx
mov dword [0x959e08], esi
jb 0x5b1b93
movss xmm0, dword [esp + 0x5cac]
jmp 0x5b1b9b
movss xmm0, dword [0x6dd5a4]
movss dword [esp + 0xc], xmm0
fld dword [esp + 0xc]
fsubr qword [0x6f9eb0]
fstp dword [esp + 0xc]
fld dword [esp + 0xc]
fcompi st(1)
fstp st(0)
jb 0x5b1bc1
movss xmm0, dword [0x6baf3c]
movss dword [esp + 0xc], xmm0
fld dword [esp + 0xc]
fld1
mov ecx, dword [ebx + 8]
fdivrp st(1)
movss dword [ecx + 0xd1c], xmm0
mov edx, dword [0xa1ddc0]
mov eax, dword [edx*4 + 0x6f9108]
movss xmm0, dword [0xb01d58]
shl eax, 7
fstp dword [0xa1ddbc]
fld dword [0x7268bc]
fld dword [0xa1ddbc]
fld st(0)
fmulp st(2)
movss dword [eax + 0xa1cfcc], xmm0
movss xmm0, dword [0x7268c8]
fxch st(1)
movss dword [eax + 0xa1cfd8], xmm0
movss xmm0, dword [0xb01d5c]
movss dword [eax + 0xa1cfd0], xmm0
movss xmm0, dword [0x7268cc]
fstp dword [esp + 0x1c]
fld dword [0x7268c0]
movss dword [eax + 0xa1cfdc], xmm0
movss xmm0, dword [0xb01d60]
fmul st(1)
movss dword [eax + 0xa1cfd4], xmm0
movss xmm0, dword [0x7268d0]
fstp dword [esp + 0x20]
movss dword [eax + 0xa1cfe0], xmm0
fmul dword [0x7268c4]
fstp dword [esp + 0x24]
fld dword [esp + 0x1c]
fstp dword [eax + 0xa1cfc0]
fld dword [esp + 0x20]
fstp dword [eax + 0xa1cfc4]
fld dword [esp + 0x24]
fstp dword [eax + 0xa1cfc8]
mov eax, dword [esp + 0x5cb4]
mov ecx, dword [ebx + 8]
push eax
push str.Player_AI_Difficulty_Choice:__d_n
mov dword [ecx + 0x2f4], eax
call fcn.00408d10
add esp, 8
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 8