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

Disassembly:
push ebp
lea ebp, [esp - 0x1d4]
sub esp, 0x254
mov eax, dword [0x4a2190]
push ebx
push esi
push edi
xor esi, esi
xor edi, edi
cmp dword [0x4a0610], esi
mov dword [ebp + 0x1d0], eax
je 0x4510b8
call fcn.00450c2f
mov ebx, dword [ebp + 0x1dc]
mov eax, dword [ebx + 0x50]
lea eax, [eax + eax + 8]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebx + 4]
mov dword [ebp - 0x80], eax
add eax, 0x3f
push 0x40
cdq
pop ecx
idiv ecx
and dword [ebp - 0x34], 0
test eax, eax
mov dword [ebp - 0x50], eax
jle 0x451136
lea ecx, [ebp + eax*4 - 0x4c]
lea eax, [ebx + eax*4 + 0x70]
mov dword [ebp - 0x58], eax
lea eax, [ebx + 0x58]
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x4c], eax
mov edx, dword [ebp - 0x4c]
mov ecx, dword [edx - 4]
mov edx, dword [edx]
mov eax, dword [ebp - 0x34]
shl eax, 2
push edx
push ecx
mov dword [ebp + eax - 0x78], ecx
mov dword [ebp + eax - 0x68], edx
call fcn.00450bb1
inc dword [ebp - 0x34]
add dword [ebp - 0x4c], 8
pop ecx
pop ecx
mov ecx, dword [ebp - 0x58]
sub dword [ebp - 0x58], 4
mov dword [ecx], eax
mov ecx, dword [ebp - 0x54]
sub dword [ebp - 0x54], 4
mov dword [ecx], eax
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x50]
jl 0x4510f6
mov eax, dword [ebp - 0x7c]
and dword [ebp - 0x4c], 0
cdq
sub eax, edx
sar eax, 1
test eax, eax
jle 0x4513ea
mov ecx, dword [ebp - 0x50]
and ecx, 3
mov dword [ebp - 0x50], ecx
lea ecx, [ebx + 0x88]
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x50]
sub eax, 0
je 0x4511b7
dec eax
dec eax
je 0x4511f0
dec eax
jne 0x45128a
mov al, byte [ebp - 0x31]
mov cl, byte [ebp - 0x32]
mov dl, byte [ebp - 0x34]
movzx edx, dl
mov dl, byte [edx + 0x4a0510]
xor dl, byte [ebp - 0x70]
movzx ecx, cl
mov cl, byte [ecx + 0x4a0410]
xor cl, byte [ebp - 0x6e]
mov byte [ebp - 0x34], dl
movzx edx, byte [ebp - 0x33]
mov dl, byte [edx + 0x4a0510]
xor dl, byte [ebp - 0x6f]
movzx eax, al
mov al, byte [eax + 0x4a0410]
xor al, byte [ebp - 0x6d]
jmp 0x4511f9
movzx eax, byte [ebp - 0x4c]
mov dl, byte [eax + 0x4a0510]
movzx eax, byte [ebp - 0x33]
mov al, byte [eax + 0x4a0410]
xor al, byte [ebp - 0x6b]
xor dl, byte [ebp - 0x6c]
mov byte [ebp - 0x33], al
movzx eax, byte [ebp - 0x32]
mov cl, byte [eax + 0x4a0410]
movzx eax, byte [ebp - 0x31]
mov al, byte [eax + 0x4a0510]
xor cl, byte [ebp - 0x6a]
xor al, byte [ebp - 0x69]
jmp 0x451181
mov al, byte [ebp - 0x31]
mov cl, byte [ebp - 0x32]
mov dl, byte [ebp - 0x33]
movzx edi, byte [ebp - 0x71]
movzx eax, al
movzx eax, byte [eax + 0x4a0510]
xor eax, edi
movzx eax, byte [eax + 0x4a0510]
movzx edi, byte [ebp - 0x75]
xor eax, edi
movzx edi, byte [ebp - 0x72]
movzx ecx, cl
movzx ecx, byte [ecx + 0x4a0410]
xor ecx, edi
movzx ecx, byte [ecx + 0x4a0510]
movzx edi, byte [ebp - 0x76]
xor ecx, edi
mov edi, dword [eax*4 + 0x4a6ce0]
xor edi, dword [ecx*4 + 0x4a68e0]
movzx ecx, byte [ebp - 0x73]
movzx eax, dl
movzx eax, byte [eax + 0x4a0510]
xor eax, ecx
movzx eax, byte [eax + 0x4a0410]
movzx ecx, byte [ebp - 0x77]
xor eax, ecx
xor edi, dword [eax*4 + 0x4a64e0]
movzx eax, byte [ebp - 0x34]
movzx eax, byte [eax + 0x4a0410]
movzx ecx, byte [ebp - 0x74]
xor eax, ecx
movzx eax, byte [eax + 0x4a0410]
movzx ecx, byte [ebp - 0x78]
xor eax, ecx
xor edi, dword [eax*4 + 0x4a60e0]
mov eax, dword [ebp - 0x4c]
add eax, 0x1010101
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x50]
sub eax, 0
je 0x4512e6
dec eax
dec eax
je 0x45131c
dec eax
jne 0x4513be
mov al, byte [ebp - 0x31]
mov cl, byte [ebp - 0x32]
mov dl, byte [ebp - 0x33]
mov bl, byte [ebp - 0x34]
movzx esi, bl
mov bl, byte [esi + 0x4a0510]
xor bl, byte [ebp - 0x60]
movzx edx, dl
mov dl, byte [edx + 0x4a0510]
xor dl, byte [ebp - 0x5f]
movzx ecx, cl
mov cl, byte [ecx + 0x4a0410]
xor cl, byte [ebp - 0x5e]
movzx eax, al
mov al, byte [eax + 0x4a0410]
xor al, byte [ebp - 0x5d]
jmp 0x451328
movzx eax, byte [ebp - 0x34]
mov bl, byte [eax + 0x4a0510]
movzx eax, byte [ebp - 0x33]
mov dl, byte [eax + 0x4a0410]
movzx eax, byte [ebp - 0x32]
mov cl, byte [eax + 0x4a0410]
movzx eax, byte [ebp - 0x31]
mov al, byte [eax + 0x4a0510]
xor bl, byte [ebp - 0x5c]
xor dl, byte [ebp - 0x5b]
xor cl, byte [ebp - 0x5a]
xor al, byte [ebp - 0x59]
jmp 0x4512b4
mov al, byte [ebp - 0x31]
mov cl, byte [ebp - 0x32]
mov dl, byte [ebp - 0x33]
mov bl, byte [ebp - 0x34]
movzx esi, byte [ebp - 0x61]
movzx eax, al
movzx eax, byte [eax + 0x4a0510]
xor eax, esi
movzx eax, byte [eax + 0x4a0510]
movzx esi, byte [ebp - 0x65]
xor eax, esi
movzx esi, byte [ebp - 0x62]
movzx ecx, cl
movzx ecx, byte [ecx + 0x4a0410]
xor ecx, esi
movzx ecx, byte [ecx + 0x4a0510]
movzx esi, byte [ebp - 0x66]
xor ecx, esi
mov esi, dword [eax*4 + 0x4a6ce0]
xor esi, dword [ecx*4 + 0x4a68e0]
movzx ecx, byte [ebp - 0x63]
movzx eax, dl
movzx eax, byte [eax + 0x4a0510]
xor eax, ecx
movzx eax, byte [eax + 0x4a0410]
movzx ecx, byte [ebp - 0x67]
xor eax, ecx
xor esi, dword [eax*4 + 0x4a64e0]
movzx ecx, byte [ebp - 0x64]
movzx eax, bl
movzx eax, byte [eax + 0x4a0410]
mov ebx, dword [ebp + 0x1dc]
xor eax, ecx
movzx eax, byte [eax + 0x4a0410]
movzx ecx, byte [ebp - 0x68]
xor eax, ecx
xor esi, dword [eax*4 + 0x4a60e0]
mov eax, dword [ebp - 0x54]
add dword [ebp - 0x4c], 0x2020202
rol esi, 8
lea ecx, [esi + edi]
mov dword [eax - 4], ecx
lea esi, [edi + esi*2]
mov ecx, esi
rol ecx, 9
mov dword [eax], ecx
add eax, 8
dec dword [ebp - 0x58]
mov dword [ebp - 0x54], eax
jne 0x45115f
mov eax, dword [ebp - 0x80]
sub eax, 0x80
je 0x451916
sub eax, 0x40
je 0x451708
sub eax, 0x40
jne 0x451ab2
push dword [ebp - 0x3c]
lea eax, [ebp - 0x30]
push 0x4a0510
push eax
call fcn.00450db7
add esp, 0xc
xor eax, eax
mov esi, 0x100
movzx ecx, byte [ebp + eax - 0x30]
mov cl, byte [ecx + 0x4a0510]
mov byte [ebp + eax + 0xd0], cl
movzx ecx, byte [ebp + eax - 0x2f]
mov cl, byte [ecx + 0x4a0510]
mov byte [ebp + eax + 0xd1], cl
inc eax
inc eax
cmp eax, esi
jl 0x451425
push dword [ebp - 0x40]
lea eax, [ebp + 0xd0]
push eax
push eax
call fcn.00450db7
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x12c]
movzx edx, byte [ebp + ecx + 0xd0]
movzx edi, byte [edx + 0x4a0410]
movzx edx, byte [ebp - 0x44]
xor edi, edx
movzx edi, byte [edi + 0x4a0410]
movzx edx, byte [ebp - 0x48]
xor edi, edx
mov edx, dword [edi*4 + 0x4a60e0]
mov dword [eax - 8], edx
movzx edx, byte [ebp + ecx + 0xd1]
movzx edi, byte [edx + 0x4a0410]
movzx edx, byte [ebp - 0x44]
xor edi, edx
movzx edi, byte [edi + 0x4a0410]
movzx edx, byte [ebp - 0x48]
xor edi, edx
mov edx, dword [edi*4 + 0x4a60e0]
inc ecx
mov dword [eax], edx
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x45146a
push dword [ebp - 0x3b]
mov edi, 0x4a0410
lea eax, [ebp - 0x30]
push edi
push eax
call fcn.00450db7
add esp, 0xc
xor eax, eax
movzx ecx, byte [ebp + eax - 0x30]
mov cl, byte [ecx + 0x4a0510]
mov byte [ebp + eax + 0xd0], cl
movzx ecx, byte [ebp + eax - 0x2f]
mov cl, byte [ecx + 0x4a0510]
mov byte [ebp + eax + 0xd1], cl
inc eax
inc eax
cmp eax, esi
jl 0x4514e1
push dword [ebp - 0x3f]
lea eax, [ebp + 0xd0]
push eax
push eax
call fcn.00450db7
add esp, 0xc
and dword [ebp - 0x34], 0
lea eax, [ebx + 0x130]
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ebp + ecx + 0xd0]
movzx edx, byte [ecx + 0x4a0510]
movzx ecx, byte [ebp - 0x43]
xor edx, ecx
movzx edx, byte [edx + 0x4a0410]
movzx ecx, byte [ebp - 0x47]
xor edx, ecx
mov ecx, dword [edx*4 + 0x4a64e0]
mov dword [eax - 8], ecx
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ebp + ecx + 0xd1]
movzx edx, byte [ecx + 0x4a0510]
movzx ecx, byte [ebp - 0x43]
add dword [ebp - 0x34], 2
xor edx, ecx
movzx edx, byte [edx + 0x4a0410]
movzx ecx, byte [ebp - 0x47]
xor edx, ecx
mov ecx, dword [edx*4 + 0x4a64e0]
mov dword [eax], ecx
add eax, 0x10
cmp dword [ebp - 0x34], esi
jl 0x451528
push dword [ebp - 0x3a]
lea eax, [ebp - 0x30]
push edi
push eax
call fcn.00450db7
add esp, 0xc
xor eax, eax
movzx ecx, byte [ebp + eax - 0x30]
mov cl, byte [ecx + 0x4a0410]
mov byte [ebp + eax + 0xd0], cl
movzx ecx, byte [ebp + eax - 0x2f]
mov cl, byte [ecx + 0x4a0410]
mov byte [ebp + eax + 0xd1], cl
inc eax
inc eax
cmp eax, esi
jl 0x4515a3
push dword [ebp - 0x3e]
lea eax, [ebp + 0xd0]
push eax
push eax
call fcn.00450db7
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x92c]
movzx edx, byte [ebp + ecx + 0xd0]
movzx edi, byte [edx + 0x4a0410]
movzx edx, byte [ebp - 0x42]
xor edi, edx
movzx edi, byte [edi + 0x4a0510]
movzx edx, byte [ebp - 0x46]
xor edi, edx
mov edx, dword [edi*4 + 0x4a68e0]
mov dword [eax - 8], edx
movzx edx, byte [ebp + ecx + 0xd1]
movzx edi, byte [edx + 0x4a0410]
movzx edx, byte [ebp - 0x42]
xor edi, edx
movzx edi, byte [edi + 0x4a0510]
movzx edx, byte [ebp - 0x46]
xor edi, edx
mov edx, dword [edi*4 + 0x4a68e0]
inc ecx
mov dword [eax], edx
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x4515e8
push dword [ebp - 0x39]
lea eax, [ebp - 0x30]
push 0x4a0510
push eax
call fcn.00450db7
add esp, 0xc
xor eax, eax
movzx ecx, byte [ebp + eax - 0x30]
mov cl, byte [ecx + 0x4a0410]
mov byte [ebp + eax + 0xd0], cl
movzx ecx, byte [ebp + eax - 0x2f]
mov cl, byte [ecx + 0x4a0410]
mov byte [ebp + eax + 0xd1], cl
inc eax
inc eax
cmp eax, esi
jl 0x45165e
push dword [ebp - 0x3d]
lea eax, [ebp + 0xd0]
push eax
push eax
call fcn.00450db7
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x930]
movzx edx, byte [ebp + ecx + 0xd0]
movzx edi, byte [edx + 0x4a0510]
movzx edx, byte [ebp - 0x41]
xor edi, edx
movzx edi, byte [edi + 0x4a0510]
movzx edx, byte [ebp - 0x45]
xor edi, edx
mov edx, dword [edi*4 + 0x4a6ce0]
mov dword [eax - 8], edx
movzx edx, byte [ebp + ecx + 0xd1]
movzx edi, byte [edx + 0x4a0510]
movzx edx, byte [ebp - 0x41]
xor edi, edx
movzx edi, byte [edi + 0x4a0510]
movzx edx, byte [ebp - 0x45]
xor edi, edx
mov edx, dword [edi*4 + 0x4a6ce0]
inc ecx
mov dword [eax], edx
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x4516a3
jmp 0x451ab2
push dword [ebp - 0x40]
lea eax, [ebp + 0xd0]
push 0x4a0510
push eax
call fcn.00450db7
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x12c]
mov esi, 0x100
movzx edx, byte [ebp + ecx + 0xd0]
movzx edi, byte [edx + 0x4a0410]
movzx edx, byte [ebp - 0x44]
xor edi, edx
movzx edi, byte [edi + 0x4a0410]
movzx edx, byte [ebp - 0x48]
xor edi, edx
mov edx, dword [edi*4 + 0x4a60e0]
mov dword [eax - 8], edx
movzx edx, byte [ebp + ecx + 0xd1]
movzx edi, byte [edx + 0x4a0410]
movzx edx, byte [ebp - 0x44]
xor edi, edx
movzx edi, byte [edi + 0x4a0410]
movzx edx, byte [ebp - 0x48]
xor edi, edx
mov edx, dword [edi*4 + 0x4a60e0]
inc ecx
mov dword [eax], edx
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x45172c
push dword [ebp - 0x3f]
lea eax, [ebp + 0xd0]
push 0x4a0510
push eax
call fcn.00450db7
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x130]
movzx edx, byte [ebp + ecx + 0xd0]
movzx edi, byte [edx + 0x4a0510]
movzx edx, byte [ebp - 0x43]
xor edi, edx
movzx edi, byte [edi + 0x4a0410]
movzx edx, byte [ebp - 0x47]
xor edi, edx
mov edx, dword [edi*4 + 0x4a64e0]
mov dword [eax - 8], edx
movzx edx, byte [ebp + ecx + 0xd1]
movzx edi, byte [edx + 0x4a0510]
movzx edx, byte [ebp - 0x43]
xor edi, edx
movzx edi, byte [edi + 0x4a0410]
movzx edx, byte [ebp - 0x47]
xor edi, edx
mov edx, dword [edi*4 + 0x4a64e0]
inc ecx
mov dword [eax], edx
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x4517ab
push dword [ebp - 0x3e]
mov edi, 0x4a0410
lea eax, [ebp + 0xd0]
push edi
push eax
call fcn.00450db7
add esp, 0xc
and dword [ebp - 0x34], 0
lea eax, [ebx + 0x92c]
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ebp + ecx + 0xd0]
movzx edx, byte [ecx + 0x4a0410]
movzx ecx, byte [ebp - 0x42]
xor edx, ecx
movzx edx, byte [edx + 0x4a0510]
movzx ecx, byte [ebp - 0x46]
xor edx, ecx
mov ecx, dword [edx*4 + 0x4a68e0]
mov dword [eax - 8], ecx
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ebp + ecx + 0xd1]
movzx edx, byte [ecx + 0x4a0410]
movzx ecx, byte [ebp - 0x42]
add dword [ebp - 0x34], 2
xor edx, ecx
movzx edx, byte [edx + 0x4a0510]
movzx ecx, byte [ebp - 0x46]
xor edx, ecx
mov ecx, dword [edx*4 + 0x4a68e0]
mov dword [eax], ecx
add eax, 0x10
cmp dword [ebp - 0x34], esi
jl 0x45182d
push dword [ebp - 0x3d]
lea eax, [ebp + 0xd0]
push edi
push eax
call fcn.00450db7
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x930]
movzx edx, byte [ebp + ecx + 0xd0]
movzx edi, byte [edx + 0x4a0510]
movzx edx, byte [ebp - 0x41]
xor edi, edx
movzx edi, byte [edi + 0x4a0510]
movzx edx, byte [ebp - 0x45]
xor edi, edx
mov edx, dword [edi*4 + 0x4a6ce0]
mov dword [eax - 8], edx
movzx edx, byte [ebp + ecx + 0xd1]
movzx edi, byte [edx + 0x4a0510]
movzx edx, byte [ebp - 0x41]
xor edi, edx
movzx edi, byte [edi + 0x4a0510]
movzx edx, byte [ebp - 0x45]
xor edi, edx
mov edx, dword [edi*4 + 0x4a6ce0]
inc ecx
mov dword [eax], edx
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x4518b1
jmp 0x451ab2
push dword [ebp - 0x44]
mov edi, 0x4a0410
lea eax, [ebp + 0xd0]
push edi
push eax
call fcn.00450db7
movzx ecx, byte [ebp - 0x48]
add esp, 0xc
and dword [ebp - 0x34], 0
lea eax, [ebx + 0x12c]
mov esi, 0x100
mov edx, dword [ebp - 0x34]
movzx edx, byte [ebp + edx + 0xd0]
movzx edx, byte [edx + 0x4a0410]
xor edx, ecx
mov edx, dword [edx*4 + 0x4a60e0]
mov dword [eax - 8], edx
mov edx, dword [ebp - 0x34]
movzx edx, byte [ebp + edx + 0xd1]
movzx edx, byte [edx + 0x4a0410]
add dword [ebp - 0x34], 2
xor edx, ecx
mov edx, dword [edx*4 + 0x4a60e0]
mov dword [eax], edx
add eax, 0x10
cmp dword [ebp - 0x34], esi
jl 0x451941
push dword [ebp - 0x43]
lea eax, [ebp + 0xd0]
push 0x4a0510
push eax
call fcn.00450db7
movzx ecx, byte [ebp - 0x47]
add esp, 0xc
and dword [ebp - 0x34], 0
lea eax, [ebx + 0x130]
mov edx, dword [ebp - 0x34]
movzx edx, byte [ebp + edx + 0xd0]
movzx edx, byte [edx + 0x4a0410]
xor edx, ecx
mov edx, dword [edx*4 + 0x4a64e0]
mov dword [eax - 8], edx
mov edx, dword [ebp - 0x34]
movzx edx, byte [ebp + edx + 0xd1]
movzx edx, byte [edx + 0x4a0410]
add dword [ebp - 0x34], 2
xor edx, ecx
mov edx, dword [edx*4 + 0x4a64e0]
mov dword [eax], edx
add eax, 0x10
cmp dword [ebp - 0x34], esi
jl 0x4519ad
push dword [ebp - 0x42]
lea eax, [ebp + 0xd0]
push edi
push eax
call fcn.00450db7
movzx edx, byte [ebp - 0x46]
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x92c]
movzx edi, byte [ebp + ecx + 0xd0]
movzx edi, byte [edi + 0x4a0510]
xor edi, edx
mov edi, dword [edi*4 + 0x4a68e0]
mov dword [eax - 8], edi
movzx edi, byte [ebp + ecx + 0xd1]
movzx edi, byte [edi + 0x4a0510]
xor edi, edx
mov edi, dword [edi*4 + 0x4a68e0]
inc ecx
mov dword [eax], edi
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x451a13
push dword [ebp - 0x41]
lea eax, [ebp + 0xd0]
push 0x4a0510
push eax
call fcn.00450db7
movzx edx, byte [ebp - 0x45]
add esp, 0xc
xor ecx, ecx
lea eax, [ebx + 0x930]
movzx edi, byte [ebp + ecx + 0xd0]
movzx edi, byte [edi + 0x4a0510]
xor edi, edx
mov edi, dword [edi*4 + 0x4a6ce0]
mov dword [eax - 8], edi
movzx edi, byte [ebp + ecx + 0xd1]
movzx edi, byte [edi + 0x4a0510]
xor edi, edx
mov edi, dword [edi*4 + 0x4a6ce0]
inc ecx
mov dword [eax], edi
inc ecx
add eax, 0x10
cmp ecx, esi
jl 0x451a74
cmp byte [ebx], 0
jne 0x451ac1
push 0
push ebx
call fcn.00450d77
pop ecx
pop ecx
mov ecx, dword [ebp + 0x1d0]
pop edi
xor eax, eax
pop esi
inc eax
pop ebx
call fcn.00464bee
add ebp, 0x1d4
leave
ret