Function at 0x689ee0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0x856518]
push ebx
push ebp
push esi
cmp eax, 3
push edi
mov ebp, ecx
jne 0x689efd
mov al, byte [0x8136fc]
test al, al
je 0x689efd
xor bl, bl
jmp 0x689eff
mov bl, 1
mov eax, dword [ebp + 0x30]
xor esi, esi
cmp eax, esi
je 0x689f0d
mov ecx, dword [eax + 4]
jmp 0x689f0f
xor ecx, ecx
cmp ecx, esi
je 0x689f1c
mov eax, dword [ecx]
call dword [eax + 0x40]
test eax, eax
je 0x689f1e
mov bl, 1
mov edi, dword [esp + 0x14]
cmp byte [edi], 0
jne 0x689f32
mov al, byte [edi + 1]
test al, al
je 0x689f32
test bl, bl
je 0x689f8a
mov al, byte [0x855ec8]
test al, al
je 0x689f54
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push ecx
push edx
push edi
mov ecx, ebp
call fcn.0068a670
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
mov eax, dword [ebp + 4]
mov dword [esp + 0x18], esi
cmp eax, 0xffffffff
je 0x68a5d2
mov ecx, dword [ebp + 4]
lea eax, [esp + 0x18]
push eax
push ecx
call fcn.00428f80
mov eax, dword [esp + 0x20]
add esp, 8
cmp eax, esi
je 0x68a5d2
fld dword [eax]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
mov eax, dword [edi + 0x14]
xor bl, bl
cmp eax, esi
mov byte [esp + 0x14], 0
je 0x689fde
cmp dword [eax + 4], esi
je 0x689fde
cmp eax, esi
je 0x689fa6
mov eax, dword [eax + 4]
jmp 0x689fa8
xor eax, eax
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x2c]
test eax, eax
je 0x689fde
mov eax, dword [edi + 0x14]
cmp eax, esi
je 0x689fbf
mov ecx, dword [eax + 4]
jmp 0x689fc1
xor ecx, ecx
mov eax, dword [ecx]
call dword [eax + 0x2c]
mov eax, dword [eax + 0x95c]
mov ecx, dword [0x855ecc]
cmp eax, esi
setg byte [esp + 0x14]
cmp eax, ecx
sete bl
mov al, byte [0x855ec8]
test al, al
je 0x68a2a4
test bl, bl
jne 0x68a28b
mov al, byte [esp + 0x14]
test al, al
je 0x68a28b
mov eax, dword [ebp + 4]
cmp eax, 0xffffffff
je 0x68a5d2
push eax
call fcn.0045c0b0
add esp, 4
cmp eax, esi
je 0x68a5d2
mov ecx, dword [0x8294dc]
push esi
add eax, 0x14
push 4
lea edx, [ecx*4 + 0x8294b4]
push eax
push edx
call fcn.0045cba0
mov eax, dword [0x8294dc]
add esp, 0x10
lea esi, [eax*4 + 0x8294b4]
inc eax
cmp eax, 8
mov dword [esp + 0x1c], esi
mov dword [0x8294dc], eax
jl 0x68a05e
xor edi, edi
mov dword [0x8294dc], edi
jmp 0x68a060
xor edi, edi
push edi
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 4
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x68a27a
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], edi
sub edx, ecx
cmp edx, eax
jne 0x68a0ae
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x68a0c1
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x68a0db
mov ecx, 0x83f450
call fcn.005ddd50
mov byte [0x81c644], 1
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x83f450]
cmp eax, ecx
jbe 0x68a0ef
sub eax, ecx
jmp 0x68a0f7
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x68a117
mov edx, ecx
or edx, eax
je 0x68a117
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x68a27a
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x68a27a
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
cmp ecx, edi
mov byte [0x81c6fc], 1
not eax
jle 0x68a19a
mov ebp, 0x820e44
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp]
cmp ecx, edi
je 0x68a188
mov esi, dword [ecx + 4]
test esi, esi
jle 0x68a186
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
test edx, edx
je 0x68a186
test esi, esi
jle 0x68a186
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x68a180
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x68a178
mov edx, dword [edx + 4]
dec ebx
jne 0x68a16b
xor edi, edi
mov ecx, dword [esp + 0x18]
add ebp, 4
dec ecx
mov dword [esp + 0x18], ecx
jne 0x68a14b
mov esi, dword [esp + 0x1c]
cmp eax, dword [0x8294d8]
je 0x68a1ad
inc dword [0x8294f0]
call fcn.0045dca0
cmp dword [0x8294e8], edi
je 0x68a273
mov eax, dword [0x829464]
mov dword [esp + 0x18], edi
cmp eax, edi
je 0x68a239
push eax
call fcn.0045c0b0
add esp, 4
cmp eax, edi
je 0x68a22e
push edi
add eax, 0x14
push 4
push eax
mov eax, dword [0x829488]
lea ecx, [eax*4 + 0x82948c]
push ecx
call fcn.0045cba0
mov eax, dword [0x829488]
add esp, 0x10
lea edx, [eax*4 + 0x82948c]
inc eax
cmp eax, 8
mov dword [esp + 0x18], edx
mov dword [0x829488], eax
jl 0x68a210
mov dword [0x829488], edi
push edi
call fcn.0045d120
add esp, 4
call fcn.004059e0
mov eax, dword [esp + 0x18]
cmp eax, edi
je 0x68a22e
cmp dword [eax], 0x29874362
je 0x68a239
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
mov dword [esp + 0x18], edi
cmp eax, edi
je 0x68a273
lea ecx, [esp + 0x18]
push ecx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x68a268
mov eax, dword [esp + 0x18]
cmp eax, edi
je 0x68a268
cmp dword [eax], 0xbad0bad
je 0x68a273
inc dword [0x8294f0]
call fcn.0045dca0
mov byte [0x81c6fc], 0
cmp esi, edi
je 0x68a5d2
fld dword [esi]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push edx
push eax
push edi
mov ecx, ebp
call fcn.0068a670
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
test bl, bl
je 0x68a314
push 0x6c8
call fcn.00672b70
add esp, 4
cmp eax, esi
je 0x68a314
mov ecx, eax
call fcn.006f4890
cmp eax, esi
je 0x68a314
mov edx, dword [edi + 0x14]
xor ebx, ebx
cmp edx, esi
je 0x68a2e0
cmp dword [edx + 4], esi
je 0x68a2e0
cmp edx, esi
je 0x68a2db
mov edx, dword [edx + 4]
jmp 0x68a2dd
xor edx, edx
mov ebx, dword [edx + 0xc]
mov edx, dword [ebp + 0x30]
test edx, edx
je 0x68a2fc
mov ecx, dword [edx + 4]
test ecx, ecx
je 0x68a2fc
test edx, edx
je 0x68a2f7
mov edx, dword [edx + 4]
jmp 0x68a2f9
xor edx, edx
mov esi, dword [edx + 0xc]
fld dword [edi + 4]
mov ecx, dword [edi + 8]
fmul dword [esp + 0x18]
push ecx
push ecx
mov ecx, eax
fstp dword [esp]
push esi
push ebx
call fcn.006f48f0
mov eax, dword [ebp + 4]
cmp eax, 0xffffffff
je 0x68a5d2
push eax
call fcn.0045c0b0
xor esi, esi
add esp, 4
cmp eax, esi
je 0x68a5d2
mov edx, dword [0x8294dc]
push esi
add eax, 0x14
push 4
push eax
lea eax, [edx*4 + 0x8294b4]
push eax
call fcn.0045cba0
mov eax, dword [0x8294dc]
add esp, 0x10
lea edi, [eax*4 + 0x8294b4]
inc eax
cmp eax, 8
mov dword [esp + 0x1c], edi
mov dword [0x8294dc], eax
jl 0x68a371
mov dword [0x8294dc], esi
push esi
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 4
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x68a5c5
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], esi
sub edx, ecx
cmp edx, eax
jne 0x68a3bf
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x68a3d2
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x68a3ec
mov ecx, 0x83f450
call fcn.005ddd50
mov byte [0x81c644], 1
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x83f450]
cmp eax, ecx
jbe 0x68a400
sub eax, ecx
jmp 0x68a408
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x68a428
mov edx, eax
or edx, ecx
je 0x68a428
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x68a5c5
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x68a5c5
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
cmp ecx, esi
mov byte [0x81c6fc], 1
not eax
jle 0x68a4a9
mov ebp, 0x820e44
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp]
test ecx, ecx
je 0x68a497
mov esi, dword [ecx + 4]
test esi, esi
jle 0x68a497
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
test edx, edx
je 0x68a497
test esi, esi
jle 0x68a497
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x68a491
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x68a489
mov edx, dword [edx + 4]
dec ebx
jne 0x68a47c
mov ecx, dword [esp + 0x18]
add ebp, 4
dec ecx
mov dword [esp + 0x18], ecx
jne 0x68a45c
mov edi, dword [esp + 0x1c]
cmp eax, dword [0x8294d8]
je 0x68a4bc
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294e8]
test eax, eax
je 0x68a5be
mov eax, dword [0x829464]
test eax, eax
je 0x68a543
push eax
call fcn.0045c0b0
add esp, 4
test eax, eax
je 0x68a538
push 0
add eax, 0x14
push 4
push eax
mov eax, dword [0x829488]
lea ecx, [eax*4 + 0x82948c]
push ecx
call fcn.0045cba0
mov eax, dword [0x829488]
add esp, 0x10
lea esi, [eax*4 + 0x82948c]
inc eax
cmp eax, 8
mov dword [0x829488], eax
jl 0x68a51d
mov dword [0x829488], 0
push 0
call fcn.0045d120
add esp, 4
call fcn.004059e0
test esi, esi
je 0x68a538
cmp dword [esi], 0x29874362
je 0x68a543
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
test eax, eax
je 0x68a5be
push eax
call fcn.0045c0b0
add esp, 4
test eax, eax
je 0x68a5b3
mov edx, dword [0x829488]
push 0
add eax, 0x14
push 4
push eax
lea eax, [edx*4 + 0x82948c]
push eax
call fcn.0045cba0
mov eax, dword [0x829488]
add esp, 0x10
lea esi, [eax*4 + 0x82948c]
inc eax
cmp eax, 8
mov dword [0x829488], eax
jl 0x68a598
mov dword [0x829488], 0
push 0
call fcn.0045d120
add esp, 4
call fcn.004059e0
test esi, esi
je 0x68a5b3
cmp dword [esi], 0xbad0bad
je 0x68a5be
inc dword [0x8294f0]
call fcn.0045dca0
mov byte [0x81c6fc], 0
test edi, edi
je 0x68a5d2
fld dword [edi]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
fld dword [0x89fe2c]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc