Function at 0x479610
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 0x4797ad
mov al, byte [esi + 1]
cmp al, 0x2a
jne 0x479661
add esi, 2
mov dword [esp + 0x10], esi
jmp 0x4797ad
cmp al, 0x3f
je 0x479680
mov eax, ecx
inc eax
mov dword [edi], eax
test edx, edx
jne 0x479676
cmp eax, ebp
je 0x4799f1
inc esi
mov dword [esp + 0x10], esi
jmp 0x4797ad
mov al, byte [esi + 2]
lea ecx, [esi + 2]
cmp al, 0x7c
jne 0x47969e
add esi, 3
mov dword [esp + 0x1c], 1
mov dword [esp + 0x10], esi
jmp 0x4797a9
cmp al, 0x23
jne 0x4796d7
add esi, 3
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x4799e8
cmp al, 0x29
je 0x4799e8
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x4796b3
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 0x479720
cmp byte [esi + 1], 0x3f
je 0x4797a9
mov al, byte [esi]
test al, al
je 0x4797a9
cmp al, 0x29
je 0x479709
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x4796f5
jmp 0x4797a9
cmp byte [esi], 0
mov ecx, dword [esp + 0x14]
je 0x4797ad
inc esi
mov dword [esp + 0x10], esi
jmp 0x4797ad
cmp byte [esi], 0x50
jne 0x47972a
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
cmp cl, 0x3c
jne 0x47973c
mov al, byte [esi + 1]
cmp al, 0x21
je 0x47973c
cmp al, 0x3d
jne 0x479741
cmp cl, 0x27
jne 0x4797a9
mov eax, dword [esp + 0x18]
inc eax
mov dword [edi], eax
test edx, edx
jne 0x479754
cmp eax, ebp
je 0x4799f1
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 0x47977c
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
cmp eax, ecx
jne 0x479770
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x4797a9
mov eax, esi
sub eax, edx
cmp ebp, eax
jne 0x4797a9
push ebp
push edx
push ecx
call fcn.00489070
add esp, 0xc
test eax, eax
jne 0x4797a5
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 0x4799e8
mov ebp, dword [esp + 0x34]
mov al, byte [esi]
mov edx, dword [esp + 0x30]
cmp al, 0x5c
jne 0x47980a
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x4799e8
cmp al, 0x51
jne 0x4798d4
jmp 0x4797e0
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x4799e8
cmp al, 0x5c
jne 0x4797e0
test al, al
je 0x4799e8
inc esi
mov dword [esp + 0x10], esi
cmp byte [esi], 0x45
jne 0x4797e0
jmp 0x4798d4
cmp al, 0x5b
jne 0x4798eb
xor edi, edi
mov al, byte [esi + 1]
cmp al, 0x5c
jne 0x47984a
add esi, 2
cmp byte [esi], 0x45
jne 0x479829
mov dword [esp + 0x10], esi
jmp 0x479814
push 3
push 0x4a64bc
push esi
call fcn.00489070
mov esi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x47985e
add esi, 4
mov dword [esp + 0x10], esi
jmp 0x479814
test edi, edi
jne 0x47985e
cmp al, 0x5e
jne 0x47985e
inc esi
mov edi, 1
mov dword [esp + 0x10], esi
jmp 0x479814
cmp byte [esi + 1], 0x5d
lea eax, [esi + 1]
jne 0x479871
test dword [ebx + 0x4c], 0x2000000
cmove esi, eax
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x5d
je 0x4798d0
lea esp, [esp]
test al, al
je 0x4799ee
cmp al, 0x5c
jne 0x4798c5
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x4799e8
cmp al, 0x51
jne 0x4798c5
nop
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x4799e8
cmp al, 0x5c
jne 0x4798a0
test al, al
je 0x4799e8
inc esi
mov dword [esp + 0x10], esi
cmp byte [esi], 0x45
jne 0x4798a0
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x5d
jne 0x479880
mov edi, dword [esp + 0x38]
inc esi
mov dword [esp + 0x10], esi
cmp esi, dword [ebx + 0x1c]
jae 0x4799e8
mov ecx, dword [esp + 0x14]
jmp 0x4797ba
test edx, edx
je 0x479981
cmp al, 0x23
jne 0x479981
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
test cl, cl
je 0x4799e8
lea ebx, [ebx]
mov edx, dword [ebx + 0x60]
test edx, edx
je 0x479947
mov ecx, dword [ebx + 0x1c]
cmp esi, ecx
jae 0x479965
push ebp
lea eax, [ebx + 0x64]
push eax
push ecx
mov ecx, esi
call fcn.00485420
add esp, 0xc
test eax, eax
je 0x479965
mov eax, dword [ebx + 0x64]
dec esi
add esi, eax
mov dword [esp + 0x10], esi
cmp byte [esi], 0
je 0x4799e8
jmp 0x4798d4
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x64]
sub eax, edx
cmp esi, eax
ja 0x479965
cmp cl, byte [ebx + 0x68]
jne 0x479965
cmp edx, 1
je 0x479932
mov al, byte [esi + 1]
cmp al, byte [ebx + 0x69]
je 0x479932
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
test cl, cl
jne 0x479910
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 0x4799b0
push edi
push ebp
push edx
push dword [esp + 0x38]
mov edx, ebx
lea ecx, [esp + 0x20]
push dword [esp + 0x38]
call fcn.00479610
add esp, 0x14
test eax, eax
jg 0x4799f1
mov esi, dword [esp + 0x10]
cmp byte [esi], 0
je 0x4799e8
jmp 0x4798d4
cmp al, 0x29
je 0x4799db
cmp al, 0x7c
jne 0x4798d4
cmp dword [esp + 0x1c], 0
je 0x4798d4
cmp dword [edi], ecx
mov eax, dword [esp + 0x18]
cmovg ecx, dword [edi]
mov dword [esp + 0x14], ecx
mov dword [edi], eax
jmp 0x4798d4
cmp dword [esp + 0x1c], 0
je 0x4799e8
cmp dword [edi], ecx
jge 0x4799e8
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