Function at 0x6922f8
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, dword [esp + 0x38]
push edi
mov edi, eax
mov ebp, dword [edi]
test dword [ebp + 0xc], 0x4000000
movzx eax, byte [edi + 0x1ba]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x2c], eax
je 0x692854
cmp dword [edi + 0xc], 0
jne 0x692344
mov eax, ebp
call fcn.00671538
mov dword [edi + 0xc], eax
test eax, eax
je 0x692344
push 0x84
call fcn.00671768
add esp, 4
mov edx, dword [esi + 0x44]
mov eax, 0xfff0bdc0
mov dword [esp + 0x14], eax
test edx, edx
je 0x692379
xor eax, eax
cmp dword [ebp + 4], eax
mov dword [esp + 0x14], eax
jle 0x692379
mov ecx, dword [ebp + 8]
add ecx, 0xc
lea ecx, [ecx]
cmp dword [ecx], edx
je 0x692375
inc eax
add ecx, 0x10
cmp eax, dword [ebp + 4]
jl 0x692368
mov dword [esp + 0x14], eax
mov ecx, dword [ebp + 8]
mov ebx, dword [esi + 0x24]
shl eax, 4
mov edx, dword [eax + ecx]
mov dword [esp + 0x28], edx
xor edx, edx
mov dword [esp + 0x10], ebx
cmp ebx, edx
je 0x692419
jmp 0x69239d
mov ebx, dword [esp + 0x10]
cmp byte [edi + 0x1ba], 0
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], edx
je 0x6923c9
mov eax, dword [esp + 0x28]
mov ecx, dword [ebx + 8]
push eax
push ecx
push ebp
call fcn.00687808
add esp, 0xc
jmp 0x692484
mov eax, dword [edi]
cmp byte [eax + 0x7c], 0
mov edx, dword [esp + 0x10]
mov ebx, dword [edx + 8]
jne 0x692433
lea ecx, [edi + 8]
push ecx
push eax
call fcn.0069b0e8
add esp, 8
test eax, eax
je 0x692433
inc dword [edi + 0x40]
mov dword [edi + 4], eax
cmp dword [esp + 0x2c], 0
je 0x692854
cmp byte [ebp + 0x1e], 0
jne 0x692854
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 4]
xor edx, edx
mov dword [esp + 0x10], eax
test eax, eax
jne 0x692399
mov esi, dword [esp + 0x3c]
mov ebx, dword [esi + 4]
mov dword [esp + 0x34], ebx
mov eax, ebx
cmp ebx, edx
jne 0x6925e2
mov dword [esp + 0x1c], edx
jmp 0x6925f9
mov esi, dword [esp + 0x28]
mov edx, dword [edi]
push esi
push ebx
push edx
call fcn.00687808
add esp, 0xc
mov dword [esp + 0x18], eax
test eax, eax
jne 0x692480
push ebx
test esi, esi
je 0x692466
push esi
push 0x100ab230
push 0x100aa734
call fcn.0065d6b8
add esp, 0x10
jmp 0x692478
push 0x100ab230
push 0x100aa740
call fcn.0065d6b8
add esp, 0xc
mov eax, dword [esp + 0x18]
mov byte [edi + 0x12], 1
mov ebx, dword [esp + 0x10]
mov esi, eax
test esi, esi
je 0x6923ef
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x20]
push ecx
push ebx
push esi
push edi
call fcn.00690ed8
add esp, 0x14
test eax, eax
jne 0x6923ef
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x6924be
mov edx, dword [ebx + 0x24]
mov dword [esp + 0x34], edx
lea eax, [esp + 0x34]
mov ecx, dword [esp + 0x10]
xor ebx, ebx
cmp dword [ecx + 0x14], ebx
mov dword [esp + 0x18], eax
jle 0x692533
mov edx, dword [eax + ebx*4]
mov ecx, dword [esp + 0x3c]
cmp edx, dword [ecx + 8]
jne 0x6924e0
mov dword [eax + ebx*4], 0xffffffff
cmp dword [ebp + 0xf8], 0
je 0x692529
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x6924f9
mov edx, dword [eax + 8]
mov eax, dword [edx + ebx*4]
jmp 0x6924fc
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x10]
mov edx, dword [esp + 0x14]
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*8]
push edx
push eax
mov eax, dword [esi + 4]
push eax
mov eax, edi
call fcn.00686f88
xor ecx, ecx
add esp, 0xc
cmp eax, 2
mov eax, dword [esp + 0x18]
sete cl
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0x10]
inc ebx
cmp ebx, dword [edx + 0x14]
jl 0x6924cd
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x18]
mov ebx, dword [esp + 0x14]
push eax
push 0
push ecx
push ebx
mov eax, edi
call fcn.00687218
mov eax, dword [esp + 0x50]
inc dword [edi + 0x44]
add esp, 0x10
test eax, eax
je 0x692579
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
push edx
mov edx, dword [esp + 0x20]
push 0xffffffffffffffff
push eax
mov eax, dword [esp + 0x24]
push eax
push ecx
push edx
push esi
push ebx
push edi
call fcn.00691188
add esp, 0x24
mov eax, dword [esp + 0x44]
test eax, eax
je 0x6925a3
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x20]
push 1
push eax
mov eax, dword [esp + 0x1c]
push edx
push eax
push ecx
push esi
push ebx
push edi
call fcn.00691188
add esp, 0x24
mov eax, dword [esp + 0x24]
test eax, eax
je 0x6925d4
cmp eax, dword [ebp + 0xf0]
jb 0x6925d4
cmp eax, dword [ebp + 0xf4]
jae 0x6925d4
mov edx, dword [ebp + 0xec]
mov dword [eax], edx
dec dword [ebp + 0xe4]
mov dword [ebp + 0xec], eax
jmp 0x692404
push eax
call fcn.0065b508
add esp, 4
jmp 0x692404
cmp byte [ebx], 0
je 0x6925ee
nop
inc eax
cmp byte [eax], 0
jne 0x6925e8
sub eax, ebx
and eax, 0x3fffffff
mov dword [esp + 0x1c], eax
mov ecx, dword [esi + 0x44]
add ecx, 0x34
mov dword [esp + 0x28], ecx
cmp dword [ecx + 0xc], edx
je 0x69263f
mov esi, dword [esp + 0x1c]
xor eax, eax
mov edx, ebx
test esi, esi
jle 0x69263b
lea esp, [esp]
movzx ecx, byte [edx]
movzx ecx, byte [ecx + 0x100a61d0]
lea ebx, [eax*8]
xor ecx, ebx
dec esi
xor eax, ecx
inc edx
test esi, esi
jg 0x692618
mov ebx, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
xor edx, edx
div dword [ecx]
push ebx
mov ebx, dword [esp + 0x20]
call fcn.0065e768
xor esi, esi
add esp, 4
cmp eax, esi
je 0x692854
mov ebx, dword [eax + 8]
cmp ebx, esi
je 0x692854
lea esp, [esp]
cmp byte [ebx + 0x18], 0
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], esi
jne 0x69268b
cmp dword [edi + 0x1a8], esi
jne 0x69268b
cmp byte [edi + 0x158], 0
je 0x692847
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x2c]
push eax
push ebx
push ecx
push edi
call fcn.00690ed8
add esp, 0x14
test eax, eax
je 0x6926c1
cmp dword [esp + 0x2c], esi
je 0x692854
cmp byte [ebp + 0x1e], 0
jne 0x692854
jmp 0x692847
cmp byte [ebp + 0x1e], 0
jne 0x69280c
cmp byte [ebp + 0xe2], 0
je 0x692710
mov edx, 0x40
cmp dx, word [ebp + 0xe0]
ja 0x692710
mov esi, dword [ebp + 0xec]
test esi, esi
je 0x692710
mov eax, dword [esi]
inc dword [ebp + 0xe4]
mov dword [ebp + 0xec], eax
mov eax, dword [ebp + 0xe4]
cmp eax, dword [ebp + 0xe8]
jle 0x692724
mov dword [ebp + 0xe8], eax
jmp 0x692724
push 0x40
call fcn.0065b1c8
add esp, 4
test eax, eax
jne 0x692722
mov byte [ebp + 0x1e], 1
mov esi, eax
test esi, esi
je 0x69280c
push 0x40
push 0
push esi
call fcn.006d1728
mov ecx, 1
mov word [esi + 2], cx
movsx edx, word [esi]
add esp, 0xc
push edx
push ecx
push ebp
mov eax, esi
call fcn.0068b798
add esp, 0xc
cmp byte [ebp + 0x1e], 0
mov esi, eax
je 0x692767
push esi
mov eax, ebp
call fcn.0068b9d8
jmp 0x692809
movsx eax, word [esi]
mov ebp, dword [esp + 0x28]
lea ecx, [eax*8]
sub ecx, eax
mov dword [esi + ecx*8 - 0x2c], 0
mov dword [esi + ecx*8 - 0x30], 0
mov edx, dword [ebx]
lea eax, [esi + ecx*8 - 0x30]
mov dword [esi + 0x14], edx
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
mov dword [esi + 0xc], ecx
mov eax, edx
mov ecx, 1
add word [eax + 0x20], cx
mov edx, dword [edi + 0x44]
mov dword [esi + 0x20], edx
add dword [edi + 0x44], ecx
cmp dword [esp + 0x44], 0
je 0x6927d0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x3c]
push 0xffffffffffffffff
push eax
push ecx
push ebx
push ebp
push edx
push esi
push edi
call fcn.00691948
add esp, 0x20
cmp dword [esp + 0x40], 0
je 0x6927f4
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x3c]
push 1
push eax
push ecx
push ebx
push ebp
push edx
push esi
push edi
call fcn.00691948
add esp, 0x20
mov eax, dword [esp + 0x30]
push esi
mov dword [esi + 0xc], 0
call fcn.0068b9d8
mov ebp, dword [esp + 0x34]
add esp, 4
mov eax, dword [esp + 0x18]
test eax, eax
je 0x69283a
cmp eax, dword [ebp + 0xf0]
jb 0x69283a
cmp eax, dword [ebp + 0xf4]
jae 0x69283a
mov ecx, dword [ebp + 0xec]
mov dword [eax], ecx
dec dword [ebp + 0xe4]
mov dword [ebp + 0xec], eax
jmp 0x692847
mov edx, dword [esp + 0x18]
push edx
call fcn.0065b508
add esp, 4
mov ebx, dword [ebx + 0xc]
xor esi, esi
cmp ebx, esi
jne 0x692668
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret