Function at 0x10049230
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x38
mov eax, dword [ebp + 0xc]
mov edx, dword [0x1038000c]
xor edx, ebp
mov dword [ebp - 0x10], edx
mov dword [ecx], eax
mov esi, dword [ecx + 8]
mov edi, dword [ecx + 0xc]
mov ebx, edi
sub ebx, esi
mov dword [ebp - 0x2c], ebx
sar ebx, 2
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x364]
cmp edx, ebx
mov dword [ebp - 0x30], ecx
jae 0x10049276
lea edi, [esi + edx*4]
mov dword [ecx + 0xc], edi
mov ebx, ecx
jmp 0x100493bf
jbe 0x100492f5
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x10]
sub eax, esi
sar eax, 2
cmp eax, edx
jae 0x100492fd
cmp edx, 0x40000000
jae 0x1004a2c4
mov edi, edx
mov esi, eax
shr esi, 1
mov ecx, 0x3fffffff
mov edx, 0x3fffffff
sub edx, esi
add esi, eax
cmp esi, edi
mov dword [ebp - 0x28], edi
cmovbe esi, edi
cmp eax, edx
cmova esi, ecx
cmp esi, 0x40000000
jae 0x1004a2bf
lea eax, [esi*4]
cmp esi, 0x400
jb 0x10049320
cmp esi, 0x3ffffff8
jae 0x1004a2bf
add eax, 0x23
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov edi, ecx
mov dword [ecx - 4], eax
jmp 0x1004932c
mov ebx, dword [ebp - 0x30]
jmp 0x100493bf
shl edx, 2
sub edx, dword [ebp - 0x2c]
push edx
push 0
push edi
mov esi, edx
mov ebx, ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
add edi, esi
mov dword [ebx + 0xc], edi
mov esi, dword [ebx + 8]
jmp 0x100493bf
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov edi, eax
mov edx, dword [ebp - 0x28]
cmp ebx, edx
je 0x10049354
lea eax, [edi + ebx*4]
lea ecx, [edx*4]
mov edx, dword [ebp - 0x2c]
and edx, 0xfffffffc
sub ecx, edx
push ecx
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x28]
add esp, 0xc
mov dword [ebp - 0x2c], esi
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
cmp ecx, eax
je 0x1004937a
mov edx, edi
mov esi, dword [ecx]
mov dword [edx], esi
add edx, 4
add ecx, 4
cmp ecx, eax
jne 0x10049366
mov eax, dword [ebx + 8]
mov edx, dword [ebp - 0x28]
mov esi, edi
test eax, eax
je 0x100493ad
mov ecx, dword [ebx + 0x10]
sub ecx, eax
cmp ecx, 0x1000
jb 0x100493a0
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov edx, dword [ebp - 0x28]
mov dword [ebx + 8], esi
lea edi, [esi + edx*4]
mov dword [ebx + 0xc], edi
mov eax, dword [ebp - 0x2c]
lea eax, [esi + eax*4]
mov dword [ebx + 0x10], eax
cmp esi, edi
je 0x100493da
sub edi, esi
add edi, 0xfffffffc
and edi, 0xfffffffc
add edi, 4
push edi
push 0
push esi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebx + 0x18]
xor esi, esi
mov dword [ebx + 0x14], esi
push esi
mov edi, dword [ebp + 8]
push dword [edi + 0x364]
call fcn.102166e0
mov byte [ebx + 0x60], 0
mov dword [ebx + 0x2c], esi
mov dword [ebx + 0x28], esi
mov dword [ebx + 0x2f], esi
movaps xmm0, xmmword [0x102c3310]
movups xmmword [ebx + 0x34], xmm0
mov dword [ebx + 0x44], esi
mov dword [ebx + 0x48], esi
mov dword [ebx + 0x4c], 0x3f800000
mov edx, dword [edi + 0x364]
mov ecx, dword [ebx + 0x50]
mov esi, dword [ebx + 0x54]
mov eax, esi
sub eax, ecx
mov edi, ebx
mov ebx, eax
sar ebx, 4
cmp edx, ebx
jae 0x1004943e
shl edx, 4
add ecx, edx
mov dword [edi + 0x54], ecx
jmp 0x1004957e
jbe 0x1004957e
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 0x58]
sub eax, ecx
sar eax, 4
cmp eax, edx
jae 0x100494c0
cmp edx, 0x10000000
jae 0x1004a2c9
mov edi, edx
mov ecx, eax
shr ecx, 1
mov edx, 0xfffffff
mov esi, 0xfffffff
sub esi, ecx
add ecx, eax
cmp ecx, edi
mov dword [ebp - 0x28], edi
cmovbe ecx, edi
cmp eax, esi
cmova ecx, edx
cmp ecx, 0x10000000
jae 0x1004a2bf
mov esi, ecx
shl esi, 4
cmp ecx, 0x100
jb 0x100494de
cmp ecx, 0xffffffe
jae 0x1004a2bf
lea eax, [esi + 0x23]
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ebp - 0x34], ecx
mov dword [ecx - 4], eax
jmp 0x100494eb
shl edx, 4
sub edx, dword [ebp - 0x2c]
push edx
push 0
push esi
mov ebx, edx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
add ebx, esi
mov dword [edi + 0x54], ebx
jmp 0x1004957e
push esi
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov dword [ebp - 0x34], eax
mov edx, dword [ebp - 0x28]
cmp ebx, edx
je 0x10049514
shl ebx, 4
add ebx, dword [ebp - 0x34]
mov eax, edx
shl eax, 4
mov ecx, dword [ebp - 0x2c]
and ecx, 0xfffffff0
sub eax, ecx
push eax
push 0
push ebx
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x28]
add esp, 0xc
mov edi, dword [ebp - 0x30]
mov ecx, dword [edi + 0x50]
mov eax, dword [edi + 0x54]
cmp ecx, eax
je 0x1004953a
mov edx, dword [ebp - 0x34]
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
cmp ecx, eax
jne 0x10049524
mov eax, dword [edi + 0x50]
mov edx, dword [ebp - 0x28]
test eax, eax
je 0x1004956b
mov ecx, dword [edi + 0x58]
sub ecx, eax
cmp ecx, 0x1000
jb 0x1004955e
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x34]
mov dword [edi + 0x50], eax
shl edx, 4
add edx, eax
mov dword [edi + 0x54], edx
add esi, eax
mov dword [edi + 0x58], esi
mov dword [edi + 0x5c], 0
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x364]
mov ecx, dword [edi + 0x2f8]
mov eax, dword [edi + 0x2fc]
mov edx, eax
sub edx, ecx
sar edx, 2
imul ebx, edx, 0xba2e8ba3
cmp esi, ebx
jae 0x100495bb
imul eax, esi, 0x2c
add ecx, eax
mov dword [edi + 0x2fc], ecx
jmp 0x10049760
jbe 0x10049760
mov edx, dword [edi + 0x300]
sub edx, ecx
sar edx, 2
imul ecx, edx, 0xba2e8ba3
cmp ecx, esi
jae 0x10049637
cmp esi, 0x5d1745e
jae 0x1004a2ce
mov eax, ecx
shr eax, 1
mov edx, 0x5d1745d
mov edi, 0x5d1745d
sub edi, eax
add eax, ecx
cmp eax, esi
cmovbe eax, esi
cmp ecx, edi
cmova eax, edx
cmp eax, 0x5d1745e
jae 0x1004a2bf
imul ecx, eax, 0x2c
cmp eax, 0x5e
mov dword [ebp - 0x2c], ecx
jb 0x10049685
cmp eax, 0x5d1745d
jae 0x1004a2bf
lea eax, [ecx + 0x23]
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea edi, [eax + 0x23]
and edi, 0xffffffe0
mov dword [edi - 4], eax
jmp 0x10049691
cmp esi, ebx
je 0x10049677
sub ebx, esi
xorps xmm0, xmm0
mov ecx, 0x3f800000
mov dword [eax], 0x3050504
mov dword [eax + 4], 0x10103
mov dword [eax + 8], 0x3020300
mov word [eax + 0xc], 0x202
mov byte [eax + 0xe], 2
movups xmmword [eax + 0x10], xmm0
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], ecx
mov byte [eax + 0x28], 0
add eax, 0x2c
inc ebx
jne 0x10049645
mov edi, dword [ebp - 0x30]
mov dword [edi + 0x2fc], eax
jmp 0x10049760
push ecx
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov edi, eax
cmp esi, ebx
je 0x100496d6
imul eax, ebx, 0x2c
add eax, edi
sub ebx, esi
xorps xmm0, xmm0
mov ecx, 0x3f800000
mov dword [eax], 0x3050504
mov dword [eax + 4], 0x10103
mov dword [eax + 8], 0x3020300
mov word [eax + 0xc], 0x202
mov byte [eax + 0xe], 2
movups xmmword [eax + 0x10], xmm0
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], ecx
mov byte [eax + 0x28], 0
add eax, 0x2c
inc ebx
jne 0x100496a4
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x2f8]
mov eax, dword [ebx + 0x2fc]
cmp ecx, eax
je 0x10049711
mov edx, edi
movups xmm0, xmmword [ecx + 0x19]
movups xmmword [edx + 0x19], xmm0
movups xmm0, xmmword [ecx]
movups xmm1, xmmword [ecx + 0x10]
movups xmmword [edx + 0x10], xmm1
movups xmmword [edx], xmm0
add edx, 0x2c
add ecx, 0x2c
cmp ecx, eax
jne 0x100496eb
mov eax, dword [ebx + 0x2f8]
test eax, eax
je 0x10049742
mov ecx, dword [ebx + 0x300]
sub ecx, eax
cmp ecx, 0x1000
jb 0x10049738
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov dword [ebx + 0x2f8], edi
imul eax, esi, 0x2c
add eax, edi
mov dword [ebx + 0x2fc], eax
mov eax, dword [ebp - 0x2c]
add eax, edi
mov dword [ebx + 0x300], eax
mov edi, ebx
lea ebx, [ebp - 0x24]
mov ecx, ebx
call fcn.1021b880
mov ecx, dword [edi + 0x2e8]
lea eax, [ecx + ecx*4]
lea esi, [edi + eax*4]
add esi, 0x1a8
cmp esi, ebx
mov ebx, edi
jne 0x100497c0
mov eax, dword [ebp - 0x24]
inc ecx
mov dword [ebx + 0x2e8], ecx
test eax, eax
je 0x10049818
mov ecx, dword [ebp - 0x1c]
sub ecx, eax
cmp ecx, 0x1000
jb 0x100497b4
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
jmp 0x10049818
mov eax, dword [esi]
test eax, eax
je 0x100497f0
mov ecx, dword [esi + 8]
sub ecx, eax
cmp ecx, 0x1000
jb 0x100497e6
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov eax, dword [ebp - 0x24]
mov dword [esi], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esi + 8], eax
mov eax, dword [ebx + 0x2e8]
movsd xmm0, qword [ebp - 0x18]
movsd qword [esi + 0xc], xmm0
inc eax
mov dword [ebx + 0x2e8], eax
lea edi, [ebp - 0x24]
mov ecx, edi
call fcn.1021b880
mov ecx, dword [ebx + 0x1a4]
lea eax, [ecx + ecx*4]
lea esi, [ebx + eax*4]
add esi, 0x64
cmp esi, edi
je 0x1004988f
mov eax, dword [esi]
test eax, eax
je 0x10049865
mov ecx, dword [esi + 8]
sub ecx, eax
cmp ecx, 0x1000
jb 0x1004985b
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov eax, dword [ebp - 0x24]
mov dword [esi], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esi + 8], eax
mov eax, dword [ebx + 0x1a4]
movsd xmm0, qword [ebp - 0x18]
movsd qword [esi + 0xc], xmm0
inc eax
mov dword [ebx + 0x1a4], eax
jmp 0x100498c7
mov eax, dword [ebp - 0x24]
inc ecx
mov dword [ebx + 0x1a4], ecx
test eax, eax
je 0x100498c7
mov ecx, dword [ebp - 0x1c]
sub ecx, eax
cmp ecx, 0x1000
jb 0x100498bd
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x364]
mov edx, dword [ebx + 0x2ec]
mov esi, dword [ebx + 0x2f0]
mov eax, esi
sub eax, edx
sar eax, 2
imul ecx, eax, 0x781948b1
cmp edi, ecx
jae 0x10049975
imul eax, edi, 0x144
add edx, eax
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x2c], esi
cmp edx, esi
je 0x10049964
xor edi, edi
mov esi, dword [ebp - 0x28]
mov ecx, esi
call fcn.1004aac0
mov ebx, 0x12c
mov eax, dword [esi + ebx]
test eax, eax
je 0x10049951
mov ecx, dword [esi + ebx + 8]
sub ecx, eax
cmp ecx, 0x1000
jb 0x1004993c
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov dword [esi + ebx], edi
mov dword [esi + ebx + 4], edi
mov dword [esi + ebx + 8], edi
add ebx, 0xffffffec
cmp ebx, 0xffffffec
jne 0x10049914
add esi, 0x144
cmp esi, dword [ebp - 0x2c]
jne 0x10049908
mov ebx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
mov dword [ebx + 0x2f0], edi
jmp 0x10049d80
jbe 0x10049acf
mov eax, dword [ebx + 0x2f4]
sub eax, edx
sar eax, 2
imul eax, eax, 0x781948b1
cmp eax, edi
jae 0x100499f8
cmp edi, 0xca4588
jae 0x1004a2d3
mov ebx, ecx
mov ecx, eax
shr ecx, 1
mov edx, 0xca4587
mov esi, 0xca4587
sub esi, ecx
add ecx, eax
cmp ecx, edi
cmovbe ecx, edi
cmp eax, esi
cmova ecx, edx
cmp ecx, 0xca4588
jae 0x1004a2bf
imul eax, ecx, 0x144
cmp ecx, 0xd
mov dword [ebp - 0x40], eax
jb 0x10049ad6
add eax, 0x23
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea edx, [eax + 0x23]
and edx, 0xffffffe0
mov ecx, edx
mov dword [ebp - 0x38], edx
mov dword [edx - 4], eax
jmp 0x10049ae3
cmp edi, ecx
je 0x10049ac9
sub ecx, edi
xor ebx, ebx
mov eax, 0x144
push eax
push ebx
push esi
mov edi, ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, esi
call fcn.1021b880
lea ecx, [esi + 0x14]
call fcn.1021b880
lea ecx, [esi + 0x28]
call fcn.1021b880
lea ecx, [esi + 0x3c]
call fcn.1021b880
lea ecx, [esi + 0x50]
call fcn.1021b880
lea ecx, [esi + 0x64]
call fcn.1021b880
lea ecx, [esi + 0x78]
call fcn.1021b880
lea ecx, [esi + 0x8c]
call fcn.1021b880
lea ecx, [esi + 0xa0]
call fcn.1021b880
lea ecx, [esi + 0xb4]
call fcn.1021b880
lea ecx, [esi + 0xc8]
call fcn.1021b880
lea ecx, [esi + 0xdc]
call fcn.1021b880
lea ecx, [esi + 0xf0]
call fcn.1021b880
lea ecx, [esi + 0x104]
call fcn.1021b880
lea ecx, [esi + 0x118]
call fcn.1021b880
lea ecx, [esi + 0x12c]
call fcn.1021b880
mov ecx, edi
mov dword [esi + 0x140], ebx
mov eax, 0x144
add esi, eax
inc ecx
jne 0x10049a04
mov ebx, dword [ebp - 0x30]
mov dword [ebx + 0x2f0], esi
mov edi, esi
jmp 0x10049d80
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], edi
cmp edi, ebx
je 0x10049bc4
imul eax, ebx, 0x144
sub ebx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x38]
lea edi, [eax + ecx]
add edi, 0x12c
lea esi, [edi - 0x12c]
mov eax, 0x144
push eax
xor eax, eax
push eax
push esi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, esi
call fcn.1021b880
lea ecx, [edi - 0x118]
call fcn.1021b880
lea ecx, [edi - 0x104]
call fcn.1021b880
lea ecx, [edi - 0xf0]
call fcn.1021b880
lea ecx, [edi - 0xdc]
call fcn.1021b880
lea ecx, [edi - 0xc8]
call fcn.1021b880
lea ecx, [edi - 0xb4]
call fcn.1021b880
lea ecx, [edi - 0xa0]
call fcn.1021b880
lea ecx, [edi - 0x8c]
call fcn.1021b880
lea ecx, [edi - 0x78]
call fcn.1021b880
lea ecx, [edi - 0x64]
call fcn.1021b880
lea ecx, [edi - 0x50]
call fcn.1021b880
lea ecx, [edi - 0x3c]
call fcn.1021b880
lea ecx, [edi - 0x28]
call fcn.1021b880
lea ecx, [edi - 0x14]
call fcn.1021b880
mov ecx, edi
call fcn.1021b880
xor eax, eax
mov dword [edi + 0x14], eax
mov eax, 0x144
add edi, eax
inc ebx
jne 0x10049b03
mov ebx, dword [ebp - 0x30]
mov edx, dword [ebx + 0x2ec]
mov ecx, dword [ebx + 0x2f0]
cmp edx, ecx
je 0x10049cac
mov edi, dword [ebp - 0x38]
mov dword [ebp - 0x44], ecx
xor ebx, ebx
mov dword [ebp - 0x34], edx
xor eax, eax
mov dword [edi + ebx], eax
mov dword [edi + ebx + 4], eax
mov dword [edi + ebx + 8], eax
mov eax, dword [edx + ebx]
mov esi, dword [edx + ebx + 4]
cmp eax, esi
je 0x10049c6b
sub esi, eax
js 0x1004a2bf
mov dword [ebp - 0x2c], eax
mov eax, esi
sar eax, 2
mov dword [ebp - 0x28], eax
cmp esi, 0x1000
jb 0x10049c33
lea eax, [esi + 0x23]
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov ecx, eax
add eax, 0x23
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x10049c3d
push esi
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov dword [edi + ebx], eax
mov dword [edi + ebx + 4], eax
mov ecx, dword [ebp - 0x28]
lea ecx, [eax + ecx*4]
mov dword [ebp - 0x28], ecx
mov dword [edi + ebx + 8], ecx
push esi
push dword [ebp - 0x2c]
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [ebp - 0x28]
mov dword [edi + ebx + 4], eax
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x34]
movsd xmm0, qword [edx + ebx + 0xc]
movsd qword [edi + ebx + 0xc], xmm0
add ebx, 0x14
cmp ebx, 0x140
jne 0x10049be6
mov eax, dword [edx + 0x140]
mov dword [edi + 0x140], eax
mov eax, 0x144
add edi, eax
add edx, eax
cmp edx, ecx
jne 0x10049be1
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x2ec]
test ecx, ecx
mov esi, dword [ebp - 0x3c]
je 0x10049d5e
mov eax, dword [ebx + 0x2f0]
mov dword [ebp - 0x2c], eax
cmp ecx, eax
je 0x10049d32
xor ebx, ebx
mov edi, ecx
call fcn.1004aac0
mov ecx, edi
mov esi, 0x12c
mov eax, dword [ecx + esi]
test eax, eax
je 0x10049d13
mov ecx, dword [ecx + esi + 8]
sub ecx, eax
cmp ecx, 0x1000
jb 0x10049cfc
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov ecx, edi
mov dword [edi + esi], ebx
mov dword [edi + esi + 4], ebx
mov dword [edi + esi + 8], ebx
add esi, 0xffffffec
cmp esi, 0xffffffec
jne 0x10049cd4
add ecx, 0x144
cmp ecx, dword [ebp - 0x2c]
jne 0x10049cc6
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x2ec]
mov esi, dword [ebp - 0x3c]
mov eax, dword [ebx + 0x2f4]
sub eax, ecx
cmp eax, 0x1000
jb 0x10049d54
mov eax, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, eax
cmp ecx, 0x20
jae 0x1004a2b9
mov ecx, eax
push ecx
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov ecx, dword [ebp - 0x38]
mov dword [ebx + 0x2ec], ecx
imul edi, esi, 0x144
add edi, ecx
mov dword [ebx + 0x2f0], edi
mov eax, dword [ebp - 0x40]
add eax, ecx
mov dword [ebx + 0x2f4], eax
mov esi, dword [ebx + 0x2ec]
cmp esi, edi
je 0x10049e58
mov dword [ebp - 0x28], edi
lea ecx, [ebp - 0x24]
call fcn.1021b880
mov eax, dword [esi + 0x140]
lea ebx, [eax + eax*4]
lea edi, [esi + ebx*4]
lea ecx, [ebp - 0x24]
cmp edi, ecx
je 0x10049e01
mov eax, dword [edi]
test eax, eax
je 0x10049ddd
mov ecx, dword [esi + ebx*4 + 8]
sub ecx, eax
cmp ecx, 0x1000
jb 0x10049dd3
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov eax, dword [ebp - 0x24]
mov dword [edi], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + ebx*4 + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esi + ebx*4 + 8], eax
xor eax, eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x140]
movsd xmm0, qword [ebp - 0x18]
movsd qword [esi + ebx*4 + 0xc], xmm0
inc eax
mov dword [esi + 0x140], eax
mov eax, dword [ebp - 0x24]
test eax, eax
mov ebx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
je 0x10049e4a
mov ecx, dword [ebp - 0x1c]
sub ecx, eax
cmp ecx, 0x1000
jb 0x10049e40
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov eax, ecx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
add esi, 0x144
cmp esi, edi
jne 0x10049d91
movaps xmm0, xmmword [0x102cb900]
movups xmmword [ebx + 0x304], xmm0
movaps xmm0, xmmword [0x102cb910]
movups xmmword [ebx + 0x314], xmm0
movaps xmm3, xmmword [0x102cb920]
movups xmmword [ebx + 0x324], xmm3
movups xmmword [ebx + 0x334], xmm3
movaps xmm0, xmmword [0x102cb930]
movups xmmword [ebx + 0x344], xmm0
mov dword [ebx + 0x354], 0x3f800000
mov byte [ebx + 0x358], 0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x36c]
mov edi, dword [ebx + 0x35c]
mov eax, dword [ebx + 0x360]
mov ecx, eax
sub ecx, edi
sar ecx, 2
imul esi, ecx, 0xc28f5c29
cmp edx, esi
jae 0x10049ede
imul eax, edx, 0x64
add eax, edi
mov dword [ebx + 0x360], eax
jmp 0x1004a084
jbe 0x1004a084
mov ecx, dword [ebx + 0x364]
sub ecx, edi
sar ecx, 2
imul ecx, ecx, 0xc28f5c29
cmp ecx, edx
jae 0x10049f55
cmp edx, 0x28f5c29
jae 0x1004a2d8
mov eax, ecx
shr eax, 1
mov edi, 0x28f5c28
sub edi, eax
add eax, ecx
cmp eax, edx
mov dword [ebp - 0x28], edx
cmovbe eax, edx
cmp ecx, edi
mov ecx, 0x28f5c28
cmova eax, ecx
cmp eax, 0x28f5c29
jae 0x1004a2bf
imul ecx, eax, 0x64
cmp eax, 0x29
mov dword [ebp - 0x34], ecx
jb 0x10049fa0
lea eax, [ecx + 0x23]
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ebp - 0x2c], ecx
mov dword [ecx - 4], eax
jmp 0x10049fad
cmp edx, esi
je 0x10049ed3
sub esi, edx
movaps xmm0, xmmword [0x102cb940]
movaps xmm1, xmmword [0x102cb950]
movaps xmm2, xmmword [0x102cb960]
mov byte [eax], 0
movups xmmword [eax + 4], xmm3
movups xmmword [eax + 0x14], xmm3
movups xmmword [eax + 0x24], xmm3
movups xmmword [eax + 0x34], xmm0
movups xmmword [eax + 0x44], xmm1
movups xmmword [eax + 0x54], xmm2
add eax, 0x64
inc esi
jne 0x10049f74
mov edi, dword [ebx + 0x35c]
jmp 0x10049ed3
push ecx
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 0x28]
cmp edi, esi
movaps xmm3, xmmword [0x102cb920]
je 0x10049ff9
imul eax, esi, 0x64
add eax, dword [ebp - 0x2c]
sub esi, edi
movaps xmm0, xmmword [0x102cb940]
movaps xmm1, xmmword [0x102cb950]
movaps xmm2, xmmword [0x102cb960]
mov byte [eax], 0
movups xmmword [eax + 4], xmm3
movups xmmword [eax + 0x14], xmm3
movups xmmword [eax + 0x24], xmm3
movups xmmword [eax + 0x34], xmm0
movups xmmword [eax + 0x44], xmm1
movups xmmword [eax + 0x54], xmm2
add eax, 0x64
inc esi
jne 0x10049fd8
mov eax, dword [ebx + 0x35c]
mov ebx, dword [ebx + 0x360]
cmp eax, ebx
je 0x1004a02d
mov edx, dword [ebp - 0x2c]
mov ecx, 0x19
mov edi, edx
mov esi, eax
rep movsd dword es:[edi], dword [esi]
add edx, 0x64
add eax, 0x64
cmp eax, ebx
jne 0x1004a00c
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax + 0x35c]
mov edi, dword [ebp - 0x28]
test ebx, ebx
je 0x1004a060
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x364]
sub eax, ebx
cmp eax, 0x1000
jb 0x1004a056
mov eax, dword [ebx - 4]
add ebx, 0xfffffffc
sub ebx, eax
cmp ebx, 0x20
jae 0x1004a2b9
mov ebx, eax
push ebx
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
mov dword [ebx + 0x35c], ecx
imul eax, edi, 0x64
mov edi, ecx
add eax, ecx
mov dword [ebx + 0x360], eax
mov eax, dword [ebp - 0x34]
add eax, ecx
mov dword [ebx + 0x364], eax
movaps xmm0, xmmword [0x102c3310]
movups xmmword [edi + 0x14], xmm0
mov eax, dword [ebx + 0x35c]
movups xmmword [eax + 0x24], xmm0
xor eax, eax
mov byte [ebx + 0x368], al
mov ecx, 0x3f800000
mov dword [ebx + 0x36c], ecx
mov dword [ebx + 0x370], eax
mov dword [ebx + 0x374], ecx
xorps xmm0, xmm0
movups xmmword [ebx + 0x378], xmm0
mov byte [ebx + 0x388], 1
mov byte [ebx + 0x3a8], al
mov dword [ebx + 0x3ac], eax
mov byte [ebx + 0x3b0], 4
movups xmmword [ebp - 0x21], xmm0
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x368]
mov ecx, dword [ebx + 0x3b4]
mov eax, dword [ebx + 0x3b8]
mov edx, eax
sub edx, ecx
sar edx, 2
imul esi, edx, 0xcccccccd
cmp edi, esi
jae 0x1004a117
lea eax, [edi + edi*4]
lea eax, [ecx + eax*4]
mov dword [ebx + 0x3b8], eax
jmp 0x1004a284
jbe 0x1004a284
mov edx, dword [ebx + 0x3bc]
sub edx, ecx
sar edx, 2
imul ecx, edx, 0xcccccccd
cmp ecx, edi
jae 0x1004a19c
cmp edi, 0xccccccd
jae 0x1004a2dd
mov ebx, ecx
shr ebx, 1
mov eax, 0xccccccc
mov edx, 0xccccccc
sub edx, ebx
add ebx, ecx
cmp ebx, edi
cmovbe ebx, edi
cmp ecx, edx
cmova ebx, eax
cmp ebx, 0xccccccd
jae 0x1004a2bf
lea eax, [ebx*4]
lea eax, [eax + eax*4]
cmp ebx, 0xcd
jb 0x1004a1c2
cmp ebx, 0xccccccc
jae 0x1004a2bf
add eax, 0x23
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
lea edx, [eax + 0x23]
and edx, 0xffffffe0
mov dword [edx - 4], eax
jmp 0x1004a1ce
cmp edi, esi
je 0x1004a10c
sub esi, edi
mov byte [eax], 0
movups xmm0, xmmword [ebp - 0x24]
movups xmmword [eax + 1], xmm0
mov ecx, dword [ebp - 0x15]
mov dword [eax + 0x10], ecx
add eax, 0x14
inc esi
jne 0x1004a1a6
jmp 0x1004a10c
push eax
call dword [sym.imp.mozglue.dll_moz_xmalloc]
add esp, 4
mov edx, eax
cmp edi, esi
je 0x1004a1f1
lea eax, [esi + esi*4]
lea eax, [edx + eax*4]
sub esi, edi
mov byte [eax], 0
movups xmm0, xmmword [ebp - 0x24]
movups xmmword [eax + 1], xmm0
mov ecx, dword [ebp - 0x15]
mov dword [eax + 0x10], ecx
add eax, 0x14
inc esi
jne 0x1004a1da
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax + 0x3b4]
mov eax, dword [eax + 0x3b8]
cmp ecx, eax
je 0x1004a229
mov dword [ebp - 0x2c], edx
mov esi, dword [ecx + 0x10]
mov dword [edx + 0x10], esi
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
add edx, 0x14
add ecx, 0x14
cmp ecx, eax
jne 0x1004a207
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x3b4]
mov edx, dword [ebp - 0x2c]
test eax, eax
je 0x1004a261
mov ecx, dword [ebp - 0x30]
mov ecx, dword [ecx + 0x3bc]
sub ecx, eax
cmp ecx, 0x1000
jb 0x1004a253
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x1004a2b9
mov esi, edx
mov eax, ecx
jmp 0x1004a255
mov esi, edx
push eax
call dword [sym.imp.mozglue.dll_free]
add esp, 4
mov edx, esi
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x3b4], edx
lea eax, [edi + edi*4]
lea eax, [edx + eax*4]
mov dword [ecx + 0x3b8], eax
lea eax, [ebx + ebx*4]
mov ebx, ecx
lea eax, [edx + eax*4]
mov dword [ecx + 0x3bc], eax
mov dword [ebx + 0x3c0], 0
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x60]
movss dword [ebx + 0x390], xmm0
mov dword [ebx + 4], 0x1ffff
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10212780
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret 8
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
call fcn.102133d0
call fcn.1000be20
call fcn.1000be20
call fcn.1000be20
call fcn.1000be20
call fcn.1000be20
call fcn.1000be20
int3