Function at 0x439589
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov dl, byte [esi]
movzx ecx, dl
xor edi, edi
inc edi
cmp ecx, 0x2e
jg 0x439754
je 0x439736
cmp ecx, 0x26
jg 0x4396a0
je 0x439695
cmp ecx, 0x22
jg 0x439635
je 0x439a1b
cmp ecx, 9
jl 0x439a92
cmp ecx, 0xa
jle 0x43960e
cmp ecx, 0xb
jle 0x439a92
cmp ecx, 0xd
jle 0x43960e
cmp ecx, 0x20
je 0x43960e
cmp ecx, 0x21
jne 0x439a92
cmp byte [esi + 1], 0x3d
mov eax, dword [ebp + 0xc]
push 2
je 0x439603
mov dword [eax], 0x91
jmp 0x43995d
mov dword [eax], 0x44
jmp 0x43995d
movzx eax, byte [esi + 1]
xor edi, edi
inc edi
jmp 0x43961c
inc edi
movzx eax, byte [edi + esi]
push eax
call fcn.004c3d6e
pop ecx
test eax, eax
jne 0x439617
mov ecx, dword [ebp + 0xc]
mov dword [ecx], 0x92
jmp 0x439b82
mov eax, ecx
sub eax, 0x23
je 0x439658
dec eax
je 0x43978f
dec eax
jne 0x439a92
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x53
jmp 0x4396f7
movzx eax, byte [esi + 1]
push eax
mov ebx, edi
call fcn.004c3d18
pop ecx
test eax, eax
je 0x43978f
inc ebx
movzx eax, byte [ebx + esi]
push eax
call fcn.004c3d18
pop ecx
test eax, eax
jne 0x43966d
cmp ebx, edi
jle 0x43978f
mov ecx, dword [ebp + 0xc]
mov eax, ebx
mov dword [ecx], 0x80
jmp 0x439b84
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4b
jmp 0x4396f7
mov eax, ecx
sub eax, 0x27
je 0x439a1b
dec eax
je 0x43972b
dec eax
je 0x439720
dec eax
je 0x439715
dec eax
je 0x43970a
dec eax
je 0x4396ff
dec eax
jne 0x439a92
cmp byte [esi + 1], 0x2d
jne 0x4396ee
movzx eax, byte [esi + 2]
push 2
pop edx
jmp 0x4396da
cmp eax, 0xa
je 0x4396de
inc edx
movzx eax, byte [edx + esi]
test eax, eax
jne 0x4396d0
mov ecx, dword [ebp + 0xc]
mov dword [ecx], 0x94
mov eax, edx
jmp 0x439b84
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x50
xor eax, eax
inc eax
jmp 0x439b84
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x16
jmp 0x4396f7
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4f
jmp 0x4396f7
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x51
jmp 0x4396f7
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x14
jmp 0x4396f7
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x13
jmp 0x4396f7
movzx eax, byte [esi + 1]
push eax
call fcn.004c3d18
pop ecx
test eax, eax
jne 0x4397e9
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x71
jmp 0x4396f7
cmp ecx, 0x3f
jg 0x4399b6
je 0x43998e
cmp ecx, 0x3b
jg 0x4398f1
je 0x4398e4
cmp ecx, 0x2f
je 0x43989e
jle 0x439a92
cmp ecx, 0x39
jle 0x4397e9
cmp ecx, 0x3a
jne 0x439a92
mov edx, dword [ebp + 0xc]
xor ecx, ecx
mov dword [edx], 0x81
movzx eax, byte [esi + 1]
mov dword [ebp + 8], ecx
test eax, eax
je 0x439b7c
test al, al
js 0x439b38
cmp eax, 0x1f
jle 0x4397c3
cmp byte [eax + 0x4fdc60], 0
jne 0x439b38
cmp eax, 0x28
jne 0x4397d0
test ecx, ecx
jg 0x439b4b
cmp eax, 0x3a
jne 0x439b78
cmp byte [esi + edi + 1], al
jne 0x439b78
inc edi
jmp 0x439b3c
mov ebx, dword [ebp + 0xc]
xor edi, edi
mov dword [ebx], 0x7d
movzx eax, byte [esi]
jmp 0x4397fe
inc edi
movzx eax, byte [edi + esi]
push eax
call fcn.004c3d18
pop ecx
test eax, eax
jne 0x4397f9
cmp byte [edi + esi], 0x2e
jne 0x439825
inc edi
movzx eax, byte [edi + esi]
push eax
call fcn.004c3d18
pop ecx
test eax, eax
jne 0x43980f
mov dword [ebx], 0x7e
mov al, byte [edi + esi]
cmp al, 0x65
je 0x439830
cmp al, 0x45
jne 0x439877
movzx eax, byte [edi + esi + 1]
push eax
call fcn.004c3d18
pop ecx
test eax, eax
jne 0x43985c
mov al, byte [edi + esi + 1]
cmp al, 0x2b
je 0x43984c
cmp al, 0x2d
jne 0x439877
movzx eax, byte [edi + esi + 2]
push eax
call fcn.004c3d18
pop ecx
test eax, eax
je 0x439877
add edi, 2
jmp 0x439862
inc edi
movzx eax, byte [edi + esi]
push eax
call fcn.004c3d18
pop ecx
test eax, eax
jne 0x439861
mov dword [ebx], 0x7e
movzx eax, byte [edi + esi]
test al, al
js 0x439895
cmp eax, 0x1f
jle 0x439b82
cmp byte [eax + 0x4fdc60], 0
je 0x439b82
mov dword [ebx], 0x91
inc edi
jmp 0x439877
cmp byte [esi + 1], 0x2a
jne 0x4398d6
mov cl, byte [esi + 2]
test cl, cl
je 0x4398d6
push 3
pop eax
movzx ecx, cl
cmp ecx, 0x2a
jne 0x4398bc
cmp byte [eax + esi], 0x2f
je 0x4398c7
movzx ecx, byte [eax + esi]
test ecx, ecx
je 0x4398c8
inc eax
jmp 0x4398b1
inc eax
mov ecx, dword [ebp + 0xc]
mov dword [ecx], 0x94
jmp 0x439b84
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x52
jmp 0x4396f7
mov eax, dword [ebp + 0xc]
xor edi, edi
inc edi
mov dword [eax], edi
jmp 0x439b82
mov eax, ecx
sub eax, 0x3c
je 0x439949
dec eax
je 0x439931
dec eax
jne 0x439a92
movzx eax, byte [esi + 1]
cmp eax, 0x3d
jne 0x439916
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x49
jmp 0x43995b
cmp eax, 0x3e
mov eax, dword [ebp + 0xc]
jne 0x439926
mov dword [eax], 0x4e
jmp 0x43995b
mov dword [eax], 0x46
jmp 0x4396f7
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x45
xor eax, eax
cmp byte [esi + 1], 0x3d
sete al
inc eax
jmp 0x439b84
movzx eax, byte [esi + 1]
cmp eax, 0x3d
jne 0x439963
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x47
push 2
pop eax
jmp 0x439b84
cmp eax, 0x3e
jne 0x439973
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x44
jmp 0x43995b
cmp eax, 0x3c
mov eax, dword [ebp + 0xc]
jne 0x439983
mov dword [eax], 0x4d
jmp 0x43995b
mov dword [eax], 0x48
jmp 0x4396f7
mov eax, dword [ebp + 0xc]
xor edi, edi
mov dword [eax], 0x81
movzx eax, byte [esi + 1]
inc edi
push eax
jmp 0x4399a7
inc edi
movzx ecx, byte [edi + esi]
push ecx
call fcn.004c3d18
pop ecx
test eax, eax
jne 0x4399a1
jmp 0x439b82
mov eax, ecx
sub eax, 0x40
je 0x43978f
sub eax, 0x18
je 0x439a84
sub eax, 3
je 0x439a60
sub eax, 5
je 0x439a1b
sub eax, 0x18
je 0x439a84
sub eax, 4
je 0x4399fc
dec eax
dec eax
jne 0x439a92
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x58
jmp 0x4396f7
cmp byte [esi + 1], 0x7c
mov eax, dword [ebp + 0xc]
je 0x439a10
mov dword [eax], 0x4c
jmp 0x4396f7
mov dword [eax], 0x54
jmp 0x43995b
movzx edi, byte [esi + 1]
xor edx, edx
inc edx
test edi, edi
je 0x439a52
cmp edi, ecx
jne 0x439a34
movzx eax, byte [esi + edx + 1]
cmp eax, ecx
jne 0x439a3d
inc edx
inc edx
movzx edi, byte [edx + esi]
test edi, edi
jne 0x439a26
test edi, edi
je 0x439a52
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x59
lea eax, [edx + 1]
jmp 0x439b84
mov ecx, dword [ebp + 0xc]
mov dword [ecx], 0x91
jmp 0x4396e7
xor eax, eax
inc eax
cmp dl, 0x5d
je 0x439a76
movzx ecx, byte [eax + esi]
test ecx, ecx
je 0x439a76
inc eax
cmp ecx, 0x5d
jne 0x439a68
mov ecx, dword [ebp + 0xc]
mov dword [ecx], 0x17
jmp 0x439b84
movzx ebx, byte [esi + 1]
cmp ebx, 0x27
je 0x439ae1
cmp ebx, 0x22
je 0x439ae1
test cl, cl
js 0x439ab2
cmp ecx, 0x1f
jle 0x439aa4
cmp byte [ecx + 0x4fdc60], 0
jne 0x439ab2
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x91
jmp 0x4396f7
xor edi, edi
inc edi
movzx eax, byte [edi + esi]
test al, al
js 0x439acb
cmp eax, 0x1f
jle 0x439ace
cmp byte [eax + 0x4fdc60], 0
je 0x439ace
inc edi
jmp 0x439ab5
push edi
push esi
call fcn.00439b89
pop ecx
pop ecx
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
jmp 0x439b82
mov edx, dword [ebp + 0xc]
push 2
mov dword [edx], 0x7f
movzx ecx, byte [esi + 2]
pop edi
jmp 0x439b07
cmp ecx, ebx
je 0x439b18
push ecx
call fcn.004c3dc4
pop ecx
test eax, eax
je 0x439b0d
inc edi
movzx ecx, byte [edi + esi]
test ecx, ecx
jne 0x439af3
jmp 0x439b82
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x91
jmp 0x439b82
mov eax, edi
and eax, 0x80000001
jns 0x439b26
dec eax
or eax, 0xfffffffe
inc eax
je 0x439b31
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x91
test ecx, ecx
je 0x439b82
inc edi
jmp 0x439b82
inc ecx
mov dword [ebp + 8], ecx
inc edi
movzx eax, byte [edi + esi]
test eax, eax
jne 0x4397a9
jmp 0x439b78
inc edi
movzx ebx, byte [edi + esi]
test ebx, ebx
je 0x439b64
push ebx
call fcn.004c3d6e
pop ecx
test eax, eax
jne 0x439b64
cmp ebx, 0x29
jne 0x439b4b
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
cmp ebx, 0x29
jne 0x439b72
inc edi
jmp 0x439b78
mov dword [edx], 0x91
test ecx, ecx
jne 0x439b82
mov dword [edx], 0x91
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
ret