Function at 0x684100
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 0x684326
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.005bf5b0
add esp, 0x14
xor ecx, ecx
test eax, eax
je 0x684d95
cmp dword [esp + 0x20], edi
jne 0x684d95
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 0x684470
cmp dword [esp + 0xc4], 0
jne 0x684497
cmp dword [esp], 0
jne 0x684497
cmp dword [esp + 0xcc], 0
jne 0x684497
cmp dword [esp + 0xc0], 0
je 0x684d5a
mov eax, dword [ebp + 0x8c]
test eax, eax
je 0x684d5a
mov edx, dword [esi + 0x14]
cmp edx, eax
mov ecx, eax
cmovb ecx, edx
test edx, edx
je 0x684802
xor edx, edx
cmp ecx, 8
mov ebp, dword [esp + 0x10]
jb 0x684c2d
xor edx, edx
cmp ecx, 0x20
jb 0x68443c
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 0x684400
cmp ecx, edx
je 0x684c3b
test cl, 0x18
je 0x684c2d
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 0x684450
jmp 0x684c37
cmp dword [esp], 0
sete al
mov ebp, dword [esp + 0xc0]
test ebp, ebp
sete cl
or cl, al
je 0x68462e
mov ebp, dword [esp + 0xc8]
jmp 0x6848ae
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 [0x9a8140]
movups xmmword [esi + 0x70], xmm0
cmp edx, 0x10
je 0x6844f3
movups xmm0, xmmword [esi + 0x80]
xorps xmm0, xmmword [0x9a8150]
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.005bf5b0
add esp, 0x14
test eax, eax
je 0x684c26
cmp dword [esp + 0x1c], ebx
jne 0x684c26
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.00684db0
add esp, 4
test eax, eax
je 0x684c26
mov ecx, esi
mov edx, dword [esp + 0xcc]
push ebx
call fcn.00684db0
add esp, 4
test eax, eax
je 0x684c26
mov ecx, esi
mov edx, dword [esp + 0xc4]
push dword [esp + 0x14]
call fcn.00684db0
add esp, 4
test eax, eax
je 0x684c26
mov ecx, esi
mov edx, 0x87524c
push 1
call fcn.00684db0
add esp, 4
test eax, eax
je 0x684c26
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x684b80
lea ebx, [esi + 0x4c]
lea ecx, [ebx + eax]
mov edx, 0x10
sub edx, eax
push edx
push 0
push ecx
call fcn.00786b68
add esp, 0xc
movups xmm1, xmmword [esi + 0x4c]
mov eax, dword [esi + 0x14]
cmp eax, 0x10
jne 0x684b1f
mov ebx, 0x20
jmp 0x684b27
cmp edx, ebp
mov eax, ebp
cmovb eax, edx
test edx, edx
mov ebp, dword [esp + 0xc8]
je 0x68464f
xor ebx, ebx
cmp eax, 8
jae 0x684656
mov ebp, dword [esp]
jmp 0x6846fd
xor edx, edx
jmp 0x684779
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 0x6846fd
xor ebx, ebx
cmp eax, 0x20
jb 0x6846c7
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 0x684690
cmp eax, ebx
je 0x68476b
test al, 0x18
je 0x6846fd
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 0x6846e0
cmp eax, ebx
je 0x68476b
mov edi, eax
mov dword [esp + 8], ebx
mov edx, ebx
and edi, 3
mov ecx, dword [esp + 0x10]
je 0x68472c
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 0x684720
mov ecx, dword [esp + 8]
sub ecx, eax
cmp ecx, 0xfffffffc
ja 0x68476b
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 0x684740
mov edx, dword [esi + 0x14]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc0]
sub ecx, edx
jbe 0x6848ae
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 0x684824
mov eax, ecx
lea ecx, [edx + ebp]
cmp ebx, ecx
jae 0x6847c2
lea ecx, [esi + ebp]
add ecx, 0x3c
cmp edx, ecx
jb 0x684824
xor edi, edi
cmp eax, 0x10
jae 0x684809
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 0x6847e0
cmp dword [esp + 0x14], edi
mov ebp, eax
jne 0x684824
jmp 0x68485b
xor edi, edi
jmp 0x684c42
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 0x68485b
mov eax, ebp
test al, 8
jne 0x6847c9
mov eax, edi
mov edi, ebp
mov ecx, ebp
mov ebp, ebx
mov dword [esp + 8], eax
mov ebx, eax
and ecx, 3
je 0x68484c
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 0x684840
mov eax, dword [esp + 8]
sub eax, edi
cmp eax, 0xfffffffc
jbe 0x684868
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
mov edx, dword [esp + 0xc]
jmp 0x6848ae
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 0x684880
mov ebx, dword [esp + 4]
cmp dword [esp + 0xc4], 0
sete al
test ebp, ebp
sete cl
or cl, al
jne 0x684d5a
cmp edx, ebp
mov eax, ebp
cmovb eax, edx
test edx, edx
je 0x6848e8
xor ecx, ecx
cmp eax, 8
jae 0x6848ef
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0xc4]
jmp 0x68498e
xor edx, edx
jmp 0x684a08
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 0x68498e
xor ecx, ecx
cmp eax, 0x20
jb 0x684966
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 0x684930
cmp eax, ecx
je 0x6849fa
test al, 0x18
je 0x68498e
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 0x684970
cmp eax, ecx
je 0x6849fa
mov edi, eax
mov edx, ecx
and edi, 3
je 0x6849ba
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 0x6849a0
sub ecx, eax
cmp ecx, 0xfffffffc
ja 0x6849fa
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 0x6849d0
mov edx, dword [esi + 0x14]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
sub ebp, edx
jbe 0x684d5a
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 0x684aa0
lea edx, [edi + eax]
cmp ebx, edx
jae 0x684a4a
lea edx, [esi + eax]
add edx, 0x3c
cmp edi, edx
jb 0x684aa0
xor ecx, ecx
cmp ebp, 0x10
jae 0x684a83
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 0x684a60
cmp dword [esp + 4], ecx
jne 0x684aa0
jmp 0x684d5a
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 0x684d5a
test al, 8
jne 0x684a51
mov dword [esp + 8], eax
mov edx, eax
mov ebp, ebx
mov eax, ecx
mov ebx, ecx
and edx, 3
je 0x684acc
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 0x684ac0
sub eax, dword [esp + 8]
cmp eax, 0xfffffffc
mov edx, dword [esp]
mov eax, dword [esp + 4]
ja 0x684d5a
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 0x684af0
jmp 0x684d5a
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 0x684b5b
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.005bf5b0
add esp, 0x14
test eax, eax
je 0x684c26
cmp dword [esp + 0x1c], ebx
jne 0x684c26
push 0xffffffffffffffff
push 0
push dword [esp + 0x14]
push 0
push 0
push dword [esi]
call fcn.005bf580
add esp, 0x18
test eax, eax
je 0x684c26
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.005bf5b0
add esp, 0x14
test eax, eax
je 0x684c26
cmp dword [esp + 0x18], 0x10
jne 0x684c26
lea ebx, [esi + 0x70]
push 0x10
push dword [esp + 0x10]
push edi
push ebx
push dword [esi]
call fcn.005bf5b0
add esp, 0x14
test eax, eax
je 0x684c26
cmp dword [esp + 0x18], 0x10
jne 0x684c26
cmp dword [esi + 0x14], 0x10
je 0x684c0b
lea eax, [esi + 0x80]
push 0x10
push ebx
push edi
push eax
push dword [esi]
call fcn.005bf5b0
add esp, 0x14
test eax, eax
je 0x684c26
cmp dword [esp + 0x18], 0x10
jne 0x684c26
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
cmp dword [esp + 0xc0], 0
jne 0x6843b9
jmp 0x684d5a
xor ecx, ecx
jmp 0x684d95
movzx ebx, byte [ebp + edx + 0x44]
xor byte [ebp + edx], bl
inc edx
cmp ecx, edx
jne 0x684c2d
mov edi, dword [esi + 0x14]
mov ebx, dword [esp + 4]
sub eax, edi
jbe 0x684d5a
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 0x684ceb
lea ebx, [esi + edx]
add ebx, edi
add ebx, 0x60
cmp dword [esp + 4], ebx
mov ebx, dword [esp + 4]
jae 0x684c92
lea ebx, [esi + edx]
add ebx, 0x3c
cmp ebp, ebx
mov ebx, dword [esp + 4]
jb 0x684ceb
mov dword [esp], 0
cmp eax, 0x10
jae 0x684ccd
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 0x684ca4
mov dword [esp], edx
cmp ecx, edx
mov edx, dword [esp + 8]
jne 0x684ceb
jmp 0x684d5a
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 0x684d5a
test dl, 8
jne 0x684c9e
mov dword [esp + 4], edi
mov edi, ebx
mov ebx, edx
mov eax, dword [esp]
and ebx, 3
je 0x684d0c
neg ebx
mov eax, dword [esp]
movzx edx, byte [ebp + eax]
xor byte [edi + eax], dl
inc eax
inc ebx
jne 0x684d00
mov edx, dword [esp]
sub edx, dword [esp + 8]
cmp edx, 0xfffffffc
mov edx, dword [esp + 4]
ja 0x684d5a
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 0x684d30
push 0xffffffffffffffff
push 0
mov edi, dword [esp + 0x18]
push edi
push 0
push 0
push dword [esi]
call fcn.005bf580
add esp, 0x18
test eax, eax
mov ecx, 0
je 0x684d95
push 0xffffffffffffffff
push 0
push edi
push 0
push 0
push dword [esi + 4]
call fcn.005bf580
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