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

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0xb11630
push 0xa847a0
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0xb196ec]
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 0x979e69
mov edi, dword [ebp + 0x10]
cmp edi, esi
je 0x979e69
lea eax, [edi + 1]
push eax
push esi
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.00a7ffb0
add esp, 0xc
lea eax, [edi - 1]
mov edx, eax
and edx, 0x80000001
jns 0x979d08
dec edx
or edx, 0xfffffffe
inc edx
cdq
jne 0x979d11
sub eax, edx
sar eax, 1
jmp 0x979d16
sub eax, edx
sar eax, 1
inc eax
mov dword [ebp - 0x24], eax
mov al, byte [eax + ebx]
cmp al, 0x61
jl 0x979d28
cmp al, 0x7a
jg 0x979d28
sub al, 0x61
jmp 0x979d2a
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 0x979d75
lea ecx, [edi + esi]
cmp ecx, 0x1a
jl 0x979d5f
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 + 0xb4c8a8]
sub eax, 0x61
lea ecx, [esi + 0x61]
mov byte [eax + str.cnuohwgksdqtlepvrzmixbyfaj], cl
inc esi
jmp 0x979d39
xor esi, esi
mov dword [ebp - 0x1c], esi
cmp esi, 0xa
jge 0x979db7
movzx ecx, bl
add ecx, esi
cmp ecx, 0xa
jl 0x979da1
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 + 0xb4c8c4]
sub eax, 0x30
lea ecx, [esi + 0x30]
mov byte [eax + str.4350681729], cl
inc esi
jmp 0x979d77
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [ebp + 0x10]
jge 0x979e69
cmp ecx, dword [ebp - 0x24]
jne 0x979dce
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 0x979e16
movsx eax, al
mov al, byte [eax + 0xb4c88f]
cmp al, 0x61
jb 0x979e04
cmp al, 0x7a
ja 0x979e04
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 0x979db9
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 0x979db9
mov dl, al
sub dl, 0x61
mov esi, dword [ebp + 0xc]
cmp dl, 0x19
ja 0x979e38
movsx eax, al
mov dl, byte [eax + 0xb4c86f]
mov eax, dword [ebp - 0x20]
mov byte [eax + esi], dl
inc ecx
inc dword [ebp - 0x20]
jmp 0x979db9
mov dl, al
sub dl, 0x30
cmp dl, 9
ja 0x979e5a
movsx eax, al
mov dl, byte [eax + 0xb4c8bc]
mov eax, dword [ebp - 0x20]
mov byte [eax + esi], dl
inc ecx
inc dword [ebp - 0x20]
jmp 0x979db9
mov edx, dword [ebp - 0x20]
mov byte [edx + esi], al
inc ecx
inc dword [ebp - 0x20]
jmp 0x979db9
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x20]
mov byte [ecx + eax], 0
jmp 0x979e8d
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