Function at 0x512bf0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x3c
mov ebx, dword [ebp + 8]
mov eax, dword [0x7a9040]
xor eax, ebp
mov dword [ebp - 0x10], eax
test ebx, ebx
je 0x512c4f
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
test edi, edi
je 0x512c6d
push edi
call fcn.0066e590
add esp, 4
mov esi, 3
cmp eax, 0x7a1200
ja 0x512c52
mov ecx, eax
mov eax, dword [ebp + 0xc]
cmp eax, 0xa
ja case.default.0x512c77
mov esi, ecx
mov ecx, dword [ebp + 0x14]
mov edx, ecx
shr dl, 7
mov dword [ebp - 0x44], edx
jmp dword [eax*4 + 0x749a18]
add ebx, 0x14
jmp 0x512ead
xor esi, esi
inc esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00650d60
mov eax, esi
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 9
jmp 0x512c52
cmp eax, 0xa
ja case.default.0x512c77
mov edi, 4
jmp dword [eax*4 + 0x749a44]
mov edi, 0x20
jmp case.0x512c77.2
mov edi, 0x14
jmp case.0x512c77.2
mov edi, 0x10
jmp case.0x512c77.2
mov edi, ebx
jmp 0x512cb5
mov edi, 0x1c
jmp case.0x512c77.2
mov edi, 8
jmp case.0x512c77.2
mov edi, 0x24
jmp case.0x512c77.2
mov edi, 0xc
add edi, ebx
je case.0x512c77.0
mov ebx, dword [edi]
xor esi, esi
test ebx, ebx
je 0x512c52
mov ecx, dword [fcn.005464a0]
call dword [0x7a29f4]
push ebx
call ecx
add esp, 4
mov dword [edi], 0
jmp 0x512c52
mov dword [ebx + 0x28], 0
mov edi, 0x18
jmp case.0x512c77.2
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 4]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 8]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 0xc]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 0x10]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 0x14]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 0x18]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 0x1c]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 0x20]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebx + 0x24]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
pxor xmm0, xmm0
movdqu xmmword [ebx + 0x1c], xmm0
movdqu xmmword [ebx + 0x10], xmm0
movdqu xmmword [ebx], xmm0
xor esi, esi
jmp 0x512c52
mov dword [ebp - 0x34], esi
lea eax, [ebp - 0x30]
mov dword [eax], 0xffffffff
push 0xa
push eax
push edi
call fcn.006674f7
add esp, 0xc
lea ecx, [eax - 0x10000]
cmp ecx, 0xffff0000
ja 0x512e02
mov esi, 4
jmp 0x512c52
mov ecx, dword [ebp - 0x30]
cmp byte [ecx], 0
mov esi, 4
mov edx, dword [ebp - 0x34]
jne 0x512c52
mov dword [ebp - 0x40], eax
add ebx, 0x18
mov dword [ebp - 0x44], 0
jmp 0x512e98
add ebx, 0x20
mov dword [ebp - 0x40], 0
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x3c], eax
mov al, ch
xor ecx, ecx
mov dword [ebp - 0x38], eax
jmp 0x512ec4
add ebx, 0x1c
mov cl, 1
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
jmp 0x512ebd
add ebx, 8
jmp 0x512ead
add ebx, 4
jmp 0x512ead
add ebx, 0x24
jmp 0x512ead
lea eax, [ebx + 0x10]
mov dword [ebp - 0x48], eax
mov ecx, dword [fcn.005464a0]
mov eax, dword [ebx + 0x14]
mov dword [ebp - 0x34], eax
call dword [0x7a29f4]
push dword [ebp - 0x34]
call ecx
mov edx, esi
add esp, 4
mov dword [ebx + 0x14], 0
mov ebx, dword [ebp - 0x48]
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
xor ecx, ecx
mov dword [ebp - 0x38], 0
jmp 0x512ec6
add ebx, 0xc
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
xor ecx, ecx
mov dword [ebp - 0x38], 0
mov edx, esi
mov dword [ebp - 0x34], ecx
lea eax, [edx + edx*2]
movzx ecx, byte [ebp - 0x34]
add eax, ecx
inc eax
pcmpeqd xmm0, xmm0
lea ecx, [ebp - 0x30]
movdqu xmmword [ecx], xmm0
push eax
push ecx
call fcn.004e8e60
add esp, 8
cmp byte [ebp - 0x34], 0
je 0x512f13
cmp byte [edi], 0x2f
je 0x512f13
push 1
push 0x739906
lea eax, [ebp - 0x30]
push eax
call fcn.004e8f30
add esp, 0xc
mov esi, 7
test eax, eax
jne 0x512c52
cmp byte [ebp - 0x44], 0
je 0x512f33
mov dword [ebp - 0x48], ebx
mov al, byte [edi]
test al, al
je 0x512ffb
mov ecx, dword [ebp - 0x3c]
xor cl, 1
mov esi, ecx
mov ebx, dword [ebp - 0x38]
jmp 0x512fa4
push edi
lea eax, [ebp - 0x30]
push eax
call fcn.004e9000
add esp, 8
mov esi, 7
test eax, eax
jne 0x512c52
mov dword [ebp - 0x48], ebx
lea eax, [ebp - 0x30]
push eax
call fcn.004e9140
add esp, 4
mov esi, eax
xor edi, edi
inc edi
jmp 0x5130da
movzx eax, bl
test bl, 1
mov ebx, eax
mov edx, 0
cmovne ebx, edx
cmp ecx, 0x3d
cmovne ebx, eax
push 1
push edi
jmp 0x512f88
push 1
push 0x739902
lea eax, [ebp - 0x30]
push eax
call fcn.004e8f30
add esp, 0xc
test eax, eax
jne 0x51306c
mov al, byte [edi + 1]
inc edi
test al, al
je 0x512ffb
cmp al, 0x20
setne cl
mov edx, esi
or cl, dl
je 0x512f81
movzx eax, al
push eax
call fcn.004e9560
add esp, 4
movzx ecx, byte [edi]
cmp ecx, 0x2f
sete dl
and dl, byte [ebp - 0x34]
or dl, al
jne 0x512f66
cmp ecx, 0x3d
jne 0x512fd5
test bl, 1
jne 0x512f66
mov byte [ebp - 0x20], 0x25
mov eax, ecx
shr eax, 4
mov al, byte [eax + str.0123456789abcdef]
mov byte [ebp - 0x1f], al
and ecx, 0xf
mov al, byte [ecx + str.0123456789abcdef]
mov byte [ebp - 0x1e], al
push 3
lea eax, [ebp - 0x20]
push eax
jmp 0x512f88
lea eax, [ebp - 0x30]
push eax
call fcn.004e9140
add esp, 4
mov esi, eax
test byte [ebp - 0x38], 1
je 0x513076
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x20]
test ebx, ebx
je 0x513076
push ebx
call fcn.0066e590
add esp, 4
test eax, eax
je 0x513076
mov edi, eax
mov al, byte [ebx + eax - 1]
mov byte [ebp - 0x34], al
pcmpeqd xmm0, xmm0
lea ebx, [ebp - 0x20]
movdqu xmmword [ebx], xmm0
push 0x7a1200
push ebx
call fcn.004e8e60
add esp, 8
push edi
mov eax, dword [ebp + 8]
push dword [eax + 0x20]
push ebx
call fcn.004e8f30
add esp, 0xc
test eax, eax
je 0x5131b7
lea eax, [ebp - 0x30]
push eax
call fcn.004e8e80
add esp, 4
mov esi, 7
jmp 0x512c52
cmp dword [ebp + 0xc], 5
mov ebx, dword [ebp + 8]
jne 0x51309d
push esi
call fcn.0066e590
add esp, 4
mov edi, eax
test eax, eax
sete al
mov ecx, dword [ebp + 0x14]
shr ecx, 0xa
test cl, al
je 0x51316c
mov ecx, dword [fcn.005464a0]
mov ebx, dword [ebp - 0x48]
mov edi, dword [ebx]
call dword [0x7a29f4]
push edi
call ecx
add esp, 4
mov dword [ebx], esi
xor esi, esi
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x512c52
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x28], eax
jmp 0x512c52
mov edx, edi
test eax, eax
je 0x512ffb
add esi, edx
movzx eax, byte [esi]
cmp eax, 0x25
jne 0x5130ce
mov al, byte [esi + 1]
mov ecx, eax
add cl, 0xd0
cmp cl, 0xa
jb 0x513104
movzx ecx, al
lea edx, [ecx - 0x61]
cmp edx, 6
jb 0x513104
add ecx, 0xffffffbf
mov edx, edi
cmp ecx, 5
ja 0x5130d8
mov cl, byte [esi + 2]
mov edx, ecx
add dl, 0xd0
cmp dl, 0xa
jb 0x513126
movzx ebx, cl
lea edx, [ebx - 0x61]
cmp edx, 6
jb 0x513126
add ebx, 0xffffffbf
mov edx, edi
cmp ebx, 5
ja 0x5130d8
mov edx, eax
add dl, 0xbf
cmp dl, 0x1a
setb dl
add cl, 0xbf
cmp cl, 0x1a
setb cl
or cl, dl
mov edx, edi
cmp cl, 1
jne 0x5130d8
movsx eax, al
push eax
call fcn.00508c20
add esp, 4
mov byte [esi + 1], al
movsx eax, byte [esi + 2]
push eax
call fcn.00508c20
add esp, 4
mov byte [esi + 2], al
mov edx, 3
jmp 0x5130d8
test edi, edi
je 0x5131a1
cmp byte [esi], 0x5b
je 0x51318c
push str.__r_n_t_:_______________
push esi
call fcn.0066e400
add esp, 8
cmp eax, edi
jne 0x5131a1
jmp 0x51309d
mov ecx, ebx
mov edx, esi
push edi
call fcn.00514140
add esp, 4
test eax, eax
je 0x51309d
lea eax, [ebp - 0x30]
push eax
call fcn.004e8e80
add esp, 4
mov esi, 0x15
jmp 0x512c52
cmp byte [ebp - 0x34], 0x26
je 0x5131d5
push 1
push 0x739900
push ebx
call fcn.004e8f30
add esp, 0xc
test eax, eax
jne 0x513060
push esi
push ebx
call fcn.004e9000
add esp, 8
test eax, eax
jne 0x513060
lea eax, [ebp - 0x30]
push eax
call fcn.004e8e80
add esp, 4
mov ecx, dword [fcn.005464a0]
mov edi, dword [ebp - 0x48]
mov esi, dword [edi]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
push ebx
call fcn.004e9140
add esp, 4
mov dword [edi], eax
jmp 0x512dcb
mov edx, esi
lea eax, [esi - 0x29]
mov esi, 0x1b
cmp eax, 0xffffffd8
jb 0x512c52
test cl, 8
jne 0x513247
push 0xffffffffffffffff
push edi
mov dword [ebp - 0x34], edx
call fcn.0050d5e0
mov edx, dword [ebp - 0x34]
add esp, 8
test eax, eax
je 0x51326d
mov al, byte [edi]
and al, 0xdf
add al, 0xbf
cmp al, 0x19
ja 0x512c52
mov eax, edx
dec eax
je 0x513261
mov dword [ebp - 0x34], edx
xor ecx, ecx
jmp 0x51327c
mov dword [ebp - 0x40], 0
jmp 0x512e1c
mov esi, 5
jmp 0x512c52
inc ecx
cmp eax, ecx
je 0x5132ad
movzx edx, byte [edi + ecx]
mov ebx, edx
add bl, 0xd0
cmp bl, 0xa
jb 0x513277
mov ebx, edx
and bl, 0xdf
add bl, 0xbf
cmp bl, 0x1a
jb 0x513277
add edx, 0xffffffd5
cmp edx, 3
ja 0x512c52
cmp edx, 1
jne 0x513277
jmp 0x512c52
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x3c], 0
xor ecx, ecx
mov dword [ebp - 0x38], 0
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x34]
jmp 0x512ec6
mov cl, byte [edi + 0x28]
mov eax, 0x28
cmp cl, 0x3a
jne 0x513322
test dword [ebp + 0x14], 0x204
je 0x513338
cmp byte [edi + eax + 1], 0x2f
jne 0x513322
jmp 0x513338
mov esi, 3
jmp 0x512c52
mov dword [ebp - 0x20], 0xffffffff
test esi, esi
je 0x5132f5
mov al, byte [edi]
and al, 0xdf
add al, 0xbf
test ecx, 0x204
je 0x51334e
cmp al, 0x19
ja 0x513322
cmp byte [edi + 1], 0x3a
jne 0x513352
lea eax, [ebp - 0x20]
push dword [ebp + 0x14]
push eax
push 0
push ebx
call fcn.005123c0
add esp, 0x10
test eax, eax
je 0x513398
mov ecx, edi
mov edx, ebx
push dword [ebp + 0x14]
call fcn.005135b0
add esp, 4
mov esi, eax
jmp 0x512c52
cmp al, 0x19
ja 0x513322
xor eax, eax
inc eax
jmp 0x513361
inc eax
cmp eax, 0x28
je 0x5132d6
mov cl, byte [edi + eax]
test cl, cl
je 0x513322
mov edx, ecx
add dl, 0xd0
cmp dl, 0xa
jb 0x513357
mov edx, ecx
and dl, 0xdf
add dl, 0xbf
cmp dl, 0x1a
jb 0x513357
movzx edx, cl
add edx, 0xffffffd5
cmp edx, 3
ja 0x5132de
cmp edx, 1
jne 0x513357
jmp 0x5132de
mov esi, dword [ebp - 0x20]
pcmpeqd xmm0, xmm0
movdqu xmmword [ebp - 0x30], xmm0
push 0x73a575
push esi
call fcn.00654ba0
add esp, 8
lea ecx, [eax + 2]
test eax, eax
mov dword [ebp - 0x44], esi
cmove ecx, esi
mov bl, byte [edi]
cmp bl, 0x2f
je 0x513472
push 0x3f
mov esi, ecx
push ecx
call fcn.00654930
add esp, 8
test eax, eax
je 0x5133de
mov byte [eax], 0
mov bl, byte [edi]
mov bh, 0x3f
cmp bl, 0x3f
je 0x5133fb
push 0x2f
push esi
call fcn.00654a60
add esp, 8
mov bh, bl
test eax, eax
je 0x5133fb
mov byte [eax], 0
mov bh, byte [edi]
push 0x2f
push esi
call fcn.00654930
add esp, 8
lea edx, [eax + 1]
test eax, eax
cmovne eax, edx
cmp bh, 0x2e
jne 0x513446
xor ecx, ecx
cmp byte [edi + 1], 0x2f
sete cl
lea ecx, [edi + ecx*2]
cmp byte [ecx], 0x2e
jne 0x513444
xor esi, esi
cmp byte [ecx + 1], 0x2e
jne 0x513440
cmp byte [ecx + 2], 0x2f
jne 0x513440
inc esi
lea edi, [ecx + 3]
cmp byte [ecx + 3], 0x2e
mov ecx, edi
je 0x513426
jmp 0x513448
mov edi, ecx
jmp 0x513448
mov edi, ecx
xor esi, esi
test eax, eax
je 0x5134ba
test esi, esi
je 0x5134c8
mov cl, 1
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
push 0x2f
push eax
call fcn.00654a60
add esp, 8
test eax, eax
je 0x5134d2
mov byte [eax], 0
dec esi
mov eax, dword [ebp - 0x34]
jne 0x513458
jmp 0x5134e7
cmp byte [edi + 1], 0x2f
mov dword [ebp - 0x34], ecx
je 0x5134da
push 0x2f
push ecx
mov ebx, ecx
call fcn.00654930
add esp, 8
mov esi, eax
push 0x3f
push ebx
call fcn.00654930
add esp, 8
test esi, esi
je 0x5134af
cmp eax, esi
mov ecx, esi
cmovb ecx, eax
test eax, eax
cmove ecx, esi
mov byte [ecx], 0
mov al, 1
mov dword [ebp - 0x38], eax
jmp 0x5134e7
test eax, eax
je 0x5134a8
mov cl, 1
mov dword [ebp - 0x38], ecx
jmp 0x5134d5
mov al, 1
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], 0
jmp 0x5134e7
mov al, 1
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
jmp 0x5134e7
mov eax, dword [ebp - 0x34]
mov byte [eax], 0
jmp 0x5134e7
mov byte [ecx], 0
add edi, 2
mov dword [ebp - 0x38], 0
lea esi, [ebp - 0x30]
push 0x7a1200
push esi
call fcn.004e8e60
add esp, 8
push dword [ebp - 0x44]
push esi
call fcn.004e9000
add esp, 8
xor ebx, ebx
test eax, eax
jne 0x513564
mov al, byte [edi]
cmp al, 0x2f
je 0x51353c
cmp dword [ebp - 0x34], 0
je 0x513538
cmp al, 0x3f
je 0x51353c
mov eax, dword [ebp - 0x34]
cmp byte [eax], 0
je 0x51353c
push 1
push 0x739906
push esi
call fcn.004e8f30
add esp, 0xc
test eax, eax
jne 0x513564
jmp 0x51353c
cmp al, 0x3f
jne 0x513522
push edi
call fcn.0066e590
add esp, 4
movzx ebx, byte [ebp - 0x38]
mov ecx, esi
mov edx, edi
push 0
push ebx
push eax
call fcn.00512a90
add esp, 0xc
push esi
call fcn.004e9140
add esp, 4
mov ebx, eax
mov ecx, dword [fcn.005464a0]
mov esi, dword [ebp - 0x20]
call dword [0x7a29f4]
push esi
call ecx
add esp, 4
test ebx, ebx
je 0x51306c
mov ecx, ebx
mov edx, dword [ebp + 8]
push dword [ebp + 0x14]
call fcn.005135b0
add esp, 4
mov esi, eax
mov ecx, dword [fcn.005464a0]
call dword [0x7a29f4]
push ebx
call ecx
add esp, 4
jmp 0x512c52