Function at 0x45c860
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a6e35
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xc8
mov eax, dword [0x4da018]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
cmp dword [edi], 1
mov eax, dword [ebx + 8]
mov esi, dword [ebx + 0x10]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x48], esi
jne 0x45ca42
test eax, eax
je 0x45ca62
cmp dword [ebx + 0xc], 0
jne 0x45c8f7
push str.src_was_null.
lea ecx, [ebp - 0x7c]
call fcn.00403040
push str.CtrModeImpl::crypt__
lea ecx, [ebp - 0x64]
mov dword [ebp - 4], 2
call fcn.00403040
lea eax, [ebp - 0x7c]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0x64]
jmp 0x45ca8e
test esi, esi
jne 0x45c93d
push str.size_was_0.
lea ecx, [ebp - 0x7c]
call fcn.00403040
push str.CtrModeImpl::crypt__
lea ecx, [ebp - 0x64]
mov dword [ebp - 4], 4
call fcn.00403040
lea eax, [ebp - 0x7c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x64]
push eax
lea ecx, [ebp - 0xd8]
call fcn.00433f80
push 0x4d8ce0
jmp 0x45ca9f
push dword [ebx + 0x18]
xorps xmm0, xmm0
lea ecx, [ebp - 0x34]
push dword [ebx + 0x14]
movups xmmword [ebp - 0x24], xmm0
movups xmm0, xmmword [edi + 0xc]
movups xmmword [ebp - 0x34], xmm0
call fcn.0045b8a0
mov ecx, esi
add esp, 8
shr ecx, 4
mov dword [ebp - 0x4c], ecx
test ecx, ecx
je 0x45c9f2
mov edx, dword [ebx + 0xc]
mov eax, edx
mov esi, dword [ebp - 0x3c]
add esi, 8
mov dword [ebp - 0x38], eax
sub edx, dword [ebp - 0x3c]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x40], ecx
cmp dword [edi + 4], 1
jne 0x45c9a8
mov ecx, dword [edi + 8]
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x34]
mov edx, 1
push eax
call fcn.0047d480
mov eax, dword [ebp - 0x38]
add esp, 8
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x24]
xor ecx, dword [eax]
mov eax, dword [eax + 4]
xor eax, dword [ebp - 0x20]
mov dword [esi - 8], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [esi - 4], eax
xor ecx, dword [edx + esi]
mov eax, dword [edx + esi + 4]
xor eax, dword [ebp - 0x18]
mov dword [esi], ecx
lea ecx, [ebp - 0x34]
push 0
push 1
mov dword [esi + 4], eax
call fcn.0045b8a0
mov eax, dword [ebp - 0x38]
add esp, 8
mov edx, dword [ebp - 0x44]
add eax, 0x10
add esi, 0x10
mov dword [ebp - 0x38], eax
sub dword [ebp - 0x40], 1
jne 0x45c984
mov esi, dword [ebp - 0x48]
and esi, 0xf
jbe 0x45ca42
cmp dword [edi + 4], 1
jne 0x45ca15
mov ecx, dword [edi + 8]
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x34]
mov edx, 1
push eax
call fcn.0047d480
add esp, 8
mov eax, dword [ebp - 0x4c]
mov edx, eax
mov edi, dword [ebp - 0x3c]
shl edx, 4
add edx, dword [ebx + 0xc]
shl eax, 4
add edi, eax
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x24]
lea edx, [edx + 1]
xor al, byte [edx - 1]
mov byte [edi + ecx], al
inc ecx
cmp ecx, esi
jb 0x45ca30
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004891fb
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x14
push str.dst_was_null.
lea ecx, [ebp - 0x64]
call fcn.00403040
push str.CtrModeImpl::crypt__
lea ecx, [ebp - 0x7c]
mov dword [ebp - 4], 0
call fcn.00403040
lea eax, [ebp - 0x64]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0xd8]
call fcn.00435050
push 0x4d8d50
lea eax, [ebp - 0xd8]
push eax
call fcn.0048ab6b
int3