Function at 0x453fe0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0xc]
push ebp
xor edx, edx
push esi
cmp ebx, 0x4ccc2c
push edi
je 0x4542fb
mov ebp, dword [esp + 0x1c]
add ebx, 4
mov al, byte [ebx]
inc ebx
mov cl, al
and al, 0x3f
and cl, 0xc0
mov byte [esp + 0x1c], al
cmp cl, 0xc0
jne 0x4540e4
test edx, edx
je 0x4540d3
cmp al, 0x10
jb 0x45407a
mov ecx, dword [esp + 0x1c]
and ecx, 0xff
shr ecx, 4
mov esi, dword [ebp]
add ebp, 0x10
shr esi, 1
and esi, 0xf0f0f0f
add al, 0xf0
xor esi, edx
mov dword [ebp - 0x10], esi
mov esi, dword [ebp - 0xc]
shr esi, 1
and esi, 0xf0f0f0f
xor esi, edx
mov dword [ebp - 0xc], esi
mov esi, dword [ebp - 8]
shr esi, 1
and esi, 0xf0f0f0f
xor esi, edx
mov dword [ebp - 8], esi
mov esi, dword [ebp - 4]
shr esi, 1
and esi, 0xf0f0f0f
xor esi, edx
dec ecx
mov dword [ebp - 4], esi
jne 0x45402e
mov byte [esp + 0x1c], al
cmp al, 4
jb 0x4540a3
mov ecx, dword [esp + 0x1c]
and ecx, 0xff
shr ecx, 2
mov esi, dword [ebp]
add ebp, 4
shr esi, 1
and esi, 0xf0f0f0f
add al, 0xfc
xor esi, edx
dec ecx
mov dword [ebp - 4], esi
jne 0x45408b
mov cl, al
dec al
test cl, cl
mov byte [esp + 0x1c], al
jbe 0x453ffe
mov esi, dword [esp + 0x1c]
and esi, 0xff
inc esi
mov al, byte [ebp]
shr al, 1
and al, 0xf
xor al, dl
mov byte [ebp], al
inc ebp
dec esi
jne 0x4540be
jmp 0x453ffe
mov ecx, dword [esp + 0x1c]
and ecx, 0xff
add ebp, ecx
jmp 0x453ffe
cmp cl, 0x80
jne 0x454160
cmp al, 8
ja 0x454120
test al, al
je 0x454119
mov eax, dword [esp + 0x1c]
and eax, 0xff
mov edx, eax
shl edx, 8
or edx, eax
shl edx, 8
or edx, eax
shl edx, 8
or edx, eax
shl edx, 4
or edx, 0xf0f0f0f
jmp 0x453ffe
xor edx, edx
jmp 0x453ffe
mov ecx, dword [esp + 0x1c]
xor eax, eax
mov al, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov bl, al
mov bh, bl
and ecx, 0xff
mov eax, ebx
mov dword [esp + 0x10], ecx
mov esi, ecx
mov edi, ebp
shl eax, 0x10
mov ax, bx
mov ebx, dword [esp + 0x18]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov eax, esi
add ebp, eax
jmp 0x453ffe
cmp cl, 0x40
jne 0x45418e
mov ecx, dword [esp + 0x1c]
mov esi, ebx
and ecx, 0xff
mov edi, ebp
mov dword [esp + 0x10], ecx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
add ebp, eax
and ecx, 3
add ebx, eax
rep movsb byte es:[edi], byte [esi]
jmp 0x453ffe
test al, al
je 0x4542fb
mov esi, dword [esp + 0x1c]
and esi, 0xff
cmp al, 4
mov dword [esp + 0x10], esi
jb 0x454205
shr esi, 2
mov edi, dword [0x4ef6ec]
xor ecx, ecx
mov ch, byte [ebx]
add ebx, 4
mov cl, byte [ebp]
add ebp, 4
add al, 0xfc
mov cl, byte [ecx + edi]
mov byte [ebp - 4], cl
mov edi, dword [0x4ef6ec]
xor ecx, ecx
mov ch, byte [ebx - 3]
mov cl, byte [ebp - 3]
mov cl, byte [ecx + edi]
mov byte [ebp - 3], cl
mov edi, dword [0x4ef6ec]
xor ecx, ecx
mov ch, byte [ebx - 2]
mov cl, byte [ebp - 2]
mov cl, byte [ecx + edi]
mov byte [ebp - 2], cl
mov edi, dword [0x4ef6ec]
xor ecx, ecx
dec esi
mov ch, byte [ebx - 1]
mov cl, byte [ebp - 1]
mov cl, byte [ecx + edi]
mov byte [ebp - 1], cl
jne 0x4541ab
mov cl, al
dec al
test cl, cl
mov byte [esp + 0x1c], al
jbe 0x454234
mov esi, dword [esp + 0x1c]
and esi, 0xff
inc esi
mov ecx, dword [0x4ef6ec]
xor eax, eax
mov ah, byte [ebx]
inc ebx
mov al, byte [ebp]
inc ebp
dec esi
mov al, byte [eax + ecx]
mov byte [ebp - 1], al
jne 0x45421c
test edx, edx
je 0x453ffe
mov eax, dword [esp + 0x10]
mov ecx, eax
sub ebp, eax
cmp cl, 0x10
mov byte [esp + 0x1c], al
jb 0x4542a2
and ecx, 0xff
shr ecx, 4
mov esi, dword [ebp]
add ebp, 0x10
shr esi, 1
and esi, 0xf0f0f0f
add al, 0xf0
xor esi, edx
mov dword [ebp - 0x10], esi
mov esi, dword [ebp - 0xc]
shr esi, 1
and esi, 0xf0f0f0f
xor esi, edx
mov dword [ebp - 0xc], esi
mov esi, dword [ebp - 8]
shr esi, 1
and esi, 0xf0f0f0f
xor esi, edx
mov dword [ebp - 8], esi
mov esi, dword [ebp - 4]
shr esi, 1
and esi, 0xf0f0f0f
xor esi, edx
dec ecx
mov dword [ebp - 4], esi
jne 0x454256
mov byte [esp + 0x1c], al
cmp al, 4
jb 0x4542cb
mov ecx, dword [esp + 0x1c]
and ecx, 0xff
shr ecx, 2
mov esi, dword [ebp]
add ebp, 4
shr esi, 1
and esi, 0xf0f0f0f
add al, 0xfc
xor esi, edx
dec ecx
mov dword [ebp - 4], esi
jne 0x4542b3
mov cl, al
dec al
test cl, cl
mov byte [esp + 0x1c], al
jbe 0x453ffe
mov esi, dword [esp + 0x1c]
and esi, 0xff
inc esi
mov al, byte [ebp]
shr al, 1
and al, 0xf
xor al, dl
mov byte [ebp], al
inc ebp
dec esi
jne 0x4542e6
jmp 0x453ffe
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret