Function at 0x100bf510
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov edx, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 8]
push esi
mov dword [edx + 0x104], 0x12
push edi
movzx edi, byte [ebx + 3]
movzx eax, byte [ebx + 2]
shl edi, 8
or edi, eax
mov esi, dword [ebp + 0xc]
movzx eax, byte [ebx + 1]
shl edi, 8
or edi, eax
shr esi, 2
movzx eax, byte [ebx]
shl edi, 8
or edi, eax
mov dword [edx], edi
movzx ecx, byte [ebx + 7]
movzx eax, byte [ebx + 6]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 4]
shl ecx, 8
or ecx, eax
mov dword [edx + 4], ecx
movzx eax, byte [ebx + 0xa]
mov dword [ebp - 8], ecx
movzx ecx, byte [ebx + 0xb]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 8]
shl ecx, 8
or ecx, eax
mov dword [edx + 8], ecx
movzx eax, byte [ebx + 0xe]
mov dword [ebp - 4], ecx
movzx ecx, byte [ebx + 0xf]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0xd]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0xc]
shl ecx, 8
or ecx, eax
mov eax, 4
cmp esi, eax
mov dword [edx + 0xc], ecx
cmova eax, esi
add eax, 6
mov dword [edx + 0x100], eax
xor edx, edx
lea eax, [eax*4 + 3]
div esi
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0xc], eax
cmp edx, 0x10
je 0x100bf86d
mov esi, dword [ebp + 0x10]
cmp edx, 0x18
je 0x100bf790
cmp edx, 0x20
je 0x100bf60c
pop edi
mov dword [esi + 0x100], 0
xor eax, eax
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx edx, byte [ebx + 0x13]
movzx eax, byte [ebx + 0x12]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x11]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x10]
shl edx, 8
or edx, eax
mov dword [esi + 0x10], edx
movzx eax, byte [ebx + 0x16]
mov dword [ebp - 0x10], edx
movzx edx, byte [ebx + 0x17]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x15]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x14]
shl edx, 8
or edx, eax
mov dword [esi + 0x14], edx
movzx eax, byte [ebx + 0x1a]
mov dword [ebp - 0x14], edx
movzx edx, byte [ebx + 0x1b]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x19]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x18]
shl edx, 8
or edx, eax
mov dword [esi + 0x18], edx
movzx eax, byte [ebx + 0x1e]
mov dword [ebp - 0x18], edx
movzx edx, byte [ebx + 0x1f]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x1d]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x1c]
shl edx, 8
mov ebx, edx
mov dword [ebp + 0xc], edx
or ebx, eax
mov dword [ebp + 0xc], 0
cmp dword [ebp - 0xc], 0
mov dword [esi + 0x1c], ebx
jbe 0x100bf8e5
lea eax, [esi + 0x24]
mov esi, dword [ebp - 8]
mov dword [ebp + 8], eax
nop dword [eax]
mov eax, ebx
shr eax, 0x10
movzx edx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov edx, dword [edx*4 + 0x101ca1e0]
xor edx, dword [eax*4 + str.cwko0]
mov eax, ebx
shr eax, 0x18
xor edx, dword [eax*4 + 0x101ca5e0]
movzx eax, bl
xor edx, dword [eax*4 + 0x101ca9e0]
mov eax, dword [ebp + 0xc]
xor edx, dword [eax*4 + 0x101c8d68]
xor edi, edx
mov edx, dword [ebp + 8]
mov eax, edi
xor eax, esi
mov esi, eax
mov dword [edx], eax
xor eax, dword [ebp - 4]
mov dword [edx + 4], eax
xor ecx, eax
mov dword [ebp - 4], eax
mov eax, ecx
shr eax, 0x10
mov dword [edx - 4], edi
mov dword [edx + 8], ecx
movzx edx, al
mov eax, ecx
shr eax, 8
movzx eax, al
mov edx, dword [edx*4 + 0x101ca5e0]
xor edx, dword [eax*4 + 0x101ca1e0]
mov eax, ecx
shr eax, 0x18
xor edx, dword [eax*4 + 0x101ca9e0]
movzx eax, cl
xor edx, dword [eax*4 + str.cwko0]
mov eax, dword [ebp - 0x10]
xor eax, edx
mov edx, dword [ebp + 8]
mov dword [ebp - 0x10], eax
mov dword [edx + 0xc], eax
xor eax, dword [ebp - 0x14]
mov dword [edx + 0x10], eax
mov dword [ebp - 0x14], eax
xor eax, dword [ebp - 0x18]
xor ebx, eax
mov dword [edx + 0x14], eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0xc]
inc eax
mov dword [edx + 0x18], ebx
add edx, 0x20
mov dword [ebp + 0xc], eax
mov dword [ebp + 8], edx
cmp eax, dword [ebp - 0xc]
jb 0x100bf6c0
jmp 0x100bf8e2
movzx edx, byte [ebx + 0x13]
movzx eax, byte [ebx + 0x12]
shl edx, 8
or edx, eax
mov dword [ebp + 0xc], 0
movzx eax, byte [ebx + 0x11]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 0x10]
shl edx, 8
or edx, eax
mov dword [esi + 0x10], edx
movzx ebx, byte [ebx + 0x17]
mov dword [ebp - 0x18], edx
mov edx, dword [ebp + 8]
shl ebx, 8
movzx eax, byte [edx + 0x16]
or ebx, eax
movzx eax, byte [edx + 0x15]
shl ebx, 8
or ebx, eax
movzx eax, byte [edx + 0x14]
shl ebx, 8
or ebx, eax
cmp dword [ebp - 0xc], 0
mov dword [esi + 0x14], ebx
jbe 0x100bf8e5
lea eax, [esi + 0x1c]
mov esi, eax
mov eax, ebx
lea esi, [esi + 0x18]
shr eax, 0x10
movzx edx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov edx, dword [edx*4 + 0x101ca1e0]
xor edx, dword [eax*4 + str.cwko0]
mov eax, ebx
shr eax, 0x18
xor edx, dword [eax*4 + 0x101ca5e0]
movzx eax, bl
xor edx, dword [eax*4 + 0x101ca9e0]
mov eax, dword [ebp + 0xc]
xor edx, dword [eax*4 + 0x101c8d68]
xor edi, edx
mov eax, edi
mov dword [esi - 0x1c], edi
xor eax, dword [ebp - 8]
mov dword [esi - 0x18], eax
mov dword [ebp - 8], eax
xor eax, dword [ebp - 4]
mov dword [esi - 0x14], eax
mov dword [ebp - 4], eax
xor eax, ecx
mov dword [esi - 0x10], eax
mov ecx, eax
xor eax, dword [ebp - 0x18]
xor ebx, eax
mov dword [esi - 0xc], eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0xc]
inc eax
mov dword [esi - 8], ebx
mov dword [ebp + 0xc], eax
cmp eax, dword [ebp - 0xc]
jb 0x100bf7f0
jmp 0x100bf8e2
xor ebx, ebx
test eax, eax
je 0x100bf8e2
mov esi, dword [ebp + 0x10]
add esi, 0x14
nop dword [eax]
mov eax, ecx
lea esi, [esi + 0x10]
shr eax, 0x10
movzx edx, al
mov eax, ecx
shr eax, 8
movzx eax, al
mov edx, dword [edx*4 + 0x101ca1e0]
xor edx, dword [eax*4 + str.cwko0]
mov eax, ecx
shr eax, 0x18
xor edx, dword [eax*4 + 0x101ca5e0]
movzx eax, cl
xor edx, dword [eax*4 + 0x101ca9e0]
xor edx, dword [ebx*4 + 0x101c8d68]
inc ebx
xor edi, edx
mov eax, edi
mov dword [esi - 0x14], edi
xor eax, dword [ebp - 8]
mov dword [esi - 0x10], eax
mov dword [ebp - 8], eax
xor eax, dword [ebp - 4]
xor ecx, eax
mov dword [esi - 0xc], eax
mov dword [esi - 8], ecx
mov dword [ebp - 4], eax
cmp ebx, dword [ebp - 0xc]
jb 0x100bf880
mov esi, dword [ebp + 0x10]
mov eax, dword [esi + 0x100]
mov edi, 4
shl eax, 2
cmp eax, edi
jbe 0x100bf93f
mov edx, dword [esi + edi*4]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x101cd5e0]
xor ecx, dword [eax*4 + 0x101cd1e0]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x101cd9e0]
movzx eax, dl
xor ecx, dword [eax*4 + 0x101ccde0]
mov dword [esi + edi*4], ecx
inc edi
mov eax, dword [esi + 0x100]
shl eax, 2
cmp edi, eax
jb 0x100bf8f7
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret