Function at 0x46b151
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.0041c748
mov esi, eax
test bl, 0x40
jne 0x46b186
cmp dword [0x4aef5c], 0
je 0x46b514
cmp esi, 5
jl 0x46b514
cmp dword [edi], 0x656c6966
jne 0x46b514
cmp byte [edi + 4], 0x3a
jne 0x46b514
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 0x46b1e3
cmp byte [ecx + edi], 0x26
jne 0x46b1c8
xor ebx, ebx
inc ebx
and dword [ebp - 0x18], 0
jmp 0x46b1d9
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 0x46b1b9
push edx
push eax
call fcn.0041a3f6
mov ebx, eax
mov dword [ebp - 8], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x46b1fd
push 7
pop eax
jmp 0x46b58b
cmp byte [edi + 5], 0x2f
push 5
pop esi
jne 0x46b25f
cmp byte [edi + 6], 0x2f
jne 0x46b25f
lea ecx, [edi + 7]
mov al, byte [ecx]
mov dword [ebp - 0x24], ecx
push 7
pop esi
test al, al
je 0x46b25f
cmp al, 0x2f
je 0x46b227
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x46b21b
cmp esi, 7
je 0x46b25f
cmp esi, 0x10
jne 0x46b248
push 9
push ecx
push 0x4a755c
call fcn.00473b04
add esp, 0xc
test eax, eax
je 0x46b25f
mov ecx, dword [ebp - 0x24]
push ecx
lea eax, [esi - 7]
push eax
push 0x4a7568
call fcn.0041bdbe
add esp, 0xc
jmp 0x46b566
mov bl, byte [esi + edi]
xor edx, edx
mov dword [ebp - 0x10], edx
test bl, bl
je 0x46b3a4
cmp bl, 0x23
je 0x46b392
inc esi
cmp bl, 0x25
jne 0x46b30c
mov cl, byte [esi + edi]
movzx eax, cl
test byte [eax + 0x49d5b0], 8
je 0x46b30c
movzx eax, byte [esi + edi + 1]
test byte [eax + 0x49d5b0], 8
je 0x46b30c
movsx edx, cl
movsx ecx, byte [esi + edi + 1]
call fcn.0041d54a
mov ecx, edx
movzx ebx, al
call fcn.0041d54a
mov edx, dword [ebp - 0x10]
add esi, 2
movzx eax, al
shl eax, 4
add ebx, eax
jne 0x46b37a
jmp 0x46b303
cmp al, 0x23
je 0x46b387
test edx, edx
jne 0x46b2e0
cmp al, 0x3f
je 0x46b387
cmp edx, 1
jne 0x46b2f5
cmp al, 0x3d
je 0x46b387
cmp al, 0x26
je 0x46b387
cmp edx, 2
jne 0x46b302
cmp al, 0x26
je 0x46b387
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x46b2cc
jmp 0x46b387
cmp edx, 1
jne 0x46b35f
cmp bl, 0x26
je 0x46b31b
cmp bl, 0x3d
jne 0x46b37a
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
cmp byte [eax + ecx - 1], 0
je 0x46b34c
cmp bl, 0x26
jne 0x46b355
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 0x46b35b
cmp al, 0x23
je 0x46b387
cmp byte [esi + edi - 1], 0x26
je 0x46b387
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x46b340
jmp 0x46b387
push 2
pop edx
mov dword [ebp - 0x10], edx
xor bl, bl
jmp 0x46b380
test edx, edx
jne 0x46b368
cmp bl, 0x3f
je 0x46b372
cmp edx, 2
jne 0x46b37a
cmp bl, 0x26
jne 0x46b37a
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 0x46b26f
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 4]
cmp edx, 1
jne 0x46b3aa
mov byte [ebx + eax], 0
inc eax
jmp 0x46b3aa
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov ecx, ebx
mov word [ebx + eax], 0
call fcn.0041c748
lea esi, [ebx + 1]
jmp 0x46b4eb
mov ecx, esi
call fcn.0041c748
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.0041c748
mov dword [ebp - 0x24], eax
cmp edi, 3
jne 0x46b3ff
mov eax, 0x6676
cmp ax, word [esi]
jne 0x46b3ff
push 0x73
pop eax
cmp al, byte [esi + 2]
jne 0x46b3ff
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
jmp 0x46b4e7
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 0x46b436
mov eax, 0x68636163
cmp eax, dword [esi]
jne 0x46b436
push 0x65
pop eax
cmp al, byte [esi + 4]
jne 0x46b436
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 0x46b471
push ecx
push esi
push 0x4a759c
call fcn.00473b04
add esp, 0xc
mov dword [ebp - 0x18], edi
test eax, eax
jne 0x46b471
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 0x46b474
mov esi, dword [ebp - 4]
test esi, esi
je 0x46b4e4
mov eax, dword [esi]
xor ecx, ecx
mov dword [ebp - 4], ecx
jmp 0x46b4ac
mov ecx, eax
call fcn.0041c748
mov ecx, dword [ebp - 0x24]
cmp ecx, eax
jne 0x46b4a2
push ecx
push dword [ebp - 0x1c]
push dword [ebp - 8]
call fcn.00473b04
add esp, 0xc
test eax, eax
je 0x46b4c3
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 0x46b481
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4a75b8
jmp 0x46b252
mov ecx, dword [ebp - 4]
mov ecx, dword [esi + ecx*8 + 4]
test ecx, ecx
je 0x46b4b3
mov eax, ecx
and eax, 0xffffff7f
cmp eax, dword [ebp - 0x18]
jg 0x46b4f8
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 0x46b3bf
jmp 0x46b544
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4a75cc
call fcn.0041bdbe
add esp, 0xc
mov dword [ebp - 0x14], 3
jmp 0x46b56d
lea eax, [esi + 2]
cdq
push edx
push eax
call fcn.0041a3f6
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
je 0x46b1f5
test esi, esi
je 0x46b53a
push esi
push edi
push ebx
call fcn.00472830
add esp, 0xc
and dword [ebp - 0xc], 0xffffffbf
mov word [ebx + esi], 0
mov esi, dword [ebp - 0x2c]
push esi
call fcn.00419cfd
pop ecx
mov ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [eax], ecx
test ecx, ecx
jne 0x46b57b
push esi
push 0x4a75e4
call fcn.0041bdbe
pop ecx
pop ecx
mov dword [ebp - 0x14], 1
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
push ebx
call fcn.0041a46e
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