Function at 0x44aa30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
mov eax, dword [0x508e4c]
xor eax, ebp
push ebx
push esi
mov esi, dword [ebp + 8]
test esi, esi
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0xc], ecx
mov ecx, dword [ebp + 0x14]
push edi
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], eax
jne 0x44aa79
mov eax, 0xfffffffc
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, ebp
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [ebp + 0xc]
mov edi, edx
and edi, reloc.OLEAUT32.dll_VariantInit
jns 0x44aa8b
dec edi
or edi, 0xfffffff8
inc edi
je 0x44aaa4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, ebp
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10
test eax, eax
jne 0x44aac1
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, ebp
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10
test ecx, ecx
jne 0x44aacb
mov dword [esp + 0x1c], ecx
jmp 0x44aad4
mov edi, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x1c], edi
push eax
push 0x4ce35c
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], esi
lea ebx, [esi + edx]
lea edi, [esp + 0x24]
call fcn.004bc3be
add esp, 8
test eax, eax
jne 0x44ab27
cmp esi, ebx
jae 0x44ad2e
lea ecx, [ecx]
mov ecx, dword [esp + 0x10]
push esi
call fcn.0044a7d0
add esi, 8
cmp esi, ebx
jb 0x44ab00
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, ebp
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [esp + 0x14]
push edx
push 0x4ce358
call fcn.004bc3be
add esp, 8
test eax, eax
jne 0x44abe8
cmp esi, ebx
jae 0x44ad2e
sub ebx, dword [esp + 0xc]
add esi, 2
dec ebx
shr ebx, 3
inc ebx
mov dword [esp + 0xc], ebx
lea esp, [esp]
mov al, byte [edi]
mov cl, byte [esi - 2]
mov dl, byte [esi - 1]
xor cl, al
mov al, byte [esi]
mov byte [esi - 2], cl
mov cl, byte [edi + 1]
xor dl, cl
mov cl, byte [esi + 1]
lea ebx, [esi - 2]
mov byte [esi - 1], dl
mov dl, byte [edi + 2]
xor al, dl
mov dl, byte [esi + 2]
mov byte [esi], al
mov al, byte [edi + 3]
xor cl, al
mov al, byte [esi + 3]
mov byte [esi + 1], cl
mov cl, byte [edi + 4]
xor dl, cl
mov cl, byte [esi + 4]
mov byte [esi + 2], dl
mov dl, byte [edi + 5]
xor al, dl
mov byte [esi + 3], al
mov al, byte [edi + 6]
xor cl, al
mov al, byte [esi + 5]
mov byte [esi + 4], cl
mov cl, byte [edi + 7]
xor al, cl
mov ecx, dword [esp + 0x10]
push ebx
mov byte [esi + 5], al
call fcn.0044a7d0
mov eax, dword [esp + 0xc]
add esi, 8
dec eax
mov edi, ebx
mov dword [esp + 0xc], eax
jne 0x44ab60
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, ebp
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [esp + 0x14]
push edi
push 0x4ce354
call fcn.004bc3be
add esp, 8
test eax, eax
jne 0x44aca1
cmp esi, ebx
jae 0x44ad2e
sub ebx, dword [esp + 0xc]
add esi, 2
dec ebx
shr ebx, 3
inc ebx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x1c]
push edx
call fcn.0044a7d0
mov eax, dword [esp + 0x1c]
mov cl, byte [esi - 2]
mov dl, byte [esi - 1]
xor cl, al
mov al, byte [esp + 0x1e]
mov byte [esi - 2], cl
mov cl, byte [esi]
xor dl, ah
xor cl, al
mov eax, dword [esp + 0x20]
mov byte [esi - 1], dl
mov dl, byte [esi + 1]
mov byte [esi], cl
mov cl, byte [esp + 0x1f]
xor dl, cl
mov cl, byte [esi + 2]
mov byte [esi + 1], dl
mov dl, byte [esi + 3]
xor dl, ah
xor cl, al
mov ax, word [esp + 0x22]
mov byte [esi + 2], cl
mov cl, byte [esi + 4]
mov byte [esi + 3], dl
mov dl, byte [esi + 5]
xor dl, ah
xor cl, al
mov byte [esi + 4], cl
mov byte [esi + 5], dl
mov edx, dword [esi - 2]
mov eax, dword [esi + 2]
add esi, 8
dec ebx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], eax
jne 0x44ac16
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, ebp
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10
push edi
push 0x4ce350
call fcn.004bc3be
add esp, 8
test eax, eax
jne 0x44ad44
cmp esi, ebx
jae 0x44ad2e
sub ebx, dword [esp + 0xc]
add esi, 2
dec ebx
shr ebx, 3
inc ebx
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x14]
call fcn.0044a7d0
mov eax, dword [esp + 0x1c]
mov dl, byte [esi - 2]
mov cl, byte [esi - 1]
xor dl, al
mov al, byte [esi]
mov byte [esi - 2], dl
mov dl, byte [esp + 0x1e]
xor al, dl
mov dl, byte [esi + 1]
xor cl, ah
mov byte [esi], al
mov al, byte [esp + 0x1f]
xor dl, al
mov eax, dword [esp + 0x20]
mov byte [esi - 1], cl
mov cl, byte [esi + 2]
mov byte [esi + 1], dl
mov dl, byte [esi + 3]
xor cl, al
xor dl, ah
mov ax, word [esp + 0x22]
mov byte [esi + 2], cl
mov cl, byte [esi + 4]
mov byte [esi + 3], dl
mov dl, byte [esi + 5]
xor cl, al
xor dl, ah
mov byte [esi + 4], cl
mov byte [esi + 5], dl
add esi, 8
dec ebx
jne 0x44acc7
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, ebp
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [esp + 0x24]
pop edi
pop esi
xor ecx, ebp
mov eax, 0xfffffffd
pop ebx
call fcn.004a8b15
mov esp, ebp
pop ebp
ret 0x10