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

Disassembly:
sub esp, 0x44
xor edx, edx
mov byte [esp + 0x3c], 0
cmp byte [0x4f38e4], dl
lea ecx, [esp + 0x2c]
push ebx
setne dl
push ebp
dec edx
push esi
push edi
and edx, 0x14
call fcn.00408bd0
call fcn.004270d0
call fcn.0040d260
call fcn.0040ad00
mov eax, dword [0x4f4dcc]
test al, 1
jne 0x4199e8
or eax, 1
mov dword [0x4f4e58], 0
mov dword [0x4f4dcc], eax
mov dword [0x4f4e5c], 0
mov dword [0x4f4e60], 0xd2
mov dword [0x4f4e64], 0xf0
mov dword [0x4f4e68], 0xd2
mov dword [0x4f4e6c], 0
mov dword [0x4f4e70], 0x1a4
mov dword [0x4f4e74], 0xf0
mov dword [0x4f4e78], 0x1a4
mov dword [0x4f4e7c], 0
mov dword [0x4f4e80], 0x276
mov dword [0x4f4e84], 0xf0
mov dword [0x4f4e88], 0
mov dword [0x4f4e8c], 0xf0
mov dword [0x4f4e90], 0xd2
mov dword [0x4f4e94], 0x1e0
mov dword [0x4f4e98], 0xd2
mov dword [0x4f4e9c], 0xf0
mov dword [0x4f4ea0], 0x1a4
mov dword [0x4f4ea4], 0x1e0
mov dword [0x4f4ea8], 0x1a4
mov dword [0x4f4eac], 0xf0
mov dword [0x4f4eb0], 0x276
mov dword [0x4f4eb4], 0x1e0
cmp byte [0x4ccfbd], 0
jne 0x419a75
mov ax, word [0x4ccfc4]
test ax, ax
je 0x419a75
movzx ecx, ax
cmp ax, 0x50
jbe 0x419a2a
mov eax, 0xf0
sub eax, ecx
xor ecx, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
test eax, eax
sets cl
dec ecx
and ecx, eax
cmp ecx, 5
jle 0x419a37
jmp 0x419a32
shr ecx, 2
cmp ecx, 5
jbe 0x419a37
mov ecx, 5
shl ecx, 4
add ecx, 0x4f4e58
push 0x4f3990
push 0x64
push 0xe4
mov eax, dword [ecx]
mov dword [esp + 0x28], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x28]
push eax
call dword [0x44b8c4]
add esp, 0x10
mov ebx, 0x454400
lea ebx, [ebx]
cmp byte [ebx - 0xfa8], 0
je 0x419afb
cmp byte [ebx], 0
jne 0x419b0d
lea esi, [ebx - 0xfa0]
mov edi, 0xc8
lea esp, [esp]
mov al, byte [esi + 0x10]
cmp al, 0xe
ja 0x419af3
movzx eax, al
shr eax, 1
push 0x4f3900
mov dword [esp + 0x34], 0x128
mov dword [esp + 0x3c], 0x158
lea eax, [eax + eax*2]
shl eax, 4
mov dword [esp + 0x30], eax
add eax, 0x30
mov dword [esp + 0x38], eax
mov eax, dword [esi + 4]
sar eax, 6
sub eax, 0x18
push eax
mov eax, dword [esi]
sar eax, 6
sub eax, 0x18
push eax
lea eax, [esp + 0x38]
push eax
call dword [0x44b8c4]
add esp, 0x10
add esi, 0x14
sub edi, 1
jne 0x419aa0
add ebx, 0xfb4
cmp ebx, 0x45731c
jl 0x419a80
xor eax, eax
xor esi, esi
cmp ax, word [0x497bd4]
jae 0x419ba6
mov edi, edi
movzx eax, word [esi*2 + 0x497b70]
lea ecx, [eax + eax*2]
shl ecx, 6
add ecx, 0x497be0
mov al, byte [ecx + 0x85]
cmp al, 0x20
jne 0x419b8d
mov eax, dword [ecx + 0x20]
shr eax, 2
push 0x4f3900
mov dword [esp + 0x44], 0x128
mov dword [esp + 0x4c], 0x158
lea eax, [eax + eax*2]
shl eax, 4
mov dword [esp + 0x40], eax
add eax, 0x30
mov dword [esp + 0x48], eax
mov eax, dword [ecx + 4]
sar eax, 6
sub eax, 0x18
push eax
mov eax, dword [ecx]
sar eax, 6
sub eax, 0x18
push eax
lea eax, [esp + 0x48]
push eax
call dword [0x44b8c4]
add esp, 0x10
jmp 0x419b96
test al, 1
je 0x419b96
call fcn.004112d0
movzx eax, word [0x497bd4]
inc esi
cmp esi, eax
jl 0x419b20
call fcn.00423910
call fcn.00422880
cmp byte [0x4f38e4], 0
jne 0x419bbe
call fcn.0041c980
call fcn.0040e090
call fcn.00415800
call fcn.0041b190
cmp byte [0x4f38e4], 0
je 0x419bdb
call fcn.0041c980
call fcn.0041a980
call dword [0x44b898]
xor ebx, ebx
xor eax, eax
mov dword [esp + 0x18], ebx
cmp ax, word [0x4b1880]
jae 0x419d7a
jmp 0x419c00
movzx eax, word [ebx*2 + 0x4b10b0]
imul edi, eax, 0x64
mov dword [esp + 0x14], edi
movzx eax, byte [edi + 0x4b18ef]
sub eax, 0
je 0x419c24
sub eax, 1
jne 0x419d66
cmp byte [edi + 0x4b18f0], 1
lea ebp, [edi + 0x4b18b4]
push 5
push 0
push 1
jne 0x419c83
call dword [0x44b8b4]
add esp, 0xc
push dword [edi + 0x4b18c0]
push dword [edi + 0x4b18bc]
push dword [edi + 0x4b18b8]
push dword [ebp]
call dword [0x44b89c]
push dword [edi + 0x4b18c8]
push dword [edi + 0x4b18c4]
push dword [edi + 0x4b18d0]
push dword [edi + 0x4b18cc]
call dword [0x44b89c]
add esp, 0x20
jmp 0x419d66
call dword [0x44b8b4]
add esp, 0xc
cmp byte [0x4f38e4], 0
je 0x419ca1
mov ecx, ebp
call fcn.00407780
jmp 0x419d66
push 5
push 0
push 1
call dword [0x44b8b4]
add esp, 0xc
push 4
push ebp
call dword [0x44b8ac]
push 5
push 5
push 5
call dword [0x44b8b4]
mov eax, dword [edi + 0x4b18a8]
add esp, 0x14
mov ecx, dword [edi + 0x4b18ac]
mov ebx, dword [edi + 0x4b18b8]
mov ebp, dword [ebp]
mov edi, dword [edi + 0x4b18cc]
lea eax, [eax + eax*2]
cdq
and edx, 3
push 4
push 0x4f4d70
lea esi, [edx + eax]
lea eax, [ecx + ecx*2]
sar esi, 2
mov ecx, dword [esp + 0x1c]
sub ebp, esi
cdq
add edi, esi
and edx, 3
mov dword [0x4f4d70], ebp
add eax, edx
mov dword [0x4f4d88], edi
mov edx, dword [ecx + 0x4b18a0]
mov esi, dword [ecx + 0x4b18d0]
mov ecx, dword [ecx + 0x4b18a4]
sar eax, 2
sub ebx, eax
add esi, eax
lea eax, [edx + ebp]
mov dword [0x4f4d74], ebx
mov dword [0x4f4d78], eax
mov dword [0x4f4d8c], esi
lea eax, [ecx + ebx]
mov dword [0x4f4d7c], eax
lea eax, [edx + edi]
mov dword [0x4f4d80], eax
lea eax, [ecx + esi]
mov dword [0x4f4d84], eax
call dword [0x44b8ac]
mov ebx, dword [esp + 0x20]
add esp, 8
movzx eax, word [0x4b1880]
inc ebx
mov dword [esp + 0x18], ebx
cmp ebx, eax
jl 0x419c00
call dword [0x44b8a4]
call fcn.00428fc0
call fcn.0040eb80
call fcn.0040d740
call fcn.00422b80
call fcn.0040b070
movzx eax, byte [0x492170]
dec eax
cmp eax, 3
ja case.default.0x419daa
jmp dword [eax*4 + 0x419ef0]
push dword [0x492174]
call fcn.0040de00
add esp, 4
call fcn.0042cc00
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
jmp 0x419f10
mov eax, 0x190
sub eax, dword [0x492174]
push eax
call fcn.0040de00
add esp, 4
call fcn.0042cc00
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
jmp 0x419f10
mov eax, 0x66666667
mov dword [esp + 0x20], 0x90
imul dword [0x492174]
mov ecx, 0xf
mov dword [esp + 0x28], 0xa0
sar edx, 2
mov edi, 0x80
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
shl ecx, 4
mov dword [esp + 0x1c], ecx
lea eax, [ecx + 0x10]
mov dword [esp + 0x24], eax
xor esi, esi
push 0x4f3900
push esi
lea eax, [esp + 0x24]
push edi
push eax
call dword [0x44b8c4]
add esi, 0x10
add esp, 0x10
cmp esi, 0x1e0
jl 0x419e36
add edi, 0x10
cmp edi, 0x200
jl 0x419e34
call fcn.0042cc00
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
jmp 0x419f10
mov eax, 0x66666667
mov dword [esp + 0x20], 0x90
imul dword [0x492174]
mov dword [esp + 0x28], 0xa0
mov edi, 0x80
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
shl ecx, 4
mov dword [esp + 0x1c], ecx
lea eax, [ecx + 0x10]
mov dword [esp + 0x24], eax
lea ebx, [ebx]
xor esi, esi
push 0x4f3900
push esi
lea eax, [esp + 0x24]
push edi
push eax
call dword [0x44b8c4]
add esi, 0x10
add esp, 0x10
cmp esi, 0x1e0
jl 0x419eb2
add edi, 0x10
cmp edi, 0x200
jl 0x419eb0
call fcn.0042cc00
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
jmp 0x419f10
sub esp, 0x84
mov eax, dword [0x44b00c]
xor eax, esp
mov dword [esp + 0x80], eax
push esi
push edi
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, eax
mov dword [0x4f4d68], eax
sub ecx, dword [0x4f4d6c]
cmp ecx, 0x3e8
ja 0x419f49
mov eax, dword [0x4f4d64]
inc eax
jmp 0x419f50
mov dword [0x4f4d6c], eax
xor eax, eax
mov dword [0x4f4d64], eax
lea eax, [esp + 0x1c]
push eax
call fcn.00433d7a
add esp, 4
mov edi, str.Date
mov esi, 0x200
mov cl, 0x44
mov edi, edi
lea eax, [ecx - 0x41]
movsx edx, cl
cmp al, 0x19
ja 0x419f8a
lea eax, [edx - 0x41]
mov ecx, 0x1c0
shl eax, 4
jmp 0x41a013
lea eax, [ecx - 0x61]
cmp al, 0x19
ja 0x419f99
lea eax, [edx - 0x61]
shl eax, 4
jmp 0x41a00e
sub cl, 0x30
cmp cl, 9
ja 0x419fae
lea eax, [edx - 0x16]
mov ecx, 0x1c0
shl eax, 4
jmp 0x41a013
add edx, 0xffffffdf
cmp edx, 0x3b
ja case.0x419fc1.34
movzx eax, byte [edx + 0x41a380]
jmp dword [eax*4 + 0x41a354]
mov eax, 0x1a0
jmp 0x41a00e
mov eax, 0x1b0
jmp 0x41a00e
mov eax, 0x1c0
jmp 0x41a00e
mov eax, 0x1d0
mov ecx, eax
jmp 0x41a013
mov eax, 0x1e0
jmp 0x41a00e
mov eax, 0x1f0
jmp 0x41a00e
mov eax, 0x200
jmp 0x41a00e
mov eax, 0x210
jmp 0x41a00e
mov eax, 0x220
jmp 0x41a00e
mov eax, 0x230
mov ecx, 0x1d0
mov dword [esp + 8], eax
add eax, 0x10
mov dword [esp + 0x10], eax
lea eax, [ecx + 0x10]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], eax
mov byte [esp + 0x18], 1
cmp esi, 0x275
ja case.0x419fc1.34
push 0x4f3900
push 0
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.00408ed0
add esp, 8
mov cl, byte [edi + 1]
inc edi
add esi, 0xe
test cl, cl
jne 0x419f70
mov al, byte [esp + 0x1c]
lea edi, [esp + 0x1c]
mov esi, 0x200
test al, al
je 0x41a0aa
jmp 0x41a070
mov dl, al
lea ecx, [esp + 8]
call fcn.00414c40
cmp byte [esp + 0x18], 0
je 0x41a09f
cmp esi, 0x275
ja 0x41a09f
push 0x4f3900
push 0x14
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.00408ed0
add esp, 8
mov al, byte [edi + 1]
inc edi
add esi, 0xe
test al, al
jne 0x41a070
lea eax, [esp + 0x1c]
push eax
call fcn.00433e6c
add esp, 4
mov edi, str.Time
mov esi, 0x200
mov cl, 0x54
lea eax, [ecx - 0x41]
movsx edx, cl
cmp al, 0x19
ja 0x41a0dd
lea eax, [edx - 0x41]
mov ecx, 0x1c0
shl eax, 4
jmp 0x41a166
lea eax, [ecx - 0x61]
cmp al, 0x19
ja 0x41a0ec
lea eax, [edx - 0x61]
shl eax, 4
jmp 0x41a161
sub cl, 0x30
cmp cl, 9
ja 0x41a101
lea eax, [edx - 0x16]
mov ecx, 0x1c0
shl eax, 4
jmp 0x41a166
add edx, 0xffffffdf
cmp edx, 0x3b
ja case.0x41a114.34
movzx eax, byte [edx + 0x41a3e8]
jmp dword [eax*4 + 0x41a3bc]
mov eax, 0x1a0
jmp 0x41a161
mov eax, 0x1b0
jmp 0x41a161
mov eax, 0x1c0
jmp 0x41a161
mov eax, 0x1d0
mov ecx, eax
jmp 0x41a166
mov eax, 0x1e0
jmp 0x41a161
mov eax, 0x1f0
jmp 0x41a161
mov eax, 0x200
jmp 0x41a161
mov eax, 0x210
jmp 0x41a161
mov eax, 0x220
jmp 0x41a161
mov eax, 0x230
mov ecx, 0x1d0
mov dword [esp + 8], eax
add eax, 0x10
mov dword [esp + 0x10], eax
lea eax, [ecx + 0x10]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], eax
mov byte [esp + 0x18], 1
cmp esi, 0x275
ja case.0x41a114.34
push 0x4f3900
push 0x32
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.00408ed0
add esp, 8
mov cl, byte [edi + 1]
inc edi
add esi, 0xe
test cl, cl
jne 0x41a0c3
mov al, byte [esp + 0x1c]
lea edi, [esp + 0x1c]
mov esi, 0x200
test al, al
je 0x41a1fa
mov edi, edi
mov dl, al
lea ecx, [esp + 8]
call fcn.00414c40
cmp byte [esp + 0x18], 0
je 0x41a1ef
cmp esi, 0x275
ja 0x41a1ef
push 0x4f3900
push 0x46
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.00408ed0
add esp, 8
mov al, byte [edi + 1]
inc edi
add esi, 0xe
test al, al
jne 0x41a1c0
movzx eax, byte [0x4ccfbf]
push eax
lea eax, [esp + 0x20]
push str.Bomb____d
push eax
call fcn.00403880
mov al, byte [esp + 0x28]
lea edi, [esp + 0x28]
add esp, 0xc
mov esi, 0x200
test al, al
je 0x41a262
mov dl, al
lea ecx, [esp + 8]
call fcn.00414c40
cmp byte [esp + 0x18], 0
je 0x41a257
cmp esi, 0x275
ja 0x41a257
push 0x4f3900
push 0x190
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.00408ed0
add esp, 8
mov al, byte [edi + 1]
inc edi
add esi, 0xe
test al, al
jne 0x41a225
movzx eax, byte [0x4ccfc0]
push eax
lea eax, [esp + 0x20]
push str.Left____d
push eax
call fcn.00403880
mov al, byte [esp + 0x28]
lea edi, [esp + 0x28]
add esp, 0xc
mov esi, 0x200
test al, al
je 0x41a2cd
lea ecx, [ecx]
mov dl, al
lea ecx, [esp + 8]
call fcn.00414c40
cmp byte [esp + 0x18], 0
je 0x41a2c2
cmp esi, 0x275
ja 0x41a2c2
push 0x4f3900
push 0x1b8
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.00408ed0
add esp, 8
mov al, byte [edi + 1]
inc edi
add esi, 0xe
test al, al
jne 0x41a290
movzx eax, byte [0x4ccfc1]
push eax
lea eax, [esp + 0x20]
push str.Credit__d
push eax
call fcn.00403880
mov al, byte [esp + 0x28]
lea edi, [esp + 0x28]
add esp, 0xc
mov esi, 0x200
test al, al
je 0x41a33d
jmp 0x41a300
mov dl, al
lea ecx, [esp + 8]
call fcn.00414c40
cmp byte [esp + 0x18], 0
je 0x41a332
cmp esi, 0x275
ja 0x41a332
push 0x4f3900
push 0x1cc
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.00408ed0
add esp, 8
mov al, byte [edi + 1]
inc edi
add esi, 0xe
test al, al
jne 0x41a300
mov ecx, dword [esp + 0x88]
pop edi
pop esi
xor ecx, esp
call fcn.0042e689
add esp, 0x84
ret