Function at 0x40889c
Capabilities:
Reference google public dns server

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x114
mov eax, dword [0x4c002c]
xor eax, ebp
mov dword [ebp + 0x74], eax
push esi
mov esi, ecx
cmp byte [esi + 0xc8c], 0
push edi
je 0x4088e7
mov al, byte [esi + 0xc8d]
test al, al
je 0x4088e7
lea edi, [ebp - 0x90]
mov byte [ebp - 0x90], 0x35
mov byte [ebp - 0x8f], 1
mov byte [ebp - 0x8e], al
call fcn.00408dad
cmp dword [esi + 0x56c], 0
je 0x408d93
mov al, byte [esi + 0xc8d]
cmp al, 4
je 0x408d93
cmp al, 6
je 0x408d93
push ebx
lea eax, [esi + 0x30]
push 0x4cd342
push eax
call fcn.0040d763
mov eax, dword [esi + 0x56c]
test byte [eax + 0x10], 1
pop ecx
pop ecx
je 0x408991
mov ebx, dword [eax + 0x1c]
test ebx, ebx
je 0x408991
mov al, byte [ebx]
mov byte [ebp - 0x91], al
inc ebx
jmp 0x40898b
cmp al, 0xff
je 0x408991
inc ebx
mov byte [ebp - 0x90], al
mov al, byte [ebx]
inc ebx
cmp byte [ebp - 0x91], 0
mov byte [ebp - 0x8f], al
je 0x408963
movzx ecx, byte [ebx]
cmp byte [ecx + esi + 0xa8c], 0
je 0x408982
movzx eax, al
push eax
lea eax, [ebp - 0x8e]
push ebx
push eax
call fcn.00486306
add esp, 0xc
lea edi, [ebp - 0x90]
call fcn.00408dad
movzx eax, byte [ebp - 0x8f]
add ebx, eax
mov al, byte [ebx]
test al, al
jne 0x408939
cmp byte [esi + 0xc8c], 0
je 0x408d92
cmp byte [esi + 0xc8d], 0
je 0x408d92
mov eax, dword [esi + 0x56c]
mov al, byte [eax + 0x14]
test al, al
jl 0x408a2b
movsx eax, al
imul eax, eax, 0x1c
mov ebx, dword [eax + 0x4de46c]
test ebx, ebx
je 0x408a2b
mov al, byte [ebx]
mov byte [ebp - 0x91], al
inc ebx
jmp 0x408a25
cmp al, 0xff
je 0x408a2b
inc ebx
mov byte [ebp - 0x90], al
mov al, byte [ebx]
inc ebx
cmp byte [ebp - 0x91], 0
mov byte [ebp - 0x8f], al
je 0x4089fd
movzx ecx, byte [ebx]
cmp byte [ecx + esi + 0xa8c], 0
je 0x408a1c
movzx eax, al
push eax
lea eax, [ebp - 0x8e]
push ebx
push eax
call fcn.00486306
add esp, 0xc
lea edi, [ebp - 0x90]
call fcn.00408dad
movzx eax, byte [ebp - 0x8f]
add ebx, eax
mov al, byte [ebx]
test al, al
jne 0x4089d3
mov ebx, dword [0x4f5d5c]
test ebx, ebx
je 0x408a98
mov al, byte [ebx]
mov byte [ebp - 0x91], al
inc ebx
jmp 0x408a92
cmp al, 0xff
je 0x408a98
inc ebx
mov byte [ebp - 0x90], al
mov al, byte [ebx]
inc ebx
cmp byte [ebp - 0x91], 0
mov byte [ebp - 0x8f], al
je 0x408a6a
movzx ecx, byte [ebx]
cmp byte [ecx + esi + 0xa8c], 0
je 0x408a89
movzx eax, al
push eax
lea eax, [ebp - 0x8e]
push ebx
push eax
call fcn.00486306
add esp, 0xc
lea edi, [ebp - 0x90]
call fcn.00408dad
movzx eax, byte [ebp - 0x8f]
add ebx, eax
mov al, byte [ebx]
test al, al
jne 0x408a40
movzx eax, byte [esi + 0xc8e]
imul eax, eax, 0x3c
mov eax, dword [eax + 0x4c7664]
lea edi, [ebp - 0x90]
mov byte [ebp - 0x90], 0x36
mov byte [ebp - 0x8f], 4
mov dword [ebp - 0x8e], eax
call fcn.00408dad
mov edi, 0x4ccc40
push edi
mov byte [ebp - 0x90], 0xf
call fcn.004863d4
inc al
mov byte [ebp - 0x8f], al
movzx eax, al
push eax
lea eax, [ebp - 0x8e]
push edi
push eax
call fcn.00486306
add esp, 0x10
lea edi, [ebp - 0x90]
call fcn.00408dad
cmp byte [esi + 0xbbf], 0
jne 0x408b30
push dword [0x4cdf08]
lea eax, [ebp - 0x8e]
push eax
mov byte [ebp - 0x90], 0x33
mov byte [ebp - 0x8f], 4
call fcn.0040388a
pop ecx
pop ecx
call fcn.00408dad
cmp byte [esi + 0xb8d], 0
jne 0x408b78
mov eax, dword [esi + 0x56c]
mov byte [ebp - 0x90], 1
mov byte [ebp - 0x8f], 4
mov al, byte [eax + 0x14]
test al, al
jl 0x408b62
movsx eax, al
imul eax, eax, 0x1c
mov eax, dword [eax + 0x4de468]
jmp 0x408b67
mov eax, dword [0x4cdf04]
lea edi, [ebp - 0x90]
mov dword [ebp - 0x8e], eax
call fcn.00408dad
lea edi, [esi + 0x404]
cmp byte [edi], 0
jne 0x408b90
mov al, byte [esi + 6]
lea ecx, [esi + 0x20]
push edi
call fcn.0040a2c8
pop ecx
mov eax, dword [esi + 0x56c]
mov eax, dword [eax + 0x20]
xor ebx, ebx
cmp eax, ebx
push edi
jne 0x408ba7
call fcn.0040a9a1
jmp 0x408bca
push eax
call dword [0x49655c]
test eax, eax
pop ecx
pop ecx
je 0x408bd4
mov eax, dword [esi + 0x56c]
push dword [eax + 0x20]
call dword [0x49668c]
push edi
call fcn.0040a9a1
pop ecx
pop ecx
mov ecx, dword [esi + 0x56c]
mov dword [ecx + 0x20], eax
cmp byte [esi + 0xb92], 0
jne 0x408d72
mov ecx, dword [0x4f5e74]
mov eax, dword [0x4f7384]
cmp ecx, eax
mov ecx, dword [0x4f7380]
mov byte [ebp - 0x90], 6
jl 0x408c5e
jg 0x408c09
mov edx, dword [0x4f5e70]
cmp edx, ecx
jbe 0x408c5e
mov edx, dword [0x4f5e7c]
cmp edx, eax
jl 0x408c88
jg 0x408c1e
mov eax, dword [0x4f5e78]
cmp eax, ecx
jbe 0x408c88
cmp byte [0x4f5e85], 1
mov byte [ebp - 0x8f], 8
lea edi, [ebp - 0x90]
jne 0x408c49
mov eax, dword [0x4cdf58]
mov dword [ebp - 0x8e], eax
mov eax, dword [0x4cdf5c]
jmp 0x408d67
mov eax, dword [0x4cdf5c]
mov dword [ebp - 0x8e], eax
mov eax, dword [0x4cdf58]
jmp 0x408d67
mov edx, dword [0x4f5e7c]
cmp edx, eax
jl 0x408c88
jg 0x408c73
mov eax, dword [0x4f5e78]
cmp eax, ecx
jbe 0x408c88
mov eax, dword [0x4cdf5c]
mov dword [ebp - 0x8e], eax
mov eax, dword [0x4cdf58]
jmp 0x408d5a
lea eax, [ebp - 0x98]
push eax
push ebx
push dword [0x4f5f88]
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0x9c], ebx
call fcn.00486da8
cmp eax, 0x6f
jne 0x408d20
push dword [ebp - 0x98]
mov edi, dword [0x4961f8]
push 8
call edi
push eax
call dword [0x4961f4]
mov ebx, eax
lea eax, [ebp - 0x98]
push eax
push ebx
push dword [0x4f5f88]
call fcn.00486da8
test eax, eax
jne 0x408d0b
lea eax, [ebx + 0x10]
push eax
mov dword [ebp - 0x9c], 1
mov byte [ebp - 0x8f], 4
call dword [0x496994]
push 2
push str.Set_Provide_DNS_OK___
mov dword [ebp - 0x8e], eax
call fcn.0040bdf3
pop ecx
pop ecx
push ebx
push 8
call edi
push eax
call dword [0x496200]
cmp dword [ebp - 0x9c], 0
jne 0x408d4a
movzx eax, byte [esi + 0xc8e]
imul eax, eax, 0x3c
mov eax, dword [eax + 0x4c7664]
push str.8.8.8.8
mov byte [ebp - 0x8f], 8
mov dword [ebp - 0x8e], eax
call dword [0x496994]
jmp 0x408d61
movzx eax, byte [esi + 0xc8e]
imul eax, eax, 0x3c
mov eax, dword [eax + 0x4c7664]
mov byte [ebp - 0x8f], 8
lea edi, [ebp - 0x90]
mov dword [ebp - 0x8a], eax
call fcn.00408dad
lea edi, [esi + 0x774]
cmp byte [edi], 0x76
jne 0x408d82
call fcn.00408dad
lea edi, [esi + 0x570]
cmp byte [edi], 0x52
jne 0x408d92
call fcn.00408dad
pop ebx
mov eax, dword [esi + 0x568]
mov ecx, dword [ebp + 0x74]
pop edi
xor ecx, ebp
mov byte [eax], 0xff
pop esi
call fcn.004862e5
add ebp, 0x78
leave
ret