Function at 0x3001838b
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, eax
mov eax, dword [0x30096c5c]
mov al, byte [eax + 0x10]
cmp al, 8
push edi
jne 0x300183b5
cmp dword [0x30096c4c], 0
jne 0x300183b5
xor edi, edi
mov dword [ebp - 8], edi
jmp 0x300183be
mov dword [ebp - 8], 1
xor edi, edi
xor ecx, ecx
cmp al, 0xe
mov eax, dword [ebp + 8]
sete cl
mov byte [eax], 0
mov eax, dword [esi]
cmp eax, ebx
mov dword [ebp - 0x14], ecx
jb 0x300183dc
push 0xf
pop eax
jmp 0x300185ef
mov ecx, dword [0x30096c5c]
cmp dword [ecx + 0x19], edi
je 0x30018433
cmp dword [ebp - 8], edi
je 0x30018433
cmp dword [0x30096e74], edi
je 0x30018400
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018403
movzx eax, byte [eax]
cmp eax, 0x27
je 0x30018433
push edi
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0xc]
push eax
mov eax, dword [0x30096c5c]
push dword [eax + 0x19]
push dword [eax + 0x15]
push dword [esi]
call fcn.30016d20
add esp, 0x18
mov dword [ebp - 0x10], eax
dec eax
je 0x3001848d
dec eax
dec eax
je 0x30018450
dec eax
je 0x3001848d
cmp dword [0x30096e74], edi
mov eax, dword [esi]
je 0x3001851f
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018522
mov eax, dword [ebp - 4]
add dword [esi], eax
mov eax, dword [esi]
cmp eax, ebx
jae 0x3001847f
cmp dword [0x30096e74], edi
je 0x3001846f
push esi
push eax
call fcn.30084266
movzx ecx, ax
jmp 0x30018475
movzx ecx, byte [eax]
inc eax
mov dword [esi], eax
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax]
cmp ecx, eax
jne 0x30018455
cmp ebx, dword [esi]
sbb eax, eax
and al, 0xfa
add eax, 6
jmp 0x300185ef
mov eax, dword [esi]
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x18], eax
add eax, ecx
mov dword [esi], eax
cmp dword [0x30096e74], edi
je 0x300184ad
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x300184b0
movzx eax, byte [eax]
cmp eax, 0x2d
jne 0x300184b7
inc dword [esi]
cmp dword [ebp - 0x10], 4
jne 0x300184c4
call fcn.3001735d
jmp 0x300184ce
mov edi, dword [ebp + 0xc]
call fcn.30017200
mov ebx, edi
mov edi, dword [ebp - 0xc]
cmp byte [edi], 0
je 0x3001850b
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x300184ed
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x300184f0
movzx eax, byte [eax]
mov cl, byte [edi]
movzx edx, cl
cmp eax, edx
je 0x30018505
mov eax, dword [ebp - 0x18]
mov dword [esi], eax
xor edi, edi
jmp 0x30018433
test cl, cl
je 0x3001850b
inc dword [esi]
xor eax, eax
cmp dword [ebp - 0x10], 4
setne al
dec eax
and eax, 0x10
inc eax
inc eax
jmp 0x300185ef
movzx eax, byte [eax]
mov ecx, dword [0x30096c5c]
movzx edx, byte [ecx + 0x35]
cmp eax, edx
jne 0x30018541
inc dword [esi]
mov eax, dword [0x30096c5c]
mov al, byte [eax + 0x35]
push ebx
push eax
jmp 0x30018e6d
cmp dword [0x30096c54], edi
jne 0x30018b87
test byte [ecx + 8], 0x60
je 0x30018b87
mov eax, dword [0x30096c58]
mov ecx, dword [0x30096c48]
imul eax, eax, 6
mov al, byte [eax + ecx - 5]
cmp al, 0x22
je 0x30018b87
cmp al, 0x21
je 0x30018b87
cmp dword [0x30096e74], edi
je 0x3001858f
mov edi, dword [esi]
push esi
push edi
call fcn.30084266
mov dword [ebp - 4], eax
jmp 0x3001859f
mov eax, dword [esi]
movzx cx, byte [eax]
mov edi, dword [ebp + 0xc]
inc eax
mov word [ebp - 4], cx
mov dword [esi], eax
movzx eax, word [ebp - 4]
cmp eax, 0x23
jg 0x30018672
je 0x30018658
cmp eax, 9
jl 0x3001869b
cmp eax, 0xa
jle 0x3001864f
cmp eax, 0xd
je 0x3001864f
cmp eax, 0x20
je 0x3001864f
cmp eax, 0x21
je 0x300185f4
cmp eax, 0x22
jne 0x3001869b
push dword [ebp - 4]
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
call fcn.30016f1e
pop ecx
pop edi
pop esi
pop ebx
leave
ret
mov ecx, dword [esi]
cmp byte [ecx], 0x3d
jne 0x3001869b
jmp 0x30018b1c
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x30018618
push eax
push eax
call fcn.300841d4
jmp 0x3001861c
movzx ax, byte [eax]
cmp ax, 0x20
je 0x30018638
cmp ax, 9
je 0x30018638
cmp ax, 0xa
je 0x30018638
cmp ax, 0xd
jne 0x30018c13
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x3001864c
push eax
push eax
call fcn.30084184
jmp 0x3001864d
inc eax
mov dword [esi], eax
cmp dword [esi], ebx
jb 0x30018604
jmp 0x30018c13
cmp dword [ebp - 8], 0
je 0x30018b75
push dword [ebp + 0xc]
push dword [ebp - 4]
call fcn.30016e9c
jmp 0x30018e72
cmp eax, 0x27
je 0x300185e0
cmp eax, 0x28
je 0x30018b1c
cmp eax, 0x3b
jle 0x3001869b
cmp eax, 0x3e
jle 0x30018b1c
cmp eax, 0x5b
je 0x30018e6a
mov ecx, dword [0x30096c5c]
test byte [ecx + 8], 0x40
je 0x300189c7
cmp eax, 0x23
je 0x30018662
cmp eax, 0x7b
je 0x300189ee
xor ebx, ebx
cmp dword [0x30096e74], ebx
je 0x300186de
mov dword [esi], edi
cmp dword [0x30096e74], ebx
je 0x300186d8
push edi
push edi
call fcn.300841d4
mov edi, eax
jmp 0x300186e6
movzx di, byte [edi]
jmp 0x300186e6
dec dword [esi]
mov eax, dword [esi]
movzx di, byte [eax]
cmp dword [0x30096e74], ebx
mov dword [ebp - 4], edi
je 0x300186f9
push edi
call fcn.300840ae
jmp 0x300186fb
xor eax, eax
cmp eax, ebx
jne 0x3001873b
cmp dword [0x30096e74], ebx
je 0x30018718
call fcn.30084043
sub ax, 0x411
neg ax
sbb eax, eax
inc eax
jmp 0x3001871a
xor eax, eax
cmp eax, ebx
je 0x3001872c
cmp di, 0xa0
jb 0x3001872c
cmp di, 0xdf
jbe 0x3001873b
push edi
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
test eax, eax
je 0x30018998
mov edi, dword [ebp + 0xc]
sub edi, dword [esi]
jmp 0x3001898f
push dword [0x30096c64]
lea eax, [ebp - 0x24]
push edi
push dword [esi]
push eax
call fcn.3001ab87
test word [ebp - 0x24], 0x7fff
jne 0x300189ac
cmp edi, 3
jl 0x30018998
cmp dword [0x30096e74], 0
je 0x3001879d
mov eax, dword [esi]
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ebx, eax
mov eax, dword [esi]
mov ecx, eax
sub ecx, ebx
add ecx, edi
push ecx
push eax
call fcn.300841d4
movzx eax, ax
push eax
call fcn.300840ae
jmp 0x300187a2
xor ebx, ebx
inc ebx
xor eax, eax
test eax, eax
jne 0x30018872
cmp dword [0x30096e74], eax
je 0x300187c1
call fcn.30084043
sub ax, 0x411
neg ax
sbb eax, eax
inc eax
test eax, eax
je 0x30018834
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x300187ee
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ecx, dword [esi]
mov edx, ecx
sub edx, eax
add edx, edi
push edx
push ecx
call fcn.300841d4
movzx eax, ax
jmp 0x300187f3
movzx eax, byte [eax + edi - 1]
cmp eax, 0xa0
jl 0x30018834
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x30018825
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ebx, eax
mov eax, dword [esi]
mov ecx, eax
sub ecx, ebx
add ecx, edi
push ecx
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x3001882d
movzx eax, byte [eax + edi - 1]
xor ebx, ebx
inc ebx
cmp eax, 0xdf
jle 0x30018872
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x3001885f
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ebx, eax
mov eax, dword [esi]
mov ecx, eax
sub ecx, ebx
add ecx, edi
push ecx
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018867
movzx eax, byte [eax + edi - 1]
xor ebx, ebx
inc ebx
push eax
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
test eax, eax
je 0x3001887d
sub edi, ebx
cmp edi, 3
jge 0x3001876c
cmp edi, 3
jl 0x30018998
xor ebx, ebx
cmp dword [0x30096e74], ebx
je 0x300188b6
mov eax, dword [esi]
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ecx, dword [esi]
mov edx, ecx
sub edx, eax
add edx, edi
push edx
push ecx
call fcn.300841d4
movzx eax, ax
push eax
call fcn.300840ae
jmp 0x300188b8
xor eax, eax
cmp eax, ebx
jne 0x3001898f
cmp dword [0x30096e74], ebx
je 0x300188d9
call fcn.30084043
sub ax, 0x411
neg ax
sbb eax, eax
inc eax
jmp 0x300188db
xor eax, eax
cmp eax, ebx
je 0x30018947
cmp dword [0x30096e74], ebx
mov eax, dword [esi]
je 0x30018907
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ecx, dword [esi]
mov edx, ecx
sub edx, eax
add edx, edi
push edx
push ecx
call fcn.300841d4
movzx eax, ax
jmp 0x3001890c
movzx eax, byte [eax + edi - 1]
cmp eax, 0xa0
jl 0x30018947
cmp dword [0x30096e74], ebx
mov eax, dword [esi]
je 0x3001893b
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ecx, dword [esi]
mov edx, ecx
sub edx, eax
add edx, edi
push edx
push ecx
call fcn.300841d4
movzx eax, ax
jmp 0x30018940
movzx eax, byte [eax + edi - 1]
cmp eax, 0xdf
jle 0x3001898f
cmp dword [0x30096e74], ebx
mov eax, dword [esi]
je 0x30018971
lea ecx, [eax + edi]
push ecx
push eax
call fcn.30084160
mov ebx, eax
mov eax, dword [esi]
mov ecx, eax
sub ecx, ebx
add ecx, edi
push ecx
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018979
movzx eax, byte [eax + edi - 1]
xor ebx, ebx
inc ebx
push eax
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
test eax, eax
jne 0x3001898f
sub edi, ebx
cmp edi, 3
jge 0x30018886
cmp edi, 3
jge 0x30018745
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x300189b5
push eax
push eax
call fcn.30084184
jmp 0x300189b6
add dword [esi], edi
push 6
jmp 0x300183d6
inc eax
mov dword [esi], eax
mov eax, dword [0x30096c5c]
test byte [eax + 8], 0x20
je 0x30018c3e
cmp dword [ebp - 0x14], 0
je 0x30018a49
cmp word [ebp - 4], 0x30
jb 0x300189db
cmp word [ebp - 4], 0x39
jbe 0x30018a3a
cmp dword [0x30096e74], 0
je 0x300189fa
push dword [ebp - 4]
call fcn.300840ae
jmp 0x300189fc
mov dword [ebp - 4], 0x7d
jmp 0x30018662
xor eax, eax
test eax, eax
mov ebx, dword [sym.imp.USER32.dll_CharUpperA]
movzx edi, word [ebp - 4]
je 0x30018a0e
mov eax, edi
jmp 0x30018a14
push edi
call ebx
movzx eax, al
cmp eax, 0x41
jl 0x30018a49
xor eax, eax
cmp dword [0x30096e74], eax
je 0x30018a2b
push dword [ebp - 4]
call fcn.300840ae
test eax, eax
jne 0x30018a35
push edi
call ebx
movzx edi, al
cmp edi, 0x46
jg 0x30018a49
mov ebx, dword [ebp + 0xc]
dec dword [esi]
call fcn.3001735d
jmp 0x300185ef
cmp dword [ebp - 8], 0
je 0x30018ac7
mov eax, dword [ebp - 4]
cmp ax, 0x30
jb 0x30018a5e
cmp ax, 0x39
jbe 0x30018aba
mov ecx, dword [0x30096c64]
movzx cx, byte [ecx + 5]
cmp ax, cx
je 0x30018a78
cmp ax, 0x2d
jne 0x30018b1c
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x30018a8f
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018a92
movzx eax, byte [eax]
cmp eax, 0x30
jl 0x30018b1c
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x30018ab2
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018ab5
movzx eax, byte [eax]
cmp eax, 0x39
jg 0x30018b1c
mov edi, dword [ebp + 0xc]
call fcn.30017200
jmp 0x300185ef
cmp dword [0x30096e74], 0
je 0x30018ada
push dword [ebp - 4]
call fcn.300840ae
jmp 0x30018adc
xor eax, eax
test eax, eax
jne 0x30018b1c
cmp dword [0x30096e74], eax
je 0x30018af9
call fcn.30084043
sub ax, 0x411
neg ax
sbb eax, eax
inc eax
jmp 0x30018afb
xor eax, eax
test eax, eax
je 0x30018b0f
cmp word [ebp - 4], 0xa0
jb 0x30018b0f
cmp word [ebp - 4], 0xdf
jbe 0x30018b1c
push dword [ebp - 4]
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
je 0x30018b75
mov eax, dword [esi]
mov edi, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x10]
push edi
push eax
mov eax, dword [ebp + 0xc]
call fcn.30017b16
test eax, eax
pop ecx
pop ecx
je 0x30018b75
cmp eax, 0xd
jne 0x30018b5b
mov cl, byte [edi]
cmp cl, 5
jb 0x30018b4b
cmp cl, 0x10
jb 0x30018b5b
cmp dword [ebp - 8], 0
je 0x30018b75
cmp cl, 0x12
je 0x30018b5b
cmp cl, 0x11
jne 0x30018b75
cmp dword [ebp - 8], 0
jne 0x30018b6b
cmp eax, 0xa
jne 0x30018b6b
cmp byte [edi], 0x23
jne 0x30018b75
mov ecx, dword [ebp - 0x10]
mov dword [esi], ecx
jmp 0x300185ef
push dword [ebp + 0xc]
mov eax, dword [ebp - 4]
mov edi, esi
call fcn.30016fb3
jmp 0x300185ee
cmp dword [0x30096e74], edi
je 0x30018b9b
push esi
push dword [esi]
call fcn.30084266
mov edi, eax
jmp 0x30018ba4
mov eax, dword [esi]
movzx di, byte [eax]
inc eax
mov dword [esi], eax
movzx eax, di
cmp eax, 0x23
mov dword [ebp - 4], edi
jg 0x30018c1a
je 0x30018e50
cmp eax, 9
jl 0x30018c3e
cmp eax, 0xa
jle 0x30018bd8
cmp eax, 0xd
je 0x30018bd8
cmp eax, 0x20
je 0x30018bd8
cmp eax, 0x22
je 0x300185e0
jmp 0x30018c3e
mov edi, dword [ebp + 0xc]
jmp 0x30018c0f
cmp dword [0x30096e74], 0
mov eax, dword [esi]
je 0x30018bf1
push eax
push eax
call fcn.300841d4
jmp 0x30018bf5
movzx ax, byte [eax]
cmp ax, 0x20
je 0x30018c0d
cmp ax, 9
je 0x30018c0d
cmp ax, 0xa
je 0x30018c0d
cmp ax, 0xd
jne 0x30018c13
inc dword [esi]
cmp dword [esi], edi
jb 0x30018bdd
push 0x10
jmp 0x300183d6
cmp eax, 0x27
je 0x300185e0
cmp eax, 0x3f
je 0x30018e78
cmp eax, 0x5b
je 0x30018e6a
cmp eax, 0x7b
je 0x30018db2
xor ebx, ebx
cmp dword [0x30096c54], ebx
jne 0x30018c9f
mov eax, dword [0x30096c64]
movzx ax, byte [eax + 5]
cmp word [ebp - 4], ax
je 0x30018c5f
cmp word [ebp - 4], 0x2d
jne 0x30018c9f
cmp dword [0x30096e74], ebx
mov eax, dword [esi]
je 0x30018c75
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018c78
movzx eax, byte [eax]
cmp eax, 0x30
jl 0x30018c9f
cmp dword [0x30096e74], ebx
mov eax, dword [esi]
je 0x30018c93
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018c96
movzx eax, byte [eax]
cmp eax, 0x39
jle 0x30018aba
push dword [ebp + 8]
mov edi, dword [ebp - 4]
mov eax, dword [ebp + 0xc]
push esi
mov ecx, edi
call fcn.30017b16
cmp eax, ebx
pop ecx
pop ecx
jne 0x300185ef
cmp dword [ebp - 0x14], ebx
je 0x30018d23
cmp di, 0x30
jb 0x30018ccf
cmp di, 0x39
jbe 0x30018a3a
cmp dword [0x30096e74], ebx
je 0x30018cdf
push edi
call fcn.300840ae
jmp 0x30018ce1
xor eax, eax
movzx edi, word [ebp - 4]
cmp eax, ebx
mov ebx, dword [sym.imp.USER32.dll_CharUpperA]
je 0x30018cf3
mov eax, edi
jmp 0x30018cf9
push edi
call ebx
movzx eax, al
cmp eax, 0x41
jl 0x30018d23
xor eax, eax
cmp dword [0x30096e74], eax
je 0x30018d10
push dword [ebp - 4]
call fcn.300840ae
test eax, eax
jne 0x30018d1a
push edi
call ebx
movzx edi, al
cmp edi, 0x46
jle 0x30018a3a
mov edi, dword [ebp - 4]
cmp di, 0x30
jb 0x30018d36
cmp di, 0x39
jbe 0x30018aba
cmp dword [0x30096e74], 0
je 0x30018d47
push edi
call fcn.300840ae
jmp 0x30018d49
xor eax, eax
test eax, eax
jne 0x30018da5
cmp dword [0x30096e74], eax
je 0x30018d66
call fcn.30084043
sub ax, 0x411
neg ax
sbb eax, eax
inc eax
jmp 0x30018d68
xor eax, eax
test eax, eax
je 0x30018d7a
cmp di, 0xa0
jb 0x30018d7a
cmp di, 0xdf
jbe 0x30018da5
push edi
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
jne 0x30018da5
mov eax, dword [0x30096c64]
movzx ax, byte [eax + 0x19]
xor ecx, ecx
cmp di, ax
setne cl
dec ecx
and ecx, 0xfffffff6
add ecx, 0x11
mov eax, ecx
jmp 0x300185ef
mov ebx, dword [ebp + 0xc]
call fcn.30017124
jmp 0x300185ef
mov eax, dword [esi]
xor edi, edi
cmp dword [0x30096e74], edi
je 0x30018dca
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018dcd
movzx eax, byte [eax]
cmp eax, 0x74
je 0x30018df4
cmp dword [0x30096e74], edi
mov eax, dword [esi]
je 0x30018de8
push eax
push eax
call fcn.300841d4
movzx eax, ax
jmp 0x30018deb
movzx eax, byte [eax]
cmp eax, 0x64
je 0x30018df4
push 0x7d
jmp 0x30018e4c
cmp dword [0x30096e74], edi
je 0x30018e09
push esi
push dword [esi]
call fcn.30084225
movzx eax, ax
jmp 0x30018e10
inc dword [esi]
mov eax, dword [esi]
movzx eax, byte [eax]
cmp eax, 0x73
jne 0x30018e17
inc dword [esi]
mov eax, dword [esi]
cmp byte [eax], 0x20
jne 0x30018e21
inc eax
mov dword [esi], eax
cmp dword [0x30096e74], edi
je 0x30018e36
push esi
push dword [esi]
call fcn.30084266
movzx ecx, ax
jmp 0x30018e3e
mov eax, dword [esi]
movzx ecx, byte [eax]
inc eax
mov dword [esi], eax
cmp ecx, 0x27
je 0x30018e4a
push 0x11
jmp 0x300183d6
push 0x27
mov ebx, dword [ebp + 0xc]
pop edi
push ebx
push edi
call fcn.30016e9c
cmp di, 0x27
pop ecx
pop ecx
jne 0x300185ef
inc dword [esi]
jmp 0x300185ef
push ebx
push 0x5d
call fcn.30016edb
pop ecx
jmp 0x300185ee
push 0x13
jmp 0x300183d6