Function at 0x4372e0
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x14
push esi
mov esi, dword [ecx + 0x1c]
mov dword [esp + 0x14], ecx
test esi, esi
je 0x437955
mov edx, dword [ecx + 0x28]
mov dword [esp + 0xc], edx
test edx, edx
jle 0x437955
mov ah, byte [ecx + 0x25]
push ebx
push ebp
mov ebp, dword [ecx + 0x30]
mov al, ah
push edi
mov edi, dword [ecx + 0x2c]
and al, 3
mov byte [esp + 0x12], al
lea ebx, [edi + ebp]
mov dword [esp + 0x14], ebx
je 0x437332
test ebp, ebp
jg 0x437332
xor ebx, ebx
mov byte [esp + 0x12], 0
xor ebp, ebp
mov dword [esp + 0x14], ebx
xor edi, edi
and ah, 0x10
mov byte [esp + 0x13], ah
je 0x437372
movzx eax, word [esi]
mov word [esi - 0xe], ax
movzx eax, word [esi]
mov word [esi - 0xc], ax
movzx eax, word [esi]
mov word [esi - 0xa], ax
movzx eax, word [esi]
mov word [esi - 8], ax
movzx eax, word [esi]
mov word [esi - 6], ax
movzx eax, word [esi]
mov word [esi - 4], ax
movzx eax, word [esi]
mov word [esi - 2], ax
mov ah, byte [esp + 0x13]
jmp 0x4373ab
mov al, byte [esi]
mov byte [esi - 7], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx]
mov byte [edx - 6], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx]
mov byte [edx - 5], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx]
mov byte [edx - 4], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx]
mov byte [edx - 3], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx]
mov byte [edx - 2], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx]
mov byte [edx - 1], al
mov edx, dword [esp + 0x18]
mov al, byte [esp + 0x12]
test al, al
jne 0x43747b
test ah, ah
je 0x43740c
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2], ax
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2 + 2], ax
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2 + 4], ax
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2 + 6], ax
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2 + 8], ax
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2 + 0xa], ax
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2 + 0xc], ax
movzx eax, word [esi + edx*2 - 2]
mov word [esi + edx*2 + 0xe], ax
jmp 0x437465
add edx, dword [ecx + 0x1c]
mov esi, dword [esp + 0x18]
mov al, byte [edx - 1]
mov byte [edx], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + esi - 1]
mov byte [edx + esi + 1], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + esi - 1]
mov byte [edx + esi + 2], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + esi - 1]
mov byte [edx + esi + 3], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + esi - 1]
mov byte [edx + esi + 4], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + esi - 1]
mov byte [edx + esi + 5], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + esi - 1]
mov byte [edx + esi + 6], al
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + esi - 1]
mov byte [edx + esi + 7], al
pop edi
pop ebp
pop ebx
mov dword [ecx + 0xd4], 0
mov byte [ecx + 0x17], 0
pop esi
add esp, 0x14
ret
mov dword [ecx + 0xd4], ebx
mov byte [ecx + 0x17], 1
cmp al, 1
jne 0x43770d
mov ebx, 0xfffffff9
test ah, ah
je 0x4375c8
lea eax, [ecx + 0x54]
mov ecx, eax
nop
mov eax, ebx
lea ecx, [ecx + 2]
cdq
idiv ebp
test edx, edx
lea eax, [edx + ebp]
cmovns eax, edx
inc ebx
add eax, edi
mov ax, word [esi + eax*2]
mov word [ecx - 2], ax
cmp ebx, 0x10
jl 0x4374a0
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
movzx eax, word [esi + ebx*2]
mov word [ecx + 0x94], ax
movzx eax, word [esi + edi*2]
mov word [esi + ebx*2], ax
lea eax, [edi + 1]
mov edx, eax
sub edx, ebp
cmp eax, ebx
pop edi
cmovl edx, eax
movzx eax, word [esi + ebx*2 + 2]
mov word [ecx + 0x96], ax
movzx eax, word [esi + edx*2]
mov word [esi + ebx*2 + 2], ax
lea eax, [edx + 1]
mov edx, eax
sub edx, ebp
cmp eax, ebx
cmovl edx, eax
movzx eax, word [esi + ebx*2 + 4]
mov word [ecx + 0x98], ax
movzx eax, word [esi + edx*2]
mov word [esi + ebx*2 + 4], ax
lea eax, [edx + 1]
mov edx, eax
sub edx, ebp
cmp eax, ebx
cmovl edx, eax
movzx eax, word [esi + ebx*2 + 6]
mov word [ecx + 0x9a], ax
movzx eax, word [esi + edx*2]
mov word [esi + ebx*2 + 6], ax
lea eax, [edx + 1]
mov edx, eax
sub edx, ebp
cmp eax, ebx
cmovl edx, eax
movzx eax, word [esi + ebx*2 + 8]
mov word [ecx + 0x9c], ax
movzx eax, word [esi + edx*2]
mov word [esi + ebx*2 + 8], ax
lea eax, [edx + 1]
mov edx, eax
sub edx, ebp
cmp eax, ebx
cmovl edx, eax
movzx eax, word [esi + ebx*2 + 0xa]
mov word [ecx + 0x9e], ax
movzx eax, word [esi + edx*2]
mov word [esi + ebx*2 + 0xa], ax
lea eax, [edx + 1]
mov edx, eax
sub edx, ebp
cmp eax, ebx
cmovl edx, eax
movzx eax, word [esi + ebx*2 + 0xc]
mov word [ecx + 0xa0], ax
movzx eax, word [esi + edx*2]
inc edx
mov word [esi + ebx*2 + 0xc], ax
movzx eax, word [esi + ebx*2 + 0xe]
mov word [ecx + 0xa2], ax
mov eax, edx
sub eax, ebp
cmp edx, ebx
pop ebp
cmovl eax, edx
movzx eax, word [esi + eax*2]
mov word [esi + ebx*2 + 0xe], ax
pop ebx
pop esi
add esp, 0x14
ret
mov eax, ebx
cdq
idiv ebp
mov eax, dword [ecx + 0x1c]
test edx, edx
lea esi, [edx + ebp]
cmovns esi, edx
add esi, edi
mov al, byte [esi + eax]
mov byte [ecx + ebx + 0x3b], al
inc ebx
cmp ebx, 0x10
jl 0x4375c8
mov ebx, dword [esp + 0x14]
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax]
mov word [ecx + 0x94], ax
mov edx, dword [ecx + 0x1c]
mov al, byte [edx + edi]
mov byte [edx + ebx], al
lea eax, [edi + 1]
mov esi, eax
sub esi, ebp
cmp eax, ebx
cmovl esi, eax
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax + 1]
mov word [ecx + 0x96], ax
mov edx, dword [ecx + 0x1c]
mov al, byte [esi + edx]
mov byte [edx + ebx + 1], al
lea eax, [esi + 1]
mov esi, eax
sub esi, ebp
cmp eax, ebx
cmovl esi, eax
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax + 2]
mov word [ecx + 0x98], ax
mov edx, dword [ecx + 0x1c]
mov al, byte [esi + edx]
mov byte [edx + ebx + 2], al
lea eax, [esi + 1]
mov esi, eax
sub esi, ebp
cmp eax, ebx
cmovl esi, eax
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax + 3]
mov word [ecx + 0x9a], ax
mov edx, dword [ecx + 0x1c]
mov al, byte [esi + edx]
mov byte [edx + ebx + 3], al
lea eax, [esi + 1]
mov esi, eax
sub esi, ebp
cmp eax, ebx
cmovl esi, eax
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax + 4]
mov word [ecx + 0x9c], ax
mov edx, dword [ecx + 0x1c]
mov al, byte [esi + edx]
mov byte [edx + ebx + 4], al
lea eax, [esi + 1]
mov esi, eax
sub esi, ebp
cmp eax, ebx
cmovl esi, eax
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax + 5]
mov word [ecx + 0x9e], ax
mov edx, dword [ecx + 0x1c]
mov al, byte [esi + edx]
mov byte [edx + ebx + 5], al
lea eax, [esi + 1]
mov esi, eax
sub esi, ebp
cmp eax, ebx
cmovl esi, eax
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax + 6]
mov word [ecx + 0xa0], ax
mov edx, dword [ecx + 0x1c]
mov al, byte [esi + edx]
mov byte [edx + ebx + 6], al
lea edx, [esi + 1]
mov eax, dword [ecx + 0x1c]
movsx eax, byte [ebx + eax + 7]
mov word [ecx + 0xa2], ax
mov eax, edx
mov ecx, dword [ecx + 0x1c]
sub eax, ebp
cmp edx, ebx
cmovl eax, edx
pop edi
pop ebp
mov al, byte [eax + ecx]
mov byte [ecx + ebx + 7], al
pop ebx
pop esi
add esp, 0x14
ret
test ah, ah
je 0x437845
lea edx, [ecx + 0x62]
mov byte [esp + 0x13], 0
mov cl, byte [esp + 0x13]
mov ebp, edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], 0x10
nop
test cl, cl
je 0x43774d
xor edx, edx
movzx eax, cl
cmp ebp, edi
cmovge edx, eax
mov eax, edi
cmovge eax, ebp
mov cl, dl
mov edx, dword [esp + 0x18]
mov ebp, eax
jmp 0x437756
cmp ebp, ebx
jl 0x437756
lea ebp, [ebx - 1]
mov cl, 1
mov ax, word [esi + ebp*2]
mov word [edx], ax
xor eax, eax
add edx, 2
test cl, cl
mov dword [esp + 0x18], edx
sete al
lea ebp, [ebp + eax*2]
dec ebp
sub dword [esp + 0x1c], 1
jne 0x437730
mov ecx, dword [esp + 0x20]
lea ebp, [esi + ebx*2]
mov dword [esp + 0x20], 8
movzx eax, word [ecx + 0x64]
mov word [ecx + 0x60], ax
movzx eax, word [ecx + 0x66]
mov word [ecx + 0x5e], ax
movzx eax, word [ecx + 0x68]
mov word [ecx + 0x5c], ax
movzx eax, word [ecx + 0x6a]
mov word [ecx + 0x5a], ax
movzx eax, word [ecx + 0x6c]
mov word [ecx + 0x58], ax
movzx eax, word [ecx + 0x6e]
mov word [ecx + 0x56], ax
movzx eax, word [ecx + 0x70]
mov word [ecx + 0x54], ax
lea eax, [ebx - 1]
mov edx, eax
add ecx, 0x94
mov al, 1
mov dword [esp + 0x18], ecx
mov byte [esp + 0x12], al
test al, al
je 0x4377ee
xor ecx, ecx
movzx eax, al
cmp edx, edi
cmovge ecx, eax
mov eax, edi
cmovge eax, edx
mov byte [esp + 0x12], cl
mov edx, eax
jmp 0x437801
cmp edx, ebx
jl 0x4377fd
mov cl, 1
lea edx, [ebx - 1]
mov byte [esp + 0x12], cl
jmp 0x437801
mov cl, byte [esp + 0x12]
mov ebx, dword [esp + 0x18]
movzx eax, word [ebp]
add dword [esp + 0x18], 2
mov word [ebx], ax
movzx eax, word [esi + edx*2]
mov ebx, dword [esp + 0x14]
mov word [ebp], ax
xor eax, eax
add ebp, 2
test cl, cl
sete al
lea edx, [edx + eax*2]
dec edx
lea eax, [eax*2 - 1]
sub dword [esp + 0x20], 1
mov al, byte [esp + 0x12]
jne 0x4377d3
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x14
ret
xor al, al
mov esi, edi
mov byte [esp + 0x12], al
xor ebp, ebp
nop
test al, al
je 0x43786b
xor edx, edx
movzx eax, al
cmp esi, edi
cmovge edx, eax
mov eax, edi
cmovge eax, esi
mov byte [esp + 0x12], dl
mov esi, eax
jmp 0x43787e
cmp esi, ebx
jl 0x43787a
mov dl, 1
lea esi, [ebx - 1]
mov byte [esp + 0x12], dl
jmp 0x43787e
mov dl, byte [esp + 0x12]
mov eax, dword [ecx + 0x1c]
mov al, byte [esi + eax]
mov byte [ecx + ebp + 0x3b], al
xor eax, eax
inc ebp
test dl, dl
sete al
lea esi, [esi + eax*2]
dec esi
lea eax, [eax*2 - 1]
mov al, byte [esp + 0x12]
cmp ebp, 0x10
jl 0x437850
mov al, byte [ecx + 0x3c]
lea edx, [ecx + 0x94]
mov byte [ecx + 0x3a], al
xor ebp, ebp
mov al, byte [ecx + 0x3d]
mov byte [ecx + 0x39], al
mov al, byte [ecx + 0x3e]
mov byte [ecx + 0x38], al
mov al, byte [ecx + 0x3f]
mov byte [ecx + 0x37], al
mov al, byte [ecx + 0x40]
mov byte [ecx + 0x36], al
mov al, byte [ecx + 0x41]
mov byte [ecx + 0x35], al
mov al, byte [ecx + 0x42]
mov byte [ecx + 0x34], al
lea eax, [ebx - 1]
mov esi, eax
mov dword [esp + 0x18], edx
mov al, 1
mov byte [esp + 0x12], al
test al, al
je 0x437900
xor edx, edx
movzx eax, al
cmp esi, edi
cmovge edx, eax
mov eax, edi
cmovge eax, esi
mov byte [esp + 0x12], dl
mov esi, eax
jmp 0x43790c
cmp esi, ebx
jl 0x43790c
lea esi, [ebx - 1]
mov byte [esp + 0x12], 1
mov eax, dword [ecx + 0x1c]
lea edx, [ebx + ebp]
movsx ax, byte [edx + eax]
mov edx, dword [esp + 0x18]
add dword [esp + 0x18], 2
mov word [edx], ax
mov eax, dword [ecx + 0x1c]
lea edx, [eax + ebp]
mov al, byte [eax + esi]
mov byte [edx + ebx], al
inc ebp
xor eax, eax
cmp byte [esp + 0x12], al
sete al
lea esi, [esi + eax*2]
dec esi
lea eax, [eax*2 - 1]
mov al, byte [esp + 0x12]
cmp ebp, 8
jl 0x4378e5
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x14
ret
mov byte [ecx + 0x17], 0
mov dword [ecx + 0xd4], 0
pop esi
add esp, 0x14
ret