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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
push ebx
push esi
push edi
call fcn.004154d0
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x2c]
add esi, 0xc
mov dword [ebp - 4], eax
xor edi, edi
mov ecx, dword [ebx + 4]
mov eax, dword [ebx]
push ecx
push eax
mov dword [ebp + edi - 0x24], eax
mov dword [ebp + edi - 0x14], ecx
call fcn.00415a10
mov ecx, dword [ebp - 4]
mov dword [esi], eax
mov dword [ecx], eax
add edi, 4
sub ecx, 4
add esp, 8
add ebx, 8
sub esi, 4
cmp edi, 0x10
mov dword [ebp - 4], ecx
jl 0x415e72
mov esi, dword [ebp + 0xc]
xor ebx, ebx
add esi, 0x14
mov dword [ebp - 0x3c], 0x14
movzx ecx, bl
mov al, byte [ecx + 0x43c938]
xor al, byte [ebp - 0x18]
mov edx, ebx
shr edx, 8
movzx edx, dl
mov cl, byte [edx + 0x43c838]
xor cl, byte [ebp - 0x17]
movzx ecx, cl
mov cl, byte [ecx + 0x43c938]
xor cl, byte [ebp - 0x1b]
mov edx, ebx
shr edx, 0x10
movzx edx, dl
mov dl, byte [edx + 0x43c838]
xor dl, byte [ebp - 0x16]
movzx eax, al
mov al, byte [eax + 0x43c938]
xor al, byte [ebp - 0x1c]
mov dword [ebp - 4], ebx
mov byte [ebp - 2], dl
mov edx, dword [ebp - 4]
mov byte [ebp - 3], cl
mov ecx, dword [ebp - 4]
shr ecx, 0x10
shr edx, 0x18
mov dl, byte [edx + 0x43c938]
xor dl, byte [ebp - 0x15]
movzx ecx, cl
mov cl, byte [ecx + 0x43c838]
xor cl, byte [ebp - 0x1a]
movzx eax, al
movzx edx, dl
mov dl, byte [edx + 0x43c838]
mov byte [ebp - 2], cl
xor dl, byte [ebp - 0x19]
movzx ecx, byte [eax + 0x43c838]
movzx eax, byte [ebp - 0x20]
xor ecx, eax
movzx ecx, byte [ecx + 0x43c838]
movzx eax, byte [ebp - 0x24]
xor ecx, eax
movzx eax, byte [ebp - 3]
movzx edi, byte [eax + 0x43c938]
movzx eax, byte [ebp - 0x1f]
mov ecx, dword [ecx*4 + 0x43cad0]
xor edi, eax
movzx edi, byte [edi + 0x43c838]
movzx eax, byte [ebp - 0x23]
xor edi, eax
xor ecx, dword [edi*4 + 0x43ced0]
movzx eax, byte [ebp - 2]
movzx edi, byte [eax + 0x43c838]
movzx eax, byte [ebp - 0x1e]
xor edi, eax
movzx edi, byte [edi + 0x43c938]
movzx eax, byte [ebp - 0x22]
xor edi, eax
mov eax, dword [edi*4 + 0x43d2d0]
movzx edx, dl
movzx edx, byte [edx + 0x43c938]
xor ecx, eax
movzx eax, byte [ebp - 0x1d]
xor edx, eax
movzx edx, byte [edx + 0x43c938]
movzx eax, byte [ebp - 0x21]
xor edx, eax
mov edi, dword [edx*4 + 0x43d6d0]
lea eax, [ebx + 0x1010101]
movzx edx, al
mov dword [ebp - 4], eax
mov al, byte [edx + 0x43c938]
mov dl, byte [ebp - 8]
xor ecx, edi
xor al, dl
mov byte [ebp - 4], al
mov eax, dword [ebp - 4]
shr eax, 8
movzx eax, al
mov al, byte [eax + 0x43c838]
xor al, byte [ebp - 7]
mov byte [ebp - 3], al
mov edx, dword [ebp - 4]
shr edx, 0x10
movzx edx, dl
mov al, byte [edx + 0x43c838]
xor al, byte [ebp - 6]
mov byte [ebp - 2], al
mov eax, dword [ebp - 4]
mov dl, byte [ebp - 5]
shr eax, 0x18
mov al, byte [eax + 0x43c938]
xor al, dl
movzx edx, byte [ebp - 4]
mov byte [ebp - 1], al
mov al, byte [edx + 0x43c938]
xor al, byte [ebp - 0xc]
mov dl, byte [ebp - 0xb]
mov byte [ebp - 4], al
mov eax, dword [ebp - 4]
shr eax, 8
movzx eax, al
mov al, byte [eax + 0x43c938]
xor al, dl
movzx edx, byte [ebp - 2]
mov byte [ebp - 3], al
mov al, byte [edx + 0x43c838]
xor al, byte [ebp - 0xa]
mov dl, byte [ebp - 9]
mov byte [ebp - 2], al
movzx eax, byte [ebp - 1]
mov al, byte [eax + 0x43c838]
xor al, dl
movzx edx, al
movzx edx, byte [edx + 0x43c938]
movzx eax, byte [ebp - 0xd]
xor edx, eax
movzx edx, byte [edx + 0x43c938]
movzx eax, byte [ebp - 0x11]
xor edx, eax
movzx eax, byte [ebp - 4]
movzx edi, byte [eax + 0x43c838]
movzx eax, byte [ebp - 0x10]
xor edi, eax
movzx edi, byte [edi + 0x43c838]
movzx eax, byte [ebp - 0x14]
xor edi, eax
mov eax, dword [edx*4 + 0x43d6d0]
xor eax, dword [edi*4 + 0x43cad0]
movzx edx, byte [ebp - 3]
movzx edi, byte [edx + 0x43c938]
movzx edx, byte [ebp - 0xf]
xor edi, edx
movzx edi, byte [edi + 0x43c838]
movzx edx, byte [ebp - 0x13]
xor edi, edx
xor eax, dword [edi*4 + 0x43ced0]
movzx edx, byte [ebp - 2]
movzx edi, byte [edx + 0x43c838]
movzx edx, byte [ebp - 0xe]
xor edi, edx
movzx edi, byte [edi + 0x43c938]
movzx edx, byte [ebp - 0x12]
xor edi, edx
xor eax, dword [edi*4 + 0x43d2d0]
mov edx, eax
shl eax, 8
shr edx, 0x18
or edx, eax
lea eax, [edx + ecx]
mov dword [esi - 4], eax
lea eax, [ecx + edx*2]
mov ecx, eax
shl eax, 9
shr ecx, 0x17
or ecx, eax
mov eax, dword [ebp - 0x3c]
mov dword [esi], ecx
add esi, 8
add ebx, 0x2020202
dec eax
mov dword [ebp - 0x3c], eax
jne 0x415eb3
mov edx, dword [ebp - 0x2c]
push edx
lea eax, [ebp - 0x23c]
push 0x43c938
push eax
call fcn.00415b70
add esp, 0xc
xor eax, eax
jmp 0x416150
movzx ecx, byte [ebp + eax - 0x23c]
mov dl, byte [ecx + 0x43c938]
movzx ecx, byte [ebp + eax - 0x23b]
mov byte [ebp + eax - 0x13c], dl
mov dl, byte [ecx + 0x43c938]
mov byte [ebp + eax - 0x13b], dl
add eax, 2
cmp eax, 0x100
jl 0x416150
mov eax, dword [ebp - 0x30]
push eax
lea ecx, [ebp - 0x13c]
push ecx
mov edx, ecx
push edx
call fcn.00415b70
mov edi, dword [ebp + 0xc]
movzx edx, byte [ebp - 0x38]
movzx esi, byte [ebp - 0x34]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xb8]
lea ecx, [ecx]
movzx ebx, byte [ebp + eax - 0x13c]
movzx ebx, byte [ebx + 0x43c838]
xor ebx, esi
movzx ebx, byte [ebx + 0x43c838]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x43cad0]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x13b]
movzx ebx, byte [ebx + 0x43c838]
xor ebx, esi
movzx ebx, byte [ebx + 0x43c838]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x43cad0]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x4161b0
mov eax, dword [ebp - 0x2b]
push eax
lea ecx, [ebp - 0x23c]
push 0x43c838
push ecx
call fcn.00415b70
add esp, 0xc
xor eax, eax
mov edi, edi
movzx edx, byte [ebp + eax - 0x23c]
mov cl, byte [edx + 0x43c938]
movzx edx, byte [ebp + eax - 0x23b]
mov byte [ebp + eax - 0x13c], cl
mov cl, byte [edx + 0x43c938]
mov byte [ebp + eax - 0x13b], cl
add eax, 2
cmp eax, 0x100
jl 0x416220
mov edx, dword [ebp - 0x2f]
push edx
lea eax, [ebp - 0x13c]
push eax
mov ecx, eax
push ecx
call fcn.00415b70
movzx edx, byte [ebp - 0x37]
movzx esi, byte [ebp - 0x33]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xbc]
lea ebx, [ebx]
movzx ebx, byte [ebp + eax - 0x13c]
movzx ebx, byte [ebx + 0x43c938]
xor ebx, esi
movzx ebx, byte [ebx + 0x43c838]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x43ced0]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x13b]
movzx ebx, byte [ebx + 0x43c938]
xor ebx, esi
movzx ebx, byte [ebx + 0x43c838]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x43ced0]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x416280
mov edx, dword [ebp - 0x2a]
push edx
lea eax, [ebp - 0x23c]
push 0x43c838
push eax
call fcn.00415b70
add esp, 0xc
xor eax, eax
mov edi, edi
movzx ecx, byte [ebp + eax - 0x23c]
mov dl, byte [ecx + 0x43c838]
movzx ecx, byte [ebp + eax - 0x23b]
mov byte [ebp + eax - 0x13c], dl
mov dl, byte [ecx + 0x43c838]
mov byte [ebp + eax - 0x13b], dl
add eax, 2
cmp eax, 0x100
jl 0x4162f0
mov eax, dword [ebp - 0x2e]
push eax
lea ecx, [ebp - 0x13c]
push ecx
mov edx, ecx
push edx
call fcn.00415b70
movzx edx, byte [ebp - 0x36]
movzx esi, byte [ebp - 0x32]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8b8]
lea ebx, [ebx]
movzx ebx, byte [ebp + eax - 0x13c]
movzx ebx, byte [ebx + 0x43c838]
xor ebx, esi
movzx ebx, byte [ebx + 0x43c938]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x43d2d0]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x13b]
movzx ebx, byte [ebx + 0x43c838]
xor ebx, esi
movzx ebx, byte [ebx + 0x43c938]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x43d2d0]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x416350
mov eax, dword [ebp - 0x29]
push eax
lea ecx, [ebp - 0x23c]
push 0x43c938
push ecx
call fcn.00415b70
add esp, 0xc
xor eax, eax
mov edi, edi
movzx edx, byte [ebp + eax - 0x23c]
mov cl, byte [edx + 0x43c838]
movzx edx, byte [ebp + eax - 0x23b]
mov byte [ebp + eax - 0x13c], cl
mov cl, byte [edx + 0x43c838]
mov byte [ebp + eax - 0x13b], cl
add eax, 2
cmp eax, 0x100
jl 0x4163c0
mov edx, dword [ebp - 0x2d]
push edx
lea eax, [ebp - 0x13c]
push eax
mov ecx, eax
push ecx
call fcn.00415b70
movzx edx, byte [ebp - 0x35]
movzx esi, byte [ebp - 0x31]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8bc]
lea ebx, [ebx]
movzx edi, byte [ebp + eax - 0x13c]
movzx edi, byte [edi + 0x43c938]
xor edi, esi
movzx edi, byte [edi + 0x43c938]
xor edi, edx
mov edi, dword [edi*4 + 0x43d6d0]
mov dword [ecx - 8], edi
movzx edi, byte [ebp + eax - 0x13b]
movzx edi, byte [edi + 0x43c938]
xor edi, esi
movzx edi, byte [edi + 0x43c938]
xor edi, edx
mov edi, dword [edi*4 + 0x43d6d0]
mov dword [ecx], edi
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x416420
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret