Function at 0x100b5bc8
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, ecx
call fcn.1004dcd0
movzx eax, al
cmp eax, 5
ja case.default.0x100b5947
push ebx
push ebp
push edi
jmp dword [eax*4 + 0x100b5e2c]
mov edi, dword [0x102710b4]
mov ebx, 0x3be
mov byte [esi + 4], 1
mov byte [edi + 0x398], 1
mov ecx, esi
call fcn.1004dd60
mov word [ebx + edi - 6], ax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dd60
mov word [edi + ebx], ax
xor eax, eax
mov edi, dword [0x102710b4]
mov word [ebx + edi + 6], ax
add ebx, 2
cmp ebx, 0x3c4
jl 0x100b5964
xor ebp, ebp
mov ebx, 0x3a8
mov ecx, esi
call fcn.1007fce0
mov dword [ebx + edi - 0xc], eax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1007fce0
mov dword [edi + ebx], eax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dcd0
add ebx, 4
mov byte [edi + ebp + 0x3cf], al
mov edi, dword [0x102710b4]
lea ebp, [ebp + 1]
cmp ebx, 0x3b4
jl 0x100b59a0
mov ecx, esi
call fcn.1007fce0
mov dword [edi + 0x3b4], eax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dd60
mov word [edi + 0x3ca], ax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dd60
mov word [edi + 0x3cc], ax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dcd0
mov byte [edi + 0x3ce], al
mov ecx, esi
mov edi, dword [0x102710b4]
lea eax, [edi + 0x3d4]
push eax
call fcn.1007e900
mov ecx, eax
call fcn.1004dcd0
mov byte [edi + 0x3f0], al
mov eax, dword [0x102710b4]
mov ecx, dword [eax + 0x510]
test ecx, ecx
je 0x100b5e24
pop edi
pop ebp
pop ebx
pop esi
jmp fcn.10053360
mov edi, dword [0x102710b4]
cmp dword [edi + 0x510], 0
je 0x100b5e24
mov byte [edi + 0x398], 1
mov ebx, 0x3be
mov ecx, esi
call fcn.1004dd60
mov word [ebx + edi - 6], ax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dd60
mov ecx, esi
mov word [edi + ebx], ax
call fcn.1004dd60
mov edi, dword [0x102710b4]
movzx eax, ax
mov word [ebx + edi + 6], ax
add ebx, 2
cmp ebx, 0x3c4
jl 0x100b5a87
xor ebp, ebp
mov ebx, 0x3a8
nop dword [eax + eax]
mov ecx, esi
call fcn.1007fce0
mov dword [ebx + edi - 0xc], eax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1007fce0
mov dword [edi + ebx], eax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dcd0
add ebx, 4
mov byte [edi + ebp + 0x3cf], al
mov edi, dword [0x102710b4]
lea ebp, [ebp + 1]
cmp ebx, 0x3b4
jl 0x100b5ad0
mov ecx, esi
call fcn.1007fce0
mov dword [edi + 0x3b4], eax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dd60
mov word [edi + 0x3ca], ax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dd60
mov word [edi + 0x3cc], ax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dcd0
mov byte [edi + 0x3ce], al
mov ecx, esi
mov eax, dword [0x102710b4]
add eax, 0x3d4
push eax
call fcn.1007e900
mov ecx, dword [0x102710b4]
cmp dword [ecx + 0x474], 0
je 0x100b5e24
mov eax, dword [ecx + 0x510]
test eax, eax
je 0x100b5e24
mov eax, dword [eax + 0x168]
test eax, eax
je 0x100b5ba8
push 1
mov ecx, eax
call dword [0x101b07e0]
mov ecx, dword [0x102710b4]
mov ecx, dword [ecx + 0x510]
call fcn.10053360
mov ecx, dword [0x102710b4]
pop edi
pop ebp
pop ebx
mov ecx, dword [ecx + 0x510]
pop esi
jmp fcn.10054780
mov eax, dword [0x102710b4]
cmp dword [eax + 0x474], 0
je 0x100b5e24
cmp dword [eax + 0x510], 0
je 0x100b5e24
mov ecx, esi
call fcn.1004dd60
mov ecx, esi
movzx edi, ax
call fcn.1004dd60
mov ecx, esi
movzx ebx, ax
call fcn.1004dd60
mov ecx, esi
movzx ebp, ax
call fcn.1004dd60
mov ecx, dword [0x102710b4]
movzx esi, ax
cmp byte [ecx + 0x398], 0
je 0x100b5e24
xor dl, dl
cmp word [ecx + 0x3b8], di
jne 0x100b5c46
mov ax, word [ecx + 0x3c4]
cmp ax, word [ecx + 0x3be]
jae 0x100b5c46
mov word [ecx + 0x3c4], bx
mov dl, 1
cmp word [ecx + 0x3ba], di
jne 0x100b5c68
mov ax, word [ecx + 0x3c6]
cmp ax, word [ecx + 0x3c0]
jae 0x100b5c68
mov word [ecx + 0x3c6], bp
mov dl, 1
cmp word [ecx + 0x3bc], di
jne 0x100b5c8a
mov ax, word [ecx + 0x3c8]
cmp ax, word [ecx + 0x3c2]
jae 0x100b5c8a
mov word [ecx + 0x3c8], si
jmp 0x100b5c92
test dl, dl
je 0x100b5e24
cmp dword [ecx + 0x474], 0
je 0x100b5e24
mov ecx, dword [ecx + 0x510]
pop edi
pop ebp
pop ebx
pop esi
jmp fcn.10054780
mov edi, dword [0x102710b4]
cmp byte [edi + 0x398], 0
je 0x100b5e24
cmp dword [edi + 0x474], 0
je 0x100b5e24
cmp dword [edi + 0x510], 0
je 0x100b5e24
mov ecx, esi
call fcn.1004dd60
mov word [edi + 0x3ca], ax
mov ecx, esi
mov edi, dword [0x102710b4]
call fcn.1004dd60
mov ecx, dword [0x102710b4]
mov word [edi + 0x3cc], ax
pop edi
pop ebp
mov ecx, dword [ecx + 0x510]
pop ebx
pop esi
jmp fcn.10054ae0
mov esi, dword [0x102710b4]
cmp dword [esi + 0x474], 0
je 0x100b5d43
mov eax, dword [esi + 0x510]
test eax, eax
je 0x100b5d43
mov ecx, dword [eax + 0x168]
test ecx, ecx
je 0x100b5d43
push 0
call dword [0x101b07e0]
mov esi, dword [0x102710b4]
mov ebx, dword [esi + 0x4e0]
test ebx, ebx
je 0x100b5d93
mov edi, dword [ebx + 0x64]
test edi, edi
je 0x100b5d93
push 0
mov ecx, edi
call dword [0x101b07e0]
mov edi, dword [ebx + 0x64]
mov esi, dword [0x102710b4]
test edi, edi
je 0x100b5d93
push 4
push edi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x100b5d8d
mov dword [0x10271054], edi
mov dword [0x10270fec], 7
call fcn.100ce410
mov esi, dword [0x102710b4]
xor ecx, ecx
lea edx, [esi + 0x3a8]
lea eax, [esi + 0x3be]
xor edi, edi
lea eax, [eax + 2]
mov word [eax - 8], di
lea edx, [edx + 4]
mov word [eax - 2], di
mov word [eax + 4], di
mov dword [edx - 0x10], edi
mov dword [edx - 4], edi
mov byte [esi + ecx + 0x3cf], 0
inc ecx
cmp ecx, 3
jl 0x100b5da1
push 0x15
xor eax, eax
mov dword [esi + 0x3b4], edi
push str.Collection_Race_Event
lea ecx, [esi + 0x3d4]
mov dword [esi + 0x3ca], eax
call fcn.10046d30
mov eax, dword [0x102710b4]
pop edi
pop ebp
pop ebx
mov byte [eax + 0x398], 0
pop esi
ret
mov eax, dword [0x102710b4]
cmp dword [eax + 0x474], 0
je 0x100b5e24
mov eax, dword [eax + 0x510]
test eax, eax
je 0x100b5e24
mov ecx, dword [eax + 0x168]
test ecx, ecx
je 0x100b5e24
push 0
call dword [0x101b07e0]
pop edi
pop ebp
pop ebx
pop esi
ret