Function at 0x701b20
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14
push ebx
mov ebx, ecx
push ebp
xor ebp, ebp
mov eax, dword [ebx + 0xc]
push esi
cmp eax, ebp
je 0x701b70
cmp dword [eax + 4], ebp
je 0x701b70
cmp eax, ebp
je 0x701b3f
mov eax, dword [eax + 4]
jmp 0x701b41
xor eax, eax
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x44]
test eax, eax
je 0x701b70
mov eax, dword [ebx + 0xc]
cmp eax, ebp
je 0x701b58
mov ecx, dword [eax + 4]
jmp 0x701b5a
xor ecx, ecx
mov eax, dword [ecx]
call dword [eax + 0x44]
cmp dword [eax + 0x994], 9
jne 0x701b70
mov byte [ebx + 0x47], 0
mov byte [ebx + 0x48], 0
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x1c]
cmp eax, ebp
je 0x701b85
cmp eax, 6
je 0x701b85
mov al, byte [ecx + 0x3c]
test al, al
je 0x701b89
mov byte [ebx + 0x48], 0
mov eax, dword [ebx + 0x1c]
or esi, 0xffffffff
add eax, 0x54
mov dword [esp + 0x10], ebp
cmp dword [eax], esi
je 0x701bb6
mov edx, dword [eax]
lea ecx, [esp + 0x10]
push ecx
push edx
call fcn.00407b70
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, ebp
je 0x701bb6
mov eax, dword [eax]
jmp 0x701bbb
mov eax, dword [0x89fe34]
cmp eax, ebp
jne 0x701bdc
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x18], esi
cmp eax, esi
je 0x701d06
mov ecx, dword [ebx + 0x30]
lea eax, [esp + 0x18]
push eax
push ecx
jmp 0x701cfe
mov eax, dword [ebx + 0x2c]
mov edx, dword [0x857290]
cmp eax, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], ebp
je 0x701c23
mov ecx, dword [ebx + 0x2c]
lea eax, [esp + 0xc]
push eax
push ecx
call fcn.00428f80
mov eax, dword [esp + 0x14]
add esp, 8
cmp eax, ebp
je 0x701c23
fld dword [eax]
fsub dword [esp + 0x18]
fstp dword [eax]
mov edx, dword [esp + 0xc]
mov eax, dword [ebx + 0x2c]
push edx
push eax
call fcn.00694f90
add esp, 8
mov al, byte [ebx + 0x47]
test al, al
jne 0x701c31
mov al, byte [ebx + 0x48]
test al, al
je 0x701c6f
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x10], ebp
cmp eax, esi
je 0x701d06
lea ecx, [esp + 0x10]
mov edx, eax
push ecx
push edx
call fcn.00428f80
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, ebp
je 0x701d06
fld dword [eax]
fcomp dword [0x7cd7b4]
fnstsw ax
test ah, 0x41
je 0x701d06
mov ecx, 0x85cb40
call fcn.005e6780
and eax, 0x7fffffff
mov ecx, 0x1001
cdq
idiv ecx
cmp dword [ebx + 0x2c], esi
mov dword [esp + 0x18], edx
mov edx, dword [ebx + 0x1c]
fild dword [esp + 0x18]
fmul dword [0x7e32ec]
fadd dword [0x7cd778]
fmul dword [edx + 0x50]
fstp dword [esp + 0x14]
je 0x701cba
mov ecx, dword [ebx + 0x2c]
lea eax, [esp + 0x14]
push eax
push ecx
call fcn.00694f90
add esp, 8
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x10], ebp
add eax, 0x54
mov ecx, dword [eax]
cmp ecx, esi
je 0x701ce6
lea edx, [esp + 0x10]
mov eax, ecx
push edx
push eax
call fcn.00407b70
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, ebp
je 0x701ce6
mov eax, dword [eax]
jmp 0x701ceb
mov eax, dword [0x89fe34]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x30]
cmp eax, esi
je 0x701d06
lea ecx, [esp + 0x18]
mov edx, eax
push ecx
push edx
call fcn.00414350
add esp, 8
fld dword [0x857290]
fcomp dword [0x7cd7b4]
fnstsw ax
test ah, 0x40
jne 0x701d1d
mov byte [ebx + 0x44], 0
mov eax, dword [0x857290]
mov ecx, ebx
push eax
call fcn.00701350
mov eax, dword [ebx + 0xc]
cmp eax, ebp
je 0x701d36
mov eax, dword [eax + 4]
jmp 0x701d38
xor eax, eax
mov ecx, dword [0x855e48]
cmp ecx, ebp
je 0x701d47
mov ecx, dword [ecx + 4]
jmp 0x701d49
xor ecx, ecx
cmp eax, ecx
jne 0x701d5a
mov al, byte [0x80f45e]
test al, al
je 0x701d5a
push ebp
push ebp
jmp 0x701d89
mov al, byte [ebx + 0x44]
test al, al
je 0x701d72
mov ecx, dword [ebx + 0x4c]
not ecx
test cl, 1
je 0x701d72
mov ecx, 1
jmp 0x701d74
xor ecx, ecx
test al, al
je 0x701d85
test byte [ebx + 0x4c], 1
je 0x701d85
mov eax, 1
jmp 0x701d87
xor eax, eax
push ecx
push eax
lea ecx, [ebx + 0x98]
call fcn.007032e0
mov al, byte [ebx + 0x44]
test al, al
je 0x701db4
mov ecx, ebx
call fcn.00700020
mov edx, dword [ebx + 0x4c]
and dl, 1
neg dl
sbb edx, edx
add edx, 2
mov dword [ebx + 0x58], edx
jmp 0x701db7
mov dword [ebx + 0x58], ebp
mov cl, byte [ebx + 0x47]
test cl, cl
jne 0x701dc4
cmp byte [ebx + 0x45], 1
je 0x701dd1
mov al, byte [ebx + 0x48]
test al, al
jne 0x701dd7
cmp byte [ebx + 0x46], 1
jne 0x701dd7
push ebp
jmp 0x702053
test cl, cl
jne 0x701de3
test al, al
mov byte [esp + 0x10], cl
je 0x701de8
mov byte [esp + 0x10], 1
mov eax, dword [ebx + 0x3c]
cmp eax, 6
je 0x702049
cmp eax, 7
je 0x702049
cmp eax, 5
je 0x702049
mov eax, dword [ebx + 0x24]
push edi
cmp eax, esi
je 0x70203f
push eax
call fcn.0045c0b0
add esp, 4
cmp eax, ebp
je 0x70203f
push ebp
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 edi, [eax*4 + 0x82948c]
inc eax
cmp eax, 8
mov dword [esp + 0x20], edi
mov dword [0x829488], eax
jl 0x701e60
mov dword [0x829488], ebp
push ebp
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 4
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x702037
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], ebp
sub edx, ecx
cmp edx, eax
jne 0x701ea8
call fcn.00406630
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x701eb5
call fcn.00406630
mov ecx, 0x83f450
call fcn.004065e0
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x701edf
mov edx, eax
or edx, ecx
je 0x701edf
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x702037
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x702037
mov esi, dword [0x829478]
mov dword [0x829468], eax
mov eax, dword [0x8294e8]
mov byte [0x81c6fc], 1
cmp eax, ebp
mov dword [esp + 0x1c], ebp
not esi
jle 0x701f9e
mov dword [esp + 0x10], 0x820e44
jmp 0x701f1e
xor ebp, ebp
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
cmp eax, ebp
je 0x701f7a
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x701f7a
mov edi, dword [eax]
mov ebp, dword [edi + 0xc]
sar ebp, 2
test edi, edi
je 0x701f7a
test ecx, ecx
mov dword [esp + 0x18], 0
jle 0x701f7a
mov ecx, edi
call fcn.00406620
xor esi, eax
lea eax, [edi + 0x14]
test ebp, ebp
jle 0x701f63
mov ecx, ebp
mov edx, dword [eax]
add eax, 4
xor esi, edx
dec ecx
jne 0x701f59
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov edi, dword [edi + 4]
inc eax
mov edx, dword [ecx]
mov dword [esp + 0x18], eax
cmp eax, dword [edx + 4]
jl 0x701f47
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov ecx, dword [0x8294e8]
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], edx
jl 0x701f1c
mov edi, dword [esp + 0x20]
xor ebp, ebp
cmp esi, dword [0x8294d8]
je 0x701fab
call fcn.00406630
cmp dword [0x8294e8], ebp
je 0x702030
mov ecx, 0x829464
mov dword [esp + 0x10], ebp
call fcn.00406620
test eax, eax
je 0x701ff2
mov ecx, dword [0x829464]
lea eax, [esp + 0x10]
push eax
push ecx
call fcn.00407b70
add esp, 8
test al, al
je 0x701fed
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x701fed
cmp dword [eax], 0x29874362
je 0x701ff2
call fcn.00406630
mov ecx, 0x8294b0
mov dword [esp + 0x10], ebp
call fcn.00406620
test eax, eax
je 0x702030
mov eax, dword [0x8294b0]
lea edx, [esp + 0x10]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x70202b
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x70202b
cmp dword [eax], 0xbad0bad
je 0x702030
call fcn.00406630
mov byte [0x81c6fc], 0
cmp edi, ebp
je 0x70203f
mov eax, dword [edi]
jmp 0x702044
mov eax, dword [0x89fe34]
cmp eax, ebp
pop edi
jne 0x70204e
mov byte [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, ebx
call fcn.00700670
mov dl, byte [ebx + 0x47]
mov al, byte [ebx + 0x48]
pop esi
mov byte [ebx + 0x45], dl
mov byte [ebx + 0x46], al
pop ebp
pop ebx
add esp, 0x14
ret