Function at 0x10109d90
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x60
push ebp
mov ebp, ecx
mov dword [esp + 0x50], 1
push 3
mov dword [esp + 0x14], ebp
mov dword [esp + 0x5c], 0xffffffff
movzx eax, word [ebp + 0x16]
mov dword [esp + 0x58], eax
neg eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 1
call fcn.10109250
mov eax, dword [ebp + 0x4f5bc]
test eax, eax
je 0x10109ded
push 3
push 0
push 0x800
push dword [ebp + 0x4f5c0]
call eax
add esp, 0x10
test eax, eax
jne 0x1010a37d
movzx eax, word [ebp + 0x14]
mov ecx, 3
push ebx
sub eax, ecx
mov dword [esp + 0x10], ecx
push esi
push edi
cmp eax, ecx
jle 0x1010a01d
movzx edx, word [ebp + 0x16]
lea esi, [edx - 3]
nop
mov edi, dword [ebp + 0x188]
mov eax, ecx
and eax, 7
mov ebx, edi
lea ecx, [eax*4]
or ecx, 2
shr ebx, cl
lea ecx, [eax + eax]
and ebx, 1
add ebx, 3
mov eax, ebx
mov dword [esp + 0x34], ebx
and eax, 1
or ecx, eax
add ecx, ecx
shr edi, cl
and edi, 3
mov dword [esp + 0x20], edi
cmp ebx, esi
jge 0x1010a005
lea ecx, [edi + edi]
mov dword [esp + 0x48], ecx
nop word [eax + eax]
imul edx, dword [esp + 0x18]
mov eax, dword [ebp + 8]
mov ebp, 1
mov dword [esp + 0x30], 0
mov dword [esp + 0x10], 0
add edx, ebx
lea edi, [eax + edx*8]
movzx eax, word [edi + ecx]
mov dword [esp + 0x14], edi
mov dword [esp + 0x24], eax
nop
lea ecx, [ebp*8]
movzx edx, word [ecx + edi + 2]
mov eax, ecx
neg eax
mov dword [esp + 0x38], edx
movzx esi, word [eax + edi + 2]
add eax, dword [esp + 0x20]
movzx ebx, word [edi + eax*2]
mov eax, dword [esp + 0x20]
add eax, ecx
movzx ecx, word [edi + eax*2]
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
add eax, edx
add eax, esi
add eax, eax
sub eax, ecx
sub ecx, dword [esp + 0x24]
sub eax, ebx
mov dword [esp + 0x3c], ecx
sub ebx, dword [esp + 0x24]
mov dword [esp + edi + 0x4c], eax
mov eax, esi
mov edi, dword [esp + 0x14]
sub eax, edx
mov dword [esp + 0x44], eax
mov edx, ecx
sar eax, 0x1f
lea ecx, [ebp*2]
mov dword [esp + 0x2c], eax
add ecx, ebp
shl ecx, 3
mov eax, ebx
sar eax, 0x1f
mov dword [esp + 0x28], eax
mov eax, edi
sub eax, ecx
sar edx, 0x1f
movzx edi, word [ecx + edi + 2]
mov ecx, edx
xor ecx, dword [esp + 0x3c]
sub edi, dword [esp + 0x38]
mov dword [esp + 0x40], ebx
movzx ebx, word [eax + 2]
mov eax, dword [esp + 0x28]
sub ebx, esi
xor eax, dword [esp + 0x40]
mov esi, edi
add ecx, eax
sar esi, 0x1f
mov eax, dword [esp + 0x2c]
mov ebp, ebx
xor eax, dword [esp + 0x44]
add ecx, eax
sar ebp, 0x1f
sub ecx, edx
mov eax, esi
sub ecx, dword [esp + 0x28]
xor eax, edi
sub ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x14]
lea edx, [ecx + ecx*2]
mov ecx, ebp
xor ecx, ebx
add ecx, eax
sub ecx, esi
sub ecx, ebp
lea eax, [edx + ecx*2]
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx + 0x54], eax
mov eax, dword [esp + 0x30]
inc eax
mov dword [esp + 0x30], eax
shl eax, 2
mov dword [esp + 0x10], eax
mov ebp, dword [esp + eax + 0x5c]
test ebp, ebp
jg 0x10109e90
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp ecx, dword [esp + 0x58]
mov edx, edi
setg al
lea esi, [eax*4]
mov eax, dword [esp + esi + 0x5c]
mov esi, dword [esp + esi + 0x4c]
sar esi, 2
lea ecx, [eax*8]
mov eax, edx
movzx ebx, word [ecx + edx + 2]
sub eax, ecx
movzx ecx, word [eax + 2]
cmp bx, cx
jae 0x10109fcb
mov edi, ecx
mov ecx, ebx
jmp 0x10109fcd
mov edi, ebx
cmp esi, edi
mov eax, edi
cmovl eax, esi
cmp ecx, eax
jg 0x10109fdf
cmp esi, edi
mov ecx, edi
cmovl ecx, esi
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x34]
mov word [edx + 2], cx
add ebx, 2
mov ecx, dword [esp + 0x48]
movzx edx, word [ebp + 0x16]
mov dword [esp + 0x34], ebx
lea esi, [edx - 3]
cmp ebx, esi
jl 0x10109e60
mov ecx, dword [esp + 0x18]
movzx eax, word [ebp + 0x14]
inc ecx
sub eax, 3
mov dword [esp + 0x18], ecx
cmp ecx, eax
jl 0x10109e10
mov eax, dword [ebp + 0x4f5bc]
test eax, eax
je 0x1010a043
push 3
push 1
push 0x800
push dword [ebp + 0x4f5c0]
call eax
add esp, 0x10
test eax, eax
jne 0x1010a394
movzx eax, word [ebp + 0x14]
mov esi, 1
dec eax
mov dword [esp + 0x18], esi
cmp eax, esi
jle 0x1010a15d
nop dword [eax]
mov ebx, dword [ebp + 0x188]
mov eax, esi
and eax, 7
mov edx, ebx
lea ecx, [eax*4]
add eax, eax
shr edx, cl
and edx, 1
inc edx
mov dword [esp + 0x34], edx
lea ecx, [edx - 1]
and ecx, 1
or ecx, eax
add ecx, ecx
shr ebx, cl
movzx ecx, word [ebp + 0x16]
and ebx, 3
lea eax, [ecx - 1]
cmp edx, eax
jge 0x1010a14b
nop
mov eax, dword [ebp + 8]
lea ebp, [esp + 0x5c]
imul ecx, esi
add ecx, edx
lea edi, [eax + ecx*8]
mov eax, 1
nop dword [eax]
nop dword [eax + eax]
lea ecx, [eax*4]
lea edx, [eax*8]
lea eax, [ecx + ebx]
movzx esi, word [edi + eax*2]
mov eax, ebx
sub eax, ecx
movzx eax, word [edi + eax*2]
add esi, eax
mov eax, edi
sub eax, edx
movzx eax, word [eax + 2]
sub esi, eax
movzx eax, word [edx + edi + 2]
sub esi, eax
movzx eax, word [edi + 2]
lea eax, [esi + eax*2]
sar eax, 1
cmp eax, 0xffff
jge 0x1010a108
test eax, eax
jns 0x1010a108
xor ecx, ecx
jmp 0x1010a112
mov ecx, 0xffff
cmp eax, ecx
cmovl ecx, eax
add ebp, 4
mov word [edi + ebx*2], cx
mov eax, 2
sub eax, ebx
mov ebx, eax
mov eax, dword [ebp]
test eax, eax
jg 0x1010a0c0
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
add edx, 2
mov dword [esp + 0x34], edx
movzx ecx, word [ebp + 0x16]
lea eax, [ecx - 1]
cmp edx, eax
jl 0x1010a0a0
movzx eax, word [ebp + 0x14]
inc esi
dec eax
mov dword [esp + 0x18], esi
cmp esi, eax
jl 0x1010a060
mov eax, dword [ebp + 0x4f5bc]
test eax, eax
je 0x1010a183
push 3
push 2
push 0x800
push dword [ebp + 0x4f5c0]
call eax
add esp, 0x10
test eax, eax
jne 0x1010a3ab
movzx eax, word [ebp + 0x14]
mov ebx, 1
dec eax
mov dword [esp + 0x18], ebx
cmp eax, ebx
jle 0x1010a375
nop dword [eax]
mov edx, dword [ebp + 0x188]
mov eax, ebx
and eax, 7
mov edi, edx
lea ecx, [eax*4]
or ecx, 2
shr edi, cl
lea ecx, [eax + eax]
and edi, 1
inc edi
mov eax, edi
mov dword [esp + 0x20], edi
and eax, 1
or ecx, eax
mov eax, 2
add ecx, ecx
shr edx, cl
movzx ecx, word [ebp + 0x16]
and edx, 3
sub eax, edx
mov dword [esp + 0x10], eax
lea eax, [ecx - 1]
cmp edi, eax
jge 0x1010a363
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x10]
inc esi
mov dword [esp + 0x38], esi
nop dword [eax]
mov eax, dword [ebp + 8]
imul ecx, ebx
mov dword [esp + 0x30], 0
add ecx, edi
lea ebx, [eax + ecx*8]
mov dword [esp + 0x24], ebx
test esi, esi
jle 0x1010a302
movzx edi, word [ebx + 2]
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], 0
lea eax, [edi + edi]
mov dword [esp + 0x3c], eax
nop word [eax + eax]
mov eax, dword [esp + 0x10]
lea ecx, [esi*4]
add eax, ecx
sub edx, ecx
lea ecx, [esi*8]
movzx eax, word [ebx + eax*2]
movzx edx, word [ebx + edx*2]
mov dword [esp + 0x48], eax
mov ebp, edx
sub ebp, eax
mov dword [esp + 0x40], edx
mov eax, ebp
sar eax, 0x1f
mov dword [esp + 0x34], eax
mov eax, ebx
movzx ebx, word [ecx + ebx + 2]
sub eax, ecx
mov ecx, ebx
sub ecx, dword [esp + 0x28]
mov esi, ecx
movzx eax, word [eax + 2]
mov dword [esp + 0x44], eax
sub eax, edi
mov edi, eax
sar esi, 0x1f
sar edi, 0x1f
mov edx, edi
xor edx, eax
mov eax, dword [esp + 0x34]
xor eax, ebp
add edx, eax
mov eax, esi
xor eax, ecx
mov ecx, dword [esp + 0x2c]
add edx, eax
mov eax, dword [esp + 0x48]
sub eax, ebx
sub edx, edi
sub eax, dword [esp + 0x44]
add eax, dword [esp + 0x40]
add eax, dword [esp + 0x3c]
sub edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
sub edx, esi
mov edi, dword [esp + 0x28]
mov dword [esp + ecx + 0x4c], eax
mov eax, dword [esp + 0x30]
inc eax
mov dword [esp + ecx + 0x54], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x30], eax
shl eax, 2
mov dword [esp + 0x2c], eax
mov esi, dword [esp + eax + 0x60]
add esi, dword [esp + eax + 0x5c]
test esi, esi
jg 0x1010a240
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x54]
cmp esi, ecx
je 0x1010a31d
xor eax, eax
cmp esi, ecx
setg al
mov eax, dword [esp + eax*4 + 0x4c]
sar eax, 1
jmp 0x1010a328
mov eax, dword [esp + 0x4c]
add eax, dword [esp + 0x50]
sar eax, 2
cmp eax, 0xffff
jge 0x1010a337
test eax, eax
jns 0x1010a337
xor ecx, ecx
jmp 0x1010a341
mov ecx, 0xffff
cmp eax, ecx
cmovl ecx, eax
mov esi, dword [esp + 0x38]
add edi, 2
mov word [ebx + edx*2], cx
movzx ecx, word [ebp + 0x16]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x20], edi
lea eax, [ecx - 1]
cmp edi, eax
jl 0x1010a200
movzx eax, word [ebp + 0x14]
inc ebx
dec eax
mov dword [esp + 0x18], ebx
cmp ebx, eax
jl 0x1010a1a0
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x60
ret
push 0x103ec24c
lea eax, [esp + 0x2c]
mov dword [esp + 0x2c], 6
push eax
call fcn.101f94fb
push 0x103ec24c
lea eax, [esp + 0x4c]
mov dword [esp + 0x4c], 6
push eax
call fcn.101f94fb
push 0x103ec24c
lea eax, [esp + 0x4c]
mov dword [esp + 0x4c], 6
push eax
call fcn.101f94fb
int3