Function at 0x42bea7
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 0x42c4da
cmp rbp, r11
je 0x42befc
movzx r8d, byte [r11]
cmp r8b, 0x7c
je 0x42c4a7
cmp r8b, 0x29
jne 0x42bf13
jmp 0x42c4a7
test r11, r11
je 0x42c4da
cmp rbp, r11
jne 0x42c4a7
jmp 0x42c4da
cmp r8b, 0x28
jne 0x42bf96
mov eax, dword [r12 + 4]
dec eax
mov dword [r12 + 4], eax
cmp eax, r14d
jae 0x42bf3f
lea rax, str.regular_expression_too_compex
test rsi, rsi
jne 0x42c401
jmp 0x42c404
mov qword [rsp + 0x20], rdi
lea rdx, [r11 + 1]
mov r9, rsi
mov r8, rbp
mov rcx, r12
call fcn.0042bea7
test rax, rax
je 0x42c453
inc dword [r12 + 4]
cmp rbp, rax
je 0x42bf76
cmp byte [rax], 0x29
lea rbx, [rax + 1]
je 0x42c455
test rsi, rsi
je 0x42bf85
lea rbx, [0x0053373e]
mov qword [rsi], rbx
test rdi, rdi
je 0x42c453
mov qword [rdi], rax
jmp 0x42c453
lea rbx, [r11 + 1]
cmp r8b, 0x5b
jne 0x42c33e
cmp rbp, rbx
je 0x42bfe9
xor r15d, r15d
cmp byte [r11 + 1], 0x5e
jne 0x42bfc2
lea rbx, [r11 + 2]
cmp rbp, rbx
je 0x42bfe9
mov r15d, 1
cmp byte [rbx], 0x5d
jne 0x42bfe1
mov r9d, 0x5d
mov edx, r14d
mov rcx, r12
inc rbx
mov r8d, 0x5d
call fcn.0042bdc0
mov r13, rbx
cmp rbp, rbx
jne 0x42bffe
lea rax, str.expected__
test rsi, rsi
jne 0x42c448
jmp 0x42c44b
movzx r8d, byte [rbx]
inc rbx
cmp r8b, 0x5d
jne 0x42c02a
test r15d, r15d
je 0x42c41d
mov ecx, dword [r12]
mov eax, 1
shl rax, cl
mov rdx, rax
xor eax, eax
jmp 0x42c325
cmp r8b, 0x5b
jne 0x42c4f1
cmp rbp, rbx
jbe 0x42c4f1
mov al, byte [r13 + 1]
cmp al, 0x2e
jne 0x42c053
lea rax, str.collating_elements_are_not_supported
test rsi, rsi
jne 0x42c063
jmp 0x42c066
cmp al, 0x3d
jne 0x42c077
test rsi, rsi
je 0x42c066
lea rax, str.equivalence_classes_are_not_supported
mov qword [rsi], rax
test rdi, rdi
je 0x42c453
mov qword [rdi], r13
jmp 0x42c453
cmp al, 0x3a
jne 0x42c4f1
add r13, 2
mov rbx, r13
lea rax, [rbx + 1]
cmp rbp, rax
ja 0x42c0a4
lea rax, str.expected_:_
test rsi, rsi
jne 0x42c448
jmp 0x42c44b
cmp byte [rax - 1], 0x3a
je 0x42c0af
mov rbx, rax
jmp 0x42c086
cmp byte [rax], 0x5d
jne 0x42c0aa
mov rdx, r13
lea rcx, str.alnum
add rbx, 2
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c0e5
mov edx, dword [r12]
mov r9d, 0x39
mov r8d, 0x30
mov rcx, r12
call fcn.0042bdc0
jmp 0x42c161
mov rdx, r13
lea rcx, str.cntrl
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c11e
mov edx, dword [r12]
mov r9d, 0x1f
xor r8d, r8d
mov rcx, r12
call fcn.0042bdc0
mov r9d, 0x7f
mov r8d, 0x7f
jmp 0x42c2ff
mov rdx, r13
lea rcx, str.lower
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x42c179
mov rdx, r13
lea rcx, str.space
call sub.msvcrt.dll_strcmp
mov r9d, 0xd
test eax, eax
je 0x42c209
mov rdx, r13
lea rcx, [0x005337c9]
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c184
mov edx, dword [r12]
mov r9d, 0x5a
mov r8d, 0x41
mov rcx, r12
call fcn.0042bdc0
mov r9d, 0x7a
jmp 0x42c2f9
mov rdx, r13
lea rcx, str.digit
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c1a8
mov r9d, 0x39
mov r8d, 0x30
jmp 0x42c2ff
mov rdx, r13
lea rcx, str.print
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c1cc
mov r9d, 0x7e
mov r8d, 0x20
jmp 0x42c2ff
mov rdx, r13
lea rcx, str.upper
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c1f0
mov r9d, 0x5a
mov r8d, 0x41
jmp 0x42c2ff
mov rdx, r13
lea rcx, str.blank
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c223
mov r9d, 9
mov edx, dword [r12]
mov r8d, 9
mov rcx, r12
call fcn.0042bdc0
mov r9d, 0x20
jmp 0x42c1c1
mov rdx, r13
lea rcx, [0x005337e7]
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c247
mov r9d, 0x7e
mov r8d, 0x21
jmp 0x42c2ff
mov rdx, r13
lea rcx, str.punct
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c2b0
mov edx, dword [r12]
mov r9d, 0x2f
mov r8d, 0x21
mov rcx, r12
call fcn.0042bdc0
mov edx, dword [r12]
mov r9d, 0x40
mov rcx, r12
mov r8d, 0x3a
call fcn.0042bdc0
mov edx, dword [r12]
mov r9d, 0x60
mov rcx, r12
mov r8d, 0x5b
call fcn.0042bdc0
mov r9d, 0x7e
mov r8d, 0x7b
jmp 0x42c2ff
mov rdx, r13
lea rcx, str.xdigit
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x42c310
mov edx, dword [r12]
mov r9d, 0x39
mov r8d, 0x30
mov rcx, r12
call fcn.0042bdc0
mov edx, dword [r12]
mov r9d, 0x46
mov rcx, r12
mov r8d, 0x41
call fcn.0042bdc0
mov r9d, 0x66
mov r8d, 0x61
mov edx, dword [r12]
mov rcx, r12
call fcn.0042bdc0
jmp 0x42bfe1
lea rax, str.unknown_character_class_name
test rsi, rsi
jne 0x42c448
jmp 0x42c44b
xor qword [r12 + rax + 0x228], rdx
add rax, 8
cmp rax, 0x800
jne 0x42c325
jmp 0x42c41d
cmp r8b, 0x2e
jne 0x42c353
or r9d, 0xffffffff
xor r8d, r8d
mov edx, r14d
jmp 0x42c415
cmp r8b, 0x5e
jne 0x42c36e
mov eax, 1
mov ecx, r14d
shl rax, cl
or qword [r12 + 0x18], rax
jmp 0x42c41d
cmp r8b, 0x24
jne 0x42c389
mov eax, 1
mov ecx, r14d
shl rax, cl
or qword [r12 + 0x20], rax
jmp 0x42c41d
cmp r8b, 0x5c
jne 0x42c3b9
cmp rbp, rbx
jne 0x42c3b2
test rsi, rsi
je 0x42c3a3
lea rax, str.trailing_
mov qword [rsi], rax
test rdi, rdi
je 0x42c3c1
mov qword [rdi], rbx
xor r8d, r8d
xor ebx, ebx
jmp 0x42c3c6
movzx r8d, byte [r11 + 1]
jmp 0x42c3bc
mov rbx, r11
inc rbx
jmp 0x42c3c6
xor ebx, ebx
xor r8d, r8d
test rbx, rbx
jne 0x42c40e
test rdi, rdi
je 0x42c3f0
mov rax, qword [rdi]
cmp rbp, rax
jbe 0x42c546
test rax, rax
je 0x42c546
cmp byte [rax], 0x5c
jne 0x42c546
jmp 0x42c453
test rbx, rbx
jne 0x42c40e
test rsi, rsi
je 0x42c404
lea rax, str.expected_._______or_a_character
mov qword [rsi], rax
test rdi, rdi
je 0x42c453
mov qword [rdi], r11
jmp 0x42c453
mov edx, dword [r12]
mov r9d, r8d
mov rcx, r12
call fcn.0042bdc0
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 0x42c455
test rsi, rsi
je 0x42c44b
lea rax, str.regular_expression_too_compex
mov qword [rsi], rax
test rdi, rdi
je 0x42c453
mov qword [rdi], rbx
xor ebx, ebx
test rbx, rbx
jne 0x42c462
mov r11, rbx
jmp 0x42bed1
cmp rbp, rbx
je 0x42c45a
mov al, byte [rbx]
lea edx, [rax - 0x2a]
cmp dl, 1
jbe 0x42c477
cmp al, 0x3f
jne 0x42c45a
jmp 0x42c47b
cmp al, 0x2a
jne 0x42c493
mov r8d, dword [r12]
mov edx, r14d
mov rcx, r12
call fcn.0042bdfd
mov al, byte [rbx]
sub eax, 0x2a
cmp al, 1
ja 0x42c4a2
mov edx, dword [r12]
mov r8d, r14d
mov rcx, r12
call fcn.0042bdfd
inc rbx
jmp 0x42c45a
cmp byte [r11], 0x7c
mov r8d, dword [r12 + 4]
jne 0x42c4da
inc r11
cmp r8d, r14d
je 0x42c4c5
mov edx, r14d
mov rcx, r12
call fcn.0042be4c
mov r8d, dword [r12]
mov edx, dword [rsp + 0x3c]
mov rcx, r12
call fcn.0042bdfd
jmp 0x42bed1
mov edx, dword [r12 + 4]
cmp edx, r14d
je 0x42c554
mov r8d, r14d
mov rcx, r12
call fcn.0042be4c
jmp 0x42c554
lea rax, [r13 + 2]
cmp rbp, rax
jbe 0x42c53e
cmp byte [r13 + 1], 0x2d
jne 0x42c53e
movzx r9d, byte [r13 + 2]
cmp r9b, 0x5d
je 0x42c53e
add r13, 3
cmp r8d, r9d
jbe 0x42c52a
lea rax, str.invalid_range
test rsi, rsi
jne 0x42c448
jmp 0x42c44b
mov edx, dword [r12]
mov rcx, r12
mov rbx, r13
call fcn.0042bdc0
jmp 0x42bfe1
mov r9d, r8d
jmp 0x42c2ff
test rsi, rsi
jne 0x42c3fa
jmp 0x42c409
mov rax, r11
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret