Function at 0x4049e8
Capabilities:
Encode data using xor
Encrypt data using hc-128

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffedc
mov dword [esp], eax
mov eax, dword [esp]
xor edx, edx
mov dword [eax + 8], edx
mov ebx, dword [esp]
mov ebx, dword [ebx + 0xc]
mov eax, dword [esp]
mov eax, dword [eax + 0x10]
mov dword [esp + 4], eax
mov eax, dword [esp]
mov eax, dword [eax + 0x14]
mov dword [esp + 8], eax
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov dword [esp + 0xc], eax
mov esi, dword [esp]
mov esi, dword [esi + 0x1c]
mov eax, dword [esp]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x10], eax
mov eax, dword [esp]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [esp]
mov eax, dword [eax + 0x28]
mov dword [esp + 0x18], eax
lea edx, [esp + 0x24]
mov eax, dword [esp]
add eax, 0x2c
mov ecx, 0x40
call fcn.0040168c
mov dword [esp + 0x20], 0x10
lea edi, [esp + 0x24]
mov eax, dword [edi]
call fcn.0040493c
mov dword [edi], eax
add edi, 4
dec dword [esp + 0x20]
jne 0x404a65
mov dword [esp + 0x20], 0x30
lea eax, [esp + 0x5c]
mov edx, dword [eax]
shr edx, 0x11
mov ecx, dword [eax]
shl ecx, 0xf
or edx, ecx
mov ecx, dword [eax]
shr ecx, 0x13
mov edi, dword [eax]
shl edi, 0xd
or ecx, edi
xor edx, ecx
mov ecx, dword [eax]
shr ecx, 0xa
xor edx, ecx
add edx, dword [eax - 0x14]
mov ecx, dword [eax - 0x34]
shr ecx, 7
mov edi, dword [eax - 0x34]
shl edi, 0x19
or ecx, edi
mov edi, dword [eax - 0x34]
shr edi, 0x12
mov ebp, dword [eax - 0x34]
shl ebp, 0xe
or edi, ebp
xor ecx, edi
mov edi, dword [eax - 0x34]
shr edi, 3
xor ecx, edi
add edx, ecx
add edx, dword [eax - 0x38]
mov dword [eax + 8], edx
add eax, 4
dec dword [esp + 0x20]
jne 0x404a83
mov dword [esp + 0x20], 0x40
mov eax, 0x409620
lea edx, [esp + 0x24]
mov ecx, esi
shr ecx, 6
mov edi, esi
shl edi, 0x1a
or ecx, edi
mov edi, esi
shr edi, 0xb
mov ebp, esi
shl ebp, 0x15
or edi, ebp
xor ecx, edi
mov edi, esi
shr edi, 0x19
mov ebp, esi
shl ebp, 7
or edi, ebp
xor ecx, edi
add ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
and edi, esi
mov ebp, esi
not ebp
and ebp, dword [esp + 0x14]
xor edi, ebp
add ecx, edi
add ecx, dword [eax]
add ecx, dword [edx]
mov dword [esp + 0x1c], ecx
mov ecx, ebx
shr ecx, 2
mov edi, ebx
shl edi, 0x1e
or ecx, edi
mov edi, ebx
shr edi, 0xd
mov ebp, ebx
shl ebp, 0x13
or edi, ebp
xor ecx, edi
mov edi, ebx
shr edi, 0x16
mov ebp, ebx
shl ebp, 0xa
xor edi, ebp
xor ecx, edi
mov edi, dword [esp + 4]
and edi, ebx
mov ebp, dword [esp + 8]
and ebp, ebx
xor edi, ebp
mov ebp, dword [esp + 4]
and ebp, dword [esp + 8]
xor edi, ebp
add ecx, edi
mov edi, dword [esp + 0x14]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0xc]
add esi, dword [esp + 0x1c]
mov edi, dword [esp + 8]
mov dword [esp + 0xc], edi
mov edi, dword [esp + 4]
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x1c]
add ebx, ecx
add edx, 4
add eax, 4
dec dword [esp + 0x20]
jne 0x404aef
mov eax, dword [esp]
add dword [eax + 0xc], ebx
mov eax, dword [esp]
mov edx, dword [esp + 4]
add dword [eax + 0x10], edx
mov eax, dword [esp]
mov edx, dword [esp + 8]
add dword [eax + 0x14], edx
mov eax, dword [esp]
mov edx, dword [esp + 0xc]
add dword [eax + 0x18], edx
mov eax, dword [esp]
add dword [eax + 0x1c], esi
mov eax, dword [esp]
mov edx, dword [esp + 0x10]
add dword [eax + 0x20], edx
mov eax, dword [esp]
mov edx, dword [esp + 0x14]
add dword [eax + 0x24], edx
mov eax, dword [esp]
mov edx, dword [esp + 0x18]
add dword [eax + 0x28], edx
lea eax, [esp + 0x24]
xor ecx, ecx
mov edx, pe_nt_image_headers32
call fcn.00401784
mov eax, dword [esp]
add eax, 0x2c
xor ecx, ecx
mov edx, 0x40
call fcn.00401784
add esp, 0x124
pop ebp
pop edi
pop esi
pop ebx
ret