Function at 0x455a60
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xbc
cmp dword [esp + 0xc0], 0
mov dword [esp + 0x24], ecx
je 0x4560c4
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xcc]
push ebx
push ebp
push esi
mov esi, dword [esp + 0xd0]
mov ebp, ecx
push edi
mov edi, esi
test esi, esi
jns 0x455ab0
add edx, esi
test edx, edx
jle 0x4560c0
mov ebx, dword [esp + 0xe4]
xor esi, esi
sub ebx, edi
jmp 0x455ab7
mov ebx, dword [esp + 0xe4]
mov eax, dword [esp + 0xe0]
test ecx, ecx
jns 0x455ae4
add eax, ecx
mov dword [esp + 0x1c], eax
test eax, eax
jle 0x4560c0
mov edi, dword [esp + 0xe8]
xor ecx, ecx
mov dword [esp + 0xd8], ecx
sub edi, ebp
jmp 0x455aef
mov edi, dword [esp + 0xe8]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x34]
mov ebp, dword [eax]
cmp esi, ebp
jae 0x4560c0
cmp ecx, dword [eax + 4]
jae 0x4560c0
mov eax, dword [esp + 0xd0]
cmp ebx, dword [eax]
jae 0x4560c0
cmp edi, dword [eax + 4]
jae 0x4560c0
lea eax, [esi + edx]
cmp eax, ebp
jbe 0x455b29
mov edx, ebp
sub edx, esi
mov eax, dword [esp + 0x1c]
add eax, ecx
mov ecx, dword [esp + 0x34]
mov ebp, dword [ecx + 4]
mov ecx, dword [esp + 0xd8]
cmp eax, ebp
jbe 0x455b4b
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x455b4f
mov eax, dword [esp + 0x1c]
test edx, edx
je 0x4560c0
test eax, eax
je 0x4560c0
mov ecx, dword [esp + 0xd0]
lea eax, [edx + ebx]
mov ebp, dword [ecx]
cmp eax, ebp
jbe 0x455b73
mov edx, ebp
sub edx, ebx
mov eax, dword [esp + 0x1c]
mov ebp, dword [ecx + 4]
add eax, edi
mov ecx, dword [esp + 0xd8]
cmp eax, ebp
jbe 0x455b91
mov eax, ebp
sub eax, edi
mov dword [esp + 0x1c], eax
jmp 0x455b95
mov eax, dword [esp + 0x1c]
test edx, edx
je 0x4560c0
test eax, eax
je 0x4560c0
cmp dword [esp + 0xec], 4
ja 0x4560c0
mov eax, ebx
mov dword [esp + 0x20], 0xff
shr eax, 3
lea ebp, [ebx - 1]
mov dword [esp + 0x28], eax
add ebp, edx
shr ebp, 3
mov eax, esi
shr eax, 3
and ebx, 7
mov dword [esp + 0x2c], eax
lea eax, [esi + edx]
mov dword [esp + 0x14], ebp
and esi, 7
lea ebp, [eax - 1]
dec eax
shr ebp, 3
and eax, 7
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0xd0]
mov ebp, dword [ebp + 8]
imul ebp, edi
mov dword [esp + 0x24], ebp
mov edi, ebp
mov ebp, dword [esp + 0xd0]
add edi, dword [ebp + 0xc]
add edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x24], edi
mov edi, dword [ebp + 8]
imul edi, ecx
mov ecx, esi
sar dword [esp + 0x20], cl
mov ecx, 7
sub ecx, eax
or al, 0xff
shl al, cl
mov byte [esp + 0x13], al
add edi, dword [ebp + 0xc]
add edi, dword [esp + 0x2c]
mov dword [esp + 0x30], edi
cmp esi, ebx
jne 0x455c4d
mov dword [esp + 0x38], 2
jmp 0x455c58
sbb eax, eax
inc eax
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x13]
cmp ebx, esi
jbe 0x455c60
sub ebx, esi
jmp 0x455c64
sub esi, ebx
mov ebx, esi
mov esi, dword [esp + 0x18]
sub esi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x18], esi
cmp edx, 0xa
jae 0x455e2f
sub ebp, dword [esp + 0x28]
test esi, esi
jne 0x455c95
and al, byte [esp + 0x20]
movzx eax, al
shl ax, 8
movzx esi, ax
jmp 0x455cad
mov eax, dword [esp + 0x20]
movzx ecx, al
mov al, byte [esp + 0x13]
shl cx, 8
movzx eax, al
or cx, ax
movzx esi, cx
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x30], esi
je 0x4560c0
mov dx, word [esp + 0x14]
mov eax, ebp
sub eax, 0
je 0x455cd8
sub eax, 1
jne 0x455ce7
mov eax, dword [esp + 0x24]
mov al, byte [eax + 1]
mov byte [esp + 0x14], al
mov eax, dword [esp + 0x24]
mov al, byte [eax]
mov byte [esp + 0x15], al
mov dx, word [esp + 0x14]
mov eax, dword [esp + 0x38]
sub eax, 0
je 0x455cfd
sub eax, 1
jne 0x455d08
mov cx, bx
shr dx, cl
jmp 0x455d03
mov cx, bx
shl dx, cl
mov word [esp + 0x14], dx
mov eax, dword [esp + 0xec]
jmp dword [eax*4 + 0x4560d0]
lea eax, [esi + 3]
mov dword [esp + 0x44], eax
cmp eax, 0x82
ja 0x455e47
lea edx, [esp + 0x48]
mov dword [esp + 0x2c], edx
jmp 0x455e56
push eax
call fcn.004463f0
add esp, 4
mov dword [esp + 0x2c], eax
mov edx, eax
mov ecx, dword [esp + 0x14]
lea ebp, [edx + 1]
sub ecx, dword [esp + 0x28]
mov eax, 8
inc ecx
mov dword [esp + 0x40], ebp
sub eax, ebx
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x28], eax
je 0x4560ad
mov eax, dword [esp + 0x38]
sub eax, 0
je 0x455ef6
sub eax, 1
je 0x455eaa
sub eax, 1
jne 0x455f3a
push ecx
push dword [esp + 0x28]
push ebp
call fcn.004b3b20
add esp, 0xc
jmp 0x455f3a
mov byte [ebp], 0
test ecx, ecx
je 0x455f3a
mov eax, dword [esp + 0x24]
mov esi, ebp
sub eax, ebp
mov edi, ecx
mov dword [esp + 0x3c], eax
mov ebp, eax
jmp 0x455ed0
movzx eax, byte [esi + ebp]
lea esi, [esi + 1]
mov ecx, dword [esp + 0x28]
shl al, cl
mov cl, bl
mov byte [esi], al
movzx eax, byte [esi + ebp - 1]
shr al, cl
or byte [esi - 1], al
sub edi, 1
jne 0x455ed0
mov ebp, dword [esp + 0x40]
jmp 0x455f32
xor esi, esi
mov byte [edx], 0
test ecx, ecx
je 0x455f36
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
sub edi, edx
lea esp, [esp]
movzx eax, byte [edx]
lea edx, [edx + 1]
mov cl, byte [esp + 0x28]
shr al, cl
mov ecx, ebx
or byte [edi + edx - 1], al
movzx eax, byte [edx - 1]
shl al, cl
mov byte [esi + ebp], al
inc esi
cmp esi, dword [esp + 0x14]
jb case.default.0x455f41
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0xec]
jmp dword [eax*4 + 0x4560e4]
mov al, byte [ebp]
and al, byte [esp + 0x20]
or byte [edi], al
cmp esi, 1
jbe 0x455f74
mov edx, dword [esp + 0x18]
lea ecx, [edi + 1]
mov esi, ebp
sub esi, edi
dec edx
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
or byte [ecx - 1], al
sub edx, 1
jne 0x455f62
mov esi, dword [esp + 0x18]
mov al, byte [esi + ebp]
and al, byte [esp + 0x13]
or byte [esi + edi], al
jmp 0x45607d
mov al, byte [esp + 0x20]
not al
or al, byte [ebp]
and byte [edi], al
cmp esi, 1
jbe 0x455fb2
mov edx, dword [esp + 0x18]
lea ecx, [edi + 1]
mov esi, ebp
sub esi, edi
dec edx
nop
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
and byte [ecx - 1], al
sub edx, 1
jne 0x455fa0
mov esi, dword [esp + 0x18]
mov al, byte [esp + 0x13]
not al
or al, byte [esi + ebp]
and byte [esi + edi], al
jmp 0x45607d
mov al, byte [ebp]
and al, byte [esp + 0x20]
xor byte [edi], al
cmp esi, 1
jbe 0x455ff2
mov edx, dword [esp + 0x18]
lea ecx, [edi + 1]
mov esi, ebp
sub esi, edi
dec edx
lea ecx, [ecx]
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x455fe0
mov esi, dword [esp + 0x18]
mov al, byte [esi + ebp]
and al, byte [esp + 0x13]
xor byte [esi + edi], al
jmp 0x45607d
mov al, byte [ebp]
not al
and al, byte [esp + 0x20]
xor byte [edi], al
cmp esi, 1
jbe 0x456034
mov edx, dword [esp + 0x18]
lea eax, [edi + 1]
mov esi, ebp
sub esi, edi
dec edx
lea ecx, [ecx]
mov cl, byte [esi + eax]
lea eax, [eax + 1]
not cl
xor byte [eax - 1], cl
sub edx, 1
jne 0x456020
mov esi, dword [esp + 0x18]
mov al, byte [esi + ebp]
not al
and al, byte [esp + 0x13]
xor byte [esi + edi], al
jmp 0x45607d
mov edx, dword [esp + 0x20]
mov cl, dl
movzx eax, byte [ebp]
not cl
and cl, byte [edi]
and al, dl
or cl, al
lea eax, [esi - 1]
push eax
lea eax, [ebp + 1]
mov byte [edi], cl
push eax
lea eax, [edi + 1]
push eax
call fcn.004b3b20
mov cl, byte [esi + ebp]
add esp, 0xc
mov al, byte [esp + 0x13]
and cl, al
not al
and al, byte [esi + edi]
or cl, al
mov byte [esi + edi], cl
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0x2c]
add edi, dword [eax + 8]
mov eax, dword [esp + 0x24]
add eax, dword [ecx + 8]
sub dword [esp + 0x1c], 1
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x30], edi
mov dword [esp + 0x24], eax
jne 0x455e80
cmp dword [esp + 0x44], 0x82
jbe 0x4560c0
push edx
call fcn.00446420
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret 0x20