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

Disassembly:
mov eax, 0xaf99d6
call fcn.00a6fc7c
sub esp, 0x30
and dword [ebp - 0x28], 0
push ebx
push esi
mov esi, ecx
mov ecx, dword [ebp + 8]
push edi
mov dword [ebp - 0x10], esi
call fcn.004066c9
movzx eax, al
test eax, eax
je 0xa2932f
and dword [esi + 0x2088], 0
call fcn.00994c7a
mov dword [esi + 0x208c], eax
lea eax, [ebp - 0x3c]
push eax
mov ecx, esi
call fcn.00426f51
mov esi, dword [eax + 4]
lea ecx, [ebp - 0x3c]
call fcn.00429bfe
push dword [esi + 0x35]
lea ebx, [esi + 0x33]
push ebx
call fcn.004f7707
push dword [esi + 0x3d]
movzx edi, al
mov eax, dword [esi + 0x13]
mov dword [ebp - 0x24], eax
lea eax, [esi + 0x39]
push eax
call fcn.0047376f
add esp, 0x10
push dword [ebp + 8]
movsx eax, ax
mov ecx, esi
mov dword [ebp - 0x18], eax
call fcn.004f2674
test al, 0x38
mov dword [ebp - 0x14], eax
je 0xa29399
mov eax, dword [0xbdd490]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x20], eax
call fcn.004066c9
mov ecx, dword [ebp - 0x20]
push eax
call fcn.0096795f
mov ecx, dword [ebp - 0x10]
call fcn.00a11a22
push dword [esi + 0x35]
push ebx
call fcn.004f7707
movzx eax, al
cmp eax, edi
pop ecx
pop ecx
jle 0xa2971b
xor edi, edi
cmp dword [0xbdd490], edi
je 0xa2971d
push 0xc00614a4
push ecx
mov ecx, esp
mov dword [ebp - 0x30], esp
push edi
call fcn.0043286e
push edi
push edi
push ecx
mov eax, esp
mov dword [ebp - 0x34], esp
push eax
mov dword [ebp - 4], edi
call fcn.0054828b
mov ecx, eax
call fcn.004b1c27
lea eax, [ebp - 0x28]
push 0x826
push eax
mov byte [ebp - 4], 1
call fcn.007a48d0
mov ecx, eax
call fcn.0040634c
push edi
mov ecx, eax
mov byte [ebp - 4], 3
call fcn.00414b5f
push eax
call fcn.0043291a
mov ecx, eax
call fcn.004393fd
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0040265e
lea eax, [ebp - 0x28]
push 0x1534
push eax
call fcn.007a48d0
mov ecx, eax
call fcn.0040634c
mov eax, dword [eax]
push 0x64
push eax
mov dword [ebp - 4], 4
call fcn.00996d94
or dword [ebp - 4], 0xffffffff
pop ecx
pop ecx
lea ecx, [ebp - 0x28]
call fcn.0040265e
mov ecx, dword [0xbdd490]
push edi
call fcn.0094983a
push dword [esi + 0x35]
push ebx
call fcn.004f7707
cmp al, 0xa
pop ecx
pop ecx
ja 0xa2948e
mov ecx, dword [0xbdd6f0]
cmp ecx, edi
je 0xa2948e
push 1
push 2
call fcn.008e4ca8
push dword [esi + 0x35]
push ebx
call fcn.004f7707
cmp al, 2
pop ecx
pop ecx
jne 0xa29505
mov ebx, dword [ebp - 0x10]
cmp dword [ebx + 0x3398], edi
jne 0xa294e4
push 0x658
mov ecx, 0xbe1de0
call fcn.00402d66
mov dword [ebp + 8], eax
cmp eax, edi
mov dword [ebp - 4], 5
je 0xa294d2
push 0xffffffffffffffff
push 1
mov ecx, eax
call fcn.008bb751
jmp 0xa294d4
xor eax, eax
or dword [ebp - 4], 0xffffffff
push eax
lea ecx, [ebx + 0x3394]
call fcn.00a1d259
mov ecx, dword [0xbe22dc]
cmp ecx, edi
jne 0xa294f5
call fcn.00899cd2
jmp 0xa294fa
call fcn.009ea0df
mov ecx, dword [0xbe22dc]
call fcn.008994fd
mov dword [ebp + 8], 0x4b0
push dword [ebp + 8]
mov ecx, dword [0xbde9fc]
call fcn.0084bb69
mov edi, eax
xor ebx, ebx
cmp edi, ebx
je 0xa295de
push dword [esi + 0x35]
lea eax, [esi + 0x33]
push eax
call fcn.004f7707
movzx eax, al
cmp dword [edi + 0x1c], eax
pop ecx
pop ecx
jne 0xa295de
mov eax, dword [edi + 0x4c]
cmp eax, ebx
je 0xa2959a
cmp dword [eax - 4], ebx
je 0xa2959a
push dword [esi + 0x3d]
lea eax, [esi + 0x39]
push eax
call fcn.0047376f
movsx eax, ax
pop ecx
cdq
pop ecx
mov ecx, 0x3e8
idiv ecx
push 0x64
pop ecx
mov eax, edx
cdq
idiv ecx
cmp eax, 9
je 0xa2959a
mov eax, dword [edi + 0x4c]
test eax, eax
je 0xa295de
cmp ebx, dword [eax - 4]
jae 0xa295de
push dword [esi + 0x3d]
lea eax, [esi + 0x39]
push eax
call fcn.0047376f
pop ecx
movsx eax, ax
pop ecx
mov ecx, dword [edi + 0x4c]
cmp eax, dword [ecx + ebx*4]
je 0xa2959a
inc ebx
jmp 0xa29572
push 0x10c
mov ecx, 0xbe1de0
call fcn.00402d66
mov dword [ebp - 0x34], eax
test eax, eax
mov dword [ebp - 4], 6
je 0xa295c2
mov ecx, eax
call fcn.0052ac1c
mov edi, eax
jmp 0xa295c4
xor edi, edi
push dword [ebp + 8]
or dword [ebp - 4], 0xffffffff
mov ecx, edi
call fcn.0052ea70
mov ecx, dword [0xbd9028]
push edi
call fcn.00a2df3a
inc dword [ebp + 8]
cmp word [ebp + 8], 0x578
jb 0xa2950c
push dword [esi + 0x35]
lea eax, [esi + 0x33]
push eax
call fcn.004f7707
cmp al, 0xb
pop ecx
pop ecx
jne 0xa29631
mov ecx, dword [0xbdd490]
test ecx, ecx
je 0xa29631
mov eax, dword [ecx]
call dword [eax + 0x40]
cdq
mov ecx, 0x3e8
idiv ecx
mov ecx, dword [0xbdd490]
dec eax
neg eax
sbb eax, eax
and eax, 0x989680
add eax, 0x989a75
push eax
call fcn.0096d1cc
mov eax, dword [esi + 0x2eb]
and dword [ebp - 0x1c], 0
test eax, eax
je 0xa2965a
mov ecx, dword [esi + 0x2ef]
lea ecx, [eax + ecx*4]
cmp eax, ecx
jae 0xa2965a
cmp dword [eax], 0
jne 0xa29656
add eax, 4
jmp 0xa29648
mov eax, dword [eax]
jmp 0xa2965c
xor eax, eax
test eax, eax
mov dword [ebp - 0x20], eax
je 0xa2971b
cmp dword [ebp - 0x1c], 0
jne 0xa2971b
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x20]
push eax
lea ecx, [esi + 0x2e7]
call fcn.004f7e1b
cmp dword [ebp - 0x28], 1
mov eax, dword [eax]
jl 0xa29711
mov ecx, dword [0xbd8fec]
push eax
call fcn.00769b51
mov edi, eax
xor ebx, ebx
cmp edi, ebx
je 0xa29711
mov dword [ebp + 8], ebx
mov eax, dword [edi + 0x60]
test eax, eax
je 0xa29711
mov ecx, dword [ebp + 8]
cmp ecx, dword [eax - 4]
jae 0xa29711
push dword [esi + 0x35]
lea eax, [esi + 0x33]
push eax
call fcn.004f7707
pop ecx
movzx eax, al
pop ecx
mov ecx, dword [edi + 0x60]
cmp eax, dword [ebx + ecx + 8]
je 0xa296d8
inc dword [ebp + 8]
add ebx, 0xc
jmp 0xa296a7
call fcn.00a34f14
push ecx
mov ecx, esp
and dword [ecx], 0
mov dword [ebp - 0x34], esp
add edi, 4
push edi
call fcn.00418f94
or dword [ebp - 4], 0xffffffff
mov ecx, esi
call fcn.008dcd92
movzx eax, al
push eax
call fcn.00a34f59
mov ecx, eax
call fcn.0080af83
mov dword [ebp - 0x1c], 1
cmp dword [ebp - 0x20], 0
jne 0xa29667
xor edi, edi
mov eax, dword [ebp - 0x10]
test byte [eax + 0x2054], 3
jne 0xa29746
mov ecx, dword [0xbdd6f0]
cmp ecx, edi
je 0xa29746
mov eax, dword [0xbd9028]
cmp dword [eax + 0x14], edi
jne 0xa29746
push 1
push 4
call fcn.008e4ca8
call fcn.00994c7a
push dword [esi + 0x99]
mov ebx, eax
lea eax, [esi + 0x91]
push eax
call fcn.00416de8
push dword [esi + 0x35]
mov dword [ebp - 0x28], eax
lea eax, [esi + 0x33]
push eax
call fcn.004f7707
fild dword [ebp - 0x28]
movzx eax, al
push eax
fstp dword [ebp - 0x28]
call fcn.00793711
mov dword [ebp + 8], eax
fild dword [ebp + 8]
add esp, 0x14
fdivr dword [ebp - 0x28]
fcomp qword [0xb00ae8]
fnstsw ax
sahf
jb 0xa297ba
mov eax, dword [ebp - 0x10]
cmp dword [eax + 0x35a4], ebx
lea edi, [eax + 0x35a4]
jle 0xa297ba
mov ecx, dword [0xbdd490]
push 1
call fcn.0094983a
add ebx, 0x668a0
mov dword [edi], ebx
test byte [ebp - 0x14], 0xc0
je 0xa29901
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x33b0]
xor edi, edi
cmp ecx, edi
je 0xa297da
push 1
call fcn.0089416c
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x33b8]
cmp ecx, edi
je 0xa297ee
push 1
call fcn.00851adb
test byte [ebp - 0x14], 0x80
je 0xa29903
or ebx, 0xffffffff
push ebx
push ecx
mov eax, esp
mov dword [ebp - 0x34], esp
push eax
call fcn.0054828b
mov ecx, eax
add ecx, 0x88
call fcn.00451e06
push edi
push edi
push ecx
mov eax, esp
mov dword [ebp - 0x30], esp
push eax
mov dword [ebp - 4], 8
call fcn.0054828b
mov ecx, eax
call fcn.004b1c27
lea eax, [ebp - 0x28]
push 0x828
push eax
mov byte [ebp - 4], 9
call fcn.007a48d0
mov ecx, eax
call fcn.0040634c
push edi
mov ecx, eax
mov byte [ebp - 4], 0xb
call fcn.00414b5f
push eax
call fcn.0043291a
mov ecx, eax
call fcn.004393fd
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], ebx
call fcn.0040265e
lea eax, [ebp - 0x28]
push 0x82b
push eax
call fcn.007a48d0
mov ecx, eax
call fcn.0040634c
mov eax, dword [eax]
push 0x64
push eax
mov dword [ebp - 4], 0xc
call fcn.00996d94
pop ecx
pop ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], ebx
call fcn.0040265e
cmp dword [ebp - 0x18], edi
je 0xa298b8
cmp dword [ebp - 0x18], 0x3e8
je 0xa298b8
cmp dword [ebp - 0x18], 0x7d0
jne 0xa29903
mov eax, dword [ebp - 0x10]
cmp dword [eax + 0x3390], edi
jne 0xa29903
push 0x624
mov ecx, 0xbe1de0
call fcn.00402d66
mov dword [ebp + 8], eax
cmp eax, edi
mov dword [ebp - 4], 0xd
je 0xa298eb
push 1
mov ecx, eax
call fcn.008ca0aa
jmp 0xa298ed
xor eax, eax
push eax
mov eax, dword [ebp - 0x10]
lea ecx, [eax + 0x338c]
mov dword [ebp - 4], ebx
call fcn.00a1d20f
jmp 0xa29903
xor edi, edi
test byte [ebp - 0x14], 2
je 0xa299d0
mov esi, dword [esi + 0x13]
mov eax, esi
cdq
mov ecx, 0x3e8
idiv ecx
mov ebx, 0x3e8
mov ecx, eax
mov eax, dword [ebp - 0x24]
cdq
idiv ebx
cmp eax, ecx
jne 0xa299d0
push 0x64
mov eax, esi
cdq
pop ecx
idiv ecx
mov eax, dword [ebp - 0x24]
push 0x64
pop ebx
mov ecx, edx
cdq
idiv ebx
cmp edx, ecx
jne 0xa299d0
push ebx
pop ecx
mov eax, esi
cdq
idiv ecx
push 0xa
pop ecx
cdq
idiv ecx
mov ecx, dword [0xbd8fe8]
lea eax, [edx + 0x4e9d64]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.0060313e
lea eax, [ebp - 0x2c]
push 0xd9e
push eax
mov dword [ebp - 4], 0xe
call fcn.007a48d0
mov ecx, eax
call fcn.0040652b
mov eax, dword [eax]
mov dword [ebp + 8], edi
push 0xb
push dword [ebp - 0x1c]
mov byte [ebp - 4], 0x10
push eax
lea eax, [ebp + 8]
push eax
call fcn.0044549c
add esp, 0xc
push eax
call fcn.00490191
pop ecx
pop ecx
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0xf
call fcn.004063b5
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0xe
call fcn.004063b5
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1c]
call fcn.004063b5
test byte [ebp - 0x13], 0x10
je 0xa299df
mov ecx, dword [ebp - 0x10]
push edi
call fcn.00a32ee1
test byte [ebp - 0x12], 0x10
je 0xa299ee
mov ecx, dword [ebp - 0x10]
push edi
call fcn.00a28e28
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 4