Function at 0x477740
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0xc
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push ebx
push ebp
mov ebp, dword [esp + 0x2c]
mov eax, dword [ebp]
push esi
mov esi, dword [esp + 0x24]
mov edx, eax
mov dword [esp + 0xc], ecx
cmp byte [ecx], 0x28
push edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x14], 0
jne 0x4778db
mov dl, byte [ecx + 1]
cmp dl, 0x2a
jne 0x47778f
add ecx, 2
mov dword [esp + 0x10], ecx
jmp 0x4778db
cmp dl, 0x3f
je 0x4777ae
inc eax
mov dword [ebp], eax
test esi, esi
jne 0x4777a4
cmp eax, edi
je 0x477aaf
inc ecx
mov dword [esp + 0x10], ecx
jmp 0x4778db
mov dl, byte [ecx + 2]
cmp dl, 0x7c
jne 0x4777ca
add ecx, 3
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], 1
jmp 0x4778db
cmp dl, 0x23
jne 0x477804
add ecx, 3
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
je 0x477aa6
cmp al, 0x29
je 0x477aa6
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
jne 0x4777e0
mov edx, dword [esp + 0x20]
pop edi
pop esi
pop ebp
mov dword [edx], ecx
or eax, 0xffffffff
pop ebx
add esp, 0xc
ret
add ecx, 2
mov dword [esp + 0x10], ecx
cmp dl, 0x28
jne 0x477857
cmp byte [ecx + 1], 0x3f
je 0x4778db
mov al, byte [ecx]
test al, al
je 0x477aa6
cmp al, 0x29
je 0x477844
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
jne 0x477824
mov edx, dword [esp + 0x20]
pop edi
pop esi
pop ebp
mov dword [edx], ecx
or eax, 0xffffffff
pop ebx
add esp, 0xc
ret
cmp byte [ecx], 0
je 0x477aa6
inc ecx
mov dword [esp + 0x10], ecx
jmp 0x4778db
cmp byte [ecx], 0x50
jne 0x477861
inc ecx
mov dword [esp + 0x10], ecx
mov dl, byte [ecx]
cmp dl, 0x3c
jne 0x477875
mov bl, byte [ecx + 1]
cmp bl, 0x21
je 0x477875
cmp bl, 0x3d
jne 0x47787a
cmp dl, 0x27
jne 0x4778db
inc eax
mov dword [ebp], eax
test esi, esi
jne 0x47788a
cmp eax, edi
je 0x477aaf
movzx eax, byte [ecx]
inc ecx
mov dword [esp + 0x10], ecx
cmp eax, 0x3c
jne 0x47789c
mov eax, 0x3e
movzx ebx, byte [ecx]
mov edx, ecx
cmp ebx, eax
je 0x4778b1
inc ecx
mov dword [esp + 0x10], ecx
movzx ebx, byte [ecx]
cmp ebx, eax
jne 0x4778a5
test esi, esi
je 0x4778db
mov eax, ecx
sub eax, edx
cmp edi, eax
jne 0x4778db
push edi
push edx
push esi
call fcn.00590608
add esp, 0xc
test eax, eax
jne 0x4778d7
mov eax, dword [ebp]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret
mov ecx, dword [esp + 0x10]
mov al, byte [ecx]
test al, al
je 0x477aa6
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x24]
jmp 0x4778f4
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
cmp al, 0x5c
jne 0x47793d
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
je 0x477aa6
cmp al, 0x51
jne 0x477a77
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
je 0x477aa6
cmp al, 0x5c
jne 0x477913
test al, al
je 0x477aa6
inc ecx
mov dword [esp + 0x10], ecx
cmp byte [ecx], 0x45
jne 0x477913
jmp 0x477a77
cmp al, 0x5b
jne 0x477a02
xor esi, esi
mov al, byte [ecx + 1]
cmp al, 0x5c
jne 0x47797d
add ecx, 2
cmp byte [ecx], 0x45
jne 0x47795c
mov dword [esp + 0x10], ecx
jmp 0x477947
push 3
push 0x5aef58
push ecx
call fcn.00590608
mov ecx, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x477991
add ecx, 4
mov dword [esp + 0x10], ecx
jmp 0x477947
test esi, esi
jne 0x477991
cmp al, 0x5e
jne 0x477991
inc ecx
mov esi, 1
mov dword [esp + 0x10], ecx
jmp 0x477947
cmp byte [ecx + 1], 0x5d
jne 0x4779a1
test dword [ebx + 0x44], 0x2000000
jne 0x4779a1
inc ecx
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
cmp al, 0x5d
je 0x477a77
test al, al
je 0x477aac
cmp al, 0x5c
jne 0x4779f5
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
je 0x477aa6
cmp al, 0x51
jne 0x4779f5
nop
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
je 0x477aa6
cmp al, 0x5c
jne 0x4779d0
test al, al
je 0x477aa6
inc ecx
mov dword [esp + 0x10], ecx
cmp byte [ecx], 0x45
jne 0x4779d0
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
cmp al, 0x5d
jne 0x4779b0
jmp 0x477a77
test edi, edi
je 0x477a2d
cmp al, 0x23
jne 0x477a2d
lea ebx, [ebx]
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
je 0x477aa6
cmp al, 0xa
jne 0x477a10
test al, al
je 0x477aa6
jmp 0x477a77
cmp al, 0x28
jne 0x477a56
mov ecx, dword [esp + 0x2c]
push ebp
push edi
push ecx
push esi
lea edx, [esp + 0x20]
push ebx
push edx
call fcn.00477740
add esp, 0x18
test eax, eax
jg 0x477aaf
mov ecx, dword [esp + 0x10]
cmp byte [ecx], 0
je 0x477aa6
jmp 0x477a77
cmp al, 0x29
je 0x477a97
cmp al, 0x7c
jne 0x477a77
cmp dword [esp + 0x14], 0
je 0x477a77
mov eax, dword [ebp]
cmp eax, edx
jle 0x477a70
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x18]
mov dword [ebp], eax
inc ecx
mov dword [esp + 0x10], ecx
mov al, byte [ecx]
test al, al
jne 0x4778f0
mov edx, dword [esp + 0x20]
pop edi
pop esi
pop ebp
mov dword [edx], ecx
or eax, 0xffffffff
pop ebx
add esp, 0xc
ret
cmp dword [esp + 0x14], 0
je 0x477aa6
cmp dword [ebp], edx
jge 0x477aa6
mov dword [ebp], edx
mov edx, dword [esp + 0x20]
mov dword [edx], ecx
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret