Function at 0x458d82
Capabilities:
Resolve function by parsing pe exports
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xb4
mov eax, dword [0x4c1004]
xor eax, esp
mov dword [esp + 0xb0], eax
mov eax, dword [ebp + 0x18]
xorps xmm0, xmm0
mov ecx, dword [ebp + 8]
xor edx, edx
push ebx
push esi
push edi
push dword [eax + 4]
inc edx
mov dword [esp + 0x48], ecx
push dword [eax]
xor edi, edi
movlpd qword [esp + 0x50], xmm0
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], edi
movlpd qword [esp + 0x68], xmm0
movlpd qword [esp + 0x70], xmm0
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0x80], xmm0
mov dword [esp + 0x38], 0x70000
call fcn.0042127e
mov ebx, eax
mov eax, edx
push eax
push ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], eax
call fcn.004105cd
add esp, 0x10
test eax, eax
je 0x458e1a
xor eax, eax
mov edx, 0x60000
jmp 0x4590d5
mov esi, dword [ebx + 4]
mov edx, edi
and esi, 0x7fffffff
mov dword [esp + 0xc], edx
mov dword [esp + 0x20], esi
jbe 0x4590ea
xor edx, edx
mov ecx, ebx
call fcn.00417017
mov dword [esp + 0x10], eax
cmp eax, 0x30
jl 0x458e4a
cmp eax, 0x39
jle 0x458e58
cmp eax, 0x2b
je 0x458e58
cmp eax, 0x2d
jne 0x4590ea
lea eax, [esp + 0x48]
push eax
lea edx, [esp + 0x10]
call fcn.00458bfa
pop ecx
test eax, eax
jne 0x4590bf
xor ecx, ecx
inc ecx
mov dword [esp + 0x1c], ecx
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x20]
cmp esi, eax
jae 0x458fb4
mov eax, ecx
sub eax, 1
je 0x458ec4
sub eax, 1
je 0x458ec4
sub eax, 1
je 0x458eba
sub eax, 1
je 0x458eb0
sub eax, 1
je 0x458eb0
sub eax, 1
jne 0x458ecc
mov dword [esp + 0x10], 0x2e
jmp 0x458ecc
mov dword [esp + 0x10], 0x3a
jmp 0x458ecc
mov dword [esp + 0x10], 0x54
jmp 0x458ecc
mov dword [esp + 0x10], 0x2d
mov edx, esi
mov ecx, ebx
call fcn.00417017
cmp eax, dword [esp + 0x10]
jne 0x458fac
lea eax, [esi + 1]
mov esi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x1c]
cmp eax, 6
je 0x458f28
lea ecx, [esp + 0x48]
lea eax, [ecx + eax*8]
mov ecx, ebx
push eax
lea edx, [esp + 0x10]
call fcn.00458b65
pop ecx
test eax, eax
jne 0x4590bf
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
cmp ecx, 7
jl 0x458e76
mov esi, dword [esp + 0xc]
jmp 0x458fb0
mov dword [esp + 0xc], 0x3e8
mov dword [esp + 0x10], edi
cmp esi, dword [esp + 0x20]
jae 0x4590bf
mov dword [esp + 0x28], esi
mov edx, esi
mov ecx, ebx
call fcn.00417017
lea ecx, [eax - 0x30]
cmp ecx, 9
ja 0x458f8e
mov edx, dword [esp + 0xc]
cmp edx, 1
jne 0x458f65
cmp eax, 0x35
jl 0x458f65
inc dword [esp + 0x10]
mov eax, edx
mov dword [esp + 0xc], 0xa
cdq
idiv dword [esp + 0xc]
imul ecx, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
add eax, ecx
inc esi
mov dword [esp + 0x10], eax
cmp esi, dword [esp + 0x20]
jb 0x458f42
jmp 0x458f9c
cmp esi, dword [esp + 0x28]
je 0x4590bf
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
cdq
inc ecx
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
jmp 0x458fb0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
xor edx, edx
xorps xmm0, xmm0
cmp ecx, 3
movlpd qword [esp + 0x10], xmm0
setg dl
add dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x1c], edx
adc dword [esp + 0x54], 0xffffffff
cmp esi, eax
jae 0x459253
mov edx, esi
mov ecx, ebx
call fcn.00417017
mov dword [esp + 0x28], eax
cmp eax, 0x2b
je 0x459014
cmp eax, 0x2d
je 0x459014
cmp eax, 0x5a
jne 0x4590bf
mov edi, dword [esp + 0x10]
inc esi
mov ecx, dword [ebx + 4]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
jmp 0x4590aa
mov eax, dword [esp + 0x20]
inc esi
sub eax, esi
mov dword [esp + 0xc], esi
mov dword [esp + 0x20], eax
cmp eax, 4
je 0x459031
cmp eax, 5
jne 0x4590bf
lea eax, [esp + 0x10]
push eax
push ecx
lea edx, [esp + 0x14]
call fcn.00458c6f
pop ecx
pop ecx
test eax, eax
jne 0x4590bf
cmp dword [esp + 0x20], 5
jne 0x459062
mov edx, dword [esp + 0xc]
mov ecx, ebx
call fcn.00417017
cmp eax, 0x3a
jne 0x4590bf
inc edx
mov dword [esp + 0xc], edx
lea eax, [esp + 0x20]
push eax
push ecx
lea edx, [esp + 0x14]
mov ecx, ebx
call fcn.00458c6f
pop ecx
pop ecx
test eax, eax
jne 0x4590bf
push edi
push 0x3c
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call fcn.00492dc0
mov ecx, dword [ebx + 4]
mov edi, eax
add edi, dword [esp + 0x20]
mov esi, edx
adc esi, dword [esp + 0x24]
cmp dword [esp + 0x28], 0x2d
jne 0x4590a6
neg edi
adc esi, 0
neg esi
mov eax, dword [esp + 0xc]
and dword [esp + 0x1c], 0
and ecx, 0x7fffffff
cmp eax, ecx
je 0x45925b
xor edi, edi
push dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
push ebx
call fcn.004105f5
mov edx, dword [esp + 0x38]
mov eax, edi
pop ecx
pop ecx
mov ecx, dword [esp + 0xbc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0046cdfd
mov esp, ebp
pop ebp
ret
test esi, esi
je 0x459103
mov ecx, ebx
call fcn.00417017
cmp eax, 0x20
je 0x4590ff
inc edx
cmp edx, esi
jb 0x4590ee
mov dword [esp + 0xc], edx
lea edx, [esp + 0xc]
mov ecx, ebx
call fcn.00458b40
mov edx, dword [esp + 0xc]
cmp edx, esi
jae 0x4590bf
call fcn.00417017
add eax, 0xffffffd0
lea edx, [esp + 0xc]
cmp eax, 9
ja 0x459148
lea eax, [esp + 0x58]
push eax
call fcn.00458b65
pop ecx
test eax, eax
jne 0x4590bf
lea eax, [esp + 0x50]
mov ecx, ebx
push eax
lea edx, [esp + 0x10]
call fcn.00458cfe
jmp 0x459174
lea eax, [esp + 0x50]
push eax
call fcn.00458cfe
pop ecx
test eax, eax
jne 0x4590bf
lea edx, [esp + 0xc]
mov ecx, ebx
call fcn.00458b40
lea eax, [esp + 0x58]
push eax
lea edx, [esp + 0x10]
call fcn.00458b65
pop ecx
test eax, eax
jne 0x4590bf
lea edx, [esp + 0xc]
mov ecx, ebx
call fcn.00458b40
lea eax, [esp + 0x48]
push eax
lea edx, [esp + 0x10]
call fcn.00458bfa
pop ecx
test eax, eax
jne 0x4590bf
lea edx, [esp + 0xc]
mov ecx, ebx
call fcn.00458b40
mov eax, edi
lea ecx, [esp + 0x60]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ecx
cmp eax, 1
je 0x4591c2
cmp eax, 2
jne 0x4591e7
mov edx, dword [esp + 0xc]
cmp edx, esi
jae 0x4590bf
mov ecx, ebx
call fcn.00417017
cmp eax, 0x3a
jne 0x4590bf
mov ecx, dword [esp + 0x1c]
inc edx
mov dword [esp + 0xc], edx
push ecx
lea edx, [esp + 0x10]
mov ecx, ebx
call fcn.00458b65
pop ecx
test eax, eax
jne 0x4590bf
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
inc eax
add ecx, 8
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ecx
cmp eax, 3
jl 0x4591b8
mov esi, dword [ebx + 4]
xorps xmm0, xmm0
mov edx, dword [esp + 0xc]
and esi, 0x7fffffff
mov dword [esp + 0x1c], edi
movlpd qword [esp + 0x10], xmm0
jmp 0x45924f
mov ecx, ebx
call fcn.00417017
mov dword [esp + 0x28], eax
cmp eax, 0x2b
je 0x4592f4
cmp eax, 0x2d
je 0x4592f4
inc edx
cmp edx, esi
jb 0x459231
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
xor ebx, ebx
mov edx, dword [esp + ebx + 0x4c]
mov ecx, dword [esp + ebx + 0x48]
call fcn.004943b0
movsd qword [esp + ebx + 0x80], xmm0
add ebx, 8
cmp ebx, 0x38
jl 0x45925d
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x80]
call fcn.00457fdc
push 0
push 0xea60
push esi
push edi
movsd qword [esp + 0x38], xmm0
call fcn.00492dc0
mov ecx, eax
call fcn.004943b0
movsd xmm1, qword [esp + 0x28]
subsd xmm1, xmm0
mov ebx, dword [esp + 0x3c]
cvttsd2si edi, xmm1
movsd qword [esp + 0x28], xmm1
mov eax, dword [esp + 0x28]
movd xmm0, edi
cvtdq2pd xmm0, xmm0
movsd qword [esp + 0x30], xmm0
cmp eax, dword [esp + 0x30]
jne 0x459360
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x34]
jne 0x459360
xor eax, eax
or eax, 0x10000
mov dword [esp + 0x30], eax
jmp 0x4590bf
inc edx
lea eax, [esp + 0x10]
push eax
mov dword [esp + 0x10], edx
lea edx, [esp + 0x10]
push ecx
call fcn.00458c6f
pop ecx
pop ecx
test eax, eax
jne 0x4590bf
lea eax, [esp + 0x20]
push eax
push ecx
lea edx, [esp + 0x14]
mov ecx, ebx
call fcn.00458c6f
pop ecx
pop ecx
test eax, eax
jne 0x4590bf
push edi
push 0x3c
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call fcn.00492dc0
mov edi, eax
mov esi, edx
add edi, dword [esp + 0x20]
adc esi, dword [esp + 0x24]
cmp dword [esp + 0x28], 0x2d
jne 0x45925b
neg edi
adc esi, 0
neg esi
jmp 0x45925b
call fcn.00414ba4
mov edi, eax
mov dword [esp + 0x30], edx
jmp 0x4590bf