Function at 0x4544c0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0xc]
push ebp
xor edx, edx
push esi
cmp ebx, 0x4d06a8
push edi
je 0x4547e0
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 0x4545c4
test edx, edx
je 0x4545b3
cmp al, 0x10
jb 0x45455a
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 0x45450e
mov byte [esp + 0x1c], al
cmp al, 4
jb 0x454583
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 0x45456b
mov cl, al
dec al
test cl, cl
mov byte [esp + 0x1c], al
jbe 0x4544de
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 0x45459e
jmp 0x4544de
mov ecx, dword [esp + 0x1c]
and ecx, 0xff
add ebp, ecx
jmp 0x4544de
cmp cl, 0x80
jne 0x454645
cmp al, 8
ja 0x454600
test al, al
je 0x4545f9
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 0x4544de
xor edx, edx
jmp 0x4544de
cmp cl, 0x80
jne 0x454645
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 0x4544de
cmp cl, 0x40
jne 0x454673
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 0x4544de
test al, al
je 0x4547e0
mov esi, dword [esp + 0x1c]
and esi, 0xff
cmp al, 4
mov dword [esp + 0x10], esi
jb 0x4546ea
shr esi, 2
mov edi, dword [0x4f50b0]
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 [0x4f50b0]
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 [0x4f50b0]
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 [0x4f50b0]
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 0x454690
mov cl, al
dec al
test cl, cl
mov byte [esp + 0x1c], al
jbe 0x454719
mov esi, dword [esp + 0x1c]
and esi, 0xff
inc esi
mov ecx, dword [0x4f50b0]
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 0x454701
test edx, edx
je 0x4544de
mov eax, dword [esp + 0x10]
mov ecx, eax
sub ebp, eax
cmp cl, 0x10
mov byte [esp + 0x1c], al
jb 0x454787
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 0x45473b
mov byte [esp + 0x1c], al
cmp al, 4
jb 0x4547b0
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 0x454798
mov cl, al
dec al
test cl, cl
mov byte [esp + 0x1c], al
jbe 0x4544de
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 0x4547cb
jmp 0x4544de
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret