Function at 0x45f162
Capabilities:
Parse credit card information

Disassembly:
push ebx
push esi
mov esi, ecx
push edi
mov edi, edx
push 4
mov dl, byte [esi]
movzx ecx, dl
mov eax, ecx
pop ebx
cmp ecx, 0x2e
ja 0x45f25a
je 0x45f246
sub eax, 9
cmp eax, 0x24
ja case.0x45f195.11
movzx eax, byte [eax + 0x45f68a]
jmp dword [eax*4 + 0x45f656]
movzx eax, byte [esi + 1]
xor edx, edx
inc edx
test byte [eax + 0x4b2c38], dl
je 0x45f1b9
inc edx
movzx ecx, byte [edx + esi]
test byte [ecx + 0x4b2c38], 1
jne 0x45f1ab
mov dword [edi], 0x97
mov eax, edx
jmp 0x45f650
cmp byte [esi + 1], 0x2d
jne 0x45f1ee
movzx ecx, byte [esi + 2]
push 2
pop eax
jmp 0x45f1df
cmp ecx, 0xa
je 0x45f1e3
inc eax
movzx ecx, byte [eax + esi]
test ecx, ecx
jne 0x45f1d5
mov dword [edi], 0x97
jmp 0x45f650
mov dword [edi], 0x5a
xor eax, eax
inc eax
jmp 0x45f650
mov dword [edi], 0x16
jmp 0x45f1f4
mov dword [edi], 0x17
jmp 0x45f1f4
mov dword [edi], 0x59
jmp 0x45f1f4
mov dword [edi], 0x5b
jmp 0x45f1f4
mov dword [edi], 0x5d
jmp 0x45f1f4
cmp byte [esi + 1], 0x3d
je 0x45f445
push 2
pop eax
jmp 0x45f64a
mov dword [edi], 0x1a
jmp 0x45f1f4
mov dword [edi], 0x55
jmp 0x45f1f4
movzx eax, byte [esi + 1]
test byte [eax + 0x4b2c38], bl
jne 0x45f2a6
mov dword [edi], 0x7a
jmp 0x45f1f4
cmp ecx, 0x3f
ja 0x45f492
je 0x45f464
cmp ecx, 0x3b
ja 0x45f3de
je 0x45f3d4
cmp ecx, 0x2f
je 0x45f393
jbe case.0x45f195.11
cmp ecx, 0x39
jbe 0x45f2a6
cmp ecx, 0x3a
je case.0x45f195.35
test byte [ecx + 0x4b2c38], 0x46
jne 0x45f5b3
xor eax, eax
inc eax
jmp 0x45f64a
mov dword [edi], 0x84
cmp dl, 0x30
jne 0x45f2f0
mov al, byte [esi + 1]
cmp al, 0x78
je 0x45f2bc
cmp al, 0x58
jne 0x45f2f0
movzx eax, byte [esi + 2]
test byte [eax + 0x4b2c38], 8
je 0x45f2f0
movzx eax, byte [esi + 3]
push 3
pop edx
test byte [eax + 0x4b2c38], 8
je 0x45f1bf
inc edx
movzx ecx, byte [edx + esi]
test byte [ecx + 0x4b2c38], 8
jne 0x45f2dd
jmp 0x45f1bf
xor edx, edx
test byte [ecx + 0x4b2c38], bl
je 0x45f307
inc edx
movzx eax, byte [edx + esi]
test byte [eax + 0x4b2c38], bl
jne 0x45f2fa
cmp byte [edx + esi], 0x2e
jne 0x45f320
inc edx
movzx eax, byte [edx + esi]
test byte [eax + 0x4b2c38], bl
jne 0x45f30d
mov dword [edi], 0x85
mov al, byte [edx + esi]
cmp al, 0x65
je 0x45f32b
cmp al, 0x45
jne 0x45f369
mov cl, byte [edx + esi + 1]
movzx eax, cl
test byte [eax + 0x4b2c38], bl
jne 0x45f351
cmp cl, 0x2b
je 0x45f344
cmp cl, 0x2d
jne 0x45f369
movzx eax, byte [edx + esi + 2]
test byte [eax + 0x4b2c38], bl
je 0x45f369
add edx, 2
jmp 0x45f357
inc edx
movzx eax, byte [edx + esi]
test byte [eax + 0x4b2c38], bl
jne 0x45f356
mov dword [edi], 0x85
movzx eax, byte [edx + esi]
test byte [eax + 0x4b2c38], 0x46
je 0x45f1bf
inc edx
mov dword [edi], 0x96
movzx ecx, byte [edx + esi]
test byte [ecx + 0x4b2c38], 0x46
jne 0x45f37a
jmp 0x45f1bf
cmp byte [esi + 1], 0x2a
jne 0x45f3c9
mov al, byte [esi + 2]
test al, al
je 0x45f3c9
push 3
pop ecx
movzx edx, al
cmp edx, 0x2a
jne 0x45f3b1
cmp byte [ecx + esi], 0x2f
je 0x45f3bc
movzx edx, byte [ecx + esi]
test edx, edx
je 0x45f3bc
inc ecx
jmp 0x45f3a6
test edx, edx
lea eax, [ecx + 1]
cmove eax, ecx
jmp 0x45f1e3
mov dword [edi], 0x5c
jmp 0x45f1f4
xor eax, eax
inc eax
mov dword [edi], eax
jmp 0x45f650
sub eax, 0x3c
je 0x45f42c
sub eax, 1
je 0x45f417
sub eax, 1
jne case.0x45f195.11
mov al, byte [esi + 1]
cmp al, 0x3d
jne 0x45f400
mov dword [edi], 0x53
jmp 0x45f439
cmp al, 0x3e
jne 0x45f40c
mov dword [edi], 0x58
jmp 0x45f439
mov dword [edi], 0x50
jmp 0x45f1f4
xor eax, eax
mov dword [edi], 0x4f
cmp byte [esi + 1], 0x3d
sete al
inc eax
jmp 0x45f650
mov al, byte [esi + 1]
cmp al, 0x3d
jne 0x45f441
mov dword [edi], 0x51
push 2
pop eax
jmp 0x45f650
cmp al, 0x3e
jne 0x45f44d
mov dword [edi], 0x4e
jmp 0x45f439
cmp al, 0x3c
jne 0x45f459
mov dword [edi], 0x57
jmp 0x45f439
mov dword [edi], 0x52
jmp 0x45f1f4
movzx eax, byte [esi + 1]
xor edx, edx
push 4
pop ebx
inc edx
mov dword [edi], 0x87
test byte [eax + 0x4b2c38], bl
je 0x45f1bf
inc edx
movzx ecx, byte [edx + esi]
test byte [ecx + 0x4b2c38], bl
jne 0x45f480
jmp 0x45f1bf
sub eax, 0x40
je case.0x45f195.35
sub eax, 0x18
je 0x45f55d
sub eax, 3
je 0x45f537
sub eax, 5
je case.0x45f195.34
sub eax, 0x18
je 0x45f55d
sub eax, 4
je 0x45f4d5
dec eax
sub eax, 1
jne case.0x45f195.11
mov dword [edi], 0x60
jmp 0x45f1f4
cmp byte [esi + 1], 0x7c
je 0x45f4e6
mov dword [edi], 0x56
jmp 0x45f1f4
mov dword [edi], 0x5e
jmp 0x45f439
movzx ebx, byte [esi + 1]
xor edx, edx
inc edx
jmp 0x45f50d
cmp ebx, ecx
jne 0x45f508
movzx eax, byte [esi + edx + 1]
cmp eax, ecx
jne 0x45f511
inc edx
inc edx
movzx ebx, byte [edx + esi]
test ebx, ebx
jne 0x45f4fa
cmp ebx, 0x27
jne 0x45f524
mov dword [edi], 0x61
lea eax, [edx + 1]
jmp 0x45f650
test ebx, ebx
je 0x45f530
mov dword [edi], 0x1b
jmp 0x45f51c
mov eax, edx
jmp 0x45f64a
xor eax, eax
inc eax
movzx edx, byte [eax + esi]
test edx, edx
je 0x45f548
inc eax
cmp edx, 0x5d
jne 0x45f53a
push 0x1b
cmp edx, 0x5d
mov ecx, 0x96
pop esi
cmove ecx, esi
mov dword [edi], ecx
jmp 0x45f650
cmp byte [esi + 1], 0x27
jne case.0x45f195.11
movzx eax, byte [esi + 2]
push 2
mov dword [edi], 0x86
pop ecx
jmp 0x45f57b
inc ecx
movzx eax, byte [ecx + esi]
test byte [eax + 0x4b2c38], 8
jne 0x45f576
mov al, byte [ecx + esi]
cmp al, 0x27
jne 0x45f590
test cl, 1
je 0x45f5a4
mov dword [edi], 0x96
jmp 0x45f5a0
cmp al, 0x27
je 0x45f5a4
inc ecx
mov al, byte [ecx + esi]
test al, al
jne 0x45f598
cmp byte [ecx + esi], 0
lea eax, [ecx + 1]
cmove eax, ecx
jmp 0x45f650
movzx eax, byte [esi + 1]
xor ebx, ebx
inc ebx
test byte [eax + 0x4b2c38], 0x46
je 0x45f5d1
inc ebx
movzx ecx, byte [ebx + esi]
test byte [ecx + 0x4b2c38], 0x46
jne 0x45f5c3
mov edx, ebx
mov ecx, esi
call fcn.0045f0e4
mov dword [edi], eax
mov eax, ebx
jmp 0x45f650
movzx ecx, byte [esi + 1]
xor eax, eax
xor ebx, ebx
mov dword [edi], 0x87
inc eax
test ecx, ecx
je 0x45f64a
test byte [ecx + 0x4b2c38], 0x46
je 0x45f5ff
inc ebx
jmp 0x45f614
cmp ecx, 0x28
jne 0x45f608
test ebx, ebx
jg 0x45f61f
cmp ecx, 0x3a
jne 0x45f646
cmp byte [esi + eax + 1], cl
jne 0x45f646
inc eax
inc eax
movzx ecx, byte [eax + esi]
test ecx, ecx
jne 0x45f5f3
jmp 0x45f646
inc eax
mov dl, byte [eax + esi]
movzx ecx, dl
test dl, dl
je 0x45f638
test byte [ecx + 0x4b2c38], 1
jne 0x45f638
cmp ecx, 0x29
jne 0x45f61f
cmp dl, 0x29
jne 0x45f640
inc eax
jmp 0x45f646
mov dword [edi], 0x96
test ebx, ebx
jne 0x45f650
mov dword [edi], 0x96
pop edi
pop esi
pop ebx
ret