Function at 0x14009c010
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rax, qword [0x14019ac40]
xor rax, rsp
mov qword [rsp + 0x60], rax
mov rax, qword [rcx + 0x1a0]
test rax, rax
je 0x14009c0d5
mov rsi, rcx
mov r14, qword [rax + 0xc8]
mov rax, qword [rcx]
mov ecx, dword [rcx + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
movzx eax, word [rax + rcx - 0x30]
mov word [r14 + 0x64], ax
mov rdi, r14
nop word cs:[rax + rax]
nop
mov rdi, qword [rdi + 0xc8]
test rdi, rdi
je 0x14009c083
cmp word [rdi + 0x10], 4
je 0x14009c070
mov rax, qword [rsi + 0x190]
mov bl, byte [rax + 0x1a3]
mov ebp, ebx
and bpl, 0xfb
xor r13d, r13d
test rdi, rdi
je 0x14009c0df
cmp bpl, 1
jne 0x14009c0df
cmp byte [rdi + 0x44], 0x49
jne 0x14009c0dc
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov r13b, 1
cmp byte [rax + rcx - 8], 0
jne 0x14009c0df
add rax, rcx
cmp byte [rax - 0x28], 0
jne 0x14009c0df
cmp byte [rax - 7], 0
setne r13b
jmp 0x14009c0df
xor ebx, ebx
jmp 0x14009c6f7
xor r13d, r13d
mov rcx, rsi
mov rdx, r14
call fcn.14009bd80
mov r12b, 1
test al, al
jne 0x14009c108
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
cmp byte [rax + rcx - 2], 0
setne r12b
cmp bl, 2
jne 0x14009c14e
mov rax, qword [r14 + 0xc8]
test rax, rax
je 0x14009c13b
movzx ecx, word [rax + 0x10]
cmp cx, 5
je 0x14009c14e
cmp cx, 0x14
jne 0x14009c13b
mov rax, qword [rax + 0xc0]
test rax, rax
je 0x14009c14e
cmp byte [rax + 0x44], 1
je 0x14009c14e
mov rax, qword [r14 + 0xd0]
test rax, rax
je 0x14009c14e
cmp word [rax + 0x10], 0x14
jne 0x14009c1b0
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
cmp byte [rax + rcx - 1], 0
setne byte [rsp + 0x2f]
mov rax, qword [rsi + 0x198]
mov rax, qword [rax]
test rax, rax
je 0x14009c289
nop dword [rax]
movzx ecx, word [rax + 0x10]
cmp cx, 4
jne 0x14009c196
mov rax, qword [rax + 0xd0]
test rax, rax
jne 0x14009c180
cmp cx, 0x7c
sete r15b
cmp bpl, 1
je 0x14009c292
jmp 0x14009c301
mov rax, qword [rax + 0xd0]
test rax, rax
je 0x14009c14e
cmp word [rax + 0x10], 0x14
jne 0x14009c1b0
mov rax, qword [rax + 0xd0]
mov byte [rsp + 0x2f], 1
test rax, rax
je 0x14009c166
mov rcx, qword [rsi + 0x1b0]
mov r8, qword [rcx + 0x1f8]
mov edx, dword [rax + 0x10]
lea ebx, [rdx - 0x66]
cmp bx, 0x27
ja 0x14009c205
movzx ebx, bx
movabs rcx, 0xe002000001
bt rcx, rbx
jb 0x14009c166
cmp dx, 4
je 0x14009c166
cmp dx, 0x13
je 0x14009c166
test r8, r8
je 0x14009c23c
xor ebx, ebx
cmp dx, 1
je 0x14009c233
add edx, 0xfffffff9
cmp dx, 0xc
jb 0x14009c233
mov rbx, qword [rax + 8]
cmp rbx, r8
je 0x14009c166
mov rax, qword [rax + 0xd0]
test rax, rax
je 0x14009c14e
movzx ecx, word [rax + 0x10]
cmp cx, 4
je 0x14009c23c
cmp cx, 5
jne 0x14009c14e
mov rax, qword [rax + 0xd0]
test rax, rax
je 0x14009c14e
movzx ecx, word [rax + 0x10]
cmp cx, 4
je 0x14009c260
cmp cx, 0x15
jne 0x14009c14e
jmp 0x14009c166
xor r15d, r15d
cmp bpl, 1
jne 0x14009c301
cmp word [r14 + 0x10], 0x13
jne 0x14009c301
mov eax, 0x18000010
mov rcx, r14
nop word cs:[rax + rax]
nop dword [rax]
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009c301
movzx edx, word [rcx + 0x10]
cmp dx, 0x4b
jg 0x14009c2e0
cmp dx, 0x1c
ja 0x14009c301
movzx edx, dx
bt rax, rdx
jb 0x14009c2b0
jmp 0x14009c301
cmp dx, 0x50
je 0x14009c2b0
cmp dx, 0x6d
je 0x14009c2b0
cmp dx, 0x4c
jne 0x14009c301
mov byte [r14 + 0x44], 0x48
mov eax, 1
jmp 0x14009c484
mov ebx, r13d
mov eax, r13d
xor r13d, r13d
or al, r15b
jne case.0x14009c436.0
test r12b, r12b
jne case.0x14009c436.0
cmp bpl, 1
jne case.0x14009c436.0
cmp byte [rsp + 0x2f], 0
jne case.0x14009c436.0
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
cmp byte [rax + rcx - 8], 0
je 0x14009c341
cmp byte [r14 + 0x44], 0x30
jne 0x14009c3d6
xor r13d, r13d
mov eax, 1
cmp byte [r14 + 0x44], 0x5d
jne 0x14009c487
test r13b, r13b
je 0x14009c366
mov byte [r14 + 0x44], 0x3a
mov r13b, 1
jmp 0x14009c487
test r15b, r15b
je 0x14009c375
mov byte [r14 + 0x44], 0x1e
jmp 0x14009c484
test r12b, r12b
jne 0x14009c47f
mov rcx, qword [rsi + 0x190]
mov cl, byte [rcx + 0x1a3]
test rdi, rdi
je 0x14009c438
cmp cl, 4
jne 0x14009c438
mov rdx, qword [rsi]
mov ebp, dword [rsi + 8]
lea rbp, [rbp + rbp*2]
shl rbp, 4
cmp word [rdx + rbp - 0x30], 0x17
jne 0x14009c474
movzx edx, word [rdi + 0x10]
cmp dx, 0x41
je 0x14009c3cc
cmp dx, 0x17
jne 0x14009c474
mov byte [r14 + 0x44], 0x20
jmp 0x14009c484
mov rax, qword [rsi + 0x1a0]
movzx eax, word [rax + 0x10]
cmp ax, 0x17
setne cl
cmp ax, 0x14
setne r13b
and r13b, cl
test rdi, rdi
je case.0x14009c436.0
cmp ax, 0x14
je case.0x14009c436.0
cmp ax, 0x17
je case.0x14009c436.0
mov ecx, dword [rdi + 0x10]
mov r13b, 1
mov eax, ecx
add eax, 0xffffffed
cmp ax, 0x52
ja case.default.0x14009c436
movzx eax, ax
lea rdx, [0x14009cb20]
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
mov edx, ecx
and dl, 0xfb
cmp dl, 1
jne 0x14009c474
test rdi, rdi
je 0x14009c474
mov edx, dword [rsi + 8]
lea rdx, [rdx + rdx*2]
shl rdx, 4
mov rbp, qword [rsi]
cmp word [rbp + rdx - 0x30], 0x17
jne 0x14009c474
movzx edx, word [rdi + 0x10]
cmp dx, 0x41
je 0x14009c46d
cmp dx, 0x17
jne 0x14009c474
mov byte [r14 + 0x44], 0x11
jmp 0x14009c484
cmp byte [rsp + 0x2f], 0
je 0x14009c8cb
mov byte [r14 + 0x44], 5
xor r13d, r13d
mov rcx, qword [rsi]
mov r8d, dword [rsi + 8]
lea rdx, [r8 + r8*2]
shl rdx, 4
mov bl, byte [rcx + rdx - 0x28]
add eax, dword [rcx + rdx - 0x2c]
mov word [rsp + 0x30], 0x13
mov dword [rsp + 0x34], eax
mov byte [rsp + 0x38], bl
mov dword [rsp + 0x3c], 0
mov dword [rsp + 0x3f], 0
xorps xmm0, xmm0
movups xmmword [rsp + 0x48], xmm0
mov byte [rsp + 0x58], 1
mov dword [rsp + 0x59], 0
mov dword [rsp + 0x5c], 0
cmp r8d, dword [rsi + 0xc]
jae 0x14009cac3
lea rbx, [rsp + 0x30]
mov eax, dword [rsi + 8]
lea rax, [rax + rax*2]
shl rax, 4
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmm2, xmmword [rbx + 0x20]
movups xmmword [rcx + rax + 0x20], xmm2
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
mov eax, dword [rsi + 8]
add eax, 1
lea rcx, [rax + rax*2]
shl rcx, 4
mov dword [rsi + 8], eax
mov rax, qword [rsi]
mov byte [rax + rcx - 0x28], 1
test rdi, rdi
je 0x14009c554
mov rax, qword [rsi + 0x190]
cmp byte [rax + 0x1a3], 4
jne 0x14009c554
cmp byte [rdi + 0x44], 0x28
jne 0x14009c554
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov byte [rax + rcx - 0x28], 0
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov byte [rax + rcx - 0x1e], r13b
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov byte [rax + rcx - 2], r12b
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov dl, byte [rsp + 0x2f]
mov byte [rax + rcx - 1], dl
mov rax, qword [rsi + 0x1a0]
test rax, rax
je 0x14009c6f1
xor ebp, ebp
nop word cs:[rax + rax]
nop dword [rax]
movzx ecx, word [rax + 0x10]
cmp cx, 0x3c
jle 0x14009c600
cmp cx, 0x3d
jne 0x14009c6a0
test r12b, r12b
je 0x14009c660
mov rcx, qword [rax + 0xc8]
test rcx, rcx
je 0x14009c660
nop dword [rax]
movzx edx, word [rcx + 0x10]
cmp dx, 4
jne 0x14009c625
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
jne 0x14009c5e0
jmp 0x14009c660
cmp cx, 0x14
je 0x14009c717
xor ebx, ebx
cmp cx, 0x16
je 0x14009c6f3
cmp cx, 0x18
jne 0x14009c6a0
jmp 0x14009c6f3
cmp dx, 5
jne 0x14009c660
nop dword [rax + rax]
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009c660
movzx edx, word [rcx + 0x10]
cmp dx, 4
je 0x14009c630
movzx ecx, dx
cmp ecx, 0x97
jne 0x14009c660
mov byte [rax + 0x44], 2
jmp 0x14009c69a
mov al, byte [r14 + 0x44]
or al, 0x10
cmp al, 0x11
jne 0x14009c69a
mov byte [r14 + 0x44], 0x3a
mov eax, dword [rsi + 8]
lea rax, [rax + rax*2]
shl rax, 4
mov rcx, qword [rsi]
mov byte [rcx + rax - 0x1e], 1
mov bpl, 1
test rdi, rdi
je 0x14009c695
cmp word [rdi + 0x10], 0x16
jne 0x14009c695
mov byte [rdi + 0x44], 9
mov r13b, 1
jmp 0x14009c6a0
mov bpl, 1
nop dword [rax]
mov rbx, qword [rsi + 0x1a0]
cmp word [rbx + 0x10], 0x41
jne 0x14009c6c7
test bpl, 1
jne 0x14009c6c7
cmp byte [r14 + 0x44], 0x3a
jne 0x14009c6c7
mov byte [r14 + 0x44], 0
mov rbx, qword [rsi + 0x1a0]
mov rcx, rsi
call fcn.140099980
test al, al
je 0x14009c6f1
mov rcx, rsi
mov rdx, r14
mov r8, rbx
call fcn.14009bac0
mov rax, qword [rsi + 0x1a0]
test rax, rax
jne 0x14009c5b0
xor ebx, ebx
add dword [rsi + 8], 0xffffffff
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.14016a260
mov eax, ebx
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test r12b, r12b
je 0x14009c720
mov byte [rax + 0x44], 5
mov rax, qword [rsi + 0x1a0]
cmp byte [rsp + 0x2f], 0
je 0x14009c734
mov byte [rax + 0x44], 5
jmp 0x14009c76a
mov rcx, qword [rax + 0xd0]
test rcx, rcx
je 0x14009c747
cmp word [rcx + 0x10], 0x15
je 0x14009c75c
mov rax, qword [rax + 0xc8]
test rax, rax
je 0x14009c76a
cmp qword [rax + 0xc8], r14
jne 0x14009c76a
cmp byte [r14 + 0x44], 0x3a
jne 0x14009c76a
mov byte [r14 + 0x44], 0x5d
jmp 0x14009c7cf
test r13b, 1
je 0x14009c7cf
mov rax, qword [rsi + 0x1a0]
cmp qword [rax + 0xc8], r14
je 0x14009c7cf
mov byte [rax + 0x44], 0x3a
test bpl, 1
jne 0x14009c7c0
mov rax, qword [rsi + 0x1a0]
mov rax, qword [rax + 0xc8]
test rax, rax
je 0x14009c7c0
cmp byte [rax + 0x44], 0x5d
jne 0x14009c7c0
cmp qword [rax + 8], 0
je 0x14009c7c0
mov ecx, dword [rax + 0x10]
cmp cx, 1
je 0x14009c7c0
add ecx, 0xfffffff9
cmp cx, 0xc
jb 0x14009c7c0
mov byte [rax + 0x44], 0x44
test rdi, rdi
je 0x14009c7cf
cmp byte [rdi + 0x44], 0x40
jne 0x14009c7cf
mov byte [rdi + 0x44], 6
mov rax, qword [rsi + 0x1a0]
cmp byte [rax + 0x44], 0x3a
jne 0x14009c7f9
mov rcx, qword [rax + 0xd0]
test rcx, rcx
je 0x14009c7f9
cmp byte [rcx + 0x44], 0x2e
jne 0x14009c7f9
mov byte [rcx + 0x44], 0x5d
mov rax, qword [rsi + 0x1a0]
mov qword [r14 + 0xc0], rax
mov rax, qword [rsi + 0x1a0]
mov qword [rax + 0xc0], r14
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov rax, qword [rax + rcx - 0x18]
test rax, rax
je 0x14009c887
mov eax, dword [rax + 0x88]
mov dword [r14 + 0x5c], eax
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov rdx, qword [rax + rcx - 0x18]
test rdx, rdx
je 0x14009c878
add rax, rcx
mov eax, dword [rax - 0x24]
mov dword [rdx + 0x84], eax
cmp dword [r14 + 0x60], 2
jb 0x14009c878
mov rax, qword [rsi]
mov ecx, dword [rsi + 8]
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov rax, qword [rax + rcx - 0x18]
mov dword [rax + 0x84], 0
mov rcx, rsi
call fcn.140097ac0
mov bl, 1
jmp 0x14009c6f3
mov rax, qword [rsi + 0x1a0]
nop
mov rax, qword [rax + 0xc8]
test rax, rax
je 0x14009c830
cmp word [rax + 0x10], 4
je 0x14009c890
cmp byte [rax + 0x44], 0x44
jne 0x14009c830
mov dword [rax + 0x88], 1
mov rcx, qword [rsi]
mov edx, dword [rsi + 8]
lea rdx, [rdx + rdx*2]
shl rdx, 4
mov qword [rcx + rdx - 0x18], rax
jmp 0x14009c830
test rdi, rdi
je 0x14009c8ee
mov rdx, qword [rsi + 0x1a0]
cmp word [rdx + 0x10], 0x14
jne 0x14009c8ee
cmp byte [rdi + 0x44], 0x49
jne 0x14009c8ee
mov byte [r14 + 0x44], 1
jmp 0x14009c484
cmp cl, 8
je 0x14009c8fc
cmp cl, 6
jne 0x14009ca33
mov byte [r14 + 0x44], 0
mov rcx, r14
movzx edx, word [rcx + 0x10]
cmp dx, 4
jne 0x14009c91c
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
jne 0x14009c904
jmp 0x14009c95e
cmp dx, 0x13
jne 0x14009c95e
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009c95e
movzx edx, word [rcx + 0x10]
cmp dx, 4
je 0x14009c922
cmp dx, 7
jne 0x14009c95e
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009c95e
movzx edx, word [rcx + 0x10]
cmp dx, 4
je 0x14009c93e
cmp dx, 0x3f
je 0x14009c484
mov rcx, r14
movzx edx, word [rcx + 0x10]
cmp dx, 4
jne 0x14009c979
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
jne 0x14009c961
jmp 0x14009c9bb
cmp dx, 0x13
jne 0x14009c9bb
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009c9bb
movzx edx, word [rcx + 0x10]
cmp dx, 4
je 0x14009c97f
cmp dx, 7
jne 0x14009c9bb
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009c9bb
movzx edx, word [rcx + 0x10]
cmp dx, 4
je 0x14009c99b
cmp dx, 5
je 0x14009c484
mov rcx, r14
movzx edx, word [rcx + 0x10]
cmp dx, 4
jne 0x14009c9d6
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
jne 0x14009c9be
jmp 0x14009ca24
cmp dx, 0x13
jne 0x14009ca24
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009ca24
movzx edx, word [rcx + 0x10]
cmp dx, 4
je 0x14009c9dc
cmp dx, 0x3d
jne 0x14009ca24
mov rcx, qword [rcx + 0xc8]
test rcx, rcx
je 0x14009ca24
mov rdx, rcx
cmp word [rcx + 0x10], 4
jne 0x14009ca1a
mov rcx, qword [rdx + 0xc8]
test rcx, rcx
jne 0x14009ca04
cmp byte [rdx + 0x44], 0x44
je 0x14009c484
mov byte [r14 + 0x44], 0x4c
mov eax, 0xa
jmp 0x14009c484
test rdi, rdi
je case.0x14009ca67.1
xor bl, 1
je case.0x14009ca67.1
mov cl, byte [rdi + 0x44]
cmp cl, 6
je case.0x14009ca67.0
cmp cl, 0x49
je case.0x14009ca67.0
mov ecx, dword [rdi + 0x10]
add ecx, 0xffffffed
cmp cx, 0x4f
ja case.0x14009ca67.1
movzx ecx, cx
lea rdx, [0x14009cc6c]
movsxd rcx, dword [rdx + rcx*4]
add rcx, rdx
jmp rcx
mov byte [r14 + 0x44], 0
jmp 0x14009c484
mov byte [r14 + 0x44], 1
mov eax, 0xa
jmp 0x14009c484
movzx eax, cx
cmp eax, 0x92
je case.0x14009c436.0
cmp eax, 0x9b
je case.0x14009c436.0
mov al, byte [rdi + 0x44]
cmp al, 9
je case.0x14009c436.0
cmp al, 0x39
je case.0x14009c436.0
mov dl, 1
mov r8b, 1
call fcn.14015b120
test eax, eax
setg r13b
jmp case.0x14009c436.0
add rdx, rcx
add r8, 1
lea rbx, [rsp + 0x30]
cmp rdx, rbx
seta al
cmp rcx, rbx
ja 0x14009cade
test al, al
jne 0x14009caf8
lea rdx, [rsi + 0x10]
mov r9d, 0x30
mov rcx, rsi
call fcn.1400290c0
mov rcx, qword [rsi]
jmp 0x14009c4e9
lea rbx, [rsp + 0x30]
sub rbx, rcx
lea rdx, [rsi + 0x10]
mov r9d, 0x30
mov rcx, rsi
call fcn.1400290c0
mov rcx, qword [rsi]
add rbx, rcx
jmp 0x14009c4e9