Function at 0x2801b4a6
Capabilities:
Parse credit card information

Disassembly:
push ecx
or dword [esp], 0xffffffff
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x1c]
xor ebp, ebp
cmp edi, ebp
je 0x2801bde7
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 0x864]
cmp eax, ebp
je 0x2801b4d9
cmp byte [eax + 0x93], 0
jne 0x2801bde7
mov dl, byte [edi + 0x15]
mov ebx, 0x1ff
test dl, 0x10
je 0x2801b4f9
mov eax, dword [edi + 0x10]
and eax, ebx
test byte [eax*4 + 0x280af3a5], 1
jne 0x2801bde7
mov ecx, dword [edi + 0x10]
mov eax, ecx
and eax, ebx
cmp eax, 0x24
ja 0x2801b88b
je case.0x2801b96f.165
cmp eax, 9
ja 0x2801b78c
je 0x2801b80c
sub eax, ebp
je 0x2801b753
dec eax
je 0x2801b74a
push 2
pop ecx
sub eax, ecx
je 0x2801b741
sub eax, ecx
je 0x2801b549
sub eax, ecx
je 0x2801b7c6
jmp case.0x2801b96f.133
test dl, 0x20
je case.0x2801b96f.133
mov eax, dword [esi + 0x324]
xor ebp, ebp
cmp eax, ebp
mov dword [esp + 0x10], ebp
je 0x2801b642
mov edx, dword [eax + 0x10]
and edx, 0x1ff
cmp edx, 5
jne 0x2801b642
mov eax, dword [eax + 0x18]
mov ebx, 0x100
test dword [eax + 8], ebx
je 0x2801b58c
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
jmp 0x2801b597
push ecx
push eax
push esi
call sym.perl510.dll_Perl_sv_2iv_flags
add esp, 0xc
cmp eax, ebp
jne 0x2801b5a4
test byte [esi + 0x390], 0x10
je 0x2801b613
mov eax, dword [esi + 0x324]
or dword [esi + 0x390], 0x10
or dword [esi + 0x7dc], 0x20010
mov eax, dword [eax + 0x18]
test dword [eax + 8], ebx
je 0x2801b5ca
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
jmp 0x2801b5d6
push 2
push eax
push esi
call sym.perl510.dll_Perl_sv_2iv_flags
add esp, 0xc
push eax
push esi
call sym.perl510.dll_Perl_newSViv
push eax
push esi
call sym.perl510.dll_Perl_sv_2mortal
add esp, 0x10
push eax
push 0x80000
push 2
push 0x280b2320
push esi
call sym.perl510.dll_Perl_newSVpvn_flags
add esp, 0x10
push eax
push dword [esi + 0x39c]
push esi
call sym.perl510.dll_Perl_refcounted_he_new
add esp, 0x10
mov dword [esi + 0x39c], eax
mov dword [esi + 0x324], ebp
cmp dword [esp + 0x20], 0x14
jne 0x2801bd3f
mov eax, dword [edi + 0x10]
and eax, 0x1ff
cmp dword [eax*4 + sym.perl510.dll_PL_check], 0x28022d76
jne 0x2801bd49
jmp 0x2801bde7
cmp dword [esp + 0x20], ebp
jne 0x2801b726
test byte [esi + 0x390], 0x10
mov ebx, 0x280b2320
je 0x2801b6b3
push ebp
push ebp
push ecx
push ebx
push ebp
push dword [esi + 0x39c]
push esi
call sym.perl510.dll_Perl_refcounted_he_fetch
add esp, 0x1c
test byte [eax + 9], 1
je 0x2801b690
push ebp
push ebp
push 2
push ebx
push ebp
push dword [esi + 0x39c]
push esi
call sym.perl510.dll_Perl_refcounted_he_fetch
mov eax, dword [eax]
add esp, 0x1c
mov eax, dword [eax + 0x10]
jmp 0x2801b6b5
push 2
push ebp
push ebp
push 2
push ebx
push ebp
push dword [esi + 0x39c]
push esi
call sym.perl510.dll_Perl_refcounted_he_fetch
add esp, 0x1c
push eax
push esi
call sym.perl510.dll_Perl_sv_2iv_flags
add esp, 0xc
jmp 0x2801b6b5
xor eax, eax
lea ecx, [esi + 0x368]
push 0x29
push ecx
push eax
push esi
call fcn.2806f735
mov eax, dword [esi + 0x390]
add esp, 0x10
test al, 0x10
je 0x2801bd49
or dword [esi + 0x7dc], 0x20010
or al, 0x10
push ebp
push esi
mov dword [esi + 0x390], eax
call sym.perl510.dll_Perl_newSViv
push eax
push esi
call sym.perl510.dll_Perl_sv_2mortal
add esp, 0x10
push eax
push 0x80000
push 2
push ebx
push esi
call sym.perl510.dll_Perl_newSVpvn_flags
add esp, 0x10
push eax
push dword [esi + 0x39c]
push esi
call sym.perl510.dll_Perl_refcounted_he_new
add esp, 0x10
mov dword [esi + 0x39c], eax
jmp 0x2801bd49
cmp dword [esp + 0x20], 0x14
je case.0x2801b96f.133
push str.That_use_of____is_unsupported
push esi
call sym.perl510.dll_Perl_croak
jmp 0x2801b9af
mov dword [esp + 0x10], ebp
jmp 0x2801b619
test byte [edi + 0x14], 8
jmp 0x2801bad1
mov al, byte [edi + 0x14]
mov dword [esp + 0x10], ebp
test al, 0x80
jne case.0x2801b96f.133
test al, 4
je 0x2801b619
cmp dword [edi + 0xc], 0x8e
je case.0x2801b96f.142
push dword [esp + 0x20]
push dword [edi + 0x18]
push esi
call sym.perl510.dll_Perl_mod
add esp, 0xc
jmp 0x2801b619
cmp eax, 0xa
jb case.0x2801b96f.133
cmp eax, 0xb
jbe 0x2801b7d2
cmp eax, 0xe
je 0x2801bb90
cmp eax, 0xf
je 0x2801b7b0
cmp eax, 0x10
jmp 0x2801b53e
push 1
pop ebx
push ebx
push 0xf
push dword [edi + 0x18]
push esi
call sym.perl510.dll_Perl_doref
add esp, 0x10
mov dword [esp + 0x10], ebx
or byte [esi + 0x7dd], 1
jmp case.0x2801b96f.165
cmp dword [esp + 0x20], 0x14
mov dword [esi + 0x3c], 0x3fffffff
jne 0x2801b7ea
test byte [edi + 0x14], 8
jne 0x2801bde7
push dword [esp + 0x20]
push edi
call fcn.2801be57
pop ecx
test al, al
pop ecx
jne case.0x2801b96f.133
cmp dword [esp + 0x20], 0xab
jne 0x2801b80c
or byte [edi + 0x15], 8
inc dword [esi + 0x3c]
cmp dword [esp + 0x20], 0
jne 0x2801b619
xor ebx, ebx
push ebx
push dword [edi + 0xc]
push dword [esi + 0x3a8]
push esi
call sym.perl510.dll_Perl_av_fetch
mov eax, dword [eax]
add esp, 0x10
mov ecx, dword [eax + 8]
mov eax, 0x400
and ecx, eax
cmp ecx, eax
jne 0x2801b859
push ebx
push dword [edi + 0xc]
push dword [esi + 0x3a8]
push esi
call sym.perl510.dll_Perl_av_fetch
mov eax, dword [eax]
add esp, 0x10
mov eax, dword [eax + 0xc]
jmp 0x2801b87a
push 2
push ebx
push ebx
push dword [edi + 0xc]
push dword [esi + 0x3a8]
push esi
call sym.perl510.dll_Perl_av_fetch
add esp, 0x10
push dword [eax]
push esi
call sym.perl510.dll_Perl_sv_2pv_flags
add esp, 0x10
push eax
push str.Cant_localize_lexical_variable__s
push esi
call sym.perl510.dll_Perl_croak
jmp 0x2801b784
mov ebx, 0x81
cmp eax, ebx
ja 0x2801b959
je case.0x2801b96f.137
cmp eax, 0x45
ja 0x2801b8e8
cmp eax, 0x44
jae 0x2801b94a
cmp eax, 0x25
je case.0x2801b96f.177
cmp eax, 0x2b
je 0x2801b8e0
cmp eax, 0x2d
je 0x2801b931
cmp eax, 0x2e
je 0x2801b94a
cmp eax, 0x30
je 0x2801b94a
cmp eax, 0x35
jbe case.0x2801b96f.133
cmp eax, 0x42
jbe 0x2801b94a
jmp case.0x2801b96f.133
inc dword [esi + 0x3c]
jmp 0x2801bde7
cmp eax, 0x5b
jb case.0x2801b96f.133
cmp eax, 0x5d
jbe 0x2801b94a
cmp eax, 0x70
je 0x2801b928
cmp eax, 0x71
je 0x2801b931
cmp eax, 0x7e
je case.0x2801b96f.135
cmp eax, 0x7f
je 0x2801b91e
cmp eax, 0x80
je case.0x2801b96f.136
jmp case.0x2801b96f.133
or dword [esp + 0x10], 0xffffffff
jmp case.0x2801b96f.165
cmp dl, 4
je case.0x2801b96f.133
cmp dword [esp + 0x20], 0xab
jne 0x2801bbe8
or dl, 8
mov byte [edi + 0x15], dl
jmp 0x2801bbe8
test byte [edi + 0x14], 0x40
je case.0x2801b96f.133
jmp case.0x2801b96f.165
lea ebx, [eax - 0x84]
cmp ebx, 0x37
ja case.0x2801b96f.133
movzx ebx, byte [ebx + 0x2801be1f]
jmp dword [ebx*4 + 0x2801bdef]
mov eax, dword [esp + 0x20]
cmp eax, 0x2b
je 0x2801b984
cmp eax, 0x14
jne 0x2801b9b6
test byte [edi + 0x14], 0x40
jne 0x2801b9b6
and cx, 0xfe11
and dl, 0xfe
or ecx, 0x11
mov byte [edi + 0x15], dl
mov dword [edi + 0x10], ecx
mov eax, dword [0x280ca154]
mov dword [edi + 8], eax
mov eax, dword [edi + 0x18]
push dword [eax + 0x18]
push esi
call sym.perl510.dll_Perl_op_null
pop ecx
pop ecx
jmp 0x2801b619
test dl, 0x40
jne 0x2801bde7
or dl, 0x80
cmp eax, 0x99
mov byte [edi + 0x15], dl
mov dword [esi + 0x3c], 0x3fffffff
je 0x2801bb45
cmp eax, 0xa9
je 0x2801bb45
cmp eax, 0x14
je 0x2801bb45
mov ebp, dword [edi + 0x18]
mov ebx, 0x1ff
mov eax, dword [ebp + 0x10]
and eax, ebx
cmp eax, 3
je 0x2801ba1f
test eax, eax
jne 0x2801ba0a
cmp dword [ebp + 0xc], 0x8e
je 0x2801ba1c
push dword [ebp + 0xc]
push eax
push str.panic:_unexpected_lvalue_entersub_args:_type_targ__ld:_lu
push esi
call sym.perl510.dll_Perl_croak
add esp, 0x10
mov ebp, dword [ebp + 0x18]
mov eax, dword [ebp + 4]
test eax, eax
je 0x2801ba2a
mov ebp, eax
jmp 0x2801ba1f
mov eax, dword [ebp + 0x10]
and eax, ebx
jne 0x2801badc
cmp dword [ebp + 0xc], 0x11
jne 0x2801badc
mov ebx, dword [ebp + 0x18]
mov eax, 0x1ff
test dword [ebx + 0x10], eax
jne 0x2801ba72
cmp dword [ebx + 0xc], 0xf
jne 0x2801ba55
mov ebx, dword [ebx + 0x18]
test dword [ebx + 0x10], eax
jne 0x2801ba72
push dword [ebx + 0xc]
push 0
push str.Unexpected_constant_lvalue_entersub_entry_via_type_targ__ld:_lu
push esi
call sym.perl510.dll_Perl_croak
add esp, 0x10
mov eax, 0x1ff
mov ecx, dword [ebx + 0x10]
and ecx, eax
cmp ecx, 7
jne 0x2801ba8f
mov eax, dword [ebx + 0x18]
mov ecx, dword [esi + 8]
mov eax, dword [ecx + eax*4]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
test eax, eax
jne 0x2801bacb
mov eax, dword [ebx]
test eax, eax
je 0x2801baa0
cmp eax, ebx
je 0x2801baa0
mov dword [ebp], eax
mov dword [ebx], ebp
jmp 0x2801baa4
and dword [ebp], 0
mov eax, dword [ebp + 0x10]
and dword [ebp + 0xc], 0
and ax, 0xfe11
or al, 0x11
mov dword [ebp + 0x10], eax
mov eax, dword [0x280ca154]
mov dword [ebp + 8], eax
mov al, byte [ebp + 0x15]
and al, 0xfe
or al, 0x80
mov byte [ebp + 0x15], al
jmp 0x2801b619
mov eax, dword [eax]
test byte [eax + 0x3c], 4
je case.0x2801b96f.133
jmp 0x2801b619
cmp eax, 0xc3
je 0x2801bb0a
cmp eax, 0xa8
je 0x2801bb0a
cmp eax, 0x11
je 0x2801bb01
push dword [ebp + 0xc]
push eax
push str.panic:_unexpected_lvalue_entersub_entry_via_type_targ__ld:_lu
push esi
call sym.perl510.dll_Perl_croak
add esp, 0x10
or byte [ebp + 0x15], 0x80
jmp 0x2801b619
push 0x1c
push esi
call sym.perl510.dll_Perl_Slab_Alloc
pop ecx
pop ecx
mov ecx, dword [eax + 0x10]
and cx, 0xfe11
or ecx, 0x11
mov dword [eax + 0x10], ecx
mov ecx, dword [0x280ca154]
and dword [eax + 0x18], 0
mov dword [eax + 8], ecx
mov dword [eax], eax
mov dword [ebp + 4], eax
mov cl, byte [eax + 0x15]
and cl, 0xfe
or cl, 0x80
mov byte [eax + 0x15], cl
jmp 0x2801b619
or byte [edi + 0x15], 4
jmp 0x2801b619
mov eax, dword [edi + 0x18]
mov dword [esp + 0x10], 1
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x2801b619
push dword [esp + 0x20]
push ebx
push esi
call sym.perl510.dll_Perl_mod
mov ebx, dword [ebx + 4]
add esp, 0xc
jmp 0x2801bb5c
cmp dword [esp + 0x20], 0x14
jne 0x2801bb90
test byte [edi + 0x14], 8
je 0x2801bb90
mov dword [esi + 0x3c], 0x3fffffff
jmp 0x2801bde7
push dword [esp + 0x20]
push edi
call fcn.2801be57
pop ecx
test al, al
pop ecx
jne case.0x2801b96f.133
mov eax, dword [edi + 0x10]
push 1
and eax, 0x1ff
push eax
push dword [edi + 0x18]
push esi
call sym.perl510.dll_Perl_doref
add esp, 0x10
cmp dword [esp + 0x20], 0xab
jne 0x2801bbc9
or byte [edi + 0x15], 8
mov dword [esp + 0x10], 1
mov dword [esi + 0x3c], 0x3fffffff
jmp 0x2801b619
cmp dword [esp + 0x20], 0x24
jne case.0x2801b96f.133
push dword [edi + 0xc]
push esi
call fcn.280273fd
mov eax, dword [edi + 0x10]
push 0x40000
and eax, 0x1ff
push eax
push esi
call fcn.280266ea
add esp, 0x14
mov dword [edi + 0xc], eax
test byte [edi + 0x14], 4
je 0x2801b619
push dword [esp + 0x20]
mov eax, dword [edi + 0x18]
push dword [eax + 4]
jmp 0x2801b77e
push 1
pop ebx
push ebx
push eax
push dword [edi + 0x18]
push esi
call sym.perl510.dll_Perl_doref
add esp, 0x10
cmp dword [esp + 0x20], 0xa9
jne 0x2801bc4b
mov al, byte [edi + 0x15]
test al, 0xe0
jne 0x2801bc59
or al, 0x10
mov byte [edi + 0x15], al
cmp dword [esp + 0x20], 0xab
jne 0x2801bc59
or byte [edi + 0x15], 8
mov dword [esp + 0x10], ebx
inc dword [esi + 0x3c]
jmp 0x2801b619
and dword [esp + 0x10], 0
test byte [edi + 0x14], 4
je 0x2801b619
push dword [esp + 0x20]
push dword [edi + 0x1c]
jmp 0x2801b77e
and dword [esp + 0x10], 0
mov ebx, dword [edi + 0x18]
test ebx, ebx
je 0x2801b619
push dword [esp + 0x20]
push ebx
push esi
call sym.perl510.dll_Perl_mod
mov ebx, dword [ebx + 4]
add esp, 0xc
jmp 0x2801bc88
cmp dword [esp + 0x20], 0xab
je 0x2801b619
mov eax, dword [esp + 0x20]
cmp eax, 0x99
je 0x2801b619
mov ecx, 0xa9
cmp eax, ecx
je 0x2801b619
cmp eax, 0x14
je 0x2801b624
test eax, eax
je 0x2801bce3
mov ebx, dword [eax*4 + sym.perl510.dll_PL_op_desc]
jmp 0x2801bce8
mov ebx, str.local
mov eax, dword [edi + 0x10]
and eax, 0x1ff
jne 0x2801bcff
test byte [edi + 0x14], 0x80
je 0x2801bcff
mov eax, str.do_block
jmp 0x2801bd23
cmp eax, ecx
jne 0x2801bd0a
mov eax, str.non_lvalue_subroutine_call
jmp 0x2801bd23
cmp eax, 0x169
jne 0x2801bd1c
push edi
push esi
call sym.perl510.dll_Perl_custom_op_desc
pop ecx
pop ecx
jmp 0x2801bd23
mov eax, dword [eax*4 + sym.perl510.dll_PL_op_desc]
push ebx
push eax
push str.Cant_modify__s_in__s
push esi
call sym.perl510.dll_Perl_form
push eax
push esi
call fcn.28090c9b
add esp, 0x18
jmp 0x2801bde7
cmp dword [esp + 0x20], 0xab
je 0x2801bd4d
or byte [edi + 0x14], 0x20
mov eax, dword [esp + 0x20]
cmp eax, 0x25
je 0x2801bde3
cmp eax, 0x24
je 0x2801bde3
test eax, eax
jne 0x2801bdc8
cmp dword [esp + 0x10], 0xffffffff
je 0x2801bd86
cmp dword [esp + 0x10], 1
jne 0x2801bde7
or byte [edi + 0x15], 0x80
and byte [edi + 0x14], 0x7f
or byte [esi + 0x7dd], 1
jmp 0x2801bde7
push 0x1c
push esi
call sym.perl510.dll_Perl_ckwarn
pop ecx
test al, al
pop ecx
je 0x2801bde7
mov eax, dword [edi + 0x10]
and eax, 0x1ff
cmp eax, 0x169
jne 0x2801bdae
push edi
push esi
call sym.perl510.dll_Perl_custom_op_desc
pop ecx
pop ecx
jmp 0x2801bdb5
mov eax, dword [eax*4 + sym.perl510.dll_PL_op_desc]
push eax
push str.Useless_localization_of__s
push 0x1c
push esi
call sym.perl510.dll_Perl_warner
add esp, 0x10
jmp 0x2801bde7
cmp eax, 0x99
je 0x2801bde7
cmp eax, 0xa9
je 0x2801bde7
cmp eax, 0xab
je 0x2801bde7
or byte [edi + 0x14], 0x10
jmp 0x2801bde7
or byte [edi + 0x14], 0x90
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret