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

Disassembly:
push 0x34
mov eax, 0x4f6673
call 0x515c56
mov edi, ecx
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.0046098f
cmp edi, dword [ebp + 8]
jne 0x4601f8
xor eax, eax
call 0x515d2e
ret
push 4
call fcn.004f9e98
pop ecx
xor ecx, ecx
cmp eax, ecx
je 0x46020d
lea edx, [ebp - 0x40]
mov dword [eax], edx
jmp 0x46020f
xor eax, eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 4], 1
mov dword [ebp - 0x14], esi
lea ebx, [ebp - 0x14]
lea esi, [ebp - 0x40]
call fcn.00460a2e
jmp 0x460469
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x34]
push 0xfffffffffffffffc
pop esi
test esi, eax
je 0x460472
lea eax, [ebp - 0x40]
call fcn.004609e2
mov ebx, dword [eax]
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x34]
and eax, esi
cmp eax, 0xfa0
jg 0x460484
mov al, byte [edi]
inc edi
mov byte [ebp - 0xd], al
cmp edi, dword [ebp + 8]
jb 0x460276
cmp al, 0x65
jne 0x460484
mov ecx, dword [ebx]
dec ecx
je 0x4602a8
dec ecx
jne 0x460343
cmp al, 0x65
je 0x4602ac
mov esi, ebx
call fcn.004607e5
mov dword [ebp - 0x14], eax
test eax, eax
je 0x4604ea
lea ebx, [ebp - 0x14]
lea esi, [ebp - 0x40]
call fcn.00460a2e
jmp 0x460343
cmp al, 0x65
jne 0x4602c6
mov dword [ebx + 0x14], edi
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x34]
test esi, eax
je 0x460469
sub dword [ebp - 0x30], 4
jmp 0x460469
movsx eax, al
sub eax, 0x30
cdq
push 0x3a
push dword [ebp + 8]
mov dword [ebp - 0x20], eax
lea esi, [ebp - 0x20]
mov eax, edi
mov dword [ebp - 0x1c], edx
call fcn.00460192
mov edi, eax
xor esi, esi
pop ecx
pop ecx
cmp edi, esi
je 0x460514
mov eax, dword [ebp - 0x20]
lea eax, [eax + edi + 3]
cmp eax, dword [ebp + 8]
ja 0x460514
cmp byte [edi], 0x3a
jne 0x460514
inc edi
cmp edi, dword [ebp + 8]
je 0x4604b6
push edi
mov esi, ebx
call fcn.0046056a
mov dword [ebp - 0x14], eax
test eax, eax
je 0x4604ea
add edi, dword [ebp - 0x20]
cmp edi, dword [ebp + 8]
jae 0x460506
lea ebx, [ebp - 0x14]
lea esi, [ebp - 0x40]
call fcn.00460a2e
mov al, byte [edi]
mov byte [ebp - 0xd], al
inc edi
lea eax, [ebp - 0x40]
call fcn.004609e2
mov ebx, dword [eax]
mov al, byte [ebp - 0xd]
cmp al, 0x64
je 0x460455
cmp al, 0x69
je 0x46040a
cmp al, 0x6c
je 0x460402
mov cl, al
sub cl, 0x30
cmp cl, 9
ja 0x460506
movsx eax, al
sub eax, 0x30
cdq
push 0x3a
push dword [ebp + 8]
mov dword [ebp - 0x28], eax
lea esi, [ebp - 0x28]
mov eax, edi
mov dword [ebp - 0x24], edx
call fcn.00460192
pop ecx
pop ecx
mov ecx, eax
test ecx, ecx
je 0x460506
mov esi, dword [ebp - 0x28]
lea eax, [esi + ecx + 1]
cmp eax, dword [ebp + 8]
ja 0x460506
cmp byte [ecx], 0x3a
jne 0x460506
inc ecx
cmp esi, 0xa
mov dword [ebx], 3
mov dword [ebx + 4], ecx
mov dword [ebx + 8], esi
mov eax, esi
mov dword [ebp - 0x14], 1
jl 0x4603df
push 0xa
cdq
pop edi
idiv edi
inc dword [ebp - 0x14]
cmp eax, edi
jge 0x4603d2
mov eax, ecx
sub eax, dword [ebp - 0x14]
add ecx, esi
dec eax
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x14], ecx
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x34]
test eax, 0xfffffffc
je 0x4603fe
sub dword [ebp - 0x30], 4
mov edi, ecx
jmp 0x460469
mov dword [ebx], 2
jmp 0x46045b
mov ecx, edi
cmp edi, dword [ebp + 8]
jae 0x46041c
cmp byte [ecx], 0x65
je 0x46041c
inc ecx
cmp ecx, dword [ebp + 8]
jb 0x460411
mov eax, ecx
sub eax, edi
mov dword [ebx + 8], eax
lea edx, [edi - 1]
lea eax, [eax + edi + 1]
mov dword [ebx], 4
mov dword [ebx + 4], edi
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x14], eax
cmp ecx, dword [ebp + 8]
je 0x460506
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x34]
lea edi, [ecx + 1]
test eax, 0xfffffffc
jmp 0x4602b7
mov dword [ebx], 1
and dword [ebx + 8], 0
and dword [ebx + 0xc], 0
lea eax, [edi - 1]
mov dword [ebx + 0x10], eax
cmp edi, dword [ebp + 8]
jb 0x460235
xor esi, esi
cmp dword [ebp - 0x34], esi
je 0x4604cf
push dword [ebp - 0x34]
call fcn.004f9ed2
pop ecx
jmp 0x4604cf
mov ecx, dword [ebp + 0xc]
call fcn.0046098f
xor esi, esi
cmp dword [ebp - 0x34], esi
je 0x46049c
push dword [ebp - 0x34]
call fcn.004f9ed2
pop ecx
push dword [ebp - 0x40]
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x2c], esi
call fcn.004f9ed2
pop ecx
or eax, 0xffffffff
jmp 0x4601f2
mov ecx, dword [ebp + 0xc]
call fcn.0046098f
cmp dword [ebp - 0x34], esi
je 0x4604cc
push dword [ebp - 0x34]
call fcn.004f9ed2
pop ecx
or esi, 0xffffffff
push dword [ebp - 0x40]
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
call fcn.004f9ed2
pop ecx
mov eax, esi
jmp 0x4601f2
mov ecx, dword [ebp + 0xc]
call fcn.0046098f
cmp dword [ebp - 0x34], 0
je 0x460501
push dword [ebp - 0x34]
call fcn.004f9ed2
pop ecx
push 0xfffffffffffffffe
pop esi
jmp 0x4604cf
mov ecx, dword [ebp + 0xc]
call fcn.0046098f
cmp dword [ebp - 0x34], 0
jmp 0x4604c1
mov ecx, dword [ebp + 0xc]
call fcn.0046098f
jmp 0x46048e