Function at 0x10163010
Capabilities:
Parse credit card information

Disassembly:
mov edi, edi
push ecx
push ecx
mov eax, dword [esp + 0x14]
and dword [esp + 4], 0
push ebx
push ebp
mov ebp, dword [esp + 0x18]
push esi
mov esi, dword [esp + 0x18]
xor ecx, ecx
add ebp, esi
and dword [eax], ecx
push edi
mov dword [esp + 0x10], ecx
mov al, byte [esi]
cmp al, 0x20
je 0x10163045
cmp al, 9
je 0x10163045
cmp al, 0xd
je 0x10163045
cmp al, 0xa
jne 0x10163048
inc esi
jmp 0x10163033
mov ebx, esi
jmp 0x1016305b
mov al, byte [esi]
cmp al, 0xa
je 0x10163060
cmp esi, ebp
jae 0x1016307a
inc esi
cmp al, 0x3d
je 0x1016308b
cmp byte [esi], 0xd
jne 0x1016304c
cmp esi, ebp
jae 0x1016307a
mov eax, esi
sub eax, ebx
mov byte [esi], cl
cmp eax, 0x104
jge 0x10163258
inc esi
cmp esi, ebp
jb 0x10163033
mov eax, dword [esp + 0x24]
mov dword [eax], ecx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret 0xc
lea eax, [esi - 2]
mov cl, byte [eax]
cmp cl, 0x20
je 0x1016309a
cmp cl, 9
jne 0x1016309d
dec eax
jmp 0x1016308e
mov byte [eax + 1], 0
xor edi, edi
mov eax, dword [edi*4 + 0x100e2840]
mov ecx, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x101630cc
test dl, dl
je 0x101630c8
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x101630cc
add eax, 2
add ecx, 2
test dl, dl
jne 0x101630ac
xor eax, eax
jmp 0x101630d1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x101630db
inc edi
cmp edi, 0x25
jl 0x101630a3
cmp edi, 0x25
jge 0x1016311e
cmp byte [esi], 0x22
jne 0x101630e6
inc esi
cmp edi, 6
ja 0x101631f3
push 1
push 0x14
call fcn.1000ced8
mov ebx, eax
xor ecx, ecx
mov edx, 0x1000c398
cmp dword [edx], edi
je 0x10163111
add edx, 0x34
inc ecx
cmp edx, 0x1000c538
jl 0x10163101
cmp ecx, 8
jne 0x1016313c
push ebx
call dword [sym.imp.msvcr100.dll_free]
pop ecx
push 0x29
push 0x800ac392
call fcn.10156307
test eax, eax
jne 0x101631f3
mov esi, 0x800aea5f
jmp 0x1016325d
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc], ecx
test eax, eax
je 0x1016314b
mov dword [eax], ebx
jmp 0x1016314f
mov dword [esp + 0x10], ebx
mov dword [ebx + 8], esi
cmp byte [esi], 0x3b
mov dword [esp + 0x14], ebx
je 0x10163178
mov al, byte [esi]
cmp al, 0xd
je 0x10163173
cmp al, 0xa
je 0x10163173
cmp esi, ebp
jae 0x1016321d
inc esi
cmp byte [esi], 0x3b
jne 0x1016315b
cmp byte [esi], 0x3b
jne 0x10163186
mov byte [esi], 0
inc esi
mov al, byte [esi]
cmp al, 0x20
je 0x1016317b
cmp al, 9
je 0x1016317b
cmp byte [esi], 0xd
mov edi, esi
je 0x101631a0
cmp byte [edi], 0xa
je 0x101631a0
cmp edi, ebp
jae 0x1016321d
inc edi
cmp byte [edi], 0xd
jne 0x1016318d
mov eax, edi
sub eax, esi
mov byte [edi], 0
cmp eax, 0x104
jge 0x10163258
push dword [0x1023af60]
push 0xc
call fcn.1001a1a6
pop ecx
pop ecx
test eax, eax
je 0x101631ce
mov ecx, eax
call fcn.1000e7de
jmp 0x101631d0
xor eax, eax
mov dword [ebx + 4], eax
test eax, eax
je 0x10163251
push esi
mov ecx, eax
call fcn.100dcd86
test eax, eax
je 0x10163251
mov esi, edi
jmp 0x101631f3
cmp byte [esi], 0xa
je 0x101631f8
mov eax, esi
inc esi
cmp eax, ebp
jae 0x1016321d
cmp byte [esi], 0xd
jne 0x101631e7
cmp byte [esi - 1], 0x22
jne 0x10163202
mov byte [esi - 1], 0
mov byte [esi], 0
inc esi
mov al, byte [esi]
cmp al, 0x20
je 0x10163218
cmp al, 9
je 0x10163218
cmp al, 0xd
je 0x10163218
cmp al, 0xa
jne 0x10163235
inc esi
cmp esi, ebp
jb 0x10163206
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x1016307a
and dword [eax], 0
jmp 0x1016307a
mov al, byte [esi]
mov ebx, esi
cmp al, 0x5b
je 0x1016321d
cmp al, 0x3d
je 0x1016324b
inc esi
cmp esi, ebp
ja 0x1016321d
cmp byte [esi], 0x3d
jne 0x10163241
inc esi
jmp 0x1016308b
mov esi, 0x8007000e
jmp 0x1016325d
mov esi, 0x800ac38b
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1016326b
push eax
call fcn.10162fd4
mov eax, esi
jmp 0x10163082