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

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x1016e138
push 0x10118480
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x1017455c]
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 0x1005e459
mov edi, dword [ebp + 0x10]
cmp edi, esi
je 0x1005e459
lea eax, [edi + 1]
push eax
push esi
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.10116880
add esp, 0xc
lea eax, [edi - 1]
mov edx, eax
and edx, 0x80000001
jns 0x1005e2f8
dec edx
or edx, 0xfffffffe
inc edx
cdq
jne 0x1005e301
sub eax, edx
sar eax, 1
jmp 0x1005e306
sub eax, edx
sar eax, 1
inc eax
mov dword [ebp - 0x24], eax
mov al, byte [eax + ebx]
cmp al, 0x61
jl 0x1005e318
cmp al, 0x7a
jg 0x1005e318
sub al, 0x61
jmp 0x1005e31a
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 0x1005e365
lea ecx, [edi + esi]
cmp ecx, 0x1a
jl 0x1005e34f
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 0x1005e329
xor esi, esi
mov dword [ebp - 0x1c], esi
cmp esi, 0xa
jge 0x1005e3a7
movzx ecx, bl
add ecx, esi
cmp ecx, 0xa
jl 0x1005e391
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 0x1005e367
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [ebp + 0x10]
jge 0x1005e459
cmp ecx, dword [ebp - 0x24]
jne 0x1005e3be
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 0x1005e406
movsx eax, al
mov al, byte [eax + 0x1018ccc3]
cmp al, 0x61
jb 0x1005e3f4
cmp al, 0x7a
ja 0x1005e3f4
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 0x1005e3a9
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 0x1005e3a9
mov dl, al
sub dl, 0x61
mov esi, dword [ebp + 0xc]
cmp dl, 0x19
ja 0x1005e428
movsx eax, al
mov dl, byte [eax + 0x1018cca3]
mov eax, dword [ebp - 0x20]
mov byte [eax + esi], dl
inc ecx
inc dword [ebp - 0x20]
jmp 0x1005e3a9
mov dl, al
sub dl, 0x30
cmp dl, 9
ja 0x1005e44a
movsx eax, al
mov dl, byte [eax + 0x1018ccf0]
mov eax, dword [ebp - 0x20]
mov byte [eax + esi], dl
inc ecx
inc dword [ebp - 0x20]
jmp 0x1005e3a9
mov edx, dword [ebp - 0x20]
mov byte [edx + esi], al
inc ecx
inc dword [ebp - 0x20]
jmp 0x1005e3a9
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x20]
mov byte [ecx + eax], 0
jmp 0x1005e47d
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