Function at 0x442120
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
mov eax, dword [0x45b480]
xor eax, esp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
push ebx
mov ebx, dword [esp + 0x44]
add ecx, 0xa
mov dword [esp + 0xc], eax
push ebp
mov ebp, dword [esp + 0x4c]
mov eax, ecx
and eax, 0x8000000f
mov dword [esp + 0xc], ebp
jns 0x442159
dec eax
or eax, 0xfffffff0
inc eax
mov dword [esp + 8], eax
je 0x44216c
mov edx, 0x10
sub edx, eax
mov dword [esp + 8], edx
mov eax, edx
add eax, ecx
cmp dword [ebp], eax
jge 0x442187
pop ebp
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.0042cb12
add esp, 0x30
ret
push esi
push edi
call fcn.00442cad
mov ecx, eax
mov eax, dword [esp + 0x10]
and cl, 0xf0
or cl, al
mov byte [esp + 0x1c], cl
mov edi, 1
test eax, eax
je 0x4421bb
dec dword [esp + 0x10]
call fcn.00442cad
mov byte [esp + edi + 0x1c], al
inc edi
cmp dword [esp + 0x10], 0
jne 0x4421a6
xor eax, eax
mov dword [ebp], eax
lea ebp, [esp + 0x2d]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
lea esi, [esp + 0x2c]
mov dword [esp + 0x10], 1
sub ebp, ebx
cmp edi, 0x10
jge 0x4421f8
call fcn.00442cad
inc dword [esp + 0x10]
mov byte [esp + edi + 0x1c], al
inc edi
cmp edi, 0x10
jne 0x4422a8
mov edi, esi
lea edx, [esp + 0x1c]
xor ecx, ecx
sub edi, edx
jmp 0x442210
lea eax, [esp + ecx + 0x1c]
movzx edx, byte [eax + edi]
xor byte [eax], dl
movzx edx, byte [esi + ecx + 1]
xor byte [eax + 1], dl
movzx edx, byte [esi + ecx + 2]
xor byte [eax + 2], dl
movzx edx, byte [esi + ecx + 3]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x10
jl 0x442210
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x20]
push ebx
push ecx
call fcn.00440fc0
add esp, 0xc
mov eax, ebx
mov esi, 4
movzx edx, byte [eax + ebp - 1]
movzx ecx, byte [eax + ebp]
xor byte [eax], dl
xor byte [eax + 1], cl
movzx edx, byte [eax + ebp + 1]
movzx ecx, byte [eax + ebp + 2]
xor byte [eax + 2], dl
xor byte [eax + 3], cl
add eax, 4
dec esi
jne 0x442254
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
add dword [ecx], 0x10
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x24]
xor edi, edi
mov esi, ebx
mov dword [esp + 0x34], edx
mov ebx, eax
sub ebp, 0x10
cmp dword [esp + 0x10], 2
jle 0x4421e2
cmp dword [esp + 0x48], 0
je 0x442393
lea ebp, [esp + 0x2d]
sub ebp, ebx
cmp edi, 0x10
jge 0x4422e0
mov eax, dword [esp + 0x44]
mov dl, byte [eax]
dec dword [esp + 0x48]
mov byte [esp + edi + 0x1c], dl
inc eax
inc edi
mov dword [esp + 0x44], eax
cmp edi, 0x10
jne 0x442388
mov edi, esi
lea eax, [esp + 0x1c]
xor ecx, ecx
sub edi, eax
lea eax, [esp + ecx + 0x1c]
movzx edx, byte [eax + edi]
xor byte [eax], dl
movzx edx, byte [esi + ecx + 1]
xor byte [eax + 1], dl
movzx edx, byte [esi + ecx + 2]
xor byte [eax + 2], dl
movzx edx, byte [esi + ecx + 3]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x10
jl 0x4422f0
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x20]
push ebx
push ecx
call fcn.00440fc0
add esp, 0xc
mov eax, ebx
mov esi, 4
movzx edx, byte [eax + ebp - 1]
movzx ecx, byte [eax + ebp]
xor byte [eax], dl
xor byte [eax + 1], cl
movzx edx, byte [eax + ebp + 1]
movzx ecx, byte [eax + ebp + 2]
xor byte [eax + 2], dl
xor byte [eax + 3], cl
add eax, 4
dec esi
jne 0x442334
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
add dword [ecx], 0x10
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x24]
xor edi, edi
mov esi, ebx
mov dword [esp + 0x34], edx
mov ebx, eax
sub ebp, 0x10
cmp dword [esp + 0x48], 0
jne 0x4422c4
lea ebp, [esp + 0x2d]
mov dword [esp + 0x10], 1
sub ebp, ebx
cmp edi, 0x10
jge 0x4423b3
inc dword [esp + 0x10]
mov byte [esp + edi + 0x1c], 0
inc edi
cmp edi, 0x10
jne 0x442464
mov edi, esi
lea edx, [esp + 0x1c]
xor ecx, ecx
sub edi, edx
lea eax, [esp + ecx + 0x1c]
movzx edx, byte [eax + edi]
xor byte [eax], dl
movzx edx, byte [esi + ecx + 1]
xor byte [eax + 1], dl
movzx edx, byte [esi + ecx + 2]
xor byte [eax + 2], dl
movzx edx, byte [esi + ecx + 3]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x10
jl 0x4423c3
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x20]
push ebx
push ecx
call fcn.00440fc0
add esp, 0xc
mov eax, ebx
mov esi, 4
jmp 0x442410
movzx edx, byte [eax + ebp - 1]
movzx ecx, byte [eax + ebp]
xor byte [eax], dl
xor byte [eax + 1], cl
movzx edx, byte [eax + ebp + 1]
movzx ecx, byte [eax + ebp + 2]
xor byte [eax + 2], dl
xor byte [eax + 3], cl
add eax, 4
dec esi
jne 0x442410
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
add dword [ecx], 0x10
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x24]
xor edi, edi
mov esi, ebx
mov dword [esp + 0x34], edx
mov ebx, eax
sub ebp, 0x10
cmp dword [esp + 0x10], 7
jle 0x4423a1
mov ecx, dword [esp + 0x3c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.0042cb12
add esp, 0x30
ret