Function at 0x45d420
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ecx, 0x9e3779b9
push edi
mov edx, 0x9e3779b9
push esi
push ebx
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
test al, 3
je 0x45d606
cmp esi, 0xb
jbe 0x45d52e
mov edi, ecx
mov ecx, ebx
nop
movzx ebp, byte [eax + 5]
movzx ebx, byte [eax + 6]
shl ebp, 8
shl ebx, 0x10
add ebx, ebp
movzx ebp, byte [eax + 4]
add ebp, ebx
movzx ebx, byte [eax + 7]
shl ebx, 0x18
add ebx, ebp
movzx ebp, byte [eax + 9]
add edi, ebx
movzx ebx, byte [eax + 0xa]
shl ebp, 8
shl ebx, 0x10
add ebx, ebp
movzx ebp, byte [eax + 8]
add ebx, ebp
movzx ebp, byte [eax + 0xb]
shl ebp, 0x18
add ebx, ebp
movzx ebp, byte [eax + 1]
add ebx, ecx
movzx ecx, byte [eax + 2]
shl ebp, 8
shl ecx, 0x10
add ecx, ebp
movzx ebp, byte [eax]
add ecx, ebp
movzx ebp, byte [eax + 3]
shl ebp, 0x18
add ecx, ebp
sub ecx, ebx
sub ecx, edi
sub edi, ebx
add edx, ecx
mov ecx, ebx
shr ecx, 0xd
xor edx, ecx
mov ecx, edx
sub edi, edx
shl ecx, 8
xor ecx, edi
mov edi, ebx
sub edi, edx
mov ebx, ecx
sub edi, ecx
shr ebx, 0xd
xor ebx, edi
sub edx, ecx
mov edi, ebx
sub edx, ebx
shr edi, 0xc
sub esi, 0xc
xor edi, edx
mov edx, ecx
sub edx, ebx
mov ecx, edi
sub edx, edi
add eax, 0xc
shl ecx, 0x10
xor ecx, edx
mov edx, ebx
sub edx, edi
mov ebx, ecx
sub edx, ecx
sub edi, ecx
shr ebx, 5
xor ebx, edx
mov edx, ebx
sub edi, ebx
shr edx, 3
sub ecx, ebx
xor edx, edi
mov edi, edx
sub ecx, edx
shl edi, 0xa
sub ebx, edx
xor edi, ecx
mov ecx, edi
sub ebx, edi
shr ecx, 0xf
xor ecx, ebx
cmp esi, 0xb
ja 0x45d450
mov ebx, ecx
mov ecx, edi
add ebx, dword [esp + 0x18]
cmp esi, 0xb
ja case.0x45d537.0
jmp dword [esi*4 + 0x4d1544]
movzx esi, byte [eax + 0xa]
shl esi, 0x18
add ebx, esi
movzx esi, byte [eax + 9]
shl esi, 0x10
add ebx, esi
movzx esi, byte [eax + 8]
shl esi, 8
add ebx, esi
movzx esi, byte [eax + 7]
shl esi, 0x18
add ecx, esi
movzx esi, byte [eax + 6]
shl esi, 0x10
add ecx, esi
movzx esi, byte [eax + 5]
shl esi, 8
add ecx, esi
movzx esi, byte [eax + 4]
add ecx, esi
movzx esi, byte [eax + 3]
shl esi, 0x18
add edx, esi
movzx esi, byte [eax + 2]
shl esi, 0x10
add edx, esi
movzx esi, byte [eax + 1]
shl esi, 8
add edx, esi
movzx eax, byte [eax]
add edx, eax
sub edx, ecx
mov eax, ebx
sub edx, ebx
sub ecx, ebx
shr eax, 0xd
xor edx, eax
mov eax, edx
sub ecx, edx
shl eax, 8
sub ebx, edx
xor eax, ecx
mov esi, eax
sub ebx, eax
shr esi, 0xd
sub edx, eax
xor esi, ebx
mov ecx, esi
sub edx, esi
shr ecx, 0xc
sub eax, esi
xor ecx, edx
mov edx, eax
mov eax, ecx
sub edx, ecx
shl eax, 0x10
sub esi, ecx
xor eax, edx
mov edx, eax
sub esi, eax
shr edx, 5
sub ecx, eax
xor edx, esi
mov ebx, edx
sub ecx, edx
shr ebx, 3
sub eax, edx
xor ebx, ecx
mov ecx, ebx
sub eax, ebx
shl ecx, 0xa
sub edx, ebx
xor ecx, eax
mov eax, ecx
sub edx, ecx
shr eax, 0xf
pop ebx
xor eax, edx
pop esi
pop edi
pop ebp
ret
cmp dword [esp + 0x18], 0xb
jbe 0x45d52e
mov edi, ecx
mov ecx, ebx
add edi, dword [eax + 4]
add ecx, dword [eax + 8]
mov ebx, ecx
lea ecx, [ecx + edi]
sub edi, ebx
sub edx, ecx
mov ecx, ebx
add edx, dword [eax]
shr ecx, 0xd
xor edx, ecx
mov ecx, edx
sub edi, edx
shl ecx, 8
xor ecx, edi
mov edi, ebx
sub edi, edx
mov ebx, ecx
sub edi, ecx
sub edx, ecx
shr ebx, 0xd
xor ebx, edi
mov edi, ebx
sub edx, ebx
shr edi, 0xc
xor edi, edx
mov edx, ecx
sub edx, ebx
mov ecx, edi
sub edx, edi
shl ecx, 0x10
xor ecx, edx
mov edx, ebx
sub edx, edi
mov ebx, ecx
sub edx, ecx
sub edi, ecx
shr ebx, 5
xor ebx, edx
mov edx, ebx
sub edi, ebx
shr edx, 3
sub ecx, ebx
xor edx, edi
mov edi, edx
sub ecx, edx
shl edi, 0xa
xor edi, ecx
sub ebx, edx
mov ecx, edi
sub ebx, edi
shr ecx, 0xf
sub esi, 0xc
xor ecx, ebx
add eax, 0xc
cmp esi, 0xb
ja 0x45d615
mov ebx, ecx
mov ecx, edi
jmp 0x45d52e