Function at 0x405200
Capabilities:
Encode data using xor
Encrypt data using twofish

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x80
mov eax, dword [0x418250]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov ebx, ecx
lea eax, [ebp - 8]
push edi
xor esi, esi
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x38], eax
xor edi, edi
cmp esi, 0x20
jge 0x40529d
mov edx, dword [ebp + 8]
add esi, 8
movsx ecx, byte [edx + esi - 5]
movzx eax, byte [edx + esi - 6]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + esi - 7]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + edx - 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + esi - 2]
mov dword [ebp + edi - 0x34], ecx
movsx ecx, byte [edx + esi - 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + esi - 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + edx - 4]
shl ecx, 8
or ecx, eax
push ecx
push dword [ebp + edi - 0x34]
mov dword [ebp + edi - 0x24], ecx
mov ecx, ebx
call fcn.00404650
mov ecx, dword [ebp - 0x38]
add edi, 4
mov dword [ecx], eax
sub ecx, 4
mov dword [ebp - 0x38], ecx
cmp edi, 0x10
jl 0x405225
xor edi, edi
lea eax, [ebx + 0x1004]
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x3c], eax
jmp 0x4052b0
lea eax, [ebp - 0x34]
push eax
push edi
push 4
mov ecx, ebx
call fcn.00404420
mov esi, eax
lea eax, [ebp - 0x24]
push eax
add edi, 0x1010101
push edi
push 4
mov ecx, ebx
call fcn.00404420
rol eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
add esi, eax
add eax, esi
mov dword [ecx], esi
add edx, 2
rol eax, 9
mov dword [ecx + 4], eax
add ecx, 8
add edi, 0x1010101
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x3c], ecx
cmp edx, 0x28
jl 0x4052b0
mov eax, dword [ebp - 8]
movzx esi, al
movzx eax, ah
mov dword [ebp - 0x6c], eax
movzx eax, byte [ebp - 6]
mov dword [ebp - 0x70], eax
movzx eax, byte [ebp - 5]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0xc]
movzx ecx, al
movzx eax, ah
mov dword [ebp - 0x64], eax
movzx eax, byte [ebp - 0xa]
mov dword [ebp - 0x4c], eax
movzx eax, byte [ebp - 9]
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x80], ecx
mov ecx, dword [ebp - 0x10]
movzx eax, cl
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x14]
movzx edi, al
movzx eax, ah
mov dword [ebp - 0x7c], eax
movzx eax, byte [ebp - 0xe]
mov dword [ebp - 0x44], eax
movzx eax, byte [ebp - 0x12]
mov dword [ebp - 0x48], eax
movzx eax, byte [ebp - 0xd]
mov dword [ebp - 0x50], eax
movzx eax, byte [ebp - 0x11]
movzx ecx, ch
mov dword [ebp - 0x58], eax
xor edx, edx
lea eax, [ebx + 8]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x5c], ecx
mov ebx, eax
mov edi, edi
movzx eax, byte [edx + 0x418150]
movzx edi, byte [edx + 0x418050]
mov edx, dword [ebp - 0x78]
xor esi, eax
xor edx, eax
movzx eax, byte [esi + 0x418150]
xor eax, dword [ebp - 0x80]
movzx edx, byte [edx + 0x418050]
movzx eax, byte [eax + 0x418050]
xor eax, dword [ebp - 0x54]
mov ecx, edi
xor ecx, dword [ebp - 0x6c]
movzx eax, byte [eax + 0x418050]
xor eax, dword [ebp - 0x40]
movzx ecx, byte [ecx + 0x418150]
mov eax, dword [eax*4 + 0x41d208]
xor edi, dword [ebp - 0x70]
xor ecx, dword [ebp - 0x64]
xor edx, dword [ebp - 0x74]
movzx esi, byte [edi + 0x418050]
xor esi, dword [ebp - 0x4c]
mov dword [ebx - 4], eax
movzx eax, byte [ecx + 0x418150]
xor eax, dword [ebp - 0x5c]
lea ebx, [ebx + 8]
movzx eax, byte [eax + 0x418050]
xor eax, dword [ebp - 0x7c]
mov eax, dword [eax*4 + 0x41d608]
mov dword [ebx - 8], eax
movzx eax, byte [esi + 0x418050]
xor eax, dword [ebp - 0x44]
mov esi, dword [ebp - 0x60]
movzx eax, byte [eax + 0x418150]
xor eax, dword [ebp - 0x48]
mov eax, dword [eax*4 + 0x41da08]
mov dword [ebx + 0x7f4], eax
movzx eax, byte [edx + 0x418150]
xor eax, dword [ebp - 0x50]
mov edx, dword [ebp - 0x3c]
inc edx
movzx eax, byte [eax + 0x418150]
xor eax, dword [ebp - 0x58]
mov dword [ebp - 0x3c], edx
mov eax, dword [eax*4 + 0x41de08]
mov dword [ebx + 0x7f8], eax
cmp edx, 0x100
jl 0x405380
mov ebx, dword [ebp - 0x68]
cmp byte [ebx], 0
je 0x4054c4
mov ecx, dword [ebx + 0x1004]
mov eax, dword [ebx + 0x1014]
mov dword [ebx + 0x1004], eax
mov eax, dword [ebx + 0x1018]
mov dword [ebx + 0x1014], ecx
mov ecx, dword [ebx + 0x1008]
mov dword [ebx + 0x1008], eax
mov eax, dword [ebx + 0x101c]
mov dword [ebx + 0x1018], ecx
mov ecx, dword [ebx + 0x100c]
mov dword [ebx + 0x100c], eax
mov eax, dword [ebx + 0x1020]
mov dword [ebx + 0x101c], ecx
mov ecx, dword [ebx + 0x1010]
mov dword [ebx + 0x1010], eax
mov dword [ebx + 0x1020], ecx
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00405923
mov esp, ebp
pop ebp
ret 4