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

Disassembly:
sub esp, 0x60
push ebx
push ebp
push esi
mov esi, dword [esp + 0x7c]
mov ebx, esi
push edi
mov edi, dword [esp + 0x74]
mov edx, esi
mov dword [esp + 0x34], ebx
mov eax, dword [edi + 0x5c]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0xc0]
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x64]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0xbc]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x84]
lea ecx, [esi + eax]
mov dword [esp + 0x74], ecx
add ecx, 0xfffffff8
mov dword [esp + 0x38], ecx
mov ecx, dword [edi + 4]
sub edx, ecx
add edx, eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [edi + 0xb8]
mov dword [esp + 0x10], edx
mov edx, 1
mov eax, dword [esp + 0x10]
shl edx, cl
sub dword [esp + 0x10], edx
mov ecx, dword [edi + 0x10]
sub eax, ecx
cmp eax, edx
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
cmovbe edx, ecx
cmp dword [edi + 0x18], 0
cmovne edx, ecx
cmp dword [edi + 0xc], edx
mov ecx, edx
mov dword [esp + 0x10], edx
cmova ecx, dword [edi + 0xc]
add eax, ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x20], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x40], eax
lea ebp, [eax + edx]
add eax, ecx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x54], ebp
mov ebp, dword [esp + 0x78]
mov eax, dword [eax]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + 4]
mov dword [esp + 0x3c], eax
cmp ecx, edx
jne 0x786853
mov eax, dword [edi + 0xc8]
add eax, 0xfffffffc
cmp eax, 3
ja case.0x7867c8.4
jmp dword [eax*4 + 0x78737c]
push dword [esp + 0x84]
push esi
push dword [esp + 0x84]
push ebp
push edi
call fcn.00787da0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret
push dword [esp + 0x84]
push esi
push dword [esp + 0x84]
push ebp
push edi
call fcn.00788770
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret
push dword [esp + 0x84]
push esi
push dword [esp + 0x84]
push ebp
push edi
call fcn.00789140
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret
push dword [esp + 0x84]
push esi
push dword [esp + 0x84]
push ebp
push edi
call fcn.007873e0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret
cmp esi, dword [esp + 0x38]
jae 0x787360
mov eax, 0x40
mov edi, 0x40
sub eax, dword [esp + 0x58]
mov ecx, 0x20
sub edi, dword [esp + 0x5c]
sub ecx, dword [esp + 0x5c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x88]
add eax, 0xfffffffc
mov dword [esp + 0x84], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], eax
cmp eax, 4
ja case.0x78689a.0
jmp dword [eax*4 + 0x78738c]
push 0xcf1bbcdc
push 0xbb000000
push dword [esi + 4]
push dword [esi]
call fcn.007bcf30
mov ecx, edi
call fcn.007bcf90
mov edi, eax
jmp 0x7868ec
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x7868ab
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x7868ab
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x7868ab
imul edi, dword [esi], 0x9e3779b1
shr edi, cl
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
push 0xcf1bbcdc
push 0xb7a56463
mov eax, dword [eax + edi*4]
cmp eax, dword [esp + 0x88]
push dword [esi + 4]
cmovb ecx, dword [esp + 0x4c]
push dword [esi]
mov dword [esp + 0x68], eax
add eax, ecx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x6c], eax
call fcn.007bcf30
mov ecx, dword [esp + 0x48]
call fcn.007bcf90
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x80]
mov edx, dword [ecx + eax*4]
cmp edx, ebp
mov ecx, dword [esp + 0x1c]
cmovb ecx, dword [esp + 0x40]
mov dword [esp + 0x50], ecx
mov ecx, esi
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x2c], ecx
sub ecx, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x4c], ecx
cmp dword [esp + 0x4c], ebp
mov ecx, dword [esp + 0x1c]
cmovb ecx, dword [esp + 0x40]
add ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x2c]
mov dword [ebp + eax*4], ecx
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x78]
mov dword [eax + edi*4], ecx
sub ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x80]
inc ecx
cmp ecx, dword [esp + 0x18]
mov eax, edi
sbb ecx, ecx
sub eax, dword [esp + 0x4c]
dec eax
inc ecx
cmp eax, 3
sbb eax, eax
inc eax
test eax, ecx
je 0x786aec
mov edi, dword [esp + 0x60]
lea ecx, [esi + 1]
mov dword [esp + 0x64], ecx
mov eax, dword [edi]
cmp eax, dword [ecx]
jne 0x786ae5
mov ecx, dword [esp + 0x74]
lea edx, [esi + 5]
mov eax, dword [esp + 0x80]
mov ebx, ecx
cmp dword [esp + 0x4c], eax
mov eax, edx
mov dword [esp + 0x60], edx
cmovb ebx, dword [esp + 0x44]
add edi, 4
sub eax, edi
add eax, ebx
cmp eax, ecx
cmovb ecx, eax
push ecx
push edi
push edx
call fcn.00782bc0
mov esi, eax
add esp, 0xc
lea eax, [esi + edi]
cmp eax, ebx
jne 0x786a23
push dword [esp + 0x74]
mov eax, dword [esp + 0x64]
push dword [esp + 0x24]
add eax, esi
push eax
call fcn.00782bc0
add esp, 0xc
add esi, eax
mov edx, dword [esp + 0x74]
lea edi, [esi + 4]
mov esi, dword [esp + 0x64]
lea ebx, [ebp + 0xc]
mov ecx, dword [esp + 0x34]
add edx, 0xffffffe0
mov eax, esi
mov dword [esp + 0x5c], edx
mov edx, dword [ebx]
sub eax, ecx
mov dword [esp + 0x60], eax
cmp esi, dword [esp + 0x5c]
ja 0x786aa0
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
cmp eax, 0x10
jbe 0x786aaf
movups xmm0, xmmword [ecx + 0x10]
lea edx, [ecx + 0x10]
add eax, 0xfffffff0
mov ecx, dword [ebx]
add ecx, 0x10
lea ebp, [ecx + eax]
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x78]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x786aaf
mov eax, dword [esp + 0x64]
add ecx, 0x10
add edx, 0x10
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x786a83
lea ebx, [ebp + 0xc]
jmp 0x786aaf
push dword [esp + 0x5c]
push esi
push ecx
push edx
call fcn.0077bba0
add esp, 0x10
mov ecx, dword [esp + 0x60]
add dword [ebx], ecx
cmp ecx, 0xffff
jbe 0x786ad0
mov eax, dword [ebp + 4]
sub eax, dword [ebp]
sar eax, 3
mov dword [ebp + 0x24], 1
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 4]
mov word [eax + 4], cx
mov eax, dword [ebp + 4]
mov dword [eax], 1
jmp 0x786f60
mov edi, dword [esp + 0x80]
cmp edx, dword [esp + 0x10]
jbe 0x786c7c
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + edx]
cmp eax, dword [esi]
jne 0x786c7c
mov eax, dword [ecx + edx + 4]
cmp eax, dword [esi + 4]
jne 0x786c7c
mov ebx, dword [esp + 0x74]
cmp edx, edi
mov eax, dword [esp + 0x20]
lea edi, [ecx + 8]
cmovb eax, dword [esp + 0x54]
cmovb ebx, dword [esp + 0x44]
add edi, edx
mov ecx, dword [esp + 0x74]
lea edx, [esi + 8]
mov dword [esp + 0x5c], eax
mov eax, edx
sub eax, edi
add eax, ebx
cmp eax, ecx
cmovb ecx, eax
push ecx
push edi
push edx
call fcn.00782bc0
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x64], ecx
lea eax, [ecx + edi]
cmp eax, ebx
jne 0x786b75
push dword [esp + 0x74]
lea eax, [ecx + 8]
push dword [esp + 0x24]
add eax, esi
push eax
call fcn.00782bc0
mov ecx, dword [esp + 0x70]
add esp, 0xc
add ecx, eax
mov ebx, dword [esp + 0x68]
lea edi, [ecx + 8]
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x2c]
add ecx, ebx
mov edx, dword [esp + 0x34]
sub eax, ebx
cmp dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
sbb ecx, ecx
neg ecx
cmp edx, esi
sbb eax, eax
neg eax
test eax, ecx
je 0x786bdb
add ebx, dword [esp + 0x50]
mov ebp, dword [esp + 0x5c]
nop word [eax + eax]
lea eax, [esi - 1]
mov dword [esp + 0x68], eax
lea ecx, [ebx - 1]
mov al, byte [eax]
mov ebx, ecx
cmp al, byte [ecx]
jne 0x786bd7
mov esi, dword [esp + 0x68]
inc edi
cmp ebp, ebx
sbb ecx, ecx
neg ecx
cmp edx, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x786bb0
mov ebp, dword [esp + 0x78]
mov eax, dword [esp + 0x18]
lea ebx, [ebp + 0xc]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x3c], eax
add ecx, 0xffffffe0
mov eax, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov eax, esi
mov dword [esp + 0x5c], ecx
sub eax, edx
mov ecx, dword [ebx]
mov dword [esp + 0x64], eax
cmp esi, dword [esp + 0x5c]
ja 0x786c64
movups xmm0, xmmword [edx]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jbe 0x786c73
mov ecx, dword [ebx]
add eax, 0xfffffff0
movups xmm0, xmmword [edx + 0x10]
add ecx, 0x10
lea ebp, [ecx + eax]
mov dword [esp + 0x68], ebp
mov ebp, dword [esp + 0x78]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x786c73
mov eax, dword [esp + 0x68]
add ecx, 0x10
add edx, 0x20
nop dword [eax]
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x786c40
mov ecx, dword [esp + 0x64]
lea ebx, [ebp + 0xc]
jmp 0x786f30
push dword [esp + 0x5c]
push esi
push edx
push ecx
call fcn.0077bba0
add esp, 0x10
mov ecx, dword [esp + 0x64]
jmp 0x786f30
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x58], edx
jbe 0x787337
mov eax, dword [esp + 0x5c]
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x787337
push 0xcf1bbcdc
lea ebx, [esi + 1]
push 0xb7a56463
push dword [ebx + 4]
mov dword [esp + 0x70], ebx
push dword [ebx]
call fcn.007bcf30
mov ecx, dword [esp + 0x48]
call fcn.007bcf90
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + eax*4]
lea ecx, [ecx + eax*4]
cmp edx, dword [esp + 0x80]
mov edi, dword [esp + 0x1c]
cmovb edi, dword [esp + 0x40]
mov eax, dword [esp + 0x2c]
add edi, edx
inc eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x50], edi
mov dword [ecx], eax
cmp edx, dword [esp + 0x10]
jbe 0x786dd2
mov eax, dword [edi]
cmp eax, dword [ebx]
jne 0x786dd2
mov eax, dword [edi + 4]
cmp eax, dword [ebx + 4]
jne 0x786dd2
cmp edx, dword [esp + 0x80]
lea edx, [esi + 9]
mov ecx, dword [esp + 0x74]
mov ebx, ecx
cmovb ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x20]
cmovb eax, dword [esp + 0x54]
add edi, 8
mov dword [esp + 0x5c], eax
mov eax, edx
sub eax, edi
mov dword [esp + 0x68], edx
add eax, ebx
cmp eax, ecx
cmovb ecx, eax
push ecx
push edi
push edx
call fcn.00782bc0
mov esi, eax
add esp, 0xc
lea eax, [esi + edi]
cmp eax, ebx
jne 0x786d68
push dword [esp + 0x74]
mov eax, dword [esp + 0x6c]
push dword [esp + 0x24]
add eax, esi
push eax
call fcn.00782bc0
add esp, 0xc
add esi, eax
mov eax, dword [esp + 0x2c]
lea edi, [esi + 8]
sub eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x50]
inc eax
cmp dword [esp + 0x5c], ebx
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0x34]
sbb ecx, ecx
neg ecx
mov dword [esp + 0x58], eax
cmp edx, esi
sbb eax, eax
neg eax
test eax, ecx
je 0x786e9e
nop word [eax + eax]
lea eax, [esi - 1]
mov dword [esp + 0x68], eax
lea ecx, [ebx - 1]
mov al, byte [eax]
mov ebx, ecx
cmp al, byte [ecx]
jne 0x786e9e
mov esi, dword [esp + 0x68]
inc edi
cmp dword [esp + 0x5c], ebx
sbb ecx, ecx
neg ecx
cmp edx, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x786da0
jmp 0x786e9e
mov ecx, dword [esp + 0x58]
lea edx, [esi + 4]
cmp ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x20]
cmovb eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x74]
cmovb ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x74]
add edi, 4
mov dword [esp + 0x50], eax
mov eax, edx
sub eax, edi
add eax, ebx
cmp eax, ecx
cmovb ecx, eax
push ecx
push edi
push edx
call fcn.00782bc0
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x68], ecx
lea eax, [ecx + edi]
cmp eax, ebx
jne 0x786e40
push dword [esp + 0x74]
lea eax, [ecx + 4]
push dword [esp + 0x24]
add eax, esi
push eax
call fcn.00782bc0
mov ecx, dword [esp + 0x74]
add esp, 0xc
add ecx, eax
mov eax, dword [esp + 0x2c]
lea edi, [ecx + 4]
mov ebx, dword [esp + 0x58]
sub eax, ebx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0x50], eax
sbb ecx, ecx
neg ecx
cmp edx, esi
sbb eax, eax
neg eax
test eax, ecx
je 0x786e9e
add ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x50]
lea eax, [esi - 1]
mov dword [esp + 0x6c], eax
lea ecx, [ebx - 1]
mov al, byte [eax]
mov ebx, ecx
cmp al, byte [ecx]
jne 0x786e9a
mov esi, dword [esp + 0x6c]
inc edi
cmp ebp, ebx
sbb ecx, ecx
neg ecx
cmp edx, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x786e73
mov ebp, dword [esp + 0x78]
mov eax, dword [esp + 0x18]
lea ebx, [ebp + 0xc]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x3c], eax
add ecx, 0xffffffe0
mov eax, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov eax, esi
mov dword [esp + 0x5c], ecx
sub eax, edx
mov ecx, dword [ebx]
mov dword [esp + 0x68], eax
cmp esi, dword [esp + 0x5c]
ja 0x786f1d
movups xmm0, xmmword [edx]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jbe 0x786f2c
mov ecx, dword [ebx]
add eax, 0xfffffff0
movups xmm0, xmmword [edx + 0x10]
add ecx, 0x10
lea ebp, [ecx + eax]
mov dword [esp + 0x6c], ebp
mov ebp, dword [esp + 0x78]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x786f2c
mov eax, dword [esp + 0x6c]
add ecx, 0x10
add edx, 0x20
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x786f00
lea ebx, [ebp + 0xc]
jmp 0x786f2c
push dword [esp + 0x5c]
push esi
push edx
push ecx
call fcn.0077bba0
add esp, 0x10
mov ecx, dword [esp + 0x68]
add dword [ebx], ecx
cmp ecx, 0xffff
jbe 0x786f4d
mov eax, dword [ebp + 4]
sub eax, dword [ebp]
sar eax, 3
mov dword [ebp + 0x24], 1
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 4]
mov word [eax + 4], cx
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x58]
add ecx, 3
mov dword [eax], ecx
lea ecx, [edi - 3]
cmp ecx, 0xffff
jbe 0x786f7e
mov eax, dword [ebp + 4]
sub eax, dword [ebp]
sar eax, 3
mov dword [ebp + 0x24], 2
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 4]
add esi, edi
mov ebx, esi
mov dword [esp + 0x34], ebx
mov word [eax + 6], cx
add dword [ebp + 4], 8
mov eax, dword [esp + 0x38]
cmp esi, eax
ja 0x787347
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
add edi, 2
push 0xcf1bbcdc
push 0xb7a56463
push dword [edi + eax + 4]
push dword [edi + eax]
call fcn.007bcf30
mov ecx, dword [esp + 0x48]
call fcn.007bcf90
mov ecx, dword [esp + 0x30]
push 0xcf1bbcdc
push 0xb7a56463
mov dword [ecx + eax*4], edi
push dword [esi + 2]
push dword [esi - 2]
call fcn.007bcf30
mov ecx, dword [esp + 0x48]
call fcn.007bcf90
mov edx, dword [esp + 0x1c]
mov ecx, eax
mov ebp, dword [esp + 0x30]
mov eax, esi
sub eax, edx
mov dword [esp + 0x6c], eax
add eax, 0xfffffffe
mov dword [ebp + ecx*4], eax
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x78]
cmp eax, 4
ja case.0x787016.0
jmp dword [eax*4 + 0x7873a0]
push 0xcf1bbcdc
push 0xbb000000
push dword [edi + edx + 4]
push dword [edi + edx]
call fcn.007bcf30
mov ecx, dword [esp + 0x84]
call fcn.007bcf90
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov dword [edx + eax*4], edi
mov eax, dword [esp + 0x24]
jmp switch.0x0078710c
push 0xcf1bbcdc
push 0xbf9b0000
push dword [edi + edx + 4]
push dword [edi + edx]
call fcn.007bcf30
mov ecx, dword [esp + 0x84]
call fcn.007bcf90
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov dword [edx + eax*4], edi
mov eax, dword [esp + 0x24]
jmp switch.0x0078710c
push 0xcf1bbcdc
push 0xbfa56300
push dword [edi + edx + 4]
push dword [edi + edx]
call fcn.007bcf30
mov ecx, dword [esp + 0x84]
call fcn.007bcf90
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov dword [edx + eax*4], edi
mov eax, dword [esp + 0x24]
jmp switch.0x0078710c
push 0xcf1bbcdc
push 0xb7a56463
push dword [edi + edx + 4]
push dword [edi + edx]
call fcn.007bcf30
mov ecx, dword [esp + 0x84]
call fcn.007bcf90
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov dword [edx + eax*4], edi
mov eax, dword [esp + 0x24]
jmp switch.0x0078710c
imul eax, dword [edi + edx], 0x9e3779b1
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
shr eax, cl
mov dword [edx + eax*4], edi
mov eax, dword [esp + 0x24]
cmp eax, 4
ja case.0x78710c.0
jmp dword [eax*4 + 0x7873b4]
push 0xcf1bbcdc
push 0xbb000000
push dword [esi + 3]
push dword [esi - 1]
call fcn.007bcf30
mov ecx, dword [esp + 0x84]
call fcn.007bcf90
mov edx, eax
jmp 0x787165
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x78711d
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x78711d
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x78711d
imul edx, dword [esi - 1], 0x9e3779b1
shr edx, cl
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
dec eax
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x74]
add eax, 0xffffffe0
mov dword [esp + 0x68], eax
nop dword [eax]
mov edi, dword [esp + 0x1c]
mov eax, esi
mov ecx, dword [esp + 0x3c]
sub eax, edi
mov edx, eax
mov dword [esp + 0x64], eax
sub edx, ecx
cmp edx, dword [esp + 0x80]
jae 0x7871a1
mov edi, dword [esp + 0x40]
sub eax, dword [esp + 0x10]
add edi, edx
cmp eax, ecx
mov eax, dword [esp + 0x80]
sbb ecx, ecx
sub eax, edx
dec eax
inc ecx
cmp eax, 3
sbb eax, eax
inc eax
test eax, ecx
je 0x787341
mov eax, dword [edi]
cmp eax, dword [esi]
jne 0x787341
cmp edx, dword [esp + 0x80]
lea edx, [esi + 4]
mov ecx, dword [esp + 0x74]
mov eax, edx
mov ebx, ecx
cmovb ebx, dword [esp + 0x44]
add edi, 4
sub eax, edi
add eax, ebx
cmp eax, ecx
cmovb ecx, eax
push ecx
push edi
push edx
call fcn.00782bc0
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x6c], ecx
lea eax, [ecx + edi]
cmp eax, ebx
jne 0x787225
push dword [esp + 0x74]
lea eax, [ecx + 4]
push dword [esp + 0x24]
add eax, esi
push eax
call fcn.00782bc0
mov ecx, dword [esp + 0x78]
add esp, 0xc
add ecx, eax
mov eax, dword [esp + 0x3c]
lea ebx, [ecx + 4]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0xc]
cmp esi, ecx
ja 0x78724b
movups xmm0, xmmword [esi]
movups xmmword [eax], xmm0
jmp 0x787257
push ecx
push esi
push esi
push eax
call fcn.0077bba0
add esp, 0x10
mov eax, dword [ebp + 4]
xor ecx, ecx
mov word [eax + 4], cx
lea ecx, [ebx - 3]
mov eax, dword [ebp + 4]
mov dword [eax], 1
cmp ecx, 0xffff
jbe 0x787287
mov eax, dword [ebp + 4]
sub eax, dword [ebp]
sar eax, 3
mov dword [ebp + 0x24], 2
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 4]
mov word [eax + 6], cx
add dword [ebp + 4], 8
mov eax, dword [esp + 0x24]
cmp eax, 4
ja case.0x78729b.0
jmp dword [eax*4 + 0x7873c8]
push 0xcf1bbcdc
push 0xbb000000
push dword [esi + 4]
push dword [esi]
call fcn.007bcf30
mov ecx, dword [esp + 0x84]
call fcn.007bcf90
jmp 0x7872f4
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x7872ac
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x7872ac
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x7872ac
imul eax, dword [esi], 0x9e3779b1
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x64]
push 0xcf1bbcdc
push 0xb7a56463
mov dword [ecx + eax*4], edi
push dword [esi + 4]
push dword [esi]
call fcn.007bcf30
mov ecx, dword [esp + 0x48]
call fcn.007bcf90
mov ecx, dword [esp + 0x30]
add esi, ebx
mov ebx, esi
mov dword [esp + 0x34], ebx
mov dword [ecx + eax*4], edi
cmp esi, dword [esp + 0x38]
jbe 0x787180
jmp 0x78735c
mov eax, esi
sub eax, ebx
sar eax, 8
inc eax
add esi, eax
mov eax, dword [esp + 0x38]
cmp esi, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x84]
jb 0x786895
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x18]
pop edi
pop esi
mov dword [edx + 4], eax
mov eax, dword [esp + 0x6c]
pop ebp
sub eax, ebx
mov dword [edx], ecx
pop ebx
add esp, 0x60
ret