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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10061e83
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
push esi
movzx eax, byte [ebp + 0x1c]
test eax, eax
je 0x1002bc05
lea eax, [ebp + 0xc]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], 0x1d2d
cmp dword [ebp - 0x20], 0xcae
jge 0x1002bbbb
call fcn.1004a257
push 0x20
pop ecx
imul ecx, ecx, 0
add eax, ecx
push eax
push 0x10007b1c
push 0x10007b20
call fcn.1004a5ef
add esp, 0xc
call fcn.1004a257
push 0x20
pop ecx
shl ecx, 0
add eax, ecx
push eax
push 0x10007b28
push 0x10007b2c
call fcn.1004a5ef
add esp, 0xc
lea eax, [ebp - 0x24]
push eax
mov ecx, 0x10652fb0
call fcn.1000b1d9
lea ecx, [ebp - 0x64]
call fcn.1000b157
and dword [ebp - 4], 0
lea edx, [ebp - 0x64]
mov ecx, 0x10652fb0
call fcn.10036cbd
and dword [ebp - 0x1c], 0
jmp 0x1002ba80
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x24]
jge 0x1002bbaf
push 0x5a
push 0
push 0x117b8d68
call fcn.10014121
add esp, 0xc
push 0x5a
push 0
push 0x10a249f8
call fcn.10014121
add esp, 0xc
push 0x5a
push 0
push 0x117b8de8
call fcn.10014121
add esp, 0xc
and dword [ebp - 0x14], 0
jmp 0x1002bacc
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 9
jge 0x1002bb98
lea edx, [ebp - 0x64]
mov ecx, 0x10652fb0
call fcn.10036cbd
and dword [ebp - 0x10], 0
jmp 0x1002baf0
mov eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 9
jge 0x1002bb93
push dword [ebp - 0x10]
lea ecx, [ebp - 0x64]
call fcn.1000cd30
movsx eax, byte [eax]
sub eax, 0x30
imul ecx, dword [ebp - 0x14], 0x24
mov edx, dword [ebp - 0x10]
mov dword [ecx + edx*4 + 0x117a0578], eax
imul eax, dword [ebp - 0x14], 0x24
mov ecx, dword [ebp - 0x10]
cmp dword [eax + ecx*4 + 0x117a0578], 0
je 0x1002bb8e
imul eax, dword [ebp - 0x14], 0xa
imul ecx, dword [ebp - 0x14], 0x24
mov edx, dword [ebp - 0x10]
mov ecx, dword [ecx + edx*4 + 0x117a0578]
mov byte [eax + ecx + 0x117b8d68], 1
imul eax, dword [ebp - 0x10], 0xa
imul ecx, dword [ebp - 0x14], 0x24
mov edx, dword [ebp - 0x10]
mov ecx, dword [ecx + edx*4 + 0x117a0578]
mov byte [eax + ecx + 0x10a249f8], 1
mov eax, dword [ebp - 0x14]
cdq
push 3
pop ecx
idiv ecx
imul ecx, eax, 3
mov eax, dword [ebp - 0x10]
cdq
push 3
pop esi
idiv esi
add ecx, eax
imul eax, ecx, 0xa
imul ecx, dword [ebp - 0x14], 0x24
mov edx, dword [ebp - 0x10]
mov ecx, dword [ecx + edx*4 + 0x117a0578]
mov byte [eax + ecx + 0x117b8de8], 1
jmp 0x1002bae9
jmp 0x1002bac5
mov byte [0x10a24983], 0
push 0
push 0
call fcn.1002b7a4
pop ecx
pop ecx
jmp 0x1002ba79
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x64]
call fcn.1000b1ba
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x28]
movzx eax, byte [eax]
test eax, eax
je 0x1002bbee
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
movzx eax, byte [eax]
test eax, eax
je 0x1002bbec
push 0x1875
call dword [sym.imp.GDI32.dll_EndDoc]
jmp 0x1002bc03
push 0x1d6e
push 0x2328
push 0x499
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
jmp 0x1002bc73
lea eax, [ebp + 0x14]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x38]
movzx eax, byte [eax]
test eax, eax
je 0x1002bc2b
push 0
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
jmp 0x1002bc73
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x18]
mov dword [eax], 0
jmp 0x1002bc59
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
inc eax
mov ecx, dword [ebp - 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x18]
cmp dword [eax], 2
jge 0x1002bc73
mov eax, dword [ebp - 0x18]
push dword [eax]
mov ecx, dword [ebp - 0x4c]
call fcn.1000b52a
and dword [eax], 0
jmp 0x1002bc4e
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
ret