Function at 0x77c940
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 0x77def8
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 0x77def8
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.00779380
add esp, 0x28
cmp eax, 0xffffff88
ja 0x77cb3c
mov ecx, dword [esp + 0xa8]
cmp ecx, ebx
ja 0x77def8
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 0x77ca90
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 0x77cbe2
mov eax, dword [esp + 8]
sub eax, dword [esp + 0x28]
cmp eax, 0xfffffffc
jbe 0x77cb43
xor ecx, ecx
mov eax, 1
jmp 0x77cbaa
mov esi, eax
jmp 0x77def8
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 0x77cb60
inc eax
mov edx, ecx
test byte [esp + 0x14], 3
je 0x77cbe2
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 0x77cbd0
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 0x77cc9f
xor eax, eax
cmp edx, 1
je 0x77cc76
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 0x77cc20
mov ecx, dword [esp + 0x14]
mov edi, dword [esp]
mov ebx, dword [esp + 0x20]
test dl, 1
je 0x77cc9f
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 0x77ded3
mov eax, dword [esp + 8]
inc eax
mov esi, dword [esp + 0x28]
cmp eax, esi
jne 0x77ccce
xor esi, esi
mov eax, 1
jmp 0x77cd3a
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 0x77ccf0
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 0x77cd43
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 0x77cee3
cmp dword [esp + 0xc], 2
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
jb 0x77ded3
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 0x77cdce
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 0x77cee3
mov dword [esp + 4], eax
mov dword [esp], edi
mov edx, 1
cmp dword [esp + 0x14], 8
jae 0x77cde7
mov eax, dword [esp + 0x34]
jmp 0x77ce50
imul eax, esi, 0x34
add eax, dword [esp + 0xc]
cmp eax, 0x20
mov eax, dword [esp + 0x34]
jb 0x77ce50
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 0x77ce10
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x14], eax
mov eax, dword [esp + 0x34]
je 0x77cdb0
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 0x77ce8d
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 0x77ce80
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 0x77cdb0
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 0x77ceb0
jmp 0x77cdb0
cmp dword [esp + 0x14], 0
mov edx, dword [esp + 0x2c]
jle 0x77ded3
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 0x77cf68
mov ecx, dword [esp + 0x90]
lea eax, [ecx + 1]
cmp dword [esp + 0x14], ecx
mov edx, dword [esp + 0x2c]
je 0x77ded3
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 0x77d150
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.0x77cfd7.3
jmp dword [edx*4 + 0xb1f7e0]
mov edi, dword [esp + 0x18]
mov edx, edi
sub edx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
je 0x77cf50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
cmp edx, 8
mov dword [esp + 8], ebx
jb 0x77d098
mov dword [esp], edx
cmp esi, ecx
jae 0x77d02d
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 0x77d098
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 0x77d056
cmp dword [esp], edx
mov edi, dword [esp + 0x18]
je 0x77cf50
lea edx, [edi + ebp]
sub edx, eax
mov ecx, eax
and edx, 7
je 0x77d0be
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 0x77d0b0
mov edx, dword [esp + 0x18]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 7
jb 0x77cf50
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 0x77d0e0
jmp 0x77cf50
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 0x77cf50
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 0x77d307
cmp dword [esp + 0x78], 2
jl 0x77cf50
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 0x77d225
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 0x77cf50
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 0x77d1f8
cmp ecx, 4
je 0x77d1f0
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x28]
mov ecx, dword [edi + ecx*4]
test ecx, ecx
jle 0x77d1fd
lea edi, [ecx - 1]
shr edi, 3
inc edi
xor ebx, ebx
movd xmm1, ebp
cmp ecx, 0x19
jb 0x77d2c7
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 0x77d290
and edi, 3
je 0x77d1fd
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 0x77d2f0
jmp 0x77d1fd
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 0x77d3a3
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 0x77cf50
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 0x77d3fa
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 0x77d3f5
cmp ecx, 4
jne 0x77da5f
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 0x77d45a
mov ecx, dword [esp + 0x3c]
lea eax, [ecx + 1]
cmp dword [esp + 0x14], ecx
mov ecx, eax
mov ebp, dword [esp + 0xcc]
je 0x77d370
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.0x77d4b4.3
jmp dword [edx*4 + 0xb1f7c0]
mov esi, dword [esp + 0xc]
mov edx, esi
sub edx, ebx
je 0x77d440
mov ecx, dword [esp]
shl ecx, 0x10
add ecx, 0x2000000
mov dword [esp], ecx
cmp edx, 7
jbe 0x77d583
mov dword [esp + 0x58], edx
cmp ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x34]
jae 0x77d506
lea ecx, [edi + esi]
sub ecx, ebx
mov edx, dword [esp + 0x80]
lea ecx, [edx + ecx*4]
cmp eax, ecx
jb 0x77d583
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 0x77d530
cmp edx, esi
mov esi, dword [esp + 0xc]
je 0x77d440
mov ecx, dword [esp + 0xcc]
add esi, ecx
sub esi, eax
mov ecx, eax
and esi, 3
je 0x77d5b8
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 0x77d5a0
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 3
mov edi, dword [esp + 0x10]
jb 0x77d440
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 0x77d5e0
jmp 0x77d440
mov esi, dword [esp + 0xc]
mov ecx, esi
sub ecx, ebx
je 0x77d440
mov edx, dword [esp]
shl edx, 0x10
add edx, 0x2000000
test cl, 1
jne 0x77d923
mov edi, edx
inc ebx
cmp esi, ebx
mov ebx, dword [esp + 0x10]
jne 0x77d960
jmp 0x77d440
mov esi, dword [esp + 0xc]
mov edx, esi
sub edx, ebx
je 0x77d440
mov ecx, dword [esp]
shl ecx, 0x10
add ecx, 0x2000000
mov dword [esp], ecx
cmp edx, 5
jbe 0x77d755
mov dword [esp + 0x58], edx
cmp ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x34]
jae 0x77d6bd
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 0x77d755
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 0x77d6f0
cmp dword [esp + 0x58], esi
mov esi, dword [esp + 0xc]
je 0x77d440
mov ecx, dword [esp + 0xcc]
add esi, ecx
sub esi, eax
mov ecx, eax
and esi, 3
je 0x77d78b
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 0x77d770
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 3
mov edi, dword [esp + 0x10]
jb 0x77d440
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 0x77d7b0
jmp 0x77d440
mov esi, dword [esp + 0xc]
mov ecx, esi
sub ecx, ebx
je 0x77d440
mov edx, dword [esp]
shl edx, 0x10
add edx, 0x2000000
test cl, 1
jne 0x77d9b5
mov edi, edx
inc ebx
cmp esi, ebx
mov ebx, dword [esp + 0x10]
jne 0x77da00
jmp 0x77d440
cmp dword [esp + 0xc], ebx
je 0x77d440
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 0x77d88d
mov ebx, dword [esp + 0x10]
inc eax
cmp eax, ebx
je 0x77d440
cmp ecx, 0x1d
ja 0x77d880
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 0x77d8cf
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 0x77d8c0
lea ebp, [ebp + esi*4]
cmp dword [esp + 0xc], 0x60
mov ebx, dword [esp + 0x10]
jb 0x77d884
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 0x77d8f0
jmp 0x77d884
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 0x77d440
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 0x77d960
jmp 0x77d440
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 0x77d440
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 0x77da00
jmp 0x77d440
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x28]
mov esi, dword [ecx + eax*4]
test esi, esi
jle 0x77d3fa
lea eax, [esi - 1]
shr eax, 3
inc eax
xor ecx, ecx
movd xmm1, edx
cmp esi, 0x19
jb 0x77dad7
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 0x77daa0
and eax, 3
je 0x77d3fa
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 0x77db00
jmp 0x77d3fa
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x1c]
je 0x77cf50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
test cl, 1
mov edi, ebx
je 0x77db5a
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 0x77cf50
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 0x77db70
jmp 0x77cf50
mov edi, dword [esp + 0x18]
mov edx, edi
sub edx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
je 0x77cf50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
cmp edx, 8
mov dword [esp + 8], ebx
jb 0x77dca1
mov dword [esp], edx
cmp esi, ecx
jae 0x77dc1a
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 0x77dca1
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 0x77dc48
cmp dword [esp], edx
mov ebp, dword [esp + 0xcc]
mov edi, dword [esp + 0x18]
je 0x77cf50
lea edx, [edi + ebp]
sub edx, eax
mov ecx, eax
and edx, 3
je 0x77dcd1
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 0x77dcc0
mov edx, dword [esp + 0x18]
add edx, dword [esp + 0x44]
sub edx, eax
cmp edx, 3
jb 0x77cf50
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 0x77dcf0
jmp 0x77cf50
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x1c]
je 0x77cf50
mov ebx, dword [esp + 8]
shl ebx, 0x10
add ebx, 0x1000000
test cl, 1
mov edi, ebx
je 0x77dd8b
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 0x77cf50
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 0x77dda0
jmp 0x77cf50
mov edx, dword [esp + 0x1c]
cmp dword [esp + 0x18], edx
mov edx, dword [esp + 4]
je 0x77cf50
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 0x77de41
mov ebp, dword [esp + 0xcc]
mov edx, dword [esp + 4]
inc eax
cmp eax, edx
je 0x77cf50
cmp ecx, 0x1d
ja 0x77de38
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 0x77de7f
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 0x77de70
lea esi, [esi + edi*4]
cmp dword [esp], 0x60
jb 0x77de2d
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 0x77dea0
jmp 0x77de34
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