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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x783760]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebp + 8], 0
push esi
push edi
mov edi, dword [ebp + 0x14]
mov esi, str.srcciphers_twofish_twofish.c
mov dword [ebp - 0x50], edi
jne 0x5aab99
push 0x164
push esi
push str.key___NULL
call fcn.005accb1
add esp, 0xc
test edi, edi
jne 0x5aabb0
push 0x165
push esi
push str.skey___NULL
call fcn.005accb1
add esp, 0xc
cmp dword [ebp + 0x10], 0x10
je 0x5aabc4
cmp dword [ebp + 0x10], 0
je 0x5aabc4
push 4
pop eax
jmp 0x5ab038
mov ecx, dword [ebp + 0xc]
cmp ecx, 0x10
je 0x5aabda
cmp ecx, 0x18
je 0x5aabda
cmp ecx, 0x20
je 0x5aabda
push 3
jmp 0x5aabbe
mov eax, ecx
cdq
and edx, 7
lea esi, [edx + eax]
sar esi, 3
mov dword [ebp - 0x3c], esi
test ecx, ecx
jle 0x5aabfd
push ecx
push dword [ebp + 8]
lea eax, [ebp - 0x38]
push eax
call fcn.00643300
add esp, 0xc
push ebx
test esi, esi
jle 0x5aac22
lea ebx, [ebp - 0x38]
lea edi, [ebp - 0x18]
push edi
push ebx
call fcn.005ab2e6
pop ecx
add edi, 4
add ebx, 8
pop ecx
sub esi, 1
jne 0x5aac08
mov esi, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x50]
xor edx, edx
lea ecx, [edi + 0x1004]
mov eax, edx
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], eax
mov edi, ecx
mov dword [ebp - 0x3c], ecx
mov bl, al
lea eax, [ebp - 0x38]
push edx
add bl, bl
push esi
push eax
mov cl, bl
lea eax, [ebp - 0x48]
movzx ecx, cl
imul ecx, ecx, 0x1010101
push eax
lea eax, [ebp - 0x3c]
push eax
mov dword [ebp - 0x3c], ecx
call fcn.005ab124
push 4
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x54]
push eax
call fcn.00643300
push 1
push esi
lea ecx, [ebx + 1]
lea eax, [ebp - 0x38]
movzx ecx, cl
push eax
imul ecx, ecx, 0x1010101
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x3c]
push eax
mov dword [ebp - 0x3c], ecx
call fcn.005ab124
push 4
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.00643300
mov edx, dword [ebp - 0x4c]
add esp, 0x40
mov ecx, dword [ebp - 0x54]
rol edx, 8
mov dword [ebp - 0x4c], edx
push 0
lea eax, [edx + ecx]
mov dword [edi - 4], eax
lea eax, [ecx + edx*2]
rol eax, 9
mov dword [edi], eax
lea edi, [edi + 8]
mov eax, dword [ebp - 0x44]
inc eax
mov dword [ebp - 0x44], eax
pop edx
cmp eax, 0x14
jl 0x5aac37
mov edi, dword [ebp - 0x50]
mov dh, byte [ebp - 0x18]
cmp esi, 2
jne 0x5aadc1
add edi, 0x800
xor eax, eax
movzx eax, al
mov dl, byte [eax + 0x712720]
mov bl, byte [eax + 0x712820]
movzx eax, dh
movzx ecx, dl
xor ecx, eax
mov eax, dword [ebp - 0x14]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
movzx eax, byte [ecx + 0x712820]
movzx ecx, bl
mov eax, dword [eax*4 + 0x712920]
mov dword [edi - 0x800], eax
mov eax, dword [ebp - 0x17]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x13]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
movzx eax, byte [ecx + 0x712720]
movzx ecx, dl
mov eax, dword [eax*4 + 0x712d20]
mov dword [edi - 0x400], eax
mov eax, dword [ebp - 0x16]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x12]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
movzx eax, byte [ecx + 0x712820]
movzx ecx, bl
mov eax, dword [eax*4 + 0x713120]
mov dword [edi], eax
lea edi, [edi + 4]
mov eax, dword [ebp - 0x15]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x11]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
movzx eax, byte [ecx + 0x712720]
mov eax, dword [eax*4 + 0x713520]
mov dword [edi + 0x3fc], eax
mov eax, dword [ebp - 0x40]
inc eax
mov dword [ebp - 0x40], eax
cmp eax, 0x100
jl 0x5aace7
jmp 0x5ab035
add edi, 0x800
xor eax, eax
cmp esi, 3
jne 0x5aaee8
movzx eax, al
mov dl, byte [eax + 0x712820]
mov bl, byte [eax + 0x712720]
movzx eax, dh
movzx ecx, dl
xor ecx, eax
mov eax, dword [ebp - 0x14]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
mov eax, dword [ebp - 0x10]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
movzx eax, byte [ecx + 0x712820]
movzx ecx, dl
mov eax, dword [eax*4 + 0x712920]
mov dword [edi - 0x800], eax
mov eax, dword [ebp - 0x17]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x13]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
mov eax, dword [ebp - 0xf]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
movzx eax, byte [ecx + 0x712720]
movzx ecx, bl
mov eax, dword [eax*4 + 0x712d20]
mov dword [edi - 0x400], eax
mov eax, dword [ebp - 0x16]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x12]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
mov eax, dword [ebp - 0xe]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
movzx eax, byte [ecx + 0x712820]
movzx ecx, bl
mov eax, dword [eax*4 + 0x713120]
mov dword [edi], eax
lea edi, [edi + 4]
mov eax, dword [ebp - 0x15]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x11]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
mov eax, dword [ebp - 0xd]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
movzx eax, byte [ecx + 0x712720]
mov eax, dword [eax*4 + 0x713520]
mov dword [edi + 0x3fc], eax
mov eax, dword [ebp - 0x40]
inc eax
mov dword [ebp - 0x40], eax
cmp eax, 0x100
jl 0x5aadd2
jmp 0x5ab035
movzx eax, al
mov bl, byte [eax + 0x712820]
mov dl, byte [eax + 0x712720]
movzx eax, dh
movzx ecx, bl
xor ecx, eax
mov eax, dword [ebp - 0x14]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
mov eax, dword [ebp - 0x10]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
mov eax, dword [ebp - 0xc]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
movzx eax, byte [ecx + 0x712820]
movzx ecx, dl
mov eax, dword [eax*4 + 0x712920]
mov dword [edi - 0x800], eax
mov eax, dword [ebp - 0x17]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x13]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
mov eax, dword [ebp - 0xf]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
mov eax, dword [ebp - 0xb]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
movzx eax, byte [ecx + 0x712720]
movzx ecx, dl
mov eax, dword [eax*4 + 0x712d20]
mov dword [edi - 0x400], eax
mov eax, dword [ebp - 0x16]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x12]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
mov eax, dword [ebp - 0xe]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
mov eax, dword [ebp - 0xa]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
movzx eax, byte [ecx + 0x712820]
movzx ecx, bl
mov eax, dword [eax*4 + 0x713120]
mov dword [edi], eax
mov eax, dword [ebp - 0x15]
movzx eax, al
xor ecx, eax
mov eax, dword [ebp - 0x11]
movzx eax, al
movzx ecx, byte [ecx + 0x712720]
xor ecx, eax
mov eax, dword [ebp - 0xd]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
mov eax, dword [ebp - 9]
movzx eax, al
movzx ecx, byte [ecx + 0x712820]
xor ecx, eax
movzx eax, byte [ecx + 0x712720]
mov eax, dword [eax*4 + 0x713520]
mov dword [edi + 0x400], eax
mov eax, dword [ebp - 0x40]
inc eax
mov dword [ebp - 0x40], eax
lea edi, [edi + 4]
cmp eax, 0x100
jl 0x5aaee8
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.0056e1bf
mov esp, ebp
pop ebp
ret