Function at 0x5781d0
Capabilities:
Enumerate pe sections

Disassembly:
push 0xffffffffffffffff
push 0x5a944a
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x5c
push edi
mov edi, ecx
test byte [edi + 0x14], 1
mov dword [esp + 0xc], edi
jne 0x578800
mov eax, dword [edi + 0x18]
test eax, eax
je 0x578800
mov eax, dword [edi + 0x38]
test eax, eax
jl 0x578800
cmp eax, 0x270
jge 0x578800
push esi
mov esi, dword [eax*4 + 0x19772e8]
cmp word [esi + 4], 0xffff
mov dword [esp + 0xc], esi
je 0x5787ff
push ebx
push ebp
jmp 0x578240
mov edi, dword [esp + 0x18]
lea ebx, [ebx]
movzx eax, word [esi + 4]
mov edx, dword [edi]
lea eax, [eax + eax*2]
lea eax, [eax*2 + 0x1975ae8]
movzx eax, word [eax + 2]
push eax
mov ecx, edi
mov dword [esp + 0x14], eax
call dword [edx + 0x40]
push 0x38
mov ebx, eax
call fcn.00591ce0
add esp, 4
mov dword [esp + 0x28], eax
xor ebp, ebp
cmp eax, ebp
mov dword [esp + 0x74], ebp
je 0x578281
mov ecx, eax
call fcn.0057b740
mov ebp, eax
test byte [esi + 7], 0x80
mov dword [esp + 0x74], 0xffffffff
je 0x578330
movzx ecx, word [edi + 0x4c]
movzx edx, word [esi + 4]
mov eax, dword [edi]
push ecx
push edx
push ebp
mov ecx, edi
call dword [eax + 0x48]
movsx edi, word [esi]
mov ebx, dword [esp + 0x7c]
movsx eax, word [ebp + 0x20]
mov edx, dword [esp + 0x80]
movsx ecx, word [ebp + 0x1e]
add edi, ebx
movsx ebx, word [esi + 2]
add ebx, edx
add eax, ebx
add ecx, edi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x34], ecx
push eax
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x34]
push edx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x38], edi
call dword [sym.imp.USER32.dll_IntersectRect]
test eax, eax
je 0x5787e0
mov eax, dword [esp + 0x2c]
sub eax, edi
xor ecx, ecx
test eax, eax
setle cl
xor edx, edx
dec ecx
and ecx, eax
mov eax, dword [esp + 0x30]
sub eax, ebx
test eax, eax
setle dl
dec edx
and eax, edx
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, ebp
lea edx, [esp + 0x34]
call fcn.00578130
jmp 0x5787dd
push 1
push 0
push ebx
push ebx
push 8
mov ecx, ebp
call fcn.0057c160
mov edi, dword [ebp + 4]
mov ecx, ebp
call fcn.0057bbe0
mov ecx, eax
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x19b7cac]
movzx ecx, word [esp + 0x10]
imul eax, eax
cdq
sub eax, edx
mov edx, dword [ebp + 4]
sar eax, 1
imul eax, ecx
add eax, dword [0x19b7ca8]
test ebx, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], 0
jle 0x578468
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x28], eax
lea esp, [esp]
movsx ecx, word [ebp + 0x1e]
movsx eax, word [ebp + 0x22]
imul eax, ecx
add eax, 7
cdq
and edx, 7
mov ecx, dword [esp + 0x18]
add eax, edx
mov edx, dword [esp + 0x1c]
mov esi, eax
sar esi, 3
add esi, 3
and esi, 0xfffffffc
imul esi, dword [esp + 0x10]
add esi, edx
mov edx, dword [esp + 0x14]
movzx edi, word [edx + 4]
push ebx
push edi
call fcn.00577dd0
add eax, dword [esp + 0x10]
mov ecx, eax
mov eax, dword [0x19b7cac]
cdq
sub eax, edx
sar eax, 1
imul ecx, eax
push ebx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x1c]
push edi
call fcn.00577db0
mov ecx, dword [esp + 0x24]
cdq
sub eax, edx
mov edx, dword [esp + 0x20]
add ecx, edx
sar eax, 1
add eax, ecx
mov ecx, dword [esp + 0x28]
test ecx, ecx
jle 0x578453
mov edi, ecx
lea ebx, [ebx]
mov edx, dword [esp + 0x10]
lea ecx, [ebx - 1]
cmp ecx, edx
jne 0x57843f
mov edx, dword [esp + 0x14]
mov cl, byte [edx + 6]
test cl, cl
jns 0x57843f
mov byte [esi], 0xe
inc esi
mov byte [esi], 0xe
jmp 0x57844e
mov cl, byte [eax]
mov dl, cl
shr dl, 4
mov byte [esi], dl
inc esi
and cl, 0xf
mov byte [esi], cl
inc esi
inc eax
dec edi
jne 0x578420
mov eax, dword [esp + 0x10]
inc eax
cmp eax, ebx
mov dword [esp + 0x10], eax
jl 0x5783a0
mov esi, dword [esp + 0x14]
xor ecx, ecx
mov cx, word [esi + 6]
test ch, 0x20
je 0x578586
mov eax, dword [ebp + 0xc]
mov edx, dword [0x19b7cb0]
shr ecx, 4
and ecx, 0x1f0
add eax, 0x28
lea edi, [edx + ecx*4]
xor esi, esi
movzx edx, byte [edi + 1]
xor ecx, ecx
mov ch, byte [edi + 3]
mov cl, byte [edi + 2]
shl ecx, 8
or ecx, edx
movzx edx, byte [edi]
shl ecx, 8
or ecx, edx
mov bx, cx
shr bx, 8
mov word [esp + 0x10], bx
mov byte [eax + 1], bl
mov edx, ecx
mov ebx, ecx
shr edx, 0x10
shr ebx, 0x18
test esi, esi
mov byte [eax + 2], dl
mov byte [eax], cl
mov byte [eax + 3], bl
jle 0x5784e4
movzx ebx, byte [esp + 0x10]
movzx edx, dl
movzx ecx, cl
add ebx, edx
add ebx, ecx
jne 0x5784e4
mov byte [eax + 2], 1
inc esi
add eax, 4
add edi, 4
cmp esi, 0x10
jl 0x578491
mov eax, dword [esp + 0x14]
movsx esi, word [eax]
movsx eax, word [eax + 2]
mov edi, dword [esp + 0x7c]
movsx ecx, word [ebp + 0x20]
movsx edx, word [ebp + 0x1e]
lea edi, [esi + edi + 1]
mov esi, dword [esp + 0x80]
lea ebx, [eax + esi + 1]
add ecx, ebx
add edx, edi
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x44], edx
push ecx
lea edx, [esp + 0x40]
push edx
lea eax, [esp + 0x44]
push eax
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x48], edi
call dword [sym.imp.USER32.dll_IntersectRect]
test eax, eax
je 0x5786c3
mov eax, dword [esp + 0x3c]
sub eax, edi
xor ecx, ecx
test eax, eax
setle cl
xor edx, edx
dec ecx
and ecx, eax
mov eax, dword [esp + 0x40]
sub eax, ebx
test eax, eax
setle dl
dec edx
and eax, edx
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, ebp
lea edx, [esp + 0x44]
call fcn.00578090
add esp, 8
jmp 0x5786c3
test ch, 0x40
je 0x5786c7
mov eax, dword [ebp + 0xc]
mov edx, dword [0x19b7cb0]
shr ecx, 4
and ecx, 0x1f0
add eax, 0x28
lea edi, [edx + ecx*4]
xor esi, esi
lea esp, [esp]
movzx edx, byte [edi + 1]
xor ecx, ecx
mov ch, byte [edi + 3]
mov cl, byte [edi + 2]
shl ecx, 8
or ecx, edx
movzx edx, byte [edi]
shl ecx, 8
or ecx, edx
mov bx, cx
shr bx, 8
mov word [esp + 0x10], bx
mov byte [eax + 1], bl
mov ebx, ecx
shr ebx, 0x18
mov edx, ecx
shr edx, 0x10
shr bl, 2
test esi, esi
mov byte [eax + 2], dl
mov byte [eax], cl
mov byte [eax + 3], bl
jle 0x578606
movzx ebx, byte [esp + 0x10]
movzx edx, dl
movzx ecx, cl
add ebx, edx
add ebx, ecx
jne 0x578606
mov byte [eax + 2], 1
inc esi
add eax, 4
add edi, 4
cmp esi, 0x10
jl 0x5785b0
mov ebx, 0x611444
jmp 0x578620
mov edx, dword [esp + 0x14]
movsx edx, word [edx]
mov esi, dword [ebx - 4]
mov edi, dword [esp + 0x7c]
movsx eax, word [ebp + 0x20]
movsx ecx, word [ebp + 0x1e]
add esi, edx
mov edx, dword [esp + 0x14]
add esi, edi
movsx edi, word [edx + 2]
add edi, dword [esp + 0x80]
add edi, dword [ebx]
add eax, edi
add ecx, esi
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x54], ecx
push eax
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x54]
push edx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x58], esi
call dword [sym.imp.USER32.dll_IntersectRect]
test eax, eax
je 0x5786b4
mov eax, dword [esp + 0x4c]
sub eax, esi
xor ecx, ecx
test eax, eax
setle cl
xor edx, edx
dec ecx
and ecx, eax
mov eax, dword [esp + 0x50]
sub eax, edi
test eax, eax
setle dl
mov esi, ecx
mov ecx, ebp
dec edx
and eax, edx
push eax
mov eax, dword [esp + 0x8c]
push esi
lea edx, [esp + 0x54]
call fcn.00578090
add esp, 8
add ebx, 8
cmp ebx, 0x611484
jl 0x578620
mov esi, dword [esp + 0x14]
mov eax, dword [ebp + 0xc]
mov edx, dword [0x19b7cb0]
xor ecx, ecx
mov cl, byte [esi + 6]
add eax, 0x28
mov dword [esp + 0x14], 0
and ecx, 0x1f
shl ecx, 6
add ecx, edx
mov edi, ecx
lea ebx, [ebx]
movzx edx, byte [edi + 1]
xor ecx, ecx
mov ch, byte [edi + 3]
mov cl, byte [edi + 2]
shl ecx, 8
or ecx, edx
movzx edx, byte [edi]
shl ecx, 8
or ecx, edx
mov bx, cx
shr bx, 8
mov word [esp + 0x10], bx
mov byte [eax + 1], bl
mov ebx, ecx
shr ebx, 0x18
mov edx, ecx
mov byte [eax + 3], bl
mov ebx, dword [esp + 0x14]
shr edx, 0x10
test ebx, ebx
mov byte [eax + 2], dl
mov byte [eax], cl
jle 0x578747
movzx ebx, byte [esp + 0x10]
movzx edx, dl
movzx ecx, cl
add ebx, edx
add ebx, ecx
jne 0x578747
mov byte [eax + 2], 1
mov ecx, dword [esp + 0x14]
inc ecx
add eax, 4
add edi, 4
cmp ecx, 0x10
mov dword [esp + 0x14], ecx
jl 0x5786f0
movsx edi, word [esi]
mov ebx, dword [esp + 0x7c]
movsx eax, word [ebp + 0x20]
mov edx, dword [esp + 0x80]
movsx ecx, word [ebp + 0x1e]
add edi, ebx
movsx ebx, word [esi + 2]
add ebx, edx
mov edx, dword [esp + 0x84]
add eax, ebx
add ecx, edi
mov dword [esp + 0x68], eax
push edx
lea eax, [esp + 0x60]
mov dword [esp + 0x68], ecx
push eax
lea ecx, [esp + 0x64]
push ecx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x68], edi
call dword [sym.imp.USER32.dll_IntersectRect]
test eax, eax
je 0x5787e0
mov eax, dword [esp + 0x5c]
sub eax, edi
xor ecx, ecx
test eax, eax
setle cl
xor edx, edx
dec ecx
and ecx, eax
mov eax, dword [esp + 0x60]
sub eax, ebx
test eax, eax
setle dl
dec edx
and eax, edx
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, ebp
lea edx, [esp + 0x64]
call fcn.00578090
add esp, 8
mov eax, dword [ebp]
push 1
mov ecx, ebp
call dword [eax + 4]
add esi, 8
cmp word [esi + 4], 0xffff
mov dword [esp + 0x14], esi
jne 0x578236
pop ebp
pop ebx
pop esi
mov ecx, dword [esp + 0x60]
pop edi
mov dword fs:[0], ecx
add esp, 0x68
ret 0x10