Function at 0x4978e0
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd4
mov eax, dword [0x5153d4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x7732a4]
push ebx
push esi
mov esi, dword [0x7732a8]
mov ebx, 0x7c4ad8
mov eax, dword [eax + 4]
mov byte [0x6e0ccf], 0
mov dword [ebp - 0xa0], ebx
imul edx, dword [esi], 0x3a0
imul ecx, dword [esi + 4], 0x2f1
push edi
mov eax, dword [edx + eax + 0x39c]
imul edx, dword [esi + 0xc], 0x81
add edx, dword [eax + ecx + 0x2e5]
mov eax, dword [edx]
mov dword [ebp - 0xb0], eax
mov eax, dword [edx + 4]
mov dword [ebp - 0xb4], eax
xor eax, eax
mov dword [ebp - 0x9c], eax
cmp byte [0x773328], 0
jne 0x497965
mov dword [ebx], 0
jmp 0x497af8
cmp dword [ebx], 0
jne 0x497ab8
cmp eax, 0x10
jge 0x497ab8
inc eax
mov edi, dword [0x6e85a4]
mov dword [ebp - 0x9c], eax
imul eax, dword [0x517428], 0x41c64e6d
add eax, 0x3039
imul esi, eax, 0x41c64e6d
mov ebx, eax
mov eax, dword [ebp - 0xa0]
sar ebx, 0xa
and ebx, 0xfff
add esi, 0x3039
imul edx, esi, 0x41c64e6d
sar esi, 0xa
and esi, 0x1ffe
add edx, 0x3039
movsx ecx, word [esi*2 + 0x505e48]
movsx esi, word [esi*2 + 0x505e4a]
imul ecx, ebx
mov dword [0x517428], edx
sar edx, 0xa
and edx, 0x7ff
imul esi, ebx
mov ebx, dword [ebp - 0xa0]
sar ecx, 0xc
add ecx, dword [edi + 0x40]
mov dword [eax], ecx
mov eax, dword [edi + 0x44]
add eax, 0xfffffc00
sar esi, 0xc
add edx, eax
mov eax, dword [ebp - 0xa0]
mov dword [eax + 4], edx
mov eax, dword [edi + 0x48]
add eax, esi
push eax
mov dword [ebx + 8], eax
call fcn.00420d10
add esp, 4
test eax, eax
js 0x497ad8
movsx eax, word [0x6f27a4]
lea ecx, [eax + eax*4]
mov eax, dword [0x6e0d8c]
add ecx, ecx
test byte [eax + ecx*8 + 0x4e], 1
je 0x497ad8
imul ecx, dword [0x517428], 0x41c64e6d
add ecx, 0x3039
mov eax, ecx
imul ecx, ecx, 0x41c64e6d
sar eax, 0xa
and al, 7
add al, 0x10
mov byte [ebx + 0xf], al
add ecx, 0x3039
mov eax, ecx
sar eax, 0xa
and al, 3
mov byte [ebx + 0xc], al
cmp al, 2
jne 0x497a7d
mov byte [ebx + 0xc], 0xff
imul ecx, ecx, 0x41c64e6d
add ecx, 0x3039
mov eax, ecx
sar eax, 0xa
and al, 7
add al, 8
shl al, 3
mov byte [ebx + 0xd], al
imul eax, ecx, 0x41c64e6d
add eax, 0x3039
mov dword [0x517428], eax
sar eax, 0xa
and al, 3
mov byte [ebx + 0xe], al
cmp al, 2
jne 0x497ab8
mov byte [ebx + 0xe], 0xff
movsx eax, byte [ebx + 0xc]
add dword [ebx], eax
mov cl, byte [ebx + 0xd]
movzx eax, cl
shr eax, 6
add dword [ebx + 4], eax
movsx eax, byte [ebx + 0xe]
add dword [ebx + 8], eax
mov al, byte [ebx + 0xf]
test al, al
jne 0x497ae0
mov dword [ebx], 0
jmp 0x497af2
dec al
mov byte [ebx + 0xf], al
mov al, cl
and al, 7
cmp al, 7
jae 0x497af2
inc cl
mov byte [ebx + 0xd], cl
mov eax, dword [ebp - 0x9c]
add ebx, 0x10
mov dword [ebp - 0xa0], ebx
cmp ebx, 0x7c5ad8
jl 0x497951
movsx edx, word [0x6ec5fa]
shl edx, 4
add edx, 0x6f52e8
mov dword [ebp - 0xb8], edx
movzx ecx, word [edx + 2]
mov eax, ecx
and ecx, 0xff00
shl eax, 8
movzx eax, ax
mov dword [ebp - 0xac], eax
movzx eax, word [edx + 4]
mov bx, word [ebp - 0xac]
mov dword [ebp - 0xa4], ecx
mov ecx, dword [0x7732f7]
sub ax, cx
add ax, bx
add bx, cx
movzx eax, ax
mov dword [ebp - 0xbc], eax
movzx eax, word [edx + 6]
mov dx, word [ebp - 0xa4]
sub ax, cx
add ax, dx
mov word [ebp - 0x9a], bx
movzx eax, ax
add dx, cx
mov dword [ebp - 0xc0], eax
mov eax, dword [0x54d9a8]
lea ebx, [eax + 0x30]
mov word [ebp - 0x9e], dx
mov edx, dword [0x6e85a4]
mov dword [0x54d9a8], ebx
movups xmm0, xmmword [eax]
movups xmmword [ebx], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ebx + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ebx + 0x20], xmm0
mov edi, dword [edx + 0x40]
mov esi, dword [edx + 0x44]
mov edx, dword [edx + 0x48]
sub esi, dword [0x54d994]
sub edx, dword [0x54d9a4]
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 4]
sub edi, dword [0x54d984]
imul eax, esi
imul ecx, edx
add ecx, eax
mov eax, dword [ebx]
imul eax, edi
add ecx, eax
mov eax, dword [ebx + 0x14]
mov dword [ebx + 0xc], ecx
mov ecx, dword [ebx + 0x18]
imul eax, esi
imul ecx, edx
add ecx, eax
mov eax, dword [ebx + 0x10]
imul eax, edi
add ecx, eax
mov eax, dword [ebx + 0x24]
mov dword [ebx + 0x1c], ecx
mov ecx, dword [ebx + 0x28]
imul eax, esi
imul ecx, edx
add ecx, eax
mov eax, dword [ebx + 0x20]
imul eax, edi
add ecx, eax
xor edi, edi
mov dword [ebx + 0x2c], ecx
mov eax, dword [edi + 0x7c4ad8]
test eax, eax
je 0x497eca
mov ecx, dword [0x6e85a4]
mov esi, dword [edi + 0x7c4adc]
mov edx, dword [edi + 0x7c4ae0]
movss xmm1, dword [0x54d1d4]
sub eax, dword [ecx + 0x40]
sub esi, dword [ecx + 0x44]
sub edx, dword [ecx + 0x48]
mov ecx, dword [ebx + 0x28]
mov dword [ebp - 0xa8], eax
mov eax, dword [ebx + 0x24]
imul eax, esi
imul ecx, edx
add ecx, eax
mov eax, dword [ebx + 0x20]
imul eax, dword [ebp - 0xa8]
add ecx, eax
mov eax, dword [ebx + 0x2c]
add eax, ecx
mov ecx, dword [ebx + 8]
mov dword [ebp - 0xac], eax
imul ecx, edx
movd xmm0, eax
mov eax, dword [ebx + 4]
cvtdq2ps xmm0, xmm0
imul eax, esi
divss xmm1, xmm0
add ecx, eax
mov eax, dword [ebx]
imul eax, dword [ebp - 0xa8]
add ecx, eax
add ecx, dword [ebx + 0xc]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov ecx, dword [ebx + 0x18]
imul ecx, edx
mulss xmm0, xmm1
mov edx, dword [ebp - 0xac]
addss xmm0, dword [0x54d1e4]
cvttss2si eax, xmm0
mov dword [ebp - 0xa4], eax
mov eax, dword [ebx + 0x14]
imul eax, esi
add ecx, eax
mov eax, dword [ebx + 0x10]
imul eax, dword [ebp - 0xa8]
add ecx, eax
mov eax, edx
add ecx, dword [ebx + 0x1c]
and eax, 0xffffc000
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
addss xmm0, dword [0x54d1e0]
cvttss2si ecx, xmm0
mov dword [ebp - 0xa8], ecx
cmp eax, 0x200000
jge 0x497d27
cmp byte [edi + 0x7c4ae7], 0x10
jbe 0x497eca
mov byte [edi + 0x7c4ae7], 0x10
jmp 0x497eca
mov eax, dword [ebp - 0xa4]
test eax, eax
js 0x497eca
cmp eax, dword [ebp - 0xb0]
jg 0x497eca
test ecx, ecx
js 0x497eca
cmp ecx, dword [ebp - 0xb4]
jg 0x497eca
movzx eax, byte [edi + 0x7c4ae5]
mov ecx, edx
shr eax, 3
imul eax, dword [0x54d1ac]
sar ecx, 0x10
cdq
idiv ecx
cmp eax, 4
jge 0x497d7a
mov eax, 4
jmp 0x497d85
cmp eax, 0x10
mov ecx, 0x10
cmovg eax, ecx
imul esi, eax, 0x2aab
mov eax, dword [0x54d188]
sar esi, 0xf
cmp eax, 0x280
jle 0x497dab
push 0x280
push esi
push eax
call dword [sym.imp.KERNEL32.dll_MulDiv]
mov ebx, eax
jmp 0x497dad
mov ebx, esi
mov eax, dword [0x54d184]
cmp eax, 0x1e0
jle 0x497dc8
push 0x1e0
push esi
push eax
call dword [sym.imp.KERNEL32.dll_MulDiv]
mov esi, eax
mov edx, dword [ebp - 0xa4]
cmp ebx, esi
mov cl, byte [edi + 0x7c4ae5]
cmovl esi, ebx
mov ebx, dword [ebp - 0xa8]
sar esi, 1
lea eax, [edx + esi]
mov dword [ebp - 0xa4], eax
lea eax, [esi + esi]
add esi, dword [ebp - 0xa8]
sub ebx, eax
sub edx, eax
mov al, cl
and al, 7
cmp al, 7
jae 0x497e07
movzx ecx, cl
and ecx, 7
jmp 0x497e19
mov al, byte [edi + 0x7c4ae7]
mov ecx, 0xf
cmp al, 0x12
ja 0x497e19
movzx ecx, al
shl ecx, 3
mov eax, ecx
shl eax, 8
or eax, ecx
shl eax, 8
or ecx, eax
mov eax, dword [ebp - 0xac]
push ecx
push eax
push esi
push edx
mov edx, dword [ebp - 0xa4]
push ecx
push eax
push esi
push edx
push ecx
push eax
push ebx
lea ecx, [ebp - 0x98]
call fcn.0048c5c0
mov cx, word [ebp - 0x9e]
lea edx, [ebp - 0x73]
mov eax, 2
mov word [ebp - 0x75], cx
mov word [ebp - 0xd4], ax
mov eax, dword [ebp - 0xb8]
mov cx, word [ebp - 0x9a]
push 0
push 0
mov ax, word [eax]
mov word [ebp - 0xd2], ax
mov eax, dword [ebp - 0xbc]
mov word [ebp - 0x77], ax
mov word [ebp - 0x52], ax
mov eax, dword [ebp - 0xc0]
mov word [ebp - 0x50], ax
mov word [ebp - 0x2b], ax
lea eax, [ebp - 0x2d]
push eax
lea eax, [ebp - 0x52]
mov word [ebp - 0x2d], cx
push eax
lea eax, [ebp - 0x77]
push eax
lea eax, [ebp - 0xd4]
push eax
lea eax, [ebp - 0x4e]
push eax
lea ecx, [ebp - 0x98]
call fcn.00404cb0
mov ebx, dword [0x54d9a8]
add esp, 0x48
add edi, 0x10
cmp edi, 0x1000
jl 0x497c20
mov ecx, dword [ebp - 4]
sub ebx, 0x30
pop edi
pop esi
mov dword [0x54d9a8], ebx
xor ecx, ebp
pop ebx
call fcn.004b557b
mov esp, ebp
pop ebp
ret