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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [0x68458c]
xor eax, ebp
mov dword [ebp - 4], eax
mov ah, byte [0x77ff16]
mov al, 1
sub al, ah
mov byte [0x77ff17], 1
shl al, 3
mov edx, 8
cmp al, dl
movzx ecx, al
push ebx
cmova ecx, edx
xor dl, dl
push esi
xor ebx, ebx
mov byte [0x77ff18], cl
mov byte [0x77ff13], dl
push edi
test cl, cl
je 0x57211d
nop dword [eax]
movzx eax, ah
movzx ecx, dl
lea eax, [ebx + eax*8]
lea edi, [eax*2 + 0x60b018]
add edi, eax
lea eax, [ebp - 0x28]
add eax, ecx
lea esi, [eax + ecx*2]
movzx eax, byte [edi]
push eax
push dword [ebp + 8]
call fcn.00571c00
add esp, 8
test al, al
je 0x5720d8
mov ax, word [edi]
mov word [esi], ax
mov al, byte [edi + 2]
jmp 0x5720f8
mov al, byte [edi]
cmp al, 4
jb 0x5720ea
cmp al, 8
ja 0x5720ea
mov dl, byte [0x77ff13]
jmp 0x572109
mov ax, word [0x60b030]
mov word [esi], ax
mov al, byte [0x60b032]
mov dl, byte [0x77ff13]
inc dl
mov byte [esi + 2], al
mov byte [0x77ff13], dl
movzx eax, byte [0x77ff18]
inc ebx
cmp ebx, eax
jae 0x57211d
mov ah, byte [0x77ff16]
jmp 0x5720a0
movzx ecx, dl
lea eax, [ebp - 0x28]
add eax, ecx
inc dl
lea ecx, [eax + ecx*2]
mov byte [0x77ff13], dl
mov ax, word [0x60b034]
push 0x63
mov word [ecx], ax
mov al, byte [0x60b036]
push 7
push dword [0x77ff04]
mov byte [ecx + 2], al
call fcn.00562940
add esp, 0xc
xor edi, edi
cmp byte [0x77ff13], 0
jbe 0x5721c6
lea ebx, [ebp - 0x28]
cmp byte [ebx], 0xa
je 0x57219d
lea eax, [edi + 8]
push eax
push dword [0x77ff04]
call fcn.00562fc0
mov esi, eax
push 1
push esi
call fcn.00562500
movzx ecx, byte [ebx + 1]
push ecx
push esi
call fcn.005628f0
movzx eax, byte [ebx + 2]
add eax, 0x64
push eax
push esi
call fcn.00562f40
add esp, 0x20
jmp 0x5721af
push 1
push 0x12
push dword [0x77ff04]
call fcn.00562530
add esp, 0xc
mov al, byte [ebx]
add ebx, 3
mov byte [edi + 0x77ff1f], al
inc edi
movzx eax, byte [0x77ff13]
cmp edi, eax
jb 0x572161
push 0x40
push dword [0x77ff04]
call fcn.00562fc0
push 0x41
push dword [0x77ff04]
mov edi, eax
call fcn.00562fc0
cmp byte [0x77ff17], 1
mov ebx, eax
seta byte [ebp - 0x30]
mov esi, dword [ebp - 0x30]
push esi
push edi
call fcn.00562500
push esi
push ebx
call fcn.00562500
add esp, 0x20
lea ecx, [edi + 0x290]
call fcn.00589350
push 0
push 0
movzx eax, word [eax + 6]
push eax
push edi
call fcn.00562770
add esp, 0x10
lea ecx, [ebx + 0x290]
call fcn.00589350
push 0
push 0
movzx eax, word [eax + 6]
push eax
push ebx
call fcn.00562770
push 0x43
push dword [0x77ff04]
call fcn.00562fc0
cmp byte [0x77ff17], 1
mov edi, eax
seta cl
movzx ecx, cl
push ecx
push edi
call fcn.00562500
movzx ecx, byte [0x77ff16]
add esp, 0x20
movzx eax, byte [0x77ff17]
inc cx
movzx edx, cx
movzx ebx, cx
mov ecx, 0xa
mov dword [ebp - 0x30], edx
cmp eax, ecx
jae 0x57229a
push eax
push 0x44
push edi
call fcn.00562790
push 0
push 0x45
push edi
call fcn.00562530
add esp, 0x18
jmp 0x5722c9
xor edx, edx
mov esi, eax
div ecx
push edx
push 0x44
push edi
call fcn.00562790
push 1
push 0x45
push edi
call fcn.00562530
mov eax, 0xcccccccd
mul esi
shr edx, 3
push edx
push 0x45
push edi
call fcn.00562790
add esp, 0x24
cmp word [ebp - 0x30], 9
movsx eax, bx
jae 0x5722fa
push eax
push 0x46
push edi
call fcn.00562790
push 0
push 0x47
push edi
call fcn.00562530
add esp, 0x18
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005b65aa
mov esp, ebp
pop ebp
ret
xor edx, edx
mov ecx, 0xa
div ecx
push edx
push 0x46
push edi
mov esi, eax
call fcn.00562790
push 1
push 0x47
push edi
call fcn.00562530
push esi
push 0x47
push edi
call fcn.00562790
mov ecx, dword [ebp - 4]
add esp, 0x24
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.005b65aa
mov esp, ebp
pop ebp
ret