Function at 0x413590
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
push edi
push esi
call fcn.0041be90
mov ebp, dword [esp + 0x1c]
add esp, 4
test ebp, ebp
je 0x4137f4
mov al, byte [esi + 1]
and al, 0xf
cmp al, 0xf
je 0x4135bf
pop edi
pop esi
pop ebp
mov ax, 0x1d02
pop ebx
ret
mov ecx, dword [esp + 0x1c]
lea eax, [ecx - 1]
cmp eax, 3
ja case.default.0x4135cf
jmp dword [eax*4 + 0x413880]
xor eax, eax
mov dl, byte [eax + esi + 8]
mov byte [eax + esi], dl
inc eax
cmp eax, 0x40
jb 0x4135d8
push esi
push ebp
call fcn.00411dc0
add esp, 8
xor eax, eax
mov cl, byte [eax + esi + 0x10]
mov dl, byte [eax + esi]
xor dl, cl
mov byte [eax + esi], dl
inc eax
cmp eax, 0x10
jb 0x4135f1
lea edi, [esi + 0x10]
push edi
push ebp
call fcn.00411dc0
mov ecx, 0xfffffff0
add esp, 8
mov eax, edi
sub ecx, esi
mov dl, byte [eax + 0x10]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x413619
lea edi, [esi + 0x20]
push edi
push ebp
call fcn.00411dc0
mov ecx, 0xffffffe0
add esp, 8
mov eax, edi
sub ecx, esi
mov dl, byte [eax + 0x10]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x413641
lea eax, [esi + 0x30]
push eax
push ebp
call fcn.00411dc0
mov al, byte [esi + 6]
mov cl, byte [esi + 0x3e]
add esp, 8
cmp al, cl
jne case.0x413830.4
mov cl, byte [esi + 7]
mov dl, byte [esi + 0x3f]
cmp cl, dl
jne case.0x413830.4
mov dl, byte [esp + 0x20]
mov cl, byte [esi + 0x3c]
cmp dl, cl
jne case.0x413830.4
and al, 3
cmp al, 3
je 0x4137f4
pop edi
pop esi
pop ebp
mov ax, 0x1d02
pop ebx
ret
xor eax, eax
mov cl, byte [eax + esi + 8]
mov byte [eax + esi], cl
inc eax
cmp eax, 0x30
jb 0x4136a0
push esi
push ebp
call fcn.00411dc0
add esp, 8
xor eax, eax
mov dl, byte [eax + esi + 0x10]
mov bl, byte [eax + esi]
xor bl, dl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x10
jb 0x4136b9
lea edi, [esi + 0x10]
push edi
push ebp
call fcn.00411dc0
mov ecx, 0xfffffff0
add esp, 8
mov eax, edi
sub ecx, esi
mov dl, byte [eax + 0x10]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
lea edx, [eax + ecx]
cmp edx, 0x10
jb 0x4136e1
lea eax, [esi + 0x20]
push eax
push ebp
call fcn.00411dc0
mov al, byte [esi + 6]
mov cl, byte [esi + 0x2e]
add esp, 8
cmp al, cl
jne case.0x413830.4
mov cl, byte [esi + 7]
mov dl, byte [esi + 0x2f]
cmp cl, dl
jne case.0x413830.4
mov dl, byte [esp + 0x20]
mov cl, byte [esi + 0x2c]
cmp dl, cl
jne case.0x413830.4
and al, 3
cmp al, 2
je 0x4137f4
pop edi
pop esi
pop ebp
mov ax, 0x1d02
pop ebx
ret
xor eax, eax
mov cl, byte [eax + esi + 8]
mov byte [eax + esi], cl
inc eax
cmp eax, 0x20
jb 0x413740
push esi
push ebp
call fcn.00411dc0
add esp, 8
xor eax, eax
mov dl, byte [eax + esi + 0x10]
mov bl, byte [eax + esi]
xor bl, dl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x10
jb 0x413759
lea eax, [esi + 0x10]
push eax
push ebp
call fcn.00411dc0
mov al, byte [esi + 6]
mov cl, byte [esi + 0x1e]
add esp, 8
cmp al, cl
jne case.0x413830.4
mov cl, byte [esi + 7]
mov dl, byte [esi + 0x1f]
cmp cl, dl
jne case.0x413830.4
mov dl, byte [esp + 0x20]
mov cl, byte [esi + 0x1c]
cmp dl, cl
jne case.0x413830.4
and al, 3
cmp al, 1
je 0x4137f4
pop edi
pop esi
pop ebp
mov ax, 0x1d02
pop ebx
ret
xor eax, eax
mov cl, byte [eax + esi + 8]
mov byte [eax + esi], cl
inc eax
cmp eax, 0x10
jb 0x4137a8
push esi
push ebp
call fcn.00411dc0
mov al, byte [esi + 6]
mov cl, byte [esi + 0xe]
add esp, 8
cmp al, cl
jne case.0x413830.4
mov dl, byte [esi + 7]
mov cl, byte [esi + 0xf]
cmp dl, cl
jne case.0x413830.4
mov cl, byte [esp + 0x20]
mov dl, byte [esi + 0xc]
cmp cl, dl
jne case.0x413830.4
test al, 3
je 0x4137f4
pop edi
pop esi
pop ebp
mov ax, 0x1d02
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1d10
pop ebx
ret
mov cl, byte [esi + 4]
mov al, byte [esi + 5]
xor edx, edx
mov dl, byte [esi + 1]
mov edi, edx
add edx, ecx
mov cl, byte [esi + 3]
add eax, edx
mov dl, byte [esi + 2]
add eax, ecx
add edx, eax
xor eax, eax
mov al, byte [esi]
and edx, 0xff
xor edx, eax
je 0x413826
pop edi
pop esi
pop ebp
mov ax, 0x1d0d
pop ebx
ret
mov eax, edi
and eax, 0xf
cmp eax, 7
ja case.default.0x413830
jmp dword [eax*4 + 0x413890]
pop edi
pop esi
pop ebp
xor ax, ax
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1d41
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1d04
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1d0a
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1d15
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1d42
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1d3f
pop ebx
ret
pop edi
pop esi
pop ebp
mov ax, 0x1dff
pop ebx
ret