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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
mov esi, 0xffffffff
cmp dword [esp + 0xd0], 0x84c
jb 0x77fef8
mov ebp, dword [esp + 0xcc]
mov eax, dword [esp + 0xc0]
mov eax, dword [eax]
movzx ebx, al
xorps xmm0, xmm0
movups xmmword [ebp + 0x2d0], xmm0
movups xmmword [ebp + 0x2c0], xmm0
movups xmmword [ebp + 0x2b0], xmm0
movups xmmword [ebp + 0x2a0], xmm0
movups xmmword [ebp + 0x290], xmm0
movups xmmword [ebp + 0x280], xmm0
movups xmmword [ebp + 0x270], xmm0
mov esi, 0xffffffd4
cmp ebx, 0xc
ja 0x77fef8
mov dword [esp + 0x60], eax
lea edi, [ebp + 0x270]
lea eax, [ebp + 0x3e0]
lea ecx, [ebp + 0x4e0]
lea edx, [esp + 0xa8]
push dword [esp + 0xd4]
push 0x36c
push ecx
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push edx
lea ecx, [esp + 0xbc]
push ecx
push edi
push 0x100
push eax
call fcn.0077b380
add esp, 0x28
cmp eax, 0xffffff88
ja 0x77eb3c
mov ecx, dword [esp + 0xa8]
cmp ecx, ebx
ja 0x77fef8
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x60]
shr eax, 0x18
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xc0]
add eax, 4
mov dword [esp + 0x38], eax
cmp ecx, 0xc
setb al
mov dword [esp + 0x2c], ebx
cmp ebx, 0xc
sete dl
and dl, al
mov byte [esp + 0x44], dl
lea ebx, [ecx + 1]
lea eax, [ebp + 0x34]
mov dword [esp + 0xc], eax
lea eax, [ebp + 0x3c]
mov dword [esp + 0x10], eax
xor edx, edx
mov dword [esp + 0x14], edi
mov dword [esp + 0x3c], 0x34
xor eax, eax
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x28], ecx
mov ebp, ecx
nop word cs:[eax + eax]
mov edi, ebp
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
cmp dword [eax + ebp*4], 0
mov edx, dword [esp + 0x10]
lea ebp, [ebp - 1]
mov dword [esp + 0x34], ebx
lea ebx, [ebx - 1]
mov dword [esp + 0x30], ecx
lea eax, [ecx - 1]
mov dword [esp + 8], esi
lea esi, [esi + 1]
mov ecx, dword [esp]
lea ecx, [ecx + 0x34]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 4]
lea ecx, [ecx + 0x34]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x20], edx
lea ecx, [edx + 0x34]
mov edx, esi
mov dword [esp + 0x10], ecx
je 0x77ea90
cmp byte [esp + 0x44], 0
mov eax, 0xb
mov esi, dword [esp + 0x2c]
cmovne esi, eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x14], edi
lea eax, [edi + 1]
xor edx, edx
mov dword [esp + 0xc], eax
cmp eax, 2
mov ebp, dword [esp + 0xcc]
mov edi, dword [esp]
mov ebx, dword [esp + 0x20]
jb 0x77ebe2
mov eax, dword [esp + 8]
sub eax, dword [esp + 0x28]
cmp eax, 0xfffffffc
jbe 0x77eb43
xor ecx, ecx
mov eax, 1
jmp 0x77ebaa
mov esi, eax
jmp 0x77fef8
mov eax, dword [esp + 0x14]
and eax, 0xfffffffc
mov dword [esp + 0x10], eax
xor ecx, ecx
xor eax, eax
nop word cs:[eax + eax]
mov esi, dword [ebp + eax*4 + 0x274]
add esi, ecx
mov dword [ebp + eax*4 + 0x2ac], ecx
mov edx, dword [ebp + eax*4 + 0x278]
add edx, esi
mov dword [ebp + eax*4 + 0x2b0], esi
mov esi, dword [ebp + eax*4 + 0x27c]
add esi, edx
mov dword [ebp + eax*4 + 0x2b4], edx
mov ecx, dword [ebp + eax*4 + 0x280]
add ecx, esi
mov dword [ebp + eax*4 + 0x2b8], esi
add eax, 4
cmp dword [esp + 0x10], eax
jne 0x77eb60
inc eax
mov edx, ecx
test byte [esp + 0x14], 3
je 0x77ebe2
lea eax, [eax*4 + 0x2a8]
add eax, ebp
mov edx, dword [esp + 0x14]
and edx, 3
mov dword [esp + 0x10], edx
xor esi, esi
nop dword [eax]
mov edx, dword [eax + esi*4 - 0x38]
add edx, ecx
mov dword [eax + esi*4], ecx
inc esi
mov ecx, edx
cmp dword [esp + 0x10], esi
jne 0x77ebd0
mov dword [ebp + 0x2a8], edx
mov eax, dword [esp + 0x14]
mov dword [ebp + eax*4 + 0x2ac], edx
mov ecx, eax
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x77ec9f
xor eax, eax
cmp edx, 1
je 0x77ec76
mov ecx, edx
and ecx, 0xfffffffe
xor eax, eax
nop word cs:[eax + eax]
movzx esi, byte [ebp + eax + 0x3e0]
mov edi, dword [ebp + esi*4 + 0x2a8]
lea ebx, [edi + 1]
mov dword [ebp + esi*4 + 0x2a8], ebx
mov byte [ebp + edi + 0x2e0], al
movzx esi, byte [ebp + eax + 0x3e1]
mov edi, dword [ebp + esi*4 + 0x2a8]
lea ebx, [edi + 1]
mov dword [ebp + esi*4 + 0x2a8], ebx
mov ebx, eax
inc bl
mov byte [ebp + edi + 0x2e0], bl
add eax, 2
cmp eax, ecx
jne 0x77ec20
mov ecx, dword [esp + 0x14]
mov edi, dword [esp]
mov ebx, dword [esp + 0x20]
test dl, 1
je 0x77ec9f
movzx ecx, byte [ebp + eax + 0x3e0]
mov edx, dword [ebp + ecx*4 + 0x2a8]
lea esi, [edx + 1]
mov dword [ebp + ecx*4 + 0x2a8], esi
mov ecx, dword [esp + 0x14]
mov byte [ebp + edx + 0x2e0], al
mov dword [ebp + 0x2a8], 0
cmp dword [esp + 0xc], 2
mov edx, dword [esp + 0x2c]
jb 0x77fed3
mov eax, dword [esp + 8]
inc eax
mov esi, dword [esp + 0x28]
cmp eax, esi
jne 0x77ecce
xor esi, esi
mov eax, 1
jmp 0x77ed3a
lea edi, [ebp + 0x278]
sub edx, esi
and ecx, 0xfffffffe
mov dword [esp + 0x10], ecx
xor esi, esi
mov eax, 0xffffffff
nop word cs:[eax + eax]
mov ebx, dword [edi - 4]
mov ebp, dword [edi]
mov ecx, edx
shl ebx, cl
add ebx, esi
mov dword [edi - 0x274], esi
inc cl
shl ebp, cl
mov esi, ebp
add esi, ebx
mov dword [edi - 0x270], ebx
add edi, 8
add edx, 2
mov ecx, dword [esp + 0x10]
add ecx, eax
add ecx, 0xfffffffe
add eax, 0xfffffffe
cmp ecx, 0xffffffff
jne 0x77ecf0
neg eax
mov ebp, dword [esp + 0xcc]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp]
mov ebx, dword [esp + 0x20]
test cl, 1
je 0x77ed43
mov dword [ebp + eax*4], esi
mov edx, dword [esp + 0x4c]
sub edx, ecx
mov eax, dword [esp + 0x2c]
sub eax, edx
inc eax
mov dword [esp + 0x64], edx
cmp edx, eax
jae 0x77eee3
cmp dword [esp + 0xc], 2
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
jb 0x77fed3
mov ecx, edx
mov edx, dword [esp + 0x30]
add edx, ecx
imul ecx, dword [esp + 8], 0x34
add ecx, 0x34
mov dword [esp + 0xc], ecx
and eax, 0xfffffff8
mov dword [esp + 0x3c], eax
inc eax
mov dword [esp + 8], eax
lea eax, [ebp + 0x14]
mov dword [esp + 0x28], eax
xor esi, esi
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 4]
mov dword [esp + 0x30], edx
jmp 0x77edce
inc ecx
inc esi
mov edi, dword [esp]
add edi, 0x34
mov eax, dword [esp + 4]
add eax, 0x34
add ebx, 0x34
mov edx, dword [esp + 0x30]
cmp edx, ecx
je 0x77eee3
mov dword [esp + 4], eax
mov dword [esp], edi
mov edx, 1
cmp dword [esp + 0x14], 8
jae 0x77ede7
mov eax, dword [esp + 0x34]
jmp 0x77ee50
imul eax, esi, 0x34
add eax, dword [esp + 0xc]
cmp eax, 0x20
mov eax, dword [esp + 0x34]
jb 0x77ee50
movd xmm1, ecx
xorps xmm0, xmm0
movss xmm0, xmm1
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
mov edi, dword [esp]
nop dword [eax]
movdqu xmm1, xmmword [edx - 0x10]
movdqu xmm2, xmmword [edx]
psrld xmm1, xmm0
psrld xmm2, xmm0
movdqu xmmword [edx + edi - 0x10], xmm1
movdqu xmmword [edx + edi], xmm2
add edx, 0x20
add eax, 0xfffffff8
jne 0x77ee10
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x14], eax
mov eax, dword [esp + 0x34]
je 0x77edb0
nop word [eax + eax]
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], ebx
sub eax, edx
mov esi, edx
test al, 3
mov ebx, dword [esp + 4]
je 0x77ee8d
mov eax, dword [esp + 0x34]
mov edx, esi
sub al, dl
movzx eax, al
and eax, 3
nop word cs:[eax + eax]
mov edi, dword [ebp + edx*4]
shr edi, cl
mov dword [ebx + edx*4], edi
inc edx
dec eax
jne 0x77ee80
mov eax, dword [esp + 0x14]
sub eax, esi
cmp eax, 3
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
jb 0x77edb0
nop dword [eax + eax]
mov eax, dword [ebp + edx*4]
shr eax, cl
mov dword [ebx + edx*4 - 8], eax
mov eax, dword [ebp + edx*4 + 4]
shr eax, cl
mov dword [ebx + edx*4 - 4], eax
mov eax, dword [ebp + edx*4 + 8]
shr eax, cl
mov dword [ebx + edx*4], eax
mov eax, dword [ebp + edx*4 + 0xc]
shr eax, cl
mov dword [ebx + edx*4 + 4], eax
add edx, 4
cmp edi, edx
jne 0x77eeb0
jmp 0x77edb0
cmp dword [esp + 0x14], 0
mov edx, dword [esp + 0x2c]
jle 0x77fed3
lea eax, [ebp + 0x2e0]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x4c]
sub eax, edx
mov dword [esp + 0x8c], eax
lea eax, [ebp + 0x2df]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xc0]
lea ecx, [eax + 0x74]
mov dword [esp + 0x5c], ecx
add eax, 0x14
mov dword [esp + 0x48], eax
lea eax, [ebp + 0x2e2]
mov dword [esp + 0x6c], eax
xorps xmm0, xmm0
lea eax, [ebp + 0x2e4]
mov dword [esp + 0x68], eax
mov eax, 1
jmp 0x77ef68
mov ecx, dword [esp + 0x90]
lea eax, [ecx + 1]
cmp dword [esp + 0x14], ecx
mov edx, dword [esp + 0x2c]
je 0x77fed3
mov esi, dword [ebp + eax*4 + 0x2a4]
mov edi, dword [ebp + eax*4 + 0x2a8]
mov ecx, edx
mov edx, dword [esp + 0x4c]
sub edx, eax
mov ebx, edx
sub ecx, edx
mov dword [esp + 0x90], eax
mov edx, dword [ebp + eax*4]
cmp ecx, dword [esp + 0x64]
mov dword [esp + 0x18], edi
mov dword [esp + 8], ebx
jae 0x77f150
mov eax, dword [esp + 0x38]
mov ebx, esi
mov dword [esp + 0x24], edx
lea esi, [eax + edx*4]
and ecx, 0x1f
mov edi, 1
shl edi, cl
mov edx, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
lea eax, [edx + ebx]
mov ebx, dword [esp + 0x18]
add edx, ebx
mov dword [esp + 4], edx
lea edx, [edi - 1]
cmp edx, 7
ja case.0x77efd7.3
jmp dword [edx*4 + 0xa99440]
mov edi, dword [esp + 0x18]
mov edx, edi
sub edx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
je 0x77ef50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
cmp edx, 8
mov dword [esp + 8], ebx
jb 0x77f098
mov dword [esp], edx
cmp esi, ecx
jae 0x77f02d
mov ecx, dword [esp + 0x24]
lea edx, [ecx + edi]
sub edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
lea edx, [edi + edx*4]
mov edi, dword [esp + 0x18]
cmp eax, edx
jb 0x77f098
mov edx, dword [esp]
and edx, 0xfffffff8
lea esi, [esi + edx*4]
add eax, edx
movd xmm1, ebx
pshufd xmm1, xmm1, 0
mov ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x24]
lea edi, [edi + ebx*4]
xor ebx, ebx
movd xmm2, dword [ecx + ebx - 4]
movd xmm3, dword [ecx + ebx]
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm3, xmm0
punpcklwd xmm3, xmm0
por xmm2, xmm1
por xmm3, xmm1
movdqu xmmword [edi + ebx*4 - 0x10], xmm2
movdqu xmmword [edi + ebx*4], xmm3
add ebx, 8
cmp edx, ebx
jne 0x77f056
cmp dword [esp], edx
mov edi, dword [esp + 0x18]
je 0x77ef50
lea edx, [edi + ebp]
sub edx, eax
mov ecx, eax
and edx, 7
je 0x77f0be
mov ebx, dword [esp + 8]
nop dword [eax + eax]
movzx edi, byte [ecx]
or edi, ebx
mov dword [esi], edi
add esi, 4
inc ecx
dec edx
jne 0x77f0b0
mov edx, dword [esp + 0x18]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 7
jb 0x77ef50
xor eax, eax
nop word cs:[eax + eax]
movzx edx, byte [ecx + eax]
mov edi, dword [esp + 8]
or edx, edi
mov dword [esi + eax*4], edx
movzx edx, byte [ecx + eax + 1]
or edx, edi
mov dword [esi + eax*4 + 4], edx
movzx edx, byte [ecx + eax + 2]
or edx, edi
mov dword [esi + eax*4 + 8], edx
movzx edx, byte [ecx + eax + 3]
or edx, edi
mov dword [esi + eax*4 + 0xc], edx
movzx edx, byte [ecx + eax + 4]
or edx, edi
mov dword [esi + eax*4 + 0x10], edx
movzx edx, byte [ecx + eax + 5]
or edx, edi
mov dword [esi + eax*4 + 0x14], edx
movzx edx, byte [ecx + eax + 6]
or edx, edi
mov dword [esi + eax*4 + 0x18], edx
movzx edx, byte [ecx + eax + 7]
or edx, edi
mov dword [esi + eax*4 + 0x1c], edx
lea edx, [ecx + eax]
add edx, 8
add eax, 8
cmp edx, dword [esp + 4]
jne 0x77f0e0
jmp 0x77ef50
and ecx, 0x1f
mov eax, 1
shl eax, cl
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x8c]
add ebx, eax
cmp ebx, 2
mov eax, 1
mov dword [esp + 0x78], ebx
cmovge eax, ebx
mov dword [esp + 0x50], eax
cmp edi, esi
je 0x77ef50
mov edi, edx
mov ebx, esi
mov eax, dword [esp + 8]
imul edx, eax, 0x34
add edx, ebp
mov dword [esp + 0x28], edx
mov edx, eax
shl edx, 0x10
add edx, 0x1000000
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x50]
cmp edx, dword [esp + 0x14]
jle 0x77f307
cmp dword [esp + 0x78], 2
jl 0x77ef50
mov eax, dword [esp + 0x5c]
lea eax, [eax + edi*4]
mov ecx, dword [esp + 0x40]
lea ecx, [ecx*4]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x48]
lea edx, [ecx + edi*4]
mov ecx, dword [esp + 0x38]
lea esi, [ecx + edi*4]
jmp 0x77f225
mov dword [edi], ebp
mov dword [edi + 4], ebp
add edi, 8
mov dword [edi], ebp
mov dword [edi + 4], ebp
mov edi, dword [esp + 0x24]
add edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x1c]
inc ebx
mov ecx, dword [esp + 4]
add eax, ecx
add edx, ecx
add esi, ecx
cmp ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0xcc]
je 0x77ef50
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x24], edi
lea edi, [ecx + edi*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
movzx ebp, byte [ecx + ebx]
or ebp, dword [esp + 0x70]
mov ecx, 1
imul ebp, ecx
mov ecx, dword [esp + 0x40]
cmp ecx, 2
je 0x77f1f8
cmp ecx, 4
je 0x77f1f0
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x28]
mov ecx, dword [edi + ecx*4]
test ecx, ecx
jle 0x77f1fd
lea edi, [ecx - 1]
shr edi, 3
inc edi
xor ebx, ebx
movd xmm1, ebp
cmp ecx, 0x19
jb 0x77f2c7
mov ebp, edi
and ebp, 0xfffffffc
movdqa xmm2, xmm1
punpckldq xmm2, xmm1
pshufd xmm2, xmm2, 0x44
xor ebx, ebx
nop dword [eax + eax]
movdqu xmmword [eax + ebx*4 - 0x70], xmm2
movdqu xmmword [eax + ebx*4 - 0x60], xmm2
movdqu xmmword [eax + ebx*4 - 0x50], xmm2
movdqu xmmword [eax + ebx*4 - 0x40], xmm2
movdqu xmmword [eax + ebx*4 - 0x30], xmm2
movdqu xmmword [eax + ebx*4 - 0x20], xmm2
movdqu xmmword [eax + ebx*4 - 0x10], xmm2
movdqu xmmword [eax + ebx*4], xmm2
add ebx, 0x20
add ebp, 0xfffffffc
jne 0x77f290
and edi, 3
je 0x77f1fd
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
lea ebp, [edx + ebx*4]
lea ebx, [esi + ebx*4]
shl edi, 5
xor ecx, ecx
nop word cs:[eax + eax]
movdqu xmmword [ebx + ecx], xmm1
movdqu xmmword [ebp + ecx], xmm1
add ecx, 0x20
cmp edi, ecx
jne 0x77f2f0
jmp 0x77f1fd
mov edx, 4
shl edx, cl
mov dword [esp + 0x9c], edx
add eax, dword [esp + 0x4c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc0]
mov ecx, edi
lea eax, [eax + edi*4]
add eax, 4
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x5c]
lea edi, [eax + edi*4]
mov eax, dword [esp + 0x40]
lea eax, [eax*4]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x48]
lea eax, [eax + ecx*4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x38]
lea eax, [eax + ecx*4]
mov dword [esp + 0x74], eax
mov dword [esp + 0x7c], 0
jmp 0x77f3a3
mov ecx, dword [esp + 0x24]
add ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x1c]
inc ebx
inc dword [esp + 0x7c]
mov edi, dword [esp + 0xa0]
mov eax, dword [esp + 0x94]
add edi, eax
add dword [esp + 0x54], eax
add dword [esp + 0x74], eax
cmp ebx, dword [esp + 0x18]
je 0x77ef50
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], ecx
lea eax, [eax + ecx*4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
movzx ebx, byte [eax + ebx]
cmp dword [esp + 0x78], 2
jl 0x77f3fa
mov edx, dword [esp + 0x70]
or edx, ebx
mov eax, 1
imul edx, eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
cmp ecx, 2
je 0x77f3f5
cmp ecx, 4
jne 0x77fa5f
mov eax, dword [esp + 0x20]
mov dword [eax], edx
mov dword [eax + 4], edx
add eax, 8
mov dword [eax], edx
mov dword [eax + 4], edx
mov dword [esp + 0xa0], edi
mov eax, dword [esp + 0x9c]
imul eax, dword [esp + 0x7c]
add eax, dword [esp + 0x98]
mov dword [esp + 0x80], eax
mov dword [esp + 4], ebx
movd xmm2, ebx
pshufd xmm1, xmm2, 0x50
pshufd xmm2, xmm2, 0
mov ecx, dword [esp + 0x50]
jmp 0x77f45a
mov ecx, dword [esp + 0x3c]
lea eax, [ecx + 1]
cmp dword [esp + 0x14], ecx
mov ecx, eax
mov ebp, dword [esp + 0xcc]
je 0x77f370
mov ebx, dword [ebp + ecx*4 + 0x2a4]
mov edi, dword [ebp + ecx*4 + 0x2a8]
mov edx, dword [esp + 8]
sub edx, ecx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
mov ecx, dword [eax + ecx*4]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x34], ecx
lea ebp, [eax + ecx*4]
mov ecx, dword [esp + 0x2c]
mov dword [esp], edx
sub ecx, edx
and ecx, 0x1f
mov esi, 1
shl esi, cl
mov edx, dword [esp + 0x30]
lea eax, [edx + ebx]
mov dword [esp + 0xc], edi
add edx, edi
mov dword [esp + 0x10], edx
lea edx, [esi - 1]
cmp edx, 7
ja case.0x77f4b4.3
jmp dword [edx*4 + 0xa99420]
mov esi, dword [esp + 0xc]
mov edx, esi
sub edx, ebx
je 0x77f440
mov ecx, dword [esp]
shl ecx, 0x10
add ecx, 0x2000000
mov dword [esp], ecx
cmp edx, 7
jbe 0x77f583
mov dword [esp + 0x58], edx
cmp ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x34]
jae 0x77f506
lea ecx, [edi + esi]
sub ecx, ebx
mov edx, dword [esp + 0x80]
lea ecx, [edx + ecx*4]
cmp eax, ecx
jb 0x77f583
mov edx, dword [esp + 0x58]
mov esi, edx
and esi, 0xfffffff8
lea ebp, [ebp + esi*4]
add eax, esi
movd xmm3, dword [esp]
pshufd xmm3, xmm3, 0
add ebx, dword [esp + 0x68]
mov ecx, dword [esp + 0x54]
lea edi, [ecx + edi*4]
xor ecx, ecx
nop dword [eax]
movd xmm4, dword [ebx + ecx - 4]
movd xmm5, dword [ebx + ecx]
punpcklbw xmm4, xmm0
punpcklwd xmm4, xmm0
punpcklbw xmm5, xmm0
punpcklwd xmm5, xmm0
pslld xmm4, 8
pslld xmm5, 8
movdqa xmm6, xmm3
por xmm6, xmm2
por xmm4, xmm6
por xmm6, xmm5
movdqu xmmword [edi + ecx*4 - 0x10], xmm4
movdqu xmmword [edi + ecx*4], xmm6
add ecx, 8
cmp esi, ecx
jne 0x77f530
cmp edx, esi
mov esi, dword [esp + 0xc]
je 0x77f440
mov ecx, dword [esp + 0xcc]
add esi, ecx
sub esi, eax
mov ecx, eax
and esi, 3
je 0x77f5b8
mov ebx, dword [esp]
nop dword [eax + eax]
movzx edx, byte [ecx]
shl edx, 8
mov edi, ebx
or edi, dword [esp + 4]
or edi, edx
mov dword [ebp], edi
add ebp, 4
inc ecx
dec esi
jne 0x77f5a0
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 3
mov edi, dword [esp + 0x10]
jb 0x77f440
xor eax, eax
nop word cs:[eax + eax]
movzx edx, byte [ecx + eax]
shl edx, 8
mov esi, dword [esp]
or esi, dword [esp + 4]
or edx, esi
mov dword [ebp + eax*4], edx
movzx edx, byte [ecx + eax + 1]
shl edx, 8
or edx, esi
mov dword [ebp + eax*4 + 4], edx
movzx edx, byte [ecx + eax + 2]
shl edx, 8
or edx, esi
mov dword [ebp + eax*4 + 8], edx
movzx edx, byte [ecx + eax + 3]
shl edx, 8
or edx, esi
mov dword [ebp + eax*4 + 0xc], edx
lea edx, [ecx + eax]
add edx, 4
add eax, 4
cmp edx, edi
jne 0x77f5e0
jmp 0x77f440
mov esi, dword [esp + 0xc]
mov ecx, esi
sub ecx, ebx
je 0x77f440
mov edx, dword [esp]
shl edx, 0x10
add edx, 0x2000000
test cl, 1
jne 0x77f923
mov edi, edx
inc ebx
cmp esi, ebx
mov ebx, dword [esp + 0x10]
jne 0x77f960
jmp 0x77f440
mov esi, dword [esp + 0xc]
mov edx, esi
sub edx, ebx
je 0x77f440
mov ecx, dword [esp]
shl ecx, 0x10
add ecx, 0x2000000
mov dword [esp], ecx
cmp edx, 5
jbe 0x77f755
mov dword [esp + 0x58], edx
cmp ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x34]
jae 0x77f6bd
lea ecx, [edi*4]
lea ecx, [ecx + esi*8]
lea edx, [ebx*8]
sub ecx, edx
add ecx, dword [esp + 0x80]
cmp eax, ecx
jb 0x77f755
mov esi, dword [esp + 0x58]
and esi, 0xfffffffc
lea ebp, [ebp + esi*8]
add eax, esi
movd xmm3, dword [esp]
pshufd xmm3, xmm3, 0x50
add ebx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x54]
lea edi, [ecx + edi*4]
xor ecx, ecx
nop word cs:[eax + eax]
movzx edx, word [ebx + ecx - 2]
movd xmm4, edx
movzx edx, word [ebx + ecx]
movd xmm5, edx
punpcklbw xmm4, xmm0
punpcklwd xmm4, xmm0
punpcklbw xmm5, xmm0
punpcklwd xmm5, xmm0
pslld xmm4, 8
pslld xmm5, 8
movdqa xmm6, xmm3
por xmm6, xmm1
por xmm4, xmm6
por xmm6, xmm5
pshufd xmm4, xmm4, 0x50
movdqu xmmword [edi + ecx*8 - 0x10], xmm4
pshufd xmm4, xmm6, 0x50
movdqu xmmword [edi + ecx*8], xmm4
add ecx, 4
cmp esi, ecx
jne 0x77f6f0
cmp dword [esp + 0x58], esi
mov esi, dword [esp + 0xc]
je 0x77f440
mov ecx, dword [esp + 0xcc]
add esi, ecx
sub esi, eax
mov ecx, eax
and esi, 3
je 0x77f78b
mov ebx, dword [esp]
nop word [eax + eax]
movzx edx, byte [ecx]
shl edx, 8
mov edi, ebx
or edi, dword [esp + 4]
or edi, edx
mov dword [ebp], edi
mov dword [ebp + 4], edi
add ebp, 8
inc ecx
dec esi
jne 0x77f770
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 3
mov edi, dword [esp + 0x10]
jb 0x77f440
xor eax, eax
nop word cs:[eax + eax]
movzx edx, byte [ecx + eax]
shl edx, 8
mov esi, dword [esp]
or esi, dword [esp + 4]
or edx, esi
mov dword [ebp + eax*8], edx
mov dword [ebp + eax*8 + 4], edx
movzx edx, byte [ecx + eax + 1]
shl edx, 8
or edx, esi
mov dword [ebp + eax*8 + 8], edx
mov dword [ebp + eax*8 + 0xc], edx
movzx edx, byte [ecx + eax + 2]
shl edx, 8
or edx, esi
mov dword [ebp + eax*8 + 0x10], edx
mov dword [ebp + eax*8 + 0x14], edx
movzx edx, byte [ecx + eax + 3]
shl edx, 8
or edx, esi
mov dword [ebp + eax*8 + 0x18], edx
mov dword [ebp + eax*8 + 0x1c], edx
lea edx, [ecx + eax]
add edx, 4
add eax, 4
cmp edx, edi
jne 0x77f7b0
jmp 0x77f440
mov esi, dword [esp + 0xc]
mov ecx, esi
sub ecx, ebx
je 0x77f440
mov edx, dword [esp]
shl edx, 0x10
add edx, 0x2000000
test cl, 1
jne 0x77f9b5
mov edi, edx
inc ebx
cmp esi, ebx
mov ebx, dword [esp + 0x10]
jne 0x77fa00
jmp 0x77f440
cmp dword [esp + 0xc], ebx
je 0x77f440
mov edx, 4
shl edx, cl
mov edi, dword [esp]
shl edi, 0x10
add edi, 0x2000000
add edx, 0xffffffe0
mov dword [esp + 0xc], edx
shr edx, 5
inc edx
and edx, 3
or edi, dword [esp + 4]
mov dword [esp], edi
jmp 0x77f88d
mov ebx, dword [esp + 0x10]
inc eax
cmp eax, ebx
je 0x77f440
cmp ecx, 0x1d
ja 0x77f880
movzx edi, byte [eax]
shl edi, 8
or edi, dword [esp]
mov ebx, 1
imul edi, ebx
movd xmm3, edi
mov edi, ebp
test edx, edx
je 0x77f8cf
movdqa xmm4, xmm3
punpckldq xmm4, xmm3
pshufd xmm4, xmm4, 0x44
mov ebx, edx
mov edi, ebp
nop
movdqu xmmword [edi], xmm4
movdqu xmmword [edi + 0x10], xmm4
add edi, 0x20
dec ebx
jne 0x77f8c0
lea ebp, [ebp + esi*4]
cmp dword [esp + 0xc], 0x60
mov ebx, dword [esp + 0x10]
jb 0x77f884
punpckldq xmm3, xmm3
pshufd xmm3, xmm3, 0x44
nop word [eax + eax]
movdqu xmmword [edi], xmm3
movdqu xmmword [edi + 0x10], xmm3
movdqu xmmword [edi + 0x20], xmm3
movdqu xmmword [edi + 0x30], xmm3
movdqu xmmword [edi + 0x40], xmm3
movdqu xmmword [edi + 0x50], xmm3
movdqu xmmword [edi + 0x60], xmm3
movdqu xmmword [edi + 0x70], xmm3
sub edi, 0xffffff80
cmp edi, ebp
jne 0x77f8f0
jmp 0x77f884
movzx ecx, byte [eax]
shl ecx, 8
mov edi, edx
or edx, dword [esp + 4]
or edx, ecx
mov ecx, 1
imul edx, ecx
movd xmm3, edx
punpckldq xmm3, xmm3
pshufd xmm3, xmm3, 0x44
movdqu xmmword [ebp], xmm3
add ebp, 0x10
inc eax
inc ebx
cmp esi, ebx
mov ebx, dword [esp + 0x10]
je 0x77f440
nop dword [eax]
movzx edx, byte [eax]
shl edx, 8
mov ecx, edi
or ecx, dword [esp + 4]
or edx, ecx
mov esi, 1
imul edx, esi
movd xmm3, edx
punpckldq xmm3, xmm3
pshufd xmm3, xmm3, 0x44
movdqu xmmword [ebp], xmm3
movzx edx, byte [eax + 1]
shl edx, 8
or edx, ecx
imul edx, esi
movd xmm3, edx
punpckldq xmm3, xmm3
pshufd xmm3, xmm3, 0x44
movdqu xmmword [ebp + 0x10], xmm3
add ebp, 0x20
add eax, 2
cmp eax, ebx
jne 0x77f960
jmp 0x77f440
movzx ecx, byte [eax]
shl ecx, 8
mov edi, edx
or edx, dword [esp + 4]
or edx, ecx
mov ecx, 1
imul edx, ecx
movd xmm3, edx
punpckldq xmm3, xmm3
pshufd xmm3, xmm3, 0x44
movdqu xmmword [ebp], xmm3
movdqu xmmword [ebp + 0x10], xmm3
add ebp, 0x20
inc eax
inc ebx
cmp esi, ebx
mov ebx, dword [esp + 0x10]
je 0x77f440
nop word cs:[eax + eax]
movzx edx, byte [eax]
shl edx, 8
mov ecx, edi
or ecx, dword [esp + 4]
or edx, ecx
mov esi, 1
imul edx, esi
movd xmm3, edx
punpckldq xmm3, xmm3
pshufd xmm3, xmm3, 0x44
movdqu xmmword [ebp], xmm3
movdqu xmmword [ebp + 0x10], xmm3
movzx edx, byte [eax + 1]
shl edx, 8
or edx, ecx
imul edx, esi
movd xmm3, edx
punpckldq xmm3, xmm3
pshufd xmm3, xmm3, 0x44
movdqu xmmword [ebp + 0x20], xmm3
movdqu xmmword [ebp + 0x30], xmm3
add ebp, 0x40
add eax, 2
cmp eax, ebx
jne 0x77fa00
jmp 0x77f440
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x28]
mov esi, dword [ecx + eax*4]
test esi, esi
jle 0x77f3fa
lea eax, [esi - 1]
shr eax, 3
inc eax
xor ecx, ecx
movd xmm1, edx
cmp esi, 0x19
jb 0x77fad7
mov edx, eax
and edx, 0xfffffffc
movdqa xmm2, xmm1
punpckldq xmm2, xmm1
pshufd xmm2, xmm2, 0x44
xor ecx, ecx
nop dword [eax + eax]
movdqu xmmword [edi + ecx*4 - 0x70], xmm2
movdqu xmmword [edi + ecx*4 - 0x60], xmm2
movdqu xmmword [edi + ecx*4 - 0x50], xmm2
movdqu xmmword [edi + ecx*4 - 0x40], xmm2
movdqu xmmword [edi + ecx*4 - 0x30], xmm2
movdqu xmmword [edi + ecx*4 - 0x20], xmm2
movdqu xmmword [edi + ecx*4 - 0x10], xmm2
movdqu xmmword [edi + ecx*4], xmm2
add ecx, 0x20
add edx, 0xfffffffc
jne 0x77faa0
and eax, 3
je 0x77f3fa
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
mov edx, dword [esp + 0x54]
lea edx, [edx + ecx*4]
mov esi, dword [esp + 0x74]
lea ecx, [esi + ecx*4]
shl eax, 5
xor esi, esi
nop dword [eax]
movdqu xmmword [ecx + esi], xmm1
movdqu xmmword [edx + esi], xmm1
add esi, 0x20
cmp eax, esi
jne 0x77fb00
jmp 0x77f3fa
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x1c]
je 0x77ef50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
test cl, 1
mov edi, ebx
je 0x77fb5a
movzx ecx, byte [eax]
or ecx, ebx
mov edx, 1
imul ecx, edx
movd xmm1, ecx
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
movdqu xmmword [esi], xmm1
add esi, 0x10
inc eax
mov ecx, dword [esp + 0x1c]
inc ecx
cmp dword [esp + 0x18], ecx
je 0x77ef50
nop dword [eax]
movzx ecx, byte [eax]
or ecx, edi
mov edx, 1
imul ecx, edx
movd xmm1, ecx
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
movdqu xmmword [esi], xmm1
movzx ecx, byte [eax + 1]
or ecx, edi
imul ecx, edx
movd xmm1, ecx
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
movdqu xmmword [esi + 0x10], xmm1
add esi, 0x20
add eax, 2
cmp eax, dword [esp + 4]
jne 0x77fb70
jmp 0x77ef50
mov edi, dword [esp + 0x18]
mov edx, edi
sub edx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
je 0x77ef50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
cmp edx, 8
mov dword [esp + 8], ebx
jb 0x77fca1
mov dword [esp], edx
cmp esi, ecx
jae 0x77fc1a
mov ecx, dword [esp + 0x24]
lea edx, [ecx*4]
lea edx, [edx + edi*8]
mov ecx, dword [esp + 0x1c]
lea edi, [ecx*8]
sub edx, edi
mov edi, dword [esp + 0x18]
add edx, dword [esp + 0x38]
cmp eax, edx
jb 0x77fca1
mov edx, dword [esp]
and edx, 0xfffffffc
lea esi, [esi + edx*8]
add eax, edx
movd xmm1, ebx
pshufd xmm1, xmm1, 0x50
mov ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x6c]
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x24]
lea edi, [edi + ebx*4]
xor ebx, ebx
pshufd xmm1, xmm1, 0x50
movzx ebp, word [ecx + ebx - 2]
movd xmm2, ebp
movzx ebp, word [ecx + ebx]
movd xmm3, ebp
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm3, xmm0
punpcklwd xmm3, xmm0
pshufd xmm2, xmm2, 0x50
por xmm2, xmm1
movdqu xmmword [edi + ebx*8 - 0x10], xmm2
pshufd xmm2, xmm3, 0x50
por xmm2, xmm1
movdqu xmmword [edi + ebx*8], xmm2
add ebx, 4
cmp edx, ebx
jne 0x77fc48
cmp dword [esp], edx
mov ebp, dword [esp + 0xcc]
mov edi, dword [esp + 0x18]
je 0x77ef50
lea edx, [edi + ebp]
sub edx, eax
mov ecx, eax
and edx, 3
je 0x77fcd1
mov ebx, dword [esp + 8]
nop word cs:[eax + eax]
movzx edi, byte [ecx]
or edi, ebx
mov dword [esi], edi
mov dword [esi + 4], edi
add esi, 8
inc ecx
dec edx
jne 0x77fcc0
mov edx, dword [esp + 0x18]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 3
jb 0x77ef50
xor eax, eax
nop word cs:[eax + eax]
movzx edx, byte [ecx + eax]
mov edi, dword [esp + 8]
or edx, edi
mov dword [esi + eax*8], edx
mov dword [esi + eax*8 + 4], edx
movzx edx, byte [ecx + eax + 1]
or edx, edi
mov dword [esi + eax*8 + 8], edx
mov dword [esi + eax*8 + 0xc], edx
movzx edx, byte [ecx + eax + 2]
or edx, edi
mov dword [esi + eax*8 + 0x10], edx
mov dword [esi + eax*8 + 0x14], edx
movzx edx, byte [ecx + eax + 3]
or edx, edi
mov dword [esi + eax*8 + 0x18], edx
mov dword [esi + eax*8 + 0x1c], edx
lea edx, [ecx + eax]
add edx, 4
add eax, 4
cmp edx, dword [esp + 4]
jne 0x77fcf0
jmp 0x77ef50
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x1c]
je 0x77ef50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
test cl, 1
mov edi, ebx
je 0x77fd8b
movzx ecx, byte [eax]
or ecx, ebx
mov edx, 1
imul ecx, edx
movd xmm1, ecx
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
movdqu xmmword [esi], xmm1
movdqu xmmword [esi + 0x10], xmm1
add esi, 0x20
inc eax
mov ecx, dword [esp + 0x1c]
inc ecx
cmp dword [esp + 0x18], ecx
je 0x77ef50
nop word [eax + eax]
movzx ecx, byte [eax]
or ecx, edi
mov edx, 1
imul ecx, edx
movd xmm1, ecx
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
movdqu xmmword [esi], xmm1
movdqu xmmword [esi + 0x10], xmm1
movzx ecx, byte [eax + 1]
or ecx, edi
imul ecx, edx
movd xmm1, ecx
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
movdqu xmmword [esi + 0x20], xmm1
movdqu xmmword [esi + 0x30], xmm1
add esi, 0x40
add eax, 2
cmp eax, dword [esp + 4]
jne 0x77fda0
jmp 0x77ef50
mov edx, dword [esp + 0x1c]
cmp dword [esp + 0x18], edx
mov edx, dword [esp + 4]
je 0x77ef50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
mov dword [esp + 8], ebx
mov ebx, 4
shl ebx, cl
add ebx, 0xffffffe0
mov dword [esp], ebx
shr ebx, 5
inc ebx
and ebx, 3
jmp 0x77fe41
mov ebp, dword [esp + 0xcc]
mov edx, dword [esp + 4]
inc eax
cmp eax, edx
je 0x77ef50
cmp ecx, 0x1d
ja 0x77fe38
movzx edx, byte [eax]
or edx, dword [esp + 8]
mov ebp, 1
imul edx, ebp
movd xmm1, edx
mov edx, esi
test ebx, ebx
je 0x77fe7f
movdqa xmm2, xmm1
punpckldq xmm2, xmm1
pshufd xmm2, xmm2, 0x44
mov ebp, ebx
mov edx, esi
movdqu xmmword [edx], xmm2
movdqu xmmword [edx + 0x10], xmm2
add edx, 0x20
dec ebp
jne 0x77fe70
lea esi, [esi + edi*4]
cmp dword [esp], 0x60
jb 0x77fe2d
punpckldq xmm1, xmm1
pshufd xmm1, xmm1, 0x44
mov ebp, dword [esp + 0xcc]
nop dword [eax + eax]
movdqu xmmword [edx], xmm1
movdqu xmmword [edx + 0x10], xmm1
movdqu xmmword [edx + 0x20], xmm1
movdqu xmmword [edx + 0x30], xmm1
movdqu xmmword [edx + 0x40], xmm1
movdqu xmmword [edx + 0x50], xmm1
movdqu xmmword [edx + 0x60], xmm1
movdqu xmmword [edx + 0x70], xmm1
sub edx, 0xffffff80
cmp edx, esi
jne 0x77fea0
jmp 0x77fe34
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x60]
mov byte [eax], cl
mov byte [eax + 1], 1
mov byte [eax + 2], dl
mov ecx, dword [esp + 0x84]
mov byte [eax + 3], cl
mov esi, dword [esp + 0x88]
mov eax, esi
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret