Function at 0x1001d187
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push esi
call fcn.10029040
mov ebx, dword [ebp + 0xc]
add esp, 4
test ebx, ebx
je 0x1001d263
mov al, byte [esi + 1]
and al, 0xf
cmp al, 0xf
je 0x1001cfef
pop edi
pop esi
mov ax, 0x1d02
pop ebx
pop ebp
ret
mov ecx, dword [ebp + 0x10]
lea eax, [ecx - 1]
cmp eax, 3
ja case.default.0x1001cffe
jmp dword [eax*4 + 0x1001d2f0]
jmp 0x1001d00f
xor eax, eax
mov dl, byte [eax + esi + 8]
mov byte [eax + esi], dl
inc eax
cmp eax, 0x40
jb 0x1001d011
push esi
push ebx
call fcn.1001bcc0
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 0x1001d02a
lea edi, [esi + 0x10]
push edi
push ebx
call fcn.1001bcc0
mov ecx, 0xfffffff0
add esp, 8
mov eax, edi
sub ecx, esi
mov dl, byte [eax + 0x10]
xor byte [eax], dl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x1001d052
lea edi, [esi + 0x20]
push edi
push ebx
call fcn.1001bcc0
mov ecx, 0xffffffe0
add esp, 8
mov eax, edi
sub ecx, esi
mov dl, byte [eax + 0x10]
xor byte [eax], dl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x1001d076
lea eax, [esi + 0x30]
push eax
push ebx
call fcn.1001bcc0
add esp, 8
jmp 0x1001d09b
mov al, byte [esi + 6]
mov cl, byte [esi + 0x3e]
cmp al, cl
jne case.0x1001d29f.4
mov cl, byte [esi + 7]
mov dl, byte [esi + 0x3f]
cmp cl, dl
jne case.0x1001d29f.4
mov dl, byte [ebp + 0x14]
mov cl, byte [esi + 0x3c]
cmp dl, cl
jne case.0x1001d29f.4
and al, 3
cmp al, 3
je 0x1001d263
pop edi
pop esi
mov ax, 0x1d02
pop ebx
pop ebp
ret
jmp 0x1001d0e2
xor eax, eax
mov cl, byte [eax + esi + 8]
mov byte [eax + esi], cl
inc eax
cmp eax, 0x30
jb 0x1001d0e4
push esi
push ebx
call fcn.1001bcc0
add esp, 8
xor eax, eax
mov dl, byte [eax + esi + 0x10]
mov cl, byte [eax + esi]
xor cl, dl
mov byte [eax + esi], cl
inc eax
cmp eax, 0x10
jb 0x1001d0fd
lea edi, [esi + 0x10]
push edi
push ebx
call fcn.1001bcc0
mov ecx, 0xfffffff0
add esp, 8
mov eax, edi
sub ecx, esi
mov dl, byte [eax + 0x10]
xor byte [eax], dl
inc eax
lea edx, [eax + ecx]
cmp edx, 0x10
jb 0x1001d125
lea eax, [esi + 0x20]
push eax
push ebx
call fcn.1001bcc0
add esp, 8
jmp 0x1001d14a
mov al, byte [esi + 6]
mov cl, byte [esi + 0x2e]
cmp al, cl
jne case.0x1001d29f.4
mov cl, byte [esi + 7]
mov dl, byte [esi + 0x2f]
cmp cl, dl
jne case.0x1001d29f.4
mov dl, byte [ebp + 0x14]
mov cl, byte [esi + 0x2c]
cmp dl, cl
jne case.0x1001d29f.4
and al, 3
cmp al, 2
je 0x1001d263
pop edi
pop esi
mov ax, 0x1d02
pop ebx
pop ebp
ret
jmp 0x1001d191
xor eax, eax
mov cl, byte [eax + esi + 8]
mov byte [eax + esi], cl
inc eax
cmp eax, 0x20
jb 0x1001d193
push esi
push ebx
call fcn.1001bcc0
add esp, 8
xor eax, eax
mov dl, byte [eax + esi + 0x10]
mov cl, byte [eax + esi]
xor cl, dl
mov byte [eax + esi], cl
inc eax
cmp eax, 0x10
jb 0x1001d1ac
lea eax, [esi + 0x10]
push eax
push ebx
call fcn.1001bcc0
add esp, 8
jmp 0x1001d1d5
mov al, byte [esi + 6]
mov cl, byte [esi + 0x1e]
cmp al, cl
jne case.0x1001d29f.4
mov cl, byte [esi + 7]
mov dl, byte [esi + 0x1f]
cmp cl, dl
jne case.0x1001d29f.4
mov dl, byte [ebp + 0x14]
mov cl, byte [esi + 0x1c]
cmp dl, cl
jne case.0x1001d29f.4
and al, 3
cmp al, 1
je 0x1001d263
pop edi
pop esi
mov ax, 0x1d02
pop ebx
pop ebp
ret
jmp 0x1001d20c
xor eax, eax
mov cl, byte [eax + esi + 8]
mov byte [eax + esi], cl
inc eax
cmp eax, 0x10
jb 0x1001d20e
push esi
push ebx
call fcn.1001bcc0
add esp, 8
jmp 0x1001d22f
mov al, byte [esi + 6]
mov cl, byte [esi + 0xe]
cmp al, cl
jne case.0x1001d29f.4
mov dl, byte [esi + 7]
mov cl, byte [esi + 0xf]
cmp dl, cl
jne case.0x1001d29f.4
mov cl, byte [ebp + 0x14]
mov dl, byte [esi + 0xc]
cmp cl, dl
jne case.0x1001d29f.4
test al, 3
je 0x1001d263
pop edi
pop esi
mov ax, 0x1d02
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1d10
pop ebx
pop ebp
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 0x1001d295
pop edi
pop esi
mov ax, 0x1d0d
pop ebx
pop ebp
ret
mov eax, edi
and eax, 0xf
cmp eax, 7
ja case.default.0x1001d29f
jmp dword [eax*4 + 0x1001d300]
pop edi
pop esi
xor ax, ax
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1d41
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1d04
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1d0a
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1d15
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1d42
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1d3f
pop ebx
pop ebp
ret
pop edi
pop esi
mov ax, 0x1dff
pop ebx
pop ebp
ret