Function at 0x437160
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x14
push esi
mov esi, dword [ecx + 0x1c]
mov dword [esp + 0x14], ecx
test esi, esi
je 0x4377d5
mov edx, dword [ecx + 0x28]
mov dword [esp + 0xc], edx
test edx, edx
jle 0x4377d5
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 0x4371b2
test ebp, ebp
jg 0x4371b2
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 0x4371f2
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 0x43722b
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 0x4372fb
test ah, ah
je 0x43728c
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 0x4372e5
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 0x43758d
mov ebx, 0xfffffff9
test ah, ah
je 0x437448
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 0x437320
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 0x437448
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 0x4376c5
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 0x4375cd
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 0x4375d6
cmp ebp, ebx
jl 0x4375d6
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 0x4375b0
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 0x43766e
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 0x437681
cmp edx, ebx
jl 0x43767d
mov cl, 1
lea edx, [ebx - 1]
mov byte [esp + 0x12], cl
jmp 0x437681
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 0x437653
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 0x4376eb
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 0x4376fe
cmp esi, ebx
jl 0x4376fa
mov dl, 1
lea esi, [ebx - 1]
mov byte [esp + 0x12], dl
jmp 0x4376fe
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 0x4376d0
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 0x437780
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 0x43778c
cmp esi, ebx
jl 0x43778c
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 0x437765
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