Function at 0x683b40
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 0x683d66
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.005bf000
add esp, 0x14
xor ecx, ecx
test eax, eax
je 0x6847d5
cmp dword [esp + 0x20], edi
jne 0x6847d5
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 0x683eb0
cmp dword [esp + 0xc4], 0
jne 0x683ed7
cmp dword [esp], 0
jne 0x683ed7
cmp dword [esp + 0xcc], 0
jne 0x683ed7
cmp dword [esp + 0xc0], 0
je 0x68479a
mov eax, dword [ebp + 0x8c]
test eax, eax
je 0x68479a
mov edx, dword [esi + 0x14]
cmp edx, eax
mov ecx, eax
cmovb ecx, edx
test edx, edx
je 0x684242
xor edx, edx
cmp ecx, 8
mov ebp, dword [esp + 0x10]
jb 0x68466d
xor edx, edx
cmp ecx, 0x20
jb 0x683e7c
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 0x683e40
cmp ecx, edx
je 0x68467b
test cl, 0x18
je 0x68466d
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 0x683e90
jmp 0x684677
cmp dword [esp], 0
sete al
mov ebp, dword [esp + 0xc0]
test ebp, ebp
sete cl
or cl, al
je 0x68406e
mov ebp, dword [esp + 0xc8]
jmp 0x6842ee
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 [0xac9ce0]
movups xmmword [esi + 0x70], xmm0
cmp edx, 0x10
je 0x683f33
movups xmm0, xmmword [esi + 0x80]
xorps xmm0, xmmword [0xac9cf0]
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.005bf000
add esp, 0x14
test eax, eax
je 0x684666
cmp dword [esp + 0x1c], ebx
jne 0x684666
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.006847f0
add esp, 4
test eax, eax
je 0x684666
mov ecx, esi
mov edx, dword [esp + 0xcc]
push ebx
call fcn.006847f0
add esp, 4
test eax, eax
je 0x684666
mov ecx, esi
mov edx, dword [esp + 0xc4]
push dword [esp + 0x14]
call fcn.006847f0
add esp, 4
test eax, eax
je 0x684666
mov ecx, esi
mov edx, 0x8b91cc
push 1
call fcn.006847f0
add esp, 4
test eax, eax
je 0x684666
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x6845c0
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 0x68455f
mov ebx, 0x20
jmp 0x684567
cmp edx, ebp
mov eax, ebp
cmovb eax, edx
test edx, edx
mov ebp, dword [esp + 0xc8]
je 0x68408f
xor ebx, ebx
cmp eax, 8
jae 0x684096
mov ebp, dword [esp]
jmp 0x68413d
xor edx, edx
jmp 0x6841b9
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 0x68413d
xor ebx, ebx
cmp eax, 0x20
jb 0x684107
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 0x6840d0
cmp eax, ebx
je 0x6841ab
test al, 0x18
je 0x68413d
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 0x684120
cmp eax, ebx
je 0x6841ab
mov edi, eax
mov dword [esp + 8], ebx
mov edx, ebx
and edi, 3
mov ecx, dword [esp + 0x10]
je 0x68416c
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 0x684160
mov ecx, dword [esp + 8]
sub ecx, eax
cmp ecx, 0xfffffffc
ja 0x6841ab
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 0x684180
mov edx, dword [esi + 0x14]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc0]
sub ecx, edx
jbe 0x6842ee
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 0x684264
mov eax, ecx
lea ecx, [edx + ebp]
cmp ebx, ecx
jae 0x684202
lea ecx, [esi + ebp]
add ecx, 0x3c
cmp edx, ecx
jb 0x684264
xor edi, edi
cmp eax, 0x10
jae 0x684249
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 0x684220
cmp dword [esp + 0x14], edi
mov ebp, eax
jne 0x684264
jmp 0x68429b
xor edi, edi
jmp 0x684682
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 0x68429b
mov eax, ebp
test al, 8
jne 0x684209
mov eax, edi
mov edi, ebp
mov ecx, ebp
mov ebp, ebx
mov dword [esp + 8], eax
mov ebx, eax
and ecx, 3
je 0x68428c
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 0x684280
mov eax, dword [esp + 8]
sub eax, edi
cmp eax, 0xfffffffc
jbe 0x6842a8
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
mov edx, dword [esp + 0xc]
jmp 0x6842ee
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 0x6842c0
mov ebx, dword [esp + 4]
cmp dword [esp + 0xc4], 0
sete al
test ebp, ebp
sete cl
or cl, al
jne 0x68479a
cmp edx, ebp
mov eax, ebp
cmovb eax, edx
test edx, edx
je 0x684328
xor ecx, ecx
cmp eax, 8
jae 0x68432f
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0xc4]
jmp 0x6843ce
xor edx, edx
jmp 0x684448
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 0x6843ce
xor ecx, ecx
cmp eax, 0x20
jb 0x6843a6
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 0x684370
cmp eax, ecx
je 0x68443a
test al, 0x18
je 0x6843ce
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 0x6843b0
cmp eax, ecx
je 0x68443a
mov edi, eax
mov edx, ecx
and edi, 3
je 0x6843fa
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 0x6843e0
sub ecx, eax
cmp ecx, 0xfffffffc
ja 0x68443a
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 0x684410
mov edx, dword [esi + 0x14]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
sub ebp, edx
jbe 0x68479a
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 0x6844e0
lea edx, [edi + eax]
cmp ebx, edx
jae 0x68448a
lea edx, [esi + eax]
add edx, 0x3c
cmp edi, edx
jb 0x6844e0
xor ecx, ecx
cmp ebp, 0x10
jae 0x6844c3
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 0x6844a0
cmp dword [esp + 4], ecx
jne 0x6844e0
jmp 0x68479a
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 0x68479a
test al, 8
jne 0x684491
mov dword [esp + 8], eax
mov edx, eax
mov ebp, ebx
mov eax, ecx
mov ebx, ecx
and edx, 3
je 0x68450c
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 0x684500
sub eax, dword [esp + 8]
cmp eax, 0xfffffffc
mov edx, dword [esp]
mov eax, dword [esp + 4]
ja 0x68479a
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 0x684530
jmp 0x68479a
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 0x68459b
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.005bf000
add esp, 0x14
test eax, eax
je 0x684666
cmp dword [esp + 0x1c], ebx
jne 0x684666
push 0xffffffffffffffff
push 0
push dword [esp + 0x14]
push 0
push 0
push dword [esi]
call fcn.005befd0
add esp, 0x18
test eax, eax
je 0x684666
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.005bf000
add esp, 0x14
test eax, eax
je 0x684666
cmp dword [esp + 0x18], 0x10
jne 0x684666
lea ebx, [esi + 0x70]
push 0x10
push dword [esp + 0x10]
push edi
push ebx
push dword [esi]
call fcn.005bf000
add esp, 0x14
test eax, eax
je 0x684666
cmp dword [esp + 0x18], 0x10
jne 0x684666
cmp dword [esi + 0x14], 0x10
je 0x68464b
lea eax, [esi + 0x80]
push 0x10
push ebx
push edi
push eax
push dword [esi]
call fcn.005bf000
add esp, 0x14
test eax, eax
je 0x684666
cmp dword [esp + 0x18], 0x10
jne 0x684666
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
cmp dword [esp + 0xc0], 0
jne 0x683df9
jmp 0x68479a
xor ecx, ecx
jmp 0x6847d5
movzx ebx, byte [ebp + edx + 0x44]
xor byte [ebp + edx], bl
inc edx
cmp ecx, edx
jne 0x68466d
mov edi, dword [esi + 0x14]
mov ebx, dword [esp + 4]
sub eax, edi
jbe 0x68479a
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 0x68472b
lea ebx, [esi + edx]
add ebx, edi
add ebx, 0x60
cmp dword [esp + 4], ebx
mov ebx, dword [esp + 4]
jae 0x6846d2
lea ebx, [esi + edx]
add ebx, 0x3c
cmp ebp, ebx
mov ebx, dword [esp + 4]
jb 0x68472b
mov dword [esp], 0
cmp eax, 0x10
jae 0x68470d
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 0x6846e4
mov dword [esp], edx
cmp ecx, edx
mov edx, dword [esp + 8]
jne 0x68472b
jmp 0x68479a
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 0x68479a
test dl, 8
jne 0x6846de
mov dword [esp + 4], edi
mov edi, ebx
mov ebx, edx
mov eax, dword [esp]
and ebx, 3
je 0x68474c
neg ebx
mov eax, dword [esp]
movzx edx, byte [ebp + eax]
xor byte [edi + eax], dl
inc eax
inc ebx
jne 0x684740
mov edx, dword [esp]
sub edx, dword [esp + 8]
cmp edx, 0xfffffffc
mov edx, dword [esp + 4]
ja 0x68479a
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 0x684770
push 0xffffffffffffffff
push 0
mov edi, dword [esp + 0x18]
push edi
push 0
push 0
push dword [esi]
call fcn.005befd0
add esp, 0x18
test eax, eax
mov ecx, 0
je 0x6847d5
push 0xffffffffffffffff
push 0
push edi
push 0
push 0
push dword [esi + 4]
call fcn.005befd0
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