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

Disassembly:
push 8
push 0x38
mov eax, 0xb11c1ac
call fcn.0b1198b5
mov edx, ecx
mov dword [ebp - 0x1c], edx
mov eax, dword [ebx + 8]
lea edi, [ebp - 0x48]
mov esi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x3c], eax
and dword [ebp - 4], 0
xorps xmm1, xmm1
mov esi, dword [ebp - 0x48]
mov eax, esi
sub eax, dword [ebp - 0x40]
mov dword [ebp - 0x30], eax
cmp byte [esi], 0x2d
jne 0xb0d6d86
inc esi
mov ch, 1
mov dword [ebp - 0x48], esi
jmp 0xb0d6d88
xor ch, ch
mov al, byte [esi]
xorps xmm0, xmm0
and dword [ebp - 0x20], 0
mov byte [ebp - 0x13], ch
movlpd qword [ebp - 0x38], xmm0
mov byte [ebp - 0x12], 0
cmp al, 0x30
jne 0xb0d6db0
and dword [ebp - 0x2c], 0
lea edi, [esi + 1]
mov dword [ebp - 0x48], edi
jmp 0xb0d6e71
cmp al, 0x31
jl 0xb0d7344
cmp al, 0x39
jg 0xb0d7344
movsx eax, al
lea edi, [esi + 1]
mov cl, byte [edi]
sub eax, 0x30
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x2c], eax
test ch, ch
je 0xb0d6e2c
cmp cl, 0x30
jl 0xb0d6e71
mov esi, edi
mov dword [ebp - 0x28], edi
cmp cl, 0x39
ja 0xb0d6e71
cmp eax, 0xccccccc
jb 0xb0d6dfd
jne 0xb0d6e22
mov esi, dword [ebp - 0x28]
cmp cl, 0x38
ja 0xb0d6e22
imul ecx, eax, 0xa
lea edi, [esi + 1]
movsx eax, byte [esi]
mov esi, edi
add eax, 0xffffffd0
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x28], edi
add eax, ecx
mov cl, byte [edi]
inc dword [ebp - 0x20]
mov dword [ebp - 0x2c], eax
cmp cl, 0x30
jge 0xb0d6de3
jmp 0xb0d6e71
mov ecx, eax
mov byte [ebp - 0x12], 1
xor eax, eax
jmp 0xb0d6e77
cmp cl, 0x30
jl 0xb0d6e71
mov cl, byte [edi]
mov esi, edi
mov dword [ebp - 0x28], edi
cmp cl, 0x39
jg 0xb0d6e71
cmp eax, 0x19999999
jb 0xb0d6e4e
jne 0xb0d6e22
mov esi, dword [ebp - 0x28]
cmp cl, 0x35
jg 0xb0d6e22
imul ecx, eax, 0xa
lea edi, [esi + 1]
movsx eax, byte [esi]
mov esi, edi
add eax, 0xffffffd0
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x28], edi
add eax, ecx
mov cl, byte [edi]
inc dword [ebp - 0x20]
mov dword [ebp - 0x2c], eax
cmp cl, 0x30
jge 0xb0d6e38
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
cmp byte [ebp - 0x12], 0
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x11], 0
je 0xb0d6fbb
cmp byte [ebp - 0x13], 0
je 0xb0d6f29
cmp byte [edi], 0x30
mov edx, dword [ebp - 0x1c]
jl 0xb0d6fbb
mov dl, byte [edi]
mov esi, edi
mov dword [ebp - 0x28], esi
cmp dl, 0x39
ja 0xb0d6fb8
cmp eax, 0xccccccc
jb 0xb0d6ee5
ja 0xb0d6ec2
cmp ecx, 0xcccccccc
jb 0xb0d6ee5
cmp ecx, 0xcccccccc
jne 0xb0d6faa
cmp eax, 0xccccccc
jne 0xb0d6faa
mov esi, dword [ebp - 0x28]
cmp dl, 0x38
ja 0xb0d6faa
movsx edi, byte [esi]
lea ecx, [esi + 1]
mov dword [ebp - 0x48], ecx
sub edi, 0x30
push 0xa
pop ecx
mul ecx
push 0xa
mov ecx, eax
xor esi, esi
mov eax, dword [ebp - 0x18]
pop edx
mul edx
add ecx, edx
add edi, eax
adc esi, ecx
inc dword [ebp - 0x20]
mov ecx, edi
mov eax, esi
mov edi, dword [ebp - 0x48]
mov esi, edi
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], edi
mov dl, byte [edi]
cmp dl, 0x30
jge 0xb0d6ea8
jmp 0xb0d6fb8
cmp byte [edi], 0x30
mov ecx, dword [ebp - 0x18]
jl 0xb0d6fbb
mov dl, byte [edi]
mov esi, edi
mov dword [ebp - 0x28], esi
cmp dl, 0x39
ja 0xb0d6fb8
cmp eax, 0x19999999
jb 0xb0d6f69
ja 0xb0d6f52
cmp ecx, 0x99999999
jb 0xb0d6f69
cmp ecx, 0x99999999
jne 0xb0d6faa
cmp eax, 0x19999999
jne 0xb0d6faa
mov esi, dword [ebp - 0x28]
cmp dl, 0x35
ja 0xb0d6faa
movsx edi, byte [esi]
lea ecx, [esi + 1]
mov dword [ebp - 0x48], ecx
sub edi, 0x30
push 0xa
pop ecx
mul ecx
push 0xa
mov ecx, eax
xor esi, esi
mov eax, dword [ebp - 0x18]
pop edx
mul edx
add ecx, edx
add edi, eax
adc esi, ecx
inc dword [ebp - 0x20]
mov ecx, edi
mov eax, esi
mov edi, dword [ebp - 0x48]
mov esi, edi
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], edi
mov dl, byte [edi]
cmp dl, 0x30
jge 0xb0d6f3c
jmp 0xb0d6fb8
mov edx, eax
call fcn.0b119b90
mov byte [ebp - 0x11], 1
movaps xmm1, xmm0
mov edx, dword [ebp - 0x1c]
cmp byte [ebp - 0x11], 0
je 0xb0d6ff5
mov al, byte [edi]
cmp al, 0x30
jl 0xb0d6ff5
mov ecx, edi
cmp al, 0x39
ja 0xb0d6ff2
movsx eax, byte [ecx]
lea edi, [ecx + 1]
mulsd xmm1, qword [0xb0abe50]
sub eax, 0x30
mov ecx, edi
movd xmm0, eax
mov al, byte [edi]
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cmp al, 0x30
jge 0xb0d6fc9
mov dword [ebp - 0x48], edi
mov al, byte [edi]
and dword [ebp - 0x28], 0
cmp al, 0x2e
jne 0xb0d7003
inc edi
mov dword [ebp - 0x48], edi
mov esi, edi
cmp al, 0x2e
jne 0xb0d70ad
mov al, byte [esi]
cmp al, 0x30
jl 0xb0d70d3
cmp al, 0x39
jg 0xb0d70d3
mov al, byte [ebp - 0x11]
test al, al
jne 0xb0d7046
cmp byte [ebp - 0x12], al
je 0xb0d7033
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
jmp 0xb0d7038
mov ecx, dword [ebp - 0x2c]
xor edx, edx
call fcn.0b119b90
movaps xmm1, xmm0
mov byte [ebp - 0x11], 1
jmp 0xb0d7049
mov byte [ebp - 0x11], al
mov cl, byte [edi]
mov eax, esi
mov dword [ebp - 0x34], esi
mov edx, esi
mov edi, esi
mov esi, edx
cmp cl, 0x39
jg 0xb0d70ad
mov edx, dword [ebp - 0x20]
cmp edx, 0x11
jge 0xb0d7098
mulsd xmm1, qword [0xb0abe50]
lea esi, [eax + 1]
movsx eax, byte [eax]
mov ecx, esi
sub eax, 0x30
mov dword [ebp - 0x48], ecx
dec dword [ebp - 0x28]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
comisd xmm1, xmmword [0xb0abe28]
jbe 0xb0d70a0
inc edx
mov dword [ebp - 0x20], edx
jmp 0xb0d70a0
lea esi, [edi + 1]
mov ecx, esi
mov dword [ebp - 0x48], ecx
mov cl, byte [ecx]
mov eax, esi
mov edi, eax
mov edx, eax
cmp cl, 0x30
jge 0xb0d7054
xor ecx, ecx
cmp byte [esi], 0x65
je 0xb0d70bd
cmp byte [esi], 0x45
jne 0xb0d7187
inc esi
mov dword [ebp - 0x48], esi
cmp byte [ebp - 0x11], cl
jne 0xb0d70f1
cmp byte [ebp - 0x12], cl
je 0xb0d70e0
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
jmp 0xb0d70e5
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x1c]
push 0xe
jmp 0xb0d7349
mov ecx, dword [ebp - 0x2c]
xor edx, edx
call fcn.0b119b90
movaps xmm1, xmm0
mov byte [ebp - 0x11], 1
xor dl, dl
cmp byte [esi], 0x2b
je 0xb0d70ff
cmp byte [esi], 0x2d
jne 0xb0d7103
inc dl
inc esi
mov dword [ebp - 0x48], esi
mov cl, byte [esi]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0xb0d720c
inc esi
movsx ecx, cl
sub ecx, 0x30
mov dword [ebp - 0x48], esi
mov al, byte [esi]
mov byte [ebp - 0x14], al
test dl, dl
je 0xb0d71d8
mov eax, dword [ebp - 0x28]
add eax, 0x7ffffff7
push 0xa
pop edi
cdq
idiv edi
cmp byte [ebp - 0x14], 0x30
mov edi, eax
mov dword [ebp - 0x34], edi
jl 0xb0d7185
mov dl, byte [esi]
cmp dl, 0x39
jg 0xb0d7185
movsx eax, byte [esi]
lea edx, [esi + 1]
imul ecx, ecx, 0xa
mov esi, edx
mov dword [ebp - 0x48], edx
add ecx, 0xffffffd0
add ecx, eax
cmp ecx, edi
jle 0xb0d717e
mov al, byte [edx]
cmp al, 0x30
jl 0xb0d717e
mov edi, edx
cmp al, 0x39
ja 0xb0d7178
lea esi, [edi + 1]
mov edx, esi
mov edi, esi
mov al, byte [edx]
cmp al, 0x30
jge 0xb0d7167
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x48], edx
mov dl, byte [edx]
cmp dl, 0x30
jge 0xb0d7143
neg ecx
mov edx, dword [ebp - 0x28]
cmp byte [ebp - 0x11], 0
je 0xb0d7274
lea eax, [ecx + edx]
mov edx, 0xfffffecc
cmp eax, edx
jge 0xb0d71a8
divsd xmm1, qword [0xb0abe68]
lea ecx, [eax + 0x134]
movaps xmm0, xmm1
cmovge ecx, eax
call fcn.0b0d637e
comisd xmm0, xmmword [0xb0abe70]
jbe 0xb0d7221
mov eax, dword [ebp - 0x1c]
mov dword [eax + 0x18], 0xd
mov ecx, dword [ebp - 0x30]
mov dword [eax + 0x1c], ecx
jmp 0xb0d735c
mov edx, dword [ebp - 0x28]
mov edi, 0x134
sub edi, edx
cmp al, 0x30
jl 0xb0d718a
cmp al, 0x39
jg 0xb0d7187
movsx eax, byte [esi]
lea edx, [esi + 1]
imul ecx, ecx, 0xa
mov dword [ebp - 0x48], edx
add ecx, 0xffffffd0
add ecx, eax
cmp ecx, edi
jg 0xb0d71c3
mov al, byte [edx]
mov esi, edx
cmp al, 0x30
jge 0xb0d71e6
jmp 0xb0d7187
mov eax, dword [ebp - 0x1c]
sub esi, dword [ebp - 0x40]
mov dword [eax + 0x18], 0xf
mov dword [eax + 0x1c], esi
jmp 0xb0d735c
cmp byte [ebp - 0x13], 0
je 0xb0d722e
xorps xmm0, xmmword [0xb0abef0]
mov ecx, dword [ebx + 0xc]
movsd qword [ebp - 0x38], xmm0
lea esi, [ecx + 0x18]
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
cmp eax, 0x10
jge 0xb0d7251
push ecx
mov ecx, esi
call fcn.0b0d77b0
movsd xmm0, qword [ebp - 0x38]
mov ecx, dword [esi + 0xc]
mov edi, ecx
lea eax, [ecx + 0x10]
mov dword [esi + 0xc], eax
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, 0x216
movsd qword [ecx], xmm0
mov word [ecx + 0xe], ax
jmp 0xb0d735c
cmp byte [ebp - 0x12], 0
je 0xb0d72be
cmp byte [ebp - 0x13], 0
je 0xb0d7299
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x24]
neg ecx
adc eax, 0
neg eax
push eax
push ecx
mov ecx, dword [ebx + 0xc]
call fcn.0b0d7553
jmp 0xb0d72a7
push dword [ebp - 0x24]
mov ecx, dword [ebx + 0xc]
push dword [ebp - 0x18]
call fcn.0b0d74d2
test al, al
jne 0xb0d735c
mov eax, dword [ebp - 0x1c]
mov dword [eax + 0x18], 0x10
jmp 0xb0d71cd
mov edi, dword [ebx + 0xc]
mov eax, dword [edi + 0x28]
lea ecx, [edi + 0x18]
sub eax, dword [edi + 0x24]
cmp byte [ebp - 0x13], 0
je 0xb0d730d
mov esi, dword [ebp - 0x2c]
neg esi
cmp eax, 0x10
jge 0xb0d72e0
push ecx
call fcn.0b0d77b0
mov ecx, dword [edi + 0x24]
lea eax, [ecx + 0x10]
mov dword [edi + 0x24], eax
xor eax, eax
mov edi, ecx
test esi, esi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, esi
cdq
mov dword [ecx], eax
mov eax, 0xb6
mov dword [ecx + 4], edx
mov edx, 0x1f6
cmovns eax, edx
jmp 0xb0d726b
cmp eax, 0x10
jge 0xb0d7318
push ecx
call fcn.0b0d77b0
mov ecx, dword [edi + 0x24]
lea eax, [ecx + 0x10]
mov dword [edi + 0x24], eax
xor eax, eax
mov edi, ecx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, dword [ebp - 0x2c]
and dword [ecx + 4], 0
mov dword [ecx], eax
shr eax, 0x1a
not eax
and eax, 0x20
or eax, 0x1d6
jmp 0xb0d726b
push 3
mov dword [ebp - 0x30], edx
sub esi, dword [ebp - 0x40]
pop eax
push 0x1c
pop edi
push 0x18
pop ecx
mov dword [ecx + edx], eax
mov ecx, dword [ebp - 0x30]
mov dword [ecx + edi], esi
mov edi, dword [ebx + 8]
lea esi, [ebp - 0x48]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.0b119832
ret 8