Function at 0x1803d4670
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rsi, rcx
call fcn.1803f9d10
mov rdi, rax
lea rbx, [rax + 0x10]
mov rdx, qword [rax + 0x110]
cmp rdx, 0x40
jb 0x1803d46e0
add rax, 0x120
mov rcx, qword [rdi + 0x158]
test rcx, rcx
jle 0x1803d4741
cmp qword [rdi + 0x160], 0
js 0x1803d4741
add rcx, 0xffffffffffffff00
mov qword [rdi + 0x158], rcx
mov rcx, rax
mov edx, 6
mov r8, rbx
call fcn.1803f9d70
jmp 0x1803d474c
movzx ecx, byte [rdi + rdx*4 + 0x10]
mov byte [rsp + 0x2a], cl
lea rcx, [rdx + 1]
mov qword [rdi + 0x110], rcx
cmp rdx, 0x3f
jne 0x1803d4756
add rax, 0x120
mov rcx, qword [rdi + 0x158]
test rcx, rcx
jle 0x1803d47b8
cmp qword [rdi + 0x160], 0
js 0x1803d47b8
add rcx, 0xffffffffffffff00
mov qword [rdi + 0x158], rcx
mov rcx, rax
mov edx, 6
mov r8, rbx
call fcn.1803f9d70
jmp 0x1803d47c3
mov rcx, rax
mov rdx, rbx
call fcn.1803d5160
movzx edx, byte [rbx]
mov ecx, 1
jmp 0x1803d47ca
movzx r13d, byte [rdi + rdx*4 + 0x14]
lea rcx, [rdx + 2]
mov qword [rdi + 0x110], rcx
cmp rdx, 0x3e
jb 0x1803d4992
add rax, 0x120
mov rcx, qword [rdi + 0x158]
test rcx, rcx
jle 0x1803d49f5
cmp qword [rdi + 0x160], 0
js 0x1803d49f5
add rcx, 0xffffffffffffff00
mov qword [rdi + 0x158], rcx
mov rcx, rax
mov edx, 6
mov r8, rbx
call fcn.1803f9d70
jmp 0x1803d4a00
mov rcx, rax
mov rdx, rbx
call fcn.1803d5160
xor ecx, ecx
movzx edx, byte [rsp + 0x2a]
movzx r13d, byte [rbx + rcx*4]
movzx r8d, byte [rbx + rcx*4 + 4]
lea rax, [rcx + 2]
add rcx, 3
movzx r9d, byte [rdi + rax*4 + 0x10]
mov qword [rdi + 0x110], rcx
movzx r10d, byte [rdi + rcx*4 + 0x10]
lea rax, [rcx + 1]
mov qword [rdi + 0x110], rax
add rcx, 2
movzx ebp, byte [rdi + rax*4 + 0x10]
mov qword [rdi + 0x110], rcx
movzx r14d, byte [rdi + rcx*4 + 0x10]
lea rax, [rcx + 1]
mov qword [rdi + 0x110], rax
add rcx, 2
movzx r11d, byte [rdi + rax*4 + 0x10]
mov qword [rdi + 0x110], rcx
movzx r12d, byte [rdi + rcx*4 + 0x10]
lea rax, [rcx + 1]
mov qword [rdi + 0x110], rax
add rcx, 2
movzx eax, byte [rdi + rax*4 + 0x10]
mov byte [rsp + 0x33], al
mov qword [rdi + 0x110], rcx
movzx eax, byte [rdi + rcx*4 + 0x10]
mov byte [rsp + 0x31], al
lea rax, [rcx + 1]
mov qword [rdi + 0x110], rax
add rcx, 2
movzx eax, byte [rdi + rax*4 + 0x10]
mov byte [rsp + 0x32], al
mov qword [rdi + 0x110], rcx
movzx eax, byte [rdi + rcx*4 + 0x10]
mov byte [rsp + 0x30], al
lea rax, [rcx + 1]
mov qword [rdi + 0x110], rax
add rcx, 2
mov eax, dword [rdi + rax*4 + 0x10]
mov dword [rsp + 0x34], eax
mov qword [rdi + 0x110], rcx
mov r15d, dword [rdi + rcx*4 + 0x10]
inc rcx
mov qword [rdi + 0x110], rcx
mov ebx, dword [rdi + rcx*4 + 0x10]
inc rcx
mov qword [rdi + 0x110], rcx
dec qword [rdi]
jne 0x1803d491e
dec qword [rdi + 8]
jne 0x1803d491e
mov byte [rsp + 0x2d], r13b
mov byte [rsp + 0x2a], dl
mov edx, 0x170
mov byte [rsp + 0x2b], r8b
mov r8d, 0x10
mov rcx, rdi
mov edi, r9d
mov r13d, ebp
mov ebp, r10d
mov byte [rsp + 0x2c], r14b
mov r14d, r11d
call fcn.1802cbf20
mov r11d, r14d
movzx r14d, byte [rsp + 0x2c]
mov r10d, ebp
mov ebp, r13d
mov r9d, edi
movzx r8d, byte [rsp + 0x2b]
movzx edx, byte [rsp + 0x2a]
movzx r13d, byte [rsp + 0x2d]
and r12b, 0x3f
or r12b, 0x80
and r14b, 0xf
or r14b, 0x40
mov byte [rsi], dl
mov byte [rsi + 1], r13b
mov byte [rsi + 2], r8b
mov byte [rsi + 3], r9b
mov byte [rsi + 4], r10b
mov byte [rsi + 5], bpl
mov byte [rsi + 6], r14b
mov byte [rsi + 7], r11b
mov byte [rsi + 8], r12b
movzx eax, byte [rsp + 0x33]
mov byte [rsi + 9], al
movzx eax, byte [rsp + 0x31]
mov byte [rsi + 0xa], al
movzx eax, byte [rsp + 0x32]
mov byte [rsi + 0xb], al
movzx eax, byte [rsp + 0x30]
mov byte [rsi + 0xc], al
mov eax, dword [rsp + 0x34]
mov byte [rsi + 0xd], al
mov byte [rsi + 0xe], r15b
mov byte [rsi + 0xf], bl
mov rax, rsi
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movzx r8d, byte [rdi + rdx*4 + 0x18]
mov byte [rsp + 0x2b], r8b
lea r8, [rdx + 3]
mov qword [rdi + 0x110], r8
cmp rdx, 0x3d
jne 0x1803d4a17
add rax, 0x120
mov rcx, qword [rdi + 0x158]
test rcx, rcx
jle 0x1803d4a75
cmp qword [rdi + 0x160], 0
js 0x1803d4a75
add rcx, 0xffffffffffffff00
mov qword [rdi + 0x158], rcx
mov rcx, rax
mov edx, 6
mov r8, rbx
call fcn.1803f9d70
jmp 0x1803d4a80
mov rcx, rax
mov rdx, rbx
call fcn.1803d5160
movzx r8d, byte [rbx]
mov eax, 1
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
jmp 0x1803d47dd
movzx r9d, byte [rdi + rdx*4 + 0x1c]
lea r8, [rdx + 4]
mov qword [rdi + 0x110], r8
cmp rcx, 0x3e
jne 0x1803d4a96
mov ebp, r9d
add rax, 0x120
mov rcx, qword [rdi + 0x158]
test rcx, rcx
jle 0x1803d4ae0
cmp qword [rdi + 0x160], 0
js 0x1803d4ae0
add rcx, 0xffffffffffffff00
mov qword [rdi + 0x158], rcx
mov rcx, rax
mov edx, 6
mov r8, rbx
call fcn.1803f9d70
jmp 0x1803d4aeb
mov rcx, rax
mov rdx, rbx
call fcn.1803d5160
xor eax, eax
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
jmp 0x1803d47dd
movzx r10d, byte [rdi + rdx*4 + 0x20]
lea rcx, [rdx + 5]
mov qword [rdi + 0x110], rcx
cmp rdx, 0x3b
jb 0x1803d4b0b
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov ebp, r10d
call fcn.1803d5130
mov r10d, ebp
mov r9d, ebx
xor eax, eax
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
jmp 0x1803d47ff
mov rcx, rax
mov rdx, rbx
call fcn.1803d5160
movzx r10d, byte [rbx]
mov eax, 1
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
mov r9d, ebp
jmp 0x1803d47ff
movzx ebp, byte [rdi + rdx*4 + 0x24]
lea rcx, [rdx + 6]
mov qword [rdi + 0x110], rcx
cmp r8, 0x3e
jne 0x1803d4b50
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov r14d, ebp
mov ebp, r10d
call fcn.1803d5130
mov r10d, ebp
mov ebp, r14d
mov r9d, ebx
movzx r14d, byte [rdi + 0x10]
mov eax, 1
jmp 0x1803d4b8c
movzx r14d, byte [rdi + rdx*4 + 0x28]
lea r8, [rdx + 7]
mov qword [rdi + 0x110], r8
cmp rdx, 0x39
jb 0x1803d4ba0
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov r15d, ebp
mov ebp, r10d
call fcn.1803d5130
mov r10d, ebp
mov ebp, r15d
mov r9d, ebx
xor eax, eax
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
jmp 0x1803d4820
movzx r11d, byte [rdi + rdx*4 + 0x2c]
lea r8, [rdx + 8]
mov qword [rdi + 0x110], r8
cmp rcx, 0x3e
jne 0x1803d4bec
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov r15d, ebp
mov ebp, r10d
mov r12d, r11d
call fcn.1803d5130
mov r11d, r12d
mov r10d, ebp
mov ebp, r15d
mov r9d, ebx
movzx r12d, byte [rdi + 0x10]
mov eax, 1
jmp 0x1803d4c32
movzx r12d, byte [rdi + rdx*4 + 0x30]
lea rcx, [rdx + 9]
mov qword [rdi + 0x110], rcx
cmp rdx, 0x37
mov byte [rsp + 0x2d], bpl
jb 0x1803d4c46
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov ebp, r10d
mov r15d, r11d
call fcn.1803d5130
mov r11d, r15d
mov r10d, ebp
movzx ebp, byte [rsp + 0x2d]
mov r9d, ebx
xor eax, eax
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
jmp 0x1803d4842
movzx ecx, byte [rdi + rdx*4 + 0x34]
mov byte [rsp + 0x33], cl
lea rcx, [rdx + 0xa]
mov qword [rdi + 0x110], rcx
cmp r8, 0x3e
jne 0x1803d4c97
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov ebp, r10d
mov r15d, r11d
call fcn.1803d5130
mov r11d, r15d
mov r10d, ebp
movzx ebp, byte [rsp + 0x2d]
mov r9d, ebx
movzx eax, byte [rdi + 0x10]
mov byte [rsp + 0x31], al
mov eax, 1
jmp 0x1803d4cdd
movzx r8d, byte [rdi + rdx*4 + 0x38]
mov byte [rsp + 0x31], r8b
lea r8, [rdx + 0xb]
mov qword [rdi + 0x110], r8
cmp rdx, 0x35
jb 0x1803d4cf1
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov ebp, r10d
mov r15d, r11d
call fcn.1803d5130
mov r11d, r15d
mov r10d, ebp
movzx ebp, byte [rsp + 0x2d]
mov r9d, ebx
xor eax, eax
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
jmp 0x1803d486a
movzx r8d, byte [rdi + rdx*4 + 0x3c]
mov byte [rsp + 0x32], r8b
lea r8, [rdx + 0xc]
mov qword [rdi + 0x110], r8
cmp rcx, 0x3e
jne 0x1803d4d56
add rax, 0x120
mov rcx, rax
mov rdx, rbx
mov ebx, r9d
mov ebp, r10d
mov r15d, r11d
call fcn.1803d5130
mov r11d, r15d
mov r10d, ebp
movzx ebp, byte [rsp + 0x2d]
mov r9d, ebx
movzx eax, byte [rdi + 0x10]
mov byte [rsp + 0x30], al
mov eax, 1
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
jmp 0x1803d4892
mov byte [rsp + 0x2e], r11b
mov byte [rsp + 0x2f], r10b
mov byte [rsp + 0x2c], r9b
movzx ecx, byte [rdi + rdx*4 + 0x40]
mov byte [rsp + 0x30], cl
lea rcx, [rdx + 0xd]
mov qword [rdi + 0x110], rcx
cmp rdx, 0x33
jb 0x1803d4db8
add rax, 0x120
mov rcx, rax
mov rdx, rbx
call fcn.1803d5130
xor eax, eax
lea rcx, [rax + 1]
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
movzx r9d, byte [rsp + 0x2c]
movzx r10d, byte [rsp + 0x2f]
movzx r11d, byte [rsp + 0x2e]
jmp 0x1803d4892
mov ecx, dword [rdi + rdx*4 + 0x44]
mov dword [rsp + 0x34], ecx
lea rcx, [rdx + 0xe]
mov qword [rdi + 0x110], rcx
cmp r8, 0x3e
jne 0x1803d4df8
add rax, 0x120
mov rcx, rax
mov rdx, rbx
call fcn.1803d5130
mov r15d, dword [rdi + 0x10]
mov qword [rdi + 0x110], 1
mov ecx, 1
jmp 0x1803d4e21
mov r15d, dword [rdi + rdx*4 + 0x48]
lea rcx, [rdx + 0xf]
mov qword [rdi + 0x110], rcx
cmp rdx, 0x31
jb 0x1803d4e21
add rax, 0x120
mov rcx, rax
mov rdx, rbx
call fcn.1803d5130
xor ecx, ecx
movzx edx, byte [rsp + 0x2a]
movzx r8d, byte [rsp + 0x2b]
movzx r9d, byte [rsp + 0x2c]
movzx r10d, byte [rsp + 0x2f]
movzx r11d, byte [rsp + 0x2e]
jmp 0x1803d48b0