Function at 0x401370
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x15c
mov eax, dword [0x405010]
test eax, eax
je 0x40138d
mov dword [esp], eax
call fcn.00402760
mov dword [esp], 0x400
call fcn.00402750
mov dword [0x405010], eax
xor eax, eax
mov dword [0x405030], eax
xor eax, eax
mov dword [0x405020], eax
call fcn.00401fc0
call fcn.00401fb0
test eax, eax
mov ebx, eax
je 0x40140b
mov eax, dword [eax + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 4]
mov dword [esp + 8], eax
mov eax, dword [ebx]
mov dword [esp], str.DLL_version:_t_d._d._d._d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x14]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], str.Driver_version:_t_d._d._d._d_r_n_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov dword [esp], str.bus_device__idVendor_idProduct_r_n
call fcn.004012e0
call fcn.00401fa0
mov dword [ebp - 0x11c], eax
test eax, eax
je 0x4018e7
mov eax, dword [ebp - 0x11c]
mov eax, dword [eax + 0x208]
test eax, eax
mov dword [ebp - 0x120], eax
je 0x4017ec
mov edx, dword [ebp - 0x11c]
add edx, 8
mov dword [ebp - 0x13c], edx
mov ecx, dword [ebp - 0x120]
movzx eax, word [ecx + 0x216]
mov dword [esp + 0x10], eax
movzx eax, word [ecx + 0x214]
mov dword [esp], str._s__s______04X__04X_r_n
mov dword [esp + 0xc], eax
mov eax, ecx
add eax, 8
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x13c]
mov dword [esp + 4], eax
call fcn.004012e0
mov edx, dword [ebp - 0x120]
mov dword [esp], edx
call fcn.00401f90
test eax, eax
mov ebx, eax
je 0x4014e3
mov ecx, dword [ebp - 0x120]
cmp byte [ecx + 0x21a], 0
jne 0x401882
mov eax, dword [ebp - 0x120]
cmp byte [eax + 0x21b], 0
jne 0x401843
mov ecx, dword [ebp - 0x120]
cmp byte [ecx + 0x21c], 0
jne 0x401800
mov dword [esp], ebx
call fcn.00401f70
mov edx, dword [ebp - 0x120]
mov eax, dword [edx + 0x21e]
test eax, eax
je 0x4017ca
xor ecx, ecx
xor ebx, ebx
mov dword [ebp - 0x144], ecx
mov ecx, dword [ebp - 0x120]
mov dword [ebp - 0x124], ebx
cmp byte [ecx + 0x21d], 0
je 0x4017d6
mov edx, dword [ebp - 0x144]
xor edi, edi
add eax, edx
mov dword [ebp - 0x128], eax
movzx eax, word [eax + 2]
mov dword [esp], str.__wTotalLength:__________d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov ecx, dword [ebp - 0x128]
movzx eax, byte [ecx + 4]
mov dword [esp], str.__bNumInterfaces:________d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov edx, dword [ebp - 0x128]
movzx eax, byte [edx + 5]
mov dword [esp], str.__bConfigurationValue:___d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov ecx, dword [ebp - 0x128]
movzx eax, byte [ecx + 6]
mov dword [esp], str.__iConfiguration:________d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov edx, dword [ebp - 0x128]
movzx eax, byte [edx + 7]
mov dword [esp], str.__bmAttributes:__________02xh_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov ecx, dword [ebp - 0x128]
movzx eax, byte [ecx + 8]
mov dword [esp], str.__MaxPower:______________d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
mov dword [ebp - 0x12c], edi
mov eax, dword [ebp - 0x128]
movzx edx, byte [eax + 4]
test dl, dl
je 0x401797
mov ecx, dword [ebp - 0x128]
xor esi, esi
mov dword [ebp - 0x134], esi
mov eax, dword [ecx + 9]
mov ecx, dword [ebp - 0x12c]
lea eax, [eax + ecx*8]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x130], eax
test ebx, ebx
jle 0x401782
xor ecx, ecx
mov dword [ebp - 0x140], ecx
nop
lea esi, [esi]
mov eax, dword [ebp - 0x130]
mov esi, dword [ebp - 0x140]
mov edx, dword [eax]
add esi, edx
movzx eax, byte [esi + 2]
mov dword [esp], str.____bInterfaceNumber:____d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [esi + 3]
mov dword [esp], str.____bAlternateSetting:___d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [esi + 4]
mov dword [esp], str.____bNumEndpoints:_______d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [esi + 5]
mov dword [esp], str.____bInterfaceClass:_____d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [esi + 6]
mov dword [esp], str.____bInterfaceSubClass:__d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [esi + 7]
mov dword [esp], str.____bInterfaceProtocol:__d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [esi + 8]
mov dword [esp], str.____iInterface:__________d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
xor eax, eax
mov dword [ebp - 0x138], eax
cmp byte [esi + 4], 0
je 0x401756
xor edi, edi
mov ebx, dword [esi + 9]
add ebx, edi
add edi, 0x11
movzx eax, byte [ebx + 2]
mov dword [esp], str.______bEndpointAddress:__02xh_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [ebx + 3]
mov dword [esp], str.______bmAttributes:______02xh_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, word [ebx + 4]
mov dword [esp], str.______wMaxPacketSize:____d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [ebx + 6]
mov dword [esp], str.______bInterval:_________d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [ebx + 7]
mov dword [esp], str.______bRefresh:__________d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
movzx eax, byte [ebx + 8]
mov dword [esp], str.______bSynchAddress:_____d_r_n
mov dword [esp + 4], eax
call fcn.004012e0
inc dword [ebp - 0x138]
movzx eax, byte [esi + 4]
cmp eax, dword [ebp - 0x138]
jg 0x4016c0
inc dword [ebp - 0x134]
mov edx, dword [ebp - 0x130]
add dword [ebp - 0x140], 0x15
mov ecx, dword [ebp - 0x134]
cmp dword [edx + 4], ecx
jg 0x401610
mov eax, dword [ebp - 0x128]
movzx edx, byte [eax + 4]
inc dword [ebp - 0x12c]
movzx eax, dl
cmp eax, dword [ebp - 0x12c]
jg 0x4015d8
inc dword [ebp - 0x124]
mov edx, dword [ebp - 0x120]
add dword [ebp - 0x144], 0x15
movzx eax, byte [edx + 0x21d]
cmp eax, dword [ebp - 0x124]
jle 0x4017d6
mov edx, dword [ebp - 0x120]
mov eax, dword [edx + 0x21e]
jmp 0x40151a
mov dword [esp], str.__Couldnt_retrieve_descriptors_r_n
call fcn.004012e0
mov ecx, dword [ebp - 0x120]
mov ecx, dword [ecx]
test ecx, ecx
mov dword [ebp - 0x120], ecx
jne 0x401453
mov eax, dword [ebp - 0x11c]
mov eax, dword [eax]
jmp 0x40141c
mov esi, 0x100
mov dword [esp + 0xc], esi
lea esi, [ebp - 0x118]
mov dword [esp + 8], esi
movzx eax, byte [ecx + 0x21c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401f80
test eax, eax
jle 0x4018c5
mov dword [esp + 4], esi
mov dword [esp], str.__Serial_Number:__s_r_n
call fcn.004012e0
jmp 0x4014db
mov edi, 0x100
lea esi, [ebp - 0x118]
mov dword [esp + 0xc], edi
mov dword [esp + 8], esi
movzx eax, byte [eax + 0x21b]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401f80
test eax, eax
jle 0x4018d6
mov dword [esp + 4], esi
mov dword [esp], str.__Product______:__s_r_n
call fcn.004012e0
jmp 0x4014c8
mov eax, 0x100
lea esi, [ebp - 0x118]
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
movzx eax, byte [ecx + 0x21a]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401f80
test eax, eax
jle 0x401940
mov dword [esp + 4], esi
mov dword [esp], str.__Manufacturer_:__s_r_n
call fcn.004012e0
jmp 0x4014b5
mov dword [esp], str.__Unable_to_fetch_serial_number_string_r_n
call fcn.004012e0
jmp 0x4014db
mov dword [esp], str.__Unable_to_fetch_product_string_r_n
call fcn.004012e0
jmp 0x4014c8
mov eax, dword [0x405010]
mov edi, 0xc
mov dword [esp + 4], edi
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, dword [0x405070]
mov dword [esp], eax
call fcn.004020e0
mov eax, dword [0x405010]
sub esp, 0x10
test eax, eax
je 0x401920
mov dword [esp], eax
call fcn.00402760
xor esi, esi
xor ebx, ebx
xor ecx, ecx
mov dword [0x405010], esi
mov dword [0x405030], ebx
mov dword [0x405020], ecx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], str.__Unable_to_fetch_manufacturer_string_r_n
call fcn.004012e0
jmp 0x4014b5