Function at 0x4ec230
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a561b
mov eax, dword fs:[0]
push eax
mov eax, 0x1fd0
call fcn.0059f510
mov eax, dword [0x5f300c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 0x18]
push 0x80
mov dword [ebp - 0x1fd0], 0
mov dword [ebp - 0x1fcc], 0
mov dword [ebp - 0x1fdc], 0x80
mov byte [ebp - 0x1fd8], 0
call fcn.0059e4c2
mov ebx, eax
add esp, 4
mov ecx, 0x20
mov dword [ebp - 0x1fd4], ebx
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov ecx, str.__.:___
mov dl, 0x2d
movzx eax, dl
lea ecx, [ecx + 1]
mov byte [eax + ebx], 1
mov dl, byte [ecx]
test dl, dl
jne 0x4ec2b1
push esi
lea ecx, [ebp - 0x1f7c]
mov dword [ebp - 4], 0
call fcn.00472850
push 0xffffffffffffffff
lea eax, [ebp - 0x1f7c]
push eax
push dword [ebp + 0x14]
lea ecx, [ebp - 0x1fc8]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.00476050
mov al, 1
mov byte [ebp - 0x1f7d], al
xor al, al
mov byte [ebp - 0x1f7e], al
mov eax, dword [ebp - 0x1fac]
cmp eax, dword [ebp - 0x1fc0]
jae 0x4ecbd1
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
lea esp, [esp]
cmp byte [ebp - 0x1f9c], 0
je 0x4ec365
mov esi, dword [ebp - 0x1fac]
add esi, 0xfffffffd
cmp esi, dword [ebp - 0xfd4]
jl 0x4ec342
cmp esi, dword [ebp - 0xfd0]
jl 0x4ec34e
push esi
lea ecx, [ebp - 0x1f7c]
call fcn.004727c0
sub esi, dword [ebp - 0xfd4]
cmp byte [ebp + esi - 0x1f78], 0x5c
sete al
mov byte [ebp - 0x1f7d], al
mov eax, dword [ebp - 0x1f98]
dec eax
cmp eax, 0xb
ja case.default.0x4ec375
jmp dword [eax*4 + 0x4ecc54]
cmp byte [ebp - 0x1f9b], 0
je case.default.0x4ec375
mov esi, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], esi
push dword [ebp - 0x1f98]
mov ecx, dword [ebp - 0x1fc8]
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
mov dword [ebp - 0x1f98], 0
jmp 0x4ec7aa
cmp dword [ebp - 0x1f90], 0x22
jne 0x4ec405
lea ecx, [ebp - 0x1fc8]
call fcn.004761d0
mov ecx, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], ecx
push dword [ebp - 0x1f98]
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov dword [ebp - 0x1f98], 0
jmp 0x4ec7aa
cmp dword [ebp - 0x1f90], 0x5c
jne 0x4ec451
mov esi, dword [ebp - 0x1fac]
mov eax, dword [ebp - 0x1f98]
cmp dword [ebp - 0x1fbc], esi
mov ecx, dword [ebp - 0x1fc8]
push eax
mov dword [ebp - 0x1fcc], eax
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
lea ecx, [ebp - 0x1fc8]
mov dword [ebp - 0x1f98], 8
call fcn.004761d0
jmp 0x4ec488
cmp dword [ebp - 0x1f90], 0x7b
jne 0x4ec488
mov edx, dword [ebp - 0x1fac]
lea ecx, [ebp - 0x1f7c]
call fcn.004ebfb0
test al, al
je 0x4ec488
mov eax, dword [ebp - 0x1f98]
lea ecx, [ebp - 0x1fc8]
push 0xa
mov dword [ebp - 0x1fd0], eax
call fcn.00476250
cmp dword [ebp - 0x1f98], 3
jne case.default.0x4ec375
cmp dword [ebp - 0x1f90], 0x25
jne 0x4ecb16
push dword [ebp - 0x1f88]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isdigit]
add esp, 4
test eax, eax
jne 0x4ec4c2
cmp dword [ebp - 0x1f88], 0x2a
jne case.default.0x4ec375
mov ecx, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], ecx
push dword [ebp - 0x1f98]
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov dword [ebp - 0x1f98], 0xb
jmp 0x4ecb16
lea ecx, [ebp - 0x1fc8]
call fcn.004761d0
mov ecx, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], ecx
push dword [ebp - 0x1f98]
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
cmp dword [ebp - 0x1f90], 0x22
mov dword [ebp - 0x1f98], 3
jne 0x4ecb16
jmp 0x4ec3c6
cmp dword [ebp - 0x1f90], 0x3a
jne case.default.0x4ec375
mov esi, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], esi
push dword [ebp - 0x1f98]
mov ecx, dword [ebp - 0x1fc8]
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
xor al, al
mov dword [ebp - 0x1f98], 0
mov byte [ebp - 0x1f7e], al
jmp 0x4ec7b0
cmp dword [ebp - 0x1f90], 0x5d
mov esi, dword [ebp - 0x1fac]
jne 0x4ec5af
mov edx, esi
lea ecx, [ebp - 0x1f7c]
call fcn.004ebf00
test al, al
jne 0x4ec3c6
cmp dword [ebp - 0x1f90], 0x7b
jne case.default.0x4ec375
mov edx, esi
lea ecx, [ebp - 0x1f7c]
call fcn.004ebfb0
test al, al
je case.default.0x4ec375
mov ecx, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], ecx
mov eax, dword [ebp - 0x1f98]
push eax
mov dword [ebp - 0x1fd0], eax
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov dword [ebp - 0x1f98], 9
jmp 0x4ecb16
cmp dword [ebp - 0x1f90], 0x22
jne 0x4ec64b
mov esi, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], esi
push dword [ebp - 0x1f98]
mov ecx, dword [ebp - 0x1fc8]
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
mov eax, dword [ebp - 0x1fcc]
mov dword [ebp - 0x1f98], eax
jmp 0x4ec3c6
cmp dword [ebp - 0x1f90], 0x5c
je 0x4ec792
mov esi, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], esi
push dword [ebp - 0x1f98]
mov ecx, dword [ebp - 0x1fc8]
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
mov eax, dword [ebp - 0x1fcc]
mov dword [ebp - 0x1f98], eax
mov dword [ebp - 0x1fcc], 0
jmp case.default.0x4ec375
cmp dword [ebp - 0x1f90], 0x7d
jne 0x4ec6e7
lea ecx, [ebp - 0x1fc8]
call fcn.004761d0
mov ecx, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], ecx
push dword [ebp - 0x1f98]
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov eax, dword [ebp - 0x1fd0]
mov dword [ebp - 0x1f98], eax
mov dword [ebp - 0x1fd0], 0
cmp dword [ebp - 0x1f90], 0x22
jne 0x4ec70d
mov eax, dword [ebp - 0x1f98]
cmp eax, 2
je 0x4ec3c6
cmp eax, 3
jne case.default.0x4ec375
jmp 0x4ec3c6
cmp dword [ebp - 0x1f90], 0x5d
jne 0x4ec743
mov edx, dword [ebp - 0x1fac]
lea ecx, [ebp - 0x1f7c]
call fcn.004ebf00
test al, al
je 0x4ec743
mov eax, dword [ebp - 0x1f98]
cmp eax, 6
je 0x4ec3c6
cmp eax, 7
je 0x4ec3c6
cmp dword [ebp - 0x1f90], 0x5c
jne case.default.0x4ec375
mov eax, dword [ebp - 0x1f98]
cmp eax, 2
je 0x4ec75c
cmp eax, 3
jne case.default.0x4ec375
mov esi, dword [ebp - 0x1fac]
mov eax, dword [ebp - 0x1f98]
cmp dword [ebp - 0x1fbc], esi
mov ecx, dword [ebp - 0x1fc8]
push eax
mov dword [ebp - 0x1fcc], eax
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
mov dword [ebp - 0x1f98], 8
lea ecx, [ebp - 0x1fc8]
call fcn.004761d0
cmp dword [ebp - 0x1f98], 0
jne 0x4ecb16
mov al, byte [ebp - 0x1f7e]
cmp dword [ebp - 0x1f90], 0x3b
mov esi, dword [ebp - 0x1fac]
jne 0x4ec7e9
cmp dword [ebp - 0x1fbc], esi
mov ecx, dword [ebp - 0x1fc8]
sbb eax, eax
neg eax
inc eax
push 0
sub esi, eax
push esi
call fcn.00475ef0
mov dword [ebp - 0x1f98], 1
jmp 0x4ecaac
ret
add al, byte [eax]
invalid
cmp dword [ebp - 0x1f90], 0x22
jne 0x4ec949
xor bh, bh
jmp 0x4ec800
inc esi
cmp esi, dword [ebp - 0xfd4]
jl 0x4ec811
cmp esi, dword [ebp - 0xfd0]
jl 0x4ec82d
push esi
lea ecx, [ebp - 0x1f7c]
call fcn.004727c0
cmp esi, dword [ebp - 0xfd4]
jl 0x4ec83e
cmp esi, dword [ebp - 0xfd0]
jge 0x4ec83e
mov eax, esi
sub eax, dword [ebp - 0xfd4]
mov bl, byte [ebp + eax - 0x1f78]
jmp 0x4ec840
xor bl, bl
lea edi, [esi + 1]
cmp edi, dword [ebp - 0xfd4]
jl 0x4ec853
cmp edi, dword [ebp - 0xfd0]
jl 0x4ec86f
push edi
lea ecx, [ebp - 0x1f7c]
call fcn.004727c0
cmp edi, dword [ebp - 0xfd4]
jl 0x4ec87e
cmp edi, dword [ebp - 0xfd0]
jge 0x4ec87e
sub edi, dword [ebp - 0xfd4]
mov al, byte [ebp + edi - 0x1f78]
jmp 0x4ec880
xor al, al
cmp bl, 0xd
jne 0x4ec893
cmp al, 0xa
je 0x4ec898
mov al, 1
test bh, bh
je 0x4ec89c
xor bh, bh
jmp 0x4ec8ab
cmp bl, 0xa
je 0x4ec889
xor al, al
jmp 0x4ec88b
cmp bl, 0x5c
sete bh
cmp bl, 0x22
je 0x4ec8f3
test bl, bl
je 0x4ec8b3
test al, al
je 0x4ec800
mov ecx, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], ecx
push dword [ebp - 0x1f98]
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov ebx, dword [ebp - 0x1fd4]
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
mov dword [ebp - 0x1f98], 3
jmp 0x4ecaac
push 0x3d
mov edx, esi
lea ecx, [ebp - 0x1f7c]
call fcn.004ebe20
add esp, 4
test al, al
je 0x4ec8b3
mov ecx, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], ecx
push dword [ebp - 0x1f98]
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov ebx, dword [ebp - 0x1fd4]
mov dword [ebp - 0x1f98], 2
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
jmp 0x4ecaac
cmp dword [ebp - 0x1f90], 0x5b
jne 0x4ec9c8
mov edx, dword [ebp - 0x1fac]
lea ecx, [ebp - 0x1f7c]
push 0x2d
call fcn.004ebe20
mov ecx, dword [ebp - 0x1fac]
add esp, 4
push dword [ebp - 0x1f98]
test al, al
je 0x4ec9a0
cmp dword [ebp - 0x1fbc], ecx
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov dword [ebp - 0x1f98], 7
jmp 0x4ecaac
cmp dword [ebp - 0x1fbc], ecx
sbb eax, eax
neg eax
inc eax
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0x1fc8]
call fcn.00475ef0
mov dword [ebp - 0x1f98], 6
jmp 0x4ecaac
cmp dword [ebp - 0x1f90], 0x3d
jne 0x4ec9e5
mov cl, 1
mov byte [ebp - 0x1f7e], 1
mov byte [ebp - 0x1f7d], cl
jmp 0x4ecad6
push dword [ebp - 0x1f90]
test al, al
je 0x4eca88
call edi
add esp, 4
test eax, eax
je 0x4ecaac
push dword [ebp - 0x1f94]
call edi
add esp, 4
test eax, eax
jne 0x4ecaac
xor edi, edi
inc esi
inc edi
cmp esi, dword [ebp - 0xfd4]
jl 0x4eca27
cmp esi, dword [ebp - 0xfd0]
jl 0x4eca4b
push esi
lea ecx, [ebp - 0x1f7c]
call fcn.004727c0
cmp esi, dword [ebp - 0xfd4]
jl 0x4ec93e
cmp esi, dword [ebp - 0xfd0]
jge 0x4ec93e
mov eax, esi
sub eax, dword [ebp - 0xfd4]
mov al, byte [ebp + eax - 0x1f78]
cmp al, 0x3a
je 0x4eca73
test al, al
je 0x4ec93e
cmp edi, 0xa
jl 0x4eca15
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
jmp 0x4ecaac
push 5
lea ecx, [ebp - 0x1fc8]
call fcn.00476250
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
jmp 0x4ecaac
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isxdigit]
add esp, 4
test eax, eax
je 0x4ecaac
mov cl, byte [ebp - 0x1f7d]
test cl, cl
je 0x4ecab2
push 4
lea ecx, [ebp - 0x1fc8]
call fcn.00476250
mov cl, byte [ebp - 0x1f7d]
cmp dword [ebp - 0x1f90], 0x40
jne 0x4ecac5
mov cl, 1
mov byte [ebp - 0x1f7d], cl
jmp 0x4ecad6
mov eax, dword [ebp - 0x1f90]
test eax, eax
js 0x4ecb16
cmp eax, 0x80
jge 0x4ecb16
mov eax, dword [ebp - 0x1f90]
mov al, byte [ebx + eax]
test al, al
je 0x4ecb16
test cl, cl
je 0x4ecb16
mov esi, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], esi
push dword [ebp - 0x1f98]
mov ecx, dword [ebp - 0x1fc8]
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
mov dword [ebp - 0x1f98], 0xc
mov eax, dword [ebp - 0x1fac]
cmp eax, dword [ebp - 0x1fc0]
jae 0x4ecb98
mov al, byte [ebp - 0x1f9b]
mov byte [ebp - 0x1f9c], al
test al, al
je 0x4ecb5b
mov esi, dword [ebp - 0x1fa8]
mov eax, dword [ebp - 0x1fc8]
inc esi
mov dword [ebp - 0x1fa8], esi
mov edx, dword [eax]
mov eax, dword [edx]
mov ecx, dword [eax + 0x18]
lea eax, [esi + 1]
push eax
push edx
call ecx
mov dword [ebp - 0x1fa0], eax
mov eax, dword [ebp - 0x1f90]
lea ecx, [ebp - 0x1fc8]
mov dword [ebp - 0x1f94], eax
mov eax, dword [ebp - 0x1f8c]
add dword [ebp - 0x1fac], eax
mov eax, dword [ebp - 0x1f88]
mov dword [ebp - 0x1f90], eax
mov eax, dword [ebp - 0x1f84]
mov dword [ebp - 0x1f8c], eax
call fcn.00475fb0
jmp 0x4ecbbf
mov word [ebp - 0x1f9c], 0x100
mov dword [ebp - 0x1f94], 0x20
mov dword [ebp - 0x1f90], 0x20
mov dword [ebp - 0x1f88], 0x20
mov eax, dword [ebp - 0x1fac]
cmp eax, dword [ebp - 0x1fc0]
jb 0x4ec320
mov esi, dword [ebp - 0x1fac]
cmp dword [ebp - 0x1fbc], esi
push dword [ebp - 0x1f98]
mov ecx, dword [ebp - 0x1fc8]
sbb eax, eax
neg eax
inc eax
sub esi, eax
push esi
call fcn.00475ef0
mov esi, dword [ebp - 0x1fc8]
mov edi, dword [esi + 0x1f5c]
test edi, edi
jle 0x4ecc2c
mov ecx, dword [esi]
lea eax, [esi + 0xfbc]
push eax
push edi
push ecx
mov edx, dword [ecx]
call dword [edx + 0x34]
mov eax, dword [esi + 0x1f5c]
add dword [esi + 0x1f64], eax
mov dword [esi + 0x1f5c], 0
push ebx
call fcn.0059e230
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0059df64
mov esp, ebp
pop ebp
ret 0x14