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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [0x1018fc64]
xor eax, ebp
mov dword [esp + 0xb8], eax
mov dword [esp + 0xb4], 0xffffffff
mov dword [esp + 0xb0], 0xffffffff
pxor xmm0, xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0x80], xmm0
mov dword [esp + 0xa0], 0
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
mov dword [esp + 0x70], 0xffffffff
mov eax, 0xffffffff
add eax, 1
mov ecx, 0x7fffffff
adc ecx, 0
mov dword [edx + 4], ecx
mov dword [edx], eax
cmp dword [ebp + 0x10], 0
je 0x10073fe9
cmp byte [ebx], 0x2d
lea edi, [ebx + 1]
sete al
mov dword [esp + 0x18], eax
cmovne edi, ebx
lea ebx, [esp + 0x80]
push ebx
push str._J:_M:_S
push edi
call fcn.100739f0
add esp, 0xc
test eax, eax
je 0x100740af
mov esi, eax
mov eax, dword [esp + 0x88]
jmp 0x100740d5
call fcn.10079820
mov esi, eax
mov edi, edx
push 0
push 0xf4240
push edx
push eax
call fcn.10102560
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb0], eax
push 0x1015ce46
push ebx
call fcn.10067310
add esp, 8
test eax, eax
je 0x10074139
lea edi, [esp + 0x80]
push edi
push str._Y____m____d
push ebx
call fcn.100739f0
add esp, 0xc
test eax, eax
jne 0x1007404d
push edi
push str._Y_m_d
push ebx
call fcn.100739f0
add esp, 0xc
test eax, eax
cmovne ebx, eax
sete al
mov dword [esp + 0x10], eax
mov al, byte [ebx]
mov ecx, eax
or cl, 0x20
cmp cl, 0x74
jne 0x100741bd
add ebx, 1
push edi
push 0x1015ce14
push ebx
call fcn.100739f0
add esp, 0xc
test eax, eax
jne 0x10074096
push edi
push str._H_M_S
push ebx
call fcn.100739f0
add esp, 0xc
test eax, eax
je 0x100743c0
mov esi, eax
mov ebx, 0xffffffff
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0xffffffff
jmp 0x100740fd
push ebx
push str._M:_S
push edi
call fcn.100739f0
add esp, 0xc
mov dword [esp + 0x88], 0
test eax, eax
je 0x10074168
mov esi, eax
xor eax, eax
imul eax, eax, 0xe10
imul ebx, dword [esp + 0x84], 0x3c
add ebx, eax
add ebx, dword [esp + 0x80]
mov eax, ebx
sar eax, 0x1f
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov al, byte [esi]
xor edi, edi
cmp al, 0x2e
jne 0x1007424f
movsx eax, byte [esi + 1]
add eax, 0xffffffd0
cmp eax, 9
jbe 0x1007411f
add esi, 1
xor edi, edi
jmp 0x10074238
imul edi, eax, 0x186a0
movsx eax, byte [esi + 2]
add eax, 0xffffffd0
cmp eax, 0xa
jb 0x10074148
add esi, 2
jmp 0x10074238
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov dword [eax + 4], edi
xor edi, edi
jmp 0x100745a6
imul eax, eax, 0x2710
add edi, eax
movsx eax, byte [esi + 3]
add eax, 0xffffffd0
cmp eax, 9
jbe 0x100741e9
add esi, 3
jmp 0x10074238
mov dword [esp + 0x20], 0xffffffff
call fcn.1010fc1e
mov dword [eax], 0
lea eax, [esp + 0x20]
push 0xa
push eax
push edi
call fcn.10111fdd
add esp, 0xc
mov esi, dword [esp + 0x20]
cmp esi, edi
je 0x100743c0
mov ebx, eax
mov dword [esp + 0xc], edx
call fcn.1010fc1e
mov edi, 0xffffffde
cmp dword [eax], 0x22
je 0x100745a6
test esi, esi
jne 0x100740f5
jmp 0x100743c0
mov ecx, 0x80001b
jmp 0x100741d7
cmp al, 0xb
jne 0x1007406c
nop dword [eax]
movzx eax, byte [ebx + 1]
add ebx, 1
movsx edx, al
add edx, 0xfffffff7
cmp edx, 0x17
ja 0x100741c4
bt ecx, edx
jb 0x100741d0
jmp 0x100741c4
imul eax, eax, 0x3e8
add edi, eax
movsx eax, byte [esi + 4]
add eax, 0xffffffd0
cmp eax, 9
jbe 0x10074202
add esi, 4
jmp 0x10074238
imul eax, eax, 0x64
add edi, eax
movsx eax, byte [esi + 5]
add eax, 0xffffffd0
cmp eax, 9
jbe 0x10074218
add esi, 5
jmp 0x10074238
lea ecx, [esi + 7]
lea eax, [eax + eax*4]
lea eax, [edi + eax*2]
movsx edx, byte [esi + 6]
add esi, 6
add edx, 0xffffffd0
xor edi, edi
cmp edx, 9
cmovbe edi, edx
cmovbe esi, ecx
add edi, eax
add esi, 0xffffffff
nop dword [eax + eax]
movsx eax, byte [esi + 1]
add esi, 1
lea ecx, [eax - 0x30]
cmp ecx, 0xa
jb 0x10074240
cmp dword [ebp + 0x10], 0
je 0x10074293
cmp al, 0x75
je 0x1007438f
cmp al, 0x6d
jne 0x100743aa
cmp byte [esi + 1], 0x73
jne 0x100743aa
mov ecx, 0x10624dd3
mov eax, edi
imul ecx
mov eax, edx
shr eax, 0x1f
sar edx, 6
add edx, eax
mov dword [esp + 0x14], edx
add esi, 2
mov eax, 0x3e8
jmp 0x10074528
and al, 0xdf
xor ecx, ecx
cmp al, 0x5a
sete cl
add esi, ecx
mov edx, ecx
mov ebx, dword [esp + 0x10]
or dl, bl
mov dword [esp + 0x14], edi
jne 0x1007434a
mov dl, byte [esi]
cmp dl, 0x2d
je 0x100742c0
cmp dl, 0x2b
jne 0x1007434a
pxor xmm0, xmm0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
mov dword [esp + 0x40], 0
mov bl, byte [esi]
add esi, 1
lea edi, [esp + 0x20]
push edi
push str._H:_M
push esi
call fcn.100739f0
add esp, 0xc
test eax, eax
jne 0x1007431e
push edi
push str._H_M
push esi
call fcn.100739f0
add esp, 0xc
test eax, eax
jne 0x1007431e
push edi
push 0x1015ce43
push esi
call fcn.100739f0
add esp, 0xc
test eax, eax
je 0x100743c0
imul ecx, dword [esp + 0x28], 0x3c
add ecx, dword [esp + 0x24]
mov edx, ecx
neg edx
cmp bl, 0x2b
cmovne edx, ecx
imul ecx, edx, 0x3c
mov dword [esp + 0x10], ecx
mov dword [esp + 0xa0], 0
mov esi, eax
jmp 0x10074426
test bl, bl
je 0x10074406
cmp al, 0x5a
jne 0x100743ca
lea eax, [esp + 0xb0]
push eax
call fcn.1010fce6
add esp, 4
mov ecx, 1
test eax, eax
je 0x100743e0
mov edx, dword [eax + 0x20]
mov dword [esp + 0x70], edx
movdqu xmm0, xmmword [eax]
movups xmm1, xmmword [eax + 0x10]
movaps xmmword [esp + 0x60], xmm1
movdqa xmmword [esp + 0x50], xmm0
lea eax, [esp + 0x50]
jmp 0x100743e2
cmp byte [esi + 1], 0x73
jne 0x100743aa
add esi, 2
mov eax, 1
mov dword [esp + 0x14], 0
jmp 0x10074528
mov dword [esp + 0x14], edi
lea ecx, [esi + 1]
cmp al, 0x73
cmovne ecx, esi
mov eax, 0xf4240
jmp 0x1007452a
mov edi, 0xffffffea
jmp 0x100745a6
lea eax, [esp + 0xb0]
push eax
call fcn.10110860
add esp, 4
xor ecx, ecx
test eax, eax
jne 0x1007436f
xor eax, eax
movsd xmm0, qword [eax + 0x1c]
movsd qword [esp + 0x30], xmm0
movdqu xmm0, xmmword [eax + 0xc]
movdqu xmmword [esp + 0x8c], xmm0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x9c], eax
xor eax, eax
test ecx, ecx
sete al
neg eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xa0], eax
test ecx, ecx
je 0x10074502
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x94]
xor eax, eax
cmp ecx, 2
setl al
mov edx, 0xd
mov ebx, 1
cmovl ebx, edx
sub edi, eax
lea eax, [edi + 0x76c]
mov dword [esp + 0xc], eax
add ebx, ecx
imul eax, ebx, 0x99
add eax, 0xfffffe37
mov ecx, 0x66666667
imul ecx
mov eax, edx
shr eax, 0x1f
sar edx, 1
add edx, eax
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0xc]
imul ecx, eax, 0x16d
add edi, 0x76f
test eax, eax
cmovns edi, eax
mov edx, 0xae147ae1
imul edx
mov ebx, edx
mov edx, 0x51eb851f
mov eax, dword [esp + 0xc]
imul edx
mov eax, ebx
shr eax, 0x1f
sar ebx, 5
add ebx, eax
mov eax, edx
shr eax, 0x1f
sar edx, 7
add edx, eax
sar edi, 2
add ecx, dword [esp + 0x8c]
add ecx, edi
add ecx, ebx
add ecx, edx
mov eax, dword [esp + 0x1c]
add eax, ecx
add eax, 0xfff50593
mov ecx, 0x15180
imul ecx
mov ecx, edx
imul edx, dword [esp + 0x88], 0xe10
imul ebx, dword [esp + 0x84], 0x3c
add ebx, edx
add ebx, dword [esp + 0x80]
mov edx, ebx
sar edx, 0x1f
add ebx, eax
adc edx, ecx
mov edi, dword [esp + 0x10]
jmp 0x10074516
lea eax, [esp + 0x80]
xor edi, edi
push eax
call fcn.10110e03
add esp, 4
mov ebx, eax
mov eax, edi
sar eax, 0x1f
add ebx, edi
adc eax, edx
mov dword [esp + 0xc], eax
mov eax, 0xf4240
mov ecx, esi
mov edi, 0xffffffea
cmp byte [ecx], 0
jne 0x100745a6
push 0
push eax
push 0x7fffffff
push 0xffffffffffffffff
mov esi, eax
call fcn.101026d0
mov edi, 0xffffffde
cmp eax, ebx
mov eax, dword [esp + 0xc]
sbb edx, eax
jl 0x100745a6
imul eax, esi
mov ecx, esi
mov esi, eax
mov eax, ebx
mul ecx
add esi, edx
mov edx, dword [esp + 0x14]
mov ecx, edx
sar ecx, 0x1f
mov ebx, 0xffffffff
sub ebx, edx
mov edx, 0x7fffffff
sbb edx, ecx
cmp ebx, eax
sbb edx, esi
jl 0x100745a6
mov ebx, esi
add eax, dword [esp + 0x14]
adc ebx, ecx
xor edi, edi
mov ecx, eax
neg ecx
mov edx, 0
sbb edx, ebx
cmp byte [esp + 0x18], 0
cmove edx, ebx
cmove ecx, eax
mov eax, dword [ebp + 8]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov ecx, dword [esp + 0xb8]
xor ecx, ebp
call fcn.10102288
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret