Function at 0x10069911
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x68
mov eax, dword [0x100c50e4]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 8]
mov dword [ebp - 0x60], edx
push esi
mov esi, ecx
mov dword [ebp - 0x5c], esi
test edx, edx
je 0x1006a11b
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x1006a11b
xorps xmm0, xmm0
mov dword [ebp - 0x38], 0
lea eax, [esi + 0x1060]
movq qword [ebp - 0xc], xmm0
movups xmmword [eax], xmm0
push ebx
movups xmmword [eax + 0x10], xmm0
mov dword [ebp - 0x64], eax
lea eax, [esi + 0x58]
push edi
mov edi, eax
mov byte [eax], 0
mov dword [ebp - 0x44], eax
mov ebx, eax
mov dword [ebp - 0x40], edi
movups xmmword [ebp - 0x2c], xmm0
lea eax, [edi + 0xfd6]
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x68], eax
movups xmmword [ebp - 0x1c], xmm0
mov dword [esi + 0x1058], 0
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], 0
jle 0x1006a0f9
cmp edi, eax
ja 0x1006a0db
mov cl, byte [edx]
movsx eax, cl
add eax, 0xffffffdc
mov dword [ebp - 0x50], edi
cmp eax, 0x3a
ja case.0x100698e5.37
movzx eax, byte [eax + 0x1006a170]
jmp dword [eax*4 + 0x1006a154]
mov byte [edi], 2
inc edi
jmp 0x10069f3e
cmp edx, dword [ebp - 0x60]
jne 0x10069903
mov byte [edi], 4
inc edi
jmp 0x10069f3e
mov byte [edi], 1
inc edi
mov al, byte [edx]
mov byte [edi], al
inc edi
jmp 0x10069f3e
cmp byte [edx + 1], 0
jne 0x10069903
mov byte [edi], 5
inc edi
jmp 0x10069f3e
mov eax, dword [ebp - 0x30]
inc edx
xor ecx, ecx
mov dword [ebp - 0x34], edx
inc eax
mov dword [ebp - 0x3c], ecx
mov byte [ebp - 0x49], cl
mov bl, byte [edx]
mov dword [ebp - 0x30], eax
cmp bl, 0x5e
jne 0x10069949
mov bl, byte [edx + 1]
inc eax
inc edx
mov byte [ebp - 0x49], 0xff
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], edx
cmp bl, 0x2d
jne 0x10069974
inc eax
inc edx
mov dword [ebp - 0x30], eax
mov ecx, 0x2d
movzx eax, byte [esi + 0x1065]
bts eax, 5
mov dword [ebp - 0x3c], ecx
mov byte [esi + 0x1065], al
mov bl, byte [edx]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x34], edx
cmp bl, 0x5d
jne 0x1006999c
inc eax
inc edx
mov dword [ebp - 0x30], eax
mov ecx, 0x5d
movzx eax, byte [esi + 0x106b]
bts eax, 5
mov dword [ebp - 0x3c], ecx
mov byte [esi + 0x106b], al
mov bl, byte [edx]
mov dword [ebp - 0x34], edx
test bl, bl
je 0x10069b0f
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x58], edx
cmp bl, 0x5d
je 0x10069be9
cmp bl, 0x2d
jne 0x10069b2d
test ecx, ecx
jns 0x100699e1
movzx eax, byte [esi + 0x1065]
mov ecx, 0x2d
bts eax, 5
mov dword [ebp - 0x3c], ecx
mov byte [esi + 0x1065], al
jmp 0x10069afa
mov al, byte [edx + 1]
test al, al
je 0x10069b0f
cmp al, 0x5d
je 0x100699c3
mov ebx, dword [ebp - 0x3c]
inc edx
inc dword [ebp - 0x30]
inc ebx
movzx eax, al
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x48], eax
cmp eax, 0x5c
jne 0x10069a82
mov eax, dword [ebp - 0x58]
add eax, 2
mov dword [ebp - 0x34], eax
cmp byte [eax], 0
je 0x10069b0f
lea ecx, [ebp - 0x3c]
mov dword [ebp - 0x3c], 0
push ecx
push eax
mov ecx, esi
call fcn.10069500
mov edx, dword [ebp - 0x30]
mov ecx, eax
inc edx
mov dword [ebp - 0x48], ecx
add edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x34]
add edx, dword [ebp - 0x3c]
mov dword [ebp - 0x34], edx
test ecx, ecx
js 0x10069a71
movzx edx, cl
mov ecx, edx
and edx, 7
shr ecx, 3
movzx eax, byte [ecx + esi + 0x1060]
bts eax, edx
mov edx, dword [ebp - 0x34]
mov byte [ecx + esi + 0x1060], al
mov eax, dword [ebp - 0x48]
mov ecx, eax
mov dword [ebp - 0x3c], ecx
jmp 0x10069a85
or byte [esi + 0x1065], 0x20
mov ecx, 0x2d
mov dword [ebp - 0x3c], ecx
jmp 0x10069afa
mov ecx, dword [ebp - 0x3c]
cmp ebx, eax
jg 0x10069afa
mov edi, dword [ebp - 0x5c]
nop dword [eax]
mov al, bl
inc ebx
movzx esi, al
mov edx, esi
and esi, 7
shr edx, 3
movzx ecx, byte [edx + edi + 0x1060]
bts ecx, esi
cmp byte [ebp + 0x10], 0
mov byte [edx + edi + 0x1060], cl
jne 0x10069ae9
lea ecx, [eax - 0x61]
cmp cl, 0x19
ja 0x10069ac2
sub al, 0x20
jmp 0x10069acc
lea ecx, [eax - 0x41]
cmp cl, 0x19
ja 0x10069ae9
add al, 0x20
movzx edx, al
mov ecx, edx
and edx, 7
shr ecx, 3
movzx eax, byte [ecx + edi + 0x1060]
bts eax, edx
mov byte [ecx + edi + 0x1060], al
cmp ebx, dword [ebp - 0x48]
jle 0x10069a90
mov edi, dword [ebp - 0x40]
mov esi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x30]
inc edx
inc eax
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], eax
mov bl, byte [edx]
test bl, bl
jne 0x100699a7
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Missing__
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
cmp bl, 0x5c
jne 0x10069b98
cmp byte [edx + 1], 0
lea eax, [edx + 1]
je 0x10069b98
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x34], eax
push ecx
push eax
mov ecx, esi
mov dword [ebp - 0x48], 0
call fcn.10069500
mov edx, dword [ebp - 0x30]
inc edx
mov dword [ebp - 0x3c], eax
add edx, dword [ebp - 0x48]
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x34]
add edx, dword [ebp - 0x48]
mov dword [ebp - 0x34], edx
test eax, eax
js 0x10069b8d
movzx edx, al
mov ecx, edx
and edx, 7
shr ecx, 3
movzx eax, byte [ecx + esi + 0x1060]
bts eax, edx
mov byte [ecx + esi + 0x1060], al
jmp 0x10069af4
or ecx, 0xffffffff
mov dword [ebp - 0x3c], ecx
jmp 0x10069afa
movzx eax, bl
mov dword [ebp - 0x3c], eax
shr eax, 3
movzx ecx, byte [eax + esi + 0x1060]
lea edx, [eax + esi]
mov eax, dword [ebp - 0x3c]
and eax, 7
bts ecx, eax
cmp byte [ebp + 0x10], 0
mov byte [edx + 0x1060], cl
jne 0x10069af4
mov al, bl
sub al, 0x61
cmp al, 0x19
ja 0x10069bd5
sub bl, 0x20
movzx edx, bl
jmp 0x10069b6e
mov al, bl
sub al, 0x41
cmp al, 0x19
ja 0x10069af4
add bl, 0x20
movzx edx, bl
jmp 0x10069b6e
mov edx, dword [ebp - 0x48]
lea ebx, [esi + 0x1080]
mov byte [edi], 3
lea ecx, [esi + 0x1060]
inc edi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x40], edi
cmp dword [ebp - 0x64], ebx
je 0x10069c1f
mov dword [ebp - 0x30], eax
mov ah, byte [ebp - 0x49]
nop dword [eax]
mov al, byte [ecx]
inc ecx
xor al, ah
mov byte [edi], al
inc edi
cmp ecx, ebx
jne 0x10069c10
mov dword [ebp - 0x40], edi
xorps xmm0, xmm0
movups xmmword [esi + 0x1060], xmm0
movups xmmword [esi + 0x1070], xmm0
jmp 0x10069f41
cmp edx, dword [ebp - 0x60]
je 0x10069f81
mov al, byte [ebx]
mov dword [ebp - 0x50], ebx
cmp al, 0xb
je 0x10069f41
cmp al, 0xd
je 0x10069f41
movsx eax, al
add eax, 0xfffffffc
cmp eax, 6
ja case.0x10069c65.5
movzx eax, byte [eax + 0x1006a1b4]
jmp dword [eax*4 + 0x1006a1ac]
cmp cl, 0x2b
jne 0x10069c8d
mov ebx, dword [ebp - 0x50]
mov ecx, edi
cmp ebx, edi
jae 0x10069c8d
nop word [eax + eax]
mov al, byte [ebx]
inc ebx
mov byte [edi], al
inc edi
cmp ebx, ecx
jb 0x10069c80
mov dword [ebp - 0x50], ebx
mov byte [edi], 0
inc edi
lea ebx, [edi + 1]
mov byte [edi], 0
cmp edi, dword [ebp - 0x50]
jbe 0x10069cad
mov esi, dword [ebp - 0x50]
nop
mov al, byte [edi - 1]
mov byte [edi], al
dec edi
cmp edi, esi
ja 0x10069ca0
mov esi, dword [ebp - 0x5c]
cmp byte [edx], 0x3f
jne 0x10069cbc
mov byte [edi], 0xc
mov edi, ebx
jmp 0x10069f3e
cmp byte [edx + 1], 0x3f
sete al
lea eax, [eax*2 + 0xb]
mov byte [edi], al
mov edi, ebx
jmp 0x10069f3e
mov cl, byte [edx + 1]
inc edx
inc dword [ebp - 0x30]
movsx eax, cl
mov dword [ebp - 0x58], eax
add eax, 0xffffffcf
mov dword [ebp - 0x34], edx
cmp eax, 0xd
ja case.0x10069cf2.58
movzx eax, byte [eax + 0x1006a1cc]
jmp dword [eax*4 + 0x1006a1bc]
mov byte [edi], 8
inc edi
jmp 0x10069f3e
cmp byte [ebx], 8
je 0x10069f9f
mov byte [edi], 9
inc edi
jmp 0x10069f3e
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x38]
add eax, 0xffffffd0
test ecx, ecx
jle 0x10069d2b
cmp dword [ebp + ecx*4 - 0x2c], eax
je 0x10069fbd
cmp dword [ebp - 0x54], eax
jle 0x10069fdb
mov byte [edi], 0xa
mov byte [edi + 1], al
add edi, 2
mov dword [ebp - 0x40], edi
jmp 0x10069f44
cmp byte [ebp + 0x14], 0
jne 0x10069db0
cmp cl, 0x28
jne 0x10069d7e
mov ebx, dword [ebp - 0x54]
cmp ebx, 0xa
jge 0x10069ff9
mov ecx, dword [ebp - 0x38]
mov al, bl
inc ecx
mov byte [edi], 6
mov byte [edi + 1], al
mov dword [ebp - 0x38], ecx
mov dword [ebp + ecx*4 - 0x2c], ebx
inc ebx
add edi, 2
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x40], edi
jmp 0x10069f44
cmp cl, 0x29
jne 0x10069db0
cmp byte [ebx], 6
je 0x1006a035
mov ecx, dword [ebp - 0x38]
test ecx, ecx
jle 0x1006a017
mov al, byte [ebp + ecx*4 - 0x2c]
dec ecx
mov byte [edi], 7
mov byte [edi + 1], al
add edi, 2
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x40], edi
jmp 0x10069f44
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 0
push eax
push edx
mov ecx, esi
call fcn.10069500
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x34]
add dword [ebp - 0x30], ecx
add edx, ecx
lea ecx, [edi + 1]
test eax, eax
js 0x10069de2
mov byte [edi], 1
mov edi, ecx
mov byte [edi], al
inc edi
jmp 0x10069f3e
lea eax, [esi + 0x1060]
mov byte [edi], 3
lea ebx, [eax + 0x20]
mov dword [ebp - 0x40], ecx
mov edi, ecx
mov ecx, eax
cmp eax, ebx
je 0x10069e13
nop dword [eax]
mov al, byte [ecx]
inc ecx
mov byte [edi], al
inc edi
cmp ecx, ebx
jne 0x10069e00
mov dword [ebp - 0x40], edi
lea eax, [esi + 0x1060]
xorps xmm0, xmm0
movups xmmword [eax], xmm0
movups xmmword [eax + 0x10], xmm0
jmp 0x10069f41
cmp byte [ebp + 0x14], 0
je 0x10069e8d
cmp cl, 0x28
jne 0x10069e5b
mov ebx, dword [ebp - 0x54]
cmp ebx, 0xa
jge 0x1006a053
mov ecx, dword [ebp - 0x38]
mov al, bl
inc ecx
mov byte [edi], 6
mov byte [edi + 1], al
mov dword [ebp - 0x38], ecx
mov dword [ebp + ecx*4 - 0x2c], ebx
inc ebx
add edi, 2
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x40], edi
jmp 0x10069f44
cmp cl, 0x29
jne 0x10069e8d
cmp byte [ebx], 6
je 0x1006a08f
mov ecx, dword [ebp - 0x38]
test ecx, ecx
jle 0x1006a071
mov al, byte [ebp + ecx*4 - 0x2c]
dec ecx
mov byte [edi], 7
mov byte [edi + 1], al
add edi, 2
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x40], edi
jmp 0x10069f44
test cl, cl
movzx ebx, cl
mov eax, 0x5c
cmove ebx, eax
cmp byte [ebp + 0x10], 0
jne 0x10069f35
mov eax, dword [esi + 0x1080]
movzx ecx, bl
mov dword [ebp - 0x58], ecx
cmp byte [ecx + eax], 2
jne 0x10069f35
shr ecx, 3
add ecx, esi
mov esi, dword [ebp - 0x58]
and esi, 7
movzx eax, byte [ecx + 0x1060]
bts eax, esi
mov esi, dword [ebp - 0x5c]
mov byte [ecx + 0x1060], al
mov al, bl
sub al, 0x61
cmp al, 0x19
ja 0x10069ee1
sub bl, 0x20
jmp 0x10069eec
mov al, bl
sub al, 0x41
cmp al, 0x19
ja 0x10069f0c
add bl, 0x20
movzx edx, bl
mov ecx, edx
and edx, 7
shr ecx, 3
movzx eax, byte [ecx + esi + 0x1060]
bts eax, edx
mov edx, dword [ebp - 0x34]
mov byte [ecx + esi + 0x1060], al
lea eax, [esi + 0x1060]
mov byte [edi], 3
inc edi
lea ebx, [eax + 0x20]
mov dword [ebp - 0x40], edi
mov ecx, eax
cmp eax, ebx
je 0x10069e13
mov al, byte [ecx]
inc ecx
mov byte [edi], al
inc edi
cmp ecx, ebx
jne 0x10069f26
jmp 0x10069e0a
mov byte [edi], 1
mov byte [edi + 1], bl
add edi, 2
mov dword [ebp - 0x40], edi
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x30]
inc edx
mov ebx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], edx
cmp eax, dword [ebp + 0xc]
jge 0x1006a0ad
mov eax, dword [ebp - 0x68]
jmp 0x100698c2
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Illegal_closure
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Empty_closure
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, 0x100ba4b0
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Cyclical_reference
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Undetermined_reference
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, 0x100ba4f8
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, 0x100ba528
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, 0x100ba50c
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Too_many____pairs
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, 0x100ba564
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Null_pattern_inside___
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
test ecx, ecx
jle 0x1006a0f9
mov eax, dword [ebp - 0x44]
mov ecx, str.Unmatched__
cmp byte [ebp + 0x14], 0
pop edi
pop ebx
mov byte [eax], 0
mov eax, 0x100ba570
cmove eax, ecx
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp - 0x44]
pop edi
pop ebx
pop esi
mov byte [eax], 0
mov eax, str.Pattern_too_long
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov byte [edi], 0
xor eax, eax
pop edi
pop ebx
mov dword [esi + 0x1058], 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
cmp dword [esi + 0x1058], 0
je 0x1006a137
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp - 4]
mov eax, str.No_previous_regular_expression
mov byte [esi + 0x58], 0
xor ecx, ebp
pop esi
call fcn.10083210
mov esp, ebp
pop ebp
ret 0x10