Function at 0x409c20
Capabilities:
Get local ipv4 addresses
Get mac address on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0xcc]
push ebx
sub esp, 0x110
mov ebx, dword [sym.imp.iphlpapi.dll_GetAdaptersAddresses]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call ebx
sub esp, 0x14
mov esi, eax
mov eax, 0x6d4
call fcn.00401820
xor eax, eax
cmp esi, 0x57
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.expected_ERROR_INVALID_PARAMETER_got__lu_n
mov dword [esp], eax
call fcn.00402000
mov dword [ebp - 0xcc], 0x7fffffff
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call ebx
sub esp, 0x14
mov esi, eax
mov eax, 0x6d9
call fcn.00401820
xor eax, eax
cmp esi, 0x6f
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.expected_ERROR_BUFFER_OVERFLOW__got__lu_n
mov dword [esp], eax
call fcn.00402000
cmp esi, 0x6f
je 0x409cf3
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebp - 0xc8], 0x7fffffff
lea esi, [ebp - 0xc8]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x20
mov dword [esp], 0
call ebx
sub esp, 0x14
mov dword [ebp - 0xd0], eax
mov eax, 0x6df
call fcn.00401820
mov edx, dword [ebp - 0xd0]
xor eax, eax
mov dword [esp + 4], str.expected_ERROR_BUFFER_OVERFLOW__got__lu_n
cmp edx, 0x6f
mov dword [esp + 8], edx
sete al
mov dword [esp], eax
call fcn.00402000
mov eax, 0x6e0
call fcn.00401820
mov edx, dword [ebp - 0xc8]
mov eax, dword [ebp - 0xcc]
mov dword [esp + 4], str.expected__ld__got__ld_n
cmp edx, eax
mov dword [esp + 8], eax
sete al
mov dword [esp + 0xc], edx
movzx eax, al
mov dword [esp], eax
call fcn.00402000
mov edx, dword [sym.imp.msvcrt.dll_malloc]
mov eax, dword [ebp - 0xcc]
mov dword [esp], eax
mov dword [ebp - 0xd4], edx
call edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], eax
mov dword [ebp - 0xd0], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call ebx
sub esp, 0x14
mov edi, eax
mov eax, 0x6e4
call fcn.00401820
xor eax, eax
test edi, edi
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS_got__lu_n
mov dword [esp], eax
call fcn.00402000
mov ecx, dword [ebp - 0xd0]
mov eax, dword [sym.imp.msvcrt.dll_free]
mov dword [esp], ecx
mov dword [ebp - 0xe4], eax
call eax
mov eax, dword [ebp - 0xcc]
add eax, eax
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xc8], eax
mov dword [esp], eax
mov edx, dword [ebp - 0xd4]
call edx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
mov dword [ebp - 0xd0], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x30
mov dword [esp], 0
call ebx
mov edx, dword [ebp - 0xd0]
sub esp, 0x14
cmp eax, 0x6f
mov edi, eax
jne 0x409ec0
mov edi, edx
lea esi, [esi]
mov eax, dword [ebp - 0xc8]
add eax, eax
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xc8], eax
mov dword [esp], edi
mov dword [esp + 4], eax
call dword [sym.imp.msvcrt.dll_realloc]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
mov edi, eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x30
mov dword [esp], 0
call ebx
sub esp, 0x14
cmp eax, 0x6f
je 0x409e70
mov edx, edi
mov edi, eax
mov eax, 0x6f3
mov dword [ebp - 0xd0], edx
call fcn.00401820
test edi, edi
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS_got__lu_n
sete bl
movzx eax, al
mov dword [esp], eax
call fcn.00402000
mov eax, 0x6f4
call fcn.00401820
mov eax, dword [ebp - 0xcc]
mov ecx, dword [ebp - 0xc8]
mov dword [esp + 4], str.expected__ld__got__ld_n
cmp ecx, eax
mov dword [esp + 8], eax
sete al
mov dword [esp + 0xc], ecx
movzx eax, al
mov dword [esp], eax
call fcn.00402000
mov edx, dword [ebp - 0xd0]
test edx, edx
je 0x40a8bd
test bl, bl
je 0x40a8bd
mov dword [ebp - 0xd4], 0
mov edi, edx
mov dword [ebp - 0xe8], edx
lea esi, [esi]
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x6fd
mov edx, dword [edi]
mov dword [esp + 4], str.Unknown_structure_size_of__lu_bytes_n
cmp edx, 0x178
mov dword [esp + 8], edx
sete al
cmp edx, 0x90
sete dl
or eax, edx
movzx eax, al
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x700
xor eax, eax
mov dword [esp + 4], str.DnsSuffix_is_not_a_valid_pointer_n
mov ecx, dword [edi + 0x20]
test ecx, ecx
setne al
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x701
xor eax, eax
mov dword [esp + 4], str.Description_is_not_a_valid_pointer_n
mov ebx, dword [edi + 0x24]
test ebx, ebx
setne al
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x702
xor eax, eax
mov dword [esp + 4], str.FriendlyName_is_not_a_valid_pointer_n
mov esi, dword [edi + 0x28]
test esi, esi
setne al
mov dword [esp], eax
call fcn.00402000
mov edx, dword [edi + 0x34]
test edx, edx
je 0x40a04f
xor esi, esi
lea esi, [esi]
movzx eax, byte [edi + esi + 0x2c]
lea ebx, [esi + esi*2]
mov dword [esp + 4], str._02X_
add esi, 1
mov dword [esp + 8], eax
lea eax, [ebp - 0x8c]
add eax, ebx
mov dword [esp], eax
call fcn.00401190
cmp esi, dword [edi + 0x34]
jb 0x40a020
lea edx, [ebx + 2]
mov byte [ebp + edx - 0x8c], 0
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x707
mov eax, dword [edi + 0x40]
mov esi, dword [edi + 0x24]
mov dword [ebp - 0xd8], eax
mov eax, dword [edi + 0x38]
mov dword [ebp - 0xdc], eax
mov eax, dword [edi + 0x3c]
mov dword [ebp - 0xe0], eax
test esi, esi
je 0x40a890
mov eax, esi
shr eax, 0x10
je 0x40a820
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xd0], str._invalid_
sub esp, 8
test eax, eax
jne 0x40a0c9
mov eax, esi
call fcn.00401840
mov dword [ebp - 0xd0], eax
mov esi, dword [edi + 0x20]
test esi, esi
je 0x40a844
mov eax, esi
shr eax, 0x10
je 0x40a7f0
mov dword [esp + 4], 0xffffffff
mov ebx, str._invalid_
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40a105
mov eax, esi
call fcn.00401840
mov ebx, eax
mov esi, dword [edi + 0x28]
test esi, esi
je 0x40a810
mov eax, esi
shr eax, 0x10
je 0x40a7d0
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x40a141
mov eax, esi
call fcn.00401840
mov edx, dword [ebp - 0xd8]
lea ecx, [ebp - 0x8c]
mov dword [esp + 0x24], edx
mov edx, dword [ebp - 0xdc]
mov dword [esp + 0x20], edx
mov edx, dword [ebp - 0xe0]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edx
mov edx, dword [ebp - 0xd0]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 8], eax
mov eax, dword [edi + 4]
mov dword [esp], str.idx__lu_name__s__s_dns__s_descr__s_phys__s_mtu__lu_flags__08lx_type__lu_n
mov dword [esp + 4], eax
call fcn.00401b30
mov ebx, dword [edi + 0x10]
test ebx, ebx
je 0x40a3ed
mov dword [ebp - 0xd0], edi
mov esi, 1
mov edi, ebx
mov ebx, dword [ebp - 0xd4]
jmp 0x40a27c
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x71e
mov eax, dword [edi + 0x1c]
mov dword [esp + 4], str.bad_address_duplication_value__d_n
mov dword [esp + 8], eax
and eax, 0xfffffffd
setne al
movzx eax, al
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x720
xor eax, eax
cmp dword [edi], 0x2f
jbe 0x40a20f
movzx eax, byte [edi + 0x2c]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x24]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x20]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x14]
mov dword [esp + 8], eax
mov eax, dword [edi + 4]
mov dword [esp], str.__flags__08lx_origin__u__u_state__u_lifetime__lu__lu__lu_prefix__u_n
mov dword [esp + 4], eax
call fcn.00401b30
mov eax, dword [edi + 0xc]
test byte [edi + 4], 1
cmovne ebx, esi
movzx eax, word [eax]
cmp ax, 2
je 0x40a3a0
cmp ax, 0x17
je 0x40a790
mov edi, dword [edi + 8]
test edi, edi
je 0x40a3e1
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x70e
mov eax, dword [edi]
mov dword [esp + 4], str.Unknown_structure_size_of__lu_bytes_n
mov dword [esp + 8], eax
sub eax, 0x2c
and eax, 0xfffffffb
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x711
mov eax, dword [edi + 0x14]
mov dword [esp + 4], str.bad_address_config_value__d_n
test eax, eax
mov dword [esp + 8], eax
setne al
movzx eax, al
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x713
mov eax, dword [edi + 0x14]
mov dword [esp + 4], str.bad_address_config_value__d_n
mov dword [esp + 8], eax
mov edx, dword [edi + 0x18]
xor eax, eax
test edx, edx
setne al
mov dword [esp], eax
call fcn.00402000
mov eax, dword [edi + 0x14]
and eax, 0xfffffffd
cmp eax, 1
jne 0x40a1c0
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x719
mov dword [esp + 4], str.expected_non_zero_value_n
mov eax, dword [edi + 0x20]
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x71a
mov dword [esp + 4], str.expected_non_zero_value_n
mov eax, dword [edi + 0x24]
mov dword [esp], eax
call fcn.00402000
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x71b
mov dword [esp + 4], str.expected_non_zero_n
mov eax, dword [edi + 0x28]
mov dword [esp], eax
call fcn.00402000
jmp 0x40a1c0
call fcn.0040f800
mov ecx, dword [ebp - 0xd0]
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x729
mov eax, dword [ecx + 0x28]
mov dword [esp + 4], str.expected_Ipv4Enabled_flag_to_be_set_in_interface__ls_n
mov dword [esp + 8], eax
movsx eax, byte [ecx + 0x38]
shr eax, 0x1f
mov dword [esp], eax
call fcn.00402000
mov edi, dword [edi + 8]
test edi, edi
jne 0x40a27c
mov dword [ebp - 0xd4], ebx
mov edi, dword [ebp - 0xd0]
mov byte [ebp - 0x8c], 0
lea ebx, [edi + 0x4c]
lea esi, [edi + 0x8c]
lea esi, [esi]
lea eax, [ebp - 0x8c]
add ebx, 4
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_strlen]
mov edx, dword [ebx - 4]
lea ecx, [ebp - 0x8c]
mov dword [esp + 4], str._ld
add eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.00401190
cmp ebx, esi
jne 0x40a400
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x731
lea eax, [ebp - 0x8c]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x48]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x44]
mov dword [esp], str.status__u_index__lu_zone__s_n
mov dword [esp + 4], eax
call fcn.00401b30
mov esi, dword [edi + 0x8c]
test esi, esi
je 0x40a4b2
lea esi, [esi]
call fcn.0040f800
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x735
mov eax, dword [esi + 4]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x14]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x10]
mov dword [esp], str.__prefix__u__lu_flags__08lx_n
mov dword [esp + 4], eax
call fcn.00401b30
mov esi, dword [esi + 8]
test esi, esi
jne 0x40a478
cmp dword [edi], 0x177
jbe 0x40a736
mov eax, 0x73b
call fcn.00401820
mov eax, dword [edi + 0xd8]
mov dword [ebp - 0xd8], eax
mov eax, dword [edi + 0xd4]
mov dword [ebp - 0xd0], eax
lea eax, [edi + 0xc4]
mov ecx, eax
shr ecx, 0x10
je 0x40a89f
movzx eax, byte [edi + 0xd3]
mov dword [esp + 0x2c], eax
movzx eax, byte [edi + 0xd2]
mov dword [esp + 0x28], eax
movzx eax, byte [edi + 0xd1]
mov dword [esp + 0x24], eax
movzx eax, byte [edi + 0xd0]
mov dword [esp + 0x20], eax
movzx eax, byte [edi + 0xcf]
mov dword [esp + 0x1c], eax
movzx eax, byte [edi + 0xce]
mov dword [esp + 0x18], eax
movzx eax, byte [edi + 0xcd]
mov dword [esp + 0x14], eax
movzx eax, byte [edi + 0xcc]
mov dword [esp + 0x10], eax
movzx eax, word [edi + 0xca]
mov dword [esp + 0xc], eax
movzx eax, word [edi + 0xc8]
mov dword [esp + 8], eax
mov eax, dword [edi + 0xc4]
mov dword [esp], str._08x__04x__04x__02x_02x__02x_02x_02x_02x_02x_02x
mov dword [esp + 4], eax
call fcn.004013e0
mov dword [ebp - 0xdc], eax
mov eax, dword [edi + 0x9c]
mov esi, dword [edi + 0xac]
mov ebx, dword [edi + 0xa8]
mov edx, dword [edi + 0x98]
test eax, eax
je 0x40a870
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], str._lx_08lx
call fcn.004013e0
mov edx, eax
mov eax, dword [edi + 0x94]
mov dword [ebp - 0xe0], edx
mov ecx, dword [edi + 0x90]
test eax, eax
je 0x40a850
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], str._lx_08lx
call fcn.004013e0
mov edx, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xd8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0xd0]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0xdc]
mov dword [esp + 8], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], esi
mov dword [esp + 4], eax
mov dword [esp + 0xc], ebx
mov dword [esp], str.speed__s__s_metrics__lu__lu_guid__s_type__u__u_n
call fcn.00401b30
lea eax, [ebp - 0xc4]
mov dword [esp + 4], eax
lea eax, [edi + 0xb0]
mov dword [esp], eax
call dword [sym.imp.iphlpapi.dll_ConvertInterfaceLuidToGuid]
sub esp, 8
mov esi, eax
mov eax, 0x742
call fcn.00401820
xor eax, eax
test esi, esi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.got__lu_n
lea esi, [ebp - 0xb3]
mov dword [esp], eax
call fcn.00402000
movzx eax, byte [ebp - 0xb5]
mov dword [esp + 0x30], eax
movzx eax, byte [ebp - 0xb6]
mov dword [esp + 0x2c], eax
movzx eax, byte [ebp - 0xb7]
mov dword [esp + 0x28], eax
movzx eax, byte [ebp - 0xb8]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp - 0xb9]
mov dword [esp + 0x20], eax
movzx eax, byte [ebp - 0xba]
mov dword [esp + 0x1c], eax
movzx eax, byte [ebp - 0xbb]
mov dword [esp + 0x18], eax
movzx eax, byte [ebp - 0xbc]
mov dword [esp + 0x14], eax
movzx eax, word [ebp - 0xbe]
mov dword [esp + 0x10], eax
movzx eax, word [ebp - 0xc0]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xc4]
mov dword [esp + 4], str._08lx__04x__04x__02x_02x__02x_02x_02x_02x_02x_02x
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.00401190
mov eax, 0x747
call fcn.00401820
mov edx, dword [edi + 0xc]
mov dword [esp + 4], esi
mov dword [esp], edx
mov dword [ebp - 0xd0], edx
call dword [sym.imp.msvcrt.dll__stricmp]
mov dword [esp + 0xc], esi
mov edx, dword [ebp - 0xd0]
test eax, eax
mov dword [esp + 4], str.expected__s_got__s_n
sete al
mov dword [esp + 8], edx
movzx eax, al
mov dword [esp], eax
call fcn.00402000
mov edi, dword [edi + 8]
test edi, edi
jne 0x409f50
mov edx, dword [ebp - 0xe8]
mov eax, 0x749
mov dword [ebp - 0xd0], edx
call fcn.00401820
mov dword [esp + 4], str.Did_not_find_any_dns_eligible_addresses._n
mov eax, dword [ebp - 0xd4]
mov dword [esp], eax
call fcn.00402000
mov edx, dword [ebp - 0xd0]
mov dword [esp], edx
mov eax, dword [ebp - 0xe4]
call eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.0040f800
mov ecx, dword [ebp - 0xd0]
mov dword [eax], 0x4141a7
mov dword [eax + 4], 0x72b
mov eax, dword [ecx + 0x28]
mov dword [esp + 4], str.expected_Ipv6Enabled_flag_to_be_set_in_interface__ls_n
mov dword [esp + 8], eax
movzx eax, byte [ecx + 0x39]
and eax, 1
mov dword [esp], eax
call fcn.00402000
jmp 0x40a271
movzx esi, si
mov dword [esp], str._04x
mov dword [esp + 4], esi
call fcn.004013e0
jmp 0x40a141
movzx esi, si
mov dword [esp], str._04x
mov dword [esp + 4], esi
call fcn.004013e0
mov esi, dword [edi + 0x28]
mov ebx, eax
test esi, esi
jne 0x40a110
mov eax, str._null_
jmp 0x40a141
movzx esi, si
mov dword [esp], str._04x
mov dword [esp + 4], esi
call fcn.004013e0
mov esi, dword [edi + 0x20]
mov dword [ebp - 0xd0], eax
test esi, esi
jne 0x40a0d4
mov ebx, str._null_
jmp 0x40a105
mov dword [esp + 4], ecx
mov dword [esp], 0x416b80
call fcn.004013e0
mov edx, dword [ebp - 0xe0]
jmp 0x40a5e5
mov dword [esp + 4], edx
mov dword [esp], 0x416b80
call fcn.004013e0
mov edx, eax
jmp 0x40a5b1
mov dword [ebp - 0xd0], str._null_
jmp 0x40a0c9
movzx eax, ax
mov dword [esp], str._guid_0x_04hx_
mov dword [esp + 4], eax
call fcn.004013e0
mov dword [ebp - 0xdc], eax
jmp 0x40a57b
mov dword [ebp - 0xd4], 0
jmp 0x40a747