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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1014f3c6
mov eax, dword fs:[0]
push eax
sub esp, 0x2d4
mov eax, dword [0x1021eb80]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
movzx eax, word [ebp + 0xc]
mov edx, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
mov ecx, dword [ecx + 0xec]
push 0
push eax
push edx
mov dword [ebp - 0x2d4], edx
mov dword [ebp - 0x2e0], esi
call dword [0x101a6064]
mov edi, eax
mov dword [ebp - method.SmartPointers::CountedPtr_class_DataMgmt::TaxForm_.virtual_0], vtable.SmartPointers::CountedPtr_class_DataMgmt::TaxForm_.0
lea eax, [ebp - 0x2c4]
push 2
push eax
call fcn.101342cd
lea esi, [edi + 0xc]
lea eax, [ebp - 0x2c4]
push esi
push eax
call fcn.1000f610
mov eax, dword [edi + 4]
mov dword [ebp - 0x2cc], eax
mov eax, dword [edi + 8]
push eax
mov dword [ebp - 0x2c8], eax
call fcn.1000e770
lock inc dword [eax]
push esi
call fcn.101342e5
lea eax, [ebp - 0x2c4]
push eax
call fcn.101342e5
add esp, 0x1c
mov dword [ebp - method.DataMgmt::TaxFormPtr.virtual_0], vtable.DataMgmt::TaxFormPtr.0
cmp dword [ebp - 0x2cc], 0
mov dword [ebp - 4], 0
je 0x1007247d
mov esi, dword [0x101a7098]
lea ecx, [ebp - 0x294]
push 0x102275b8
call esi
movzx eax, word [0x101b0ae0]
xorps xmm0, xmm0
mov word [ebp - 0x288], ax
mov al, byte [0x101b0ae2]
mov byte [ebp - 0x286], al
movups xmmword [ebp - 0x285], xmm0
mov byte [ebp - 0x275], 0
push 0x10227690
lea ecx, [ebp - 0x274]
mov byte [ebp - 4], 1
call esi
movzx eax, word [0x101acf6c]
xorps xmm0, xmm0
mov word [ebp - 0x268], ax
mov al, byte [0x101acf6e]
mov byte [ebp - 0x266], al
movups xmmword [ebp - 0x265], xmm0
mov byte [ebp - 0x255], 0
push 0x1022769c
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 2
call esi
movzx eax, word [0x101b0170]
xorps xmm0, xmm0
mov word [ebp - 0x248], ax
mov al, byte [0x101b0172]
mov byte [ebp - 0x246], al
movups xmmword [ebp - 0x245], xmm0
mov byte [ebp - 0x235], 0
push 0x102275ac
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 3
call esi
movzx eax, word [0x101b0820]
xorps xmm0, xmm0
mov word [ebp - 0x228], ax
mov al, byte [0x101b0822]
mov byte [ebp - 0x226], al
movups xmmword [ebp - 0x225], xmm0
mov byte [ebp - 0x215], 0
push 0x102275d0
lea ecx, [ebp - 0x214]
mov byte [ebp - 4], 4
call esi
movzx eax, word [0x101b1090]
xorps xmm0, xmm0
mov word [ebp - 0x208], ax
mov al, byte [0x101b1092]
mov byte [ebp - 0x206], al
movups xmmword [ebp - 0x205], xmm0
mov byte [ebp - 0x1f5], 0
push 0x102275dc
lea ecx, [ebp - 0x1f4]
mov byte [ebp - 4], 5
call esi
movzx eax, word [0x101b114c]
xorps xmm0, xmm0
mov word [ebp - 0x1e8], ax
mov al, byte [0x101b114e]
mov byte [ebp - 0x1e6], al
movups xmmword [ebp - 0x1e5], xmm0
mov byte [ebp - 0x1d5], 0
push 0x102275f4
lea ecx, [ebp - 0x1d4]
mov byte [ebp - 4], 6
call esi
movzx eax, word [0x101afe80]
xorps xmm0, xmm0
mov word [ebp - 0x1c8], ax
mov al, byte [0x101afe82]
mov byte [ebp - 0x1c6], al
movups xmmword [ebp - 0x1c5], xmm0
mov byte [ebp - 0x1b5], 0
push 0x10227684
lea ecx, [ebp - 0x1b4]
mov byte [ebp - 4], 7
call esi
movzx eax, word [0x101aff50]
xorps xmm0, xmm0
mov word [ebp - 0x1a8], ax
mov al, byte [0x101aff52]
mov byte [ebp - 0x1a6], al
movups xmmword [ebp - 0x1a5], xmm0
mov byte [ebp - 0x195], 0
push 0x102276c0
lea ecx, [ebp - 0x194]
mov byte [ebp - 4], 8
call esi
movzx eax, word [0x101b0200]
xorps xmm0, xmm0
mov word [ebp - 0x188], ax
mov al, byte [0x101b0202]
mov byte [ebp - 0x186], al
movups xmmword [ebp - 0x185], xmm0
mov byte [ebp - 0x175], 0
push 0x1022766c
lea ecx, [ebp - 0x174]
mov byte [ebp - 4], 9
call esi
movzx eax, word [0x101b0d00]
xorps xmm0, xmm0
mov word [ebp - 0x168], ax
mov al, byte [0x101b0d02]
mov byte [ebp - 0x166], al
movups xmmword [ebp - 0x165], xmm0
mov byte [ebp - 0x155], 0
push 0x1022763c
lea ecx, [ebp - 0x154]
mov byte [ebp - 4], 0xa
call esi
movzx eax, word [0x101b0584]
xorps xmm0, xmm0
mov word [ebp - 0x148], ax
mov al, byte [0x101b0586]
mov byte [ebp - 0x146], al
movups xmmword [ebp - 0x145], xmm0
mov byte [ebp - 0x135], 0
push 0x10227654
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 0xb
call esi
movzx eax, word [0x101ad708]
xorps xmm0, xmm0
mov word [ebp - 0x128], ax
mov al, byte [0x101ad70a]
mov byte [ebp - 0x126], al
movups xmmword [ebp - 0x125], xmm0
mov byte [ebp - 0x115], 0
push 0x102275a0
lea ecx, [ebp - 0x114]
mov byte [ebp - 4], 0xc
call esi
xorps xmm0, xmm0
mov dword [ebp - 0x108], 0x313031
movups xmmword [ebp - 0x104], xmm0
push 0x10227648
lea ecx, [ebp - 0xf4]
mov byte [ebp - 4], 0xd
call esi
xorps xmm0, xmm0
mov dword [ebp - 0xe8], 0x323031
movups xmmword [ebp - 0xe4], xmm0
mov byte [ebp - 4], 0xe
push 0x102276cc
lea ecx, [ebp - 0xd4]
call esi
xorps xmm0, xmm0
mov dword [ebp - 0xc8], 0x343031
movups xmmword [ebp - 0xc4], xmm0
push 0x10227678
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 0xf
call esi
xorps xmm0, xmm0
mov dword [ebp - 0xa8], 0x353031
movups xmmword [ebp - 0xa4], xmm0
push 0
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0x10
call dword [0x101a70dc]
xorps xmm0, xmm0
mov dword [ebp - 0x78], 0
movups xmmword [ebp - 0x88], xmm0
movzx eax, word [0x101b208c]
xor edi, edi
mov word [ebp - 0x24], ax
mov al, byte [0x101b208e]
mov byte [ebp - 4], 0x11
mov byte [ebp - 0x22], al
movups xmmword [ebp - 0x21], xmm0
mov byte [ebp - 0x11], 0
cmp dword [ebp - 0x290], edi
jle 0x1007237e
xor esi, esi
nop dword [eax]
nop word [eax + eax]
push dword [ebp - 0x2d4]
lea eax, [ebp - 0x294]
add eax, esi
push eax
call dword [0x101a70e0]
add esp, 8
test al, al
je 0x1007236d
lea eax, [ebp - 0x288]
add eax, esi
lea edx, [ebp - 0x24]
sub edx, eax
nop dword [eax]
mov cl, byte [eax]
lea eax, [eax + 1]
mov byte [edx + eax - 1], cl
test cl, cl
jne 0x10072360
inc edi
movsx esi, di
shl esi, 5
cmp dword [ebp + esi - 0x290], 0
jg 0x10072330
movsx eax, word [ebp + 0x14]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x7e7
lea eax, [ebp - 0x74]
push str.1017_d_s_02d27
push eax
call fcn.1001cdf0
lea ecx, [ebp - 0x74]
xor edx, edx
xor edi, edi
mov dword [ebp - 0x2d8], edx
lea eax, [ecx + 1]
mov dword [ebp - 0x2d4], edi
add esp, 0x14
mov dword [ebp - 0x2dc], eax
xor esi, esi
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100723c0
sub ecx, dword [ebp - 0x2dc]
test ecx, ecx
jle 0x10072412
xor edx, edx
movsx ax, byte [ebp + edx - 0x74]
sub ax, 0x30
movzx edi, ax
lea eax, [edx - 1]
test al, 1
je 0x100723ef
add dword [ebp - 0x2d4], edi
jmp 0x100723fe
mov eax, dword [ebp - 0x2d8]
lea eax, [eax + edi*2]
mov dword [ebp - 0x2d8], eax
inc esi
movsx edx, si
cmp edx, ecx
jl 0x100723d3
mov edx, dword [ebp - 0x2d8]
mov edi, dword [ebp - 0x2d4]
movsx ecx, dx
movsx eax, di
add eax, ecx
mov ecx, 0xa
cdq
idiv ecx
mov eax, ecx
sub eax, edx
cwde
cdq
idiv ecx
movzx eax, dx
cwde
push eax
movsx eax, word [ebp + 0x14]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x7e7
lea eax, [ebp - 0x74]
push str.1017__d__s__02d_27__d
push eax
call fcn.1001cdf0
mov ecx, dword [ebp - 0x2cc]
lea eax, [ebp - 0x74]
add esp, 0x18
push eax
push dword [ebp - 0x2e0]
call dword [0x101a6114]
push 0x10071410
push 0x11
push 0x20
lea eax, [ebp - 0x294]
mov byte [ebp - 4], 0
push eax
call fcn.1013484f
lea ecx, [ebp - 0x2d0]
mov dword [ebp - method.DataMgmt::TaxFormPtr.virtual_0], vtable.DataMgmt::TaxFormPtr.0
call fcn.1000ff70
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10134812
mov esp, ebp
pop ebp
ret 0x10