Function at 0x28003af8
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
mov ecx, dword [ebp + 0xc]
xor eax, eax
push ebx
push esi
mov dword [ebp - 0x14], eax
xor ebx, ebx
xor al, al
mov dword [ebp - 0x1c], ecx
push edi
mov edi, dword [ebp + 8]
mov byte [ebp - 2], al
mov byte [ebp - 0x10], al
mov eax, dword [ebp - 0x10]
xor dh, dh
mov esi, ecx
mov byte [ebp - 1], dh
mov byte [ebp - 0xc], dh
mov dword [ebp - 0x18], esi
mov dword [ebp - 8], eax
mov dl, byte [esi]
cmp dl, 0x23
jne 0x28003b48
push 0x23
push eax
push dword [ebp - 0xc]
push dword [ebp + 0xc]
call fcn.28003d7a
add esp, 0x10
mov dl, al
jmp 0x28003b63
cmp dl, 0x2b
jne 0x28003b6b
push 0x2b
push eax
push dword [ebp - 0xc]
push dword [ebp + 0xc]
call fcn.28003d7a
mov dl, al
add esp, 0x10
add dl, 0xc
mov dh, byte [ebp - 1]
jmp 0x28003c15
cmp dl, 0x20
je 0x28003c64
cmp dl, 0x7e
je 0x28003c67
cmp dl, 0x2e
je 0x28003c54
cmp dl, 0x21
je 0x28003c57
cmp dl, 0x4f
je 0x28003c44
cmp dl, 0x58
je 0x28003c47
cmp dl, 0x3f
je 0x28003c34
cmp dl, 0x3b
je 0x28003c37
mov al, dl
sub al, 0x30
cmp al, 9
jbe 0x28003bc6
mov al, dl
sub al, 0x41
cmp al, 5
ja 0x28003bce
sub dl, 7
and dl, 0xf
or dl, 0x10
jmp 0x28003c15
mov al, dl
sub al, 0x61
cmp al, 0x19
ja 0x28003c03
movsx eax, dl
lea ecx, [eax - 0x61]
lea esi, [eax - 0x61]
xor eax, eax
inc eax
shl eax, cl
mov ecx, dword [ebp - 0x14]
test ecx, eax
je 0x28003bf0
bts ebx, esi
jmp 0x28003bf6
bts ecx, esi
mov dword [ebp - 0x14], ecx
mov esi, dword [ebp - 0x18]
dec dl
and dl, 0x1f
or dl, 0x20
jmp 0x28003c15
cmp dl, 0x5e
jne 0x28003c0d
add dl, 0xa6
jmp 0x28003c15
cmp dl, 0x3e
jne 0x28003c1a
add dl, 0xc7
mov eax, dword [ebp - 8]
jmp 0x28003c72
mov eax, dword [ebp - 8]
cmp dl, 0x56
jne 0x28003c27
add dl, 0xb0
jmp 0x28003c72
cmp dl, 0x3c
setne dl
dec dl
and dl, 0xc7
jmp 0x28003c6f
cmp dl, 0x3b
setne dl
dec dl
and dl, 0x10
add dl, 0x43
jmp 0x28003c72
cmp dl, 0x58
setne dl
dec dl
and dl, 0x10
add dl, 0x42
jmp 0x28003c72
cmp dl, 0x21
setne dl
dec dl
and dl, 0x10
add dl, 0x41
jmp 0x28003c72
cmp dl, 0x7e
setne dl
dec dl
and dl, 0x10
add dl, 0x40
inc dh
mov byte [edi], dl
inc esi
mov byte [ebp - 1], dh
inc edi
mov byte [ebp - 0xc], dh
mov dword [ebp - 0x18], esi
cmp dh, 0x1c
jb 0x28003b2c
mov al, byte [ebp - 2]
mov ecx, dword [ebp - 0x1c]
inc al
add ecx, 0x1d
mov byte [ebp - 2], al
mov byte [ebp - 0x10], al
mov dword [ebp - 0x1c], ecx
cmp al, 0x1f
jb 0x28003b19
mov edx, dword [ebp + 8]
dec edx
mov dword [ebp - 0x1c], 0x1f
push 0x1c
pop edi
lea esi, [edx + 1]
mov ah, byte [esi]
mov al, ah
and al, 0xc0
cmp al, 0x40
jne 0x28003cfb
mov cl, byte [edx + 0x1d]
mov al, byte [edx - 0x1b]
shr al, 7
not al
shr cl, 7
and al, 1
not cl
and cl, 1
add cl, al
mov al, byte [edx + 2]
shr al, 7
not al
and al, 1
add cl, al
mov al, byte [edx]
shr al, 7
not al
and al, 1
add cl, al
mov al, 2
cmp al, cl
sbb al, al
and al, 0x20
or al, ah
mov byte [esi], al
mov edx, esi
sub edi, 1
jne 0x28003cb4
sub dword [ebp - 0x1c], 1
jne 0x28003cb1
mov eax, dword [ebp - 0x14]
xor ebx, eax
mov dword [ebp - 0x1c], ebx
je 0x28003d75
xor al, al
mov byte [ebp - 2], al
test bl, 1
je 0x28003d67
mov esi, dword [ebp + 8]
mov bh, al
and bh, 0x1f
or bh, 0x20
xor bl, bl
mov byte [ebp - 0x10], bl
xor al, al
mov byte [ebp - 0xc], al
cmp byte [esi], bh
jne 0x28003d4d
push 0x23
push dword [ebp - 0x10]
push dword [ebp - 0xc]
push dword [ebp + 0xc]
call fcn.28003d7a
mov byte [esi], al
add esp, 0x10
mov al, byte [ebp - 0xc]
inc al
inc esi
mov byte [ebp - 0xc], al
cmp al, 0x1c
jb 0x28003d31
inc bl
mov byte [ebp - 0x10], bl
cmp bl, 0x1f
jb 0x28003d2c
mov al, byte [ebp - 2]
mov ebx, dword [ebp - 0x1c]
shr ebx, 1
inc al
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 2], al
test ebx, ebx
jne 0x28003d17
pop edi
pop esi
pop ebx
leave
ret