Function at 0x489950
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c
push ebx
push esi
push edi
mov edi, eax
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], edx
mov eax, edi
cmp edi, ecx
jne 0x48997e
xor esi, esi
jmp 0x489990
cmp byte [edi], cl
je 0x489987
inc eax
cmp byte [eax], cl
jne 0x489982
sub eax, edi
and eax, 0x3fffffff
mov esi, eax
test dl, 0x40
jne 0x4899a1
cmp dword [0x4e7274], ecx
je 0x489e66
cmp esi, 5
jl 0x489e66
cmp dword [edi], 0x656c6966
jne 0x489e66
cmp byte [edi + 4], 0x3a
jne 0x489e66
or dword [esp + 0x14], 0x40
xor ebx, ebx
lea edx, [esi + 2]
xor eax, eax
cmp esi, 2
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], edx
jl 0x4899fa
xor edx, edx
cmp byte [edi + eax], 0x26
sete dl
add ecx, edx
xor edx, edx
cmp byte [edi + eax + 1], 0x26
sete dl
add eax, 2
add ebx, edx
lea edx, [esi - 1]
cmp eax, edx
jl 0x4899d9
cmp eax, esi
mov esi, dword [esp + 0x28]
jge 0x489a0d
xor edx, edx
cmp byte [eax + edi], 0x26
sete dl
add esi, edx
add ebx, ecx
add esi, ebx
call fcn.00487870
test eax, eax
jne 0x489a33
test esi, esi
jle 0x489a33
mov eax, esi
cdq
push edx
push eax
call fcn.00420720
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x489a3f
mov eax, 7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dl, 0x2f
mov esi, 5
cmp byte [edi + 5], dl
jne 0x489ab7
cmp byte [edi + 6], dl
jne 0x489ab7
mov al, byte [edi + 7]
lea ecx, [edi + 7]
mov esi, 7
mov dword [esp + 0x30], ecx
test al, al
je 0x489ab7
cmp al, dl
je 0x489a70
mov al, byte [esi + edi + 1]
inc esi
test al, al
jne 0x489a63
cmp esi, 7
je 0x489ab7
cmp esi, 0x10
jne 0x489aa0
lea eax, [esi - 7]
mov edx, str.localhost
mov ebx, dword [edx]
cmp ebx, dword [ecx]
jne 0x489a9c
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x489a82
mov al, byte [ecx]
cmp al, byte [edx]
je 0x489ab7
mov ecx, dword [esp + 0x30]
push ecx
add esi, 0xfffffff9
push esi
push str.invalid_uri_authority:__.s
call fcn.00422560
add esp, 0xc
jmp 0x489ed6
mov al, byte [esi + edi]
xor edx, edx
mov dword [esp + 0x1c], edx
test al, al
je 0x489c22
cmp al, 0x23
je 0x489c0c
inc esi
cmp al, 0x25
jne 0x489b7e
mov cl, byte [esi + edi]
movzx ebx, cl
test byte [ebx + 0x4cf838], 8
je 0x489b7e
movzx ebx, byte [esi + edi + 1]
test byte [ebx + 0x4cf838], 8
je 0x489b7e
movsx edx, byte [esi + edi + 1]
movsx ecx, cl
mov eax, ecx
sar eax, 6
and al, 1
mov bl, 7
imul bl
inc esi
sub cl, al
mov eax, edx
sar eax, 6
and al, 1
imul bl
sub dl, al
and ecx, 0xf
shl ecx, 4
inc esi
and edx, 0xf
add ecx, edx
test ecx, ecx
jne 0x489b7a
mov al, byte [esi + edi]
test al, al
je 0x489bfd
mov ecx, dword [esp + 0x1c]
mov edi, edi
cmp al, 0x23
je 0x489bfd
test ecx, ecx
jne 0x489b50
cmp al, 0x3f
jmp 0x489b66
cmp ecx, 1
jne 0x489b5f
cmp al, 0x3d
je 0x489bfd
jmp 0x489b64
cmp ecx, 2
jne 0x489b6c
cmp al, 0x26
je 0x489bfd
mov al, byte [esi + edi + 1]
inc esi
test al, al
jne 0x489b40
jmp 0x489bfd
mov al, cl
jmp 0x489bed
cmp edx, 1
jne 0x489bd0
cmp al, 0x26
je 0x489b8b
cmp al, 0x3d
jne 0x489bed
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
cmp byte [edx + ecx - 1], 0
jne 0x489bb7
mov al, byte [esi + edi]
test al, al
je 0x489bfd
cmp al, 0x23
je 0x489bfd
cmp byte [esi + edi - 1], 0x26
je 0x489bfd
mov al, byte [esi + edi + 1]
inc esi
test al, al
jne 0x489ba1
jmp 0x489bfd
cmp al, 0x26
jne 0x489bc6
mov byte [edx + ecx], 0
inc ecx
mov dword [esp + 0x18], ecx
jmp 0x489beb
mov dword [esp + 0x1c], 2
jmp 0x489beb
test edx, edx
jne 0x489bda
cmp al, 0x3f
je 0x489be3
jmp 0x489bed
cmp edx, 2
jne 0x489bed
cmp al, 0x26
jne 0x489bed
mov dword [esp + 0x1c], 1
xor al, al
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov byte [edx + ecx], al
inc ecx
mov dword [esp + 0x18], ecx
mov al, byte [esi + edi]
mov edx, dword [esp + 0x1c]
test al, al
jne 0x489ac8
cmp edx, 1
jne 0x489c22
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov byte [ecx + eax], 0
inc eax
mov dword [esp + 0x18], eax
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov byte [edi + eax], 0
mov byte [edi + eax + 1], 0
cmp byte [edi], 0
mov eax, edi
je 0x489c46
lea ebx, [ebx]
inc eax
cmp byte [eax], 0
jne 0x489c40
sub eax, edi
and eax, 0x3fffffff
cmp byte [eax + edi + 1], 0
lea edx, [eax + edi + 1]
je 0x489eb2
mov esi, 0x60000
mov eax, edx
inc eax
cmp byte [eax], 0
jne 0x489c63
sub eax, edx
and eax, 0x3fffffff
lea ebx, [eax + edx + 1]
mov dword [esp + 0x1c], ebx
mov ecx, ebx
test ebx, ebx
jne 0x489c84
mov dword [esp + 0x18], ebx
jmp 0x489ca2
cmp byte [ebx], 0
je 0x489c96
lea esp, [esp]
inc ecx
cmp byte [ecx], 0
jne 0x489c90
sub ecx, ebx
and ecx, 0x3fffffff
mov dword [esp + 0x18], ecx
cmp eax, 3
jne 0x489ccd
cmp byte [edx], 0x76
jne 0x489e34
cmp byte [edx + 1], 0x66
jne 0x489e34
cmp byte [edx + 2], 0x73
jne 0x489e34
mov dword [esp + 0x34], ebx
jmp 0x489e34
cmp eax, 5
jne 0x489cff
cmp dword [edx], 0x68636163
jne 0x489e34
cmp byte [edx + 4], 0x65
jne 0x489e34
mov dword [esp + 0x30], esi
mov edi, 0x4e8204
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], str.cache
jmp 0x489d36
cmp eax, 4
jne 0x489e34
cmp dword [edx], 0x65646f6d
jne 0x489e34
mov eax, dword [esp + 0x14]
and eax, 0x87
mov dword [esp + 0x30], 0x87
mov edi, 0x4e821c
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], str.access
mov ecx, dword [edi]
mov dword [esp + 0x24], 0
test ecx, ecx
je 0x489de5
mov eax, ecx
test ecx, ecx
je 0x489d60
cmp byte [ecx], 0
je 0x489d59
inc eax
cmp byte [eax], 0
jne 0x489d53
sub eax, ecx
and eax, 0x3fffffff
cmp dword [esp + 0x18], eax
jne 0x489dd0
mov esi, dword [esp + 0x18]
mov edx, ebx
cmp esi, 4
jb 0x489d85
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x489d89
sub esi, 4
add ecx, 4
add edx, 4
cmp esi, 4
jae 0x489d71
test esi, esi
je 0x489e01
movzx eax, byte [edx]
movzx ebx, byte [ecx]
sub eax, ebx
jne 0x489dc4
cmp esi, 1
jbe 0x489dfd
movzx eax, byte [edx + 1]
movzx ebx, byte [ecx + 1]
sub eax, ebx
jne 0x489dc4
cmp esi, 2
jbe 0x489dfd
movzx eax, byte [edx + 2]
movzx ebx, byte [ecx + 2]
sub eax, ebx
jne 0x489dc4
cmp esi, 3
jbe 0x489dfd
movzx eax, byte [edx + 3]
movzx ecx, byte [ecx + 3]
sub eax, ecx
mov ebx, dword [esp + 0x1c]
sar eax, 0x1f
or eax, 1
je 0x489e01
mov eax, dword [esp + 0x24]
mov ecx, dword [edi + eax*8 + 8]
inc eax
mov dword [esp + 0x24], eax
test ecx, ecx
jne 0x489d48
mov eax, dword [esp + 0x28]
push ebx
push eax
push str.no_such__s_mode:__s
call fcn.00422560
add esp, 0xc
jmp 0x489ed6
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov eax, dword [edi + edx*8 + 4]
test eax, eax
je 0x489de5
mov ecx, eax
and ecx, 0xffffff7f
cmp ecx, dword [esp + 0x2c]
jg 0x489e49
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x10]
not ecx
and ecx, dword [esp + 0x14]
mov esi, 0x60000
or ecx, eax
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x18]
cmp byte [edx + ebx + 1], 0
lea edx, [edx + ebx + 1]
jne 0x489c61
jmp 0x489eb2
mov edx, dword [esp + 0x28]
push ebx
push edx
push str._s_mode_not_allowed:__s
call fcn.00422560
add esp, 0xc
mov dword [esp + 0x20], 3
jmp 0x489ede
lea ebx, [esi + 2]
call fcn.00487870
test eax, eax
jne 0x489a33
test ebx, ebx
jle 0x489a33
mov eax, ebx
cdq
push edx
push eax
call fcn.00420720
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x489a33
push esi
push edi
mov edi, eax
push edi
call fcn.004adef0
add esp, 0xc
and dword [esp + 0x14], 0xffffffbf
mov byte [edi + esi], 0
mov byte [edi + esi + 1], 0
mov esi, dword [esp + 0x34]
push esi
call fcn.0041fd50
mov edx, dword [ebp + 0x10]
add esp, 4
mov dword [edx], eax
test eax, eax
jne 0x489efc
push esi
push str.no_such_vfs:__s
call fcn.00422560
add esp, 8
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 0x18]
push edx
mov dword [ecx], eax
call fcn.00420a40
mov dword [esp + 0x14], 0
mov edi, dword [esp + 0x14]
add esp, 4
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x14]
mov dword [edx], edi
pop edi
pop esi
mov dword [eax], ecx
mov eax, dword [esp + 0x18]
pop ebx
mov esp, ebp
pop ebp
ret