Function at 0x4ce935
Capabilities:
Parse credit card information

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x38
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x4ce9ee
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
test edi, edi
je 0x4ce9f6
push edi
call fcn.007149b0
add esp, 4
mov ebx, 3
cmp eax, 0x7a1200
ja 0x4cef25
mov ebp, eax
mov eax, dword [esp + 0x50]
cmp eax, 0xa
ja case.default.0x4ce9fb
mov ebx, dword [esp + 0x58]
mov ecx, ebx
shr cl, 7
jmp dword [eax*4 + 0x7333ac]
test ebp, ebp
je 0x4cef20
xor eax, eax
test ebx, 0x204
setne al
sub esp, 0x10
mov dword [esp], edi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0
call fcn.004cd9f4
add esp, 0x10
test eax, eax
jne 0x4ce9da
lea eax, [esp + 0x14]
push ebx
push eax
push 0
push esi
call fcn.004ce169
add esp, 0x10
test eax, eax
je 0x4cef62
mov ecx, edi
mov edx, esi
push ebx
call fcn.004cef9f
add esp, 4
mov ebx, eax
jmp 0x4cef25
xor ebx, ebx
inc ebx
jmp 0x4cef25
cmp eax, 0xa
ja case.default.0x4ce9fb
jmp dword [eax*4 + 0x7333d8]
mov ecx, esi
call fcn.004cdfaa
xorps xmm0, xmm0
movups xmmword [esi + 0x1c], xmm0
movups xmmword [esi + 0x10], xmm0
movups xmmword [esi], xmm0
xor ebx, ebx
jmp 0x4cef25
mov ebx, 9
jmp 0x4cef25
add esi, 0xc
jmp case.0x4ce9fb.1
add esi, 0x24
jmp case.0x4ce9fb.1
add esi, 4
jmp case.0x4ce9fb.1
add esi, 8
jmp case.0x4ce9fb.1
add esi, 0x1c
jmp case.0x4ce9fb.1
add esi, 0x10
jmp case.0x4ce9fb.1
mov dword [esi + 0x28], 0
add esi, 0x18
jmp case.0x4ce9fb.1
add esi, 0x14
jmp case.0x4ce9fb.1
add esi, 0x20
mov eax, dword [esi]
xor ebx, ebx
test eax, eax
je 0x4cef25
push eax
call dword [0x7ec0e0]
add esp, 4
mov dword [esi], 0
jmp 0x4cef25
mov dword [esp], ecx
lea eax, [esi + 0xc]
jmp 0x4cebab
mov dword [esp], ecx
lea eax, [esi + 0x24]
jmp 0x4cebab
mov dword [esp], ecx
lea eax, [esi + 4]
jmp 0x4cebab
mov dword [esp], ecx
lea eax, [esi + 8]
jmp 0x4cebab
mov dword [esp], ecx
lea eax, [esi + 0x1c]
mov dword [esp + 4], eax
mov dword [esp + 8], 0
mov bl, 1
jmp 0x4cebb9
lea eax, [ebp - 0x29]
mov ebx, 0x1b
cmp eax, 0xffffffd8
jb 0x4cef25
mov eax, dword [esp + 0x58]
test al, 8
jne 0x4ceaec
push 0xffffffffffffffff
push edi
call fcn.004af399
add esp, 8
test eax, eax
je 0x4cef2f
mov al, byte [edi]
and al, 0xdf
add al, 0xbf
cmp al, 0x19
ja 0x4cef25
mov eax, ebp
dec eax
mov dword [esp], eax
je 0x4ceb35
xor ecx, ecx
movzx edx, byte [edi + ecx]
mov eax, edx
add al, 0xd0
cmp al, 0xa
jb 0x4ceb2f
mov eax, edx
and al, 0xdf
add al, 0xbf
cmp al, 0x1a
jb 0x4ceb2f
add edx, 0xffffffd5
cmp edx, 3
ja 0x4cef25
cmp edx, 1
je 0x4cef25
inc ecx
cmp dword [esp], ecx
jne 0x4ceb04
mov dword [esp + 8], 0
xor ebx, ebx
mov dword [esp + 0xc], 0
mov dword [esp], 0
mov dword [esp + 0x10], 0
mov dword [esp + 4], esi
jmp 0x4cebc9
mov dword [esp], ecx
lea eax, [esi + 0x10]
mov dword [esp + 4], eax
push dword [esi + 0x14]
call dword [0x7ec0e0]
add esp, 4
mov dword [esi + 0x14], 0
jmp 0x4cebaf
lea eax, [esp + 0x14]
push 0xa
push eax
push edi
call fcn.0071576f
add esp, 0xc
mov edx, 0xffff0000
lea ecx, [eax + edx]
cmp ecx, edx
ja 0x4ceee9
mov ebx, 4
jmp 0x4cef25
mov dword [esp], ecx
lea eax, [esi + 0x14]
mov dword [esp + 4], eax
mov dword [esp + 8], 0
xor ebx, ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
lea eax, [ebp*2]
add eax, ebp
movzx ecx, bl
lea eax, [ecx + eax + 1]
lea ecx, [esp + 0x14]
push eax
push ecx
call fcn.004b6d64
add esp, 8
mov dword [esp + 0x24], ebx
test bl, bl
je 0x4cec15
cmp byte [edi], 0x2f
je 0x4cec15
push 1
push 0x798698
lea eax, [esp + 0x1c]
push eax
call fcn.004b6e00
add esp, 0xc
mov ebx, 7
test eax, eax
jne 0x4cef25
cmp byte [esp], 0
je 0x4cecfa
mov al, byte [edi]
test al, al
je 0x4cedc1
mov ecx, dword [esp + 0xc]
xor cl, 1
mov ebp, ecx
mov ebx, dword [esp + 8]
cmp al, 0x20
setne cl
mov edx, ebp
or cl, dl
jne 0x4cec4a
push 1
push 0x799306
jmp 0x4cecaa
mov ecx, eax
add cl, 0xd0
cmp cl, 0xa
jb 0x4cec94
mov ecx, eax
and cl, 0xdf
add cl, 0xbf
cmp cl, 0x1a
jb 0x4cec94
movzx ecx, al
cmp ecx, 0x5e
jg 0x4cec7f
lea edx, [ecx - 0x2d]
cmp edx, 2
jb 0x4cec94
cmp ecx, 0x2f
jne 0x4cec89
cmp byte [esp + 0x24], 0
jne 0x4cec94
jmp 0x4cecd0
cmp ecx, 0x5f
je 0x4cec94
cmp ecx, 0x7e
je 0x4cec94
cmp al, 0x3d
jne 0x4cecd0
mov edx, ebx
and dl, 1
je 0x4cecd0
test bl, 1
movzx ecx, bl
mov ebx, 0
cmove ebx, ecx
cmp al, 0x3d
cmovne ebx, ecx
push 1
push edi
lea eax, [esp + 0x1c]
push eax
call fcn.004b6e00
add esp, 0xc
test eax, eax
jne 0x4cee54
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4cec36
jmp 0x4cedc1
mov byte [esp + 0x28], 0x25
mov eax, ecx
shr eax, 4
mov al, byte [eax + 0x733404]
mov byte [esp + 0x29], al
and ecx, 0xf
mov al, byte [ecx + 0x733404]
mov byte [esp + 0x2a], al
push 3
lea eax, [esp + 0x2c]
push eax
jmp 0x4cecaa
push edi
lea eax, [esp + 0x18]
push eax
call fcn.004b6ec5
add esp, 8
mov ebx, 7
test eax, eax
jne 0x4cef25
lea eax, [esp + 0x14]
push eax
call fcn.004b6f2e
add esp, 4
mov edi, eax
xor ebx, ebx
inc ebx
movzx eax, byte [edi]
cmp eax, 0x25
je 0x4ced3e
mov edx, ebx
test eax, eax
jne 0x4cedba
jmp 0x4cedc1
mov al, byte [edi + 1]
mov ecx, eax
add cl, 0xd0
cmp cl, 0xa
jb 0x4ced60
movzx ecx, al
lea edx, [ecx - 0x61]
cmp edx, 6
jb 0x4ced60
add ecx, 0xffffffbf
mov edx, ebx
cmp ecx, 5
ja 0x4cedba
mov cl, byte [edi + 2]
mov edx, ecx
add dl, 0xd0
cmp dl, 0xa
jb 0x4ced82
movzx ebp, cl
lea edx, [ebp - 0x61]
cmp edx, 6
jb 0x4ced82
add ebp, 0xffffffbf
mov edx, ebx
cmp ebp, 5
ja 0x4cedba
mov edx, eax
add dl, 0xbf
cmp dl, 0x1a
jb 0x4ced96
add cl, 0xbf
mov edx, ebx
cmp cl, 0x19
ja 0x4cedba
movsx eax, al
push eax
call fcn.004bdddc
add esp, 4
mov byte [edi + 1], al
movsx eax, byte [edi + 2]
push eax
call fcn.004bdddc
add esp, 4
mov byte [edi + 2], al
mov edx, 3
add edi, edx
jmp 0x4ced27
lea eax, [esp + 0x14]
push eax
call fcn.004b6f2e
add esp, 4
mov ebp, eax
cmp byte [esp + 8], 0
je 0x4cee5e
mov edi, dword [esi + 0x20]
test edi, edi
je 0x4cee5e
push edi
call fcn.007149b0
add esp, 4
test eax, eax
je 0x4cee5e
mov ebx, eax
mov al, byte [edi + eax - 1]
mov byte [esp], al
lea edi, [esp + 0x28]
push 0x7a1200
push edi
call fcn.004b6d64
add esp, 8
push ebx
push dword [esi + 0x20]
push edi
call fcn.004b6e00
add esp, 0xc
test eax, eax
jne 0x4cee47
cmp byte [esp], 0x26
je 0x4cee35
push 1
push 0x79a116
push edi
call fcn.004b6e00
add esp, 0xc
test eax, eax
jne 0x4cee47
push ebp
push edi
call fcn.004b6ec5
add esp, 8
test eax, eax
je 0x4cef36
lea eax, [esp + 0x14]
push eax
call fcn.004b6d7a
add esp, 4
mov ebx, 7
jmp 0x4cef25
cmp dword [esp + 0x50], 5
jne 0x4cee7a
push ebp
call fcn.007149b0
add esp, 4
bt dword [esp + 0x58], 0xa
jae 0x4ceec0
test eax, eax
jne 0x4ceec0
mov edi, dword [esp + 4]
push dword [edi]
call dword [0x7ec0e0]
add esp, 4
mov dword [edi], ebp
xor ebx, ebx
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4cef25
mov dword [esi + 0x28], eax
jmp 0x4cef25
mov al, bh
and al, 1
mov dword [esp + 8], eax
lea eax, [esi + 0x20]
mov dword [esp + 4], eax
xor ebx, ebx
mov dword [esp], ecx
mov eax, ecx
mov dword [esp + 0xc], eax
jmp 0x4cebc1
test eax, eax
je 0x4ceed5
mov ecx, esi
mov edx, ebp
push eax
call fcn.004cf856
add esp, 4
test eax, eax
je 0x4cee7a
lea eax, [esp + 0x14]
push eax
call fcn.004b6d7a
add esp, 4
mov ebx, 0x15
jmp 0x4cef25
mov ecx, dword [esp + 0x14]
cmp byte [ecx], 0
mov ebx, 4
jne 0x4cef25
mov dword [esp + 0x10], eax
lea eax, [esi + 0x18]
mov dword [esp + 4], eax
mov dword [esp + 8], 0
xor ebx, ebx
mov dword [esp + 0xc], 0
mov dword [esp], 0
jmp 0x4cebc9
mov ebx, 3
mov eax, ebx
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, 5
jmp 0x4cef25
lea eax, [esp + 0x14]
push eax
call fcn.004b6d7a
add esp, 4
mov esi, dword [esp + 4]
push dword [esi]
call dword [0x7ec0e0]
add esp, 4
push edi
call fcn.004b6f2e
add esp, 4
mov dword [esi], eax
jmp 0x4cea17
mov ecx, dword [esp + 0x14]
mov edx, edi
call fcn.004cf677
mov edi, eax
push dword [esp + 0x14]
call dword [0x7ec0e0]
add esp, 4
test edi, edi
je 0x4cee54
mov ecx, edi
mov edx, esi
push ebx
call fcn.004cef9f
add esp, 4
mov ebx, eax
push edi
call dword [0x7ec0e0]
add esp, 4
jmp 0x4cef25