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

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x10183dd0
push 0x10132540
mov eax, dword fs:[0]
push eax
sub esp, 0x20
push ebx
push esi
push edi
mov eax, dword [0x10189710]
xor dword [ebp - 8], eax
xor eax, ebp
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
mov esi, ecx
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], eax
call fcn.1005be60
mov edi, eax
xor bl, bl
mov byte [ebp - 0x19], bl
mov dword [ebp - 0x24], esi
xor edx, edx
xor eax, eax
mov dword [ebp - 0x2c], eax
cmp esi, edx
je 0x1007b43c
mov dword [ebp - 0x24], edx
cmp esi, 0x61
jl 0x1007b427
lea ebx, [esi - 0x61]
jmp 0x1007b431
lea ecx, [esi - 0x41]
cmp ecx, 0x19
ja 0x1007b441
mov bl, cl
mov eax, 1
mov byte [ebp - 0x19], bl
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x24], edx
jne 0x1007b472
cmp eax, edx
jne 0x1007b459
mov eax, 0x4ec4ec4f
mul edi
shr edx, 3
imul edx, edx, 0x1a
mov ebx, edi
sub ebx, edx
mov byte [ebp - 0x19], bl
movzx eax, bl
add eax, 0x61
cmp eax, 0x6c
je 0x1007b46e
cmp eax, 0x69
je 0x1007b46e
cmp eax, 0x6f
jne 0x1007b488
inc bl
jmp 0x1007b485
mov eax, 0xcccccccd
mul edi
shr edx, 3
lea eax, [edx + edx*4]
add eax, eax
mov ebx, edi
sub ebx, eax
mov byte [ebp - 0x19], bl
movzx eax, bl
cdq
mov ecx, 0xa
idiv ecx
mov byte [ebp - 0x1a], dl
mov edx, dword [ebp + 8]
cmp byte [edx], 0
je 0x1007b650
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x1007b650
lea eax, [esi + 2]
push eax
push 0
mov edi, dword [ebp + 0xc]
push edi
call fcn.1012e060
add esp, 0xc
mov ecx, esi
and ecx, reloc.WS2_32.dll_accept
jns 0x1007b4ce
dec ecx
or ecx, 0xfffffffe
inc ecx
mov eax, esi
cdq
jne 0x1007b4d9
sub eax, edx
sar eax, 1
jmp 0x1007b4de
sub eax, edx
sar eax, 1
inc eax
mov dword [ebp - 0x30], eax
xor eax, eax
mov dword [ebp - 0x28], eax
cmp eax, esi
jge 0x1007b619
mov esi, dword [ebp - 0x20]
cmp esi, dword [ebp - 0x30]
jne 0x1007b514
cmp dword [ebp - 0x24], 0
jne 0x1007b507
movzx edx, bl
add edx, 0x61
mov byte [esi + edi], dl
jmp 0x1007b510
movzx ecx, bl
add ecx, 0x30
mov byte [esi + edi], cl
inc esi
mov dword [ebp - 0x20], esi
mov edx, dword [ebp + 8]
mov al, byte [eax + edx]
mov cl, al
sub cl, 0x41
cmp cl, 0x19
ja 0x1007b586
movsx edx, al
movzx eax, bl
lea ecx, [edx + eax - 0x41]
cmp ecx, 0x1a
jl 0x1007b549
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x1a
sub ecx, eax
mov al, byte [ecx + 0x101a46fc]
cmp al, 0x61
jb 0x1007b570
cmp al, 0x7a
ja 0x1007b570
movzx eax, al
sub eax, 0x20
mov byte [esi + edi], al
mov eax, dword [ebp - 0x28]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov esi, dword [ebp + 0x10]
jmp 0x1007b4e3
movzx eax, al
mov byte [esi + edi], al
mov eax, dword [ebp - 0x28]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov esi, dword [ebp + 0x10]
jmp 0x1007b4e3
mov cl, al
sub cl, 0x61
cmp cl, 0x19
ja 0x1007b5ce
movsx edx, al
movzx eax, bl
lea ecx, [edx + eax - 0x61]
cmp ecx, 0x1a
jl 0x1007b5b5
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x1a
sub ecx, eax
mov cl, byte [ecx + 0x101a46fc]
mov byte [esi + edi], cl
mov eax, dword [ebp - 0x28]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov esi, dword [ebp + 0x10]
jmp 0x1007b4e3
mov dl, al
sub dl, 0x30
cmp dl, 9
ja 0x1007b606
movsx eax, al
movzx ecx, byte [ebp - 0x1a]
lea ecx, [eax + ecx - 0x30]
cmp ecx, 0xa
jl 0x1007b600
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + eax*4]
add edx, edx
sub ecx, edx
mov al, byte [ecx + 0x101a4718]
mov byte [esi + edi], al
mov eax, dword [ebp - 0x28]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov esi, dword [ebp + 0x10]
jmp 0x1007b4e3
cmp dword [ebp - 0x20], 1
jne 0x1007b653
mov dword [ebp - 0x20], 2
cmp dword [ebp - 0x24], 0
jne 0x1007b63e
movzx ecx, bl
add ecx, 0x61
mov byte [edi + 1], cl
mov eax, dword [ebp - 0x20]
mov byte [eax + edi], 0
jmp 0x1007b674
movzx edx, bl
add edx, 0x30
mov byte [edi + 1], dl
mov eax, dword [ebp - 0x20]
mov byte [eax + edi], 0
jmp 0x1007b674
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x20]
mov byte [eax + edi], 0
jmp 0x1007b674
mov dword [ebp - 4], 0xfffffffe
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret