Function at 0x437390
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x14
push esi
mov esi, dword [ecx + 0x1c]
mov dword [esp + 0x14], ecx
test esi, esi
je 0x437a05
mov edx, dword [ecx + 0x28]
mov dword [esp + 0xc], edx
test edx, edx
jle 0x437a05
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 0x4373e2
test ebp, ebp
jg 0x4373e2
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 0x437422
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 0x43745b
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 0x43752b
test ah, ah
je 0x4374bc
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 0x437515
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 0x4377bd
mov ebx, 0xfffffff9
test ah, ah
je 0x437678
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 0x437550
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 0x437678
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 0x4378f5
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 0x4377fd
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 0x437806
cmp ebp, ebx
jl 0x437806
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 0x4377e0
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 0x43789e
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 0x4378b1
cmp edx, ebx
jl 0x4378ad
mov cl, 1
lea edx, [ebx - 1]
mov byte [esp + 0x12], cl
jmp 0x4378b1
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 0x437883
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 0x43791b
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 0x43792e
cmp esi, ebx
jl 0x43792a
mov dl, 1
lea esi, [ebx - 1]
mov byte [esp + 0x12], dl
jmp 0x43792e
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 0x437900
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 0x4379b0
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 0x4379bc
cmp esi, ebx
jl 0x4379bc
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 0x437995
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