Function at 0x1800084f0
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
mov qword [rsp + 8], rbx
mov dword [rsp + 0x10], edx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xd0
mov r12, r8
mov r13, rcx
mov dword [rbp - 0x6d], 0
mov qword [rbp - 0x11], 0
mov qword [rbp - 9], 0xf
mov byte [rbp - 0x21], 0
lea r8d, [rdx + 0xd]
mov dword [rbp - 0x79], r8d
cmp edx, r8d
jae case.0x180008576.6
lea r8d, [rdx - 0x30]
mov dword [rbp - 0x75], r8d
mov r15, qword [rbp + 0x7f]
mov rsi, qword [rbp + 0x7f]
movzx r14d, byte [rbp + 0x6f]
mov eax, dword [rbp - 0x79]
lea r9, [0x180000000]
cmp r8d, 0x1b
ja case.default.0x180008576
mov ecx, dword [r9 + r8*4 + 0x8a5c]
add rcx, r9
jmp rcx
mov qword [rbp - 1], 8
jmp case.0x180008576.7
mov byte [rbp + 0x7f], 1
jmp case.0x180008576.7
mov eax, dword [r13]
add dword [r12 + 4], eax
jmp case.0x180008576.7
cmp byte [rbp + 0x7f], 0
je 0x1800085fe
mov ebx, 0x55
mov eax, ebx
sub eax, 0x55
je 0x1800085e8
sub eax, 1
je 0x1800085c8
cmp eax, 1
jne 0x1800085f0
mov rcx, qword [rbp - 0x31]
test rcx, rcx
je 0x1800085f0
call sub.RPCRT4.dll_MesHandleFree
jmp 0x1800085f0
lea r8, [rbp - 0x31]
xor edx, edx
xor ecx, ecx
call sub.RPCRT4.dll_MesDecodeIncrementalHandleCreate
mov dword [rbp - 0x69], eax
mov rcx, qword [rbp - 0x29]
test rcx, rcx
je 0x1800085f0
call sub.RPCRT4.dll_MesHandleFree
jmp 0x1800085f0
mov qword [rbp - 0x31], 0
inc ebx
cmp ebx, 0x58
jb 0x1800085a7
mov edx, dword [rbp + 0x6f]
mov r8d, dword [rbp - 0x75]
cmp r15, qword [r12 + 0x10]
sete byte [rbp - 0x71]
jmp case.0x180008576.7
xor ecx, ecx
movzx eax, byte [rbp + 0x7f]
cmp dword [rbp - 0x69], ecx
cmove ecx, eax
mov byte [rbp + 0x7f], cl
mov rax, qword [r12 + 0x10]
sub rax, r15
mov rdi, qword [rbp - 1]
cmp rax, rdi
jb case.0x180008576.7
mov qword [rbp - 0x41], 0
mov qword [rbp - 0x39], 0xf
mov byte [rbp - 0x51], 0
mov ebx, 0xe1
nop dword [rax]
mov eax, ebx
sub eax, 0xe1
je 0x18000870f
sub eax, 1
je 0x1800086ee
cmp eax, 1
jne 0x1800087ac
mov eax, dword [rbp - 0x59]
test eax, eax
je 0x180008a01
mov dword [rbp - 0x61], eax
mov dword [rsp + 0x20], 0xc7
lea r9, [rbp - 0x61]
lea r8, [rbp - 0x51]
xor edx, edx
xor ecx, ecx
call fcn.18001ece0
mov rdx, qword [r13 + 8]
cmp rdx, qword [r13 + 0x10]
je 0x1800086dd
mov qword [rdx + 0x10], 0
mov qword [rdx + 0x18], 0
movups xmm0, xmmword [rbp - 0x51]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rbp - 0x41]
movups xmmword [rdx + 0x10], xmm1
mov qword [rbp - 0x41], 0
mov qword [rbp - 0x39], 0xf
mov byte [rbp - 0x51], 0
add qword [r13 + 8], 0x20
jmp 0x1800087ac
lea r8, [rbp - 0x51]
mov rcx, r13
call fcn.1800014a0
jmp 0x1800087ac
lea rcx, [rbp - 0x21]
cmp qword [rbp - 9], 0x10
cmovae rcx, qword [rbp - 0x21]
xor edx, edx
lea r8d, [rdx + 0x10]
call fcn.180040724
mov dword [rbp - 0x59], eax
jmp 0x1800087ac
mov qword [rbp + 0x17], 0
mov qword [rbp + 0x1f], 0xf
mov byte [rbp + 7], 0
mov rax, qword [r12 + 0x10]
cmp rax, r15
jb 0x180008a42
sub rax, r15
mov r8, rdi
cmp rax, rdi
cmovb r8, rax
mov rax, r12
cmp qword [r12 + 0x18], 0x10
jb 0x18000874d
mov rax, qword [r12]
lea rdx, [rax + r15]
lea rcx, [rbp + 7]
call fcn.1800171c0
or dword [rbp - 0x6d], 1
mov rdx, qword [rbp - 9]
cmp rdx, 0x10
jb 0x180008799
inc rdx
mov rcx, qword [rbp - 0x21]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180008794
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180008a4e
call fcn.18003ae74
movups xmm0, xmmword [rbp + 7]
movups xmmword [rbp - 0x21], xmm0
movups xmm1, xmmword [rbp + 0x17]
movups xmmword [rbp - 0x11], xmm1
add r15, rdi
inc ebx
cmp ebx, 0xe4
jb 0x180008650
mov rax, qword [rbp - 0x39]
cmp rax, 0x10
jb 0x1800087f6
lea rdx, [rax + 1]
mov rcx, qword [rbp - 0x51]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800087f1
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180008a54
call fcn.18003ae74
mov rax, qword [r12 + 0x10]
sub rax, r15
cmp rax, rdi
jae 0x180008630
jmp case.0x180008914.2
mov rbx, r12
mov edi, 0xa
call fcn.18004035c
mov r8d, eax
mov eax, 0x66666667
imul r8d
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub r8d, ecx
movsxd rax, r8d
lea r8, [r12 + rax*4]
mov edx, 0x99
mov rcx, rbx
call fcn.18002c8e0
add rbx, 4
sub rdi, 1
jne 0x180008814
jmp case.0x180008914.2
mov dword [r12], 0
mov dword [r12 + 4], 1
mov dword [r12 + 8], 2
mov dword [r12 + 0xc], 3
mov dword [r12 + 0x10], 4
mov dword [r12 + 0x14], 5
mov dword [r12 + 0x18], 6
mov dword [r12 + 0x1c], 7
mov dword [r12 + 0x20], 8
mov dword [r12 + 0x24], 9
jmp case.0x180008576.7
mov qword [rbp - 0x29], 0
jmp case.0x180008576.7
xor r15d, r15d
lea r9, [rbp - 0x29]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call sub.RPCRT4.dll_MesEncodeIncrementalHandleCreate
mov dword [rbp - 0x69], eax
jmp case.0x180008914.2
mov eax, dword [r12 + 4]
mov dword [rbp - 0x71], eax
jmp case.0x180008576.7
mov r8, r12
mov r11d, 0x29
mov r10d, 0x10
nop dword [rax + rax]
cmp r10d, 0x10
ja case.0x180008914.0
mov eax, r10d
mov ecx, dword [r9 + rax*4 + 0x8acc]
add rcx, r9
jmp rcx
mov dword [r8], 0
jmp case.0x180008914.0
test r8, r8
je case.0x180008914.0
mov r8, qword [r8]
test r8, r8
jne 0x180008924
jmp case.0x180008914.0
xor edx, edx
mov r9, qword [pe_dos_header]
test r9, r9
je 0x180008977
nop dword [rax]
mov ecx, 0x5a
mov eax, ecx
sub eax, 0x5a
je 0x18000895c
cmp eax, 1
jne 0x180008968
movzx eax, r14b
mov rsi, qword [rsi + rax*8 + 8]
jmp 0x180008968
movzx r14d, byte [rdx]
cmp qword [rsi + r14*8 + 8], 0
je case.0x180008914.2
inc ecx
cmp ecx, 0x5c
jb 0x180008945
inc rdx
cmp rdx, r9
jb 0x180008940
lea r9, [0x180000000]
inc r11d
inc r10d
cmp r11d, 0x31
jb 0x180008900
mov r8d, dword [rbp - 0x75]
mov edx, dword [rbp + 0x6f]
mov eax, dword [rbp - 0x79]
inc edx
mov dword [rbp + 0x6f], edx
inc r8d
mov dword [rbp - 0x75], r8d
cmp edx, eax
jb 0x18000855a
mov rdx, qword [rbp - 9]
cmp rdx, 0x10
jb 0x1800089e3
inc rdx
mov rcx, qword [rbp - 0x21]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800089de
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180008a48
call fcn.18003ae74
mov eax, dword [rbp - 0x71]
mov rbx, qword [rsp + 0x110]
add rsp, 0xd0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov byte [rbp - 0x71], 0
mov rax, qword [rbp - 0x39]
cmp rax, 0x10
jb case.0x180008576.6
lea rdx, [rax + 1]
mov rcx, qword [rbp - 0x51]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180008a38
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180008a54
call fcn.18003ae74
jmp case.0x180008576.6
call fcn.180015490
nop
call fcn.18003f694
nop
call fcn.18003f694
nop
call fcn.18003f694
int3