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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov eax, dword [rcx]
mov rdi, qword [rsp + 0xb0]
mov dword [rsp + 0x3c], eax
mov r12, rcx
mov rbp, r8
mov rsi, r9
mov r11, rdx
mov r14d, dword [r12]
test r11, r11
je 0x42c43a
cmp rbp, r11
je 0x42be5c
movzx r8d, byte [r11]
cmp r8b, 0x7c
je 0x42c407
cmp r8b, 0x29
jne 0x42be73
jmp 0x42c407
test r11, r11
je 0x42c43a
cmp rbp, r11
jne 0x42c407
jmp 0x42c43a
cmp r8b, 0x28
jne 0x42bef6
mov eax, dword [r12 + 4]
dec eax
mov dword [r12 + 4], eax
cmp eax, r14d
jae 0x42be9f
lea rax, str.regular_expression_too_compex
test rsi, rsi
jne 0x42c361
jmp 0x42c364
mov qword [rsp + 0x20], rdi
lea rdx, [r11 + 1]
mov r9, rsi
mov r8, rbp
mov rcx, r12
call fcn.0042be07
test rax, rax
je 0x42c3b3
inc dword [r12 + 4]
cmp rbp, rax
je 0x42bed6
cmp byte [rax], 0x29
lea rbx, [rax + 1]
je 0x42c3b5
test rsi, rsi
je 0x42bee5
lea rbx, [0x0053273e]
mov qword [rsi], rbx
test rdi, rdi
je 0x42c3b3
mov qword [rdi], rax
jmp 0x42c3b3
lea rbx, [r11 + 1]
cmp r8b, 0x5b
jne 0x42c29e
cmp rbp, rbx
je 0x42bf49
xor r15d, r15d
cmp byte [r11 + 1], 0x5e
jne 0x42bf22
lea rbx, [r11 + 2]
cmp rbp, rbx
je 0x42bf49
mov r15d, 1
cmp byte [rbx], 0x5d
jne 0x42bf41
mov r9d, 0x5d
mov edx, r14d
mov rcx, r12
inc rbx
mov r8d, 0x5d
call fcn.0042bd20
mov r13, rbx
cmp rbp, rbx
jne 0x42bf5e
lea rax, str.expected__
test rsi, rsi
jne 0x42c3a8
jmp 0x42c3ab
movzx r8d, byte [rbx]
inc rbx
cmp r8b, 0x5d
jne 0x42bf8a
test r15d, r15d
je 0x42c37d
mov ecx, dword [r12]
mov eax, 1
shl rax, cl
mov rdx, rax
xor eax, eax
jmp 0x42c285
cmp r8b, 0x5b
jne 0x42c451
cmp rbp, rbx
jbe 0x42c451
mov al, byte [r13 + 1]
cmp al, 0x2e
jne 0x42bfb3
lea rax, str.collating_elements_are_not_supported
test rsi, rsi
jne 0x42bfc3
jmp 0x42bfc6
cmp al, 0x3d
jne 0x42bfd7
test rsi, rsi
je 0x42bfc6
lea rax, str.equivalence_classes_are_not_supported
mov qword [rsi], rax
test rdi, rdi
je 0x42c3b3
mov qword [rdi], r13
jmp 0x42c3b3
cmp al, 0x3a
jne 0x42c451
add r13, 2
mov rbx, r13
lea rax, [rbx + 1]
cmp rbp, rax
ja 0x42c004
lea rax, str.expected_:_
test rsi, rsi
jne 0x42c3a8
jmp 0x42c3ab
cmp byte [rax - 1], 0x3a
je 0x42c00f
mov rbx, rax
jmp 0x42bfe6
cmp byte [rax], 0x5d
jne 0x42c00a
mov rdx, r13
lea rcx, str.alnum
add rbx, 2
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c045
mov edx, dword [r12]
mov r9d, 0x39
mov r8d, 0x30
mov rcx, r12
call fcn.0042bd20
jmp 0x42c0c1
mov rdx, r13
lea rcx, str.cntrl
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c07e
mov edx, dword [r12]
mov r9d, 0x1f
xor r8d, r8d
mov rcx, r12
call fcn.0042bd20
mov r9d, 0x7f
mov r8d, 0x7f
jmp 0x42c25f
mov rdx, r13
lea rcx, str.lower
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x42c0d9
mov rdx, r13
lea rcx, str.space
call sub.msvcrt.dll_strcmp
mov r9d, 0xd
test eax, eax
je 0x42c169
mov rdx, r13
lea rcx, [0x005327c9]
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c0e4
mov edx, dword [r12]
mov r9d, 0x5a
mov r8d, 0x41
mov rcx, r12
call fcn.0042bd20
mov r9d, 0x7a
jmp 0x42c259
mov rdx, r13
lea rcx, str.digit
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c108
mov r9d, 0x39
mov r8d, 0x30
jmp 0x42c25f
mov rdx, r13
lea rcx, str.print
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c12c
mov r9d, 0x7e
mov r8d, 0x20
jmp 0x42c25f
mov rdx, r13
lea rcx, str.upper
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c150
mov r9d, 0x5a
mov r8d, 0x41
jmp 0x42c25f
mov rdx, r13
lea rcx, str.blank
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c183
mov r9d, 9
mov edx, dword [r12]
mov r8d, 9
mov rcx, r12
call fcn.0042bd20
mov r9d, 0x20
jmp 0x42c121
mov rdx, r13
lea rcx, [0x005327e7]
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c1a7
mov r9d, 0x7e
mov r8d, 0x21
jmp 0x42c25f
mov rdx, r13
lea rcx, str.punct
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c210
mov edx, dword [r12]
mov r9d, 0x2f
mov r8d, 0x21
mov rcx, r12
call fcn.0042bd20
mov edx, dword [r12]
mov r9d, 0x40
mov rcx, r12
mov r8d, 0x3a
call fcn.0042bd20
mov edx, dword [r12]
mov r9d, 0x60
mov rcx, r12
mov r8d, 0x5b
call fcn.0042bd20
mov r9d, 0x7e
mov r8d, 0x7b
jmp 0x42c25f
mov rdx, r13
lea rcx, str.xdigit
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c270
mov edx, dword [r12]
mov r9d, 0x39
mov r8d, 0x30
mov rcx, r12
call fcn.0042bd20
mov edx, dword [r12]
mov r9d, 0x46
mov rcx, r12
mov r8d, 0x41
call fcn.0042bd20
mov r9d, 0x66
mov r8d, 0x61
mov edx, dword [r12]
mov rcx, r12
call fcn.0042bd20
jmp 0x42bf41
lea rax, str.unknown_character_class_name
test rsi, rsi
jne 0x42c3a8
jmp 0x42c3ab
xor qword [r12 + rax + 0x228], rdx
add rax, 8
cmp rax, 0x800
jne 0x42c285
jmp 0x42c37d
cmp r8b, 0x2e
jne 0x42c2b3
or r9d, 0xffffffff
xor r8d, r8d
mov edx, r14d
jmp 0x42c375
cmp r8b, 0x5e
jne 0x42c2ce
mov eax, 1
mov ecx, r14d
shl rax, cl
or qword [r12 + 0x18], rax
jmp 0x42c37d
cmp r8b, 0x24
jne 0x42c2e9
mov eax, 1
mov ecx, r14d
shl rax, cl
or qword [r12 + 0x20], rax
jmp 0x42c37d
cmp r8b, 0x5c
jne 0x42c319
cmp rbp, rbx
jne 0x42c312
test rsi, rsi
je 0x42c303
lea rax, str.trailing_
mov qword [rsi], rax
test rdi, rdi
je 0x42c321
mov qword [rdi], rbx
xor r8d, r8d
xor ebx, ebx
jmp 0x42c326
movzx r8d, byte [r11 + 1]
jmp 0x42c31c
mov rbx, r11
inc rbx
jmp 0x42c326
xor ebx, ebx
xor r8d, r8d
test rbx, rbx
jne 0x42c36e
test rdi, rdi
je 0x42c350
mov rax, qword [rdi]
cmp rbp, rax
jbe 0x42c4a6
test rax, rax
je 0x42c4a6
cmp byte [rax], 0x5c
jne 0x42c4a6
jmp 0x42c3b3
test rbx, rbx
jne 0x42c36e
test rsi, rsi
je 0x42c364
lea rax, str.expected_._______or_a_character
mov qword [rsi], rax
test rdi, rdi
je 0x42c3b3
mov qword [rdi], r11
jmp 0x42c3b3
mov edx, dword [r12]
mov r9d, r8d
mov rcx, r12
call fcn.0042bd20
mov eax, dword [r12]
mov edx, 1
lea ecx, [rax + 1]
shl rdx, cl
or qword [r12 + rax*8 + 0x28], rdx
mov dword [r12], ecx
cmp ecx, dword [r12 + 4]
jbe 0x42c3b5
test rsi, rsi
je 0x42c3ab
lea rax, str.regular_expression_too_compex
mov qword [rsi], rax
test rdi, rdi
je 0x42c3b3
mov qword [rdi], rbx
xor ebx, ebx
test rbx, rbx
jne 0x42c3c2
mov r11, rbx
jmp 0x42be31
cmp rbp, rbx
je 0x42c3ba
mov al, byte [rbx]
lea edx, [rax - 0x2a]
cmp dl, 1
jbe 0x42c3d7
cmp al, 0x3f
jne 0x42c3ba
jmp 0x42c3db
cmp al, 0x2a
jne 0x42c3f3
mov r8d, dword [r12]
mov edx, r14d
mov rcx, r12
call fcn.0042bd5d
mov al, byte [rbx]
sub eax, 0x2a
cmp al, 1
ja 0x42c402
mov edx, dword [r12]
mov r8d, r14d
mov rcx, r12
call fcn.0042bd5d
inc rbx
jmp 0x42c3ba
cmp byte [r11], 0x7c
mov r8d, dword [r12 + 4]
jne 0x42c43a
inc r11
cmp r8d, r14d
je 0x42c425
mov edx, r14d
mov rcx, r12
call fcn.0042bdac
mov r8d, dword [r12]
mov edx, dword [rsp + 0x3c]
mov rcx, r12
call fcn.0042bd5d
jmp 0x42be31
mov edx, dword [r12 + 4]
cmp edx, r14d
je 0x42c4b4
mov r8d, r14d
mov rcx, r12
call fcn.0042bdac
jmp 0x42c4b4
lea rax, [r13 + 2]
cmp rbp, rax
jbe 0x42c49e
cmp byte [r13 + 1], 0x2d
jne 0x42c49e
movzx r9d, byte [r13 + 2]
cmp r9b, 0x5d
je 0x42c49e
add r13, 3
cmp r8d, r9d
jbe 0x42c48a
lea rax, str.invalid_range
test rsi, rsi
jne 0x42c3a8
jmp 0x42c3ab
mov edx, dword [r12]
mov rcx, r12
mov rbx, r13
call fcn.0042bd20
jmp 0x42bf41
mov r9d, r8d
jmp 0x42c25f
test rsi, rsi
jne 0x42c35a
jmp 0x42c369
mov rax, r11
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret