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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x30
cmp byte [0x44e030], 0
jne 0x40727d
lea esi, [esp + 0xc]
push 0
push esi
call fcn.00420c20
add esp, 8
call sub.msvcrt.dll__getpid
shl eax, 0x10
xor eax, dword [esp + 0xc]
xor eax, dword [esp + 0x10]
push eax
call sub.msvcrt.dll_srand
add esp, 4
push 0
push esi
call fcn.00420c20
add esp, 8
mov esi, dword [esp + 0x10]
xor esi, dword [esp + 0xc]
and esi, 0x1f
je 0x40721b
inc esi
nop word [eax + eax]
call sub.msvcrt.dll_rand
dec esi
cmp esi, 1
jg 0x407210
call sub.msvcrt.dll_rand
shr eax, 7
xor byte [0x44e028], al
call sub.msvcrt.dll_rand
shr eax, 7
xor byte [0x44e029], al
call sub.msvcrt.dll_rand
shr eax, 7
xor byte [0x44e02a], al
call sub.msvcrt.dll_rand
shr eax, 7
xor byte [0x44e02b], al
call sub.msvcrt.dll_rand
shr eax, 7
xor byte [0x44e02c], al
call sub.msvcrt.dll_rand
shr eax, 7
mov byte [0x44e030], 1
xor byte [0x44e02d], al
or byte [0x44e028], 1
mov eax, dword [0x43e088]
cmp eax, 0xfffffffe
jne 0x4072e4
push 0
call sub.msvcrt.dll__umask
add esp, 4
mov esi, eax
push 0x1b0
push 0x102
push str._var_lib_libuuid_clock.txt
call sub.msvcrt.dll__open
add esp, 0xc
mov dword [0x43e088], eax
movzx eax, si
push eax
call sub.msvcrt.dll__umask
add esp, 4
mov eax, dword [0x43e088]
test eax, eax
js 0x407361
push 0x4451f1
push eax
call sub.msvcrt.dll__fdopen
add esp, 8
mov dword [0x44e040], eax
test eax, eax
mov eax, dword [0x43e088]
je 0x40734e
test eax, eax
js 0x407361
mov eax, dword [0x44e040]
sub esp, 0x18
lea edx, [esp + 0x40]
lea ecx, [esp + 0x3c]
lea esi, [esp + 0x18]
mov dword [esp], eax
mov dword [esp + 0x10], edx
lea edx, [esp + 0x24]
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 8], edx
call fcn.00407870
add esp, 0x18
cmp eax, 4
jne 0x407361
mov ecx, dword [esp]
mov ax, 0x3fff
mov edx, dword [esp + 0x28]
and ax, word [esp + 0xc]
mov dword [0x44e038], ecx
mov ecx, dword [esp + 0x24]
mov dword [0x44e03c], edx
mov word [0x44e044], ax
mov dword [0x44e034], ecx
jmp 0x407361
push eax
call sub.msvcrt.dll__close
add esp, 4
mov dword [0x43e088], 0xffffffff
mov eax, dword [0x44e03c]
or eax, dword [0x44e038]
jne 0x407403
lea esi, [esp + 0xc]
push 0
push esi
call fcn.00420c20
add esp, 8
call sub.msvcrt.dll__getpid
shl eax, 0x10
xor eax, dword [esp + 0xc]
xor eax, dword [esp + 0x10]
push eax
call sub.msvcrt.dll_srand
add esp, 4
push 0
push esi
call fcn.00420c20
add esp, 8
mov esi, dword [esp + 0x10]
xor esi, dword [esp + 0xc]
and esi, 0x1f
je 0x4073cb
inc esi
nop word cs:[eax + eax]
nop dword [eax]
call sub.msvcrt.dll_rand
dec esi
cmp esi, 1
jg 0x4073c0
call sub.msvcrt.dll_rand
shr eax, 7
xor byte [0x44e044], al
call sub.msvcrt.dll_rand
shr eax, 7
xor al, byte [0x44e045]
and al, 0x3f
mov byte [0x44e045], al
push 0
push 0x44e038
call fcn.00420c20
add esp, 8
dec dword [0x44e038]
mov esi, esp
nop word cs:[eax + eax]
nop
push 0
push esi
call fcn.00420c20
add esp, 8
mov eax, dword [esp]
cmp eax, dword [0x44e038]
jl 0x40744e
jne 0x407463
mov ecx, dword [esp + 4]
cmp ecx, dword [0x44e03c]
jl 0x40744e
jne 0x407463
mov ebx, dword [0x44e034]
cmp ebx, 9
jg 0x407410
inc ebx
mov dword [esp + 0x1c], eax
mov dword [0x44e034], ebx
jmp 0x407486
movzx ecx, word [0x44e044]
inc ecx
and ecx, 0x3fff
mov word [0x44e044], cx
mov edx, dword [esp]
mov ecx, dword [esp + 4]
mov dword [0x44e034], 0
xor ebx, ebx
mov dword [0x44e03c], ecx
mov dword [esp + 0x1c], edx
mov dword [0x44e038], edx
mov edx, dword [esp + 4]
lea edx, [edx + edx*4]
lea esi, [ebx + edx*2]
mov edx, 0x989680
mov edi, esi
imul edx
sar edi, 0x1f
add eax, esi
adc edx, edi
add eax, 0x13814000
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0xc]
mov edi, edx
adc edi, 0x1b21dd2
test eax, eax
je 0x407512
mov eax, dword [eax]
cmp eax, 2
jl 0x407512
lea ebx, [ebx + eax - 1]
mov edx, 0x66666667
mov esi, dword [esp + 0x1c]
mov eax, ebx
imul edx
mov eax, edx
sar edx, 2
shr eax, 0x1f
add edx, eax
add ecx, edx
add edx, edx
lea eax, [edx + edx*4]
mov edx, 0x431bde83
sub ebx, eax
mov eax, ecx
imul edx
mov dword [0x44e034], ebx
mov eax, edx
sar edx, 0x12
shr eax, 0x1f
add edx, eax
add esi, edx
imul edx, edx, 0xf4240
sub ecx, edx
mov dword [0x44e038], esi
mov dword [0x44e03c], ecx
cmp dword [0x43e088], 0
mov esi, dword [ebp + 8]
jle 0x4075b9
push dword [0x44e040]
call sub.msvcrt.dll_rewind
add esp, 4
movzx eax, word [0x44e044]
push dword [0x44e034]
push dword [0x44e03c]
push dword [0x44e038]
push eax
push str.clock:__04x_tv:__016lu__08lu_adj:__08d_n
push dword [0x44e040]
call fcn.00407890
add esp, 0x18
mov ebx, eax
push dword [0x44e040]
call sub.msvcrt.dll_fflush
add esp, 4
mov eax, ebx
sar eax, 0x1f
push eax
push ebx
push dword [0x43e088]
call fcn.00420ce0
add esp, 0xc
test eax, eax
jns 0x4075ab
push dword [0x44e040]
push 1
push 0x14
push str.____________________n
call sub.msvcrt.dll_fwrite
add esp, 0x10
push dword [0x44e040]
call sub.msvcrt.dll_fflush
add esp, 4
push dword [0x44e040]
call sub.msvcrt.dll_rewind
add esp, 4
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], eax
mov ax, 0x8000
or ax, word [0x44e044]
mov word [esp + 0x14], ax
mov eax, dword [0x44e028]
mov word [esp + 0x10], di
shr edi, 0x10
and edi, 0xfff
or edi, 0x1000
mov word [esp + 0x12], di
mov dword [esp + 0x16], eax
movzx eax, word [0x44e02c]
mov word [esp + 0x1a], ax
lea eax, [esp + 0xc]
push esi
push eax
call fcn.004078b0
add esp, 8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret