Function at 0x1400ccf20
Capabilities:
Parse credit card information

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov eax, dword [rdx + 0x30]
movzx r12d, r9b
mov rbx, qword [rdx + 8]
movzx r13d, r8b
imul rsi, rax, 0x38
movzx eax, byte [rbx + 0x44]
mov rdi, rdx
add rsi, qword [rdx + 0x28]
mov r14, rcx
cmp al, 0x17
jne 0x1400ccf69
or byte [rsi - 3], 0x80
movzx eax, byte [rbx + 0x44]
cmp word [rbx + 0x10], 0x41
je 0x1400ccf74
cmp al, 7
jne 0x1400ccf78
and byte [rsi - 4], 0xbf
movzx eax, byte [rbx + 0x44]
cmp al, 0x34
je 0x1400ccf84
cmp al, 0x18
jne 0x1400ccf88
or byte [rsi - 4], 8
cmp word [rbx + 0x10], 0x2f
jne 0x1400ccfb5
cmp byte [rbx + 0x44], 0x59
je 0x1400ccfb5
cmp dword [rsi - 0x24], 0
jne 0x1400ccfa2
mov eax, dword [rdx]
mov dword [rsi - 0x24], eax
jmp 0x1400ccfb5
movzx ecx, byte [rsi - 4]
movzx eax, r12b
and cl, 0x7f
shl al, 7
or cl, al
mov byte [rsi - 4], cl
cmp byte [rbx + 0x44], 7
jne 0x1400ccfd5
cmp word [rbx + 0x10], 0x2f
je 0x1400ccfd5
movzx ecx, byte [rsi - 4]
movzx eax, r12b
and cl, 0x7f
shl al, 7
or cl, al
mov byte [rsi - 4], cl
cmp byte [rbx + 0x44], 0xf
jne 0x1400cd000
mov rax, qword [rbx + 0xd0]
test rax, rax
je 0x1400cd000
cmp byte [rax + 0x44], 0xf
je 0x1400cd000
movzx ecx, byte [rsi - 4]
movzx eax, r12b
and cl, 0x7f
shl al, 7
or cl, al
mov byte [rsi - 4], cl
cmp byte [rbx + 0x44], 1
jne 0x1400cd011
cmp dword [rsi - 0x14], 0
jne 0x1400cd011
mov eax, dword [rdx]
mov dword [rsi - 0x14], eax
cmp byte [rbx + 0x44], 0xf
jne 0x1400cd04f
cmp word [rbx + 0x10], 0x3c
jne 0x1400cd04f
test byte [rbx + 0x40], 8
jne 0x1400cd04b
mov rax, qword [rbx + 0xd8]
test rax, rax
je 0x1400cd04f
cmp word [rax + 0x10], 4
jne 0x1400cd045
mov rax, qword [rax + 0xd8]
test rax, rax
jne 0x1400cd030
jmp 0x1400cd04f
test byte [rax + 0x40], 8
je 0x1400cd04f
or byte [rsi - 2], 2
cmp byte [r14 + 0x7d], 0
je 0x1400cd069
cmp word [rbx + 0x10], 0x3c
jne 0x1400cd062
mov eax, dword [rdx]
mov dword [rsi - 0x20], eax
cmp byte [r14 + 0x7d], 0
jne 0x1400cd0bb
cmp word [rbx + 0x10], 0x3d
je 0x1400cd0bb
mov rax, qword [rbx + 0xd0]
test rax, rax
je 0x1400cd0bb
nop dword [rax]
movzx ecx, word [rax + 0x10]
cmp cx, 4
jne 0x1400cd0b0
cmp byte [rax + 0x44], 0x46
je 0x1400cd0a2
mov rcx, qword [rax + 0xd8]
test rcx, rcx
je 0x1400cd0a2
cmp dword [rcx + 0x4c], 0
jbe 0x1400cd0bb
mov rax, qword [rax + 0xd0]
test rax, rax
jne 0x1400cd080
jmp 0x1400cd0bb
cmp cx, 0x3c
jne 0x1400cd0bb
mov eax, dword [rdx]
mov dword [rsi - 0x20], eax
movzx ecx, byte [rbx + 0x44]
xor r9d, r9d
cmp cl, 0x72
jne 0x1400cd0f6
mov rdx, qword [rbx + 0x20]
cmp rdx, 2
jb 0x1400cd102
mov rax, qword [rbx + 0x18]
cmp byte [rdx + rax - 2], 0x24
jne 0x1400cd0e8
cmp byte [rdx + rax - 1], 0x7b
jne 0x1400cd0e8
mov eax, r9d
jmp 0x1400cd0ed
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1400cd102
jmp 0x1400cd17a
cmp cl, 0x23
jne 0x1400cd102
cmp word [rbx + 0x10], 0x2e
je 0x1400cd17a
movzx edx, word [rbx + 0x10]
mov r8d, 0xfff9
lea eax, [rdx - 0x13]
test r8w, ax
jne 0x1400cd11b
cmp dx, 0x19
jne 0x1400cd17a
cmp cl, 0x71
je 0x1400cd17a
cmp cl, 0x72
jne 0x1400cd145
cmp qword [rbx + 0x20], 1
jb 0x1400cd150
mov rax, qword [rbx + 0x18]
cmp byte [rax], 0x7d
jne 0x1400cd13a
mov eax, r9d
jmp 0x1400cd13f
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1400cd150
jmp 0x1400cd17a
cmp cl, 0x23
jne 0x1400cd150
cmp dx, 0x33
je 0x1400cd17a
lea eax, [rdx - 0x14]
test r8w, ax
jne 0x1400cd15f
cmp dx, 0x1a
jne 0x1400cd17a
cmp cl, 0x70
je 0x1400cd17a
cmp cl, 0x5b
je 0x1400cd17a
mov ecx, dword [rbx + 0x80]
mov eax, dword [rdi + 0x18]
cmp ecx, eax
cmovb eax, ecx
mov dword [rdi + 0x18], eax
movzx eax, word [rbx + 0x10]
sub ax, 0x19
cmp ax, 0x2d
ja 0x1400cd1b9
movabs rcx, 0x200000000801
bt rcx, rax
jae 0x1400cd1b9
movzx eax, byte [rbx + 0x44]
cmp al, 0x22
je 0x1400cd1b9
cmp al, 0x74
je 0x1400cd1b9
cmp al, 0x45
je 0x1400cd1b9
mov eax, r9d
cmp qword [rbx + 0xc0], r9
je 0x1400cd1b6
mov eax, dword [rdi]
mov dword [rsi - 0x18], eax
cmp byte [rbx + 0x44], 0x67
jne 0x1400cd1c3
or byte [rsi - 3], 8
cmp byte [rbx + 0x44], 0x1e
jne 0x1400cd262
movzx ecx, byte [r14 + 0x7e]
cmp cl, 2
je 0x1400cd22e
cmp cl, 1
mov eax, 2
movzx ecx, byte [rsi - 4]
cmove eax, r9d
add eax, dword [rdi]
mov dword [rsi - 0x30], eax
mov dword [rsi - 0x28], eax
cmp byte [r14 + 0x22a], 1
jle 0x1400cd228
or cl, 8
mov byte [rsi - 4], cl
cmp dword [r14 + 0x84], r9d
jbe 0x1400cd21f
movzx eax, byte [r14 + 0x22a]
sub al, 3
cmp al, 1
jbe 0x1400cd21f
mov al, 0x10
and cl, 0xef
or cl, al
jmp 0x1400cd22b
xor al, al
and cl, 0xef
or cl, al
jmp 0x1400cd22b
and cl, 0xef
mov byte [rsi - 4], cl
cmp byte [rbx + 0x44], 0x1e
jne 0x1400cd262
cmp byte [r14 + 0x7e], 2
jne 0x1400cd262
mov eax, dword [r14 + 0xac]
add eax, dword [rdi + 0x74]
mov dword [rsi - 0x30], eax
mov dword [rsi - 0x28], eax
cmp byte [r14 + 0x22a], 1
movzx eax, byte [rsi - 4]
jle 0x1400cd25d
or al, 8
jmp 0x1400cd25f
and al, 0xef
mov byte [rsi - 4], al
cmp byte [rbx + 0x44], 0x34
jne 0x1400cd275
mov eax, dword [r14 + 0xac]
add eax, dword [rdi + 0x74]
mov dword [rsi - 0x30], eax
movzx eax, byte [rbx + 0x44]
sub al, 7
test al, 0xf7
jne 0x1400cd290
test r12b, r12b
je 0x1400cd290
mov eax, dword [rdi]
mov ecx, dword [rbx + 0x58]
inc eax
add ecx, eax
mov dword [rsi - 0x28], ecx
movzx eax, byte [rbx + 0x44]
cmp al, 0x44
je 0x1400cd29c
cmp al, 0x74
jne 0x1400cd2a1
mov eax, dword [rdi]
mov dword [rsi - 0x2c], eax
cmp byte [rbx + 0x44], 0x64
jne 0x1400cd2b6
cmp byte [r14 + 0x29e], 1
jne 0x1400cd2b6
mov eax, dword [rdi]
mov dword [rsi - 0x28], eax
mov rbp, qword [rbx + 0xd0]
test rbp, rbp
je 0x1400cd2d5
cmp word [rbp + 0x10], 4
jne 0x1400cd2d5
mov rbp, qword [rbp + 0xd0]
test rbp, rbp
jne 0x1400cd2c2
cmp word [rbx + 0x10], 4
je 0x1400cd396
test dword [rbx + 0x40], 0x2000
jne 0x1400cd396
test rbp, rbp
je 0x1400cd3f7
cmp word [rbp + 0x10], 0x17
je 0x1400cd307
cmp byte [rbp + 0x44], r9b
jne 0x1400cd39b
cmp byte [rbp + 0x44], 0x23
je 0x1400cd39b
mov eax, dword [rdi + 0x30]
cmp eax, 1
jbe 0x1400cd39b
test byte [rsi - 3], 0x10
jne 0x1400cd39b
imul rcx, rax, 0x38
mov rax, qword [rdi + 0x28]
lea r8, [rdi + 0x30]
test byte [rcx + rax - 0x3b], 0x20
je 0x1400cd384
lea r8, [rdi + 0x30]
test r12b, r12b
je 0x1400cd384
lea rdx, [rdi + 0x28]
mov r8d, 1
lea rcx, [rsp + 0x30]
call fcn.1400c76c0
mov rcx, qword [rsp + 0x30]
lea r8, [rdi + 0x30]
mov rdx, qword [rsp + 0x38]
cmp rcx, rdx
je 0x1400cd384
add rcx, 0x34
nop word [rax + rax]
or byte [rcx], 0x20
lea rcx, [rcx + 0x38]
lea rax, [rcx - 0x34]
cmp rax, rdx
jne 0x1400cd370
lea r8, [rdi + 0x30]
mov eax, dword [r8]
imul rcx, rax, 0x38
mov rax, qword [rdi + 0x28]
and byte [rcx + rax - 0x3b], 0xdf
jmp 0x1400cd39b
test rbp, rbp
je 0x1400cd3f7
movzx eax, byte [rbp + 0x44]
sub al, 7
test al, 0xf7
je 0x1400cd3cf
movzx eax, word [rbp + 0x10]
sub ax, 0x15
cmp ax, 0x2c
ja 0x1400cd3f7
movabs rcx, 0x110000000001
bt rcx, rax
jae 0x1400cd3f7
movzx eax, byte [rbp + 0x44]
cmp al, 0x23
je 0x1400cd3f7
cmp al, 0x55
je 0x1400cd3f7
test r12b, r12b
jne 0x1400cd3ea
mov r8, r14
mov rdx, rbx
mov rcx, rbp
call fcn.1400cc0d0
test al, al
je 0x1400cd3ea
mov cl, 0x20
jmp 0x1400cd3ec
xor cl, cl
movzx eax, byte [rsi - 3]
and al, 0xdf
or al, cl
mov byte [rsi - 3], al
movzx r8d, r12b
mov rdx, rdi
mov rcx, r14
call fcn.1400cc120
mov rdx, rdi
mov rcx, r14
call fcn.1400cc6f0
mov eax, dword [rdi + 0x30]
movzx r8d, r12b
imul rcx, rax, 0x38
mov rax, qword [rdi + 0x28]
mov rdx, rdi
test byte [rcx + rax - 4], 0x60
mov rcx, r14
sete r15b
call fcn.1400cc8b0
mov rdx, rdi
mov rcx, r14
call fcn.1400cc670
cmp byte [rbx + 0x44], 0x58
jne 0x1400cd452
cmp dword [rdi + 0x1c], 0
jne 0x1400cd452
mov eax, dword [rdi]
inc eax
mov dword [rdi + 0x1c], eax
movzx eax, byte [rbx + 0x44]
cmp al, 0x1d
je 0x1400cd45e
cmp al, 0x6f
jne 0x1400cd46d
cmp dword [rdi + 0x1c], 0
jne 0x1400cd46d
mov eax, dword [rdi]
inc eax
mov dword [rdi + 0x1c], eax
jmp 0x1400cd4b8
movzx ecx, word [rbx + 0x10]
lea eax, [rcx - 0xd]
cmp ax, 1
jbe 0x1400cd483
lea eax, [rcx - 0x10]
cmp ax, 2
ja 0x1400cd490
cmp dword [rdi + 0x1c], 0
jne 0x1400cd490
mov eax, dword [rdi]
mov dword [rdi + 0x1c], eax
jmp 0x1400cd4b8
lea eax, [rcx - 4]
cmp ax, 1
jbe 0x1400cd4b8
cmp cx, 0x42
je 0x1400cd4b8
cmp cx, 0xf
je 0x1400cd4b1
cmp cx, 0xc
jbe 0x1400cd4b1
cmp cx, 0x13
jb 0x1400cd4b8
mov dword [rdi + 0x1c], 0
mov eax, dword [rbx + 0x58]
add dword [rdi], eax
mov rax, qword [rdi + 8]
mov rcx, qword [rax + 0xd8]
mov qword [rdi + 8], rcx
cmp byte [r14 + 0x185], 0xa
jne 0x1400cd504
test rcx, rcx
je 0x1400cd504
test byte [rcx + 0x40], 8
je 0x1400cd504
mov rcx, qword [r14 + 0x370]
mov rdx, rbx
call fcn.1400b1e70
test al, al
je 0x1400cd504
mov eax, dword [r14 + 0x158]
add dword [rdi + 0x74], eax
mov eax, dword [rdi + 0x74]
mov dword [rsi - 0x30], eax
mov byte [rsp + 0x28], r12b
movzx r9d, r13b
mov r8, rdi
mov byte [rsp + 0x20], r15b
mov rdx, rbx
mov rcx, r14
call fcn.1400cbcf0
mov rcx, qword [rbx + 0x28]
mov esi, eax
test rcx, rcx
je 0x1400cd53c
mov r10, qword [rcx]
movzx r9d, r13b
mov r8, r14
mov rdx, rdi
call qword [r10 + 0x10]
test rbp, rbp
je 0x1400cd55e
mov rcx, qword [rbp + 0x28]
test rcx, rcx
je 0x1400cd55e
mov rax, qword [rcx]
movzx r9d, r13b
mov r8, r14
mov rdx, rdi
call qword [rax + 0x18]
add eax, esi
jmp 0x1400cd560
mov eax, esi
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
ret