Function at 0x5458f0
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, dword [esp + 8]
test esi, esi
je 0x520ef6
mov eax, dword [esi + 0x114]
cmp eax, dword [esi + 0x104]
jae 0x520ef6
push 2
push 0
push 0
push esi
call fcn.00543240
add esp, 0x10
mov dword [esi + 0x17c], 0
pop esi
jmp 0x522a40
pop esi
ret
push ebp
push ebx
push edi
push esi
sub esp, 0xf0
mov eax, dword [esp + 0x108]
mov esi, dword [esp + 0x104]
movzx edx, byte [esi + 0x14a]
mov ecx, dword [eax + 4]
mov dword [esp + 0xcc], eax
movzx ebx, byte [eax + 0xb]
mov eax, ebx
add eax, 7
mov dword [esp + 0xac], eax
mov eax, dword [esi + 0x120]
mov dword [esp + 0xc], eax
cmp ecx, 0x1ffffff
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x78], ebx
jb 0x545957
mov eax, edx
neg eax
and edx, eax
mov ebp, 0xfffffeff
jmp 0x545afe
mov ebp, 0xfffffeff
test dl, 8
je 0x545afe
cmp dl, 8
je 0x545afe
test ecx, ecx
je 0x545afc
mov dword [esp + 0x64], edx
xor eax, eax
mov edx, dword [esp + 0xc]
mov ebx, ecx
mov ecx, 0
mov ebp, 0
cmp ebx, 4
jb 0x545ac0
mov ecx, ebx
and ecx, 0xfffffffc
lea esi, [ecx - 4]
mov edx, esi
shr edx, 2
add edx, 1
test esi, esi
je 0x54673e
mov edi, edx
and edi, 0xfffffffe
pxor xmm1, xmm1
xor esi, esi
pcmpeqd xmm2, xmm2
movdqa xmm3, xmmword [0x578cc0]
pxor xmm0, xmm0
mov ebx, dword [esp + 0xc]
nop dword [eax]
movd xmm4, dword [ebx + esi + 1]
movdqa xmm5, xmm4
punpcklbw xmm5, xmm1
punpcklwd xmm5, xmm1
pcmpgtb xmm4, xmm2
punpcklbw xmm4, xmm4
punpcklwd xmm4, xmm4
psrad xmm4, 0x18
movdqa xmm6, xmm3
psubd xmm6, xmm5
pand xmm5, xmm4
pandn xmm4, xmm6
por xmm4, xmm5
paddd xmm4, xmm0
movd xmm0, dword [ebx + esi + 5]
movdqa xmm5, xmm0
punpcklbw xmm5, xmm1
punpcklwd xmm5, xmm1
pcmpgtb xmm0, xmm2
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
psrad xmm0, 0x18
movdqa xmm6, xmm3
psubd xmm6, xmm5
pand xmm5, xmm0
pandn xmm0, xmm6
por xmm0, xmm5
paddd xmm0, xmm4
add esi, 8
add edi, 0xfffffffe
jne 0x5459d0
test dl, 1
je 0x545a9a
movd xmm2, dword [ebx + esi + 1]
pxor xmm3, xmm3
movdqa xmm1, xmm2
punpcklbw xmm1, xmm3
punpcklwd xmm1, xmm3
pcmpeqd xmm3, xmm3
pcmpgtb xmm2, xmm3
punpcklbw xmm2, xmm2
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmmword [0x578cc0]
psubd xmm3, xmm1
pand xmm1, xmm2
pandn xmm2, xmm3
por xmm2, xmm1
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd ebp, xmm0
cmp dword [esp + 0x30], ecx
je 0x545aea
mov edx, dword [esp + 0xc]
add edx, ecx
mov ebx, dword [esp + 0x30]
sub ebx, ecx
nop word cs:[eax + eax]
nop dword [eax]
movzx ecx, byte [edx + eax + 1]
mov esi, 0x100
sub esi, ecx
test cl, cl
cmovns esi, ecx
add ebp, esi
add eax, 1
cmp ebx, eax
jne 0x545ad0
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x78]
mov edx, dword [esp + 0x64]
jmp 0x545afe
xor ebp, ebp
mov eax, dword [esp + 0xac]
shr eax, 3
mov dword [esp + 4], eax
cmp edx, 0x10
mov dword [esp + 0x64], edx
jne 0x545b6f
mov dword [esp + 0x50], ebp
mov edx, dword [esi + 0x124]
mov byte [edx], 1
lea eax, [edx + 1]
mov esi, dword [esp + 0xc]
add esi, 1
test bl, bl
mov dword [esp + 8], esi
je 0x545ca5
xor ebp, ebp
cmp bl, 0x79
jb 0x545c17
mov edi, dword [esp + 4]
mov ebx, esi
mov esi, dword [esp + 0xc]
add esi, edi
add esi, 1
cmp eax, esi
jae 0x545be8
lea esi, [edx + edi]
add esi, 1
cmp ebx, esi
jae 0x545be8
mov esi, ebx
jmp 0x545c17
test dl, 0x10
je 0x545e43
mov ecx, dword [esi + 0x124]
mov byte [ecx], 1
lea eax, [ecx + 1]
mov dword [esp], eax
mov eax, dword [esp + 0xc]
lea esi, [eax + 1]
test bl, bl
mov dword [esp + 8], esi
je 0x545bdf
xor edi, edi
cmp bl, 0x19
mov edx, dword [esp + 4]
jb 0x545bc1
mov eax, dword [esp + 0xc]
add eax, edx
add eax, 1
cmp dword [esp], eax
jae 0x5464e5
lea eax, [ecx + edx]
add eax, 1
cmp esi, eax
jae 0x5464e5
mov ecx, esi
xor eax, eax
mov edx, eax
or edx, 1
test byte [esp + 0xac], 8
jne 0x5463e6
mov esi, eax
jmp 0x546409
xor ebx, ebx
mov ecx, esi
jmp 0x546458
mov ebp, edi
and ebp, 0xfffffff0
movdqu xmm0, xmmword [ebx]
movdqu xmmword [eax], xmm0
cmp ebp, 0x10
je 0x545c08
mov esi, dword [esp + 0xc]
movdqu xmm0, xmmword [esi + 0x11]
movdqu xmmword [edx + 0x11], xmm0
lea esi, [ebx + ebp]
add eax, ebp
cmp dword [esp + 4], ebp
je 0x545ca5
mov edx, ebp
not edx
mov edi, dword [esp + 4]
add edx, edi
and edi, 7
je 0x545c48
neg edi
xor ebx, ebx
nop word [eax + eax]
movzx ecx, byte [esi]
mov byte [eax], cl
add eax, 1
add esi, 1
add ebx, 0xffffffff
cmp edi, ebx
jne 0x545c30
sub ebp, ebx
mov ecx, dword [esp + 0x30]
cmp edx, 7
jb 0x545ca5
mov edx, dword [esp + 4]
sub edx, ebp
nop word cs:[eax + eax]
nop dword [eax]
movzx ecx, byte [esi]
mov byte [eax], cl
movzx ecx, byte [esi + 1]
mov byte [eax + 1], cl
movzx ecx, byte [esi + 2]
mov byte [eax + 2], cl
movzx ecx, byte [esi + 3]
mov byte [eax + 3], cl
movzx ecx, byte [esi + 4]
mov byte [eax + 4], cl
movzx ecx, byte [esi + 5]
mov byte [eax + 5], cl
movzx ecx, byte [esi + 6]
mov byte [eax + 6], cl
movzx ecx, byte [esi + 7]
mov byte [eax + 7], cl
add eax, 8
add esi, 8
add edx, 0xfffffff8
jne 0x545c60
mov ecx, dword [esp + 0x30]
mov edi, ecx
sub edi, dword [esp + 4]
jbe 0x545e29
cmp edi, 8
jb 0x545d93
lea edx, [eax + edi]
mov ecx, dword [esp + 0xc]
add ecx, edi
add ecx, 1
mov dword [esp + 0x1c], edi
add edi, esi
cmp eax, ecx
setb ch
cmp dword [esp + 8], edx
setb bl
cmp eax, edi
setb cl
cmp esi, edx
setb dl
test ch, bl
jne 0x545d93
and cl, dl
jne 0x545d93
xor ecx, ecx
mov edx, dword [esp + 0x1c]
cmp edx, 0x20
jb 0x546853
mov ecx, edx
and ecx, 0xffffffe0
lea edx, [ecx - 0x20]
mov edi, edx
shr edi, 5
add edi, 1
test edx, edx
je 0x546805
mov ebp, edi
and edi, 0xfffffffe
xor edx, edx
mov ebx, dword [esp + 0xc]
nop word cs:[eax + eax]
nop
movdqu xmm0, xmmword [esi + edx]
movdqu xmm1, xmmword [esi + edx + 0x10]
movdqu xmm2, xmmword [ebx + edx + 1]
psubb xmm0, xmm2
movdqu xmm2, xmmword [ebx + edx + 0x11]
psubb xmm1, xmm2
movdqu xmmword [eax + edx], xmm0
movdqu xmmword [eax + edx + 0x10], xmm1
movdqu xmm0, xmmword [esi + edx + 0x20]
movdqu xmm1, xmmword [esi + edx + 0x30]
movdqu xmm2, xmmword [ebx + edx + 0x21]
psubb xmm0, xmm2
movdqu xmm2, xmmword [ebx + edx + 0x31]
psubb xmm1, xmm2
movdqu xmmword [eax + edx + 0x20], xmm0
movdqu xmmword [eax + edx + 0x30], xmm1
add edx, 0x40
add edi, 0xfffffffe
jne 0x545d30
jmp 0x546809
mov ebp, dword [esp + 4]
mov edi, eax
mov ebx, esi
mov edx, dword [esp + 0xc]
mov esi, edx
mov eax, dword [esp + 0x30]
mov ecx, eax
sub ecx, ebp
mov edx, ebp
not edx
add edx, eax
and ecx, 3
je 0x545dd9
nop word cs:[eax + eax]
nop
movzx eax, byte [ebx]
sub al, byte [esi + 1]
add esi, 1
mov byte [edi], al
add ebp, 1
add ebx, 1
add edi, 1
add ecx, 0xffffffff
jne 0x545dc0
cmp edx, 3
jb 0x545e29
mov eax, dword [esp + 0x30]
sub eax, ebp
xor ecx, ecx
nop word cs:[eax + eax]
movzx edx, byte [ebx + ecx]
sub dl, byte [esi + ecx + 1]
mov byte [edi + ecx], dl
movzx edx, byte [ebx + ecx + 1]
sub dl, byte [esi + ecx + 2]
mov byte [edi + ecx + 1], dl
movzx edx, byte [ebx + ecx + 2]
sub dl, byte [esi + ecx + 3]
mov byte [edi + ecx + 2], dl
movzx edx, byte [ebx + ecx + 3]
sub dl, byte [esi + ecx + 4]
mov byte [edi + ecx + 3], dl
add ecx, 4
cmp eax, ecx
jne 0x545df0
mov esi, dword [esp + 0x2c]
mov eax, dword [esi + 0x124]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x50]
cmp edx, 0x20
jne 0x545e89
mov dword [esp + 0x50], ebp
mov eax, ecx
mov ecx, dword [esi + 0x124]
mov byte [ecx], 2
test eax, eax
je 0x546a5b
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 0x11c]
mov esi, dword [eax + 0x120]
xor eax, eax
mov ebx, dword [esp + 0x30]
cmp ebx, 8
jae 0x545efa
mov edi, esi
mov ebx, ecx
mov ebp, edx
jmp 0x5469cc
test dl, 0x20
je 0x546019
mov dword [esp + 0x50], ebp
mov eax, dword [esi + 0x124]
mov dword [esp], eax
mov byte [eax], 2
test ecx, ecx
je 0x545fe5
mov edx, dword [esi + 0x11c]
mov esi, dword [esi + 0x120]
xor eax, eax
mov edi, 1
nop dword [eax]
mov ebx, eax
movzx ecx, byte [esi + edi]
sub cl, byte [edx + edi]
movzx ebp, cl
mov eax, 0x100
sub eax, ebp
test cl, cl
cmovns eax, ebp
add eax, ebx
mov ebx, dword [esp]
mov byte [ebx + edi], cl
cmp eax, dword [esp + 0x50]
ja 0x545fe7
lea ecx, [edi + 1]
cmp edi, dword [esp + 0x30]
mov edi, ecx
jb 0x545ec0
jmp 0x545fe7
lea eax, [ecx + 1]
lea edi, [ecx + ebx]
add edi, 1
lea ebp, [esi + 1]
mov dword [esp + 8], ebp
lea ebp, [esi + ebx]
add ebp, 1
cmp eax, ebp
setb byte [esp]
cmp dword [esp + 8], edi
lea ebx, [edx + ebx + 1]
setb byte [esp + 8]
cmp eax, ebx
mov dword [esp + 0x1c], edx
lea ebx, [edx + 1]
setb al
cmp ebx, edi
setb ah
mov dl, byte [esp + 8]
test byte [esp], dl
jne 0x54610f
and al, ah
jne 0x54610f
xor eax, eax
mov edi, dword [esp + 0x30]
cmp edi, 0x20
jb 0x5467a8
and edi, 0xffffffe0
mov edx, edi
lea eax, [edi - 0x20]
mov ebx, eax
shr ebx, 5
add ebx, 1
test eax, eax
je 0x546756
mov ebp, ebx
and ebp, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x1c]
nop dword [eax + eax]
movdqu xmm0, xmmword [esi + edi + 1]
movdqu xmm1, xmmword [esi + edi + 0x11]
movdqu xmm2, xmmword [eax + edi + 1]
psubb xmm0, xmm2
movdqu xmm2, xmmword [eax + edi + 0x11]
psubb xmm1, xmm2
movdqu xmmword [ecx + edi + 1], xmm0
movdqu xmmword [ecx + edi + 0x11], xmm1
movdqu xmm0, xmmword [esi + edi + 0x21]
movdqu xmm1, xmmword [esi + edi + 0x31]
movdqu xmm2, xmmword [eax + edi + 0x21]
psubb xmm0, xmm2
movdqu xmm2, xmmword [eax + edi + 0x31]
psubb xmm1, xmm2
movdqu xmmword [ecx + edi + 0x21], xmm0
movdqu xmmword [ecx + edi + 0x31], xmm1
add edi, 0x40
add ebp, 0xfffffffe
jne 0x545f80
jmp 0x546758
xor eax, eax
mov ebp, dword [esp + 0x50]
cmp eax, ebp
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x64]
jae 0x546019
mov edi, dword [esi + 0x124]
mov ecx, dword [esi + 0x128]
test ecx, ecx
mov dword [esp + 0xc], edi
je 0x546017
mov dword [esi + 0x124], ecx
mov dword [esi + 0x128], edi
mov ebp, eax
cmp edx, 0x40
jne 0x546a7a
mov ecx, dword [esi + 0x124]
mov byte [ecx], 3
mov edx, dword [esi + 0x11c]
mov eax, dword [esi + 0x120]
mov dword [esp], edx
lea ebx, [edx + 1]
lea esi, [ecx + 1]
mov edi, eax
lea edx, [eax + 1]
mov eax, dword [esp + 0x78]
test al, al
mov dword [esp + 8], edx
mov dword [esp + 0x50], ebp
mov dword [esp + 0x1c], edi
je 0x546068
xor edx, edx
cmp al, 0x79
jae 0x54606f
mov ebp, dword [esp + 8]
jmp 0x546124
mov ebp, edx
jmp 0x5461c8
mov ebp, dword [esp + 4]
lea edx, [ecx + ebp]
add edx, 1
lea eax, [edi + ebp]
add eax, 1
mov edi, dword [esp]
add ebp, edi
add ebp, 1
cmp esi, eax
setb byte [esp + 0xc]
cmp dword [esp + 8], edx
setb ah
cmp esi, ebp
setb al
cmp ebx, edx
setb dl
test byte [esp + 0xc], ah
jne 0x54611e
and al, dl
jne 0x54611e
mov edx, dword [esp + 4]
and edx, 0xfffffff0
movdqu xmm0, xmmword [ebx]
psrlw xmm0, 1
pand xmm0, xmmword [0x578cd0]
mov eax, dword [esp + 8]
movdqu xmm1, xmmword [eax]
psubb xmm1, xmm0
movdqu xmmword [esi], xmm1
cmp edx, 0x10
je 0x5460fd
mov edi, dword [esp + 0x1c]
movdqu xmm0, xmmword [edi + 0x11]
mov edi, dword [esp]
movdqu xmm1, xmmword [edi + 0x11]
psrlw xmm1, 1
pand xmm1, xmmword [0x578cd0]
psubb xmm0, xmm1
movdqu xmmword [ecx + 0x11], xmm0
lea ebp, [eax + edx]
add esi, edx
add ebx, edx
cmp dword [esp + 4], edx
jne 0x546124
jmp 0x5461c8
mov edi, esi
mov ebx, ecx
mov ebp, dword [esp + 0x1c]
xor eax, eax
jmp 0x5469cc
mov ebp, dword [esp + 8]
xor edx, edx
mov dword [esp], edx
mov ecx, edx
not ecx
mov edx, dword [esp + 4]
add ecx, edx
and edx, 3
je 0x546168
neg edx
xor edi, edi
nop word [eax + eax]
movzx eax, byte [ebp]
mov ah, byte [ebx]
shr ah, 1
sub al, ah
mov byte [esi], al
add ebx, 1
add esi, 1
add ebp, 1
add edi, 0xffffffff
cmp edx, edi
jne 0x546140
mov edx, dword [esp]
sub edx, edi
cmp ecx, 3
jae 0x546170
jmp 0x5461c8
mov edx, dword [esp]
cmp ecx, 3
jb 0x5461c8
mov ecx, dword [esp + 4]
sub ecx, edx
nop word cs:[eax + eax]
movzx eax, byte [ebp]
movzx edx, byte [ebx]
shr dl, 1
sub al, dl
mov byte [esi], al
movzx eax, byte [ebp + 1]
movzx edx, byte [ebx + 1]
shr dl, 1
sub al, dl
mov byte [esi + 1], al
movzx eax, byte [ebp + 2]
movzx edx, byte [ebx + 2]
shr dl, 1
sub al, dl
mov byte [esi + 2], al
movzx eax, byte [ebp + 3]
movzx edx, byte [ebx + 3]
shr dl, 1
sub al, dl
mov byte [esi + 3], al
add ebx, 4
add esi, 4
add ebp, 4
add ecx, 0xfffffffc
jne 0x546180
mov edx, dword [esp + 0x30]
sub edx, dword [esp + 4]
jbe 0x5463cf
cmp edx, 8
jb 0x546313
lea edi, [esi + edx]
mov eax, dword [esp + 0x1c]
add eax, edx
add eax, 1
lea ecx, [ebp + edx]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x40], edx
add edx, ebx
mov dword [esp], edx
cmp esi, eax
setb dh
cmp dword [esp + 8], edi
setb ah
cmp esi, dword [esp + 0xc]
setb al
cmp ebp, edi
setb ch
cmp esi, dword [esp]
setb cl
cmp ebx, edi
setb dl
test dh, ah
jne 0x546313
and al, ch
jne 0x546313
and cl, dl
jne 0x546313
xor ecx, ecx
mov eax, dword [esp + 0x40]
cmp eax, 0x10
jb 0x546923
mov ecx, eax
and ecx, 0xfffffff0
lea eax, [ecx - 0x10]
mov edi, eax
shr edi, 4
add edi, 1
test eax, eax
mov dword [esp], edi
je 0x5468a1
and edi, 0xfffffffe
xor eax, eax
pxor xmm0, xmm0
mov edx, dword [esp + 0x1c]
nop
movdqu xmm1, xmmword [ebp + eax]
movdqu xmm2, xmmword [ebx + eax]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
punpcklbw xmm2, xmm0
movdqu xmm4, xmmword [edx + eax + 1]
movdqa xmm5, xmm4
punpckhbw xmm5, xmm0
paddw xmm5, xmm3
punpcklbw xmm4, xmm0
paddw xmm4, xmm2
psrlw xmm5, 1
psrlw xmm4, 1
packuswb xmm4, xmm5
psubb xmm1, xmm4
movdqu xmmword [esi + eax], xmm1
movdqu xmm1, xmmword [ebp + eax + 0x10]
movdqu xmm2, xmmword [ebx + eax + 0x10]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
punpcklbw xmm2, xmm0
movdqu xmm4, xmmword [edx + eax + 0x11]
movdqa xmm5, xmm4
punpckhbw xmm5, xmm0
paddw xmm5, xmm3
punpcklbw xmm4, xmm0
paddw xmm4, xmm2
psrlw xmm5, 1
psrlw xmm4, 1
packuswb xmm4, xmm5
psubb xmm1, xmm4
movdqu xmmword [esi + eax + 0x10], xmm1
add eax, 0x20
add edi, 0xfffffffe
jne 0x546270
jmp 0x5468a3
mov edx, dword [esp + 4]
mov edi, esi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc], ebp
mov ecx, ebx
mov ebp, eax
mov eax, dword [esp + 0x30]
mov ebx, eax
sub ebx, edx
mov esi, edx
add edx, 1
test bl, 1
jne 0x54633b
mov ebx, ecx
jmp 0x546370
mov dword [esp], edi
mov edi, ecx
movzx eax, byte [ecx]
movzx ebx, byte [ebp + 1]
add ebx, eax
mov eax, dword [esp + 0xc]
mov cl, byte [eax]
shr ebx, 1
sub cl, bl
mov ebx, edi
mov edi, dword [esp]
add eax, 1
mov dword [esp + 0xc], eax
add ebx, 1
add ebp, 1
mov byte [edi], cl
mov eax, dword [esp + 0x30]
add edi, 1
mov esi, edx
cmp eax, edx
mov ecx, dword [esp + 0xc]
je 0x5463cf
mov eax, dword [esp + 0x30]
sub eax, esi
mov dword [esp], eax
xor esi, esi
nop word cs:[eax + eax]
nop dword [eax]
mov edx, edi
mov edi, ebx
movzx ebx, byte [ebx + esi]
movzx eax, byte [ebp + esi + 1]
add eax, ebx
movzx ebx, byte [ecx + esi]
shr eax, 1
sub bl, al
mov byte [edx + esi], bl
movzx eax, byte [edi + esi + 1]
movzx ebx, byte [ebp + esi + 2]
add ebx, eax
movzx eax, byte [ecx + esi + 1]
shr ebx, 1
sub al, bl
mov ebx, edi
mov edi, edx
mov byte [edx + esi + 1], al
add esi, 2
cmp dword [esp], esi
jne 0x546390
mov esi, dword [esp + 0x2c]
mov eax, dword [esi + 0x124]
mov dword [esp + 0xc], eax
mov ebp, dword [esp + 0x50]
jmp 0x546a7f
movzx eax, byte [ecx]
mov ebx, 0x100
sub ebx, eax
test al, al
cmovns ebx, eax
mov esi, dword [esp]
mov byte [esi], al
add ebx, edi
add esi, 1
mov dword [esp], esi
add ecx, 1
mov edi, ebx
mov esi, edx
mov eax, dword [esp + 4]
cmp eax, edx
mov edx, eax
je 0x54645c
mov eax, edx
sub eax, esi
mov esi, dword [esp]
nop word [eax + eax]
movzx edx, byte [ecx]
mov byte [esi], dl
mov ebx, 0x100
sub ebx, edx
test dl, dl
cmovns ebx, edx
add ebx, edi
movzx edx, byte [ecx + 1]
mov byte [esi + 1], dl
mov edi, 0x100
sub edi, edx
test dl, dl
cmovns edi, edx
add edi, ebx
add esi, 2
add ecx, 2
add eax, 0xfffffffe
jne 0x546420
mov dword [esp], esi
mov ebx, edi
mov edx, dword [esp + 4]
mov dword [esp + 0x50], ebp
cmp dword [esp + 0x30], edx
jbe 0x5464a6
mov esi, edx
lea esi, [edx + 1]
xor edi, edi
nop dword [eax]
mov edx, ebx
movzx eax, byte [ecx + edi]
mov ebx, dword [esp + 8]
sub al, byte [ebx + edi]
movzx ebp, al
mov ebx, 0x100
sub ebx, ebp
test al, al
cmovns ebx, ebp
add ebx, edx
mov edx, dword [esp]
mov byte [edx + edi], al
cmp ebx, dword [esp + 0x50]
ja 0x5464a6
lea eax, [esi + edi]
add edi, 1
cmp eax, dword [esp + 0x30]
jb 0x546470
mov ebp, dword [esp + 0x50]
cmp ebx, ebp
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x64]
jae 0x545e43
mov edi, dword [esi + 0x124]
mov eax, dword [esi + 0x128]
test eax, eax
mov dword [esp + 0xc], edi
je 0x5464de
mov dword [esi + 0x124], eax
mov dword [esi + 0x128], edi
mov ebp, ebx
jmp 0x545e43
mov ebx, edx
and ebx, 0xfffffffc
mov eax, dword [esi]
movd xmm0, eax
mov edi, dword [esp]
mov dword [edi], eax
mov eax, ebx
pxor xmm2, xmm2
movdqa xmm4, xmm0
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm0, xmm3
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
psrad xmm0, 0x18
movdqa xmm1, xmmword [0x578cc0]
movdqa xmm5, xmm1
psubd xmm5, xmm4
pand xmm4, xmm0
pandn xmm0, xmm5
por xmm0, xmm4
cmp ebx, 4
je 0x546711
mov edx, dword [esp + 0xc]
mov ebx, eax
mov eax, dword [edx + 5]
movd xmm5, eax
mov dword [ecx + 5], eax
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp ebx, 8
je 0x54670b
mov eax, dword [edx + 9]
movd xmm5, eax
mov dword [ecx + 9], eax
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp ebx, 0xc
je 0x54670b
mov eax, dword [edx + 0xd]
movd xmm5, eax
mov dword [ecx + 0xd], eax
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp ebx, 0x10
je 0x54670b
mov eax, dword [edx + 0x11]
movd xmm5, eax
mov dword [ecx + 0x11], eax
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp ebx, 0x14
je 0x54670b
mov eax, dword [edx + 0x15]
movd xmm5, eax
mov dword [ecx + 0x15], eax
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp ebx, 0x18
je 0x54670b
mov eax, dword [edx + 0x19]
movd xmm5, eax
mov dword [ecx + 0x19], eax
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp ebx, 0x1c
jne 0x547f11
mov eax, ebx
mov edx, dword [esp + 4]
lea ecx, [esi + eax]
add edi, eax
mov dword [esp], edi
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd edi, xmm0
mov ebx, edi
cmp edx, eax
jne 0x545bc5
jmp 0x54645c
pxor xmm0, xmm0
xor esi, esi
mov ebx, dword [esp + 0xc]
test dl, 1
jne 0x545a53
jmp 0x545a9a
xor edi, edi
test bl, 1
mov eax, edx
je 0x54678f
movdqu xmm0, xmmword [esi + edi + 1]
movdqu xmm1, xmmword [esi + edi + 0x11]
mov edx, dword [esp + 0x1c]
movdqu xmm2, xmmword [edx + edi + 1]
psubb xmm0, xmm2
movdqu xmm2, xmmword [edx + edi + 0x11]
psubb xmm1, xmm2
movdqu xmmword [ecx + edi + 1], xmm0
movdqu xmmword [ecx + edi + 0x11], xmm1
cmp dword [esp + 0x30], eax
je 0x546a5b
test byte [esp + 0x30], 0x18
je 0x5469be
mov edi, dword [esp + 0x30]
mov ebp, edi
and ebp, 0xfffffff8
lea edi, [esi + ebp]
lea ebx, [ecx + ebp]
mov dword [esp + 8], ecx
mov dword [esp], esi
mov esi, dword [esp + 0x1c]
mov ecx, ebp
add ebp, esi
nop word cs:[eax + eax]
nop dword [eax]
mov edx, dword [esp]
movq xmm0, qword [edx + eax + 1]
movq xmm1, qword [esi + eax + 1]
psubb xmm0, xmm1
mov edx, dword [esp + 8]
movq qword [edx + eax + 1], xmm0
add eax, 8
cmp ecx, eax
jne 0x5467d0
cmp dword [esp + 0x30], ecx
mov eax, ecx
jne 0x5469cc
jmp 0x546a5b
mov ebp, edi
xor edx, edx
mov ebx, ebp
test bl, 1
je 0x54683e
movdqu xmm0, xmmword [esi + edx]
movdqu xmm1, xmmword [esi + edx + 0x10]
mov edi, dword [esp + 0xc]
movdqu xmm2, xmmword [edi + edx + 1]
psubb xmm0, xmm2
movdqu xmm2, xmmword [edi + edx + 0x11]
psubb xmm1, xmm2
movdqu xmmword [eax + edx], xmm0
movdqu xmmword [eax + edx + 0x10], xmm1
mov edx, dword [esp + 0x1c]
cmp edx, ecx
je 0x545e29
test dl, 0x18
je 0x547ef7
mov ebx, edx
and ebx, 0xfffffff8
add dword [esp + 0xc], ebx
mov edx, dword [esp + 4]
lea ebp, [edx + ebx]
lea edi, [eax + ebx]
mov dword [esp], ebx
add ebx, esi
mov edx, dword [esp + 8]
nop
movq xmm0, qword [esi + ecx]
movq xmm1, qword [edx + ecx]
psubb xmm0, xmm1
movq qword [eax + ecx], xmm0
add ecx, 8
cmp dword [esp], ecx
jne 0x546870
mov eax, dword [esp]
cmp dword [esp + 0x1c], eax
mov edx, dword [esp + 0xc]
jne 0x545d9f
jmp 0x545e29
xor eax, eax
test byte [esp], 1
je 0x5468f9
movdqu xmm0, xmmword [ebp + eax]
movdqu xmm1, xmmword [ebx + eax]
pxor xmm2, xmm2
movdqa xmm3, xmm1
punpckhbw xmm3, xmm2
punpcklbw xmm1, xmm2
mov edx, dword [esp + 0x1c]
movdqu xmm4, xmmword [edx + eax + 1]
movdqa xmm5, xmm4
punpckhbw xmm5, xmm2
paddw xmm5, xmm3
punpcklbw xmm4, xmm2
paddw xmm4, xmm1
psrlw xmm5, 1
psrlw xmm4, 1
packuswb xmm4, xmm5
psubb xmm0, xmm4
movdqu xmmword [esi + eax], xmm0
mov eax, dword [esp + 0x40]
cmp eax, ecx
je 0x5463cf
test al, 8
jne 0x546923
add ebp, ecx
add esi, ecx
add ebx, ecx
mov eax, dword [esp + 4]
lea edx, [eax + ecx]
mov eax, dword [esp + 0x1c]
add eax, ecx
mov edi, esi
jmp 0x54631d
mov edx, eax
and edx, 0xfffffff8
add dword [esp + 0x1c], edx
mov eax, dword [esp + 4]
add eax, edx
mov dword [esp + 0x8c], eax
lea eax, [ebx + edx]
mov dword [esp + 0x9c], eax
lea edi, [esi + edx]
mov dword [esp], edx
lea eax, [edx + ebp]
mov dword [esp + 0xc], eax
pxor xmm0, xmm0
mov eax, dword [esp + 8]
nop dword [eax + eax]
movq xmm1, qword [ebp + ecx]
movq xmm2, qword [ebx + ecx]
punpcklbw xmm2, xmm0
movq xmm3, qword [eax + ecx]
punpcklbw xmm3, xmm0
paddw xmm3, xmm2
psrlw xmm3, 1
packuswb xmm3, xmm3
psubb xmm1, xmm3
movq qword [esi + ecx], xmm1
add ecx, 8
cmp dword [esp], ecx
jne 0x546960
mov eax, dword [esp]
cmp dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x9c]
mov ebp, dword [esp + 0xc]
mov edx, dword [esp + 0x8c]
jne 0x54631d
jmp 0x5463cf
mov ebp, dword [esp + 0x1c]
add ebp, eax
add ecx, eax
add esi, eax
mov edi, esi
mov ebx, ecx
mov dword [esp], eax
mov esi, eax
not esi
mov eax, dword [esp + 0x30]
add esi, eax
and eax, 3
je 0x546a06
xor edx, edx
movzx ecx, byte [edi + edx + 1]
sub cl, byte [ebp + edx + 1]
mov byte [ebx + edx + 1], cl
add edx, 1
cmp eax, edx
jne 0x5469e0
add edi, edx
add ebx, edx
add ebp, edx
mov eax, dword [esp]
add eax, edx
cmp esi, 3
jae 0x546a0e
jmp 0x546a5b
mov eax, dword [esp]
cmp esi, 3
jb 0x546a5b
mov ecx, dword [esp + 0x30]
sub ecx, eax
xor eax, eax
nop word cs:[eax + eax]
movzx edx, byte [edi + eax + 1]
sub dl, byte [ebp + eax + 1]
mov byte [ebx + eax + 1], dl
movzx edx, byte [edi + eax + 2]
sub dl, byte [ebp + eax + 2]
mov byte [ebx + eax + 2], dl
movzx edx, byte [edi + eax + 3]
sub dl, byte [ebp + eax + 3]
mov byte [ebx + eax + 3], dl
movzx edx, byte [edi + eax + 4]
sub dl, byte [ebp + eax + 4]
mov byte [ebx + eax + 4], dl
add eax, 4
cmp ecx, eax
jne 0x546a20
mov esi, dword [esp + 0x2c]
mov eax, dword [esi + 0x124]
mov dword [esp + 0xc], eax
mov ebp, dword [esp + 0x50]
mov edx, dword [esp + 0x64]
cmp edx, 0x40
je 0x546022
test dl, 0x40
jne 0x546ae6
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x64]
cmp eax, 0x80
jne 0x546ad9
mov ecx, dword [esi + 0x124]
mov byte [ecx], 4
mov eax, dword [esi + 0x11c]
mov esi, dword [esi + 0x120]
mov dword [esp], eax
lea edi, [eax + 1]
lea ebp, [ecx + 1]
mov dword [esp + 8], esi
lea eax, [esi + 1]
test dl, dl
mov dword [esp + 0x60], eax
je 0x546b83
cmp dl, 0x79
mov esi, dword [esp + 4]
mov dword [esp + 0x74], edi
jae 0x546b90
mov edx, eax
mov ebx, edi
jmp 0x54738b
test al, 0x80
jne 0x546b35
mov ecx, dword [esp + 0xc]
jmp 0x547e6c
mov dword [esp + 0x50], ebp
mov edx, dword [esi + 0x124]
mov byte [edx], 3
mov edi, dword [esi + 0x11c]
mov esi, dword [esi + 0x120]
lea ebx, [edi + 1]
lea eax, [edx + 1]
mov dword [esp + 8], eax
lea eax, [esi + 1]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x78]
test al, al
je 0x546c28
xor ecx, ecx
cmp al, 0x19
mov eax, dword [esp + 4]
jae 0x546c44
mov esi, dword [esp + 0x1c]
xor edx, edx
jmp 0x547968
mov dword [esp + 0x50], ebp
mov edi, dword [esi + 0x124]
mov byte [edi], 4
mov ebp, dword [esi + 0x11c]
mov ecx, dword [esi + 0x120]
lea ebx, [ebp + 1]
lea eax, [edi + 1]
mov dword [esp + 0x40], eax
lea esi, [ecx + 1]
test dl, dl
mov dword [esp + 0x78], ebx
mov dword [esp + 0x9c], esi
je 0x546c33
mov dword [esp], ecx
xor ecx, ecx
cmp dl, 0x19
jae 0x547050
mov eax, esi
jmp 0x547adb
mov ebx, edi
mov edx, eax
mov esi, dword [esp + 4]
jmp 0x547404
mov eax, esi
add esi, ecx
add esi, 1
mov edx, dword [esp + 8]
lea edx, [edx + eax + 1]
mov edi, dword [esp]
add edi, eax
add edi, 1
mov eax, dword [esp + 0x60]
cmp ebp, edx
setb bl
cmp eax, esi
setb bh
cmp ebp, edi
mov edi, dword [esp + 0x74]
setb dl
cmp edi, esi
setb dh
test bl, bh
jne 0x547383
and dl, dh
jne 0x547383
mov esi, dword [esp + 4]
mov edx, esi
and edx, 0xfffffff0
movdqu xmm0, xmmword [eax]
movdqu xmm1, xmmword [edi]
psubb xmm0, xmm1
movdqu xmmword [ebp], xmm0
mov ebx, edx
cmp edx, 0x10
je 0x546c12
mov eax, dword [esp + 8]
movdqu xmm0, xmmword [eax + 0x11]
mov eax, dword [esp]
movdqu xmm1, xmmword [eax + 0x11]
mov eax, dword [esp + 0x60]
psubb xmm0, xmm1
movdqu xmmword [ecx + 0x11], xmm0
lea edx, [eax + ebx]
mov eax, ebx
add ebp, ebx
add ebx, edi
cmp esi, eax
jne 0x54738d
jmp 0x547404
xor edi, edi
mov esi, dword [esp + 0x1c]
jmp 0x547a2d
xor edi, edi
mov eax, esi
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0x40]
jmp 0x547ba5
mov dword [esp + 0xbc], edx
add edx, eax
add edx, 1
mov dword [esp + 0x8c], esi
lea esi, [esi + eax + 1]
mov dword [esp + 0x40], ebx
mov dword [esp + 0xd0], edi
lea ebx, [edi + eax]
add ebx, 1
mov eax, dword [esp + 8]
cmp eax, esi
setb byte [esp + 0x9c]
cmp dword [esp + 0x1c], edx
setb byte [esp]
cmp eax, ebx
mov ebx, dword [esp + 0x40]
setb ah
cmp ebx, edx
setb al
mov dl, byte [esp + 0x9c]
test byte [esp], dl
jne 0x54795e
and ah, al
jne 0x54795e
mov eax, dword [esp + 4]
mov edx, eax
and edx, 0xfffffffc
mov ecx, dword [esp + 0x1c]
movd xmm0, dword [ecx]
movd xmm1, dword [ebx]
psrlw xmm1, 1
pand xmm1, xmmword [0x578cd0]
psubb xmm0, xmm1
mov ecx, dword [esp + 8]
movd dword [ecx], xmm0
pxor xmm2, xmm2
movdqa xmm4, xmm0
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm0, xmm3
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
psrad xmm0, 0x18
movdqa xmm1, xmmword [0x578cc0]
movdqa xmm5, xmm1
psubd xmm5, xmm4
pand xmm4, xmm0
pandn xmm0, xmm5
por xmm0, xmm4
cmp edx, 4
je 0x54701d
mov esi, dword [esp + 0x8c]
movd xmm5, dword [esi + 5]
mov edi, dword [esp + 0xd0]
movd xmm4, dword [edi + 5]
psrlw xmm4, 1
pand xmm4, xmmword [0x578cd0]
psubb xmm5, xmm4
mov esi, dword [esp + 0xbc]
movd dword [esi + 5], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp edx, 8
je 0x54701d
mov esi, dword [esp + 0x8c]
movd xmm5, dword [esi + 9]
movd xmm2, dword [edi + 9]
psrlw xmm2, 1
pand xmm2, xmmword [0x578cd0]
psubb xmm5, xmm2
mov esi, dword [esp + 0xbc]
movd dword [esi + 9], xmm5
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp edx, 0xc
je 0x54701d
mov esi, dword [esp + 0x8c]
movd xmm5, dword [esi + 0xd]
movd xmm4, dword [edi + 0xd]
psrlw xmm4, 1
pand xmm4, xmmword [0x578cd0]
psubb xmm5, xmm4
mov esi, dword [esp + 0xbc]
movd dword [esi + 0xd], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp edx, 0x10
je 0x54701d
mov esi, dword [esp + 0x8c]
movd xmm5, dword [esi + 0x11]
movd xmm2, dword [edi + 0x11]
psrlw xmm2, 1
pand xmm2, xmmword [0x578cd0]
psubb xmm5, xmm2
mov esi, dword [esp + 0xbc]
movd dword [esi + 0x11], xmm5
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp edx, 0x14
je 0x54701d
mov esi, dword [esp + 0x8c]
movd xmm5, dword [esi + 0x15]
movd xmm4, dword [edi + 0x15]
psrlw xmm4, 1
pand xmm4, xmmword [0x578cd0]
psubb xmm5, xmm4
mov esi, dword [esp + 0xbc]
movd dword [esi + 0x15], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp edx, 0x18
je 0x54701d
mov esi, dword [esp + 0x8c]
movd xmm5, dword [esi + 0x19]
mov esi, dword [esp + 0xbc]
movd xmm2, dword [edi + 0x19]
psrlw xmm2, 1
pand xmm2, xmmword [0x578cd0]
psubb xmm5, xmm2
movd dword [esi + 0x19], xmm5
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp edx, 0x1c
je 0x54701d
mov ebp, esi
mov esi, dword [esp + 0x8c]
movd xmm5, dword [esi + 0x1d]
movd xmm4, dword [edi + 0x1d]
psrlw xmm4, 1
pand xmm4, xmmword [0x578cd0]
psubb xmm5, xmm4
movd dword [ebp + 0x1d], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
psubd xmm1, xmm4
pand xmm4, xmm2
pandn xmm2, xmm1
por xmm2, xmm4
paddd xmm0, xmm2
mov esi, dword [esp + 0x1c]
add esi, edx
add ecx, edx
mov dword [esp + 8], ecx
add ebx, edx
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd ecx, xmm0
mov edi, ecx
cmp eax, edx
jne 0x547968
jmp 0x547a31
mov eax, dword [esp + 4]
mov dword [esp + 8], edi
add edi, eax
add edi, 1
mov edx, dword [esp]
lea edx, [edx + eax + 1]
mov dword [esp + 0x1c], ebp
lea ebx, [eax + ebp]
add ebx, 1
mov ebp, dword [esp + 0x40]
cmp ebp, edx
setb al
cmp esi, edi
setb ah
cmp ebp, ebx
mov ebx, dword [esp + 0x78]
setb dl
cmp ebx, edi
setb dh
test al, ah
jne 0x547ad4
and dl, dh
jne 0x547ad4
mov edx, dword [esp + 4]
and edx, 0xfffffffc
mov ecx, dword [esp + 0x9c]
movd xmm0, dword [ecx]
movd xmm1, dword [ebx]
psubb xmm0, xmm1
mov eax, dword [esp + 0x40]
movd dword [eax], xmm0
pxor xmm2, xmm2
movdqa xmm4, xmm0
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm0, xmm3
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
psrad xmm0, 0x18
movdqa xmm1, xmmword [0x578cc0]
movdqa xmm5, xmm1
psubd xmm5, xmm4
pand xmm4, xmm0
pandn xmm0, xmm5
por xmm0, xmm4
cmp edx, 4
je 0x54734f
mov edi, dword [esp]
movd xmm5, dword [edi + 5]
mov esi, dword [esp + 0x1c]
movd xmm4, dword [esi + 5]
psubb xmm5, xmm4
mov eax, dword [esp + 8]
movd dword [eax + 5], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp edx, 8
je 0x54734f
movd xmm5, dword [edi + 9]
movd xmm2, dword [esi + 9]
psubb xmm5, xmm2
movd dword [eax + 9], xmm5
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp edx, 0xc
je 0x54734f
movd xmm5, dword [edi + 0xd]
movd xmm4, dword [esi + 0xd]
psubb xmm5, xmm4
movd dword [eax + 0xd], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp edx, 0x10
je 0x54734f
movd xmm5, dword [edi + 0x11]
movd xmm2, dword [esi + 0x11]
psubb xmm5, xmm2
movd dword [eax + 0x11], xmm5
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp edx, 0x14
je 0x54734f
movd xmm5, dword [edi + 0x15]
movd xmm4, dword [esi + 0x15]
psubb xmm5, xmm4
movd dword [eax + 0x15], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
movdqa xmm3, xmm1
psubd xmm3, xmm4
pand xmm4, xmm2
pandn xmm2, xmm3
por xmm2, xmm4
paddd xmm0, xmm2
cmp edx, 0x18
je 0x54734f
movd xmm5, dword [edi + 0x19]
movd xmm2, dword [esi + 0x19]
psubb xmm5, xmm2
movd dword [eax + 0x19], xmm5
pxor xmm2, xmm2
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpeqd xmm3, xmm3
pcmpgtb xmm5, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
psrad xmm5, 0x18
movdqa xmm6, xmm1
psubd xmm6, xmm4
pand xmm4, xmm5
pandn xmm5, xmm6
por xmm5, xmm4
paddd xmm0, xmm5
cmp edx, 0x1c
je 0x54734f
movd xmm5, dword [edi + 0x1d]
movd xmm4, dword [esi + 0x1d]
psubb xmm5, xmm4
movd dword [eax + 0x1d], xmm5
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
psubd xmm1, xmm4
pand xmm4, xmm2
pandn xmm2, xmm1
por xmm2, xmm4
paddd xmm0, xmm2
lea eax, [ecx + edx]
mov ebp, dword [esp + 0x40]
add ebp, edx
add ebx, edx
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd ecx, xmm0
mov edi, ecx
mov esi, dword [esp + 4]
cmp esi, edx
jne 0x547ae5
jmp 0x547ba5
mov edx, eax
mov ebx, edi
mov esi, dword [esp + 4]
xor eax, eax
mov ecx, eax
not ecx
add ecx, esi
and esi, 3
je 0x5473c2
mov dword [esp + 0x50], eax
neg esi
xor edi, edi
movzx eax, byte [edx]
sub al, byte [ebx]
mov byte [ebp], al
add ebx, 1
add ebp, 1
add edx, 1
add edi, 0xffffffff
cmp esi, edi
jne 0x5473a0
mov eax, dword [esp + 0x50]
sub eax, edi
mov edi, dword [esp + 0x74]
cmp ecx, 3
mov esi, dword [esp + 4]
jb 0x547404
mov ecx, esi
sub ecx, eax
nop
movzx eax, byte [edx]
sub al, byte [ebx]
mov byte [ebp], al
movzx eax, byte [edx + 1]
sub al, byte [ebx + 1]
mov byte [ebp + 1], al
movzx eax, byte [edx + 2]
sub al, byte [ebx + 2]
mov byte [ebp + 2], al
movzx eax, byte [edx + 3]
sub al, byte [ebx + 3]
mov byte [ebp + 3], al
add ebx, 4
add ebp, 4
add edx, 4
add ecx, 0xfffffffc
jne 0x5473d0
mov eax, dword [esp + 0x30]
mov ecx, eax
sub ecx, esi
jbe 0x547e62
cmp ecx, 8
jb 0x5478c9
lea esi, [ecx + ebp]
mov eax, ecx
mov ecx, dword [esp]
add ecx, eax
add ecx, 1
mov dword [esp + 0x50], ecx
lea ecx, [ebx + eax]
mov dword [esp + 0x40], ecx
lea ecx, [edx + eax]
mov dword [esp + 0xc], ecx
mov ecx, edi
mov edi, dword [esp + 8]
mov dword [esp + 0x88], eax
add eax, edi
add eax, 1
mov edi, ecx
cmp ebp, dword [esp + 0x50]
setb byte [esp + 0x50]
cmp ecx, esi
setb byte [esp + 0x1c]
cmp ebp, dword [esp + 0x40]
setb cl
cmp ebx, esi
setb byte [esp + 0x40]
cmp ebp, dword [esp + 0xc]
setb ch
cmp edx, esi
setb byte [esp + 0xc]
cmp ebp, eax
setb ah
cmp dword [esp + 0x60], esi
setb byte [esp + 0x64]
mov al, byte [esp + 0x1c]
test byte [esp + 0x50], al
jne 0x547ee2
and cl, byte [esp + 0x40]
jne 0x547ee2
and ch, byte [esp + 0xc]
jne 0x547ee2
and ah, byte [esp + 0x64]
mov eax, dword [esp + 0x30]
jne 0x5478c9
xor esi, esi
mov ecx, dword [esp + 0x88]
cmp ecx, 0x10
jb 0x547c9f
mov esi, ecx
and esi, 0xfffffff0
xor ecx, ecx
mov eax, dword [esp + 0x60]
nop word cs:[eax + eax]
nop
movdqu xmm0, xmmword [ebx + ecx]
movdqu xmmword [esp + 0x64], xmm0
pxor xmm4, xmm4
punpcklbw xmm0, xmm4
movdqa xmm6, xmm0
punpcklwd xmm0, xmm4
movdqu xmm2, xmmword [edi + ecx]
movdqu xmmword [esp + 0x78], xmm2
punpcklbw xmm2, xmm4
movdqa xmm1, xmm2
punpcklwd xmm2, xmm4
movdqu xmm3, xmmword [eax + ecx]
movdqa xmm5, xmm3
movdqa xmm7, xmm3
movdqu xmmword [esp + 0xbc], xmm3
punpcklbw xmm5, xmm4
movdqa xmm3, xmm5
punpcklwd xmm5, xmm4
psubd xmm0, xmm2
psubd xmm5, xmm2
movdqu xmmword [esp + 0x40], xmm5
movdqa xmm2, xmm6
punpckhwd xmm2, xmm4
punpckhwd xmm1, xmm4
punpckhwd xmm3, xmm4
psubd xmm2, xmm1
movdqu xmmword [esp + 0xac], xmm2
psubd xmm3, xmm1
movdqu xmmword [esp + 0xc], xmm3
movdqu xmm5, xmmword [esp + 0x64]
punpckhbw xmm5, xmm4
movdqa xmm6, xmm5
punpcklwd xmm5, xmm4
movdqu xmm1, xmmword [esp + 0x78]
punpckhbw xmm1, xmm4
movdqa xmm2, xmm1
punpcklwd xmm1, xmm4
punpckhbw xmm7, xmm4
movdqa xmm3, xmm7
punpcklwd xmm7, xmm4
psubd xmm5, xmm1
psubd xmm7, xmm1
movdqu xmmword [esp + 0x1c], xmm7
punpckhwd xmm6, xmm4
punpckhwd xmm2, xmm4
movdqa xmm1, xmm3
punpckhwd xmm1, xmm4
psubd xmm6, xmm2
movdqu xmmword [esp + 0xd0], xmm6
psubd xmm1, xmm2
movdqu xmmword [esp + 0x50], xmm1
movdqu xmm2, xmmword [esp + 0x40]
movdqa xmm4, xmm2
psrad xmm4, 0x1f
movdqa xmm1, xmm2
movdqa xmm3, xmm2
paddd xmm1, xmm4
movdqa xmm6, xmmword [0x578ce0]
pxor xmm4, xmm6
pxor xmm4, xmm1
movdqu xmmword [esp + 0x8c], xmm4
movdqa xmm4, xmm0
psrad xmm4, 0x1f
paddd xmm3, xmm0
movdqu xmmword [esp + 0x40], xmm3
paddd xmm0, xmm4
pxor xmm4, xmm6
pxor xmm4, xmm0
movdqu xmm1, xmmword [esp + 0xc]
movdqa xmm2, xmm1
psrad xmm2, 0x1f
movdqa xmm0, xmm1
paddd xmm0, xmm2
pxor xmm2, xmm6
pxor xmm2, xmm0
movdqu xmmword [esp + 0x9c], xmm2
movdqu xmm0, xmmword [esp + 0xac]
paddd xmm1, xmm0
movdqu xmmword [esp + 0xc], xmm1
movdqa xmm1, xmm0
psrad xmm0, 0x1f
paddd xmm1, xmm0
pxor xmm0, xmm6
pxor xmm0, xmm1
movdqu xmm1, xmmword [esp + 0x1c]
movdqa xmm2, xmm1
psrad xmm2, 0x1f
movdqa xmm3, xmm1
paddd xmm3, xmm2
pxor xmm2, xmm6
pxor xmm2, xmm3
movdqu xmmword [esp + 0xac], xmm2
paddd xmm1, xmm5
movdqu xmmword [esp + 0x1c], xmm1
movdqa xmm1, xmm5
movdqa xmm3, xmm5
psrad xmm3, 0x1f
paddd xmm1, xmm3
pxor xmm3, xmm6
movdqa xmm5, xmm6
pxor xmm3, xmm1
movdqu xmm2, xmmword [esp + 0x50]
movdqa xmm6, xmm2
psrad xmm6, 0x1f
movdqa xmm1, xmm2
paddd xmm1, xmm6
pxor xmm6, xmm5
pxor xmm6, xmm1
movdqu xmmword [esp + 0xe0], xmm6
movdqu xmm1, xmmword [esp + 0xd0]
paddd xmm2, xmm1
movdqu xmmword [esp + 0x50], xmm2
movdqa xmm2, xmm1
psrad xmm1, 0x1f
paddd xmm2, xmm1
pxor xmm1, xmm5
movdqa xmm7, xmm5
pxor xmm1, xmm2
movdqu xmm5, xmmword [esp + 0x40]
movdqa xmm2, xmm5
psrad xmm2, 0x1f
paddd xmm5, xmm2
pxor xmm2, xmm7
pxor xmm2, xmm5
movdqa xmm5, xmm2
movdqu xmmword [esp + 0x40], xmm2
movdqa xmm2, xmm4
movdqu xmm7, xmmword [esp + 0x8c]
pcmpgtd xmm2, xmm7
pcmpgtd xmm4, xmm5
por xmm4, xmm2
movdqu xmm2, xmmword [esp + 0xc]
movdqa xmm5, xmm2
psrad xmm5, 0x1f
paddd xmm2, xmm5
movdqa xmm7, xmmword [0x578ce0]
pxor xmm5, xmm7
pxor xmm5, xmm2
movdqa xmm6, xmm0
movdqu xmm2, xmmword [esp + 0x9c]
pcmpgtd xmm6, xmm2
pcmpgtd xmm0, xmm5
por xmm0, xmm6
packssdw xmm4, xmm0
movdqu xmm0, xmmword [esp + 0x1c]
movdqa xmm2, xmm0
psrad xmm2, 0x1f
paddd xmm0, xmm2
pxor xmm2, xmm7
pxor xmm2, xmm0
movdqa xmm6, xmm3
movdqu xmm0, xmmword [esp + 0xac]
pcmpgtd xmm6, xmm0
pcmpgtd xmm3, xmm2
por xmm3, xmm6
movdqu xmm0, xmmword [esp + 0x50]
psrad xmm0, 0x1f
movdqu xmm7, xmmword [esp + 0x50]
paddd xmm7, xmm0
movdqu xmmword [esp + 0x50], xmm7
pxor xmm0, xmmword [0x578ce0]
movdqu xmm7, xmmword [esp + 0x50]
pxor xmm0, xmm7
movdqa xmm7, xmm1
movdqu xmm6, xmmword [esp + 0xe0]
pcmpgtd xmm7, xmm6
pcmpgtd xmm1, xmm0
por xmm1, xmm7
packssdw xmm3, xmm1
packsswb xmm4, xmm3
pcmpgtd xmm6, xmm0
movdqu xmm0, xmmword [esp + 0xac]
pcmpgtd xmm0, xmm2
packssdw xmm0, xmm6
movdqa xmm1, xmm0
movdqu xmm0, xmmword [esp + 0x9c]
pcmpgtd xmm0, xmm5
movdqu xmm2, xmmword [esp + 0x40]
movdqu xmm3, xmmword [esp + 0x8c]
pcmpgtd xmm3, xmm2
packssdw xmm3, xmm0
packsswb xmm3, xmm1
movdqu xmm0, xmmword [esp + 0x78]
pand xmm0, xmm3
movdqu xmm1, xmmword [esp + 0x64]
pandn xmm3, xmm1
por xmm3, xmm0
pand xmm3, xmm4
movdqu xmm0, xmmword [esp + 0xbc]
pandn xmm4, xmm0
por xmm4, xmm3
movdqu xmm0, xmmword [edx + ecx]
psubb xmm0, xmm4
movdqu xmmword [ebp + ecx], xmm0
add ecx, 0x10
cmp esi, ecx
jne 0x5474e0
mov ecx, dword [esp + 0x88]
cmp ecx, esi
mov eax, dword [esp + 0x30]
je 0x547e62
test cl, 8
jne 0x547c9f
add edx, esi
add ebp, esi
add ebx, esi
add dword [esp + 4], esi
add dword [esp + 8], esi
add dword [esp], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x40], edx
sub eax, dword [esp + 4]
xor edx, edx
mov dword [esp + 0x30], eax
jmp 0x54791a
cmp ecx, ebp
cmova ebx, esi
cmp ecx, edi
cmova ebx, esi
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + edx]
sub al, bl
mov ecx, dword [esp + 0xc]
mov byte [ecx + edx], al
add edx, 1
mov eax, dword [esp + 0x30]
cmp eax, edx
je 0x547e62
mov eax, dword [esp + 0x1c]
movzx ebp, byte [eax + edx]
mov eax, dword [esp]
movzx esi, byte [eax + edx + 1]
mov eax, dword [esp + 8]
movzx ebx, byte [eax + edx + 1]
mov dword [esp + 0x50], ebp
sub ebp, esi
mov eax, ebx
sub eax, esi
mov ecx, ebp
neg ecx
cmovs ecx, ebp
mov edi, eax
neg edi
cmovs edi, eax
add eax, ebp
mov ebp, eax
neg ebp
cmovs ebp, eax
cmp edi, ebp
ja 0x5478f0
mov esi, dword [esp + 0x50]
jmp 0x5478f0
mov esi, dword [esp + 0x1c]
xor edx, edx
mov eax, dword [esp + 4]
mov ebp, edx
or ebp, 1
test byte [esp + 0xac], 8
jne 0x547980
cmp eax, ebp
jne 0x5479c0
jmp 0x547a31
mov dl, byte [esi]
mov dh, byte [ebx]
shr dh, 1
sub dl, dh
mov eax, dword [esp + 8]
mov byte [eax], dl
mov dword [esp + 0x40], ebx
movzx ebx, dl
mov edi, 0x100
sub edi, ebx
test dl, dl
cmovns edi, ebx
mov ebx, dword [esp + 0x40]
add edi, ecx
add ebx, 1
add eax, 1
mov dword [esp + 8], eax
mov eax, dword [esp + 4]
add esi, 1
mov ecx, edi
mov edx, ebp
cmp eax, ebp
je 0x547a31
mov edi, eax
sub edi, edx
mov eax, dword [esp + 8]
nop dword [eax + eax]
mov dword [esp], esi
movzx edx, byte [esi]
mov dh, byte [ebx]
shr dh, 1
sub dl, dh
mov byte [eax], dl
movzx ebp, dl
mov esi, ebx
mov ebx, 0x100
sub ebx, ebp
test dl, dl
cmovns ebx, ebp
add ebx, ecx
mov ecx, dword [esp]
movzx edx, byte [ecx + 1]
movzx ecx, byte [esi + 1]
shr cl, 1
sub dl, cl
movzx ebp, dl
mov ecx, 0x100
sub ecx, ebp
test dl, dl
cmovns ecx, ebp
add ecx, ebx
mov ebx, esi
mov esi, dword [esp]
mov byte [eax + 1], dl
add ebx, 2
add eax, 2
add esi, 2
add edi, 0xfffffffe
jne 0x5479d0
mov dword [esp + 8], eax
mov edi, ecx
mov eax, dword [esp + 4]
cmp dword [esp + 0x30], eax
jbe 0x547a99
mov dword [esp], esi
mov dword [esp + 0x40], ebx
mov esi, eax
lea esi, [eax + 1]
xor ebx, ebx
nop word cs:[eax + eax]
nop
mov ebp, edi
mov eax, dword [esp]
movzx edx, byte [eax + ebx]
mov ecx, dword [esp + 0x40]
movzx edi, byte [ecx + ebx]
mov eax, dword [esp + 0x1c]
movzx ecx, byte [eax + ebx]
add ecx, edi
shr ecx, 1
sub dl, cl
movzx ecx, dl
mov edi, 0x100
sub edi, ecx
test dl, dl
cmovns edi, ecx
add edi, ebp
mov eax, dword [esp + 8]
mov byte [eax + ebx], dl
cmp edi, dword [esp + 0x50]
ja 0x547a99
lea ecx, [esi + ebx]
add ebx, 1
cmp ecx, dword [esp + 0x30]
jb 0x547a50
mov ebp, dword [esp + 0x50]
cmp edi, ebp
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x78]
jae 0x546a83
mov ecx, dword [esi + 0x124]
mov eax, dword [esi + 0x128]
test eax, eax
mov dword [esp + 0xc], ecx
je 0x547acd
mov dword [esi + 0x124], eax
mov dword [esi + 0x128], ecx
mov ebp, edi
jmp 0x546a83
mov eax, dword [esp + 0x9c]
xor edx, edx
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0x40]
mov edi, edx
or edi, 1
test byte [esp + 0xac], 8
jne 0x547afc
mov dword [esp], edx
mov edx, dword [esp]
jmp 0x547b40
mov dword [esp], ebx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
mov al, byte [eax]
mov edx, dword [esp]
sub al, byte [edx]
mov byte [ebp], al
movzx ebx, al
mov dword [esp + 8], ebx
mov edx, 0x100
sub edx, ebx
test al, al
mov eax, dword [esp + 0x64]
mov ebx, dword [esp]
cmovns edx, dword [esp + 8]
add edx, ecx
add ebx, 1
add ebp, 1
add eax, 1
mov dword [esp + 8], edx
mov ecx, edx
mov edx, edi
cmp esi, edi
mov edi, dword [esp + 8]
je 0x547ba5
mov edi, esi
sub edi, edx
nop dword [eax]
mov dword [esp], ebx
movzx edx, byte [eax]
sub dl, byte [ebx]
mov byte [ebp], dl
movzx esi, dl
mov ebx, eax
mov eax, 0x100
sub eax, esi
test dl, dl
cmovns eax, esi
add eax, ecx
movzx edx, byte [ebx + 1]
mov ecx, dword [esp]
sub dl, byte [ecx + 1]
movzx esi, dl
mov ecx, 0x100
sub ecx, esi
test dl, dl
cmovns ecx, esi
add ecx, eax
mov eax, ebx
mov ebx, dword [esp]
mov byte [ebp + 1], dl
add ebx, 2
add ebp, 2
add eax, 2
add edi, 0xfffffffe
jne 0x547b50
mov edi, ecx
mov esi, dword [esp + 4]
cmp dword [esp + 0x30], esi
jbe 0x547c66
mov dword [esp + 0x64], eax
add esi, 1
xor ecx, ecx
mov dword [esp + 4], esi
mov dword [esp + 0x40], ebp
mov dword [esp], ebx
nop word cs:[eax + eax]
nop dword [eax]
mov dword [esp + 8], edi
movzx ebp, byte [ebx + ecx]
mov eax, dword [esp + 0x78]
movzx edi, byte [eax + ecx]
mov eax, dword [esp + 0x9c]
movzx edx, byte [eax + ecx]
mov dword [esp + 0x1c], ebp
sub ebp, edi
mov eax, edx
sub eax, edi
mov esi, ebp
neg esi
cmovs esi, ebp
mov ebx, eax
neg ebx
cmovs ebx, eax
add eax, ebp
mov ebp, eax
neg ebp
cmovs ebp, eax
cmp ebx, ebp
ja 0x547c14
mov edi, dword [esp + 0x1c]
cmp esi, ebp
cmova edx, edi
cmp esi, ebx
cmova edx, edi
mov eax, dword [esp + 0x64]
movzx eax, byte [eax + ecx]
sub al, dl
movzx edx, al
mov esi, 0x100
sub esi, edx
test al, al
cmovns esi, edx
mov edi, dword [esp + 8]
add edi, esi
mov ebp, dword [esp + 0x40]
mov byte [ebp + ecx], al
mov edx, dword [esp + 0x50]
cmp edi, edx
ja 0x547c6a
mov esi, dword [esp + 4]
lea eax, [esi + ecx]
add ecx, 1
cmp eax, dword [esp + 0x30]
mov ebx, dword [esp]
jb 0x547bd0
jmp 0x547c6a
mov edx, dword [esp + 0x50]
cmp edi, edx
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0xc]
jae 0x547e6c
mov ecx, dword [esi + 0x124]
mov eax, dword [esi + 0x128]
test eax, eax
je 0x547e6c
mov dword [esi + 0x124], eax
mov dword [esi + 0x128], ecx
jmp 0x547e6c
mov dword [esp + 0x74], edi
mov edi, ecx
and edi, 0xfffffff8
add dword [esp], edi
add dword [esp + 8], edi
add dword [esp + 4], edi
lea ecx, [ebx + edi]
mov dword [esp + 0x1c], ecx
lea ecx, [edi + ebp]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x78], edi
lea ecx, [edx + edi]
mov edi, dword [esp + 0x74]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x60]
movdqa xmm3, xmmword [0x578ce0]
nop dword [eax]
movq xmm6, qword [ebx + esi]
movdqu xmmword [esp + 0x30], xmm6
pxor xmm5, xmm5
punpcklbw xmm6, xmm5
movdqa xmm1, xmm6
punpcklwd xmm6, xmm5
movq xmm2, qword [edi + esi]
movdqu xmmword [esp + 0x64], xmm2
punpcklbw xmm2, xmm5
movdqa xmm0, xmm2
punpcklwd xmm2, xmm5
movq xmm4, qword [ecx + esi]
movdqu xmmword [esp + 0x50], xmm4
punpcklbw xmm4, xmm5
movdqa xmm7, xmm4
punpcklwd xmm4, xmm5
psubd xmm6, xmm2
psubd xmm4, xmm2
punpckhwd xmm1, xmm5
punpckhwd xmm0, xmm5
punpckhwd xmm7, xmm5
psubd xmm1, xmm0
psubd xmm7, xmm0
movdqa xmm5, xmm4
psrad xmm5, 0x1f
movdqa xmm0, xmm4
paddd xmm0, xmm5
pxor xmm5, xmm3
pxor xmm5, xmm0
movdqa xmm2, xmm6
psrad xmm2, 0x1f
paddd xmm4, xmm6
paddd xmm6, xmm2
pxor xmm2, xmm3
pxor xmm2, xmm6
movdqa xmm6, xmm7
psrad xmm6, 0x1f
movdqa xmm0, xmm7
paddd xmm0, xmm6
pxor xmm6, xmm3
pxor xmm6, xmm0
movdqa xmm0, xmm1
psrad xmm0, 0x1f
paddd xmm7, xmm1
paddd xmm1, xmm0
pxor xmm0, xmm3
pxor xmm0, xmm1
movdqa xmm1, xmm4
psrad xmm1, 0x1f
paddd xmm4, xmm1
pxor xmm1, xmm3
pxor xmm1, xmm4
movdqa xmm4, xmm2
pcmpgtd xmm4, xmm5
pcmpgtd xmm2, xmm1
por xmm2, xmm4
movdqa xmm4, xmm7
psrad xmm4, 0x1f
paddd xmm7, xmm4
pxor xmm4, xmm3
pxor xmm4, xmm7
movdqa xmm7, xmm0
pcmpgtd xmm7, xmm6
pcmpgtd xmm0, xmm4
por xmm0, xmm7
packssdw xmm2, xmm0
pcmpgtd xmm6, xmm4
pcmpgtd xmm5, xmm1
packssdw xmm5, xmm6
packsswb xmm5, xmm5
movdqu xmm1, xmmword [esp + 0x64]
pand xmm1, xmm5
movdqu xmm0, xmmword [esp + 0x30]
pandn xmm5, xmm0
por xmm5, xmm1
packsswb xmm2, xmm2
pand xmm5, xmm2
movdqu xmm0, xmmword [esp + 0x50]
pandn xmm2, xmm0
por xmm2, xmm5
movq xmm0, qword [edx + esi]
psubb xmm0, xmm2
movq qword [ebp + esi], xmm0
add esi, 8
cmp dword [esp + 0x78], esi
jne 0x547ce0
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x88], ecx
jne 0x5478d5
mov esi, dword [esp + 0x2c]
mov ecx, dword [esi + 0x124]
mov eax, dword [esp + 0xcc]
mov eax, dword [eax + 4]
add eax, 1
push 0
push eax
push ecx
push esi
call fcn.00543240
add esp, 0x10
mov eax, dword [esi + 0x11c]
test eax, eax
je 0x547ea2
mov ecx, dword [esi + 0x120]
mov dword [esi + 0x11c], ecx
mov dword [esi + 0x120], eax
push esi
call fcn.00545500
add esp, 4
mov eax, dword [esi + 0x178]
mov ecx, dword [esi + 0x17c]
add ecx, 1
mov dword [esi + 0x17c], ecx
test eax, eax
je 0x547ed7
cmp ecx, eax
jb 0x547ed7
add esp, 0xf0
pop esi
pop edi
pop ebx
pop ebp
jmp 0x520ec0
add esp, 0xf0
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x1c], ebx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x30]
jmp 0x5478d5
add esi, ecx
add eax, ecx
mov edx, dword [esp + 4]
lea ebp, [edx + ecx]
mov edx, dword [esp + 0xc]
add edx, ecx
mov edi, eax
mov ebx, esi
jmp 0x545d9f
mov eax, dword [edx + 0x1d]
movd xmm5, eax
mov dword [ecx + 0x1d], eax
mov eax, ebx
movdqa xmm4, xmm5
punpcklbw xmm4, xmm2
punpcklwd xmm4, xmm2
pcmpgtb xmm5, xmm3
punpcklbw xmm2, xmm5
punpcklwd xmm2, xmm2
psrad xmm2, 0x18
psubd xmm1, xmm4
pand xmm4, xmm2
pandn xmm2, xmm1
por xmm2, xmm4
paddd xmm0, xmm2
jmp 0x54670d