Function at 0x447e10
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
mov eax, dword [esp + 0x40]
push ebx
push ebp
xor ebx, ebx
cmp eax, 1
push esi
push edi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], 0xffeeddcc
jne 0x447e36
mov dword [esp + 0x14], 0xffeeddcd
mov edi, dword [esp + 0x48]
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
lea edx, [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x447e58
lea eax, [esp + 0x18]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x447e70
sub eax, edx
push 0x14
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x24]
push edx
call fcn.00410760
mov eax, edi
add esp, 0x10
xor ecx, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x447e95
sub eax, esi
mov dword [esp + 0x50], eax
je 0x447ec2
movsx eax, byte [esp + ecx + 0x18]
add ebx, eax
mov eax, edi
inc ecx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x447eb1
sub eax, esi
cmp ecx, eax
jb 0x447ea4
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x4c]
mov edi, dword [ebx + 4]
xor esi, esi
xor ecx, ecx
test edi, edi
mov dword [esp + 0x50], esi
jbe 0x447efb
cmp ecx, edi
jae 0x44806e
mov edx, dword [ebx]
mov eax, dword [edx + ecx*4]
lea ebp, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x447ee5
sub eax, ebp
inc ecx
cmp ecx, edi
lea esi, [esi + eax + 2]
mov dword [esp + 0x50], esi
jb 0x447edd
add esi, 2
push esi
mov dword [esp + 0x54], esi
call fcn.0044d971
mov ebp, eax
mov eax, dword [esp + 0x50]
mov byte [ebp], 0
mov eax, dword [eax + 4]
add esp, 4
xor ebx, ebx
test eax, eax
jbe 0x447f7d
cmp ebx, eax
jae 0x44806e
mov ecx, dword [esp + 0x4c]
mov edx, dword [ecx]
mov eax, dword [edx + ebx*4]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x447f31
mov edi, ebp
sub eax, ecx
mov esi, ecx
dec edi
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x447f40
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x447f60
mov ax, word [0x45c51c]
mov ecx, dword [esp + 0x4c]
mov word [edi], ax
mov eax, dword [ecx + 4]
inc ebx
cmp ebx, eax
jb 0x447f26
mov edx, dword [esp + 0x50]
lea eax, [edx + edx]
push eax
call fcn.0044d971
mov ecx, dword [esp + 0x54]
add ecx, ecx
mov edx, ecx
mov esi, eax
shr ecx, 2
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov ecx, edx
add esp, 4
and ecx, 3
rep stosb byte es:[edi], al
mov eax, ebp
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x447fb0
mov ecx, dword [esp + 0x50]
sub eax, edx
lea edx, [ecx + ecx]
push edx
push eax
push esi
push ebp
call fcn.00410760
mov eax, esi
add esp, 0x10
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x447fd1
sub eax, edx
mov dword [esp + 0x50], eax
mov eax, 0
je 0x447ffa
mov bl, byte [eax + esi]
mov cl, byte [esp + 0x10]
xor bl, cl
mov byte [eax + esi], bl
mov ecx, dword [esp + 0x50]
inc eax
cmp eax, ecx
jb 0x447fe5
mov edx, dword [esp + 0x44]
push 0x45ec0c
push edx
call fcn.0044da6f
mov edi, eax
push edi
push 1
lea eax, [esp + 0x24]
push 4
push eax
call fcn.0044e62c
push edi
push 1
lea ecx, [esp + 0x4c]
push 0x10
push ecx
call fcn.0044e62c
push edi
push 1
lea edx, [esp + 0x80]
push 4
push edx
call fcn.0044e62c
mov eax, dword [esp + 0x88]
push edi
push 1
push eax
push esi
call fcn.0044e62c
add esp, 0x48
push edi
call fcn.0044d9c2
push ebp
call fcn.0044d96c
push esi
call fcn.0044d96c
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x10
push 0x80070057
call fcn.004027c0
int3