Function at 0x685700
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
mov dword [esp], edx
mov dword [esp + 8], ecx
mov esi, dword [ecx + 0x94]
mov dword [esp + 0x20], 0x10
movups xmm0, xmmword [esi + 0x3c]
movups xmmword [esp + 0x4c], xmm0
movzx ebx, byte [esi + 0x4b]
inc ebx
mov byte [esi + 0x4b], bl
mov eax, ebx
shr eax, 8
movzx edx, byte [esi + 0x4a]
add edx, eax
mov byte [esi + 0x4a], dl
mov eax, edx
shr eax, 8
movzx ecx, byte [esi + 0x49]
add ecx, eax
mov byte [esi + 0x49], cl
mov ebp, ecx
shr ecx, 8
movzx eax, byte [esi + 0x48]
add eax, ecx
mov byte [esi + 0x48], al
mov dword [esp + 0x24], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x47]
add eax, ecx
mov byte [esi + 0x47], al
mov dword [esp + 0x28], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x46]
add eax, ecx
mov byte [esi + 0x46], al
mov dword [esp + 0x2c], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x45]
add eax, ecx
mov byte [esi + 0x45], al
mov dword [esp + 0x30], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x44]
add eax, ecx
mov byte [esi + 0x44], al
mov dword [esp + 0x34], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x43]
add eax, ecx
mov byte [esi + 0x43], al
mov dword [esp + 0x38], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x42]
add eax, ecx
mov byte [esi + 0x42], al
mov dword [esp + 0x3c], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x41]
add eax, ecx
mov byte [esi + 0x41], al
mov dword [esp + 0x40], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x40]
add eax, ecx
mov byte [esi + 0x40], al
mov dword [esp + 0x44], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x3f]
add eax, ecx
mov byte [esi + 0x3f], al
mov dword [esp + 0x14], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x3e]
add eax, ecx
mov byte [esi + 0x3e], al
mov dword [esp + 0xc], eax
mov ecx, eax
shr ecx, 8
movzx eax, byte [esi + 0x3d]
add eax, ecx
mov byte [esi + 0x3d], al
movzx ecx, byte [esi + 0x3c]
mov dword [esp + 0x48], eax
add cl, ah
mov byte [esp + 0x10], cl
mov byte [esi + 0x3c], cl
movups xmm0, xmmword [esi + 0x3c]
movups xmmword [esp + 0x5c], xmm0
cmp dword [esi + 0x14], 0x10
lea ecx, [esi + 0x3c]
mov dword [esp + 4], ecx
mov edi, 0x20
je 0x685926
movzx ebx, bl
inc ebx
mov byte [esi + 0x4b], bl
shr ebx, 8
movzx edx, dl
add edx, ebx
mov byte [esi + 0x4a], dl
shr edx, 8
mov eax, ebp
movzx ecx, al
add ecx, edx
mov byte [esi + 0x49], cl
shr ecx, 8
movzx eax, byte [esp + 0x24]
add eax, ecx
mov byte [esi + 0x48], al
shr eax, 8
movzx ecx, byte [esp + 0x28]
add ecx, eax
mov byte [esi + 0x47], cl
shr ecx, 8
movzx eax, byte [esp + 0x2c]
add eax, ecx
mov byte [esi + 0x46], al
shr eax, 8
movzx ecx, byte [esp + 0x30]
add ecx, eax
mov byte [esi + 0x45], cl
shr ecx, 8
movzx eax, byte [esp + 0x34]
add eax, ecx
mov byte [esi + 0x44], al
shr eax, 8
movzx ecx, byte [esp + 0x38]
add ecx, eax
mov byte [esi + 0x43], cl
shr ecx, 8
movzx eax, byte [esp + 0x3c]
add eax, ecx
mov byte [esi + 0x42], al
shr eax, 8
movzx ecx, byte [esp + 0x40]
add ecx, eax
mov byte [esi + 0x41], cl
shr ecx, 8
movzx eax, byte [esp + 0x44]
add eax, ecx
mov byte [esi + 0x40], al
shr eax, 8
movzx ecx, byte [esp + 0x14]
add ecx, eax
mov byte [esi + 0x3f], cl
shr ecx, 8
movzx eax, byte [esp + 0xc]
add eax, ecx
mov byte [esi + 0x3e], al
shr eax, 8
movzx ecx, byte [esp + 0x48]
add ecx, eax
mov byte [esi + 0x3d], cl
movzx eax, byte [esp + 0x10]
add al, ch
mov byte [esi + 0x3c], al
mov eax, dword [esp + 4]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x6c], xmm0
mov edi, 0x30
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x20]
lea ebx, [esp + 0x7c]
push edi
push eax
push ecx
push ebx
push dword [esi]
call fcn.005c0bc0
add esp, 0x14
xor ecx, ecx
test eax, eax
je 0x686395
cmp dword [esp + 0x20], edi
jne 0x686395
mov ebp, dword [esp + 8]
lea eax, [esi + 0x1c]
mov edi, dword [esi + 0x14]
push edi
push ebx
mov dword [esp + 0x18], eax
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, edi
add esp, 0xc
movups xmm0, xmmword [esp + edi + 0x7c]
mov ebx, dword [esp + 4]
movups xmmword [ebx], xmm0
cmp dword [esi + 0x18], 0
je 0x685a70
cmp dword [esp + 0xc4], 0
jne 0x685a97
cmp dword [esp], 0
jne 0x685a97
cmp dword [esp + 0xcc], 0
jne 0x685a97
cmp dword [esp + 0xc0], 0
je 0x68635a
mov eax, dword [ebp + 0x8c]
test eax, eax
je 0x68635a
mov edx, dword [esi + 0x14]
cmp edx, eax
mov ecx, eax
cmovb ecx, edx
test edx, edx
je 0x685e02
xor edx, edx
cmp ecx, 8
mov ebp, dword [esp + 0x10]
jb 0x68622d
xor edx, edx
cmp ecx, 0x20
jb 0x685a3c
mov edx, ecx
and edx, 0xffffffe0
xor edi, edi
nop word cs:[eax + eax]
movups xmm0, xmmword [ebp + edi + 0x44]
movups xmm1, xmmword [ebp + edi + 0x54]
movups xmm2, xmmword [ebp + edi]
xorps xmm2, xmm0
movups xmm0, xmmword [ebp + edi + 0x10]
xorps xmm0, xmm1
movups xmmword [ebp + edi], xmm2
movups xmmword [ebp + edi + 0x10], xmm0
add edi, 0x20
cmp edx, edi
jne 0x685a00
cmp ecx, edx
je 0x68623b
test cl, 0x18
je 0x68622d
mov edi, edx
mov edx, ecx
and edx, 0xfffffff8
nop word cs:[eax + eax]
movsd xmm0, qword [ebp + edi]
movsd xmm1, qword [ebp + edi + 0x44]
xorps xmm1, xmm0
movlps qword [ebp + edi], xmm1
add edi, 8
cmp edx, edi
jne 0x685a50
jmp 0x686237
cmp dword [esp], 0
sete al
mov ebp, dword [esp + 0xc0]
test ebp, ebp
sete cl
or cl, al
je 0x685c2e
mov ebp, dword [esp + 0xc8]
jmp 0x685eae
lea eax, [esi + 0x60]
xor ebx, ebx
cmp edx, 0x10
setne bl
shl ebx, 4
or ebx, 0x20
mov dword [esp + 0x18], 0x10
xorps xmm0, xmm0
movups xmmword [esi + 0x80], xmm0
movups xmmword [esi + 0x70], xmm0
movups xmmword [esi + 0x60], xmm0
mov dword [esp + 0x1c], 0x10
movups xmm0, xmmword [esi + 0x70]
xorps xmm0, xmmword [0xa43940]
movups xmmword [esi + 0x70], xmm0
cmp edx, 0x10
je 0x685af3
movups xmm0, xmmword [esi + 0x80]
xorps xmm0, xmmword [0xa43950]
movups xmmword [esi + 0x80], xmm0
lea ebp, [esp + 0x1c]
push ebx
push eax
push ebp
mov dword [esp + 0x18], eax
push eax
push dword [esi + 8]
call fcn.005c0bc0
add esp, 0x14
test eax, eax
je 0x686226
cmp dword [esp + 0x1c], ebx
jne 0x686226
mov edi, dword [esp]
test edi, edi
mov eax, dword [esp + 0xc0]
cmove eax, edi
mov ecx, dword [esp + 0xcc]
test ecx, ecx
mov ebx, dword [esp + 0xd0]
cmove ebx, ecx
mov ecx, dword [esp + 0xc4]
test ecx, ecx
mov edx, dword [esp + 0xc8]
cmove edx, ecx
mov dword [esp + 0x14], edx
lea ecx, [edx + eax]
add ecx, ebx
mov edx, ecx
shr edx, 0x18
mov byte [esi + 0x4c], dl
mov edx, ecx
shr edx, 0x10
mov byte [esi + 0x4d], dl
mov byte [esi + 0x4e], ch
mov byte [esi + 0x4f], cl
mov word [esi + 0x50], 0
mov byte [esi + 0x52], 0
movzx ecx, byte [esi + 0x14]
add cl, 0x10
mov byte [esi + 0x53], cl
mov dword [esi + 0x5c], 8
mov ecx, esi
mov edx, edi
push eax
call fcn.006863b0
add esp, 4
test eax, eax
je 0x686226
mov ecx, esi
mov edx, dword [esp + 0xcc]
push ebx
call fcn.006863b0
add esp, 4
test eax, eax
je 0x686226
mov ecx, esi
mov edx, dword [esp + 0xc4]
push dword [esp + 0x14]
call fcn.006863b0
add esp, 4
test eax, eax
je 0x686226
mov ecx, esi
mov edx, 0x8c412c
push 1
call fcn.006863b0
add esp, 4
test eax, eax
je 0x686226
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x686180
lea ebx, [esi + 0x4c]
lea ecx, [ebx + eax]
mov edx, 0x10
sub edx, eax
push edx
push 0
push ecx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
movups xmm1, xmmword [esi + 0x4c]
mov eax, dword [esi + 0x14]
cmp eax, 0x10
jne 0x68611f
mov ebx, 0x20
jmp 0x686127
cmp edx, ebp
mov eax, ebp
cmovb eax, edx
test edx, edx
mov ebp, dword [esp + 0xc8]
je 0x685c4f
xor ebx, ebx
cmp eax, 8
jae 0x685c56
mov ebp, dword [esp]
jmp 0x685cfd
xor edx, edx
jmp 0x685d79
lea edx, [esi + eax]
add edx, 0x1c
mov ebp, dword [esp]
lea edi, [eax + ebp]
cmp dword [esp + 0x10], edi
setb bl
cmp edx, ebp
seta dl
test bl, dl
mov ebx, 0
jne 0x685cfd
xor ebx, ebx
cmp eax, 0x20
jb 0x685cc7
mov ebx, eax
and ebx, 0xffffffe0
xor edx, edx
nop dword [eax]
movups xmm0, xmmword [ebp + edx]
movups xmm1, xmmword [ebp + edx + 0x10]
movups xmm2, xmmword [esi + edx + 0x1c]
xorps xmm2, xmm0
movups xmm0, xmmword [esi + edx + 0x2c]
xorps xmm0, xmm1
movups xmmword [esi + edx + 0x1c], xmm2
movups xmmword [esi + edx + 0x2c], xmm0
add edx, 0x20
cmp ebx, edx
jne 0x685c90
cmp eax, ebx
je 0x685d6b
test al, 0x18
je 0x685cfd
mov edx, ebx
mov ebx, eax
and ebx, 0xfffffff8
mov ecx, dword [esp + 0x10]
nop word cs:[eax + eax]
movsd xmm0, qword [ebp + edx]
movsd xmm1, qword [ecx + edx]
xorps xmm1, xmm0
movlps qword [ecx + edx], xmm1
add edx, 8
cmp ebx, edx
jne 0x685ce0
cmp eax, ebx
je 0x685d6b
mov edi, eax
mov dword [esp + 8], ebx
mov edx, ebx
and edi, 3
mov ecx, dword [esp + 0x10]
je 0x685d2c
mov edx, dword [esp + 8]
nop word cs:[eax + eax]
movzx ebx, byte [ebp + edx]
xor byte [ecx + edx], bl
inc edx
dec edi
jne 0x685d20
mov ecx, dword [esp + 8]
sub ecx, eax
cmp ecx, 0xfffffffc
ja 0x685d6b
nop word [eax + eax]
movzx ecx, byte [ebp + edx]
xor byte [esi + edx + 0x1c], cl
movzx ecx, byte [ebp + edx + 1]
xor byte [esi + edx + 0x1d], cl
movzx ecx, byte [ebp + edx + 2]
xor byte [esi + edx + 0x1e], cl
movzx ecx, byte [ebp + edx + 3]
xor byte [esi + edx + 0x1f], cl
add edx, 4
cmp eax, edx
jne 0x685d40
mov edx, dword [esi + 0x14]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc0]
sub ecx, edx
jbe 0x685eae
cmp ecx, 0x10
mov eax, 0x10
cmovb eax, ecx
cmp eax, 1
mov dword [esp + 0x14], eax
mov ebp, eax
adc ebp, 0
mov eax, dword [esp]
mov dword [esp + 0xc], edx
add edx, eax
xor edi, edi
cmp ecx, 8
jb 0x685e24
mov eax, ecx
lea ecx, [edx + ebp]
cmp ebx, ecx
jae 0x685dc2
lea ecx, [esi + ebp]
add ecx, 0x3c
cmp edx, ecx
jb 0x685e24
xor edi, edi
cmp eax, 0x10
jae 0x685e09
mov ecx, edi
mov eax, ebp
mov edi, ebp
and edi, 0x18
nop word cs:[eax + eax]
movsd xmm0, qword [edx + ecx]
movsd xmm1, qword [ebx + ecx]
xorps xmm1, xmm0
movlps qword [ebx + ecx], xmm1
add ecx, 8
cmp edi, ecx
jne 0x685de0
cmp dword [esp + 0x14], edi
mov ebp, eax
jne 0x685e24
jmp 0x685e5b
xor edi, edi
jmp 0x686242
mov edi, ebp
and edi, 0x10
movups xmm0, xmmword [edx]
movups xmm1, xmmword [ebx]
xorps xmm1, xmm0
movups xmmword [ebx], xmm1
cmp ebp, edi
je 0x685e5b
mov eax, ebp
test al, 8
jne 0x685dc9
mov eax, edi
mov edi, ebp
mov ecx, ebp
mov ebp, ebx
mov dword [esp + 8], eax
mov ebx, eax
and ecx, 3
je 0x685e4c
neg ecx
mov ebx, dword [esp + 8]
nop dword [eax]
movzx eax, byte [edx + ebx]
xor byte [ebp + ebx], al
inc ebx
inc ecx
jne 0x685e40
mov eax, dword [esp + 8]
sub eax, edi
cmp eax, 0xfffffffc
jbe 0x685e68
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
mov edx, dword [esp + 0xc]
jmp 0x685eae
mov eax, dword [esp]
mov edx, dword [esp + 0xc]
lea ecx, [edx + eax]
add ecx, 3
mov ebp, dword [esp + 0xc8]
mov edi, dword [esp + 0x14]
movzx eax, byte [ecx + ebx - 3]
xor byte [esi + ebx + 0x3c], al
movzx eax, byte [ecx + ebx - 2]
xor byte [esi + ebx + 0x3d], al
movzx eax, byte [ecx + ebx - 1]
xor byte [esi + ebx + 0x3e], al
movzx eax, byte [ecx + ebx]
xor byte [esi + ebx + 0x3f], al
add ebx, 4
cmp edi, ebx
jne 0x685e80
mov ebx, dword [esp + 4]
cmp dword [esp + 0xc4], 0
sete al
test ebp, ebp
sete cl
or cl, al
jne 0x68635a
cmp edx, ebp
mov eax, ebp
cmovb eax, edx
test edx, edx
je 0x685ee8
xor ecx, ecx
cmp eax, 8
jae 0x685eef
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0xc4]
jmp 0x685f8e
xor edx, edx
jmp 0x686008
lea edx, [esi + eax]
add edx, 0x1c
mov edi, dword [esp + 0xc4]
add edi, eax
mov ebp, dword [esp + 0x10]
cmp ebp, edi
setb bl
mov edi, dword [esp + 0xc4]
cmp edx, edi
seta dl
test bl, dl
mov ebx, edi
jne 0x685f8e
xor ecx, ecx
cmp eax, 0x20
jb 0x685f66
mov ecx, eax
and ecx, 0xffffffe0
xor edx, edx
nop word [eax + eax]
movups xmm0, xmmword [ebx + edx]
movups xmm1, xmmword [ebx + edx + 0x10]
movups xmm2, xmmword [esi + edx + 0x1c]
xorps xmm2, xmm0
movups xmm0, xmmword [esi + edx + 0x2c]
xorps xmm0, xmm1
movups xmmword [esi + edx + 0x1c], xmm2
movups xmmword [esi + edx + 0x2c], xmm0
add edx, 0x20
cmp ecx, edx
jne 0x685f30
cmp eax, ecx
je 0x685ffa
test al, 0x18
je 0x685f8e
mov edx, ecx
mov ecx, eax
and ecx, 0xfffffff8
nop dword [eax]
movsd xmm0, qword [ebx + edx]
movsd xmm1, qword [ebp + edx]
xorps xmm1, xmm0
movlps qword [ebp + edx], xmm1
add edx, 8
cmp ecx, edx
jne 0x685f70
cmp eax, ecx
je 0x685ffa
mov edi, eax
mov edx, ecx
and edi, 3
je 0x685fba
mov edx, ecx
nop dword [eax]
mov ebx, dword [esp + 0xc4]
movzx ebx, byte [ebx + edx]
xor byte [ebp + edx], bl
mov ebx, dword [esp + 0xc4]
inc edx
dec edi
jne 0x685fa0
sub ecx, eax
cmp ecx, 0xfffffffc
ja 0x685ffa
nop word cs:[eax + eax]
movzx ecx, byte [ebx + edx]
xor byte [esi + edx + 0x1c], cl
movzx ecx, byte [ebx + edx + 1]
xor byte [esi + edx + 0x1d], cl
movzx ecx, byte [ebx + edx + 2]
xor byte [esi + edx + 0x1e], cl
movzx ecx, byte [ebx + edx + 3]
xor byte [esi + edx + 0x1f], cl
add edx, 4
cmp eax, edx
jne 0x685fd0
mov edx, dword [esi + 0x14]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
sub ebp, edx
jbe 0x68635a
cmp ebp, 0x10
mov eax, 0x10
cmovb eax, ebp
cmp eax, 1
mov dword [esp + 4], eax
adc eax, 0
mov ecx, dword [esp + 0xc4]
lea edi, [ecx + edx]
xor ecx, ecx
cmp ebp, 8
mov dword [esp], edx
jb 0x6860a0
lea edx, [edi + eax]
cmp ebx, edx
jae 0x68604a
lea edx, [esi + eax]
add edx, 0x3c
cmp edi, edx
jb 0x6860a0
xor ecx, ecx
cmp ebp, 0x10
jae 0x686083
mov edx, ecx
mov ecx, eax
and ecx, 0x18
nop dword [eax + eax]
movsd xmm0, qword [edi + edx]
movsd xmm1, qword [ebx + edx]
xorps xmm1, xmm0
movlps qword [ebx + edx], xmm1
add edx, 8
cmp ecx, edx
jne 0x686060
cmp dword [esp + 4], ecx
jne 0x6860a0
jmp 0x68635a
mov ecx, eax
and ecx, 0x10
movups xmm0, xmmword [edi]
movups xmm1, xmmword [ebx]
xorps xmm1, xmm0
movups xmmword [ebx], xmm1
cmp eax, ecx
je 0x68635a
test al, 8
jne 0x686051
mov dword [esp + 8], eax
mov edx, eax
mov ebp, ebx
mov eax, ecx
mov ebx, ecx
and edx, 3
je 0x6860cc
neg edx
mov ebx, eax
nop word cs:[eax + eax]
movzx ecx, byte [edi + ebx]
xor byte [ebp + ebx], cl
inc ebx
inc edx
jne 0x6860c0
sub eax, dword [esp + 8]
cmp eax, 0xfffffffc
mov edx, dword [esp]
mov eax, dword [esp + 4]
ja 0x68635a
mov ecx, dword [esp + 0xc4]
add ecx, edx
add ecx, 3
nop dword [eax]
movzx edx, byte [ecx + ebx - 3]
xor byte [esi + ebx + 0x3c], dl
movzx edx, byte [ecx + ebx - 2]
xor byte [esi + ebx + 0x3d], dl
movzx edx, byte [ecx + ebx - 1]
xor byte [esi + ebx + 0x3e], dl
movzx edx, byte [ecx + ebx]
xor byte [esi + ebx + 0x3f], dl
add ebx, 4
cmp eax, ebx
jne 0x6860f0
jmp 0x68635a
movups xmm0, xmmword [ebx]
mov ebx, 0x30
mov dword [esp + 0x1c], 0x10
movups xmm2, xmmword [esi + 0x60]
movups xmm3, xmmword [esi + 0x70]
xorps xmm2, xmm1
movups xmmword [esi + 0x60], xmm2
xorps xmm3, xmm1
movups xmmword [esi + 0x70], xmm3
cmp eax, 0x10
je 0x68615b
movups xmm1, xmmword [esi + 0x80]
xorps xmm1, xmm0
movups xmmword [esi + 0x80], xmm1
push ebx
mov eax, dword [esp + 0x10]
push eax
push ebp
push eax
push dword [esi + 8]
call fcn.005c0bc0
add esp, 0x14
test eax, eax
je 0x686226
cmp dword [esp + 0x1c], ebx
jne 0x686226
push 0xffffffffffffffff
push 0
push dword [esp + 0x14]
push 0
push 0
push dword [esi]
call fcn.005c0b90
add esp, 0x18
test eax, eax
je 0x686226
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0xc]
add eax, ecx
lea edi, [esp + 0x18]
push 0x10
push eax
push edi
push ecx
push dword [esi]
call fcn.005c0bc0
add esp, 0x14
test eax, eax
je 0x686226
cmp dword [esp + 0x18], 0x10
jne 0x686226
lea ebx, [esi + 0x70]
push 0x10
push dword [esp + 0x10]
push edi
push ebx
push dword [esi]
call fcn.005c0bc0
add esp, 0x14
test eax, eax
je 0x686226
cmp dword [esp + 0x18], 0x10
jne 0x686226
cmp dword [esi + 0x14], 0x10
je 0x68620b
lea eax, [esi + 0x80]
push 0x10
push ebx
push edi
push eax
push dword [esi]
call fcn.005c0bc0
add esp, 0x14
test eax, eax
je 0x686226
cmp dword [esp + 0x18], 0x10
jne 0x686226
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
cmp dword [esp + 0xc0], 0
jne 0x6859b9
jmp 0x68635a
xor ecx, ecx
jmp 0x686395
movzx ebx, byte [ebp + edx + 0x44]
xor byte [ebp + edx], bl
inc edx
cmp ecx, edx
jne 0x68622d
mov edi, dword [esi + 0x14]
mov ebx, dword [esp + 4]
sub eax, edi
jbe 0x68635a
cmp eax, 0x10
mov ecx, 0x10
cmovb ecx, eax
cmp ecx, 1
mov edx, ecx
adc edx, 0
lea ebp, [esi + 0x60]
add ebp, edi
mov dword [esp], 0
cmp eax, 8
mov dword [esp + 8], edx
jb 0x6862eb
lea ebx, [esi + edx]
add ebx, edi
add ebx, 0x60
cmp dword [esp + 4], ebx
mov ebx, dword [esp + 4]
jae 0x686292
lea ebx, [esi + edx]
add ebx, 0x3c
cmp ebp, ebx
mov ebx, dword [esp + 4]
jb 0x6862eb
mov dword [esp], 0
cmp eax, 0x10
jae 0x6862cd
mov eax, dword [esp]
and edx, 0x18
movsd xmm0, qword [ebp + eax]
movsd xmm1, qword [ebx + eax]
xorps xmm1, xmm0
movlps qword [ebx + eax], xmm1
add eax, 8
cmp edx, eax
jne 0x6862a4
mov dword [esp], edx
cmp ecx, edx
mov edx, dword [esp + 8]
jne 0x6862eb
jmp 0x68635a
mov eax, edx
and eax, 0x10
movups xmm0, xmmword [ebp]
movups xmm1, xmmword [ebx]
xorps xmm1, xmm0
movups xmmword [ebx], xmm1
mov dword [esp], eax
cmp edx, eax
je 0x68635a
test dl, 8
jne 0x68629e
mov dword [esp + 4], edi
mov edi, ebx
mov ebx, edx
mov eax, dword [esp]
and ebx, 3
je 0x68630c
neg ebx
mov eax, dword [esp]
movzx edx, byte [ebp + eax]
xor byte [edi + eax], dl
inc eax
inc ebx
jne 0x686300
mov edx, dword [esp]
sub edx, dword [esp + 8]
cmp edx, 0xfffffffc
mov edx, dword [esp + 4]
ja 0x68635a
add edx, esi
add edx, 0x63
nop word cs:[eax + eax]
movzx ebx, byte [edx + eax - 3]
xor byte [esi + eax + 0x3c], bl
movzx ebx, byte [edx + eax - 2]
xor byte [esi + eax + 0x3d], bl
movzx ebx, byte [edx + eax - 1]
xor byte [esi + eax + 0x3e], bl
movzx ebx, byte [edx + eax]
xor byte [esi + eax + 0x3f], bl
add eax, 4
cmp ecx, eax
jne 0x686330
push 0xffffffffffffffff
push 0
mov edi, dword [esp + 0x18]
push edi
push 0
push 0
push dword [esi]
call fcn.005c0b90
add esp, 0x18
test eax, eax
mov ecx, 0
je 0x686395
push 0xffffffffffffffff
push 0
push edi
push 0
push 0
push dword [esi + 4]
call fcn.005c0b90
add esp, 0x18
xor ecx, ecx
test eax, eax
setne cl
mov eax, ecx
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret