Function at 0x42a6fa
Capabilities:
Encode data using xor
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, edx
push esi
push ebx
mov ebx, eax
sub esp, 0x2c
mov eax, dword [eax]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x28], eax
mov eax, dword [ebx]
mov dword [ebp - 0x20], eax
test edi, edi
je 0x42ad09
cmp dword [ebp - 0x1c], edi
je 0x42a737
movzx ecx, byte [edi]
cmp cl, 0x7c
je 0x42ace0
cmp cl, 0x29
jne 0x42a74d
jmp 0x42ace0
test edi, edi
je 0x42ad09
cmp dword [ebp - 0x1c], edi
jne 0x42ace0
jmp 0x42ad09
cmp cl, 0x28
jne 0x42a7cf
mov eax, dword [ebx + 4]
dec eax
mov dword [ebx + 4], eax
cmp eax, dword [ebp - 0x20]
jae 0x42a776
cmp dword [ebp + 8], 0
je 0x42ac3d
mov eax, dword [ebp + 8]
mov dword [eax], str.regular_expression_too_compex
jmp 0x42ac3d
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x1c]
lea edx, [edi + 1]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, ebx
call fcn.0042a6fa
test eax, eax
je 0x42ac96
inc dword [ebx + 4]
cmp dword [ebp - 0x1c], eax
je 0x42a7ac
cmp byte [eax], 0x29
lea esi, [eax + 1]
je 0x42ac98
cmp dword [ebp + 8], 0
je 0x42a7bb
mov edi, dword [ebp + 8]
mov dword [edi], 0x524696
cmp dword [ebp + 0xc], 0
je 0x42ac96
mov edx, dword [ebp + 0xc]
mov dword [edx], eax
jmp 0x42ac96
lea esi, [edi + 1]
cmp cl, 0x5b
jne 0x42ab68
cmp dword [ebp - 0x1c], esi
je 0x42a81f
cmp byte [edi + 1], 0x5e
mov dword [ebp - 0x24], 0
jne 0x42a7fc
lea esi, [edi + 2]
cmp dword [ebp - 0x1c], esi
je 0x42a81f
mov dword [ebp - 0x24], 1
cmp byte [esi], 0x5d
jne 0x42a818
mov dword [esp], 0x5d
mov edx, dword [ebp - 0x20]
mov ecx, 0x5d
inc esi
mov eax, ebx
call fcn.0042a53c
mov edi, esi
cmp dword [ebp - 0x1c], esi
jne 0x42a837
cmp dword [ebp + 8], 0
je 0x42ac8b
mov eax, dword [ebp + 8]
mov dword [eax], str.expected__
jmp 0x42ac8b
movzx ecx, byte [esi]
inc esi
cmp cl, 0x5d
jne 0x42a864
cmp dword [ebp - 0x24], 0
je 0x42ac56
mov ecx, dword [ebx]
xor eax, eax
xor edx, edx
test cl, 0x20
sete al
setne dl
shl edx, cl
shl eax, cl
xor ecx, ecx
jmp 0x42ab4c
cmp cl, 0x5b
jne 0x42ad1d
cmp dword [ebp - 0x1c], esi
jbe 0x42ad1d
mov al, byte [edi + 1]
cmp al, 0x2e
jne 0x42a895
cmp dword [ebp + 8], 0
je 0x42ac3d
mov eax, dword [ebp + 8]
mov dword [eax], str.collating_elements_are_not_supported
jmp 0x42ac3d
cmp al, 0x3d
jne 0x42a8b1
cmp dword [ebp + 8], 0
je 0x42ac3d
mov eax, dword [ebp + 8]
mov dword [eax], str.equivalence_classes_are_not_supported
jmp 0x42ac3d
cmp al, 0x3a
jne 0x42ad1d
add edi, 2
mov esi, edi
lea eax, [esi + 1]
cmp dword [ebp - 0x1c], eax
ja 0x42a8de
cmp dword [ebp + 8], 0
je 0x42ac8b
mov eax, dword [ebp + 8]
mov dword [eax], str.expected_:_
jmp 0x42ac8b
cmp byte [eax - 1], 0x3a
je 0x42a8e8
mov esi, eax
jmp 0x42a8be
cmp byte [eax], 0x5d
jne 0x42a8e4
mov dword [esp + 4], edi
add esi, 2
mov dword [esp], str.alnum
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42a91b
mov dword [esp], 0x39
mov edx, dword [ebx]
mov ecx, 0x30
mov eax, ebx
call fcn.0042a53c
jmp 0x42a99a
mov dword [esp + 4], edi
mov dword [esp], str.cntrl
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42a952
mov dword [esp], 0x1f
mov edx, dword [ebx]
xor ecx, ecx
mov eax, ebx
call fcn.0042a53c
mov dword [esp], 0x7f
mov ecx, 0x7f
jmp 0x42ab26
mov dword [esp + 4], edi
mov dword [esp], str.lower
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x42a9af
mov dword [esp + 4], edi
mov dword [esp], str.space
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42a986
mov dword [esp], 0xd
jmp 0x42aa45
mov dword [esp + 4], edi
mov dword [esp], 0x524721
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42a9bb
mov dword [esp], 0x5a
mov edx, dword [ebx]
mov ecx, 0x41
mov eax, ebx
call fcn.0042a53c
mov dword [esp], 0x7a
jmp 0x42ab21
mov dword [esp + 4], edi
mov dword [esp], str.digit
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42a9e0
mov dword [esp], 0x39
mov ecx, 0x30
jmp 0x42ab26
mov dword [esp + 4], edi
mov dword [esp], str.print
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42aa05
mov dword [esp], 0x7e
mov ecx, 0x20
jmp 0x42ab26
mov dword [esp + 4], edi
mov dword [esp], str.upper
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42aa2a
mov dword [esp], 0x5a
mov ecx, 0x41
jmp 0x42ab26
mov dword [esp + 4], edi
mov dword [esp], str.blank
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42aa5c
mov dword [esp], 9
mov edx, dword [ebx]
mov ecx, 9
mov eax, ebx
call fcn.0042a53c
mov dword [esp], 0x20
jmp 0x42a9fb
mov dword [esp + 4], edi
mov dword [esp], 0x52473f
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42aa81
mov dword [esp], 0x7e
mov ecx, 0x21
jmp 0x42ab26
mov dword [esp + 4], edi
mov dword [esp], str.punct
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42aade
mov dword [esp], 0x2f
mov edx, dword [ebx]
mov eax, ebx
mov ecx, 0x21
call fcn.0042a53c
mov dword [esp], 0x40
mov edx, dword [ebx]
mov ecx, 0x3a
call fcn.0042a53c
mov dword [esp], 0x60
mov edx, dword [ebx]
mov ecx, 0x5b
call fcn.0042a53c
mov dword [esp], 0x7e
mov ecx, 0x7b
jmp 0x42ab26
mov dword [esp + 4], edi
mov dword [esp], str.xdigit
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42ab34
mov dword [esp], 0x39
mov edx, dword [ebx]
mov ecx, 0x30
mov eax, ebx
call fcn.0042a53c
mov dword [esp], 0x46
mov edx, dword [ebx]
mov ecx, 0x41
call fcn.0042a53c
mov dword [esp], 0x66
mov ecx, 0x61
mov edx, dword [ebx]
mov eax, ebx
call fcn.0042a53c
jmp 0x42a818
cmp dword [ebp + 8], 0
je 0x42ac8b
mov eax, dword [ebp + 8]
mov dword [eax], str.unknown_character_class_name
jmp 0x42ac8b
xor dword [ebx + ecx*8 + 0x228], eax
xor dword [ebx + ecx*8 + 0x22c], edx
inc ecx
cmp ecx, 0x100
jne 0x42ab4c
jmp 0x42ac56
cmp cl, 0x2e
jne 0x42ab7e
mov dword [esp], 0xffffffff
mov edx, dword [ebp - 0x20]
xor ecx, ecx
jmp 0x42ac4f
cmp cl, 0x5e
jne 0x42aba2
mov cl, byte [ebp - 0x20]
xor eax, eax
xor edx, edx
test cl, 0x20
sete al
setne dl
shl edx, cl
shl eax, cl
or dword [ebx + 0x1c], edx
or dword [ebx + 0x18], eax
jmp 0x42ac56
cmp cl, 0x24
jne 0x42abc6
mov cl, byte [ebp - 0x20]
xor eax, eax
xor edx, edx
test cl, 0x20
sete al
setne dl
shl edx, cl
shl eax, cl
or dword [ebx + 0x24], edx
or dword [ebx + 0x20], eax
jmp 0x42ac56
cmp cl, 0x5c
jne 0x42abf6
cmp dword [ebp - 0x1c], esi
jne 0x42abf0
cmp dword [ebp + 8], 0
je 0x42abdf
mov eax, dword [ebp + 8]
mov dword [eax], str.trailing_
cmp dword [ebp + 0xc], 0
je 0x42abfb
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov dword [eax], esi
xor esi, esi
jmp 0x42abff
movzx ecx, byte [edi + 1]
jmp 0x42abf8
mov esi, edi
inc esi
jmp 0x42abff
xor esi, esi
xor ecx, ecx
test esi, esi
jne 0x42ac4a
cmp dword [ebp + 0xc], 0
je 0x42ac2a
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp dword [ebp - 0x1c], eax
jbe 0x42ad6d
test eax, eax
je 0x42ad6d
cmp byte [eax], 0x5c
jne 0x42ad6d
jmp 0x42ac96
test esi, esi
jne 0x42ac4a
cmp dword [ebp + 8], 0
je 0x42ac3d
mov eax, dword [ebp + 8]
mov dword [eax], str.expected_._______or_a_character
cmp dword [ebp + 0xc], 0
je 0x42ac96
mov eax, dword [ebp + 0xc]
mov dword [eax], edi
jmp 0x42ac96
mov dword [esp], ecx
mov edx, dword [ebx]
mov eax, ebx
call fcn.0042a53c
mov eax, dword [ebx]
xor edx, edx
lea ecx, [eax + 1]
lea edi, [ebx + eax*8]
xor eax, eax
test cl, 0x20
sete al
setne dl
shl edx, cl
shl eax, cl
or dword [edi + 0x2c], edx
or dword [edi + 0x28], eax
mov dword [ebx], ecx
cmp ecx, dword [ebx + 4]
jbe 0x42ac98
cmp dword [ebp + 8], 0
je 0x42ac8b
mov eax, dword [ebp + 8]
mov dword [eax], str.regular_expression_too_compex
cmp dword [ebp + 0xc], 0
je 0x42ac96
mov eax, dword [ebp + 0xc]
mov dword [eax], esi
xor esi, esi
test esi, esi
jne 0x42aca3
mov edi, esi
jmp 0x42a70f
cmp dword [ebp - 0x1c], esi
je 0x42ac9c
mov al, byte [esi]
lea edx, [eax - 0x2a]
cmp dl, 1
jbe 0x42acb8
cmp al, 0x3f
jne 0x42ac9c
jmp 0x42acbc
cmp al, 0x2a
jne 0x42acd1
mov ecx, dword [ebx]
mov edx, dword [ebp - 0x20]
mov eax, ebx
call fcn.0042a581
mov al, byte [esi]
sub eax, 0x2a
cmp al, 1
ja 0x42acdd
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebx]
mov eax, ebx
call fcn.0042a581
inc esi
jmp 0x42ac9c
cmp byte [edi], 0x7c
mov ecx, dword [ebx + 4]
jne 0x42ad09
inc edi
cmp ecx, dword [ebp - 0x20]
je 0x42acf8
mov edx, dword [ebp - 0x20]
mov eax, ebx
call fcn.0042a637
mov ecx, dword [ebx]
mov edx, dword [ebp - 0x28]
mov eax, ebx
call fcn.0042a581
jmp 0x42a70f
mov edx, dword [ebx + 4]
cmp edx, dword [ebp - 0x20]
je 0x42ad7c
mov ecx, dword [ebp - 0x20]
mov eax, ebx
call fcn.0042a637
jmp 0x42ad7c
lea eax, [edi + 2]
cmp dword [ebp - 0x1c], eax
jbe 0x42ad65
cmp byte [edi + 1], 0x2d
jne 0x42ad65
movzx eax, byte [edi + 2]
cmp al, 0x5d
je 0x42ad65
add edi, 3
cmp ecx, eax
jbe 0x42ad52
cmp dword [ebp + 8], 0
je 0x42ac8b
mov eax, dword [ebp + 8]
mov dword [eax], str.invalid_range
jmp 0x42ac8b
mov dword [esp], eax
mov edx, dword [ebx]
mov eax, ebx
mov esi, edi
call fcn.0042a53c
jmp 0x42a818
mov dword [esp], ecx
jmp 0x42ab26
cmp dword [ebp + 8], 0
jne 0x42ac34
jmp 0x42ac43
add esp, 0x2c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret