Function at 0x682eb0
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6d97cb
mov eax, dword fs:[0]
push eax
sub esp, 0xb4
push esi
push edi
mov eax, dword [0x747040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edx, ecx
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp + 8]
xor ecx, ecx
mov edi, eax
mov dword [ebp - 0x60], 0
add edx, 0x30
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x28], ecx
mov dword [eax + 0xc], 0x80000000
lea eax, [ebp - 0x48]
sub edi, eax
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x34], edi
nop dword [eax]
push dword [ecx*4 + str.BUSGSOPG]
lea eax, [ecx*4]
lea esi, [ebp - 0x48]
mov dword [ebp - 0x38], eax
add esi, eax
mov eax, dword [edx - 0x14]
mov dword [esi + edi], eax
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp + 8]
mov al, byte [eax + ecx + 0x24]
mov byte [esi + ecx + 8], al
mov eax, dword [ebp - 0x2c]
mov esi, dword [edx]
mov edi, dword [edx - 8]
push dword [eax]
call fcn.006922e0
add esp, 8
mov dword [ebp - 0x24], eax
mov ecx, eax
push esi
push edi
call fcn.00693cd0
mov ecx, eax
call fcn.00692e60
movzx edx, byte [eax + 3]
movzx ecx, byte [eax + 2]
mov eax, 0x100
imul ecx, eax
mov eax, 0xffff
add dx, cx
cmp dx, ax
je 0x682f7f
movzx eax, dx
mov edx, dword [ebp - 0x38]
lea ecx, [ebp - 0x68]
add ecx, edx
je 0x682f8b
mov dword [ecx], eax
lea esi, [ebp - 0x48]
add esi, edx
je 0x682f9d
mov ecx, dword [ebp - 0x24]
push eax
call fcn.00690e90
mov dword [esi], eax
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x14]
inc ecx
mov edi, dword [ebp - 0x34]
add edx, 4
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x14], edx
cmp ecx, 2
jb 0x682f10
mov edi, dword [ebp - 0x2c]
mov eax, dword [edi + 0x44]
test eax, eax
je 0x683104
cmp byte [edi + 0x18], 0
jne 0x682fe0
push 0x681030
push 0x1c
push eax
push dword [edi + 0x48]
call fcn.00665590
add esp, 0x10
mov eax, dword [edi + 0x44]
xor ecx, ecx
mov esi, dword [edi + 0x48]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x18], ecx
lea edi, [ecx + 1]
mov dword [ebp - 0x38], eax
cmp eax, edi
jbe 0x6830e6
mov edx, esi
nop
lea eax, [edi*8]
sub eax, edi
lea esi, [esi + eax*4]
mov eax, dword [esi]
cmp eax, dword [edx]
je 0x683040
mov edx, dword [ebp - 0x20]
inc ecx
movups xmm0, xmmword [esi]
mov dword [ebp - 0x18], ecx
lea eax, [ecx*8]
sub eax, ecx
lea edx, [edx + eax*4]
movups xmmword [edx], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [edx + 0x10], xmm0
mov eax, dword [esi + 0x18]
mov esi, dword [ebp - 0x20]
jmp 0x6830d9
test byte [esi + 0xc], 1
je 0x68305b
or dword [edx + 0xc], 1
mov eax, dword [esi + 8]
mov ecx, dword [edx + 0xc]
mov dword [edx + 8], eax
mov eax, dword [esi + 0x10]
mov dword [edx + 0x10], eax
jmp 0x683090
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x28], eax
test al, 1
je 0x68306e
xor eax, 1
mov dword [ebp - 0x28], eax
mov dword [edx + 0xc], eax
mov eax, dword [edx + 8]
mov ecx, edi
cmp eax, dword [esi + 8]
cmovae ecx, dword [ebp - 0x18]
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + eax*4 + 8]
mov ecx, dword [ebp - 0x28]
mov dword [edx + 8], eax
mov eax, dword [esi + 0xc]
and eax, 2
or eax, ecx
mov ecx, edi
mov dword [edx + 0xc], eax
mov eax, dword [edx + 0x14]
cmp eax, dword [esi + 0x14]
cmovbe ecx, dword [ebp - 0x18]
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + eax*4 + 0x14]
mov ecx, edi
mov dword [edx + 0x14], eax
mov eax, dword [edx + 0x18]
cmp eax, dword [esi + 0x18]
mov esi, dword [ebp - 0x20]
cmovbe ecx, dword [ebp - 0x18]
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp - 0x18]
mov eax, dword [esi + eax*4 + 0x18]
inc edi
mov dword [edx + 0x18], eax
cmp edi, dword [ebp - 0x38]
jb 0x683000
mov eax, dword [ebp - 0x2c]
xor edx, edx
add ecx, 1
cmovs ecx, edx
cmp ecx, dword [eax + 0x44]
jae 0x683104
push 1
mov dword [eax + 0x44], ecx
push ecx
lea ecx, [eax + 0x40]
call fcn.00674da0
push 0x66b990
push 0x669f60
push 2
push 0x24
lea eax, [ebp - 0xc0]
push eax
call fcn.006d4670
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0xc0]
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 4], 0
mov dword [ebp - 0x34], eax
lea ecx, [edx + 0x28]
mov dword [ebp - 0x30], ecx
nop dword [eax]
push dword [eax + str.BUSGSOPG]
mov esi, dword [ecx + 8]
push dword [edx]
mov edi, dword [ecx]
call fcn.006922e0
add esp, 8
mov dword [ebp - 0x38], eax
push esi
push edi
mov edi, eax
mov ecx, edi
call fcn.00693cd0
mov ecx, eax
call fcn.00692e60
mov ecx, dword [ebp - 0x1c]
add eax, 4
mov dword [ebp - 0x38], eax
movzx esi, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
add esi, eax
push esi
mov dword [ebp - 0x14], esi
call fcn.00673db0
test esi, esi
je 0x683275
mov ecx, dword [ebp - 0x38]
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x28]
mov dword [ebp - 0x24], 0
push eax
lea eax, [esi - 1]
mov dword [ebp - 0x28], 1
push eax
call fcn.006925e0
cmp dword [ebp - 0x28], 0
je 0x683275
mov esi, dword [ebp - 0x24]
cmp esi, 0xffff
jne 0x6831ce
xor eax, eax
jmp 0x68324a
movzx eax, byte [edi]
movzx ecx, byte [edi + 1]
shl eax, 8
add ecx, eax
sub ecx, 1
je 0x6831e6
mov edx, 0x710938
jmp 0x68320c
movzx ecx, byte [edi + 6]
mov eax, 0x100
movzx edx, byte [edi + 7]
imul ecx, eax
xor eax, eax
add dx, cx
cmp ax, dx
jne 0x683207
mov edx, 0x710938
jmp 0x68320c
movzx edx, dx
add edx, edi
movzx eax, byte [edx]
movzx ecx, byte [edx + 1]
shl eax, 8
add ecx, eax
cmp esi, ecx
jb 0x683223
mov edx, 0x710938
jmp 0x68322c
lea eax, [esi + esi*2]
lea edx, [edx + eax*2]
add edx, 2
movzx ecx, byte [edx]
movzx eax, byte [edx + 1]
shl ecx, 8
add eax, ecx
movzx ecx, byte [edx + 2]
shl eax, 8
add eax, ecx
movzx ecx, byte [edx + 3]
shl eax, 8
add eax, ecx
mov dword [ebp - 0x28], eax
lea ecx, [ebp - 0x24]
imul eax, eax, 0x9e3779b1
push 1
push ecx
mov ecx, dword [ebp - 0x1c]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.00665430
mov esi, dword [ebp - 0x14]
sub esi, 1
mov dword [ebp - 0x14], esi
jne 0x683190
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
add eax, 4
add dword [ebp - 0x1c], 0x24
add ecx, 4
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], ecx
cmp eax, 8
jb 0x683140
mov edi, edx
xor eax, eax
mov esi, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x20], esi
mov ecx, dword [edi + 0x44]
mov dword [ebp - 0x40], ecx
test ecx, ecx
je 0x68367a
movups xmm0, xmmword [0x710938]
xor ecx, ecx
mov edx, dword [0x710950]
movq xmm1, qword [0x710948]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 8
mov dword [ebp - 0x24], edx
movq qword [ebp - 0x58], xmm1
movups xmmword [ebp - 0x78], xmm0
mov dword [ebp - 0x3c], esi
cmp eax, dword [edi + 0x44]
jb 0x683305
movups xmmword [0x74b2f0], xmm0
mov edi, 0x74b2f0
mov dword [0x74b308], edx
movq qword [0x74b300], xmm1
jmp 0x68330a
mov edi, dword [edi + 0x48]
add edi, ecx
test byte [edi + 0xc], 1
mov ecx, dword [edi + 8]
je 0x68331f
cmp ecx, 1
jne 0x68331f
xor eax, eax
mov dword [ebp - 0x18], eax
jmp 0x68333d
test ecx, ecx
jne 0x683327
xor eax, eax
jmp 0x68332b
bsr eax, ecx
inc eax
cmp eax, 8
cmovae eax, dword [ebp - 0x38]
mov dword [ebp - 0x18], eax
test ecx, ecx
je 0x68365e
add eax, esi
cmp eax, 0x1f
jae 0x68365e
mov eax, dword [edi]
lea ecx, [ebp - 0xc0]
xor dl, dl
mov dword [ebp - 0x30], eax
lea eax, [edi + 0x14]
mov byte [ebp - 0xd], dl
mov dword [ebp - 0x1c], ecx
xor esi, esi
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x30]
cmp dword [ebp + esi - 0x48], ecx
mov ecx, dword [ebp - 0x1c]
jne 0x683375
mov eax, dword [eax]
mov dword [ebp + esi - 0x60], eax
cmp dword [ecx + 0x20], 0
je 0x68339c
imul eax, dword [edi], 0x9e3779b1
push eax
push edi
call fcn.00688760
mov ecx, dword [ebp - 0x1c]
test eax, eax
je 0x683399
mov eax, dword [eax + 8]
mov dl, 1
mov byte [ebp - 0xd], dl
jmp 0x6833a1
mov dl, byte [ebp - 0xd]
mov eax, 0xffff
mov dword [ebp + esi - 0x50], eax
add ecx, 0x24
mov eax, dword [ebp - 0x28]
add esi, 4
add eax, 4
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x28], eax
cmp esi, 8
jb 0x683363
test dl, dl
jne 0x683430
test byte [edi + 0xc], 0x10
je 0x68341a
xor esi, esi
lea eax, [ebp - 0x50]
add eax, esi
push eax
push dword [edi]
mov eax, dword [ebp - 0x2c]
push dword [esi + str.BUSGSOPG]
push dword [eax]
call fcn.0069b420
mov dl, byte [ebp - 0xd]
add esi, 4
or dl, al
add esp, 0x10
mov byte [ebp - 0xd], dl
cmp esi, 8
jb 0x6833c8
movups xmm0, xmmword [0x710938]
test dl, dl
jne 0x683434
movq xmm1, qword [0x710948]
mov edx, dword [0x710950]
mov dword [ebp - 0x24], edx
movq qword [ebp - 0x58], xmm1
movups xmmword [ebp - 0x78], xmm0
jmp 0x683426
movups xmm0, xmmword [ebp - 0x78]
mov edx, dword [ebp - 0x24]
movq xmm1, qword [ebp - 0x58]
test byte [edi + 0xc], 2
je 0x68365b
movups xmm0, xmmword [ebp - 0x78]
mov ecx, dword [ebp + 8]
mov eax, 0
mov edx, dword [ecx + 0x14]
mov esi, dword [ecx + 0x10]
add edx, 1
cmovs edx, eax
mov dword [ebp - 0x24], edx
test esi, esi
js 0x683531
cmp edx, esi
jbe 0x6834ac
mov ecx, dword [ebp - 0x18]
nop word [eax + eax]
mov eax, esi
mov dword [ebp - 0x1c], ecx
shr eax, 1
add esi, 8
add esi, eax
cmp edx, esi
ja 0x683460
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov ecx, dword [edx + 0x10]
cmp esi, 0x71c71c7
jae 0x6835d6
mov ecx, dword [edx + 0x18]
test esi, esi
jne 0x6834f0
push ecx
call fcn.005c69b0
add esp, 4
xor eax, eax
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x24]
mov dword [ecx + 0x18], eax
mov eax, dword [ebp - 0x1c]
mov dword [ecx + 0x10], esi
mov dword [ebp - 0x18], eax
mov ecx, dword [ecx + 0x14]
cmp edx, ecx
jbe 0x6834dc
mov eax, edx
sub eax, ecx
lea ecx, [ecx + ecx*8]
lea esi, [eax + eax*8]
mov eax, dword [ebp + 8]
shl esi, 2
mov eax, dword [eax + 0x18]
lea eax, [eax + ecx*4]
test esi, esi
je 0x6834dc
push esi
push 0
push eax
call fcn.005c3040
mov edx, dword [ebp - 0x24]
add esp, 0xc
mov eax, dword [ebp + 8]
lea esi, [edx - 1]
lea esi, [esi + esi*8]
mov dword [eax + 0x14], edx
mov eax, dword [eax + 0x18]
lea esi, [eax + esi*4]
jmp 0x683555
lea eax, [esi + esi*8]
shl eax, 2
push eax
push ecx
call fcn.005cfa1f
add esp, 8
test eax, eax
jne 0x68349a
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x10]
cmp esi, ecx
ja 0x68351c
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x18], eax
jmp 0x6834ac
or eax, 0xffffffff
sub eax, ecx
mov dword [edx + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
movups xmm0, xmmword [0x710938]
mov eax, dword [0x710958]
mov esi, 0x74b2f0
movups xmmword [0x74b2f0], xmm0
mov dword [0x74b310], eax
movups xmm0, xmmword [0x710948]
movups xmmword [0x74b300], xmm0
mov eax, dword [edi]
mov dword [esi], eax
mov eax, dword [ebp - 0x50]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x4c]
mov dword [esi + 8], eax
mov eax, dword [edi + 0x14]
mov dword [esi + 0xc], eax
mov eax, dword [edi + 0x18]
mov dword [esi + 0x10], eax
mov ecx, dword [edi + 0xc]
mov eax, dword [esi + 0x20]
shr ecx, 1
and eax, 0xfffffffd
not ecx
and ecx, 2
or ecx, eax
mov dword [esi + 0x20], ecx
and ecx, 0xfffffffb
mov eax, dword [edi + 0xc]
shr eax, 1
not eax
and eax, 4
or eax, ecx
mov dword [esi + 0x20], eax
and eax, 0xfffffff7
mov ecx, dword [edi + 0xc]
shr ecx, 2
and ecx, 8
or ecx, eax
mov dword [esi + 0x20], ecx
and ecx, 0xffffffef
mov eax, dword [edi + 0xc]
shr eax, 2
and eax, 0x10
or eax, ecx
mov dword [esi + 0x20], eax
test byte [edi + 0xc], 1
je 0x6835e0
cmp dword [edi + 8], 1
jne 0x6835e0
mov dword [esi + 0x14], 0x1f
mov dword [esi + 0x18], 0x80000000
jmp 0x683617
not ecx
mov dword [edx + 0x10], ecx
jmp 0x68352a
mov eax, dword [ebp - 0x20]
mov edx, 1
mov ecx, dword [ebp - 0x18]
add ecx, eax
mov dword [esi + 0x14], eax
shl edx, cl
mov eax, 1
mov ecx, dword [ebp - 0x20]
shl eax, cl
add ecx, dword [ebp - 0x18]
sub edx, eax
mov dword [esi + 0x18], edx
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x3c]
shl eax, cl
mov ecx, dword [ebp + 8]
and eax, edx
or dword [ecx + 0xc], eax
mov ecx, dword [esi + 0x14]
mov eax, 1
shl eax, cl
xor ecx, ecx
and eax, dword [esi + 0x18]
cmp byte [ebp - 0xd], cl
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x20]
sete cl
and eax, 0xfffffffe
or ecx, eax
mov dword [esi + 0x20], ecx
movups xmm0, xmmword [0x710938]
mov edx, dword [0x710950]
movq xmm1, qword [0x710948]
mov dword [ebp - 0x24], edx
movq qword [ebp - 0x58], xmm1
movups xmmword [ebp - 0x78], xmm0
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x34]
inc eax
mov edi, dword [ebp - 0x2c]
add ecx, 0x1c
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x34], ecx
cmp eax, dword [ebp - 0x40]
jb 0x6832e1
cmp byte [edi + 0x18], 0
mov esi, dword [ebp + 8]
je 0x68369d
mov eax, dword [esi + 0x14]
test eax, eax
je 0x68369d
push 0x681060
push 0x24
push eax
push dword [esi + 0x18]
call fcn.00665590
add esp, 0x10
push 0
push 0
mov ecx, edi
call fcn.00673a40
push 0
push 1
mov ecx, edi
call fcn.00673a40
mov edx, 0xffffffcc
lea ecx, [edi + 0x38]
sub edx, dword [ebp - 0x2c]
xor eax, eax
mov dword [ebp - 0x3c], edx
mov edx, 0xffffffd4
sub edx, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], ecx
lea ecx, [edi + 0x50]
lea edi, [esi + 0x3c]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x40], edx
xor ecx, ecx
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x18], ecx
xor edx, edx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], edx
cmp dword [ecx], edx
jbe 0x683a0d
nop dword [eax]
cmp dword [ebp + eax*4 - 0x68], 0xffff
je 0x68373c
cmp dword [ebp + eax*4 - 0x60], edx
jne 0x68373c
mov ecx, dword [ebp + 0xc]
push 0x20202020
push 0
push 0
push 1
push 1
push 0x80000000
push dword [ecx + eax*4]
mov ecx, dword [ebp - 0x2c]
push dword [ebp + eax*4 - 0x68]
push eax
push esi
call fcn.00673730
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp + 8]
mov esi, dword [esi + 0x18]
mov eax, dword [eax + 0x14]
lea eax, [eax + eax*8]
lea eax, [esi + eax*4]
mov dword [ebp - 0x14], eax
cmp esi, eax
je 0x6837c7
add ecx, dword [ebp - 0x40]
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x30], ecx
nop
cmp dword [esi + ecx], edx
jne 0x6837bd
mov ecx, dword [esi + 0x20]
mov eax, ecx
push dword [esi]
shr eax, 4
and al, 1
movzx eax, al
push eax
mov eax, ecx
shr eax, 3
and al, 1
movzx eax, al
push eax
mov eax, ecx
shr ecx, 1
shr eax, 2
and cl, 1
and al, 1
movzx eax, al
push eax
movzx eax, cl
mov ecx, dword [ebp - 0x1c]
push eax
push dword [esi + 0x18]
mov eax, dword [ebp + 0xc]
push dword [eax + edi*4]
mov eax, dword [ebp - 0x3c]
add eax, esi
push dword [eax + ecx]
mov ecx, dword [ebp - 0x2c]
push edi
push dword [ebp + 8]
call fcn.00673730
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x20]
add esi, 0x24
cmp esi, eax
jne 0x683760
mov edi, dword [ebp - 0x38]
mov edx, dword [ebp - 0x18]
mov esi, dword [edi - 0x1c]
lea eax, [edx + 1]
mov dword [ebp - 0x30], eax
cmp eax, esi
jae 0x6838cd
mov ecx, dword [edi - 0x18]
mov eax, esi
sub eax, edx
mov dword [ebp - 0x14], eax
mov eax, esi
sub eax, edx
cmp edx, esi
mov esi, 0
cmova eax, esi
mov esi, dword [ebp - 0x14]
cmp eax, esi
cmovbe esi, eax
mov dword [ebp - 0x14], esi
lea esi, [edx + edx*2]
mov eax, dword [ebp - 0x14]
shl esi, 2
add ecx, esi
test eax, eax
je 0x68381e
push 0x6810c0
push 0xc
push eax
push ecx
call fcn.00665590
add esp, 0x10
mov eax, dword [edi - 0x1c]
mov ecx, dword [ebp - 0x30]
cmp ecx, eax
jae 0x6838b0
lea edx, [ecx + ecx*2]
shl edx, 2
mov eax, dword [edi - 0x18]
lea ecx, [eax + esi]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x44], ecx
mov ax, word [eax + edx]
cmp ax, word [ecx]
je 0x68386e
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x18], eax
lea esi, [eax + eax*2]
mov eax, dword [ebp - 0x14]
shl esi, 2
movq xmm0, qword [eax + edx]
movq qword [eax + esi], xmm0
mov eax, dword [eax + edx + 8]
mov dword [ecx + esi + 8], eax
jmp 0x68389f
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x44]
mov eax, dword [eax + edx + 4]
or dword [ecx + 4], eax
mov eax, 0xfffe
mov ecx, dword [edi - 0x18]
or ax, word [ecx + edx + 2]
and word [ecx + esi + 2], ax
mov eax, 0xfffd
mov ecx, dword [edi - 0x18]
or ax, word [ecx + edx + 2]
and word [ecx + esi + 2], ax
mov ecx, dword [ebp - 0x30]
add edx, 0xc
mov eax, dword [edi - 0x1c]
inc ecx
mov dword [ebp - 0x30], ecx
cmp ecx, eax
jb 0x683832
mov ecx, dword [ebp - 0x18]
xor edx, edx
add ecx, 1
cmovs ecx, edx
cmp ecx, eax
jae 0x6838cd
push 1
mov dword [edi - 0x1c], ecx
push ecx
lea ecx, [edi - 0x20]
call fcn.00674c40
mov ecx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x28]
mov eax, dword [edi - 0x1c]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
cmp esi, dword [ecx]
jae 0x6839f8
mov eax, dword [ecx + 4]
cmp dword [eax + esi*8], edx
jne 0x6839f8
mov ecx, dword [edi - 4]
mov eax, 0
mov esi, dword [edi - 8]
add ecx, 1
cmovs ecx, eax
mov dword [ebp - 0x14], ecx
test esi, esi
js 0x683999
cmp ecx, esi
jbe 0x683942
mov eax, esi
add esi, 8
shr eax, 1
add esi, eax
cmp ecx, esi
ja 0x683910
cmp esi, 0x1fffffff
jae 0x6839e0
mov ecx, dword [edi]
test esi, esi
jne 0x683975
push ecx
call fcn.005c69b0
add esp, 4
xor eax, eax
mov dword [edi], eax
mov dword [edi - 8], esi
mov ecx, dword [ebp - 0x14]
mov esi, dword [edi - 4]
cmp ecx, esi
jbe 0x683968
mov eax, dword [edi]
mov edx, ecx
sub edx, esi
shl edx, 3
lea eax, [eax + esi*8]
test edx, edx
je 0x683968
push edx
push 0
push eax
call fcn.005c3040
mov ecx, dword [ebp - 0x14]
add esp, 0xc
mov eax, dword [edi]
lea edx, [ecx - 1]
mov dword [edi - 4], ecx
lea edx, [eax + edx*8]
jmp 0x6839b4
lea eax, [esi*8]
push eax
push ecx
call fcn.005cfa1f
add esp, 8
test eax, eax
jne 0x68393a
mov ecx, dword [edi - 8]
cmp esi, ecx
jbe 0x68393f
or eax, 0xffffffff
sub eax, ecx
mov dword [edi - 8], eax
mov eax, dword [0x710938]
mov edx, 0x74b2f0
mov ecx, dword [0x71093c]
mov dword [0x74b2f0], eax
mov dword [0x74b2f4], ecx
mov ecx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x28]
mov dword [edx], ecx
mov ecx, dword [ebp - 0x24]
cmp esi, dword [ecx]
jb 0x6839e5
mov eax, dword [0x710938]
mov ecx, dword [0x71093c]
mov dword [0x74b2f0], eax
mov eax, 0x74b2f0
mov dword [0x74b2f4], ecx
jmp 0x6839eb
not dword [edi - 8]
jmp 0x683999
mov eax, dword [ecx + 4]
lea eax, [eax + esi*8]
mov eax, dword [eax + 4]
inc esi
mov dword [edx + 4], eax
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x28], esi
mov ecx, dword [ebp - 0x1c]
inc edx
mov eax, dword [ebp - 0x34]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x20], edx
cmp edx, dword [ecx]
jb 0x683700
add dword [ebp - 0x24], 0xc
inc eax
add ecx, 4
mov dword [ebp - 0x34], eax
add edi, 0xc
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x38], edi
cmp eax, 2
jb 0x6836e0
push 0x66b990
push 2
push 0x24
lea eax, [ebp - 0xc0]
mov dword [ebp - 4], 0xffffffff
push eax
call fcn.006d46e4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8