Function at 0x1007b690
Capabilities:
Encrypt data using rc4 prga
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x10183db0
push 0x10132540
mov eax, dword fs:[0]
push eax
sub esp, 0x14
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
xor esi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x20], esi
mov ebx, dword [ebp + 8]
cmp byte [ebx], 0
je 0x1007b869
mov edi, dword [ebp + 0x10]
cmp edi, esi
je 0x1007b869
lea eax, [edi + 1]
push eax
push esi
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.1012e060
add esp, 0xc
lea eax, [edi - 1]
mov edx, eax
and edx, reloc.WS2_32.dll_accept
jns 0x1007b708
dec edx
or edx, 0xfffffffe
inc edx
cdq
jne 0x1007b711
sub eax, edx
sar eax, 1
jmp 0x1007b716
sub eax, edx
sar eax, 1
inc eax
mov dword [ebp - 0x24], eax
mov al, byte [eax + ebx]
cmp al, 0x61
jl 0x1007b728
cmp al, 0x7a
jg 0x1007b728
sub al, 0x61
jmp 0x1007b72a
sub al, 0x30
movzx edi, al
mov eax, edi
cdq
mov ecx, 0xa
idiv ecx
mov bl, dl
mov dword [ebp - 0x1c], esi
cmp esi, 0x1a
jge 0x1007b775
lea ecx, [edi + esi]
cmp ecx, 0x1a
jl 0x1007b75f
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x1a
sub ecx, eax
movzx eax, byte [ecx + str.qilcpfuwryvajnxgetzhmsbdok]
sub eax, 0x61
lea ecx, [esi + 0x61]
mov byte [eax + str.lwdxqfptbmzcunyeaivrgkhojs], cl
inc esi
jmp 0x1007b739
xor esi, esi
mov dword [ebp - 0x1c], esi
cmp esi, 0xa
jge 0x1007b7b7
movzx ecx, bl
add ecx, esi
cmp ecx, 0xa
jl 0x1007b7a1
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
movzx eax, byte [ecx + str.6810247593]
sub eax, 0x30
lea ecx, [esi + 0x30]
mov byte [eax + str.3249570618], cl
inc esi
jmp 0x1007b777
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [ebp + 0x10]
jge 0x1007b869
cmp ecx, dword [ebp - 0x24]
jne 0x1007b7ce
inc ecx
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp + 8]
mov al, byte [ecx + edx]
mov dl, al
sub dl, 0x41
cmp dl, 0x19
ja 0x1007b816
movsx eax, al
mov al, byte [eax + 0x101a470b]
cmp al, 0x61
jb 0x1007b804
cmp al, 0x7a
ja 0x1007b804
movzx eax, al
sub eax, 0x20
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp - 0x20]
mov byte [esi + edx], al
inc ecx
inc dword [ebp - 0x20]
jmp 0x1007b7b9
movzx eax, al
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp - 0x20]
mov byte [esi + edx], al
inc ecx
inc dword [ebp - 0x20]
jmp 0x1007b7b9
mov dl, al
sub dl, 0x61
mov esi, dword [ebp + 0xc]
cmp dl, 0x19
ja 0x1007b838
movsx eax, al
mov dl, byte [eax + 0x101a46eb]
mov eax, dword [ebp - 0x20]
mov byte [eax + esi], dl
inc ecx
inc dword [ebp - 0x20]
jmp 0x1007b7b9
mov dl, al
sub dl, 0x30
cmp dl, 9
ja 0x1007b85a
movsx eax, al
mov dl, byte [eax + 0x101a4738]
mov eax, dword [ebp - 0x20]
mov byte [eax + esi], dl
inc ecx
inc dword [ebp - 0x20]
jmp 0x1007b7b9
mov edx, dword [ebp - 0x20]
mov byte [edx + esi], al
inc ecx
inc dword [ebp - 0x20]
jmp 0x1007b7b9
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x20]
mov byte [ecx + eax], 0
jmp 0x1007b88d
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