Function at 0x5f1d0a
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [ebp + 8]
and dword [ebp - 0x14], 0
push ebx
push esi
mov ebx, dword [eax]
push edi
mov edi, edx
mov dword [ebp - 0x2c], ecx
mov ecx, edi
mov dword [ebp - 0xc], ebx
call fcn.005a4428
mov esi, eax
test bl, 0x40
jne 0x5f1d3f
cmp dword [0x4bb644], 0
je 0x5f20df
cmp esi, 5
jl 0x5f20df
push 5
push 0x4ae60c
push edi
call fcn.005fd353
add esp, 0xc
test eax, eax
jne 0x5f20df
and dword [ebp - 4], eax
or ebx, 0x40
lea eax, [esi + 2]
mov dword [ebp - 0xc], ebx
xor ecx, ecx
cdq
test esi, esi
jle 0x5f1d9d
cmp byte [ecx + edi], 0x26
jne 0x5f1d82
xor ebx, ebx
inc ebx
and dword [ebp - 0x18], 0
jmp 0x5f1d93
xorps xmm0, xmm0
movlpd qword [ebp - 0x28], xmm0
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x28]
add eax, ebx
adc edx, dword [ebp - 0x18]
inc ecx
cmp ecx, esi
jl 0x5f1d73
push edx
push eax
call fcn.005a2191
mov ebx, eax
mov dword [ebp - 8], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x5f1db7
push 7
pop eax
jmp 0x5f2156
cmp byte [edi + 5], 0x2f
push 5
pop esi
jne 0x5f1e19
cmp byte [edi + 6], 0x2f
jne 0x5f1e19
lea ecx, [edi + 7]
mov al, byte [ecx]
mov dword [ebp - 0x24], ecx
push 7
pop esi
test al, al
je 0x5f1e19
cmp al, 0x2f
je 0x5f1de1
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x5f1dd5
cmp esi, 7
je 0x5f1e19
cmp esi, 0x10
jne 0x5f1e02
push 9
push ecx
push 0x4ae614
call fcn.005fd353
add esp, 0xc
test eax, eax
je 0x5f1e19
mov ecx, dword [ebp - 0x24]
push ecx
lea eax, [esi - 7]
push eax
push 0x4ae620
call fcn.005a3a35
add esp, 0xc
jmp 0x5f2131
mov bl, byte [esi + edi]
xor edx, edx
mov dword [ebp - 0x10], edx
test bl, bl
je 0x5f1f5e
cmp bl, 0x23
je 0x5f1f4c
inc esi
cmp bl, 0x25
jne 0x5f1ec6
mov cl, byte [esi + edi]
movzx eax, cl
test byte [eax + 0x4a97a0], 8
je 0x5f1ec6
movzx eax, byte [esi + edi + 1]
test byte [eax + 0x4a97a0], 8
je 0x5f1ec6
movsx edx, cl
movsx ecx, byte [esi + edi + 1]
call fcn.005a5236
mov ecx, edx
movzx ebx, al
call fcn.005a5236
mov edx, dword [ebp - 0x10]
add esi, 2
movzx eax, al
shl eax, 4
add ebx, eax
jne 0x5f1f34
jmp 0x5f1ebd
cmp al, 0x23
je 0x5f1f41
test edx, edx
jne 0x5f1e9a
cmp al, 0x3f
je 0x5f1f41
cmp edx, 1
jne 0x5f1eaf
cmp al, 0x3d
je 0x5f1f41
cmp al, 0x26
je 0x5f1f41
cmp edx, 2
jne 0x5f1ebc
cmp al, 0x26
je 0x5f1f41
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x5f1e86
jmp 0x5f1f41
cmp edx, 1
jne 0x5f1f19
cmp bl, 0x26
je 0x5f1ed5
cmp bl, 0x3d
jne 0x5f1f34
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
cmp byte [eax + ecx - 1], 0
je 0x5f1f06
cmp bl, 0x26
jne 0x5f1f0f
mov ebx, eax
mov eax, ecx
mov byte [ebx + eax], 0
inc eax
mov dword [ebp - 4], eax
mov eax, ebx
mov ecx, dword [ebp - 4]
jmp 0x5f1f15
cmp al, 0x23
je 0x5f1f41
cmp byte [esi + edi - 1], 0x26
je 0x5f1f41
inc esi
mov al, byte [esi + edi]
test al, al
jne 0x5f1efa
jmp 0x5f1f41
push 2
pop edx
mov dword [ebp - 0x10], edx
xor bl, bl
jmp 0x5f1f3a
test edx, edx
jne 0x5f1f22
cmp bl, 0x3f
je 0x5f1f2c
cmp edx, 2
jne 0x5f1f34
cmp bl, 0x26
jne 0x5f1f34
xor edx, edx
xor bl, bl
inc edx
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov byte [eax + ecx], bl
inc ecx
mov dword [ebp - 4], ecx
mov bl, byte [esi + edi]
test bl, bl
jne 0x5f1e29
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 4]
cmp edx, 1
jne 0x5f1f64
mov byte [ebx + eax], 0
inc eax
jmp 0x5f1f64
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov ecx, ebx
mov word [ebx + eax], 0
call fcn.005a4428
lea esi, [ebx + 1]
jmp 0x5f20b6
mov ecx, esi
call fcn.005a4428
mov edi, eax
lea eax, [esi + 1]
add eax, edi
mov dword [ebp - 0x1c], edi
mov ecx, eax
mov dword [ebp - 8], eax
call fcn.005a4428
mov dword [ebp - 0x24], eax
cmp edi, 3
jne 0x5f1fba
push edi
push esi
push 0x4ae63c
call fcn.005fd353
add esp, 0xc
test eax, eax
jne 0x5f1fba
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
jmp 0x5f20b2
xor eax, eax
xor edi, edi
and dword [ebp - 0x10], eax
and dword [ebp - 0x18], eax
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 5
jne 0x5f2002
push eax
push esi
push 0x4ae640
call fcn.005fd353
add esp, 0xc
test eax, eax
jne 0x5f20af
mov eax, 0x4bb1b4
mov dword [ebp - 0x10], 0x4ae640
mov ecx, 0x60000
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x1c]
mov edi, ecx
mov dword [ebp - 0x18], ecx
cmp eax, 4
jne 0x5f2037
push eax
push esi
push 0x4a4de0
call fcn.005fd353
add esp, 0xc
test eax, eax
jne 0x5f2037
mov eax, dword [ebp - 0xc]
mov ecx, 0x87
and eax, ecx
mov dword [ebp - 0x10], 0x4ae664
mov edi, ecx
mov dword [ebp - 0x18], eax
mov esi, 0x4bb59c
jmp 0x5f203a
mov esi, dword [ebp - 4]
test esi, esi
je 0x5f20af
xor ecx, ecx
mov dword [ebp - 4], ecx
cmp dword [esi], ecx
je 0x5f207e
mov eax, esi
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x1c], eax
call fcn.005a4428
mov ecx, dword [ebp - 0x24]
cmp ecx, eax
jne 0x5f206f
push ecx
push dword [ebp - 0x1c]
push dword [ebp - 8]
call fcn.005fd353
add esp, 0xc
test eax, eax
je 0x5f208e
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
lea eax, [esi + eax*8]
cmp dword [eax], 0
jne 0x5f2049
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4ae66c
jmp 0x5f1e0c
mov ecx, dword [ebp - 4]
mov ecx, dword [esi + ecx*8 + 4]
test ecx, ecx
je 0x5f207e
mov eax, ecx
and eax, 0xffffff7f
cmp eax, dword [ebp - 0x18]
jg 0x5f20c3
not edi
and edi, dword [ebp - 0xc]
or edi, ecx
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x24]
inc esi
add esi, eax
cmp byte [esi], 0
jne 0x5f1f79
jmp 0x5f210f
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4ae680
call fcn.005a3a35
add esp, 0xc
mov dword [ebp - 0x14], 3
jmp 0x5f2138
lea eax, [esi + 2]
cdq
push edx
push eax
call fcn.005a2191
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
je 0x5f1daf
test esi, esi
je 0x5f2105
push esi
push edi
push ebx
call fcn.005fac70
add esp, 0xc
and dword [ebp - 0xc], 0xffffffbf
mov word [ebx + esi], 0
mov esi, dword [ebp - 0x2c]
push esi
call fcn.005a1a47
pop ecx
mov ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [eax], ecx
test ecx, ecx
jne 0x5f2146
push esi
push 0x4ae698
call fcn.005a3a35
pop ecx
pop ecx
mov dword [ebp - 0x14], 1
mov ecx, dword [ebp + 0x14]
push ebx
mov dword [ecx], eax
call fcn.005a2362
pop ecx
xor ebx, ebx
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0xc]
mov dword [ecx], eax
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
mov dword [ecx], ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret