Function at 0x87e551
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [ebp + 8]
and dword [ebp - 0x14], 0
push ebx
push esi
mov ebx, dword [eax]
push edi
mov edi, edx
mov dword [ebp - 0x2c], ecx
mov ecx, edi
mov dword [ebp - 0xc], ebx
call fcn.0082fb48
mov esi, eax
test bl, 0x40
jne 0x87e586
cmp dword [0x4aef5c], 0
je 0x87e914
cmp esi, 5
jl 0x87e914
cmp dword [edi], 0x656c6966
jne 0x87e914
cmp byte [edi + 4], 0x3a
jne 0x87e914
and dword [ebp - 4], 0
lea eax, [esi + 2]
or ebx, 0x40
cdq
xor ecx, ecx
mov dword [ebp - 0xc], ebx
test esi, esi
jle 0x87e5e3
cmp byte [ecx + edi], 0x26
jne 0x87e5c8
xor ebx, ebx
inc ebx
and dword [ebp - 0x18], 0
jmp 0x87e5d9
xorps xmm0, xmm0
movlpd qword [ebp - 0x28], xmm0
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x28]
add eax, ebx
adc edx, dword [ebp - 0x18]
inc ecx
cmp ecx, esi
jl 0x87e5b9
push edx
push eax
call fcn.0082d7f6
mov ebx, eax
mov dword [ebp - 8], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x87e5fd
push 7
pop eax
jmp 0x87e98b
cmp byte [edi + 5], 0x2f
push 5
pop esi
jne 0x87e65f
cmp byte [edi + 6], 0x2f
jne 0x87e65f
lea ecx, [edi + 7]
mov al, byte [ecx]
mov dword [ebp - 0x24], ecx
push 7
pop esi
test al, al
je 0x87e65f
cmp al, 0x2f
je 0x87e627
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x87e61b
cmp esi, 7
je 0x87e65f
cmp esi, 0x10
jne 0x87e648
push 9
push ecx
push 0x4a755c
call fcn.00886f04
add esp, 0xc
test eax, eax
je 0x87e65f
mov ecx, dword [ebp - 0x24]
push ecx
lea eax, [esi - 7]
push eax
push 0x4a7568
call fcn.0082f1be
add esp, 0xc
jmp 0x87e966
mov bl, byte [esi + edi]
xor edx, edx
mov dword [ebp - 0x10], edx
test bl, bl
je 0x87e7a4
cmp bl, 0x23
je 0x87e792
inc esi
cmp bl, 0x25
jne 0x87e70c
mov cl, byte [esi + edi]
movzx eax, cl
test byte [eax + 0x49d5b0], 8
je 0x87e70c
movzx eax, byte [esi + edi + 1]
test byte [eax + 0x49d5b0], 8
je 0x87e70c
movsx edx, cl
movsx ecx, byte [esi + edi + 1]
call fcn.0083094a
mov ecx, edx
movzx ebx, al
call fcn.0083094a
mov edx, dword [ebp - 0x10]
add esi, 2
movzx eax, al
shl eax, 4
add ebx, eax
jne 0x87e77a
jmp 0x87e703
cmp al, 0x23
je 0x87e787
test edx, edx
jne 0x87e6e0
cmp al, 0x3f
je 0x87e787
cmp edx, 1
jne 0x87e6f5
cmp al, 0x3d
je 0x87e787
cmp al, 0x26
je 0x87e787
cmp edx, 2
jne 0x87e702
cmp al, 0x26
je 0x87e787
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x87e6cc
jmp 0x87e787
cmp edx, 1
jne 0x87e75f
cmp bl, 0x26
je 0x87e71b
cmp bl, 0x3d
jne 0x87e77a
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
cmp byte [eax + ecx - 1], 0
je 0x87e74c
cmp bl, 0x26
jne 0x87e755
mov ebx, eax
mov eax, ecx
mov byte [ebx + eax], 0
inc eax
mov dword [ebp - 4], eax
mov eax, ebx
mov ecx, dword [ebp - 4]
jmp 0x87e75b
cmp al, 0x23
je 0x87e787
cmp byte [esi + edi - 1], 0x26
je 0x87e787
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x87e740
jmp 0x87e787
push 2
pop edx
mov dword [ebp - 0x10], edx
xor bl, bl
jmp 0x87e780
test edx, edx
jne 0x87e768
cmp bl, 0x3f
je 0x87e772
cmp edx, 2
jne 0x87e77a
cmp bl, 0x26
jne 0x87e77a
xor edx, edx
xor bl, bl
inc edx
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov byte [eax + ecx], bl
inc ecx
mov dword [ebp - 4], ecx
mov bl, byte [esi + edi]
test bl, bl
jne 0x87e66f
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 4]
cmp edx, 1
jne 0x87e7aa
mov byte [ebx + eax], 0
inc eax
jmp 0x87e7aa
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov ecx, ebx
mov word [ebx + eax], 0
call fcn.0082fb48
lea esi, [ebx + 1]
jmp 0x87e8eb
mov ecx, esi
call fcn.0082fb48
mov edi, eax
lea eax, [esi + 1]
add eax, edi
mov dword [ebp - 0x1c], edi
mov ecx, eax
mov dword [ebp - 8], eax
call fcn.0082fb48
mov dword [ebp - 0x24], eax
cmp edi, 3
jne 0x87e7ff
mov eax, 0x6676
cmp ax, word [esi]
jne 0x87e7ff
push 0x73
pop eax
cmp al, byte [esi + 2]
jne 0x87e7ff
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
jmp 0x87e8e7
mov ecx, dword [ebp - 0x1c]
xor eax, eax
and dword [ebp - 0x10], eax
xor edi, edi
mov dword [ebp - 4], eax
cmp ecx, 5
jne 0x87e836
mov eax, 0x68636163
cmp eax, dword [esi]
jne 0x87e836
push 0x65
pop eax
cmp al, byte [esi + 4]
jne 0x87e836
mov eax, 0x4aea3c
mov dword [ebp - 0x10], 0x4a7584
mov edi, 0x60000
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], edi
cmp ecx, 4
jne 0x87e871
push ecx
push esi
push 0x4a759c
call fcn.00886f04
add esp, 0xc
mov dword [ebp - 0x18], edi
test eax, eax
jne 0x87e871
mov ecx, dword [ebp - 0xc]
mov eax, 0x87
and ecx, eax
mov dword [ebp - 0x10], 0x4a75b0
mov edi, eax
mov dword [ebp - 0x18], ecx
mov esi, 0x4aea5c
jmp 0x87e874
mov esi, dword [ebp - 4]
test esi, esi
je 0x87e8e4
mov eax, dword [esi]
xor ecx, ecx
mov dword [ebp - 4], ecx
jmp 0x87e8ac
mov ecx, eax
call fcn.0082fb48
mov ecx, dword [ebp - 0x24]
cmp ecx, eax
jne 0x87e8a2
push ecx
push dword [ebp - 0x1c]
push dword [ebp - 8]
call fcn.00886f04
add esp, 0xc
test eax, eax
je 0x87e8c3
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
mov eax, dword [esi + eax*8]
mov dword [ebp - 0x1c], eax
test eax, eax
jne 0x87e881
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4a75b8
jmp 0x87e652
mov ecx, dword [ebp - 4]
mov ecx, dword [esi + ecx*8 + 4]
test ecx, ecx
je 0x87e8b3
mov eax, ecx
and eax, 0xffffff7f
cmp eax, dword [ebp - 0x18]
jg 0x87e8f8
not edi
and edi, dword [ebp - 0xc]
or edi, ecx
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x24]
inc esi
add esi, eax
cmp byte [esi], 0
jne 0x87e7bf
jmp 0x87e944
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4a75cc
call fcn.0082f1be
add esp, 0xc
mov dword [ebp - 0x14], 3
jmp 0x87e96d
lea eax, [esi + 2]
cdq
push edx
push eax
call fcn.0082d7f6
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
je 0x87e5f5
test esi, esi
je 0x87e93a
push esi
push edi
push ebx
call fcn.00885c30
add esp, 0xc
and dword [ebp - 0xc], 0xffffffbf
mov word [ebx + esi], 0
mov esi, dword [ebp - 0x2c]
push esi
call fcn.0082d0fd
pop ecx
mov ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [eax], ecx
test ecx, ecx
jne 0x87e97b
push esi
push 0x4a75e4
call fcn.0082f1be
pop ecx
pop ecx
mov dword [ebp - 0x14], 1
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
push ebx
call fcn.0082d86e
pop ecx
xor ebx, ebx
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0xc]
mov dword [ecx], eax
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
mov dword [ecx], ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret