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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
xor ebx, ebx
sub esp, 0x7c
mov esi, dword [ebp + 8]
movzx eax, byte [esi + ebx*8 + 0x10a1]
movzx edx, byte [esi + ebx*8 + 0x10a2]
movzx ecx, byte [esi + ebx*8 + 0x10a0]
movzx edi, byte [esi + ebx*8 + 0x10a4]
shl edx, 0x10
shl eax, 8
or eax, edx
movzx edx, byte [esi + ebx*8 + 0x10a3]
shl edx, 0x18
or edx, ecx
movzx ecx, byte [esi + ebx*8 + 0x10a6]
or eax, edx
movzx edx, byte [esi + ebx*8 + 0x10a5]
shl ecx, 0x10
mov dword [ebp + ebx*4 - 0x48], eax
shl edx, 8
or edx, ecx
movzx ecx, byte [esi + ebx*8 + 0x10a7]
mov dword [esp], eax
shl ecx, 0x18
or ecx, edi
or edx, ecx
mov dword [esp + 4], edx
mov dword [ebp + ebx*4 - 0x38], edx
call sym.__TwoFish_RS_MDS_Encode
imul edx, ebx, 0xfffffffc
inc ebx
mov dword [ebp + edx - 0x1c], eax
lea eax, [ebx*8]
cmp eax, 0x1f
ja 0x40d0aa
cmp ebx, 3
jbe 0x40d01b
lea ecx, [esi + 0x1004]
xor edi, edi
lea eax, [ebp - 0x48]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], 4
mov dword [ebp - 0x4c], ecx
call sym.__TwoFish_F32
mov dword [esp], 4
mov ebx, eax
lea eax, [ebp - 0x38]
mov dword [esp + 8], eax
lea eax, [edi + 0x1010101]
add edi, 0x2020202
mov dword [esp + 4], eax
call sym.__TwoFish_F32
mov ecx, dword [ebp - 0x4c]
rol eax, 8
add ebx, eax
add ecx, 8
add eax, ebx
mov dword [ecx - 0xc], ebx
rol eax, 9
mov dword [ecx - 8], eax
cmp edi, 0x28282828
jne 0x40d0b2
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x4c]
mov dword [ebp - 0x50], eax
movzx eax, ah
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x50]
shr ebx, 0x18
mov dword [ebp - 0x6c], ebx
shr eax, 0x10
mov byte [ebp - 0x59], al
mov eax, dword [ebp - 0x50]
shr eax, 0x18
mov dword [ebp - 0x58], eax
movzx eax, ch
mov dword [ebp - 0x68], eax
mov eax, ecx
shr eax, 0x10
mov byte [ebp - 0x5a], al
mov eax, ecx
shr eax, 0x18
mov dword [ebp - 0x64], eax
mov eax, edi
movzx eax, ah
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x4c]
movzx eax, ah
mov dword [ebp - 0x74], eax
mov eax, edi
shr eax, 0x10
mov byte [ebp - 0x5c], al
mov eax, dword [ebp - 0x4c]
shr eax, 0x10
mov byte [ebp - 0x5b], al
mov eax, edi
shr eax, 0x18
mov dword [ebp - 0x70], eax
xor eax, eax
mov dl, byte [ebp - 0x50]
xor dl, byte [eax + 0x429fa0]
movzx edx, dl
mov bl, byte [edx + 0x429fa0]
mov dl, byte [ebp - 0x60]
xor dl, byte [eax + 0x429ea0]
xor ebx, ecx
movzx edx, dl
mov byte [ebp - 0x51], bl
mov bl, byte [ebp - 0x68]
xor bl, byte [edx + 0x429fa0]
mov dl, byte [ebp - 0x59]
xor dl, byte [eax + 0x429ea0]
mov byte [ebp - 0x52], bl
movzx edx, dl
mov bl, byte [ebp - 0x5a]
xor bl, byte [edx + 0x429ea0]
mov dl, byte [ebp - 0x58]
xor dl, byte [eax + 0x429fa0]
mov byte [ebp - 0x53], bl
movzx edx, dl
mov bl, byte [ebp - 0x64]
xor bl, byte [edx + 0x429ea0]
movzx edx, byte [ebp - 0x51]
mov byte [ebp - 0x54], bl
mov ebx, edi
xor bl, byte [edx + 0x429ea0]
movzx edx, bl
mov bl, byte [ebp - 0x4c]
xor bl, byte [edx + 0x429ea0]
movzx edx, bl
mov bl, byte [ebp - 0x78]
mov edx, dword [edx*4 + 0x462080]
mov dword [esi + eax*8], edx
movzx edx, byte [ebp - 0x52]
xor bl, byte [edx + 0x429fa0]
movzx edx, bl
mov bl, byte [ebp - 0x74]
xor bl, byte [edx + 0x429ea0]
movzx edx, bl
mov edx, dword [edx*4 + 0x462480]
mov dword [esi + eax*8 + 4], edx
movzx edx, byte [ebp - 0x53]
mov bl, byte [ebp - 0x5c]
xor bl, byte [edx + 0x429ea0]
movzx edx, bl
mov bl, byte [ebp - 0x5b]
xor bl, byte [edx + 0x429fa0]
movzx edx, bl
mov bl, byte [ebp - 0x70]
mov edx, dword [edx*4 + 0x462880]
mov dword [esi + eax*8 + 0x800], edx
movzx edx, byte [ebp - 0x54]
xor bl, byte [edx + 0x429fa0]
movzx edx, bl
mov bl, byte [ebp - 0x6c]
xor bl, byte [edx + 0x429fa0]
movzx edx, bl
mov edx, dword [edx*4 + 0x462c80]
mov dword [esi + eax*8 + 0x804], edx
inc eax
cmp eax, 0x100
jne 0x40d184
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret