Function at 0x51ce950
Capabilities:
Parse credit card information

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
mov eax, dword [esi + 0x24]
mov edx, dword [eax + 0x10]
xor ebp, ebp
xor ebx, ebx
cmp byte [edx], 0x25
jne case.0x51ce983.2
mov ecx, dword [esi + 0xac]
lea eax, [ecx + 1]
cmp eax, 0x11
ja case.default.0x51ce983
movzx eax, byte [eax + 0x51ced94]
jmp dword [eax*4 + 0x51ced80]
cmp dword [esi + 0xd4], ebp
je 0x51ce99b
cmp ecx, 0xffffffff
je case.0x51ce983.2
push str.PEReference_at_end_of_document
push 0x53985dc
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push 3
mov dword [esi + 0x54], 0x12
push 0x12
push 1
push ebp
push esi
push ebp
push ebp
push ebp
call fcn.051eb890
add esp, 0x44
mov dword [esi + 0xc], ebp
cmp dword [esi + 0x120], ebp
jne case.0x51ce983.2
mov dword [esi + 0xd4], 1
pop esi
pop ebp
pop ebx
ret
cmp dword [esi + 0xd4], ebp
je 0x51ce9f4
cmp ecx, 0xffffffff
je case.0x51ce983.2
push str.PEReference_in_prolog
push 0x53985dc
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push 3
mov dword [esi + 0x54], 0x13
push 0x13
jmp 0x51ce9b7
cmp dword [esi + 0xd4], ebp
je 0x51cea23
cmp ecx, 0xffffffff
je case.0x51ce983.2
push str.PEReference_in_epilog
push 0x53985dc
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push 3
mov dword [esi + 0x54], 0x14
push 0x14
jmp 0x51ce9b7
cmp dword [esi + 0x60], ebp
jne 0x51cea53
cmp dword [esi + 0x28], 1
je case.0x51ce983.2
mov al, byte [edx + 1]
cmp al, 0x20
je case.0x51ce983.2
cmp al, 9
jb 0x51cea6a
cmp al, 0xa
jbe case.0x51ce983.2
cmp al, 0xd
je case.0x51ce983.2
test al, al
je case.0x51ce983.2
push edi
push esi
call fcn.051edfb0
push esi
call fcn.051cf550
add esp, 8
mov edi, eax
call fcn.051ed290
cmp dword [eax], ebp
je 0x51ceab4
call fcn.051ed190
mov ebp, eax
call fcn.051ed1d0
mov ecx, dword [eax]
mov edx, dword [ebp]
push edi
push str.PEReference:__s_n
push ecx
call edx
add esp, 0xc
xor ebp, ebp
cmp edi, ebp
jne 0x51ceaee
cmp dword [esi + 0xd4], ebp
je 0x51ceacd
cmp dword [esi + 0xac], 0xffffffff
je 0x51ced7b
push str.PEReference:_no_name
push 0x53985dc
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push 3
mov dword [esi + 0x54], 0x18
push 0x18
jmp 0x51ced57
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + 0x10]
cmp byte [ecx], 0x3b
jne 0x51ced2a
push esi
call fcn.051edfb0
mov eax, dword [esi]
add esp, 4
cmp eax, ebp
je 0x51ceb1f
mov eax, dword [eax + 0x60]
cmp eax, ebp
je 0x51ceb1f
mov edx, dword [esi + 4]
push edi
push edx
call eax
add esp, 8
mov ebx, eax
or ebp, 0xffffffff
cmp dword [esi + 0xac], ebp
je 0x51ced7b
test ebx, ebx
jne 0x51cebd5
cmp dword [esi + 0x1c], 1
je 0x51cebb0
cmp dword [esi + 0x58], ebx
jne 0x51ceb46
cmp dword [esi + 0x5c], ebx
je 0x51cebb0
cmp dword [esi + 0x68], 0
je 0x51ceb81
cmp dword [esi + 0x70], 0
je 0x51ceb81
xor eax, eax
push str.PEReference:____s__not_found_n
mov ecx, edi
lea edx, [eax + 0x1b]
call fcn.051fcad0
add esp, 4
push 0
push 0
push 0
push esi
mov dword [esi + 0x64], 0
call fcn.051ce740
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
ret
push 0x1b
push esi
xor ecx, ecx
mov edx, edi
mov ebx, str.PEReference:____s__not_found_n
call fcn.051c9670
add esp, 8
push 0
push 0
push 0
push esi
mov dword [esi + 0x64], 0
call fcn.051ce740
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
ret
mov eax, edi
mov edx, str.PEReference:____s__not_found_n
mov ecx, 0x1a
call fcn.051c97d0
push 0
push 0
push 0
push esi
call fcn.051ce740
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
ret
mov eax, dword [esi + 0x24]
cmp dword [eax + 0x28], 0x51ca780
je 0x51cebf8
push ebx
mov eax, esi
call fcn.051ca790
push eax
push esi
call fcn.051cc400
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
ret
mov eax, dword [ebx + 0x30]
cmp eax, 4
je 0x51cec1b
cmp eax, 5
je 0x51cec20
mov eax, edi
mov edx, str.PEReference:__s_is_not_a_parameter_entity_n
mov ecx, 0x1e
call fcn.051c97d0
pop edi
pop esi
pop ebp
pop ebx
ret
cmp eax, 5
jne 0x51cec39
test byte [esi + 0x168], 0x1e
jne 0x51cec39
cmp dword [esi + 0x10], 0
jne 0x51cec39
cmp dword [esi + 0x68], 0
je 0x51ced7b
push ebx
push esi
call fcn.051eed80
push eax
push esi
call fcn.051cc400
add esp, 0x10
test eax, eax
jl 0x51ced7b
cmp dword [esi + 0x124], 0
jne 0x51cec73
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + 0x14]
sub ecx, dword [eax + 0x10]
cmp ecx, 0xfa
jge 0x51cec73
mov eax, esi
call fcn.051cc210
cmp dword [esi + 0xac], ebp
je 0x51ced7b
mov eax, dword [esi + 0x24]
mov edx, dword [eax + 0x14]
sub edx, dword [eax + 0x10]
cmp edx, 4
jl 0x51cecd4
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx]
mov byte [esp + 0x14], dl
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
mov byte [esp + 0x15], dl
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 2]
mov byte [esp + 0x16], dl
mov eax, dword [eax + 0x10]
mov cl, byte [eax + 3]
lea edx, [esp + 0x14]
push 4
push edx
mov byte [esp + 0x1f], cl
call fcn.052017a0
add esp, 8
test eax, eax
je 0x51cecd4
push eax
push esi
call fcn.051ef450
add esp, 8
cmp dword [ebx + 0x30], 5
jne 0x51ced7b
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
cmp byte [eax], 0x3c
jne 0x51ced7b
cmp byte [eax + 1], 0x3f
jne 0x51ced7b
cmp byte [eax + 2], 0x78
jne 0x51ced7b
cmp byte [eax + 3], 0x6d
jne 0x51ced7b
cmp byte [eax + 4], 0x6c
jne 0x51ced7b
mov al, byte [eax + 5]
cmp al, 0x20
je 0x51ced1c
cmp al, 9
jb 0x51ced18
cmp al, 0xa
jbe 0x51ced1c
cmp al, 0xd
jne 0x51ced7b
push esi
call fcn.051cdf60
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
ret
cmp dword [esi + 0xd4], ebp
je 0x51ced3b
cmp dword [esi + 0xac], 0xffffffff
je 0x51ced7b
push str.PEReference:_expecting__
push 0x53985dc
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push ebp
push 3
mov dword [esi + 0x54], 0x19
push 0x19
push 1
push ebp
push esi
push ebp
push ebp
push ebp
call fcn.051eb890
add esp, 0x44
mov dword [esi + 0xc], ebp
cmp dword [esi + 0x120], ebp
jne 0x51ced7b
mov dword [esi + 0xd4], 1
pop edi
pop esi
pop ebp
pop ebx
ret