Function at 0x502100
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x24
push ebx
push ebp
push esi
push edi
mov edi, eax
mov eax, dword [esp + 0x38]
mov ebx, dword [eax]
xor ecx, ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x2c], edx
cmp edi, ecx
jne 0x502125
xor esi, esi
jmp 0x502140
mov eax, edi
lea esi, [eax + 1]
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x502130
sub eax, esi
and eax, 0x3fffffff
mov esi, eax
test bl, 0x40
jne 0x502151
cmp dword [0x59bf1c], ecx
je 0x5025b5
cmp esi, 5
jl 0x5025b5
cmp dword [edi], 0x656c6966
jne 0x5025b5
cmp byte [edi + 4], 0x3a
jne 0x5025b5
or dword [esp + 0x14], 0x40
lea eax, [esi + 2]
cdq
mov ebx, eax
xor eax, eax
cmp esi, ecx
mov dword [esp + 0x18], ecx
mov ebp, edx
jle 0x5021a1
cmp byte [eax + edi], 0x26
jne 0x502194
mov ecx, 1
jmp 0x502196
xor ecx, ecx
xor edx, edx
add ebx, ecx
adc ebp, edx
inc eax
cmp eax, esi
jl 0x502187
call fcn.004ff2c0
test eax, eax
jne 0x5021bc
push ebp
push ebx
call fcn.004cb540
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x5021c9
pop edi
pop esi
pop ebp
mov eax, 7
pop ebx
add esp, 0x24
ret
mov cl, 0x2f
mov esi, 5
cmp byte [edi + 5], cl
jne 0x502242
cmp byte [edi + 6], cl
jne 0x502242
mov al, byte [edi + 7]
lea ebx, [edi + 7]
mov esi, 7
test al, al
je 0x502242
lea esp, [esp]
cmp al, cl
je 0x5021fd
mov al, byte [esi + edi + 1]
inc esi
test al, al
jne 0x5021f0
cmp esi, 7
je 0x502242
cmp esi, 0x10
jne 0x50222b
lea eax, [esi - 7]
mov ecx, ebx
mov edx, str.localhost
mov ebp, dword [edx]
cmp ebp, dword [ecx]
jne 0x50222b
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x502211
mov al, byte [ecx]
cmp al, byte [edx]
je 0x502242
push ebx
add esi, 0xfffffff9
push esi
push str.invalid_uri_authority:__.s
call fcn.004e0140
add esp, 0xc
jmp 0x502620
mov al, byte [esi + edi]
xor ebp, ebp
test al, al
je 0x50238f
nop
mov edx, dword [esp + 0x18]
cmp al, 0x23
je 0x50237d
inc esi
cmp al, 0x25
jne 0x502301
mov cl, byte [esi + edi]
movzx ebx, cl
test byte [ebx + 0x58a8d0], 8
je 0x502301
movzx ebx, byte [esi + edi + 1]
test byte [ebx + 0x58a8d0], 8
je 0x502301
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 0x5022f9
mov al, byte [esi + edi]
test al, al
je 0x50236e
cmp al, 0x23
je 0x50236e
test ebp, ebp
jne 0x5022d2
cmp al, 0x3f
jmp 0x5022e8
cmp ebp, 1
jne 0x5022e1
cmp al, 0x3d
je 0x50236e
jmp 0x5022e6
cmp ebp, 2
jne 0x5022ee
cmp al, 0x26
je 0x50236e
mov al, byte [esi + edi + 1]
inc esi
test al, al
jne 0x5022c2
jmp 0x50236e
mov edx, dword [esp + 0x18]
mov al, cl
jmp 0x502362
cmp ebp, 1
jne 0x502348
cmp al, 0x26
je 0x50230e
cmp al, 0x3d
jne 0x502362
mov ecx, dword [esp + 0x10]
cmp byte [ecx + edx - 1], 0
jne 0x502336
mov al, byte [esi + edi]
test al, al
je 0x50236e
cmp al, 0x23
je 0x50236e
cmp byte [esi + edi - 1], 0x26
je 0x50236e
mov al, byte [esi + edi + 1]
inc esi
test al, al
jne 0x502320
jmp 0x50236e
cmp al, 0x26
jne 0x502341
mov byte [ecx + edx], 0
inc edx
jmp 0x502360
mov ebp, 2
jmp 0x502360
test ebp, ebp
jne 0x502352
cmp al, 0x3f
je 0x50235b
jmp 0x502362
cmp ebp, 2
jne 0x502362
cmp al, 0x26
jne 0x502362
mov ebp, 1
xor al, al
mov ecx, dword [esp + 0x10]
mov byte [ecx + edx], al
inc edx
mov dword [esp + 0x18], edx
mov al, byte [esi + edi]
test al, al
jne 0x502250
mov edx, dword [esp + 0x18]
cmp ebp, 1
jne 0x50238f
mov eax, dword [esp + 0x10]
mov byte [eax + edx], 0
inc edx
mov dword [esp + 0x18], edx
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov byte [esi + eax], 0
mov byte [esi + eax + 1], 0
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x5023a5
sub eax, edx
and eax, 0x3fffffff
cmp byte [eax + esi + 1], 0
lea ecx, [eax + esi + 1]
je 0x5025f7
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x5023c7
sub eax, esi
and eax, 0x3fffffff
mov esi, eax
lea eax, [esi + ecx + 1]
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x5023eb
xor ebx, ebx
mov dword [esp + 0x18], ebx
jmp 0x502404
lea edi, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x5023f0
sub eax, edi
and eax, 0x3fffffff
mov ebx, eax
mov dword [esp + 0x18], eax
cmp esi, 3
jne 0x502433
cmp byte [ecx], 0x76
jne 0x502582
cmp byte [ecx + 1], 0x66
jne 0x502582
cmp byte [ecx + 2], 0x73
jne 0x502582
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x2c], ecx
jmp 0x502582
cmp esi, 5
jne 0x502466
cmp dword [ecx], 0x68636163
jne 0x502582
cmp byte [ecx + 4], 0x65
jne 0x502582
mov eax, 0x60000
mov dword [esp + 0x28], eax
mov edi, 0x59cf70
mov dword [esp + 0x20], str.cache
jmp 0x502499
cmp esi, 4
jne 0x502582
cmp dword [ecx], 0x65646f6d
jne 0x502582
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], 0x87
mov edi, 0x59cf88
and eax, 0x87
mov dword [esp + 0x20], str.access
mov ecx, dword [edi]
xor ebp, ebp
mov dword [esp + 0x24], eax
test ecx, ecx
je 0x50253c
mov eax, ecx
lea esi, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x5024b0
sub eax, esi
and eax, 0x3fffffff
cmp ebx, eax
jne 0x50252f
mov edx, dword [esp + 0x1c]
mov esi, ebx
cmp ebx, 4
jb 0x5024e4
lea ecx, [ecx]
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x5024e8
sub esi, 4
add ecx, 4
add edx, 4
cmp esi, 4
jae 0x5024d0
test esi, esi
je 0x50255c
movzx eax, byte [edx]
movzx ebx, byte [ecx]
sub eax, ebx
jne 0x502523
cmp esi, 1
jbe 0x502558
movzx eax, byte [edx + 1]
movzx ebx, byte [ecx + 1]
sub eax, ebx
jne 0x502523
cmp esi, 2
jbe 0x502558
movzx eax, byte [edx + 2]
movzx ebx, byte [ecx + 2]
sub eax, ebx
jne 0x502523
cmp esi, 3
jbe 0x502558
movzx eax, byte [edx + 3]
movzx ecx, byte [ecx + 3]
sub eax, ecx
mov ebx, dword [esp + 0x18]
sar eax, 0x1f
or eax, 1
je 0x50255c
mov ecx, dword [edi + ebp*8 + 8]
inc ebp
test ecx, ecx
jne 0x5024a9
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
push ecx
push edx
push str.no_such__s_mode:__s
call fcn.004e0140
add esp, 0xc
jmp 0x502620
mov ebx, dword [esp + 0x18]
mov eax, dword [edi + ebp*8 + 4]
test eax, eax
je 0x50253c
mov edx, eax
and edx, 0xffffff7f
cmp edx, dword [esp + 0x24]
jg 0x502597
mov ecx, dword [esp + 0x28]
not ecx
and ecx, dword [esp + 0x14]
or ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x1c]
cmp byte [ebx + eax + 1], 0
lea ecx, [ebx + eax + 1]
jne 0x5023c2
jmp 0x5025f7
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
push edx
push eax
push str._s_mode_not_allowed:__s
call fcn.004e0140
add esp, 0xc
mov esi, 3
jmp 0x502625
call fcn.004ff2c0
test eax, eax
jne 0x5021bc
lea eax, [esi + 2]
cdq
push edx
push eax
call fcn.004cb540
mov ebx, eax
add esp, 8
mov dword [esp + 0x10], ebx
test ebx, ebx
je 0x5021bc
push esi
push edi
push ebx
call fcn.0040dc50
add esp, 0xc
and dword [esp + 0x14], 0xffffffbf
mov byte [ebx + esi], 0
mov byte [ebx + esi + 1], 0
mov esi, dword [esp + 0x2c]
push esi
call fcn.004ff4a0
mov edx, dword [esp + 0x40]
add esp, 4
mov dword [edx], eax
test eax, eax
jne 0x50269d
push esi
push str.no_such_vfs:__s
call fcn.004e0140
add esp, 8
mov esi, 1
mov ecx, dword [esp + 0x44]
mov dword [ecx], eax
cmp dword [0x59bf10], 0
je 0x502685
mov eax, dword [0x5a2d00]
test eax, eax
je 0x502647
push eax
call dword [0x59bf64]
add esp, 4
mov edi, dword [esp + 0x10]
push edi
call dword [0x59bf40]
sub dword [0x5a2b48], eax
dec dword [0x5a2b6c]
push edi
call dword [0x59bf38]
mov eax, dword [0x5a2d00]
add esp, 8
test eax, eax
je 0x502693
push eax
call dword [0x59bf6c]
add esp, 4
mov dword [esp + 0x10], 0
jmp 0x5026a1
mov edx, dword [esp + 0x10]
push edx
call dword [0x59bf38]
add esp, 4
mov dword [esp + 0x10], 0
jmp 0x5026a1
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
mov dword [eax], ecx
mov eax, dword [esp + 0x10]
pop edi
mov dword [edx], eax
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret