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

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
mov esi, ecx
push edi
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x14]
mov eax, dword [ecx + 4]
lea edi, [edx - 1]
mov dword [ebp - 8], edi
mov eax, dword [eax + 3]
sar eax, 1
cmp edx, eax
jge 0x5e1384
push edx
call fcn.00542a50
inc dword [esi + 0x14]
movzx eax, ax
mov dword [esi + 0x10], eax
jmp 0x5e138f
mov dword [esi + 0x10], 0x200000
mov byte [esi + 0x1c], 0
mov eax, dword [esi + 0x10]
xor ebx, ebx
add eax, 0xffffffd0
mov dword [ebp - 4], ebx
cmp eax, 9
jbe 0x5e13f0
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x14], edi
mov eax, dword [ecx + 4]
mov eax, dword [eax + 3]
sar eax, 1
cmp edi, eax
setl al
mov byte [esi + 0x1c], al
mov eax, dword [ecx + 4]
mov eax, dword [eax + 3]
sar eax, 1
cmp edi, eax
jge 0x5e13db
push edi
call fcn.00542a50
inc dword [esi + 0x14]
movzx eax, ax
pop edi
mov dword [esi + 0x10], eax
xor al, al
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
pop edi
mov byte [esi + 0x1c], bl
xor al, al
mov dword [esi + 0x10], 0x200000
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 0x10]
lea edi, [ecx - 0x30]
cmp edi, 9
ja 0x5e1495
mov ecx, 0x7fffffff
mov eax, 0x66666667
sub ecx, edi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jg 0x5e1454
mov ecx, dword [esi + 0xc]
lea eax, [ebx + ebx*4]
mov edx, dword [esi + 0x14]
lea ebx, [edi + eax*2]
mov dword [ebp - 4], ebx
mov eax, dword [ecx + 4]
mov eax, dword [eax + 3]
sar eax, 1
cmp edx, eax
jge 0x5e1447
push edx
call fcn.00542a50
inc dword [esi + 0x14]
movzx eax, ax
mov dword [esi + 0x10], eax
jmp 0x5e13f0
mov dword [esi + 0x10], 0x200000
mov byte [esi + 0x1c], 0
jmp 0x5e13f0
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x14]
mov eax, dword [ecx + 4]
mov eax, dword [eax + 3]
sar eax, 1
cmp edx, eax
jge 0x5e1477
push edx
call fcn.00542a50
inc dword [esi + 0x14]
movzx eax, ax
mov dword [esi + 0x10], eax
jmp 0x5e1482
mov dword [esi + 0x10], 0x200000
mov byte [esi + 0x1c], 0
mov ecx, dword [esi + 0x10]
lea eax, [ecx - 0x30]
cmp eax, 9
jbe 0x5e1454
mov ebx, 0x7fffffff
mov dword [ebp - 4], ebx
xor edi, edi
cmp ecx, 0x7d
jne 0x5e14fa
mov ecx, dword [esi + 0xc]
mov edi, ebx
mov edx, dword [esi + 0x14]
mov eax, dword [ecx + 4]
mov eax, dword [eax + 3]
sar eax, 1
cmp edx, eax
jge 0x5e14d7
push edx
call fcn.00542a50
inc dword [esi + 0x14]
mov ecx, dword [ebp - 4]
movzx eax, ax
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 8]
mov dword [eax], ecx
mov eax, dword [ebp + 0xc]
mov dword [eax], edi
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [esi + 0x10], 0x200000
mov byte [esi + 0x1c], 0
mov dword [eax], ecx
mov eax, dword [ebp + 0xc]
mov dword [eax], edi
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp ecx, 0x2c
mov ecx, esi
jne 0x5e15de
call fcn.005df540
cmp dword [esi + 0x10], 0x7d
jne 0x5e1534
mov edi, 0x7fffffff
mov ecx, esi
call fcn.005df540
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
mov eax, dword [ebp + 0xc]
mov dword [eax], edi
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 0x10]
lea ebx, [ecx - 0x30]
cmp ebx, 9
ja 0x5e15d3
mov ecx, 0x7fffffff
mov eax, 0x66666667
sub ecx, ebx
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jg 0x5e1595
mov ecx, dword [esi + 0xc]
lea eax, [edi + edi*4]
mov edx, dword [esi + 0x14]
lea edi, [ebx + eax*2]
mov eax, dword [ecx + 4]
mov eax, dword [eax + 3]
sar eax, 1
cmp edx, eax
jge 0x5e1588
push edx
call fcn.00542a50
inc dword [esi + 0x14]
movzx eax, ax
mov dword [esi + 0x10], eax
jmp 0x5e1534
mov dword [esi + 0x10], 0x200000
mov byte [esi + 0x1c], 0
jmp 0x5e1534
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x14]
mov eax, dword [ecx + 4]
mov eax, dword [eax + 3]
sar eax, 1
cmp edx, eax
jge 0x5e15b8
push edx
call fcn.00542a50
inc dword [esi + 0x14]
movzx eax, ax
mov dword [esi + 0x10], eax
jmp 0x5e15c3
mov dword [esi + 0x10], 0x200000
mov byte [esi + 0x1c], 0
mov ecx, dword [esi + 0x10]
lea eax, [ecx - 0x30]
cmp eax, 9
jbe 0x5e1595
mov edi, 0x7fffffff
cmp ecx, 0x7d
je 0x5e1515
mov ecx, esi
push dword [ebp - 8]
call fcn.005e1b20
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 8