Function at 0x1000d560
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x2c]
xor eax, eax
mov esi, 0x100219f8
cmp edi, eax
mov ebp, esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], 1
je 0x1000d90e
cmp byte [edi], 0
je 0x1000d90e
mov dword [0x10021e58], eax
mov al, byte [edi]
test al, al
je 0x1000d8f5
mov ebx, 0x100219d0
mov dword [esp + 0x1c], ebx
mov cl, byte [edi]
mov dword [esp + 0x14], esi
mov eax, ecx
and eax, 0xff
add eax, 0xffffffdc
cmp eax, 0x3a
ja case.0x1000d5ca.42
xor edx, edx
mov dl, byte [eax + 0x1000d954]
jmp dword [edx*4 + 0x1000d938]
mov byte [esi], 2
jmp 0x1000d7fc
cmp edi, dword [esp + 0x2c]
jne 0x1000d5e7
mov byte [esi], 4
jmp 0x1000d7fc
mov byte [esi], 1
mov al, byte [edi]
inc esi
mov byte [esi], al
jmp 0x1000d7fc
mov al, byte [edi + 1]
test al, al
jne case.0x1000d74c.45
mov byte [esi], 5
jmp 0x1000d7fc
mov byte [esi], 3
mov al, byte [edi + 1]
inc esi
inc edi
cmp al, 0x5e
jne 0x1000d61b
mov byte [esp + 0x13], 0xff
inc edi
jmp 0x1000d620
mov byte [esp + 0x13], 0
cmp byte [edi], 0x2d
jne 0x1000d630
push 0x2d
inc edi
call fcn.1000d9c0
add esp, 4
cmp byte [edi], 0x5d
jne 0x1000d640
push 0x5d
inc edi
call fcn.1000d9c0
add esp, 4
mov al, byte [edi]
test al, al
je 0x1000d686
cmp al, 0x5d
je 0x1000d686
cmp al, 0x2d
jne 0x1000d6b2
mov cl, byte [edi + 1]
test cl, cl
je 0x1000d6b2
cmp cl, 0x5d
je 0x1000d6b2
inc edi
xor ebx, ebx
xor edx, edx
mov bl, byte [edi - 2]
mov dl, byte [edi]
inc ebx
mov ebp, edx
inc edi
cmp ebx, ebp
jg 0x1000d67c
mov al, bl
inc ebx
push eax
call fcn.1000d9c0
add esp, 4
cmp ebx, ebp
jle 0x1000d66c
mov ebx, dword [esp + 0x1c]
mov al, byte [edi]
test al, al
jne 0x1000d646
cmp byte [edi], 0
je 0x1000d82f
mov cl, byte [esp + 0x13]
xor eax, eax
mov dl, byte [eax + 0x10021e48]
mov byte [eax + 0x10021e48], 0
xor dl, cl
mov byte [esi], dl
inc esi
inc eax
cmp eax, 0x10
jl 0x1000d695
jmp 0x1000d7fd
push eax
inc edi
call fcn.1000d9c0
add esp, 4
jmp 0x1000d680
cmp edi, dword [esp + 0x2c]
je 0x1000d845
mov al, byte [ebp]
mov dword [esp + 0x14], ebp
cmp al, 0xb
je 0x1000d7fd
cmp al, 4
je 0x1000d85b
cmp al, 5
jbe 0x1000d6eb
cmp al, 0xa
jbe 0x1000d85b
cmp cl, 0x2b
jne 0x1000d72d
mov ecx, dword [esp + 0x14]
mov eax, esi
cmp ecx, esi
jae 0x1000d708
mov dl, byte [ecx]
mov byte [esi], dl
inc esi
inc ecx
cmp ecx, eax
jb 0x1000d6fa
mov dword [esp + 0x14], ecx
mov byte [esi], 0
inc esi
mov byte [esi], 0
inc esi
lea eax, [esi - 1]
cmp eax, ecx
mov dword [esp + 0x24], eax
jbe 0x1000d725
mov dl, byte [eax - 1]
mov byte [eax], dl
dec eax
cmp eax, ecx
ja 0x1000d71b
mov byte [eax], 0xb
jmp 0x1000d7fd
mov ecx, dword [esp + 0x14]
jmp 0x1000d708
inc edi
xor eax, eax
mov al, byte [edi]
lea ecx, [eax - 0x28]
cmp ecx, 0x16
ja case.0x1000d74c.45
xor edx, edx
mov dl, byte [ecx + 0x1000d9a8]
jmp dword [edx*4 + 0x1000d990]
mov eax, dword [esp + 0x20]
cmp eax, 0xa
jge 0x1000d871
mov edx, dword [esp + 0x18]
add ebx, 4
inc edx
mov byte [esi], 6
inc esi
mov dword [ebx], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], ebx
mov byte [esi], al
inc esi
inc eax
mov dword [esp + 0x20], eax
jmp 0x1000d7fd
cmp byte [ebp], 6
je 0x1000d887
cmp ebx, 0x100219d0
jle 0x1000d89d
mov al, byte [ebx]
mov ecx, dword [esp + 0x18]
mov byte [esi], 7
inc esi
mov byte [esi], al
inc esi
dec ecx
sub ebx, 4
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ebx
jmp 0x1000d7fd
mov byte [esi], 8
jmp 0x1000d7fc
cmp byte [ebp], 8
je 0x1000d8b3
mov byte [esi], 9
jmp 0x1000d7fc
add eax, 0xffffffd0
cmp ebx, 0x100219d0
jle 0x1000d7d8
cmp dword [ebx], eax
je 0x1000d8c9
cmp dword [esp + 0x20], eax
jle 0x1000d8df
mov byte [esi], 0xa
inc esi
mov byte [esi], al
jmp 0x1000d7fc
mov byte [esi], 1
mov cl, byte [edi]
inc esi
mov byte [esi], cl
jmp 0x1000d7fc
mov byte [esi], 1
mov dl, byte [edi]
inc esi
mov byte [esi], dl
inc esi
mov al, byte [edi + 1]
mov ebp, dword [esp + 0x14]
inc edi
test al, al
jne 0x1000d5a9
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x1000d8f5
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Unmatched__
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Missing__
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Empty_closure
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Illegal_closure
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Too_many____pairs
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Null_pattern_inside___
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, 0x1001dcc8
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, 0x1001dcac
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Cyclical_reference
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.Undetermined_reference
pop ebx
add esp, 0x18
ret 4
mov byte [esi], 0
pop edi
pop esi
pop ebp
mov dword [0x10021e58], 1
xor eax, eax
pop ebx
add esp, 0x18
ret 4
cmp dword [0x10021e58], eax
je 0x1000d922
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret 4
pop edi
pop esi
pop ebp
mov byte [0x100219f8], 0
mov eax, str.No_previous_regular_expression
pop ebx
add esp, 0x18
ret 4