Function at 0x478130
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x14
push ebx
push ebp
mov ebp, dword [esp + 0x24]
mov eax, ecx
push esi
push edi
mov edi, dword [esp + 0x38]
mov ebx, edx
mov esi, dword [eax]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x20], eax
mov eax, dword [edi]
mov ecx, eax
mov dword [esp + 0x10], esi
cmp byte [esi], 0x28
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], 0
jne 0x4782cd
mov al, byte [esi + 1]
cmp al, 0x2a
jne 0x478181
add esi, 2
mov dword [esp + 0x10], esi
jmp 0x4782cd
cmp al, 0x3f
je 0x4781a0
mov eax, ecx
inc eax
mov dword [edi], eax
test edx, edx
jne 0x478196
cmp eax, ebp
je 0x478511
inc esi
mov dword [esp + 0x10], esi
jmp 0x4782cd
mov al, byte [esi + 2]
lea ecx, [esi + 2]
cmp al, 0x7c
jne 0x4781be
add esi, 3
mov dword [esp + 0x1c], 1
mov dword [esp + 0x10], esi
jmp 0x4782c9
cmp al, 0x23
jne 0x4781f7
add esi, 3
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x478508
cmp al, 0x29
je 0x478508
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x4781d3
mov eax, dword [esp + 0x20]
pop edi
mov dword [eax], esi
or eax, 0xffffffff
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov esi, ecx
mov dword [esp + 0x10], esi
cmp al, 0x28
jne 0x478240
cmp byte [esi + 1], 0x3f
je 0x4782c9
mov al, byte [esi]
test al, al
je 0x4782c9
cmp al, 0x29
je 0x478229
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x478215
jmp 0x4782c9
cmp byte [esi], 0
mov ecx, dword [esp + 0x14]
je 0x4782cd
inc esi
mov dword [esp + 0x10], esi
jmp 0x4782cd
cmp byte [esi], 0x50
jne 0x47824a
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
cmp cl, 0x3c
jne 0x47825c
mov al, byte [esi + 1]
cmp al, 0x21
je 0x47825c
cmp al, 0x3d
jne 0x478261
cmp cl, 0x27
jne 0x4782c9
mov eax, dword [esp + 0x18]
inc eax
mov dword [edi], eax
test edx, edx
jne 0x478274
cmp eax, ebp
je 0x478511
inc esi
movzx ecx, cl
cmp ecx, 0x3c
mov dword [esp + 0x10], esi
mov eax, 0x3e
mov edx, esi
cmove ecx, eax
movzx eax, byte [esi]
cmp eax, ecx
je 0x47829c
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
cmp eax, ecx
jne 0x478290
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x4782c9
mov eax, esi
sub eax, edx
cmp ebp, eax
jne 0x4782c9
push ebp
push edx
push ecx
call fcn.00487b90
add esp, 0xc
test eax, eax
jne 0x4782c5
mov eax, dword [edi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
cmp esi, dword [ebx + 0x1c]
jae 0x478508
mov ebp, dword [esp + 0x34]
mov al, byte [esi]
mov edx, dword [esp + 0x30]
cmp al, 0x5c
jne 0x47832a
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x478508
cmp al, 0x51
jne 0x4783f4
jmp 0x478300
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x478508
cmp al, 0x5c
jne 0x478300
test al, al
je 0x478508
inc esi
mov dword [esp + 0x10], esi
cmp byte [esi], 0x45
jne 0x478300
jmp 0x4783f4
cmp al, 0x5b
jne 0x47840b
xor edi, edi
mov al, byte [esi + 1]
cmp al, 0x5c
jne 0x47836a
add esi, 2
cmp byte [esi], 0x45
jne 0x478349
mov dword [esp + 0x10], esi
jmp 0x478334
push 3
push 0x4a40cc
push esi
call fcn.00487b90
mov esi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x47837e
add esi, 4
mov dword [esp + 0x10], esi
jmp 0x478334
test edi, edi
jne 0x47837e
cmp al, 0x5e
jne 0x47837e
inc esi
mov edi, 1
mov dword [esp + 0x10], esi
jmp 0x478334
cmp byte [esi + 1], 0x5d
lea eax, [esi + 1]
jne 0x478391
test dword [ebx + 0x4c], 0x2000000
cmove esi, eax
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x5d
je 0x4783f0
lea esp, [esp]
test al, al
je 0x47850e
cmp al, 0x5c
jne 0x4783e5
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x478508
cmp al, 0x51
jne 0x4783e5
nop
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x478508
cmp al, 0x5c
jne 0x4783c0
test al, al
je 0x478508
inc esi
mov dword [esp + 0x10], esi
cmp byte [esi], 0x45
jne 0x4783c0
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x5d
jne 0x4783a0
mov edi, dword [esp + 0x38]
inc esi
mov dword [esp + 0x10], esi
cmp esi, dword [ebx + 0x1c]
jae 0x478508
mov ecx, dword [esp + 0x14]
jmp 0x4782da
test edx, edx
je 0x4784a1
cmp al, 0x23
jne 0x4784a1
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
test cl, cl
je 0x478508
lea ebx, [ebx]
mov edx, dword [ebx + 0x60]
test edx, edx
je 0x478467
mov ecx, dword [ebx + 0x1c]
cmp esi, ecx
jae 0x478485
push ebp
lea eax, [ebx + 0x64]
push eax
push ecx
mov ecx, esi
call fcn.00483f40
add esp, 0xc
test eax, eax
je 0x478485
mov eax, dword [ebx + 0x64]
dec esi
add esi, eax
mov dword [esp + 0x10], esi
cmp byte [esi], 0
je 0x478508
jmp 0x4783f4
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x64]
sub eax, edx
cmp esi, eax
ja 0x478485
cmp cl, byte [ebx + 0x68]
jne 0x478485
cmp edx, 1
je 0x478452
mov al, byte [esi + 1]
cmp al, byte [ebx + 0x69]
je 0x478452
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
test cl, cl
jne 0x478430
mov eax, dword [esp + 0x20]
pop edi
mov dword [eax], esi
or eax, 0xffffffff
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
cmp al, 0x28
jne 0x4784d0
push edi
push ebp
push edx
push dword [esp + 0x38]
mov edx, ebx
lea ecx, [esp + 0x20]
push dword [esp + 0x38]
call fcn.00478130
add esp, 0x14
test eax, eax
jg 0x478511
mov esi, dword [esp + 0x10]
cmp byte [esi], 0
je 0x478508
jmp 0x4783f4
cmp al, 0x29
je 0x4784fb
cmp al, 0x7c
jne 0x4783f4
cmp dword [esp + 0x1c], 0
je 0x4783f4
cmp dword [edi], ecx
mov eax, dword [esp + 0x18]
cmovg ecx, dword [edi]
mov dword [esp + 0x14], ecx
mov dword [edi], eax
jmp 0x4783f4
cmp dword [esp + 0x1c], 0
je 0x478508
cmp dword [edi], ecx
jge 0x478508
mov dword [edi], ecx
mov eax, dword [esp + 0x20]
mov dword [eax], esi
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret