Function at 0x411710
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
mov eax, dword [0x45aa50]
mov ecx, dword [0x449234]
mov dl, byte [0x449238]
push ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [0x449230]
push ebp
mov ebp, dword [esp + 0x30]
mov dword [esp + 8], eax
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x40]
push esi
mov esi, dword [esp + 0x2c]
push edi
mov edi, dword [esp + 0x40]
cmp al, 0x45
mov dword [esp + 0x14], ecx
mov byte [esp + 0x18], dl
mov dword [esp + 0x20], ecx
mov byte [esp + 0x24], dl
mov eax, ebp
jne 0x4118cb
shr eax, 3
test eax, eax
jbe 0x411809
mov ebp, eax
mov edx, dword [esp + 0x3c]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
push edx
push ebx
push edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
call fcn.004114c0
mov cl, byte [ebx]
mov al, byte [esp + 0x1c]
mov dl, byte [ebx + 1]
xor cl, al
mov al, byte [ebx + 2]
mov byte [ebx], cl
mov cl, byte [esp + 0x1d]
xor dl, cl
mov cl, byte [ebx + 3]
mov byte [ebx + 1], dl
mov dl, byte [esp + 0x1e]
xor al, dl
mov dl, byte [ebx + 4]
mov byte [ebx + 2], al
mov al, byte [esp + 0x1f]
xor cl, al
mov al, byte [ebx + 5]
mov byte [ebx + 3], cl
mov cl, byte [esp + 0x20]
xor dl, cl
mov cl, byte [ebx + 6]
mov byte [ebx + 4], dl
mov dl, byte [esp + 0x21]
xor al, dl
mov byte [ebx + 5], al
mov al, byte [esp + 0x22]
xor cl, al
mov al, byte [ebx + 7]
mov byte [ebx + 6], cl
mov cl, byte [esp + 0x23]
xor al, cl
mov byte [ebx + 7], al
mov edx, dword [ebx]
mov dword [edi], edx
mov eax, dword [ebx + 4]
add esp, 0xc
add esi, 8
add ebx, 8
dec ebp
mov dword [edi + 4], eax
jne 0x411774
mov ebp, dword [esp + 0x38]
and ebp, 0x80000007
jns 0x411816
dec ebp
or ebp, 0xfffffff8
inc ebp
test ebp, ebp
jle 0x411a3e
mov ecx, dword [esp + 0x3c]
push ecx
lea edx, [esp + 0x20]
push edx
push edi
call fcn.004114c0
mov dl, byte [esp + 0x28]
mov ecx, ebp
mov eax, ecx
shr ecx, 2
lea edi, [esp + 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov al, byte [esp + 0x29]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov cl, byte [esp + 0x1c]
xor dl, cl
mov cl, byte [esp + 0x2a]
mov byte [esp + 0x28], dl
mov dl, byte [esp + 0x1d]
xor al, dl
mov dl, byte [esp + 0x2b]
mov byte [esp + 0x29], al
mov al, byte [esp + 0x1e]
xor cl, al
mov al, byte [esp + 0x2c]
mov byte [esp + 0x2a], cl
mov cl, byte [esp + 0x1f]
xor dl, cl
mov cl, byte [esp + 0x2d]
mov byte [esp + 0x2b], dl
mov dl, byte [esp + 0x20]
xor al, dl
mov dl, byte [esp + 0x2e]
mov byte [esp + 0x2c], al
mov al, byte [esp + 0x21]
xor cl, al
mov al, byte [esp + 0x2f]
mov byte [esp + 0x2d], cl
mov cl, byte [esp + 0x22]
xor dl, cl
mov byte [esp + 0x2e], dl
mov dl, byte [esp + 0x23]
xor al, dl
mov byte [esp + 0x2f], al
mov ecx, ebp
mov eax, ecx
add esp, 0xc
shr ecx, 2
lea esi, [esp + 0x1c]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
jmp 0x411a39
shr eax, 3
test eax, eax
jbe 0x41197c
mov dword [esp + 0x48], eax
lea ebx, [ebx]
mov edx, dword [esp + 0x3c]
mov ebp, dword [esi]
mov ecx, dword [esi + 4]
push edx
push ebx
push edi
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ecx
call fcn.004114c0
mov cl, byte [ebx]
mov al, byte [esp + 0x1c]
mov dl, byte [ebx + 1]
xor cl, al
mov al, byte [ebx + 2]
mov byte [ebx], cl
mov cl, byte [esp + 0x1d]
xor dl, cl
mov cl, byte [ebx + 3]
mov byte [ebx + 1], dl
mov dl, byte [esp + 0x1e]
xor al, dl
mov dl, byte [ebx + 4]
mov byte [ebx + 2], al
mov al, byte [esp + 0x1f]
xor cl, al
mov al, byte [ebx + 5]
mov byte [ebx + 3], cl
mov cl, byte [esp + 0x20]
xor dl, cl
mov cl, byte [ebx + 6]
mov byte [ebx + 4], dl
mov dl, byte [esp + 0x21]
xor al, dl
mov edx, dword [esp + 0x20]
mov byte [ebx + 5], al
mov al, byte [esp + 0x22]
xor cl, al
mov al, byte [ebx + 7]
mov byte [ebx + 6], cl
mov cl, byte [esp + 0x23]
xor al, cl
mov byte [ebx + 7], al
mov eax, dword [esp + 0x54]
add esp, 0xc
add esi, 8
add ebx, 8
dec eax
mov dword [edi], ebp
mov dword [edi + 4], edx
mov dword [esp + 0x48], eax
jne 0x4118e0
mov ebp, dword [esp + 0x38]
and ebp, 0x80000007
jns 0x411989
dec ebp
or ebp, 0xfffffff8
inc ebp
test ebp, ebp
jle 0x411a3e
mov eax, dword [esp + 0x3c]
push eax
lea ecx, [esp + 0x20]
push ecx
push edi
call fcn.004114c0
mov ecx, ebp
mov edx, ecx
shr ecx, 2
lea edi, [esp + 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dl, byte [esp + 0x29]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov cl, byte [esp + 0x28]
mov al, byte [esp + 0x1c]
xor cl, al
mov al, byte [esp + 0x2a]
mov byte [esp + 0x28], cl
mov cl, byte [esp + 0x1d]
xor dl, cl
mov cl, byte [esp + 0x2b]
mov byte [esp + 0x29], dl
mov dl, byte [esp + 0x1e]
xor al, dl
mov dl, byte [esp + 0x2c]
mov byte [esp + 0x2a], al
mov al, byte [esp + 0x1f]
xor cl, al
mov al, byte [esp + 0x2d]
mov byte [esp + 0x2b], cl
mov cl, byte [esp + 0x20]
xor dl, cl
mov cl, byte [esp + 0x2e]
mov byte [esp + 0x2c], dl
mov dl, byte [esp + 0x21]
xor al, dl
mov byte [esp + 0x2d], al
mov al, byte [esp + 0x22]
xor cl, al
mov al, byte [esp + 0x2f]
mov byte [esp + 0x2e], cl
mov cl, byte [esp + 0x23]
xor al, cl
mov ecx, ebp
mov edx, ecx
add esp, 0xc
shr ecx, 2
lea esi, [esp + 0x1c]
mov edi, ebx
mov byte [esp + 0x23], al
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x28]
pop edi
pop esi
pop ebp
pop ebx
call fcn.0041cf8e
add esp, 0x1c
ret