Function at 0x4a5a50
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0xc]
push 0x54f15a
call fcn.004bfc00
mov eax, dword [ebp + 8]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4a5a70
push ebx
push esi
sub eax, edx
lea esi, [eax + 0x100]
push edi
push esi
mov dword [ebp - 0x14], esi
call fcn.004fc6be
push esi
mov edi, eax
push 0
push edi
mov dword [ebp - 8], edi
call fcn.004ff6f0
mov eax, dword [ebp + 8]
mov al, byte [eax]
xor ebx, ebx
add esp, 0x10
mov dword [ebp - 4], ebx
test al, al
je 0x4a5eb0
mov ecx, dword [ebp + 8]
cmp al, 0x3d
jne 0x4a5e9d
cmp byte [ecx + 1], 0x3f
jne 0x4a5e9d
lea edx, [ecx + 2]
mov esi, edx
cmp byte [esi], 0
je 0x4a5b18
lea ecx, [ecx]
mov al, byte [esi]
cmp al, 0x20
jle 0x4a5b18
cmp al, 0x28
je 0x4a5b18
cmp al, 0x29
je 0x4a5b18
cmp al, 0x3c
je 0x4a5b18
cmp al, 0x3e
je 0x4a5b18
cmp al, 0x40
je 0x4a5b18
cmp al, 0x2c
je 0x4a5b18
cmp al, 0x3b
je 0x4a5b18
cmp al, 0x3a
je 0x4a5b18
cmp al, 0x22
je 0x4a5b18
cmp al, 0x2f
je 0x4a5b18
cmp al, 0x5b
je 0x4a5b18
cmp al, 0x5d
je 0x4a5b18
cmp al, 0x3f
je 0x4a5b21
cmp al, 0x2e
je 0x4a5b18
cmp al, 0x3d
je 0x4a5b18
inc esi
cmp byte [esi], 0
jne 0x4a5ad0
cmp byte [esi], 0x3f
jne 0x4a5e97
mov al, byte [esi + 1]
cmp al, 0x51
je 0x4a5b30
cmp al, 0x71
jne 0x4a5ca3
cmp byte [esi + 2], 0x3f
jne 0x4a5ca3
mov ecx, dword [ebp - 0x10]
push edx
mov byte [esi], 0
call fcn.004a4590
mov byte [esi], 0x3f
add esi, 3
mov dword [ebp + 8], eax
mov al, byte [esi]
test al, al
je 0x4a5c08
add edi, ebx
jmp 0x4a5b60
cmp al, 0x3f
je 0x4a5c0d
cmp al, 0x20
jle 0x4a5c08
cmp al, 0x3d
jne 0x4a5bf0
movsx ecx, byte [esi + 1]
push ecx
call fcn.0050029d
add esp, 4
test eax, eax
je 0x4a5b8d
mov bl, byte [esi + 1]
sub bl, 0x30
jmp 0x4a5ba9
movsx edx, byte [esi + 1]
push edx
call fcn.0050021e
mov bl, byte [esi + 1]
add esp, 4
test eax, eax
je 0x4a5ba6
sub bl, 0x57
jmp 0x4a5ba9
sub bl, 0x37
movsx eax, byte [esi + 2]
add esi, 2
push eax
shl bl, 4
call fcn.0050029d
add esp, 4
test eax, eax
je 0x4a5bcb
mov cl, byte [esi]
sub cl, 0x30
add bl, cl
mov byte [edi], bl
jmp 0x4a5bfb
movsx edx, byte [esi]
push edx
call fcn.0050021e
add esp, 4
test eax, eax
je 0x4a5be5
mov al, byte [esi]
sub al, 0x57
add bl, al
mov byte [edi], bl
jmp 0x4a5bfb
mov cl, byte [esi]
sub cl, 0x37
add bl, cl
mov byte [edi], bl
jmp 0x4a5bfb
cmp al, 0x5f
jne 0x4a5bf9
mov byte [edi], 0x20
jmp 0x4a5bfb
mov byte [edi], al
mov al, byte [esi + 1]
inc esi
inc edi
test al, al
jne 0x4a5b60
cmp byte [esi], 0x3f
jne 0x4a5c16
cmp byte [esi + 1], 0x3d
jne 0x4a5c16
add esi, 2
mov ebx, dword [ebp - 4]
add ebx, dword [ebp - 8]
mov ecx, dword [ebp + 8]
push 0
push 0
push 0xffffffffffffffff
push ebx
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea edi, [eax + 1]
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004fc6be
lea ecx, [edi + edi]
push ecx
push 0
push eax
mov dword [ebp - 0xc], eax
call fcn.004ff6f0
mov edx, dword [ebp + 8]
add esp, 0x10
push edi
mov edi, dword [ebp - 0xc]
push edi
push 0xffffffffffffffff
push ebx
push 0
push edx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp - 0x14]
push 0
push 0
push eax
push ebx
push 0xffffffffffffffff
push edi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push edi
call fcn.004fedfc
add esp, 4
lea eax, [ebx + 1]
mov cl, byte [ebx]
inc ebx
test cl, cl
jne 0x4a5c92
sub ebx, eax
add dword [ebp - 4], ebx
jmp 0x4a5e72
cmp byte [esi], 0x3f
jne 0x4a5e97
cmp al, 0x42
je 0x4a5cb8
cmp al, 0x62
jne 0x4a5e97
cmp byte [esi + 2], 0x3f
jne 0x4a5e97
mov ecx, dword [ebp - 0x10]
push edx
mov byte [esi], 0
call fcn.004a4590
mov byte [esi], 0x3f
add esi, 3
mov dword [ebp + 8], eax
mov al, byte [esi]
xor edi, edi
mov dword [ebp - 4], ebx
test al, al
je 0x4a5cef
cmp al, 0x3f
je 0x4a5cef
mov al, byte [edi + esi + 1]
inc edi
test al, al
jne 0x4a5ce2
lea ecx, [ebp - 0xc]
push ecx
push esi
mov dword [ebp - 0xc], edi
call fcn.004a2dc0
add esp, 8
add esi, edi
test eax, eax
je 0x4a5d32
xor ecx, ecx
cmp dword [ebp - 0xc], ecx
jbe 0x4a5d20
lea esp, [esp]
mov dl, byte [eax + ecx]
mov edi, dword [ebp - 8]
mov byte [ebx + edi], dl
inc ecx
inc ebx
cmp ecx, dword [ebp - 0xc]
jb 0x4a5d10
mov edi, dword [ebp - 8]
push eax
mov byte [ebx + edi], 0
call fcn.004fedfc
add esp, 4
jmp 0x4a5d35
mov edi, dword [ebp - 8]
cmp byte [esi], 0x3f
jne 0x4a5d43
cmp byte [esi + 1], 0x3d
jne 0x4a5d43
add esi, 2
cmp dword [ebp + 8], 0xc42c
jne 0x4a5de7
mov ebx, dword [ebp - 4]
add ebx, edi
mov eax, ebx
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4a5d60
sub eax, edx
cmp eax, 6
jb 0x4a5de7
mov eax, ebx
cmp dword [eax], 0x1b42241b
jne 0x4a5d84
cmp byte [eax + 4], 0x24
jne 0x4a5d84
cmp byte [eax + 5], 0x42
je 0x4a5dc6
mov eax, ebx
cmp dword [eax], 0x1b42241b
jne 0x4a5d9a
cmp byte [eax + 4], 0x24
jne 0x4a5d9a
cmp byte [eax + 5], 0x40
je 0x4a5dc6
mov eax, ebx
cmp dword [eax], 0x1b40241b
jne 0x4a5db0
cmp byte [eax + 4], 0x24
jne 0x4a5db0
cmp byte [eax + 5], 0x42
je 0x4a5dc6
mov eax, ebx
cmp dword [eax], 0x1b40241b
jne 0x4a5de7
cmp byte [eax + 4], 0x24
jne 0x4a5de7
cmp byte [eax + 5], 0x40
jne 0x4a5de7
mov ecx, dword [ebp - 4]
lea edx, [ecx + edi + 3]
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4a5dd2
sub eax, edi
inc eax
push eax
push edx
push ebx
call fcn.004fe580
add esp, 0xc
mov ebx, dword [ebp - 4]
add ebx, dword [ebp - 8]
mov ecx, dword [ebp + 8]
push 0
push 0
push 0xffffffffffffffff
push ebx
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea edi, [eax + 1]
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004fc6be
lea ecx, [edi + edi]
push ecx
push 0
push eax
mov dword [ebp - 0xc], eax
call fcn.004ff6f0
mov edx, dword [ebp + 8]
add esp, 0x10
push edi
mov edi, dword [ebp - 0xc]
push edi
push 0xffffffffffffffff
push ebx
push 0
push edx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp - 0x14]
push 0
push 0
push eax
push ebx
push 0xffffffffffffffff
push edi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push edi
call fcn.004fedfc
add esp, 4
lea eax, [ebx + 1]
mov cl, byte [ebx]
inc ebx
test cl, cl
jne 0x4a5e63
sub ebx, eax
add ebx, dword [ebp - 4]
mov dword [ebp - 4], ebx
mov al, byte [esi]
cmp al, 0x20
je 0x4a5e7c
cmp al, 9
jne 0x4a5e89
cmp byte [esi + 1], 0x3d
jne 0x4a5e89
cmp byte [esi + 2], 0x3f
jne 0x4a5e89
inc esi
mov ebx, dword [ebp - 4]
mov edi, dword [ebp - 8]
dec esi
mov dword [ebp + 8], esi
mov ecx, esi
jmp 0x4a5ea4
mov byte [ebx + edi], 0x3d
jmp 0x4a5ea0
mov byte [ebx + edi], al
inc ebx
mov dword [ebp - 4], ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x4a5ab1
mov ecx, dword [ebp + 0xc]
push edi
mov byte [ebx + edi], 0
call fcn.004bfc00
push edi
call fcn.004fedfc
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8