Function at 0x688c70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 4], ecx
push esi
mov eax, 0xfffffffe
push edi
mov ecx, ebx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], eax
call fcn.005de2f0
test al, al
je 0x689467
mov ecx, ebx
call fcn.005de430
sub eax, 0x3689a7ac
je 0x688cbf
dec eax
jne 0x689451
mov eax, dword [ebp - 4]
push ebx
lea ecx, [eax + 0x28]
call fcn.00708a60
jmp 0x689451
mov ecx, ebx
call fcn.005de470
test al, al
je 0x689451
mov ecx, ebx
call fcn.005de4f0
add eax, 0xfffffffd
cmp eax, 0xb
ja case.0x688ce1.9
jmp dword [eax*4 + 0x6896f8]
mov eax, 4
call fcn.0078c8d0
mov edi, esp
push 4
push edi
mov ecx, ebx
call fcn.005de5b0
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 4]
cmp eax, 0xffffffff
je case.0x688ce1.9
push eax
call fcn.0045c0b0
add esp, 4
test eax, eax
je case.0x688ce1.9
mov edx, dword [0x829478]
push 1
lea esi, [eax + 0x14]
push edx
push 4
push esi
call fcn.0045cc80
push 1
push 4
push edi
push esi
call fcn.0045cb20
push 0
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 0x24
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb case.0x688ce1.9
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], 0
sub edx, ecx
cmp edx, eax
jne 0x688d90
inc dword [0x8294f0]
call fcn.0045dca0
mov ecx, dword [0x829478]
mov eax, dword [0x820dd0]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x688da3
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x688dbd
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 0x688dd1
sub eax, ecx
jmp 0x688dd9
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x688df9
mov edx, ecx
or edx, eax
je 0x688df9
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe case.0x688ce1.9
mov cl, byte [0x81c6fc]
test cl, cl
jne case.0x688ce1.9
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
mov byte [0x81c6fc], 1
test ecx, ecx
not eax
jle 0x688e80
mov dword [ebp - 8], 0x820e44
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
test ecx, ecx
je 0x688e6b
mov esi, dword [ecx + 4]
test esi, esi
jle 0x688e6b
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
test edx, edx
je 0x688e6b
test esi, esi
jle 0x688e6b
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x688e65
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x688e5d
mov edx, dword [edx + 4]
dec ebx
jne 0x688e50
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
add edx, 4
dec ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], ecx
jne 0x688e2e
mov ebx, dword [ebp + 8]
cmp eax, dword [0x8294d8]
je 0x688e93
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294e8]
xor esi, esi
cmp eax, esi
je 0x688f0c
mov eax, dword [0x829464]
mov dword [ebp - 8], esi
cmp eax, esi
je 0x688ed5
lea edx, [ebp - 8]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x688eca
mov eax, dword [ebp - 8]
cmp eax, esi
je 0x688eca
cmp dword [eax], 0x29874362
je 0x688ed5
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
mov dword [ebp - 8], esi
cmp eax, esi
je 0x688f0c
lea ecx, [ebp - 8]
push ecx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x688f01
mov eax, dword [ebp - 8]
cmp eax, esi
je 0x688f01
cmp dword [eax], 0xbad0bad
je 0x688f0c
inc dword [0x8294f0]
call fcn.0045dca0
mov byte [0x81c6fc], 0
jmp case.0x688ce1.9
mov eax, 4
call fcn.0078c8d0
mov esi, esp
push 4
push esi
mov ecx, ebx
call fcn.005de5b0
mov edx, dword [ebp - 4]
cmp dword [edx + 8], 0xffffffff
je case.0x688ce1.9
mov eax, edx
push esi
mov ecx, dword [eax + 8]
push ecx
call fcn.00694f90
add esp, 8
jmp case.0x688ce1.9
lea edx, [ebp - 0x10]
push 4
push edx
mov ecx, ebx
call fcn.005de5b0
jmp case.0x688ce1.9
mov eax, 4
call fcn.0078c8d0
mov edi, esp
push 4
push edi
mov ecx, ebx
call fcn.005de5b0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
cmp eax, 0xffffffff
je case.0x688ce1.9
push eax
call fcn.0045c0b0
add esp, 4
test eax, eax
je case.0x688ce1.9
mov ecx, dword [0x829478]
push 1
lea esi, [eax + 0x14]
push ecx
push 4
push esi
call fcn.0045cc80
push 1
push 4
push edi
push esi
call fcn.0045cb20
push 0
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 0x24
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb case.0x688ce1.9
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], 0
sub edx, ecx
cmp edx, eax
jne 0x689009
inc dword [0x8294f0]
call fcn.0045dca0
mov ecx, dword [0x829478]
mov eax, dword [0x820dd0]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x68901c
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x689036
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 0x68904a
sub eax, ecx
jmp 0x689052
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x689072
mov edx, eax
or edx, ecx
je 0x689072
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe case.0x688ce1.9
mov cl, byte [0x81c6fc]
test cl, cl
jne case.0x688ce1.9
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
mov byte [0x81c6fc], 1
test ecx, ecx
not eax
jle 0x6890f6
mov dword [ebp - 8], 0x820e44
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
test ecx, ecx
je 0x6890e4
mov esi, dword [ecx + 4]
test esi, esi
jle 0x6890e4
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
test edx, edx
je 0x6890e4
test esi, esi
jle 0x6890e4
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x6890de
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x6890d6
mov edx, dword [edx + 4]
dec ebx
jne 0x6890c9
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
add edx, 4
dec ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], ecx
jne 0x6890a7
cmp eax, dword [0x8294d8]
je 0x689109
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294e8]
xor esi, esi
cmp eax, esi
je 0x689431
mov eax, dword [0x829464]
mov dword [ebp - 8], esi
cmp eax, esi
je 0x68914f
lea edx, [ebp - 8]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x689144
mov eax, dword [ebp - 8]
cmp eax, esi
je 0x689144
cmp dword [eax], 0x29874362
je 0x68914f
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
mov dword [ebp - 8], esi
cmp eax, esi
je 0x689431
lea ecx, [ebp - 8]
push ecx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x689426
mov eax, dword [ebp - 8]
cmp eax, esi
je 0x689426
cmp dword [eax], 0xbad0bad
je 0x689431
jmp 0x689426
mov eax, 4
call fcn.0078c8d0
mov esi, esp
push 4
push esi
mov ecx, ebx
call fcn.005de5b0
mov edx, dword [ebp - 4]
cmp dword [edx + 0x14], 0xffffffff
je case.0x688ce1.9
mov eax, edx
push esi
mov ecx, dword [eax + 0x14]
push ecx
call fcn.00694f90
add esp, 8
jmp case.0x688ce1.9
lea edx, [ebp - 0x14]
push 4
push edx
mov ecx, ebx
call fcn.005de5b0
jmp case.0x688ce1.9
mov eax, 4
call fcn.0078c8d0
mov esi, esp
push 4
push esi
mov ecx, ebx
call fcn.005de5b0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x1c], 0xffffffff
je case.0x688ce1.9
mov ecx, eax
push esi
mov edx, dword [ecx + 0x1c]
push edx
call fcn.00694f90
add esp, 8
jmp case.0x688ce1.9
mov eax, 4
call fcn.0078c8d0
mov edi, esp
push 4
push edi
mov ecx, ebx
call fcn.005de5b0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je case.0x688ce1.9
push eax
call fcn.0045c0b0
add esp, 4
test eax, eax
je case.0x688ce1.9
mov ecx, dword [0x829478]
push 1
lea esi, [eax + 0x14]
push ecx
push 4
push esi
call fcn.0045cc80
push 1
push 4
push edi
push esi
call fcn.0045cb20
push 0
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 0x24
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb case.0x688ce1.9
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], 0
sub edx, ecx
cmp edx, eax
jne 0x6892b8
inc dword [0x8294f0]
call fcn.0045dca0
mov ecx, dword [0x829478]
mov eax, dword [0x820dd0]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x6892cb
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x6892e5
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 0x6892f9
sub eax, ecx
jmp 0x689301
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x689321
mov edx, eax
or edx, ecx
je 0x689321
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe case.0x688ce1.9
mov cl, byte [0x81c6fc]
test cl, cl
jne case.0x688ce1.9
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
mov byte [0x81c6fc], 1
test ecx, ecx
not eax
jle 0x6893a5
mov dword [ebp - 8], 0x820e44
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
test ecx, ecx
je 0x689393
mov esi, dword [ecx + 4]
test esi, esi
jle 0x689393
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
test edx, edx
je 0x689393
test esi, esi
jle 0x689393
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x68938d
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x689385
mov edx, dword [edx + 4]
dec ebx
jne 0x689378
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
add edx, 4
dec ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], ecx
jne 0x689356
cmp eax, dword [0x8294d8]
je 0x6893b8
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294e8]
xor esi, esi
cmp eax, esi
je 0x689431
mov eax, dword [0x829464]
mov dword [ebp - 8], esi
cmp eax, esi
je 0x6893fa
lea edx, [ebp - 8]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x6893ef
mov eax, dword [ebp - 8]
cmp eax, esi
je 0x6893ef
cmp dword [eax], 0x29874362
je 0x6893fa
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
mov dword [ebp - 8], esi
cmp eax, esi
je 0x689431
lea ecx, [ebp - 8]
push ecx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x689426
mov eax, dword [ebp - 8]
cmp eax, esi
je 0x689426
cmp dword [eax], 0xbad0bad
je 0x689431
inc dword [0x8294f0]
call fcn.0045dca0
mov ebx, dword [ebp + 8]
mov byte [0x81c6fc], 0
mov ecx, ebx
call fcn.005de4a0
mov ecx, ebx
call fcn.005de470
test al, al
jne 0x688cce
mov ecx, ebx
call fcn.005de3e0
mov ecx, ebx
call fcn.005de2f0
test al, al
jne 0x688c99
mov edx, dword [0x857160]
xor eax, eax
test edx, edx
jle 0x689488
mov ecx, dword [0x857154]
mov esi, dword [ebp - 0x10]
cmp dword [ecx], esi
je 0x68948a
inc eax
add ecx, 4
cmp eax, edx
jl 0x68947c
xor eax, eax
mov edi, dword [ebp - 4]
mov dword [ebp - 8], eax
mov eax, dword [edi + 0xc]
cmp eax, 0xffffffff
je 0x6896b3
push eax
call fcn.0045c0b0
add esp, 4
test eax, eax
je 0x6896ad
mov edx, dword [0x829478]
push 1
lea esi, [eax + 0x14]
push edx
push 4
push esi
call fcn.0045cc80
push 1
lea eax, [ebp - 8]
push 4
push eax
push esi
call fcn.0045cb20
push 0
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 0x24
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x6896ad
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], 0
sub edx, ecx
cmp edx, eax
jne 0x689522
inc dword [0x8294f0]
call fcn.0045dca0
mov ecx, dword [0x829478]
mov eax, dword [0x820dd0]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x689535
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x68954f
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 0x689563
sub eax, ecx
jmp 0x68956b
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x68958b
mov edx, eax
or edx, ecx
je 0x68958b
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x6896ad
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x6896ad
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
mov byte [0x81c6fc], 1
test ecx, ecx
not eax
jle 0x68960f
mov dword [ebp + 8], 0x820e44
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx]
test ecx, ecx
je 0x6895fd
mov esi, dword [ecx + 4]
test esi, esi
jle 0x6895fd
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
test edx, edx
je 0x6895fd
test esi, esi
jle 0x6895fd
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x6895f7
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x6895ef
mov edx, dword [edx + 4]
dec ebx
jne 0x6895e2
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
add edx, 4
dec ecx
mov dword [ebp + 8], edx
mov dword [ebp - 0xc], ecx
jne 0x6895c0
cmp eax, dword [0x8294d8]
je 0x689622
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294e8]
xor esi, esi
cmp eax, esi
je 0x68969b
mov eax, dword [0x829464]
mov dword [ebp + 8], esi
cmp eax, esi
je 0x689664
lea edx, [ebp + 8]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x689659
mov eax, dword [ebp + 8]
cmp eax, esi
je 0x689659
cmp dword [eax], 0x29874362
je 0x689664
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
mov dword [ebp + 8], esi
cmp eax, esi
je 0x68969b
lea ecx, [ebp + 8]
push ecx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x689690
mov eax, dword [ebp + 8]
cmp eax, esi
je 0x689690
cmp dword [eax], 0xbad0bad
je 0x68969b
inc dword [0x8294f0]
call fcn.0045dca0
mov edx, dword [0x857160]
mov edi, dword [ebp - 4]
mov byte [0x81c6fc], 0
jmp 0x6896b3
mov edx, dword [0x857160]
xor eax, eax
test edx, edx
jle 0x6896ce
mov ecx, dword [0x857154]
mov esi, dword [ebp - 0x14]
cmp dword [ecx], esi
je 0x6896d0
inc eax
add ecx, 4
cmp eax, edx
jl 0x6896c2
xor eax, eax
mov dword [ebp + 8], eax
mov eax, dword [edi + 0x18]
cmp eax, 0xffffffff
je 0x6896e8
lea edx, [ebp + 8]
push edx
push eax
call fcn.00696200
add esp, 8
lea esp, [ebp - 0x20]
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4