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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5c8c8b
mov eax, dword fs:[0]
push eax
sub esp, 0x674
mov eax, dword [0x692c00]
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 + 0x18]
lea ecx, [ebp - 0x668]
mov esi, dword [ebp + 0x28]
xorps xmm0, xmm0
mov ebx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x678], eax
mov eax, dword [ebp + 0x1c]
push str.dns_over_udp
mov dword [ebp - 0x680], eax
mov eax, dword [ebp + 0x24]
push esi
mov dword [ebp - 0x674], ebx
mov dword [ebp - 0x66c], eax
movq qword [ebp - 0x668], xmm0
mov dword [ebp - 0x660], 0
call fcn.004481f0
mov ecx, ebx
mov dword [ebp - 4], 0
call fcn.00402fb0
cmp eax, 0x200
jbe 0x52c51d
push str.DNS_request_is_greater_than_512_bytes.
jmp 0x52c810
test edi, edi
je 0x52c80b
mov ebx, dword [ebp + 0xc]
test ebx, ebx
jle 0x52c80b
call fcn.004fddd0
test al, al
jne 0x52c543
push str.WSAStartup_failed.
jmp 0x52c810
push esi
push dword [ebp - 0x66c]
push dword [ebp + 0x20]
push edi
call fcn.0052d330
add esp, 0x10
test al, al
jne 0x52c564
push str.UDP_init_for_nameserver_1_failed.
jmp 0x52c810
mov eax, dword [ebp + 0x20]
mov dword [ebp - 0x670], 0
push esi
push dword [ebp - 0x66c]
push eax
push dword [ebp - 0x674]
push edi
cmp ebx, 1
jne 0x52c5a5
call fcn.0052d400
add esp, 0x14
test al, al
jne 0x52c634
push esi
push edi
push ebx
call fcn.0052d2f0
add esp, 0xc
jmp 0x52c817
cmp dword [0x6970ac], 0xa
lea eax, [ebp - 0x670]
push eax
jne 0x52c5ec
call fcn.0052d970
add esp, 0x18
test al, al
je 0x52c667
mov eax, dword [ebp - 0x670]
test eax, eax
jle 0x52c5e8
lea eax, [eax + eax*8]
shl eax, 4
lea ecx, [edi + 0x1c]
add ecx, eax
call fcn.0042f610
push eax
call fcn.00487220
add esp, 4
xor eax, eax
jmp 0x52c621
call fcn.0052d6a0
add esp, 0x18
test al, al
je 0x52c667
mov eax, dword [ebp - 0x670]
test eax, eax
jle 0x52c61b
lea eax, [eax + eax*8]
shl eax, 4
lea ecx, [edi + 0x1c]
add ecx, eax
call fcn.0042f610
push eax
call fcn.00487220
add esp, 4
mov eax, dword [0x6970ac]
inc eax
mov dword [0x6970ac], eax
cmp ebx, 2
jle 0x52c634
push esi
call fcn.004867f0
add esp, 4
push 0x640
lea eax, [ebp - 0x650]
push 0
push eax
call fcn.0040dfc0
mov ecx, dword [ebp - 0x66c]
add esp, 0xc
push esi
call fcn.0046ee20
test al, al
je 0x52c677
push dword [0x6905e0]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
push esi
push edi
push ebx
call fcn.0052d2f0
add esp, 0xc
jmp 0x52c817
mov eax, dword [ebp - 0x670]
lea ecx, [ebp - 0x650]
push 0
push 0x640
push ecx
lea eax, [eax + eax*8]
shl eax, 4
add eax, edi
mov dword [ebp - 0x670], eax
push dword [eax]
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0x67c], eax
cmp eax, 0xffffffff
jne 0x52c701
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2743
jne 0x52c6da
mov eax, dword [ebp - 0x66c]
push esi
push 0
push 0x2743
mov byte [eax + 0x18], 1
call fcn.00500330
add esp, 0xc
push str.Failed_to_receive_DNS_query_response_on_UDP_socket.
jmp 0x52c660
cmp eax, 0x2733
je 0x52c6f7
push esi
push 0
push eax
call fcn.00500330
add esp, 0xc
push str.Failed_to_receive_DNS_query_response_on_UDP_socket.
jmp 0x52c660
push str.Received_0_bytes.
jmp 0x52c660
test eax, eax
jne 0x52c70f
push str.Received_0_response_from_recv.
jmp 0x52c660
push esi
push edi
push ebx
call fcn.0052d2f0
mov eax, dword [ebp - 0x670]
add esp, 0xc
xor ecx, ecx
mov edx, dword [eax + 8]
test edx, edx
jle 0x52c753
add eax, 0xd
nop dword [eax]
mov bl, byte [ebp - 0x650]
cmp byte [eax - 1], bl
mov ebx, dword [ebp + 0xc]
jne 0x52c74b
mov ebx, dword [ebp - 0x64f]
cmp byte [eax], bl
mov ebx, dword [ebp + 0xc]
je 0x52c75d
inc ecx
add eax, 2
cmp ecx, edx
jl 0x52c730
push str.Response_ID_not_equal_to_request_ID.
jmp 0x52c810
mov ecx, dword [ebp - 0x678]
lea eax, [ebp - 0x650]
push esi
push dword [ebp - 0x67c]
push eax
call fcn.005a5c90
test al, al
je 0x52c781
mov bl, 1
jmp 0x52c819
mov eax, dword [ebp - 0x678]
cmp byte [eax + 5], 0
je 0x52c7fd
mov eax, dword [ebp - 0x66c]
cmp byte [eax + 0x15], 0
jne 0x52c7fd
push str.fallbackToTcp
xorps xmm0, xmm0
mov dword [ebp - 0x654], 0
push esi
lea ecx, [ebp - 0x65c]
movq qword [ebp - 0x65c], xmm0
call fcn.004481f0
push esi
push dword [ebp - 0x66c]
mov byte [ebp - 4], 1
push dword [ebp + 0x20]
push dword [ebp - 0x680]
push dword [ebp - 0x678]
push dword [ebp - 0x674]
push 0
push edi
push ebx
push dword [ebp + 8]
call fcn.0052c100
add esp, 0x28
lea ecx, [ebp - 0x65c]
mov bl, al
call fcn.004482f0
jmp 0x52c819
mov eax, dword [esi]
mov ecx, esi
push str.Received_invalid_or_incomplete_DNS_response.
call dword [eax + 0x18]
jmp 0x52c817
push str.Invalid_args
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
xor bl, bl
lea ecx, [ebp - 0x668]
call fcn.004482f0
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.005b34c8
mov esp, ebp
pop ebp
ret