Function at 0x4d1070
Capabilities:
Validate payment card number using luhn algorithm
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x587536
mov eax, dword fs:[0]
push eax
sub esp, 0x278
mov eax, dword [0x5f8310]
xor eax, ebp
mov dword [ebp - 0x1ac], eax
push esi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x270], ecx
mov byte [ebp - 0x260], 0x1b
mov byte [ebp - 0x25f], 0x30
mov byte [ebp - 0x25e], 0
mov byte [ebp - 0x1b8], 0xd
mov byte [ebp - 0x1b7], 0xa
mov byte [ebp - 0x1b6], 0
lea ecx, [ebp - 0x188]
call dword [sym.imp.mfc90.dll_Ordinal_316]
mov dword [ebp - 4], 0
mov dword [ebp - 0x184], 2
mov dword [ebp - 0x180], 4
mov dword [ebp - 0x17c], 0x45
mov dword [ebp - 0x178], 3
mov dword [ebp - 0x174], 1
mov dword [ebp - 0x170], 3
mov dword [ebp - 0x16c], 4
mov dword [ebp - 0x168], 4
mov dword [ebp - 0x164], 0x45
mov dword [ebp - 0x160], 5
mov dword [ebp - 0x15c], 4
mov dword [ebp - 0x158], 0x45
mov dword [ebp - 0x154], 6
mov dword [ebp - 0x150], 4
mov dword [ebp - 0x14c], 0x45
mov dword [ebp - 0x148], 7
mov dword [ebp - 0x144], 4
mov dword [ebp - 0x140], 0x45
mov dword [ebp - 0x13c], 8
mov dword [ebp - 0x138], 4
mov dword [ebp - 0x134], 0x45
mov dword [ebp - 0x130], 9
mov dword [ebp - 0x12c], 2
mov dword [ebp - 0x128], 0xd
mov dword [ebp - 0x124], 9
mov dword [ebp - 0x120], 4
mov dword [ebp - 0x11c], 0x45
mov dword [ebp - 0x118], 0xa
mov dword [ebp - 0x114], 2
mov dword [ebp - 0x110], 0xd
push 0xf0
push 0
lea eax, [ebp - 0x10c]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x5a98fc
push str.c:printm2.txt
call dword [sym.imp.MSVCR90.dll_fopen]
add esp, 8
mov dword [ebp - 0x18c], eax
cmp dword [ebp - 0x18c], 0
jne 0x4d126c
push 0
push 0
push 0x5a9910
call sub.mfc90.dll_Ordinal_1183
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x188]
call dword [sym.imp.mfc90.dll_Ordinal_601]
jmp 0x4d1699
push 0x5a9924
mov ecx, 0x5f8888
call dword [sym.imp.mfc90.dll_Ordinal_910]
push eax
call dword [sym.imp.MSVCR90.dll_fopen]
add esp, 8
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x4d12b5
push 0
push 0
push 0x5a9928
call sub.mfc90.dll_Ordinal_1183
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x188]
call dword [sym.imp.mfc90.dll_Ordinal_601]
jmp 0x4d1699
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x190], 0
mov dword [ebp - 0x1a8], 0
lea ecx, [ebp - 0x254]
push ecx
mov edx, dword [ebp - 0x18c]
push edx
mov ecx, dword [ebp - 0x270]
call fcn.004d16c0
push 0x96
push 0
lea eax, [ebp - 0x254]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
mov ecx, dword [ebp - 0x18c]
push ecx
call dword [sym.imp.MSVCR90.dll_feof]
add esp, 4
test eax, eax
jne 0x4d132e
lea edx, [ebp - 0x254]
push edx
mov eax, dword [ebp - 0x18c]
push eax
mov ecx, dword [ebp - 0x270]
call fcn.004d16c0
jmp 0x4d1346
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x188]
call dword [sym.imp.mfc90.dll_Ordinal_601]
jmp 0x4d1699
mov ecx, dword [ebp - 0x10]
push ecx
push 1
lea edx, [ebp - 0x254]
push edx
call sub.MSVCR90.dll_strlen
add esp, 4
sub eax, 1
push eax
lea eax, [ebp - 0x253]
push eax
call dword [sym.imp.MSVCR90.dll_fwrite]
add esp, 0x10
lea ecx, [ebp - 0x1a4]
call sub.mfc90.dll_Ordinal_580
mov byte [ebp - 4], 1
push 1
push 5
lea ecx, [ebp - 0x264]
push ecx
mov ecx, dword [ebp - 0x270]
add ecx, 0xdbc8
call fcn.0049c660
mov dword [ebp - 0x274], eax
mov edx, dword [ebp - 0x274]
mov dword [ebp - 0x278], edx
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x278]
push eax
lea ecx, [ebp - 0x188]
call dword [sym.imp.mfc90.dll_Ordinal_817]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x264]
call dword [sym.imp.mfc90.dll_Ordinal_601]
push 0x22
lea ecx, [ebp - 0x1a4]
push ecx
push ecx
mov ecx, esp
mov dword [ebp - 0x268], esp
lea edx, [ebp - 0x188]
push edx
call dword [sym.imp.mfc90.dll_Ordinal_300]
mov dword [ebp - 0x27c], eax
call fcn.004bb030
add esp, 0xc
lea ecx, [ebp - 0x1a4]
call fcn.00403350
mov dword [ebp - 0x1a8], eax
mov dword [ebp - 0x1a8], 2
mov eax, dword [ebp - 0x18c]
push eax
call dword [sym.imp.MSVCR90.dll_feof]
add esp, 4
test eax, eax
jne 0x4d1613
push 0x96
push 0
lea ecx, [ebp - 0x254]
push ecx
call sub.MSVCR90.dll_memset
add esp, 0xc
lea edx, [ebp - 0x254]
push edx
mov eax, dword [ebp - 0x18c]
push eax
mov ecx, dword [ebp - 0x270]
call fcn.004d16c0
mov ecx, dword [ebp - 0x1a8]
add ecx, 1
mov dword [ebp - 0x1a8], ecx
cmp dword [ebp - 0x1a8], 8
jl 0x4d14bf
lea ecx, [ebp - 0x1a4]
call fcn.00403350
add eax, 8
cmp dword [ebp - 0x1a8], eax
jge 0x4d14bf
push 3
lea edx, [ebp - 0x253]
push edx
mov eax, dword [ebp - 0x1a8]
sub eax, 8
push eax
lea ecx, [ebp - 0x1a4]
call fcn.00415440
mov ecx, eax
call dword [sym.imp.mfc90.dll_Ordinal_910]
push eax
call fcn.004b95a0
add esp, 0xc
movsx ecx, byte [ebp - 0x254]
sub ecx, 0x30
mov edx, dword [ebp - 0x14]
imul edx, edx, 0xc
mov eax, dword [ebp + edx - 0x184]
cdq
mov esi, 0xa
idiv esi
cmp ecx, edx
jne 0x4d15b8
cmp dword [ebp - 0x14], 0xa
jge 0x4d15b8
mov eax, dword [ebp - 0x14]
imul eax, eax, 0xc
mov ecx, dword [ebp + eax - 0x184]
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x14]
imul edx, edx, 0xc
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp + edx - 0x184]
jne 0x4d15b8
mov ecx, dword [ebp - 0x14]
imul ecx, ecx, 0xc
mov edx, dword [ebp + ecx - 0x17c]
push edx
lea eax, [ebp - 0x253]
push eax
mov ecx, dword [ebp - 0x14]
imul ecx, ecx, 0xc
mov edx, dword [ebp + ecx - 0x180]
push edx
mov eax, dword [ebp - 0x14]
imul eax, eax, 0xc
mov ecx, dword [ebp + eax - 0x184]
push ecx
lea edx, [ebp - 0x26c]
push edx
mov ecx, dword [ebp - 0x270]
add ecx, 0xdbc8
call fcn.0049c660
mov dword [ebp - 0x280], eax
mov eax, dword [ebp - 0x280]
mov dword [ebp - 0x284], eax
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x284]
call dword [sym.imp.mfc90.dll_Ordinal_910]
push eax
call fcn.004b95a0
add esp, 0xc
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x26c]
call dword [sym.imp.mfc90.dll_Ordinal_601]
mov ecx, dword [ebp - 0x14]
imul ecx, ecx, 0xc
mov edx, dword [ebp + ecx - 0x184]
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x14]
add eax, 1
mov dword [ebp - 0x14], eax
jmp 0x4d1500
cmp dword [ebp - 0x190], 0
jne 0x4d1604
mov ecx, dword [ebp - 0x10]
push ecx
push 2
push 1
lea edx, [ebp - 0x260]
push edx
call dword [sym.imp.MSVCR90.dll_fwrite]
add esp, 0x10
mov eax, dword [ebp - 0x10]
push eax
push 1
lea ecx, [ebp - 0x254]
push ecx
call sub.MSVCR90.dll_strlen
add esp, 4
sub eax, 1
push eax
lea edx, [ebp - 0x253]
push edx
call dword [sym.imp.MSVCR90.dll_fwrite]
add esp, 0x10
jmp 0x4d160e
mov dword [ebp - 0x190], 0
jmp 0x4d141b
mov dword [ebp - 0x18], 6
mov dword [ebp - 0x190], 0
jmp 0x4d1635
mov eax, dword [ebp - 0x190]
add eax, 1
mov dword [ebp - 0x190], eax
mov ecx, dword [ebp - 0x190]
cmp ecx, dword [ebp - 0x18]
jge 0x4d165a
mov edx, dword [ebp - 0x10]
push edx
push 2
push 1
lea eax, [ebp - 0x1b8]
push eax
call dword [sym.imp.MSVCR90.dll_fwrite]
add esp, 0x10
jmp 0x4d1626
mov ecx, dword [ebp - 0x18c]
push ecx
call dword [sym.imp.MSVCR90.dll_fclose]
add esp, 4
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.MSVCR90.dll_fclose]
add esp, 4
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1a4]
call sub.mfc90.dll_Ordinal_781
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x188]
call dword [sym.imp.mfc90.dll_Ordinal_601]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [ebp - 0x1ac]
xor ecx, ebp
call fcn.005795a6
mov esp, ebp
pop ebp
ret