Function at 0x41adb0
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
sub esp, 0xdb4
mov eax, dword [0x4c0390]
xor eax, esp
mov dword [esp + 0xdb0], eax
push edi
mov edi, dword [esp + 0xdbc]
push 0x40
push str.70c2441db366d92ea7be1342b3bf629026ba92bb675f06e684bdd34511097434
push 0xffffffffffffffff
call fcn.0041fa40
cmp eax, 0x26e831b8
je 0x41adfb
xor al, al
pop edi
mov ecx, dword [esp + 0xdb0]
xor ecx, esp
call fcn.0049e0c6
add esp, 0xdb4
ret 8
push ebx
push 0x604
push 0
push 0x4c8d58
call fcn.0049e680
add esp, 0xc
push 0x400
lea eax, [esp + 0x13c]
push eax
mov ecx, edi
call fcn.00465610
test al, al
je 0x41ae51
mov bl, 0x23
lea ebx, [ebx]
cmp byte [esp + 0x138], bl
jne 0x41ae51
push 0x400
lea ecx, [esp + 0x13c]
push ecx
mov ecx, edi
call fcn.00465610
test al, al
jne 0x41ae30
push esi
push 0x100
push 0x4c8d58
mov ecx, edi
call fcn.00465610
push 0x100
push 0x4c8e58
mov ecx, edi
call fcn.00465610
push 0x80
lea edx, [esp + 0x940]
push edx
mov ecx, edi
call fcn.00465610
xor esi, esi
lea ebx, [ebx]
mov eax, 0x400
sub eax, esi
push eax
lea ecx, [esp + esi + 0x140]
push ecx
mov ecx, edi
call fcn.00465610
add esi, 0x36
cmp esi, 0x17a
jl 0x41ae90
xor edi, edi
xor esi, esi
jmp 0x41aec0
movsx edx, byte [esp + esi + 0x13c]
push edx
call fcn.00464c70
test al, al
je 0x41aee7
movsx ecx, byte [esp + esi + 0x13c]
inc esi
cmp esi, 2
lea eax, [edi + edi*4]
lea edi, [ecx + eax*2 - 0x30]
jl 0x41aec0
push ebp
xor ebp, ebp
mov dword [esp + 0x18], edi
xor esi, esi
movsx edx, byte [esp + esi + 0x142]
push edx
call fcn.00464c70
test al, al
je 0x41af18
movsx ecx, byte [esp + esi + 0x142]
inc esi
cmp esi, 3
lea eax, [ebp + ebp*4]
lea ebp, [ecx + eax*2 - 0x30]
jl 0x41aef0
xor ebx, ebx
mov dword [esp + 0x14], ebp
xor esi, esi
movsx edx, byte [esp + esi + 0x145]
push edx
call fcn.00464c70
test al, al
je 0x41af47
movsx ecx, byte [esp + esi + 0x145]
inc esi
cmp esi, 3
lea eax, [ebx + ebx*4]
lea ebx, [ecx + eax*2 - 0x30]
jl 0x41af20
xor edi, edi
xor esi, esi
jmp 0x41af50
movsx edx, byte [esp + esi + 0x148]
push edx
call fcn.00464c70
test al, al
je 0x41af77
movsx ecx, byte [esp + esi + 0x148]
inc esi
cmp esi, 2
lea eax, [edi + edi*4]
lea edi, [ecx + eax*2 - 0x30]
jl 0x41af50
cmp ebp, 0x100
jg 0x41b1b9
cmp ebx, 0x100
jg 0x41b1b9
mov ebp, 0x4be338
xor esi, esi
push 8
lea edx, [esp + 0x44]
push edx
push ebp
call fcn.00464d40
push 8
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x152]
push ecx
call fcn.00464b90
test eax, eax
je 0x41b1b9
add esi, 8
add ebp, 8
cmp esi, 0x8f0
jb 0x41af96
xor esi, esi
nop
lea edx, [esp + 0x40]
push edx
call fcn.00463d20
mov eax, 0x4c8d58
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41afe2
push 1
sub eax, edx
push eax
push 0x4c8d58
lea eax, [esp + 0x4c]
push eax
call fcn.00463d60
push 1
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x48]
push edx
call fcn.00463e20
mov eax, dword [esp + 0x1c]
cmp eax, dword [esi + 0x4be2f8]
jne 0x41b02a
mov ecx, dword [esp + 0x20]
cmp ecx, dword [esi + 0x4be2fc]
je 0x41b1b9
add esi, 8
cmp esi, 0x40
jb 0x41afd0
mov esi, dword [esp + 0x18]
push esi
lea edx, [esp + 0x14e]
push edx
push 0x4c8f58
call fcn.0049f4b0
mov ebp, dword [esp + 0x20]
push ebp
lea esi, [esp + esi + 0x15a]
push esi
push 0x4c9258
call fcn.0049f4b0
push ebx
add esi, ebp
push esi
push 0x4c9158
call fcn.0049f4b0
push edi
add esi, ebx
push esi
push 0x4c9058
call fcn.0049f4b0
push 0xa
push 0
add edi, esi
push edi
call fcn.004a0581
mov dword [0x4c9358], eax
mov eax, 0x4c8e58
add esp, 0x3c
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x41b098
sub eax, ecx
push eax
push 0x4c8e58
push 0xffffffffffffffff
call fcn.0041fa40
mov ecx, 0x4c8d58
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x41b0b6
sub ecx, esi
push ecx
push 0x4c8d58
push eax
call fcn.0041fa40
mov ecx, 0x4c8f58
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x41b0d3
sub ecx, esi
push ecx
push 0x4c8f58
push eax
call fcn.0041fa40
mov ecx, 0x4c9258
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x41b0f0
sub ecx, esi
push ecx
push 0x4c9258
push eax
call fcn.0041fa40
mov ecx, 0x4c9158
lea esi, [ecx + 1]
lea ecx, [ecx]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x41b110
sub ecx, esi
push ecx
push 0x4c9158
push eax
call fcn.0041fa40
mov ecx, 0x4c9058
lea esi, [ecx + 1]
lea ecx, [ecx]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x41b130
sub ecx, esi
push ecx
push 0x4c9058
push eax
call fcn.0041fa40
cmp eax, dword [0x4c9358]
jne 0x41b1b9
cmp byte [0x4c8e58], 0
je 0x41b312
mov ebp, 0x4c8e61
mov dword [esp + 0x14], ebp
push 9
push str.Version:
lea ebx, [ebp - 9]
push ebx
call fcn.00464b90
test eax, eax
je 0x41b18c
push 9
push str.VersMax:
push ebx
call fcn.00464b90
test eax, eax
jne 0x41b245
cmp byte [ebp], 0
mov byte [esp + 0x13], 0
mov esi, ebp
je 0x41b1b9
lea esp, [esp]
cmp byte [esi - 1], 0x20
jne 0x41b1b3
movsx eax, byte [esi]
push eax
call fcn.00464c70
test al, al
jne 0x41b1d6
inc esi
cmp byte [esi], 0
jne 0x41b1a0
xor al, al
mov ecx, dword [esp + 0xdc0]
pop ebp
pop esi
pop ebx
pop edi
xor ecx, esp
call fcn.0049e0c6
add esp, 0xdb4
ret 8
push esi
call fcn.004a0326
push 0x2e
push esi
mov edi, eax
call fcn.0049dd30
add esp, 0xc
test eax, eax
je 0x41b200
inc eax
cmp byte [eax], 0x2a
je 0x41b200
push eax
call fcn.004a0326
add esp, 4
mov ecx, eax
jmp 0x41b203
or ecx, 0xffffffff
cmp edi, 3
jne 0x41b227
cmp ecx, 0xffffffff
je 0x41b223
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 9
jne 0x41b227
mov al, 1
jmp 0x41b22b
mov al, byte [esp + 0x13]
cmp byte [ebp - 5], 0x4d
jne 0x41b23d
cmp edi, 3
jg 0x41b245
jne 0x41b23d
cmp ecx, 0x5b
jge 0x41b245
test al, al
je 0x41b1b9
push 9
push str.DateMax:
push ebx
call fcn.00464b90
test eax, eax
jne 0x41b2ff
mov esi, ebp
cmp byte [ebp], al
je 0x41b1b9
cmp byte [esi - 1], 0x20
jne 0x41b278
movsx ecx, byte [esi]
push ecx
call fcn.00464c70
test al, al
jne 0x41b283
inc esi
cmp byte [esi], 0
jne 0x41b265
jmp 0x41b1b9
mov edi, 1
push esi
mov ebx, edi
call fcn.004a0326
push 0x2e
push esi
mov ebp, eax
call fcn.0049dd30
add esp, 0xc
test eax, eax
je 0x41b2c7
lea esi, [eax + 1]
push esi
call fcn.004a0326
push 0x2e
push esi
mov edi, eax
call fcn.0049dd30
add esp, 0xc
test eax, eax
je 0x41b2c7
inc eax
push eax
call fcn.004a0326
add esp, 4
mov ebx, eax
lea ecx, [esp + 0x1c]
call fcn.00467be0
lea ecx, [esp + 0x1c]
call fcn.00467ea0
mov eax, dword [esp + 0x1c]
cmp ebp, eax
ja 0x41b2ff
jne 0x41b1b9
mov eax, dword [esp + 0x20]
cmp edi, eax
ja 0x41b2ff
jne 0x41b1b9
cmp ebx, dword [esp + 0x24]
jb 0x41b1b9
mov ebp, dword [esp + 0x14]
inc ebp
cmp byte [ebp - 9], 0
mov dword [esp + 0x14], ebp
jne 0x41b163
cmp byte [esp + 0xdcc], 0
je 0x41b453
mov eax, 0x4c8e58
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41b328
push 0x4c9258
push str.70c2441db366d92ea7be1342b3bf629026ba92bb675f06e684bdd34511097434
sub eax, edx
push eax
push 0x4c8e58
call fcn.004254a0
test eax, eax
je 0x41b1b9
xor eax, eax
mov cl, byte [eax + 0x4c8d58]
mov byte [esp + eax + 0x540], cl
inc eax
test cl, cl
jne 0x41b350
mov eax, 0x4c8f58
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41b370
lea edi, [esp + 0x540]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x41b381
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
jmp 0x41b3a0
mov cl, byte [esp + eax + 0x540]
mov byte [esp + eax + 0x9c0], cl
inc eax
test cl, cl
jne 0x41b3a0
lea eax, [esp + 0x540]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41b3c0
push 0x4c9158
sub eax, edx
push str.70c2441db366d92ea7be1342b3bf629026ba92bb675f06e684bdd34511097434
mov esi, eax
push esi
lea edx, [esp + 0x54c]
push edx
call fcn.004254a0
test eax, eax
je 0x41b1b9
xor eax, eax
lea ecx, [ecx]
mov cl, byte [esp + eax + 0x9c0]
mov byte [esp + eax + 0x540], cl
inc eax
test cl, cl
jne 0x41b3f0
lea eax, [esp + 0x40]
push eax
push 0x4c9058
push esi
lea ecx, [esp + 0x54c]
push ecx
call fcn.004252a0
xor eax, eax
lea ecx, [ecx]
mov cl, byte [esp + eax + 0x9c0]
mov byte [esp + eax + 0x540], cl
inc eax
test cl, cl
jne 0x41b420
lea edx, [esp + 0x40]
push edx
push 0x4c8f58
push esi
lea eax, [esp + 0x54c]
push eax
call fcn.004254a0
test eax, eax
je 0x41b1b9
mov al, 1
jmp 0x41b1bb