Function at 0x4a198f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
and dword [ebp - 0xc], 0
mov edx, ecx
cmp dword [ebp + 8], 0
push ebx
push esi
lea eax, [edx + 0x16c]
mov dword [ebp - 0x14], edx
mov esi, eax
mov dword [ebp - 0x20], eax
push edi
mov ebx, eax
mov dword [ebp - 0x18], 1
lea ecx, [esi + 0xfd6]
mov dword [ebp - 0x24], ecx
je 0x4a1e8c
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x4a1e8c
and dword [edx + 0x116c], 0
and dword [ebp - 8], 0
mov edi, dword [ebp + 8]
test ecx, ecx
jle 0x4a1e7d
cmp esi, dword [ebp - 0x24]
ja 0x4a1e70
mov cl, byte [edi]
movsx eax, cl
mov dword [ebp - 0x10], esi
cmp eax, 0x3f
jg 0x4a1aea
je 0x4a1a3b
sub eax, 0x24
je 0x4a1a26
sub eax, 6
je 0x4a1a3b
sub eax, 1
je 0x4a1a3b
sub eax, 3
jne 0x4a1b06
mov byte [esi], 2
inc esi
jmp 0x4a1dda
cmp byte [edi + 1], 0
jne 0x4a1a31
mov byte [esi], 5
jmp 0x4a1a20
mov byte [esi], 1
inc esi
mov al, byte [edi]
mov byte [esi], al
jmp 0x4a1a20
cmp edi, dword [ebp + 8]
je 0x4a1e1c
mov al, byte [ebx]
mov dword [ebp - 0x10], ebx
cmp al, 0xb
je 0x4a1dda
cmp al, 0xd
je 0x4a1dda
movsx eax, al
sub eax, 4
je 0x4a1e15
dec eax
sub eax, 1
je 0x4a1e15
sub eax, 1
je 0x4a1e15
sub eax, 1
je 0x4a1e15
sub eax, 1
je 0x4a1e15
sub eax, 1
je 0x4a1e15
cmp cl, 0x2b
jne 0x4a1aad
mov edx, ebx
mov ecx, esi
cmp edx, esi
jae 0x4a1aad
mov al, byte [edx]
mov byte [esi], al
inc esi
inc edx
cmp edx, ecx
jb 0x4a1aa0
mov dword [ebp - 0x10], edx
mov ebx, dword [ebp - 0x10]
mov byte [esi], 0
inc esi
mov byte [esi], 0
lea edx, [esi + 1]
jmp 0x4a1ac2
mov al, byte [esi - 1]
mov byte [esi], al
dec esi
cmp esi, ebx
ja 0x4a1abc
cmp byte [edi], 0x3f
jne 0x4a1ad0
mov byte [esi], 0xc
jmp 0x4a1ae0
cmp byte [edi + 1], 0x3f
sete al
lea eax, [eax*2 + 0xb]
mov byte [esi], al
mov esi, edx
mov edx, dword [ebp - 0x14]
jmp 0x4a1ddd
sub eax, 0x5b
je 0x4a1cce
sub eax, 1
je 0x4a1bd3
dec eax
sub eax, 1
je 0x4a1bc2
cmp byte [ebp + 0x14], 0
je 0x4a1b6c
cmp cl, 0x28
jne 0x4a1b37
mov eax, dword [ebp - 0x18]
cmp eax, 0xa
jge 0x4a1e23
mov ecx, dword [ebp - 0xc]
inc ecx
mov dword [edx + ecx*4 + 0x144], eax
mov byte [esi], 6
mov byte [esi + 1], al
add esi, 2
inc eax
mov dword [ebp - 0x18], eax
jmp 0x4a1b61
cmp cl, 0x29
jne 0x4a1b6c
cmp byte [ebx], 6
je 0x4a1e31
mov ecx, dword [ebp - 0xc]
test ecx, ecx
jle 0x4a1e2a
mov byte [esi], 7
mov al, byte [edx + ecx*4 + 0x144]
mov byte [esi + 1], al
add esi, 2
dec ecx
mov dword [ebp - 0xc], ecx
mov ebx, dword [ebp - 0x10]
jmp 0x4a1de0
push 0x5c
test cl, cl
movzx ebx, cl
pop eax
cmove ebx, eax
cmp byte [ebp + 0x10], 0
mov byte [ebp - 0x28], bl
jne 0x4a1bb4
push dword [ebp - 0x28]
mov ecx, edx
call fcn.004a236e
test al, al
je 0x4a1bb1
mov ecx, dword [ebp - 0x14]
mov byte [esi], 3
inc esi
push 0x20
add ecx, 0x1170
pop edx
mov al, byte [ecx]
mov byte [esi], al
inc esi
mov byte [ecx], 0
inc ecx
sub edx, 1
jne 0x4a1b9e
jmp 0x4a1dd7
mov edx, dword [ebp - 0x14]
mov byte [esi], 1
mov byte [esi + 1], bl
add esi, 2
jmp 0x4a1dda
cmp edi, dword [ebp + 8]
jne 0x4a1a31
mov byte [esi], 4
jmp 0x4a1a20
inc dword [ebp - 8]
inc edi
mov cl, byte [edi]
movsx edx, cl
lea eax, [edx - 0x31]
cmp eax, 0xd
ja case.0x4a1beb.58
movzx eax, byte [eax + 0x4a1ebb]
jmp dword [eax*4 + 0x4a1eab]
mov byte [esi], 8
inc esi
jmp 0x4a1dd7
cmp byte [ebx], 8
je 0x4a1e38
mov byte [esi], 9
jmp 0x4a1bf5
mov ecx, dword [ebp - 0xc]
lea eax, [edx - 0x30]
test ecx, ecx
jle 0x4a1c28
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0xc]
cmp dword [ecx + edx*4 + 0x144], eax
je 0x4a1e3f
mov ecx, edx
cmp dword [ebp - 0x18], eax
jle 0x4a1e46
mov edx, dword [ebp - 0x14]
mov byte [esi], 0xa
mov byte [esi + 1], al
add esi, 2
jmp 0x4a1b64
cmp byte [ebp + 0x14], 0
jne 0x4a1c82
cmp cl, 0x28
jne 0x4a1c61
mov eax, dword [ebp - 0x18]
cmp eax, 0xa
jge 0x4a1e4d
mov edx, dword [ebp - 0x14]
jmp 0x4a1b1d
cmp cl, 0x29
jne 0x4a1c82
cmp byte [ebx], 6
je 0x4a1e5b
mov ecx, dword [ebp - 0xc]
test ecx, ecx
jle 0x4a1e54
mov edx, dword [ebp - 0x14]
jmp 0x4a1b50
mov ebx, dword [ebp - 0x14]
lea eax, [ebp - 0x1c]
push eax
push edi
mov ecx, ebx
call fcn.004a1ed4
mov ecx, dword [ebp - 8]
add ecx, dword [ebp - 0x1c]
add edi, dword [ebp - 0x1c]
mov dword [ebp - 8], ecx
test eax, eax
js 0x4a1cb1
mov byte [esi], 1
mov byte [esi + 1], al
add esi, 2
mov edx, ebx
jmp 0x4a1dda
push 0x20
mov byte [esi], 3
lea ecx, [ebx + 0x1170]
inc esi
pop edx
mov al, byte [ecx]
mov byte [esi], al
inc esi
mov byte [ecx], 0
inc ecx
sub edx, 1
jne 0x4a1cbe
jmp 0x4a1caa
mov ecx, dword [ebp - 8]
xor edx, edx
mov byte [esi], 3
inc esi
inc edi
mov al, byte [edi]
cmp al, 0x5e
jne 0x4a1cea
or ah, 0xff
inc edi
mov byte [ebp - 1], ah
inc ecx
mov al, byte [edi]
jmp 0x4a1ced
mov byte [ebp - 1], dl
inc ecx
mov dword [ebp - 8], ecx
cmp al, 0x2d
jne 0x4a1cff
inc ecx
inc edi
push 0x2d
mov dword [ebp - 8], ecx
pop edx
mov al, byte [edi]
cmp al, 0x5d
jne 0x4a1d6e
push 0x5d
jmp 0x4a1d1b
mov ebx, edi
cmp al, 0x5d
je 0x4a1db8
cmp al, 0x2d
jne 0x4a1d81
test edx, edx
jns 0x4a1d1e
push 0x2d
pop edx
jmp 0x4a1d67
mov al, byte [edi + 1]
test al, al
je 0x4a1e69
cmp al, 0x5d
je 0x4a1d7c
inc dword [ebp - 8]
inc edi
cmp al, 0x5c
jne 0x4a1d64
lea edi, [ebx + 2]
cmp byte [edi], 0
je 0x4a1e62
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x2c]
push eax
push edi
call fcn.004a1ed4
add edi, dword [ebp - 0x2c]
mov edx, eax
mov eax, dword [ebp - 8]
inc eax
add eax, dword [ebp - 0x2c]
mov dword [ebp - 8], eax
test edx, edx
js 0x4a1d7c
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 8]
inc ecx
inc edi
mov dword [ebp - 8], ecx
mov al, byte [edi]
test al, al
jne 0x4a1d07
mov eax, str.Missing__
jmp 0x4a1e75
push 0x2d
pop edx
jmp 0x4a1d64
cmp al, 0x5c
jne 0x4a1db3
cmp byte [edi + 1], 0
je 0x4a1db0
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x30]
push eax
inc edi
push edi
call fcn.004a1ed4
mov edx, dword [ebp - 8]
add edi, dword [ebp - 0x30]
inc edx
add edx, dword [ebp - 0x30]
mov dword [ebp - 8], edx
or edx, 0xffffffff
test eax, eax
cmovns edx, eax
jmp 0x4a1d64
mov ecx, dword [ebp - 8]
movzx edx, al
jmp 0x4a1d67
mov eax, dword [ebp - 0x14]
push 0x20
pop edx
lea ecx, [eax + 0x1170]
mov ah, byte [ebp - 1]
mov al, byte [ecx]
xor al, ah
mov byte [esi], al
inc esi
mov byte [ecx], 0
inc ecx
sub edx, 1
jne 0x4a1dc7
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc eax
inc edi
mov dword [ebp - 8], eax
cmp eax, dword [ebp + 0xc]
jl 0x4a19e9
test ecx, ecx
jle 0x4a1e7d
mov ecx, dword [ebp - 0x20]
mov eax, 0x53ed80
cmp byte [ebp + 0x14], 0
mov byte [ecx], 0
mov ecx, str.Unmatched__
cmove eax, ecx
jmp 0x4a1ea1
mov eax, str.Illegal_closure
jmp 0x4a1e75
mov eax, str.Empty_closure
jmp 0x4a1e75
mov eax, str.Too_many____pairs
jmp 0x4a1e75
mov eax, 0x53ed74
jmp 0x4a1e75
mov eax, str.Null_pattern_inside___
jmp 0x4a1e75
mov eax, 0x53ecc0
jmp 0x4a1e75
mov eax, str.Cyclical_reference
jmp 0x4a1e75
mov eax, str.Undetermined_reference
jmp 0x4a1e75
mov eax, 0x53ed08
jmp 0x4a1e75
mov eax, 0x53ed38
jmp 0x4a1e75
mov eax, 0x53ed1c
jmp 0x4a1e75
mov eax, 0x53ec7c
jmp 0x4a1e75
mov eax, 0x53ec88
jmp 0x4a1e75
mov eax, str.Pattern_too_long
mov ecx, dword [ebp - 0x20]
mov byte [ecx], 0
jmp 0x4a1ea1
mov byte [esi], 0
mov dword [edx + 0x116c], 1
jmp 0x4a1e95
cmp dword [edx + 0x116c], 0
je 0x4a1e99
xor eax, eax
jmp 0x4a1ea1
mov byte [eax], 0
mov eax, str.No_previous_regular_expression
pop edi
pop esi
pop ebx
leave
ret 0x10