Function at 0x46ca10
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x14
mov eax, dword [edi]
mov ecx, dword [eax]
push ebx
movzx ebx, byte [edi + 0x18]
not ebx
and ebx, 1
push ebp
mov ebp, dword [esp + 0x20]
inc dword [ebp + 0x48]
mov eax, dword [ebp + 0x48]
mov edx, dword [edi + 4]
mov dword [esp + 8], ecx
add ecx, ebx
add ecx, dword [esp + 0x2c]
cmp dword [esp + 0x30], 0
push esi
mov esi, dword [ebp + 8]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], edx
je 0x46ca60
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0xc]
sub eax, ebx
mov dword [esp + 0x24], eax
jmp 0x46ca6e
lea edx, [eax + 1]
add eax, ecx
mov dword [ebp + 0x48], eax
mov dword [esp + 0x24], edx
mov eax, edx
mov edx, dword [edi]
push eax
push ebp
mov cl, 1
call fcn.00451940
add esp, 8
test ebx, ebx
je 0x46ca99
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x24]
mov edx, dword [edi + 8]
add eax, ecx
push eax
push edx
push 0x49
call fcn.0043c9d0
add esp, 0xc
cmp dword [esp + 0x34], 0
jne 0x46cabf
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
add ecx, edx
add ecx, ebx
push ecx
push ebp
call fcn.00450760
add esp, 0xc
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
cmp dword [ecx + 0x54], eax
mov dword [esp + 0x34], eax
jg 0x46cadf
push esi
call fcn.0043c840
add esp, 4
test eax, eax
jne 0x46cb1c
mov eax, dword [esp + 0x34]
inc dword [esi + 0x20]
mov ecx, dword [esp + 0x24]
lea edx, [eax + eax*4]
mov eax, dword [esi + 4]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x10]
add ecx, edx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x14]
sub ecx, edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x18]
mov byte [eax], 0x31
mov byte [eax + 3], 0
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], 0
mov byte [eax + 1], 0
jmp 0x46cb20
mov edx, dword [esp + 0x10]
test edx, edx
jle 0x46ccc7
mov eax, dword [ebp + 0x48]
mov ecx, dword [edi + 4]
add ecx, eax
lea edx, [eax + 1]
mov dword [ebp + 0x48], ecx
mov ecx, dword [esp + 0xc]
mov eax, ecx
sub eax, dword [edi + 4]
mov dword [esp + 0x14], edx
add eax, ebx
mov dword [esp + 0x1c], eax
test ebx, ebx
je 0x46cb58
mov edx, dword [esp + 0x24]
add edx, ecx
push edx
push 0x2e
jmp 0x46cb5e
mov eax, dword [edi + 8]
push eax
push 0x3b
call fcn.0043c980
mov ecx, dword [edi + 4]
mov edx, dword [esp + 0x2c]
add esp, 8
push ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
push edx
push eax
push 0x2a
call fcn.0043c8d0
mov eax, dword [edi + 0x14]
add esp, 0x10
test eax, eax
jge 0x46cb8d
mov eax, dword [esi + 0x20]
dec eax
mov ecx, dword [esi]
cmp byte [ecx + 0x40], 0
je 0x46cba0
mov eax, 0x4eb650
mov dword [esp + 0x34], eax
jmp 0x46cbaf
lea edx, [eax + eax*4]
mov eax, dword [esi + 4]
lea ecx, [eax + edx*4]
mov dword [esp + 0x34], ecx
mov eax, ecx
mov edx, dword [ebp]
cmp byte [edx + 0x40], 0
jne 0x46cd7a
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [eax + 0x10]
add ecx, edx
mov dword [eax + 8], ecx
movzx eax, word [ebx + 6]
mov ecx, dword [ebx + 0x10]
push eax
push 0
push ecx
mov dword [esp + 0x3c], ebx
call fcn.004aaf30
mov ecx, dword [esi + 4]
mov edx, dword [esi]
add esp, 0xc
test ecx, ecx
je 0x46cc15
cmp byte [edx + 0x40], 0
jne 0x46cc15
mov eax, dword [esi + 0x20]
dec eax
lea eax, [eax + eax*4]
lea ebx, [ecx + eax*4]
movsx eax, byte [ebx + 1]
mov ecx, dword [ebx + 0x10]
call fcn.0043cf00
mov ecx, dword [esp + 0x30]
mov dword [ebx + 0x10], ecx
mov byte [ebx + 1], 0xfa
jmp 0x46cc21
mov ecx, ebx
mov eax, 0xfffffffa
call fcn.0043cf00
mov ebx, dword [esp + 0x10]
mov eax, dword [edi]
push 1
push ebp
call fcn.0046dac0
mov edx, dword [esp + 0x3c]
mov dword [edx + 0x10], eax
mov ebx, dword [esi + 0x20]
lea eax, [ebx + 1]
push eax
push 0
push eax
push 0x2b
call fcn.0043c8d0
mov eax, esi
call fcn.0043cc20
mov dword [edi + 0x10], eax
inc dword [ebp + 0x48]
mov ecx, dword [edi + 0x10]
mov eax, dword [ebp + 0x48]
push ecx
push eax
push 0x11
mov dword [edi + 0xc], eax
call fcn.0043c9d0
mov edx, dword [edi + 8]
add esp, 0x24
push edx
push 0x77
call fcn.0043c980
mov eax, dword [esi + 0x20]
mov ecx, dword [esp + 0x14]
add esp, 8
cmp eax, ecx
jbe 0x46cc8c
mov edx, dword [esi + 4]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4 + 8], eax
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
dec eax
mov dword [ecx + 0x58], eax
mov edx, dword [edi + 4]
mov eax, dword [esp + 0x14]
push edx
push eax
mov eax, dword [esp + 0x2c]
push ebp
call fcn.00450760
mov eax, dword [esi + 0x20]
add esp, 0xc
cmp eax, ebx
jbe 0x46ccbd
mov edx, dword [esi + 4]
lea ecx, [ebx + ebx*4]
mov dword [edx + ecx*4 + 8], eax
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
dec eax
mov dword [ecx + 0x58], eax
mov dl, byte [edi + 0x18]
mov ecx, dword [esp + 0x18]
and dl, 1
movzx eax, dl
mov edx, dword [edi + 8]
neg eax
push ecx
sbb eax, eax
add eax, 0x6e
push edx
push eax
call fcn.0043c9d0
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx + 8]
add esp, 0xc
test eax, eax
je 0x46cd7a
mov ecx, dword [ecx + 0xc]
lea ebp, [ecx + 1]
test ecx, ecx
jne 0x46cd04
mov ebp, eax
push ebp
push 0x8b
call fcn.0043c980
push 0xffffffffffffffff
push ebp
push 0x25
mov ebx, eax
call fcn.0043c9d0
add esp, 0x14
push 0x10
call fcn.0043c930
mov ebp, eax
mov eax, dword [esi + 0x20]
add esp, 4
cmp eax, ebx
jbe 0x46cd3b
mov edx, dword [esi + 4]
lea ecx, [ebx + ebx*4]
mov dword [edx + ecx*4 + 8], eax
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
dec eax
mov dword [ecx + 0x58], eax
mov edx, dword [edi + 8]
push edx
push 0x69
call fcn.0043c980
mov eax, dword [edi + 8]
push eax
push 0x5f
call fcn.0043c980
mov eax, dword [esi + 0x20]
add esp, 0x10
cmp eax, ebp
jbe 0x46cd70
mov edx, dword [esi + 4]
lea ecx, [ebp + ebp*4]
mov dword [edx + ecx*4 + 8], eax
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
dec eax
mov dword [ecx + 0x58], eax
pop esi
pop ebp
pop ebx
add esp, 0x14
ret