Function at 0x46ec60
Capabilities:
Enumerate pe sections
Read file on windows

Disassembly:
sub esp, 0x598
mov eax, dword [0x4bdcf8]
xor eax, esp
mov dword [esp + 0x594], eax
mov eax, dword [esp + 0x59c]
push ebx
push edi
mov edi, ecx
push 0x4b1b94
push eax
mov dword [esp + 0x20], edi
call fcn.004656f1
mov ebx, eax
add esp, 8
mov dword [esp + 0xc], ebx
test ebx, ebx
je 0x46ef17
push ebp
push ebx
call fcn.00465662
push ebx
push 1
mov ebp, eax
lea eax, [esp + 0x32c]
push 0x80
push eax
call fcn.004787ff
movsx ecx, word [esp + 0x338]
movsx eax, word [esp + 0x33c]
movsx edx, word [esp + 0x33a]
sub eax, ecx
movsx ecx, word [esp + 0x33e]
sub ecx, edx
add esp, 0x14
inc ecx
push ecx
inc eax
push eax
mov ecx, edi
call fcn.00467c90
test eax, eax
je 0x46ef16
push 2
push 0xfffffd00
push ebx
call fcn.004795c7
push ebx
push 1
lea eax, [esp + 0x34]
push 0x300
push eax
call fcn.004787ff
add esp, 0x1c
xor edx, edx
lea eax, [esp + 0x22]
push esi
movzx ecx, byte [eax - 2]
movzx esi, byte [eax - 1]
and ecx, 0xfffffff8
shl ecx, 5
cmp byte [0x4c02cc], 0
je 0x46ed40
and esi, 0xfffffffc
or ecx, esi
add ecx, ecx
jmp 0x46ed45
and esi, 0xfffffff8
or ecx, esi
movzx esi, byte [eax]
add ecx, ecx
add ecx, ecx
shr esi, 3
or ecx, esi
movzx esi, byte [eax + 2]
mov word [esp + edx*2 + 0x3a4], cx
movzx ecx, byte [eax + 1]
and ecx, 0xfffffff8
shl ecx, 5
cmp byte [0x4c02cc], 0
je 0x46ed79
and esi, 0xfffffffc
or ecx, esi
add ecx, ecx
jmp 0x46ed7e
and esi, 0xfffffff8
or ecx, esi
movzx esi, byte [eax + 3]
add ecx, ecx
add ecx, ecx
shr esi, 3
or ecx, esi
movzx esi, byte [eax + 5]
mov word [esp + edx*2 + 0x3a6], cx
movzx ecx, byte [eax + 4]
and ecx, 0xfffffff8
shl ecx, 5
cmp byte [0x4c02cc], 0
je 0x46edb3
and esi, 0xfffffffc
or ecx, esi
add ecx, ecx
jmp 0x46edb8
and esi, 0xfffffff8
or ecx, esi
movzx esi, byte [eax + 6]
add ecx, ecx
add ecx, ecx
shr esi, 3
or ecx, esi
movzx esi, byte [eax + 8]
mov word [esp + edx*2 + 0x3a8], cx
movzx ecx, byte [eax + 7]
and ecx, 0xfffffff8
shl ecx, 5
cmp byte [0x4c02cc], 0
je 0x46eded
and esi, 0xfffffffc
or ecx, esi
add ecx, ecx
jmp 0x46edf2
and esi, 0xfffffff8
or ecx, esi
movzx esi, byte [eax + 9]
add ecx, ecx
shr esi, 3
add ecx, ecx
or ecx, esi
mov word [esp + edx*2 + 0x3aa], cx
add edx, 4
add eax, 0xc
cmp edx, 0x100
jl 0x46ed20
push 0
push 0x80
push ebx
call fcn.004795c7
add ebp, 0xffffff80
push ebp
call fcn.00476b22
push ebx
push 1
mov esi, eax
push ebp
push esi
mov dword [esp + 0x38], esi
call fcn.004787ff
add esp, 0x20
lea ecx, [esp + 0x1c]
push ecx
mov ecx, edi
call fcn.00467390
xor edx, edx
cmp dx, word [edi + 0x10]
mov ebp, eax
mov dword [esp + 0x10], 0
jge 0x46eefa
xor eax, eax
xor ebx, ebx
cmp ax, word [edi + 0xe]
jge 0x46eed5
mov edi, edi
mov al, byte [esi]
mov cl, al
and cl, 0xc0
inc esi
cmp cl, 0xc0
jne 0x46eebc
movzx edx, al
mov al, byte [esi]
movzx eax, al
movzx eax, word [esp + eax*2 + 0x3a4]
and edx, 0x3f
inc esi
lea edi, [ebp + ebx*2]
test dl, 1
je 0x46eea0
mov word [edi], ax
add edi, 2
movzx ecx, ax
mov eax, ecx
shl eax, 0x10
or eax, ecx
mov ecx, edx
sar ecx, 1
test ecx, ecx
jle 0x46eeb4
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x20]
add ebx, edx
jmp 0x46eecd
movzx ecx, al
mov dx, word [esp + ecx*2 + 0x3a4]
mov word [ebp + ebx*2], dx
inc ebx
movsx eax, word [edi + 0xe]
cmp ebx, eax
jl 0x46ee70
mov eax, dword [esp + 0x10]
movsx edx, word [edi + 0x10]
mov ecx, dword [esp + 0x1c]
inc eax
cmp eax, edx
mov dword [esp + 0x10], eax
lea ebp, [ebp + ecx*2]
jl 0x46ee64
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, edi
call fcn.004673c0
push esi
call fcn.00476a7f
push ebx
call fcn.0047766d
add esp, 8
mov eax, 1
pop esi
pop ebp
mov ecx, dword [esp + 0x59c]
pop edi
pop ebx
xor ecx, esp
call fcn.004768b9
add esp, 0x598
ret 4