Function at 0x684bc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push ebx
mov eax, ecx
push esi
cmp dword [eax + 0x8874], 0
push edi
mov dword [ebp - 8], eax
jne 0x68507f
mov esi, dword [eax + 0x8870]
test esi, esi
je 0x68507f
mov ecx, dword [esi + 0x855c]
mov edx, dword [eax + 0x10]
mov ebx, dword [eax + 0x80ac]
mov edi, dword [eax + 0x80a8]
mov esi, dword [esi + 0x879c]
neg ecx
sbb ecx, ecx
mov dword [ebp - 0x18], edx
xor edx, edx
and ecx, 3
cmp dword [eax + 0xc], 4
mov dword [ebp - 0x40], ebx
mov ebx, dword [eax + 4]
sete dl
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x30], 0
xorps xmm1, xmm1
add edx, 3
add edx, dword [eax + 0x18]
xor edi, edi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x24], edi
cmp dword [ebp - 0x18], 1
jne 0x684c9d
mov eax, dword [eax + 0x14]
shr eax, 3
xor esi, esi
mov dword [ebp - 0x2c], eax
test ebx, ebx
je 0x684fd2
mov eax, dword [ebp - 0xc]
add eax, edx
mov dword [ebp - 0x28], eax
movzx edx, byte [eax]
mov eax, esi
and eax, 0xf
add edx, 0xffffff80
shl edx, cl
movzx ecx, byte [eax + edi + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
inc esi
mov dword [eax + ecx*4], edx
mov eax, dword [ebp - 0x28]
add eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x28], eax
cmp esi, ebx
jb 0x684c62
jmp 0x684fd2
cmp dword [ebp - 0x18], 2
jne 0x684d27
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x8870]
shr ecx, 4
mov al, byte [eax + 0x808c]
mov byte [ebp - 1], al
mov eax, dword [ebp - 0xc]
xor esi, esi
mov dword [ebp - 0x28], eax
test ebx, ebx
je 0x684fd2
movzx edi, byte [ebp - 1]
mov ebx, dword [ebp - 0x20]
add ecx, ecx
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x34], ecx
mov edi, edi
movzx edx, word [eax + edx*2]
mov ecx, dword [ebp - 0x2c]
sub edx, 0x8000
sar edx, cl
mov ecx, dword [ebp - 0x10]
mov eax, esi
and eax, 0xf
shl edx, cl
movzx ecx, byte [eax + edi + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
inc esi
mov dword [eax + ecx*4], edx
mov eax, dword [ebp - 0x28]
add eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x28], eax
cmp esi, ebx
jb 0x684ce0
jmp 0x684fd2
cmp dword [ebp - 0x18], 3
jne 0x684da5
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x8870]
shr ecx, 4
mov al, byte [eax + 0x808c]
mov byte [ebp - 1], al
mov eax, dword [ebp - 0xc]
xor esi, esi
mov dword [ebp - 0x28], eax
test ebx, ebx
je 0x684fd2
movzx edi, byte [ebp - 1]
mov ebx, dword [ebp - 0x20]
add ecx, ecx
mov dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x2c], ecx
movsx edx, word [eax + edx*2]
mov cl, byte [ebp - 0x34]
sar edx, cl
mov ecx, dword [ebp - 0x10]
mov eax, esi
and eax, 0xf
shl edx, cl
movzx ecx, byte [eax + edi + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
inc esi
mov dword [eax + ecx*4], edx
mov eax, dword [ebp - 0x28]
add eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x28], eax
cmp esi, ebx
jb 0x684d64
jmp 0x684fd2
cmp dword [ebp - 0x18], 4
jne 0x684e21
mov edx, dword [eax + 0x14]
shr edx, 4
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x24], 0
test ebx, ebx
je 0x684fd5
mov eax, dword [ebp - 0x34]
add eax, eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x1c]
movsx edx, word [edx + eax*2]
mov eax, edx
sar eax, 0x1f
and edx, 0x7fff
xor edx, eax
sub edx, eax
mov eax, dword [ebp - 0x24]
and eax, 0xf
shl edx, cl
movzx ecx, byte [eax + edi + 0x725ab8]
mov eax, dword [ebp - 0x24]
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov dword [esi + ecx*4], edx
mov edx, dword [ebp - 0x28]
add edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], edx
cmp eax, ebx
jb 0x684dd1
jmp 0x684fd2
cmp dword [ebp - 0x18], 6
jne 0x684ea0
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x8870]
shr ecx, 5
mov al, byte [eax + 0x808c]
mov byte [ebp - 1], al
mov eax, dword [ebp - 0xc]
xor esi, esi
mov dword [ebp - 0x28], eax
test ebx, ebx
je 0x684fd2
movzx edi, byte [ebp - 1]
mov ebx, dword [ebp - 0x20]
shl ecx, 2
mov dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x2c], ecx
nop
mov edx, dword [eax + edx*4]
mov ecx, dword [ebp - 0x34]
sar edx, cl
mov ecx, dword [ebp - 0x10]
mov eax, esi
and eax, 0xf
shl edx, cl
movzx ecx, byte [eax + edi + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
inc esi
mov dword [eax + ecx*4], edx
mov eax, dword [ebp - 0x28]
add eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x28], eax
cmp esi, ebx
jb 0x684e60
jmp 0x684fd2
cmp dword [ebp - 0x18], 7
jne 0x685088
mov edx, dword [eax + 0x14]
mov eax, dword [eax + 0x8870]
shr edx, 5
mov dword [ebp - 0x34], edx
mov dl, byte [eax + 0x808c]
mov al, byte [eax + 0x808d]
mov byte [ebp - 2], dl
mov byte [ebp - 1], al
mov eax, dword [ebp - 0xc]
xor edx, edx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x2c], edx
test ebx, ebx
je 0x684fd2
mov eax, dword [ebp - 0x34]
shl eax, 2
mov dword [ebp - 0x3c], eax
jmp 0x684ef0
mov eax, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x28]
movss xmm0, dword [ebx + eax*4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x684f0b
xor ebx, ebx
jmp 0x684f9e
movss dword [ebp - 0x38], xmm0
mov edx, dword [ebp - 0x38]
mov edi, edx
mov ecx, edx
and edi, 0x7fffff
sar ecx, 0x17
or edi, 0x800000
and ecx, 0xff
jne 0x684f39
xor edi, 0x800000
mov ecx, 1
movsx esi, byte [ebp - 1]
add esi, 0xffffff81
add esi, ecx
cmp esi, 1
jg 0x684f61
jge 0x684f52
mov ecx, 1
sub ecx, esi
sar edi, cl
mov esi, edi
and esi, 0x800000
neg esi
sbb esi, esi
and esi, 1
sar edx, 0x1f
mov dword [ebp - 0x34], edx
movzx edx, byte [ebp - 2]
mov eax, edx
neg eax
mov ebx, 1
lea ecx, [eax + 0x16]
shl ebx, cl
and edi, 0x7fffff
lea ecx, [eax + 0x17]
add ebx, edi
mov edi, dword [ebp - 0x24]
sar ebx, cl
mov ecx, edx
mov edx, dword [ebp - 0x2c]
shl esi, cl
mov ecx, dword [ebp - 0x10]
add ebx, esi
xor ebx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x14]
sub ebx, dword [ebp - 0x34]
shl ebx, cl
mov eax, edx
and eax, 0xf
movzx ecx, byte [eax + edi + 0x725ab8]
mov eax, edx
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x3c]
add dword [ebp - 0x28], eax
mov dword [esi + ecx*4], ebx
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x10]
inc edx
mov dword [ebp - 0x2c], edx
cmp edx, ebx
jb 0x684ef0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x30]
inc ecx
mov dword [ebp - 0x30], ecx
cmp ecx, dword [ebp - 0x40]
jae 0x684fed
mov ecx, dword [ebp - 0xc]
add ecx, dword [eax + 0x80b0]
mov dword [ebp - 0xc], ecx
mov eax, dword [eax + 0x861c]
shl eax, 4
mov esi, ebx
cmp ebx, eax
jae 0x685061
mov eax, ebx
shl eax, 4
lea ecx, [ebx - 1]
mov ebx, dword [ebp - 0x14]
and ecx, 0xf
dec eax
and eax, 0xffffff00
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x3c], eax
jmp 0x685020
movzx edx, byte [ecx + edi + 0x725ab8]
add edx, eax
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + edi + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebx + edx*4]
mov dword [ebx + ecx*4], eax
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x34]
mov eax, dword [eax + 0x861c]
shl eax, 4
inc esi
cmp esi, eax
mov eax, dword [ebp - 0x3c]
jb 0x685020
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
add edi, 0x10
mov dword [ebp - 0x24], edi
cmp edi, 0x100
jb 0x684c41
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret