Function at 0x529570
Capabilities:
Receive data
Receive data on socket

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5c4b7b
mov eax, dword fs:[0]
push eax
sub esp, 0x680
mov eax, dword [0x68cc00]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x14]
lea ecx, [ebp - 0x668]
mov esi, dword [ebp + 0x28]
xorps xmm0, xmm0
mov ebx, dword [ebp + 0x24]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x66c], eax
mov eax, dword [ebp + 0x18]
push str.dns_over_udp
mov dword [ebp - 0x674], eax
mov eax, dword [ebp + 0x1c]
push esi
mov dword [ebp - 0x68c], eax
mov dword [ebp - 0x688], ebx
movq qword [ebp - 0x668], xmm0
mov dword [ebp - 0x660], 0
call fcn.00447ef0
mov ecx, dword [ebp - 0x66c]
mov dword [ebp - 4], 0
call fcn.00402f10
cmp eax, 0x200
jbe 0x529611
push str.DNS_request_is_greater_than_512_bytes.
jmp 0x5299bd
test edi, edi
je 0x5299b8
cmp dword [ebp + 0xc], 0
jle 0x5299b8
call fcn.004fcd60
test al, al
jne 0x529636
push str.WSAStartup_failed.
jmp 0x5299bd
push esi
push ebx
push dword [ebp + 0x20]
push edi
call fcn.0052a420
add esp, 0x10
test al, al
jne 0x529652
push str.UDP_init_for_nameserver_1_failed.
jmp 0x5299bd
cmp dword [ebp + 0xc], 1
push esi
mov dword [ebp - 0x670], 0
push ebx
jne 0x529780
mov ecx, dword [ebp + 0x20]
mov eax, 0x7d0
test ecx, ecx
cmovne eax, ecx
mov ecx, 0x5dc
cmp eax, ecx
mov dword [ebp - 0x67c], eax
push eax
push dword [ebp - 0x66c]
cmovb ecx, eax
mov edx, eax
sub edx, ecx
mov dword [ebp - 0x678], ecx
push edi
mov dword [ebp - 0x680], edx
call fcn.0052a9e0
add esp, 0x14
test al, al
jne 0x5296b3
push str.1st_UDP_send_for_nameserver_1_failed.
jmp 0x529768
push esi
mov ecx, ebx
call fcn.0046d560
test al, al
jne 0x52976f
push esi
push ebx
push dword [ebp - 0x678]
lea eax, [ebp - 0x684]
mov dword [ebp - 0x684], 0xffffffff
push eax
push edi
push 1
call fcn.0052ab20
add esp, 0x18
test al, al
jne 0x52981b
cmp byte [ebx + 0x15], al
jne 0x52976f
cmp byte [ebx + 0x16], al
jne 0x52976f
cmp dword [ebp - 0x680], 0
jne 0x529709
push str.DNS_timeout.
jmp 0x529768
push esi
push ebx
push dword [ebp - 0x67c]
push dword [ebp - 0x66c]
push edi
call fcn.0052a9e0
add esp, 0x14
test al, al
jne 0x52972b
push str.2nd_UDP_send_for_nameserver_1_failed.
jmp 0x529768
push esi
mov ecx, ebx
call fcn.0046d560
test al, al
jne 0x52976f
push esi
push ebx
push dword [ebp - 0x680]
lea eax, [ebp - 0x684]
push eax
push edi
push 1
call fcn.0052ab20
add esp, 0x18
test al, al
jne 0x52981b
cmp byte [ebx + 0x15], al
jne 0x52976f
cmp byte [ebx + 0x16], al
jne 0x52976f
push str.Waited__but_no_data_ready_on_UDP_socket.
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
push esi
push edi
push 1
call fcn.0052a3e0
add esp, 0xc
jmp 0x5299c4
cmp dword [0x69105c], 0xa
mov eax, dword [ebp + 0x20]
push eax
push dword [ebp - 0x66c]
lea eax, [ebp - 0x670]
push edi
push eax
jne 0x5297d2
call fcn.0052a7b0
add esp, 0x18
test al, al
je 0x52984a
mov eax, dword [ebp - 0x670]
test eax, eax
jle 0x5297ce
imul eax, eax, 0x88
lea ecx, [edi + 0x14]
add ecx, eax
call fcn.0042f3c0
push eax
call fcn.00486750
add esp, 4
xor eax, eax
jmp 0x529807
call fcn.0052a4f0
add esp, 0x18
test al, al
je 0x52984a
mov eax, dword [ebp - 0x670]
test eax, eax
jle 0x529801
imul eax, eax, 0x88
lea ecx, [edi + 0x14]
add ecx, eax
call fcn.0042f3c0
push eax
call fcn.00486750
add esp, 4
mov eax, dword [0x69105c]
inc eax
cmp dword [ebp + 0xc], 2
mov dword [0x69105c], eax
jle 0x52981b
push esi
call fcn.00485ef0
add esp, 4
push 0x640
lea eax, [ebp - 0x650]
push 0
push eax
call fcn.0040de30
add esp, 0xc
mov ecx, ebx
push esi
call fcn.0046d560
test al, al
je 0x52985c
push dword [0x68a5d8]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
push esi
push edi
push dword [ebp + 0xc]
call fcn.0052a3e0
add esp, 0xc
jmp 0x5299c4
imul eax, dword [ebp - 0x670], 0x88
lea ecx, [ebp - 0x650]
push 0
add eax, edi
push 0x640
push ecx
mov dword [ebp - 0x67c], eax
push dword [eax]
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0x678], eax
cmp eax, 0xffffffff
jne 0x5298b6
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2733
je 0x5298af
push esi
push 0
push eax
call fcn.004ff220
add esp, 0xc
push str.Failed_to_receive_DNS_query_response_on_UDP_socket.
jmp 0x529843
push str.Received_0_bytes.
jmp 0x529843
test eax, eax
jne 0x5298c1
push str.Received_0_response_from_recv.
jmp 0x529843
push esi
push edi
push dword [ebp + 0xc]
call fcn.0052a3e0
mov eax, dword [ebp - 0x67c]
add esp, 0xc
xor ecx, ecx
mov edx, dword [eax + 8]
test edx, edx
jle 0x529909
add eax, 0xd
mov bl, byte [ebp - 0x650]
cmp byte [eax - 1], bl
mov ebx, dword [ebp - 0x688]
jne 0x529901
mov ebx, dword [ebp - 0x64f]
cmp byte [eax], bl
mov ebx, dword [ebp - 0x688]
je 0x529913
inc ecx
add eax, 2
cmp ecx, edx
jl 0x5298e0
push str.Response_ID_not_equal_to_request_ID.
jmp 0x5299bd
mov ecx, dword [ebp - 0x674]
lea eax, [ebp - 0x650]
push esi
push dword [ebp - 0x678]
push eax
call fcn.005a1d70
test al, al
je 0x529937
mov bl, 1
jmp 0x5299c6
mov eax, dword [ebp - 0x674]
cmp byte [eax + 5], 0
je 0x5299aa
cmp byte [ebx + 0x15], 0
jne 0x5299aa
push str.fallbackToTcp
xorps xmm0, xmm0
mov dword [ebp - 0x654], 0
push esi
lea ecx, [ebp - 0x65c]
movq qword [ebp - 0x65c], xmm0
call fcn.00447ef0
push esi
push ebx
push dword [ebp + 0x20]
mov byte [ebp - 4], 1
push dword [ebp - 0x68c]
push dword [ebp - 0x674]
push dword [ebp - 0x66c]
push 0
push edi
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.005291f0
add esp, 0x28
lea ecx, [ebp - 0x65c]
mov bl, al
call fcn.00447ff0
jmp 0x5299c6
mov eax, dword [esi]
mov ecx, esi
push str.Received_invalid_or_incomplete_DNS_response.
call dword [eax + 0x18]
jmp 0x5299c4
push str.Invalid_args
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
xor bl, bl
lea ecx, [ebp - 0x668]
call fcn.00447ff0
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005af5a8
mov esp, ebp
pop ebp
ret