Function at 0x96bc10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov edi, dword [esp + 0x1c]
cmp edi, 0x80
jne 0x96bc27
mov eax, 0xa
jmp 0x96bc4c
cmp edi, 0x100
je 0x96bc47
mov eax, 0xffffffe0
cmp edi, 0xc0
jne 0x96be7a
mov eax, 0xc
jmp 0x96bc4c
mov eax, 0xe
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
cmp byte [0xc220d0], 0
jne 0x96bc6b
mov esi, ecx
call fcn.0096be80
mov ecx, esi
mov byte [0xc220d0], 1
lea esi, [ecx + 8]
shr edi, 5
mov dword [ecx + 4], esi
je 0x96bca7
mov eax, dword [esp + 0x18]
xor edx, edx
movzx ebp, byte [eax + edx*4 + 1]
movzx ebx, byte [eax + edx*4]
shl ebp, 8
or ebp, ebx
movzx ebx, byte [eax + edx*4 + 2]
shl ebx, 0x10
or ebx, ebp
movzx ebp, byte [eax + edx*4 + 3]
shl ebp, 0x18
or ebp, ebx
mov dword [ecx + edx*4 + 8], ebp
inc edx
cmp edx, edi
jne 0x96bc7c
mov edx, dword [ecx]
cmp edx, 0xa
je 0x96bd90
cmp edx, 0xc
je 0x96bdff
xor eax, eax
cmp edx, 0xe
jne 0x96be7a
mov edi, dword [esi]
xor ebp, ebp
mov ebx, dword [esi + 0x1c]
xor edi, dword [ebp*4 + 0xc220d4]
inc ebp
mov edx, ebx
movzx eax, bh
shr edx, 0x10
movzx eax, byte [eax + 0xc220fc]
movzx edx, dl
movzx edx, byte [edx + 0xc220fc]
shl edx, 8
xor edx, eax
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax + 0xc220fc]
shl eax, 0x10
xor eax, edx
movzx edx, bl
movzx edx, byte [edx + 0xc220fc]
shl edx, 0x18
xor edx, eax
xor edi, edx
mov dword [esi + 0x20], edi
mov ecx, dword [esi + 4]
xor ecx, edi
mov dword [esi + 0x24], ecx
xor ecx, dword [esi + 8]
mov dword [esi + 0x28], ecx
xor ecx, dword [esi + 0xc]
mov edx, ecx
mov dword [esi + 0x2c], ecx
movzx eax, ch
shr edx, 0x10
movzx eax, byte [eax + 0xc220fc]
movzx edx, dl
movzx edx, byte [edx + 0xc220fc]
shl eax, 8
shl edx, 0x10
xor edx, eax
movzx eax, cl
shr ecx, 0x18
movzx eax, byte [eax + 0xc220fc]
movzx ecx, byte [ecx + 0xc220fc]
xor eax, dword [esi + 0x10]
shl ecx, 0x18
xor ecx, edx
xor ecx, eax
mov dword [esi + 0x30], ecx
xor ecx, dword [esi + 0x14]
mov dword [esi + 0x34], ecx
xor ecx, dword [esi + 0x18]
mov dword [esi + 0x38], ecx
xor ecx, ebx
cmp ebp, 7
mov dword [esi + 0x3c], ecx
lea esi, [esi + 0x20]
jne 0x96bcca
jmp 0x96be78
mov edx, dword [esi]
xor ebp, ebp
mov eax, dword [esi + 0xc]
xor edx, dword [ebp*4 + 0xc220d4]
inc ebp
mov ebx, eax
movzx edi, ah
mov ecx, eax
shr ebx, 0x10
movzx edi, byte [edi + 0xc220fc]
shr ecx, 0x18
movzx ebx, bl
movzx ecx, byte [ecx + 0xc220fc]
movzx ebx, byte [ebx + 0xc220fc]
shl ecx, 0x10
shl ebx, 8
xor ebx, edi
movzx edi, al
movzx edi, byte [edi + 0xc220fc]
xor ecx, ebx
shl edi, 0x18
xor edi, ecx
xor edx, edi
mov dword [esi + 0x10], edx
mov ecx, dword [esi + 4]
xor ecx, edx
mov dword [esi + 0x14], ecx
xor ecx, dword [esi + 8]
mov dword [esi + 0x18], ecx
xor ecx, eax
cmp ebp, 0xa
mov dword [esi + 0x1c], ecx
lea esi, [esi + 0x10]
jne 0x96bd94
jmp 0x96be78
mov edx, dword [esi]
xor ecx, ecx
mov eax, dword [esi + 0x14]
xor edx, dword [ecx*4 + 0xc220d4]
inc ecx
mov ebx, eax
movzx edi, ah
shr ebx, 0x10
movzx ebp, byte [edi + 0xc220fc]
movzx edi, bl
mov ebx, eax
movzx edi, byte [edi + 0xc220fc]
shr ebx, 0x18
movzx ebx, byte [ebx + 0xc220fc]
shl edi, 8
xor edi, ebp
shl ebx, 0x10
xor ebx, edi
movzx edi, al
movzx edi, byte [edi + 0xc220fc]
shl edi, 0x18
xor edi, ebx
xor edx, edi
mov dword [esi + 0x18], edx
mov edi, dword [esi + 4]
xor edi, edx
mov dword [esi + 0x1c], edi
xor edi, dword [esi + 8]
mov dword [esi + 0x20], edi
xor edi, dword [esi + 0xc]
mov dword [esi + 0x24], edi
xor edi, dword [esi + 0x10]
mov dword [esi + 0x28], edi
xor edi, eax
cmp ecx, 8
mov dword [esi + 0x2c], edi
lea esi, [esi + 0x18]
jne 0x96be03
xor eax, eax
pop esi
pop edi
pop ebx
pop ebp
ret