Function at 0x100710d0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
mov eax, dword [esp + 0x2c]
mov dl, byte [eax + 0x3030]
push ebx
push ebp
mov ebp, dword [esp + 0x28]
push esi
mov esi, ecx
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x28]
test ecx, ecx
push edi
seta bl
lea edi, [eax + 4]
mov byte [esp + 0x11], dl
mov byte [esp + 0x12], bl
cmp edi, ebp
ja 0x10071150
test al, 3
mov eax, dword [eax]
mov dword [esi + 0x10], eax
test dl, dl
je 0x1007113a
mov edx, eax
mov ebp, eax
shl edx, 0x10
and ebp, 0xff00
add edx, ebp
mov ebp, dword [esp + 0x30]
shr eax, 8
shl edx, 8
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x13]
add edx, eax
mov dword [esi + 0x10], edx
mov dl, byte [esp + 0x11]
mov eax, dword [esi + 0x10]
test eax, eax
seta byte [esp + 0x13]
test eax, eax
je 0x10071161
test bl, bl
je 0x1007115d
cmp eax, ecx
je 0x1007115d
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x18
ret 0x14
test eax, eax
jne 0x1007116e
test bl, bl
je 0x1007116a
mov dword [esi + 0x10], ecx
jmp 0x10071179
test eax, eax
je 0x10071179
test bl, bl
jne 0x10071179
mov dword [esi + 0x10], 0
lea eax, [edi + 1]
cmp eax, ebp
ja 0x10071150
mov cl, byte [edi]
cmp cl, 0x59
jne 0x1007118d
mov byte [esi + 0x20], 1
jmp 0x10071196
cmp cl, 0x4e
jne 0x10071196
mov byte [esi + 0x20], 0
lea ecx, [eax + 4]
cmp ecx, ebp
ja 0x10071150
test al, 3
mov eax, dword [eax]
mov dword [esi], eax
test dl, dl
je 0x100711cb
mov edi, eax
mov ebx, eax
shl edi, 0x10
and ebx, 0xff00
add edi, ebx
shr eax, 8
and eax, 0xff00
shl edi, 8
add edi, eax
movzx eax, byte [esi + 3]
add edi, eax
mov dword [esi], edi
mov eax, ecx
lea ecx, [eax + 4]
cmp ecx, ebp
ja 0x10071150
test al, 3
mov eax, dword [eax]
mov dword [esi + 4], eax
test dl, dl
je 0x10071208
mov edi, eax
mov ebx, eax
shl edi, 0x10
and ebx, 0xff00
add edi, ebx
shr eax, 8
and eax, 0xff00
shl edi, 8
add edi, eax
movzx eax, byte [esi + 7]
add edi, eax
mov dword [esi + 4], edi
mov eax, ecx
lea ebx, [eax + 4]
cmp ebx, ebp
ja 0x10071150
test al, 3
mov eax, dword [eax]
mov dword [esi + 8], eax
test dl, dl
je 0x10071245
mov ecx, eax
mov edx, eax
shl ecx, 0x10
and edx, 0xff00
add ecx, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
movzx eax, byte [esi + 0xb]
add ecx, eax
mov dword [esi + 8], ecx
mov edi, dword [esi + 8]
test edi, edi
jbe 0x1007126b
xor ecx, ecx
mov eax, edi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
add esp, 4
mov dword [esp + 0x1c], eax
mov dl, byte [esi + 0x20]
test dl, dl
je 0x100712b0
lea ecx, [ebx + 4]
cmp ecx, ebp
ja 0x10071150
cmp byte [esp + 0x11], 0
mov eax, dword [ebx]
mov dword [esi + 0x14], eax
je 0x100712ae
mov edi, eax
mov ebx, eax
shl edi, 0x10
and ebx, 0xff00
add edi, ebx
shr eax, 8
and eax, 0xff00
shl edi, 8
add edi, eax
movzx eax, byte [esi + 0x17]
add edi, eax
mov dword [esi + 0x14], edi
mov ebx, ecx
lea edi, [ebx + 4]
cmp edi, ebp
ja 0x10071150
cmp byte [esp + 0x11], 0
mov eax, dword [ebx]
mov dword [esi + 0x18], eax
je 0x100712ec
mov ecx, eax
mov ebx, eax
shl ecx, 0x10
and ebx, 0xff00
add ecx, ebx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
movzx eax, byte [esi + 0x1b]
add ecx, eax
mov dword [esi + 0x18], ecx
test dl, dl
je 0x10071364
mov eax, dword [esi]
lea ebp, [eax*4]
lea ebx, [edi + ebp]
cmp ebx, dword [esp + 0x30]
ja 0x10071150
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push ebp
push edi
push eax
mov dword [esi + 0x24], eax
call fcn.1007d7b0
mov eax, dword [esi]
mov ebp, ebx
lea edi, [eax + eax]
lea ebx, [edi + ebp]
add esp, 0x10
cmp ebx, dword [esp + 0x30]
ja 0x10071150
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push edi
push ebp
push eax
mov dword [esi + 0x28], eax
call fcn.1007d7b0
add esp, 0x10
mov edi, ebx
mov eax, dword [esi]
lea ebp, [eax*4]
lea ebx, [edi + ebp]
cmp ebx, dword [esp + 0x30]
ja 0x10071150
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push ebp
push edi
push eax
mov dword [esi + 0x2c], eax
call fcn.1007d7b0
mov eax, dword [esi]
mov edi, ebx
lea ebp, [eax + eax]
lea ebx, [edi + ebp]
add esp, 0x10
cmp ebx, dword [esp + 0x30]
ja 0x10071150
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push ebp
push edi
push eax
mov dword [esi + 0x30], eax
call fcn.1007d7b0
add esp, 0x10
cmp byte [esp + 0x11], 0
je 0x10071489
xor ecx, ecx
cmp dword [esi], ecx
jbe 0x10071489
jmp 0x100713f0
cmp byte [esi + 0x20], 0
je 0x1007143b
mov eax, dword [esi + 0x24]
lea edx, [eax + ecx*4]
mov eax, dword [edx]
mov edi, eax
shl edi, 0x10
mov ebp, eax
and ebp, 0xff00
add edi, ebp
movzx ebp, byte [edx + 3]
shl edi, 8
shr eax, 8
add edi, ebp
and eax, 0xff00
add edi, eax
mov dword [edx], edi
mov edx, dword [esi + 0x28]
mov di, word [edx + ecx*2]
lea eax, [edx + ecx*2]
movzx dx, byte [eax + 1]
shl di, 8
xor dx, di
mov word [eax], dx
mov eax, dword [esi + 0x2c]
lea edx, [eax + ecx*4]
mov eax, dword [edx]
mov edi, eax
shl edi, 0x10
mov ebp, eax
and ebp, 0xff00
add edi, ebp
movzx ebp, byte [edx + 3]
shl edi, 8
shr eax, 8
add edi, ebp
and eax, 0xff00
add edi, eax
mov dword [edx], edi
mov edx, dword [esi + 0x30]
mov di, word [edx + ecx*2]
lea eax, [edx + ecx*2]
movzx dx, byte [eax + 1]
shl di, 8
xor dx, di
inc ecx
mov word [eax], dx
cmp ecx, dword [esi]
jb 0x100713f0
cmp byte [esi + 0x20], 0
je 0x100714b5
mov edi, dword [esi + 0x14]
lea ebp, [edi + ebx]
cmp ebp, dword [esp + 0x30]
ja 0x10071150
push edi
call fcn.100791e9
push edi
push ebx
push eax
mov dword [esi + 0x3c], eax
call fcn.1007d7b0
add esp, 0x10
mov ebx, ebp
mov edi, dword [esi + 0x18]
lea ebp, [edi + ebx]
cmp ebp, dword [esp + 0x30]
ja 0x10071150
push edi
call fcn.100791e9
push edi
push ebx
push eax
mov dword [esi + 0x40], eax
call fcn.1007d7b0
add esp, 0x10
cmp byte [esp + 0x11], 0
mov ebx, ebp
mov dword [esp + 0x2c], ebx
je 0x1007151f
mov ecx, dword [esi + 0x40]
xor eax, eax
test dword [esi + 0x18], 0xfffffffe
jbe 0x1007151f
jmp 0x10071500
movzx dx, byte [ecx + eax*2 + 1]
mov di, word [ecx + eax*2]
shl di, 8
xor dx, di
mov word [ecx + eax*2], dx
mov edx, dword [esi + 0x18]
inc eax
shr edx, 1
cmp eax, edx
jb 0x10071500
cmp byte [esi + 0x20], 0
je 0x1007177a
mov edi, dword [esi + 8]
lea ebp, [edi + edi]
lea eax, [ebx + ebp]
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x30]
ja 0x10071150
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push ebp
push ebx
push eax
mov dword [esi + 0x54], eax
call fcn.1007d7b0
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x3c]
add eax, eax
add eax, eax
lea ebp, [eax + ecx]
add esp, 0x10
cmp ebp, dword [esp + 0x30]
ja 0x10071150
mov edi, dword [esp + 0x1c]
push eax
push ecx
push edi
call fcn.1007d7b0
add esp, 0xc
cmp byte [esp + 0x11], 0
mov ebx, ebp
mov dword [esp + 0x2c], ebx
je 0x100715ea
xor ecx, ecx
cmp dword [esi + 8], ecx
jbe 0x100715ea
mov eax, dword [esi + 0x54]
movzx dx, byte [eax + ecx*2 + 1]
mov bp, word [eax + ecx*2]
lea eax, [eax + ecx*2]
shl bp, 8
xor dx, bp
mov word [eax], dx
mov eax, dword [edi + ecx*4]
mov edx, eax
shl edx, 0x10
mov ebp, eax
and ebp, 0xff00
add edx, ebp
movzx ebp, byte [edi + ecx*4 + 3]
shl edx, 8
shr eax, 8
add edx, ebp
and eax, 0xff00
add edx, eax
mov dword [edi + ecx*4], edx
inc ecx
cmp ecx, dword [esi + 8]
jb 0x100715a1
cmp byte [esi + 0x20], 0
je 0x1007177a
xor ebp, ebp
cmp dword [esi + 8], ebp
jbe 0x1007177a
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x18], ebx
jmp 0x10071610
mov eax, dword [esi + 0x54]
movzx eax, word [eax + ebp*2]
mov edx, dword [esp + 0x3c]
lea ecx, [eax + eax*2]
mov edi, dword [edx + ecx*4 + 0x3c]
lea eax, [edx + ecx*4 + 0x38]
mov eax, dword [eax + 8]
mov dword [esp + 0x20], eax
mov eax, dword [ebx]
xor ecx, ecx
add eax, edi
mov edx, 4
mul edx
seto cl
mov dword [esp + 0x24], edi
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
mov ecx, dword [esi + 0x54]
movzx ecx, word [ecx + ebp*2]
lea edx, [ecx + ecx*2]
mov ecx, dword [esp + 0x40]
add esp, 4
cmp byte [esp + 0x12], 0
mov dword [ecx + edx*4 + 0x40], eax
je 0x10071691
test edi, edi
jbe 0x10071684
mov ecx, dword [esp + 0x20]
sub ecx, eax
mov dword [esp + 0x14], edi
mov edx, dword [ecx + eax]
mov dword [eax], edx
add eax, 4
sub dword [esp + 0x14], 1
jne 0x10071675
mov eax, dword [esp + 0x20]
push eax
call fcn.1007af67
add esp, 4
mov ecx, dword [esi + 0x54]
movzx eax, word [ecx + ebp*2]
mov ecx, dword [ebx]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x3c]
add dword [eax + edx*4 + 0x3c], ecx
cmp dword [ebx], 0
lea eax, [eax + edx*4 + 0x3c]
mov dword [esp + 0x20], 0
jbe 0x10071765
mov eax, dword [esp + 0x2c]
lea edx, [eax + 4]
mov dword [esp + 0x14], edx
lea ebx, [edi*4]
jmp 0x100716d4
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x30]
ja 0x10071150
cmp byte [esp + 0x11], 0
mov edi, dword [eax]
je 0x1007170e
mov edx, edi
mov eax, edi
shl edx, 0x10
mov ecx, edi
and eax, 0xff00
add edx, eax
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
shr edi, 0x18
add edi, edx
cmp byte [esp + 0x13], 0
je 0x100719b8
cmp byte [esp + 0x12], 0
je 0x100719bf
mov eax, dword [esi + 0x54]
movzx eax, word [eax + ebp*2]
mov edx, dword [esi + 0x10]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + ecx*4 + 0x40]
add edx, edi
mov dword [ebx + ecx], edx
add ebx, 4
mov edx, dword [esp + 0x18]
mov eax, 4
add dword [esp + 0x2c], eax
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, dword [edx]
jb 0x100716d0
mov ebx, edx
inc ebp
add ebx, 4
mov dword [esp + 0x18], ebx
cmp ebp, dword [esi + 8]
jb 0x10071610
mov ebx, dword [esp + 0x2c]
lea ecx, [ebx + 4]
cmp ecx, dword [esp + 0x30]
ja 0x10071150
mov dl, byte [esp + 0x11]
mov eax, dword [ebx]
mov dword [esi + 0xc], eax
test dl, dl
je 0x100717b9
mov edi, eax
mov ebx, eax
shl edi, 0x10
and ebx, 0xff00
add edi, ebx
shr eax, 8
and eax, 0xff00
shl edi, 8
add edi, eax
movzx eax, byte [esi + 0xf]
add edi, eax
mov dword [esi + 0xc], edi
cmp dword [esi + 0xc], 0
mov eax, ecx
je 0x1007199f
mov ecx, dword [esp + 0x30]
lea ebx, [eax + 4]
cmp ebx, ecx
ja 0x10071150
test al, 3
mov eax, dword [eax]
mov dword [esi + 0x1c], eax
test dl, dl
je 0x10071804
mov edx, eax
mov edi, eax
shl edx, 0x10
and edi, 0xff00
add edx, edi
shr eax, 8
and eax, 0xff00
shl edx, 8
add edx, eax
movzx eax, byte [esi + 0x1f]
add edx, eax
mov dword [esi + 0x1c], edx
mov eax, dword [esi + 0xc]
lea ebp, [eax*4]
lea edi, [ebx + ebp]
cmp edi, ecx
ja 0x10071150
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push ebp
push ebx
push eax
mov dword [esi + 0x58], eax
call fcn.1007d7b0
mov eax, dword [esi + 0xc]
lea ebp, [eax*4]
lea ebx, [edi + ebp]
add esp, 0x10
cmp ebx, dword [esp + 0x30]
ja 0x10071150
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push ebp
push edi
push eax
mov dword [esi + 0x34], eax
call fcn.1007d7b0
mov eax, dword [esi + 0xc]
mov edi, ebx
lea ebp, [eax + eax]
lea ebx, [edi + ebp]
add esp, 0x10
cmp ebx, dword [esp + 0x30]
ja 0x10071150
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100791e9
push ebp
push edi
push eax
mov dword [esi + 0x38], eax
call fcn.1007d7b0
add esp, 0x10
cmp byte [esp + 0x11], 0
je 0x1007193c
xor ecx, ecx
cmp dword [esi + 0xc], ecx
jbe 0x1007193c
mov eax, dword [esi + 0x38]
movzx dx, byte [eax + ecx*2 + 1]
mov di, word [eax + ecx*2]
lea eax, [eax + ecx*2]
shl di, 8
xor dx, di
mov word [eax], dx
mov eax, dword [esi + 0x34]
lea edx, [eax + ecx*4]
mov eax, dword [edx]
mov edi, eax
shl edi, 0x10
mov ebp, eax
and ebp, 0xff00
add edi, ebp
movzx ebp, byte [edx + 3]
shl edi, 8
add edi, ebp
shr eax, 8
and eax, 0xff00
add edi, eax
mov dword [edx], edi
mov edx, dword [esi + 0x58]
mov eax, dword [edx + ecx*4]
lea edx, [edx + ecx*4]
mov edi, eax
shl edi, 0x10
mov ebp, eax
and ebp, 0xff00
add edi, ebp
movzx ebp, byte [edx + 3]
shl edi, 8
shr eax, 8
add edi, ebp
and eax, 0xff00
add edi, eax
inc ecx
mov dword [edx], edi
cmp ecx, dword [esi + 0xc]
jb 0x100718c3
mov eax, dword [esi + 0x1c]
lea ecx, [eax + ebx]
cmp ecx, dword [esp + 0x30]
ja 0x10071150
push eax
call fcn.100791e9
mov edx, dword [esi + 0x1c]
push edx
push ebx
push eax
mov dword [esi + 0x44], eax
call fcn.1007d7b0
add esp, 0x10
cmp byte [esp + 0x11], 0
je 0x1007199f
mov ecx, dword [esi + 0x44]
xor eax, eax
test dword [esi + 0x1c], 0xfffffffe
jbe 0x1007199f
jmp 0x10071980
movzx dx, byte [ecx + eax*2 + 1]
mov di, word [ecx + eax*2]
shl di, 8
xor dx, di
mov word [ecx + eax*2], dx
mov edx, dword [esi + 0x1c]
inc eax
shr edx, 1
cmp eax, edx
jb 0x10071980
mov eax, dword [esp + 0x1c]
push eax
call fcn.1007af67
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret 0x14
cmp byte [esp + 0x12], 0
jne 0x100719d9
mov edx, dword [esi + 0x54]
movzx eax, word [edx + ebp*2]
mov ecx, dword [esp + 0x3c]
lea eax, [eax + eax*2]
mov edx, dword [ecx + eax*4 + 0x40]
mov dword [ebx + edx], edi
jmp 0x1007173e
mov eax, dword [esi + 0x30]
movzx ecx, word [eax + edi*2]
mov edx, dword [esi + 0x2c]
mov eax, dword [edx + edi*4]
add eax, dword [esi + 0x40]
push ecx
mov ecx, dword [esi + 0x28]
movzx edx, word [ecx + edi*2]
push eax
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + edi*4]
add ecx, dword [esi + 0x3c]
push edx
mov edx, dword [esi + 0x54]
movzx eax, word [edx + ebp*2]
push ecx
mov ecx, dword [esp + 0x4c]
lea eax, [eax + eax*2]
mov edx, dword [ecx + eax*4 + 0x40]
mov eax, dword [esp + 0x34]
push edx
push eax
push edi
call fcn.10070fe0
test al, al
je 0x10071724
mov ecx, dword [esi + 0x28]
xor edx, edx
mov word [ecx + edi*2], dx
mov eax, dword [esi + 0x30]
xor ecx, ecx
mov word [eax + edi*2], cx
mov edx, dword [esi + 0x54]
movzx eax, word [edx + ebp*2]
mov ecx, dword [esp + 0x3c]
lea eax, [eax + eax*2]
dec dword [ecx + eax*4 + 0x3c]
dec dword [esi + 4]
lea eax, [ecx + eax*4 + 0x3c]
jmp 0x10071741