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

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x672900
push 0x5dfbd0
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x6aae14]
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 - 0x24], esi
mov dword [ebp - 0x20], esi
call fcn.004dd0c0
mov ecx, eax
mov ebx, ecx
cmp dword [ebp + 0x14], esi
jne 0x4f1e7e
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x1a
sub ebx, eax
mov byte [ebp - 0x19], bl
movzx eax, bl
add eax, 0x61
cmp eax, 0x6c
je 0x4f1e7a
cmp eax, 0x69
je 0x4f1e7a
cmp eax, 0x6f
jne 0x4f1e99
inc bl
jmp 0x4f1e96
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 ebx, edx
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 0x4f2059
mov eax, dword [ebp + 0x10]
cmp eax, esi
je 0x4f2059
add eax, 2
push eax
push esi
mov edi, dword [ebp + 0xc]
push edi
call fcn.005dfd60
add esp, 0xc
mov ecx, dword [ebp + 0x10]
mov eax, ecx
and eax, 0x80000001
jns 0x4f1ee0
dec eax
or eax, 0xfffffffe
inc eax
mov eax, ecx
cdq
jne 0x4f1eeb
sub eax, edx
sar eax, 1
jmp 0x4f1ef0
sub eax, edx
sar eax, 1
inc eax
mov dword [ebp - 0x28], eax
xor eax, eax
mov dword [ebp - 0x24], eax
cmp eax, ecx
jge 0x4f2028
cmp esi, dword [ebp - 0x28]
jne 0x4f1f23
cmp dword [ebp + 0x14], 0
jne 0x4f1f16
movzx ecx, bl
add ecx, 0x61
mov byte [esi + edi], cl
jmp 0x4f1f1f
movzx edx, bl
add edx, 0x30
mov byte [esi + edi], dl
inc esi
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp + 8]
mov al, byte [eax + ecx]
mov dl, al
sub dl, 0x41
cmp dl, 0x19
ja 0x4f1f95
movsx eax, al
movzx ecx, bl
lea ecx, [eax + ecx - 0x41]
cmp ecx, 0x1a
jl 0x4f1f58
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 + 0x69061c]
cmp al, 0x61
jb 0x4f1f7f
cmp al, 0x7a
ja 0x4f1f7f
movzx eax, al
sub eax, 0x20
mov byte [esi + edi], al
mov eax, dword [ebp - 0x24]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp + 0x10]
jmp 0x4f1ef5
movzx eax, al
mov byte [esi + edi], al
mov eax, dword [ebp - 0x24]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp + 0x10]
jmp 0x4f1ef5
mov cl, al
sub cl, 0x61
cmp cl, 0x19
ja 0x4f1fdd
movsx edx, al
movzx eax, bl
lea ecx, [edx + eax - 0x61]
cmp ecx, 0x1a
jl 0x4f1fc4
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 + 0x69061c]
mov byte [esi + edi], cl
mov eax, dword [ebp - 0x24]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp + 0x10]
jmp 0x4f1ef5
mov dl, al
sub dl, 0x30
cmp dl, 9
ja 0x4f2015
movsx eax, al
movzx ecx, byte [ebp - 0x1a]
lea ecx, [eax + ecx - 0x30]
cmp ecx, 0xa
jl 0x4f200f
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 + 0x690610]
mov byte [esi + edi], al
mov eax, dword [ebp - 0x24]
inc eax
inc esi
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp + 0x10]
jmp 0x4f1ef5
cmp esi, 1
jne 0x4f205c
mov esi, 2
mov dword [ebp - 0x20], esi
cmp dword [ebp + 0x14], 0
jne 0x4f204a
movzx ecx, bl
add ecx, 0x61
mov byte [edi + 1], cl
mov byte [esi + edi], 0
jmp 0x4f207a
movzx edx, bl
add edx, 0x30
mov byte [edi + 1], dl
mov byte [esi + edi], 0
jmp 0x4f207a
mov edi, dword [ebp + 0xc]
mov byte [esi + edi], 0
jmp 0x4f207a
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