Function at 0x100239d0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
mov ebx, dword [sym.imp.ogg.dll_oggpack_write]
push ebp
push 0x18
push 0x564342
xor ebp, ebp
push edi
mov dword [esp + 0x1c], ebp
call ebx
mov eax, dword [esi]
add esp, 0xc
push 0x10
push eax
push edi
call ebx
mov ecx, dword [esi + 4]
add esp, 0xc
push 0x18
push ecx
push edi
call ebx
mov ecx, dword [esi + 4]
lea eax, [ebp + 1]
add esp, 0xc
cmp ecx, eax
jle 0x10023af5
mov edx, dword [esi + 8]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xc]
cmp dword [edx], 0
je 0x10023a48
mov edx, dword [esi + 8]
mov ebp, dword [edx + eax*4]
cmp ebp, dword [edx + eax*4 - 4]
lea edx, [edx + eax*4]
jl 0x10023a48
cmp eax, ecx
jne 0x10023a3e
mov dword [esp + 0x10], 1
add dword [esp + 0xc], 4
inc eax
cmp eax, ecx
jl 0x10023a1a
xor ebp, ebp
cmp dword [esp + 0x10], ebp
je 0x10023af5
push 1
push 1
push edi
mov dword [esp + 0x18], ebp
call ebx
mov eax, dword [esi + 8]
mov ecx, dword [eax]
add esp, 0xc
push 5
dec ecx
push ecx
push edi
call ebx
mov ebp, 1
add esp, 0xc
cmp dword [esi + 4], ebp
jle 0x10023ac6
jmp 0x10023a80
mov edx, dword [esi + 8]
mov eax, dword [edx + ebp*4]
lea ecx, [edx + ebp*4]
mov ecx, dword [ecx - 4]
cmp eax, ecx
jle 0x10023ac0
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0xc]
sub eax, ecx
bsr eax, eax
je 0x10023aa7
inc eax
jmp 0x10023aa9
xor eax, eax
push eax
mov eax, ebp
sub eax, ecx
push eax
push edi
call ebx
add esp, 0xc
sub dword [esp + 0x10], 1
mov dword [esp + 0xc], ebp
jne 0x10023a96
inc ebp
cmp ebp, dword [esi + 4]
jl 0x10023a80
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0xc]
sub eax, ecx
bsr eax, eax
je 0x10023ae4
inc eax
push eax
sub ebp, ecx
push ebp
push edi
call ebx
add esp, 0xc
jmp 0x10023b83
xor eax, eax
push eax
sub ebp, ecx
push ebp
push edi
call ebx
add esp, 0xc
jmp 0x10023b83
push 1
push ebp
push edi
call ebx
mov ecx, dword [esi + 4]
add esp, 0xc
xor eax, eax
cmp ecx, ebp
jle 0x10023b1c
mov edx, dword [esi + 8]
lea ebx, [ebx]
cmp dword [edx], ebp
je 0x10023b1c
inc eax
add edx, 4
cmp eax, ecx
jl 0x10023b10
push 1
cmp eax, ecx
jne 0x10023b48
push ebp
push edi
call ebx
add esp, 0xc
cmp dword [esi + 4], 0
jle 0x10023b83
nop
mov ecx, dword [esi + 8]
mov edx, dword [ecx + ebp*4]
push 5
dec edx
push edx
push edi
call ebx
inc ebp
add esp, 0xc
cmp ebp, dword [esi + 4]
jl 0x10023b30
jmp 0x10023b83
push 1
push edi
call ebx
add esp, 0xc
cmp dword [esi + 4], 0
jle 0x10023b83
mov eax, dword [esi + 8]
cmp dword [eax + ebp*4], 0
push 1
jne 0x10023b65
push 0
jmp 0x10023b77
push 1
push edi
call ebx
mov ecx, dword [esi + 8]
mov edx, dword [ecx + ebp*4]
add esp, 0xc
push 5
dec edx
push edx
push edi
call ebx
inc ebp
add esp, 0xc
cmp ebp, dword [esi + 4]
jl 0x10023b56
mov eax, dword [esi + 0xc]
push 4
push eax
push edi
call ebx
mov eax, dword [esi + 0xc]
add esp, 0xc
test eax, eax
je 0x10023c2f
dec eax
cmp eax, 1
ja 0x10023ba6
cmp dword [esi + 0x20], 0
jne 0x10023baf
or eax, 0xffffffff
pop ebp
pop ebx
add esp, 0xc
ret
mov ecx, dword [esi + 0x10]
push 0x20
push ecx
push edi
call ebx
mov edx, dword [esi + 0x14]
add esp, 0xc
push 0x20
push edx
push edi
call ebx
mov eax, dword [esi + 0x18]
add esp, 0xc
push 4
dec eax
push eax
push edi
call ebx
mov ecx, dword [esi + 0x1c]
add esp, 0xc
push 1
push ecx
push edi
call ebx
mov eax, dword [esi + 0xc]
add esp, 0xc
sub eax, 1
je 0x10023bff
sub eax, 1
je 0x10023bf7
mov dword [esp + 0xc], 0xffffffff
jmp 0x10023c0a
mov eax, dword [esi + 4]
imul eax, dword [esi]
jmp 0x10023c06
mov eax, esi
call fcn.10005900
mov dword [esp + 0xc], eax
xor ebp, ebp
cmp dword [esp + 0xc], ebp
jle 0x10023c2f
mov edx, dword [esi + 0x18]
mov eax, dword [esi + 0x20]
mov eax, dword [eax + ebp*4]
push edx
cdq
xor eax, edx
sub eax, edx
push eax
push edi
call ebx
inc ebp
add esp, 0xc
cmp ebp, dword [esp + 0xc]
jl 0x10023c12
pop ebp
xor eax, eax
pop ebx
add esp, 0xc
ret